feature/institucional #3

Merged
RamonDiasFerreira merged 3 commits from feature/institucional into develop 2023-01-16 04:23:33 +00:00
33 changed files with 1200 additions and 19 deletions

328
package-lock.json generated
View File

@ -17,14 +17,19 @@
"@types/react-dom": "^18.0.10",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-modal": "^3.16.1",
"react-scripts": "5.0.1",
"typescript": "^4.9.4",
"web-vitals": "^2.1.4"
},
"devDependencies": {
"@types/react-modal": "^3.13.1",
"formik": "^2.2.9",
"node-sass": "^8.0.0",
"react-text-mask": "^5.5.0",
"sass": "^1.57.1",
"scss": "^0.2.4"
"scss": "^0.2.4",
"yup": "^0.32.11"
}
},
"node_modules/@adobe/css-tools": {
@ -3851,6 +3856,12 @@
"resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
"integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ=="
},
"node_modules/@types/lodash": {
"version": "4.14.191",
"resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.191.tgz",
"integrity": "sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==",
"dev": true
},
"node_modules/@types/mime": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz",
@ -3921,6 +3932,15 @@
"@types/react": "*"
}
},
"node_modules/@types/react-modal": {
"version": "3.13.1",
"resolved": "https://registry.npmjs.org/@types/react-modal/-/react-modal-3.13.1.tgz",
"integrity": "sha512-iY/gPvTDIy6Z+37l+ibmrY+GTV4KQTHcCyR5FIytm182RQS69G5ps4PH2FxtC7bAQ2QRHXMevsBgck7IQruHNg==",
"dev": true,
"dependencies": {
"@types/react": "*"
}
},
"node_modules/@types/resolve": {
"version": "1.17.1",
"resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz",
@ -7823,6 +7843,11 @@
"url": "https://github.com/sindresorhus/execa?sponsor=1"
}
},
"node_modules/exenv": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz",
"integrity": "sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw=="
},
"node_modules/exit": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
@ -8322,6 +8347,45 @@
"node": ">= 6"
}
},
"node_modules/formik": {
"version": "2.2.9",
"resolved": "https://registry.npmjs.org/formik/-/formik-2.2.9.tgz",
"integrity": "sha512-LQLcISMmf1r5at4/gyJigGn0gOwFbeEAlji+N9InZF6LIMXnFNkO42sCI8Jt84YZggpD4cPWObAZaxpEFtSzNA==",
"dev": true,
"funding": [
{
"type": "individual",
"url": "https://opencollective.com/formik"
}
],
"dependencies": {
"deepmerge": "^2.1.1",
"hoist-non-react-statics": "^3.3.0",
"lodash": "^4.17.21",
"lodash-es": "^4.17.21",
"react-fast-compare": "^2.0.1",
"tiny-warning": "^1.0.2",
"tslib": "^1.10.0"
},
"peerDependencies": {
"react": ">=16.8.0"
}
},
"node_modules/formik/node_modules/deepmerge": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz",
"integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/formik/node_modules/tslib": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
"dev": true
},
"node_modules/forwarded": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
@ -8810,6 +8874,21 @@
"he": "bin/he"
}
},
"node_modules/hoist-non-react-statics": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
"integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
"dev": true,
"dependencies": {
"react-is": "^16.7.0"
}
},
"node_modules/hoist-non-react-statics/node_modules/react-is": {
"version": "16.13.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
"dev": true
},
"node_modules/hoopy": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz",
@ -11950,6 +12029,12 @@
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
"node_modules/lodash-es": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
"integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==",
"dev": true
},
"node_modules/lodash.debounce": {
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
@ -12515,6 +12600,12 @@
"integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==",
"devOptional": true
},
"node_modules/nanoclone": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/nanoclone/-/nanoclone-0.2.1.tgz",
"integrity": "sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA==",
"dev": true
},
"node_modules/nanoid": {
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
@ -14808,6 +14899,12 @@
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
},
"node_modules/property-expr": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.5.tgz",
"integrity": "sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA==",
"dev": true
},
"node_modules/proxy-addr": {
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
@ -15117,11 +15214,40 @@
"resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz",
"integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg=="
},
"node_modules/react-fast-compare": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz",
"integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==",
"dev": true
},
"node_modules/react-is": {
"version": "17.0.2",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
"integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
},
"node_modules/react-lifecycles-compat": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
"integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA=="
},
"node_modules/react-modal": {
"version": "3.16.1",
"resolved": "https://registry.npmjs.org/react-modal/-/react-modal-3.16.1.tgz",
"integrity": "sha512-VStHgI3BVcGo7OXczvnJN7yT2TWHJPDXZWyI/a0ssFNhGZWsPmB8cF0z33ewDXq4VfYMO1vXgiv/g8Nj9NDyWg==",
"dependencies": {
"exenv": "^1.2.0",
"prop-types": "^15.7.2",
"react-lifecycles-compat": "^3.0.0",
"warning": "^4.0.3"
},
"engines": {
"node": ">=8"
},
"peerDependencies": {
"react": "^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18",
"react-dom": "^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18"
}
},
"node_modules/react-refresh": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz",
@ -15202,6 +15328,18 @@
}
}
},
"node_modules/react-text-mask": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/react-text-mask/-/react-text-mask-5.5.0.tgz",
"integrity": "sha512-SLJlJQxa0uonMXsnXRpv5abIepGmHz77ylQcra0GNd7Jtk4Wj2Mtp85uGQHv1avba2uI8ZvRpIEQPpJKsqRGYw==",
"dev": true,
"dependencies": {
"prop-types": "^15.5.6"
},
"peerDependencies": {
"react": "^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0"
}
},
"node_modules/read-cache": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
@ -17045,6 +17183,12 @@
"resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz",
"integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA=="
},
"node_modules/tiny-warning": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz",
"integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==",
"dev": true
},
"node_modules/tmpl": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
@ -17077,6 +17221,12 @@
"node": ">=0.6"
}
},
"node_modules/toposort": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz",
"integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==",
"dev": true
},
"node_modules/tough-cookie": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz",
@ -17502,6 +17652,14 @@
"makeerror": "1.0.12"
}
},
"node_modules/warning": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz",
"integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==",
"dependencies": {
"loose-envify": "^1.0.0"
}
},
"node_modules/watchpack": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",
@ -18435,6 +18593,24 @@
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/yup": {
"version": "0.32.11",
"resolved": "https://registry.npmjs.org/yup/-/yup-0.32.11.tgz",
"integrity": "sha512-Z2Fe1bn+eLstG8DRR6FTavGD+MeAwyfmouhHsIUgaADz8jvFKbO/fXc2trJKZg+5EBjh4gGm3iU/t3onKlXHIg==",
"dev": true,
"dependencies": {
"@babel/runtime": "^7.15.4",
"@types/lodash": "^4.14.175",
"lodash": "^4.17.21",
"lodash-es": "^4.17.21",
"nanoclone": "^0.2.1",
"property-expr": "^2.0.4",
"toposort": "^2.0.2"
},
"engines": {
"node": ">=10"
}
}
},
"dependencies": {
@ -21055,6 +21231,12 @@
"resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
"integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ=="
},
"@types/lodash": {
"version": "4.14.191",
"resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.191.tgz",
"integrity": "sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==",
"dev": true
},
"@types/mime": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz",
@ -21125,6 +21307,15 @@
"@types/react": "*"
}
},
"@types/react-modal": {
"version": "3.13.1",
"resolved": "https://registry.npmjs.org/@types/react-modal/-/react-modal-3.13.1.tgz",
"integrity": "sha512-iY/gPvTDIy6Z+37l+ibmrY+GTV4KQTHcCyR5FIytm182RQS69G5ps4PH2FxtC7bAQ2QRHXMevsBgck7IQruHNg==",
"dev": true,
"requires": {
"@types/react": "*"
}
},
"@types/resolve": {
"version": "1.17.1",
"resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz",
@ -23996,6 +24187,11 @@
"strip-final-newline": "^2.0.0"
}
},
"exenv": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz",
"integrity": "sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw=="
},
"exit": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
@ -24375,6 +24571,35 @@
"mime-types": "^2.1.12"
}
},
"formik": {
"version": "2.2.9",
"resolved": "https://registry.npmjs.org/formik/-/formik-2.2.9.tgz",
"integrity": "sha512-LQLcISMmf1r5at4/gyJigGn0gOwFbeEAlji+N9InZF6LIMXnFNkO42sCI8Jt84YZggpD4cPWObAZaxpEFtSzNA==",
"dev": true,
"requires": {
"deepmerge": "^2.1.1",
"hoist-non-react-statics": "^3.3.0",
"lodash": "^4.17.21",
"lodash-es": "^4.17.21",
"react-fast-compare": "^2.0.1",
"tiny-warning": "^1.0.2",
"tslib": "^1.10.0"
},
"dependencies": {
"deepmerge": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz",
"integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==",
"dev": true
},
"tslib": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
"dev": true
}
}
},
"forwarded": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
@ -24721,6 +24946,23 @@
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw=="
},
"hoist-non-react-statics": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
"integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
"dev": true,
"requires": {
"react-is": "^16.7.0"
},
"dependencies": {
"react-is": {
"version": "16.13.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
"dev": true
}
}
},
"hoopy": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz",
@ -27000,6 +27242,12 @@
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
"lodash-es": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
"integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==",
"dev": true
},
"lodash.debounce": {
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
@ -27436,6 +27684,12 @@
"integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==",
"devOptional": true
},
"nanoclone": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/nanoclone/-/nanoclone-0.2.1.tgz",
"integrity": "sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA==",
"dev": true
},
"nanoid": {
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
@ -28926,6 +29180,12 @@
}
}
},
"property-expr": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.5.tgz",
"integrity": "sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA==",
"dev": true
},
"proxy-addr": {
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
@ -29148,11 +29408,33 @@
"resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz",
"integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg=="
},
"react-fast-compare": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz",
"integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==",
"dev": true
},
"react-is": {
"version": "17.0.2",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
"integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
},
"react-lifecycles-compat": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
"integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA=="
},
"react-modal": {
"version": "3.16.1",
"resolved": "https://registry.npmjs.org/react-modal/-/react-modal-3.16.1.tgz",
"integrity": "sha512-VStHgI3BVcGo7OXczvnJN7yT2TWHJPDXZWyI/a0ssFNhGZWsPmB8cF0z33ewDXq4VfYMO1vXgiv/g8Nj9NDyWg==",
"requires": {
"exenv": "^1.2.0",
"prop-types": "^15.7.2",
"react-lifecycles-compat": "^3.0.0",
"warning": "^4.0.3"
}
},
"react-refresh": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz",
@ -29213,6 +29495,15 @@
"workbox-webpack-plugin": "^6.4.1"
}
},
"react-text-mask": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/react-text-mask/-/react-text-mask-5.5.0.tgz",
"integrity": "sha512-SLJlJQxa0uonMXsnXRpv5abIepGmHz77ylQcra0GNd7Jtk4Wj2Mtp85uGQHv1avba2uI8ZvRpIEQPpJKsqRGYw==",
"dev": true,
"requires": {
"prop-types": "^15.5.6"
}
},
"read-cache": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
@ -30602,6 +30893,12 @@
"resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz",
"integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA=="
},
"tiny-warning": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz",
"integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==",
"dev": true
},
"tmpl": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
@ -30625,6 +30922,12 @@
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
"integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
},
"toposort": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz",
"integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==",
"dev": true
},
"tough-cookie": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz",
@ -30941,6 +31244,14 @@
"makeerror": "1.0.12"
}
},
"warning": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz",
"integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==",
"requires": {
"loose-envify": "^1.0.0"
}
},
"watchpack": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",
@ -31667,6 +31978,21 @@
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
"integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="
},
"yup": {
"version": "0.32.11",
"resolved": "https://registry.npmjs.org/yup/-/yup-0.32.11.tgz",
"integrity": "sha512-Z2Fe1bn+eLstG8DRR6FTavGD+MeAwyfmouhHsIUgaADz8jvFKbO/fXc2trJKZg+5EBjh4gGm3iU/t3onKlXHIg==",
"dev": true,
"requires": {
"@babel/runtime": "^7.15.4",
"@types/lodash": "^4.14.175",
"lodash": "^4.17.21",
"lodash-es": "^4.17.21",
"nanoclone": "^0.2.1",
"property-expr": "^2.0.4",
"toposort": "^2.0.2"
}
}
}
}

View File

@ -12,6 +12,7 @@
"@types/react-dom": "^18.0.10",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-modal": "^3.16.1",
"react-scripts": "5.0.1",
"typescript": "^4.9.4",
"web-vitals": "^2.1.4"
@ -41,8 +42,12 @@
]
},
"devDependencies": {
"@types/react-modal": "^3.13.1",
"formik": "^2.2.9",
"node-sass": "^8.0.0",
"react-text-mask": "^5.5.0",
"sass": "^1.57.1",
"scss": "^0.2.4"
"scss": "^0.2.4",
"yup": "^0.32.11"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 B

BIN
src/assets/img/facebook.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
src/assets/img/home.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 361 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
src/assets/img/linkedin.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 B

View File

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 479 B

BIN
src/assets/img/twitter.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

BIN
src/assets/img/vtex.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
src/assets/img/youtube.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -1,9 +1,100 @@
import React from 'react';
import styles from '../../styles/Footer.module.scss'
import facebook from '../../assets/img/facebook.png'
import instagram from '../../assets/img/instagram.png'
import twitter from '../../assets/img/twitter.png'
import youtube from '../../assets/img/youtube.png'
import linkedin from '../../assets/img/linkedin.png'
import mastercard from '../../assets/img/master.png'
import visa from '../../assets/img/visa.png'
import diners from '../../assets/img/diners.png'
import elo from '../../assets/img/elo.png'
import hiper from '../../assets/img/hiper.png'
import paypal from '../../assets/img/paypal.png'
import boleto from '../../assets/img/boleto.png'
import vtexpci from '../../assets/img/vtex-pci.png'
import vtex from '../../assets/img/vtex.png'
import m3 from '../../assets/img/m3.png'
const Footer = () => {
return(
<div>Footer</div>
return (
<footer>
<div className={styles['footer__newsletter']}>
<form className={styles['footer__newsletter-form']}>
<label htmlFor='email'>
Assine nossa Newsletter
</label>
<div className={styles['footer__newsletter-input']}>
<input id='email' type='email' placeholder='E-mail' />
<button type="submit" >Enviar</button>
</div>
</form>
</div>
<section className={styles['footer__top']}>
<div className={styles['footer__infos']}>
<div className={styles['footer__info-institucional']}>
<p className={styles['footer__info-title']}>Institucional</p>
<p className={styles['footer__info']}>Quem Somos</p>
<p className={styles['footer__info']}>Política de Privacidade</p>
<p className={styles['footer__info']}>Segurança</p>
<a href='/' className={styles['footer__info']}>Seja um Revendedor</a>
</div>
<div className={styles['footer__info-duvidas']}>
<p className={styles['footer__info-title']}>Dúvidas</p>
<p className={styles['footer__info']}>Entrega</p>
<p className={styles['footer__info']}>Pagamento</p>
<p className={styles['footer__info']}>Troca e Devoluções</p>
<a href='/' className={styles['footer__info']}>Dúvidas Frequentes</a>
</div>
<div className={styles['footer__info-fale-conosco']}>
<p className={styles['footer__info-title']}>Fale Conosco</p>
<p className={styles['footer__info']}>Atendimento ao Consumidor</p>
<p className={styles['footer__info']}>(11) 4159 9504</p>
<p className={styles['footer__info']}>Atendimento Online</p>
<a href='/' className={styles['footer__info']}>(11) 99433-8825</a>
</div>
</div>
<div className={styles['footer__redes']}>
<div className={styles['footer__container-rede']}>
<img src={facebook} alt='facebook' />
<img src={instagram} alt='instagram' />
<img src={twitter} alt='twitter' />
<img src={youtube} alt='youtube' />
<img src={linkedin} alt='linkedin' />
</div>
<p>www.loremipsum.com</p>
</div>
</section>
<section className={styles['footer__bottom']}>
<p className={styles['footer__text-bottom']}>Lorem ipsum dolor sit amet, consectetur adipiscing
elit, sed do eiusmod tempor
</p>
<div className={styles['footer__container-bandeiras']}>
<img src={mastercard} alt='bandeira mastercard' />
<img src={visa} alt='bandeira visa' />
<img src={diners} alt='bandeira american express' />
<img src={elo} alt='bandeira elo' />
<img src={hiper} alt='bandeira hipercard' />
<img src={paypal} alt='paypal' />
<img src={boleto} alt='boleto' />
<div className={styles['footer__line']}></div>
<img src={vtexpci} alt='vtex-cerficado' />
</div>
<div className={styles['footer__certificate']}>
<p className={styles['footer__text-certificate']}>Powered by</p>
<img src={vtex} alt='vtex-logo' />
<p>Developed by</p>
<img src={m3} alt='m3-logo' />
</div>
</section>
</footer>
)
}
export default Footer
export default Footer

View File

@ -0,0 +1,19 @@
import React from 'react';
import Institucional from '../../pages/institucional/Institucional';
import Home from '../../assets/img/home.png'
import Arrow from '../../assets/img/arrow-point-to-right.png'
const Main = () => {
return(
<div>
<div>
<img src={Home} alt='home'></img>
<img src={Arrow} alt='arrow'></img>
<p>Institucional</p>
</div>
<Institucional/>
</div>
)
}
export default Main

View File

@ -1,20 +1,23 @@
import React from 'react';
import React, { useState } from 'react';
import ReactDOM from 'react-dom/client';
import './styles/global.scss';
import Header from './components/header/Header';
import Institucional from './pages/institucional/Institucional';
import Footer from './components/footer/Footer';
import Main from './components/main/Main';
import Menu from './components/header/Menu';
const root = ReactDOM.createRoot(
document.getElementById('root') as HTMLElement
);
function App() {
const [openModal, setOpenModal] = useState(false)
return (
<div className="App">
<Header/>
<Institucional/>
<Header handleOpenModal={() => setOpenModal(true)}/>
<Menu isOpen={openModal} onRequestClose={() => setOpenModal(false)}/>
<Main/>
<Footer/>
</div>
);

View File

@ -0,0 +1,104 @@
import React from "react";
import {Formik, Form, Field, ErrorMessage, FormikHelpers} from "formik"
// import MaskedInput from 'react-text-mask'
import Schema from "../../schema/schema";
import styles from "../../styles/Contato.module.scss";
interface IFormikValues {
name: string;
email: string;
cpf: string;
data: string;
telefone: string;
instagram: string;
}
const initialValues = {
name: "",
email: "",
cpf: "",
data: "",
telefone: "",
instagram: "",
};
const onSubmit = (values: IFormikValues, actions: FormikHelpers<IFormikValues>) => {
actions.setSubmitting(true);
actions.resetForm()
}
function Contato() {
return (
<div>
<h2 className={styles["contato__title"]}>PREENCHA O FORMULÁRIO </h2>
<Formik className={styles["form__formik"]} onSubmit={onSubmit} initialValues={initialValues} validationSchema={Schema}>
{({ errors, touched}) => (
<Form>
<div className={styles["form__container"]}>
<label htmlFor="name">Nome</label>
<Field className={errors.name && touched.name && "invalid"} placeholder="Seu nome completo" id="name" name ="name"/>
<ErrorMessage component="span"
name="name"
className={styles["form__invalid"]}/>
</div>
<div className={styles["form__container"]}>
<label htmlFor="email">E-mail</label>
<Field className={errors.email && touched.email && "invalid"} placeholder="Seu e__mail" id="email" name ="email"/>
<ErrorMessage component="span"
name="email"
className={styles["form__invalid"]}/>
</div>
<div className={styles["form__container"]}>
<label htmlFor="cpf">CPF</label>
<Field className={errors.cpf && touched.cpf && "invalid"} placeholder="000 000 000 00" id="cpf" name ="cpf"/>
<ErrorMessage component="span"
name="cpf"
className={styles["form__invalid"]}/>
</div>
<div className={styles["form__container"]}>
<label htmlFor="data">Data de Nascimento:</label>
<Field className={errors.data && touched.data && "invalid"} placeholder="00 . 00 . 0000" id="data" name ="data"/>
<ErrorMessage component="span"
name="data"
className={styles["form__invalid"]}/>
</div>
<div className={styles["form__container"]}>
<label htmlFor="tel">Telefone:</label>
<Field className={errors.telefone && touched.telefone && "invalid"} placeholder="(+00) 00000 0000" id="tel" name ="tel"/>
<ErrorMessage component="span"
name="tel"
className={styles["form__invalid"]}/>
</div>
<div className={styles["form__container"]}>
<label htmlFor="insta">Instagram</label>
<Field className={errors.instagram && touched.instagram && "invalid"} placeholder="@seuuser" id="insta" name ="insta"/>
<ErrorMessage component="span"
name="insta"
className={styles["form__invalid"]}/>
</div>
<div className={styles["form__check"]}>
<label htmlFor="checkbox">*Declaro que li e aceito</label>
<input type="checkbox" id="checkbox" name="checkbox"></input>
</div>
<button className={styles["form__button"]} type="submit">CADASTRE-SE</button>
</Form>
)}
</Formik>
</div>
)
}
export default Contato;

View File

@ -0,0 +1,15 @@
import React from 'react';
import styles from '../../styles/Devolucao.module.scss'
const Devolucao = () => {
return(
<div className={styles["devolucao__container"]}>
<h2 className= {styles["devolucao__title"]}>Troca e Devolução</h2>
<p className= {styles["devolucao__description"]}>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. <br /><br />
Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. <br /><br />
Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?</p>
</div>
)
}
export default Devolucao

View File

@ -0,0 +1,17 @@
import React from 'react';
import styles from '../../styles/Entrega.module.scss'
const Entrega = () => {
return(
<div className={styles["entrega__container"]}>
<h2 className= {styles["entrega__title"]}>Entrega</h2>
<p className= {styles["entrega__description"]}>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. <br /><br />
Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. <br /><br />
Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?</p>
</div>
)
}
export default Entrega

View File

@ -1,9 +1,55 @@
import React from 'react';
import React, { useState } from "react";
const Institucional = () => {
return(
<div>Institucional</div>
)
import styles from "../../styles/Institucional.module.scss";
import Sobre from "../sobre/Sobre";
import Pagamento from "../pagamento/Pagamento";
import Entrega from "../entrega/Entrega";
import Devolucao from "../devolução/Devolucao";
import Seguranca from "../segurança/Seguranca";
import Contato from "../contato/Contato";
function Institucional() {
const [step, setStep] = useState("");
function render() {
switch (step) {
case "sobre":
return <Sobre />;
case "pagamento":
return <Pagamento />;
case "entrega":
return <Entrega />;
case "devolucao":
return <Devolucao />;
case "seguranca":
return <Seguranca />;
case "contato":
return <Contato />;
default:
return <Sobre />;
}
}
return (
<div className={styles["main__container"]}>
<h1 className={styles["title__mobile"]}>institucional</h1>
<ul>
<li onClick={() => setStep("sobre")}>Sobre</li>
<li onClick={() => setStep("pagamento")}>Forma de Pagamento</li>
<li onClick={() => setStep("entrega")}>Entrega</li>
<li onClick={() => setStep("devolucao")}>Troca e Devolução</li>
<li onClick={() => setStep("seguranca")}>Segurança e Privacidade</li>
<li onClick={() => setStep("contato")}>Contato</li>
</ul>
<div>
<h1 className={styles["title__desktop"]}>institucional</h1>
<div>{render()}</div>
</div>
</div>
);
}
export default Institucional
export default Institucional;

View File

@ -0,0 +1,17 @@
import React from 'react';
import styles from '../../styles/Pagamento.module.scss'
const Pagamento = () => {
return(
<div className= {styles["pagamento__container"]}>
<h2 className= {styles["pagamento__title"]}> Forma de Pagamento</h2>
<p className= {styles["pagamento__description"]}>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. <br /><br />
Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. <br /><br />
Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?</p>
</div>
)
}
export default Pagamento

View File

@ -0,0 +1,16 @@
import React from 'react';
import styles from '../../styles/Seguranca.module.scss'
const Seguranca = () => {
return(
<div className= {styles["seguranca__container"]}>
<h2 className= {styles["seguranca__title"]}> Segurança e Privacidade</h2>
<p className= {styles["seguranca__description"]}>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. <br /><br />
Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. <br /><br />
Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?</p>
</div>
)
}
export default Seguranca

16
src/pages/sobre/Sobre.tsx Normal file
View File

@ -0,0 +1,16 @@
import React from 'react';
import styles from '../../styles/Sobre.module.scss'
const Sobre = () => {
return(
<div className={styles["sobre__container"]} >
<h2 className={styles["sobre__title"]}>Sobre</h2>
<p className={styles["sobre__description"]}>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. <br /><br />
Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. <br /><br />
Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?</p>
</div>
)
}
export default Sobre

10
src/schema/schema.tsx Normal file
View File

@ -0,0 +1,10 @@
import * as Yup from "yup";
export default Yup.object().shape({
name: Yup.string().min(3).required("Campo obrigatório"),
email: Yup.string().required("Campo obrigatório").email("Email inválido"),
cpf: Yup.string().required("Campo obrigatório"),
data: Yup.string().required("Campo obrigatório"),
tel: Yup.string().required("Campo obrigatório"),
insta: Yup.string(),
});

View File

@ -0,0 +1,107 @@
.contato__title {
font-family: 'Roboto', sans-serif;
font-style: normal;
font-weight: 400;
font-size: 24px;
line-height: 23px;
color: #110D0F;
margin-bottom: 12px;
}
form {
max-width: 391px;
margin-top: 33px;
}
input::placeholder {
font-family: 'Roboto', sans-serif;
font-style: normal;
font-weight: 400;
font-size: 14px;
line-height: 23px;
color: #B9B7B7;
}
.form__container {
position: relative;
}
.form__container label {
display: flex;
font-family: 'Roboto', sans-serif;
font-weight: 400;
font-size: 14px;
line-height: 23px;
color: #100D0E;
padding-bottom: 4px;
padding-top: 12px;
}
.form__container input {
font-family: 'Roboto', sans-serif;
font-weight: 400;
font-size: 14px;
line-height: 23px;
color: #B9B7B7;
background: #FFFFFF;
border: 1px solid #100D0E;
border-radius: 25px;
padding: 11px 227px 10px 28px;
}
.form__check {
display: flex;
align-items: center;
justify-content: center;
gap: 8px;
padding: 21px 0 21px;
font-weight: 400;
font-size: 14px;
line-height: 23px;
text-decoration-line: underline;
color: #100D0E;
}
.form__button {
width: 391.49px;
height: 52.47px;
left: 500px;
top: 979px;
background: #000000;
border-radius: 25px;
font-style: normal;
font-weight: 700;
font-size: 16px;
line-height: 34px;
letter-spacing: 0.05em;
color: #FFFFFF;
border: #000000;
margin-bottom: 117px;
}
button:hover {
background-color: #000000;
}
button:active {
background-color: #000000;
}
.form__invalid {
display: flex;
font-family: 'Roboto', sans-serif;
font-weight: 400;
font-size: 12px;
color: red;
position: absolute;
}
.form__container input.invalid {
border: 1px solid red;
}

View File

@ -0,0 +1,22 @@
.devolucao__title {
font-family: 'Roboto', sans-serif;
font-style: normal;
font-weight: 700;
font-size: 24px;
line-height: 28px;
color: #292929;
text-align: left;
padding-bottom: 12px;
}
.devolucao__description {
font-family: 'Roboto', sans-serif;
font-style: normal;
font-weight: 400;
font-size: 13px;
line-height: 15px;
color: #7D7D7D;
text-align: left;
max-width: 715px;
padding-bottom: 171px;
}

View File

@ -0,0 +1,22 @@
.entrega__title {
font-family: 'Roboto', sans-serif;
font-style: normal;
font-weight: 700;
font-size: 24px;
line-height: 28px;
color: #292929;
text-align: left;
padding-bottom: 12px;
}
.entrega__description {
font-family: 'Roboto', sans-serif;
font-style: normal;
font-weight: 400;
font-size: 13px;
line-height: 15px;
color: #7D7D7D;
text-align: left;
max-width: 715px;
padding-bottom: 171px;
}

View File

@ -1,3 +1,169 @@
* {
padding: 0;
@import url('https://fonts.googleapis.com/css2?family=Roboto:wght@100&display=swap');
@import 'variables.scss';
footer {
width: 100%;
position: absolute;
bottom: 0;
.footer__newsletter{
display: flex;
align-items: center;
justify-content: center;
border-width: 1px 0px;
border-style: solid;
border-color: $black;
.footer__newsletter-form{
display: flex;
flex-direction: column;
width: 37.03%;
padding: 16px 0px;
label{
font-family: 'Roboto', sans-serif;
font-size: 18px;
text-transform: uppercase;
line-height: 21px;
letter-spacing: 0.05em;
font-variant: small-caps;
color: #303030;
}
.footer__newsletter-input{
display: flex;
width: 100%;
justify-content: space-between;
input{
width: 71.73%;
background: #FFFFFF;
border: 1px solid #E5E5E5;
border-radius: 4px;
padding: 13px 16px;
}
button{
color: #FFFFFF;
font-family: 'Roboto', sans-serif;
font-style: normal;
font-weight: 700;
font-size: 12px;
line-height: 14px;
text-align: center;
letter-spacing: 0.05em;
background: #000000;
box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
border-radius: 4px;
padding: 14px 20px;
}
}
}
}
.footer__top{
display: flex;
justify-content: space-between;
padding: 50px 100px;
.footer__infos{
display: flex;
justify-content: space-between;
width: 55.23%;
.footer__info-title{
text-align: start;
margin-top: 0px;
}
}
.footer__info {
color: $black;
}
.footer__redes{
width: 16.80%;
.footer__container-rede{
display: flex;
width: 100%;
justify-content: space-between;
img {
width: 16.28%;
}
p {
font-family: 'Roboto', sans-serif;
font-style: normal;
font-weight: 400;
font-size: 14px;
line-height: 16px;
}
}
}
}
.footer__bottom{
display: flex;
align-items: center;
background-color: $black;
color: $white;
font-family: 'Roboto', sans-serif;
font-style: normal;
font-size: 20px;
line-height: 23px;
justify-content: space-between;
padding: 0px 100px;
.footer__text-bottom{
width: 18.28%;
height: 24px;
font-style: normal;
font-size: 10px;
line-height: 12px;
text-transform: capitalize;
}
.footer__container-bandeiras{
display: flex;
width: 31.14%;
justify-content: space-between;
.footer__line{
border-left: 1px solid $white;
}
img {
width: 10.12%;
}
}
.footer__certificate{
display: flex;
align-items: center;
justify-content: space-between;
width: 17.70%;
height: 16px;
p {
font-weight: 400;
font-size: 10px;
line-height: 12px;
text-transform: capitalize;
}
img {
width: 10%;
}
}
}
}

View File

@ -1,3 +1,114 @@
* {
padding: 0;
@import url('https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap');
.main__container {
display: flex;
justify-content: center;
max-width: 80%;
}
.main__container ul {
border-right: 1px solid #E5E5E5;
margin: 150px 32px 78px 118px;
list-style: none;
max-height: 270px;
max-width: 270px;
}
.main__container li {
font-family: 'Roboto', sans-serif;
font-weight: 400;
font-size: 16px;
line-height: 19px;
color: #7D7D7D;
text-align: left;
margin-bottom: 24px;
margin-right: 78px;
height: 39px;
}
.main__container li:hover {
background-color: #000000;
cursor: pointer;
font-family: 'Roboto', sans-serif;
font-weight: 700;
font-size: 16px;
line-height: 19px;
color: #FFFFFF;
padding: 10px 16px;
}
.title__desktop {
font-weight: 300;
font-size: 24px;
line-height: 29px;
letter-spacing: 0.1em;
text-transform: uppercase;
color: #292929;
margin-bottom: 51px;
margin-top: 80px;
}
@media screen and (max-width: 1080px) {
.main__container {
max-width: 80%;
}
}
@media screen and (max-width: 768px) {
.main__container {
flex-direction: column;
align-items: center;
max-width: 343px;
margin: 0 auto;
}
.main__container ul {
margin: 33px 25px 22px 7px;
display: flex;
flex-direction: column;
align-items: flex-end;
}
.main__contato-subtitle {
margin-top: 22px;
}
.title__desktop {
display: none;
}
.title__mobile {
font-style: normal;
font-weight: 300;
font-size: 24px;
line-height: 29px;
letter-spacing: 0.1em;
text-transform: uppercase;
color: #292929;
margin: 75px 92px 33px 83px;
}
}
@media screen and (min-width: 769px) {
.title__mobile {
display: none
}
}
@media screen and (max-width: 475px) {
.main__container ul {
align-items: center;
}
}
@media screen and (max-width: 375px) {
.main__container ul {
max-width: 70%;
margin: 0 auto;
}
}

View File

@ -0,0 +1,22 @@
.pagamento__title {
font-family: 'Roboto', sans-serif;
font-style: normal;
font-weight: 700;
font-size: 24px;
line-height: 28px;
color: #292929;
text-align: left;
padding-bottom: 12px;
}
.pagamento__description {
font-family: 'Roboto', sans-serif;
font-style: normal;
font-weight: 400;
font-size: 13px;
line-height: 15px;
color: #7D7D7D;
text-align: left;
max-width: 715px;
padding-bottom: 171px;
}

View File

@ -0,0 +1,23 @@
.seguranca__title {
font-family: 'Roboto', sans-serif;
font-style: normal;
font-weight: 700;
font-size: 24px;
line-height: 28px;
color: #292929;
text-align: left;
padding-bottom: 12px;
}
.seguranca__description {
font-family: 'Roboto', sans-serif;
font-style: normal;
font-weight: 400;
font-size: 13px;
line-height: 15px;
color: #7D7D7D;
text-align: left;
max-width: 715px;
padding-bottom: 171px;
}

View File

@ -0,0 +1,23 @@
.sobre__title {
font-family: 'Roboto', sans-serif;
font-style: normal;
font-weight: 700;
font-size: 24px;
line-height: 28px;
color: #292929;
text-align: left;
padding-bottom: 12px;
}
.sobre__description {
font-family: 'Roboto', sans-serif;
font-style: normal;
font-weight: 400;
font-size: 13px;
line-height: 15px;
color: #7D7D7D;
text-align: left;
max-width: 715px;
padding-bottom: 171px;
}