diff --git a/package-lock.json b/package-lock.json index d733553..ddc2dca 100644 --- a/package-lock.json +++ b/package-lock.json @@ -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" + } } } } diff --git a/package.json b/package.json index 6c77e46..eff619f 100644 --- a/package.json +++ b/package.json @@ -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" } } diff --git a/src/assets/img/arrow-point-to-right.png b/src/assets/img/arrow-point-to-right.png new file mode 100644 index 0000000..516567c Binary files /dev/null and b/src/assets/img/arrow-point-to-right.png differ diff --git a/src/assets/img/facebook.png b/src/assets/img/facebook.png new file mode 100644 index 0000000..14814c4 Binary files /dev/null and b/src/assets/img/facebook.png differ diff --git a/src/assets/img/home.png b/src/assets/img/home.png new file mode 100644 index 0000000..caa8648 Binary files /dev/null and b/src/assets/img/home.png differ diff --git a/src/assets/img/instagram.png b/src/assets/img/instagram.png new file mode 100644 index 0000000..a3908a7 Binary files /dev/null and b/src/assets/img/instagram.png differ diff --git a/src/assets/img/linkedin.png b/src/assets/img/linkedin.png new file mode 100644 index 0000000..6f2b76b Binary files /dev/null and b/src/assets/img/linkedin.png differ diff --git a/src/assets/img/menu-hamburguer.png b/src/assets/img/menu-hamburguer.png new file mode 100644 index 0000000..d69b4a8 Binary files /dev/null and b/src/assets/img/menu-hamburguer.png differ diff --git a/src/assets/img/pagseguro.png b/src/assets/img/paypal.png similarity index 100% rename from src/assets/img/pagseguro.png rename to src/assets/img/paypal.png diff --git a/src/assets/img/shape.png b/src/assets/img/shape.png deleted file mode 100644 index 37ef4f9..0000000 Binary files a/src/assets/img/shape.png and /dev/null differ diff --git a/src/assets/img/twitter.png b/src/assets/img/twitter.png new file mode 100644 index 0000000..330ad7e Binary files /dev/null and b/src/assets/img/twitter.png differ diff --git a/src/assets/img/vtex-pci-200.png b/src/assets/img/vtex-pci.png similarity index 100% rename from src/assets/img/vtex-pci-200.png rename to src/assets/img/vtex-pci.png diff --git a/src/assets/img/vtex.png b/src/assets/img/vtex.png new file mode 100644 index 0000000..ff26605 Binary files /dev/null and b/src/assets/img/vtex.png differ diff --git a/src/assets/img/youtube.png b/src/assets/img/youtube.png new file mode 100644 index 0000000..9f76692 Binary files /dev/null and b/src/assets/img/youtube.png differ diff --git a/src/components/footer/Footer.tsx b/src/components/footer/Footer.tsx index d791124..d4ebfc1 100644 --- a/src/components/footer/Footer.tsx +++ b/src/components/footer/Footer.tsx @@ -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( -
Footer
+ return ( + ) } -export default Footer \ No newline at end of file +export default Footer diff --git a/src/components/main/Main.tsx b/src/components/main/Main.tsx new file mode 100644 index 0000000..205429d --- /dev/null +++ b/src/components/main/Main.tsx @@ -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( +
+
+ home + arrow +

Institucional

+
+ +
+ ) +} + +export default Main diff --git a/src/index.tsx b/src/index.tsx index 4277aef..608f505 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -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 (
-
- +
setOpenModal(true)}/> + setOpenModal(false)}/> +
); diff --git a/src/pages/contato/Contato.tsx b/src/pages/contato/Contato.tsx new file mode 100644 index 0000000..fc0f338 --- /dev/null +++ b/src/pages/contato/Contato.tsx @@ -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) => { + actions.setSubmitting(true); + actions.resetForm() + +} + + +function Contato() { + return ( +
+

PREENCHA O FORMULÁRIO

+ + + {({ errors, touched}) => ( +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+ +
+ + +
+ + + +
+ )} + +
+ +
+ + ) +} + + +export default Contato; diff --git a/src/pages/devolução/Devolucao.tsx b/src/pages/devolução/Devolucao.tsx new file mode 100644 index 0000000..fc0dded --- /dev/null +++ b/src/pages/devolução/Devolucao.tsx @@ -0,0 +1,15 @@ +import React from 'react'; +import styles from '../../styles/Devolucao.module.scss' + +const Devolucao = () => { + return( +
+

Troca e Devolução

+

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.

+ 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.

+ 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?

+
+ ) +} + +export default Devolucao diff --git a/src/pages/entrega/Entrega.tsx b/src/pages/entrega/Entrega.tsx new file mode 100644 index 0000000..77567cf --- /dev/null +++ b/src/pages/entrega/Entrega.tsx @@ -0,0 +1,17 @@ +import React from 'react'; +import styles from '../../styles/Entrega.module.scss' + +const Entrega = () => { + return( +
+

Entrega

+

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.

+ 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.

+ 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?

+ +
+ + ) +} + +export default Entrega diff --git a/src/pages/institucional/Institucional.tsx b/src/pages/institucional/Institucional.tsx index f98309c..5b924e2 100644 --- a/src/pages/institucional/Institucional.tsx +++ b/src/pages/institucional/Institucional.tsx @@ -1,9 +1,55 @@ -import React from 'react'; +import React, { useState } from "react"; -const Institucional = () => { - return( -
Institucional
- ) +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 ; + case "pagamento": + return ; + case "entrega": + return ; + case "devolucao": + return ; + case "seguranca": + return ; + case "contato": + return ; + default: + return ; + } + } + + return ( +
+

institucional

+
    +
  • setStep("sobre")}>Sobre
  • +
  • setStep("pagamento")}>Forma de Pagamento
  • +
  • setStep("entrega")}>Entrega
  • +
  • setStep("devolucao")}>Troca e Devolução
  • +
  • setStep("seguranca")}>Segurança e Privacidade
  • +
  • setStep("contato")}>Contato
  • +
+
+

institucional

+
{render()}
+
+ + +
+ ); } -export default Institucional \ No newline at end of file +export default Institucional; diff --git a/src/pages/pagamento/Pagamento.tsx b/src/pages/pagamento/Pagamento.tsx new file mode 100644 index 0000000..ae27a91 --- /dev/null +++ b/src/pages/pagamento/Pagamento.tsx @@ -0,0 +1,17 @@ +import React from 'react'; +import styles from '../../styles/Pagamento.module.scss' + +const Pagamento = () => { + return( +
+

Forma de Pagamento

+

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.

+ 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.

+ 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?

+ + +
+ ) +} + +export default Pagamento diff --git a/src/pages/segurança/Seguranca.tsx b/src/pages/segurança/Seguranca.tsx new file mode 100644 index 0000000..cbe4489 --- /dev/null +++ b/src/pages/segurança/Seguranca.tsx @@ -0,0 +1,16 @@ +import React from 'react'; +import styles from '../../styles/Seguranca.module.scss' + +const Seguranca = () => { + return( +
+

Segurança e Privacidade

+

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.

+ 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.

+ 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?

+
+ + ) +} + +export default Seguranca diff --git a/src/pages/sobre/Sobre.tsx b/src/pages/sobre/Sobre.tsx new file mode 100644 index 0000000..fec1246 --- /dev/null +++ b/src/pages/sobre/Sobre.tsx @@ -0,0 +1,16 @@ +import React from 'react'; +import styles from '../../styles/Sobre.module.scss' + +const Sobre = () => { + return( +
+

Sobre

+

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.

+ 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.

+ 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?

+
+ + ) +} + +export default Sobre diff --git a/src/schema/schema.tsx b/src/schema/schema.tsx new file mode 100644 index 0000000..10ced79 --- /dev/null +++ b/src/schema/schema.tsx @@ -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(), +}); diff --git a/src/styles/Contato.module.scss b/src/styles/Contato.module.scss new file mode 100644 index 0000000..f723f09 --- /dev/null +++ b/src/styles/Contato.module.scss @@ -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; +} + + diff --git a/src/styles/Devolucao.module.scss b/src/styles/Devolucao.module.scss new file mode 100644 index 0000000..4e76957 --- /dev/null +++ b/src/styles/Devolucao.module.scss @@ -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; +} + diff --git a/src/styles/Entrega.module.scss b/src/styles/Entrega.module.scss new file mode 100644 index 0000000..a1b9020 --- /dev/null +++ b/src/styles/Entrega.module.scss @@ -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; +} + diff --git a/src/styles/Footer.module.scss b/src/styles/Footer.module.scss index 1457087..78ff075 100644 --- a/src/styles/Footer.module.scss +++ b/src/styles/Footer.module.scss @@ -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%; + } + } + + } + } + + diff --git a/src/styles/Institucional.module.scss b/src/styles/Institucional.module.scss index 1457087..22bcf9e 100644 --- a/src/styles/Institucional.module.scss +++ b/src/styles/Institucional.module.scss @@ -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; + } } diff --git a/src/styles/Pagamento.module.scss b/src/styles/Pagamento.module.scss new file mode 100644 index 0000000..c070043 --- /dev/null +++ b/src/styles/Pagamento.module.scss @@ -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; +} + diff --git a/src/styles/Seguranca.module.scss b/src/styles/Seguranca.module.scss new file mode 100644 index 0000000..c81cf1b --- /dev/null +++ b/src/styles/Seguranca.module.scss @@ -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; +} + + diff --git a/src/styles/Sobre.module.scss b/src/styles/Sobre.module.scss new file mode 100644 index 0000000..aa461e1 --- /dev/null +++ b/src/styles/Sobre.module.scss @@ -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; +} + +