Compare commits
38 Commits
feature/fo
...
main
Author | SHA1 | Date | |
---|---|---|---|
14ebb33d5c | |||
2e15340fef | |||
5d2345ff79 | |||
e1866af5df | |||
0d7f1da5c8 | |||
e978734dd3 | |||
26b5c30524 | |||
bad04a2938 | |||
d98ae5f0d3 | |||
034da2087a | |||
6700d94f3b | |||
b1098e2434 | |||
da3ae2baff | |||
43594dee97 | |||
d4580bd4a5 | |||
f632ee2b06 | |||
00b7c5ac2e | |||
910f5bc99c | |||
600f2a1b7e | |||
033320f2e0 | |||
7a1c3c8d6d | |||
d023ac0d78 | |||
1f38486a6b | |||
05a9be1f61 | |||
aec5ddcd1d | |||
1201c229d0 | |||
eb7fba79c1 | |||
0049bdeb18 | |||
f15dc37850 | |||
b9c491ba4f | |||
3ed4b5687c | |||
ed816f0f16 | |||
a7ed7b2274 | |||
8e9ffed1d6 | |||
9e6cab377c | |||
b7521768d8 | |||
be59cc26a2 | |||
9f60bbafe6 |
26
README.md
@ -2,12 +2,22 @@
|
||||
|
||||
This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).
|
||||
|
||||
## About
|
||||
|
||||
This project is an institutional page, with a mobile sidebar 'menu
|
||||
hamburger', contact form with formik, accordion menu in the footer, input validation using yup and route navigation with no need to reload the page!
|
||||
|
||||
Este Projeto é uma página institucional, com 'menu hamburguer' mobile, formulário de contato com formik, menu acordeon no footer, validação de inputs utilizando yup e navegação por rotas sem necessidade de reload da página!
|
||||
|
||||
## Available Scripts
|
||||
|
||||
In the project directory, you can run:
|
||||
|
||||
### `npm start`
|
||||
|
||||
Rode o projeto no modo de desenvolvimento. \
|
||||
Abra [http://localhost:3000](http://localhost:3000) para ve-lo no navegador.
|
||||
|
||||
Runs the app in the development mode.\
|
||||
Open [http://localhost:3000](http://localhost:3000) to view it in the browser.
|
||||
|
||||
@ -44,3 +54,19 @@ You don’t have to ever use `eject`. The curated feature set is suitable for sm
|
||||
You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).
|
||||
|
||||
To learn React, check out the [React documentation](https://reactjs.org/).
|
||||
|
||||
## Libraries that I used
|
||||
|
||||
React
|
||||
react-dom
|
||||
react-router-dom
|
||||
typescript
|
||||
sass
|
||||
react-headless-accordion
|
||||
Classnames
|
||||
Formik
|
||||
Yup
|
||||
|
||||
## Node version
|
||||
|
||||
node: ^16.18.11
|
||||
|
256
package-lock.json
generated
@ -16,11 +16,14 @@
|
||||
"@types/react": "^18.0.26",
|
||||
"@types/react-dom": "^18.0.10",
|
||||
"classnames": "^2.3.2",
|
||||
"formik": "^2.2.9",
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-router-dom": "^6.6.2",
|
||||
"react-scripts": "5.0.1",
|
||||
"typescript": "^4.9.4",
|
||||
"web-vitals": "^2.1.4"
|
||||
"web-vitals": "^2.1.4",
|
||||
"yup": "^0.32.11"
|
||||
},
|
||||
"devDependencies": {
|
||||
"react-headless-accordion": "^1.0.2",
|
||||
@ -3079,6 +3082,14 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/@remix-run/router": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.2.1.tgz",
|
||||
"integrity": "sha512-XiY0IsyHR+DXYS5vBxpoBe/8veTeoRpMHP+vDosLZxL5bnpetzI0igkxkLZS235ldLzyfkxF+2divEwWHP3vMQ==",
|
||||
"engines": {
|
||||
"node": ">=14"
|
||||
}
|
||||
},
|
||||
"node_modules/@rollup/plugin-babel": {
|
||||
"version": "5.3.1",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz",
|
||||
@ -3806,6 +3817,11 @@
|
||||
"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=="
|
||||
},
|
||||
"node_modules/@types/mime": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz",
|
||||
@ -7968,6 +7984,42 @@
|
||||
"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==",
|
||||
"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==",
|
||||
"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=="
|
||||
},
|
||||
"node_modules/forwarded": {
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
|
||||
@ -8343,6 +8395,19 @@
|
||||
"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==",
|
||||
"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=="
|
||||
},
|
||||
"node_modules/hoopy": {
|
||||
"version": "0.1.4",
|
||||
"resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz",
|
||||
@ -11414,6 +11479,11 @@
|
||||
"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=="
|
||||
},
|
||||
"node_modules/lodash.debounce": {
|
||||
"version": "4.0.8",
|
||||
"resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
|
||||
@ -11739,6 +11809,11 @@
|
||||
"multicast-dns": "cli.js"
|
||||
}
|
||||
},
|
||||
"node_modules/nanoclone": {
|
||||
"version": "0.2.1",
|
||||
"resolved": "https://registry.npmjs.org/nanoclone/-/nanoclone-0.2.1.tgz",
|
||||
"integrity": "sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA=="
|
||||
},
|
||||
"node_modules/nanoid": {
|
||||
"version": "3.3.4",
|
||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
|
||||
@ -13641,6 +13716,11 @@
|
||||
"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=="
|
||||
},
|
||||
"node_modules/proxy-addr": {
|
||||
"version": "2.0.7",
|
||||
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
|
||||
@ -13950,6 +14030,11 @@
|
||||
"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=="
|
||||
},
|
||||
"node_modules/react-headless-accordion": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/react-headless-accordion/-/react-headless-accordion-1.0.2.tgz",
|
||||
@ -13972,6 +14057,36 @@
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/react-router": {
|
||||
"version": "6.6.2",
|
||||
"resolved": "https://registry.npmjs.org/react-router/-/react-router-6.6.2.tgz",
|
||||
"integrity": "sha512-uJPG55Pek3orClbURDvfljhqFvMgJRo59Pktywkk8hUUkTY2aRfza8Yhl/vZQXs+TNQyr6tu+uqz/fLxPICOGQ==",
|
||||
"dependencies": {
|
||||
"@remix-run/router": "1.2.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": ">=16.8"
|
||||
}
|
||||
},
|
||||
"node_modules/react-router-dom": {
|
||||
"version": "6.6.2",
|
||||
"resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.6.2.tgz",
|
||||
"integrity": "sha512-6SCDXxRQqW5af8ImOqKza7icmQ47/EMbz572uFjzvcArg3lZ+04PxSPp8qGs+p2Y+q+b+S/AjXv8m8dyLndIIA==",
|
||||
"dependencies": {
|
||||
"@remix-run/router": "1.2.1",
|
||||
"react-router": "6.6.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": ">=16.8",
|
||||
"react-dom": ">=16.8"
|
||||
}
|
||||
},
|
||||
"node_modules/react-scripts": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.1.tgz",
|
||||
@ -15503,6 +15618,11 @@
|
||||
"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=="
|
||||
},
|
||||
"node_modules/tmpl": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
|
||||
@ -15535,6 +15655,11 @@
|
||||
"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=="
|
||||
},
|
||||
"node_modules/tough-cookie": {
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz",
|
||||
@ -16835,6 +16960,23 @@
|
||||
"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==",
|
||||
"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": {
|
||||
@ -18881,6 +19023,11 @@
|
||||
"source-map": "^0.7.3"
|
||||
}
|
||||
},
|
||||
"@remix-run/router": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.2.1.tgz",
|
||||
"integrity": "sha512-XiY0IsyHR+DXYS5vBxpoBe/8veTeoRpMHP+vDosLZxL5bnpetzI0igkxkLZS235ldLzyfkxF+2divEwWHP3vMQ=="
|
||||
},
|
||||
"@rollup/plugin-babel": {
|
||||
"version": "5.3.1",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz",
|
||||
@ -19421,6 +19568,11 @@
|
||||
"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=="
|
||||
},
|
||||
"@types/mime": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz",
|
||||
@ -22499,6 +22651,32 @@
|
||||
"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==",
|
||||
"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=="
|
||||
},
|
||||
"tslib": {
|
||||
"version": "1.14.1",
|
||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
|
||||
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"forwarded": {
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
|
||||
@ -22757,6 +22935,21 @@
|
||||
"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==",
|
||||
"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=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"hoopy": {
|
||||
"version": "0.1.4",
|
||||
"resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz",
|
||||
@ -24971,6 +25164,11 @@
|
||||
"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=="
|
||||
},
|
||||
"lodash.debounce": {
|
||||
"version": "4.0.8",
|
||||
"resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
|
||||
@ -25216,6 +25414,11 @@
|
||||
"thunky": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"nanoclone": {
|
||||
"version": "0.2.1",
|
||||
"resolved": "https://registry.npmjs.org/nanoclone/-/nanoclone-0.2.1.tgz",
|
||||
"integrity": "sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA=="
|
||||
},
|
||||
"nanoid": {
|
||||
"version": "3.3.4",
|
||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
|
||||
@ -26400,6 +26603,11 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"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=="
|
||||
},
|
||||
"proxy-addr": {
|
||||
"version": "2.0.7",
|
||||
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
|
||||
@ -26622,6 +26830,11 @@
|
||||
"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=="
|
||||
},
|
||||
"react-headless-accordion": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/react-headless-accordion/-/react-headless-accordion-1.0.2.tgz",
|
||||
@ -26639,6 +26852,23 @@
|
||||
"resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz",
|
||||
"integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A=="
|
||||
},
|
||||
"react-router": {
|
||||
"version": "6.6.2",
|
||||
"resolved": "https://registry.npmjs.org/react-router/-/react-router-6.6.2.tgz",
|
||||
"integrity": "sha512-uJPG55Pek3orClbURDvfljhqFvMgJRo59Pktywkk8hUUkTY2aRfza8Yhl/vZQXs+TNQyr6tu+uqz/fLxPICOGQ==",
|
||||
"requires": {
|
||||
"@remix-run/router": "1.2.1"
|
||||
}
|
||||
},
|
||||
"react-router-dom": {
|
||||
"version": "6.6.2",
|
||||
"resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.6.2.tgz",
|
||||
"integrity": "sha512-6SCDXxRQqW5af8ImOqKza7icmQ47/EMbz572uFjzvcArg3lZ+04PxSPp8qGs+p2Y+q+b+S/AjXv8m8dyLndIIA==",
|
||||
"requires": {
|
||||
"@remix-run/router": "1.2.1",
|
||||
"react-router": "6.6.2"
|
||||
}
|
||||
},
|
||||
"react-scripts": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.1.tgz",
|
||||
@ -27766,6 +27996,11 @@
|
||||
"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=="
|
||||
},
|
||||
"tmpl": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
|
||||
@ -27789,6 +28024,11 @@
|
||||
"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=="
|
||||
},
|
||||
"tough-cookie": {
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz",
|
||||
@ -28782,6 +29022,20 @@
|
||||
"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==",
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -11,11 +11,14 @@
|
||||
"@types/react": "^18.0.26",
|
||||
"@types/react-dom": "^18.0.10",
|
||||
"classnames": "^2.3.2",
|
||||
"formik": "^2.2.9",
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-router-dom": "^6.6.2",
|
||||
"react-scripts": "5.0.1",
|
||||
"typescript": "^4.9.4",
|
||||
"web-vitals": "^2.1.4"
|
||||
"web-vitals": "^2.1.4",
|
||||
"yup": "^0.32.11"
|
||||
},
|
||||
"scripts": {
|
||||
"start": "react-scripts start",
|
||||
|
16
src/assets/svgs/facebookicon.svg
Normal file
@ -0,0 +1,16 @@
|
||||
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_6949_746)">
|
||||
<g clip-path="url(#clip1_6949_746)">
|
||||
<path d="M19.1778 27.4911V18.544H22.1734L22.6228 15.0561H19.1778V12.8296C19.1778 11.8201 19.4564 11.1321 20.9026 11.1321L22.744 11.1314V8.01168C22.4256 7.97021 21.3324 7.87512 20.0601 7.87512C17.4033 7.87512 15.5845 9.50028 15.5845 12.4842V15.0561H12.5798V18.544H15.5845V27.4911H19.1778Z" fill="#303030"/>
|
||||
</g>
|
||||
<circle cx="17.5" cy="17.5" r="16.5" stroke="#303030" stroke-width="2"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_6949_746">
|
||||
<rect width="35" height="35" fill="white"/>
|
||||
</clipPath>
|
||||
<clipPath id="clip1_6949_746">
|
||||
<rect width="19.574" height="19.616" fill="white" transform="translate(7.875 7.87509)"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
After Width: | Height: | Size: 800 B |
10
src/assets/svgs/home.svg
Normal file
@ -0,0 +1,10 @@
|
||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_3715_5676)">
|
||||
<path d="M15.8327 7.59562L14.6904 6.4533L8.40443 0.167326C8.1813 -0.0557753 7.81954 -0.0557753 7.59641 0.167326L1.3104 6.4533L0.167503 7.59623C-0.0517478 7.82324 -0.0454864 8.185 0.181532 8.40425C0.402993 8.61814 0.754068 8.61814 0.975529 8.40425L1.14238 8.23623V15.4285C1.14238 15.7442 1.39823 16 1.71384 16H14.2858C14.6014 16 14.8573 15.7442 14.8573 15.4285V8.23623L15.0247 8.40368C15.2517 8.62293 15.6135 8.61664 15.8327 8.38965C16.0466 8.16819 16.0466 7.81708 15.8327 7.59562ZM9.71421 14.8571H6.28549V10.2855H9.71421V14.8571ZM13.7144 14.8571H10.8571V9.71403C10.8571 9.39841 10.6013 9.14256 10.2856 9.14256H5.71403C5.39841 9.14256 5.14256 9.39841 5.14256 9.71403V14.8571H2.28531V7.09334L7.99982 1.3788L13.7144 7.09334V14.8571Z" fill="#C4C4C4"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_3715_5676">
|
||||
<rect width="16" height="16" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
After Width: | Height: | Size: 997 B |
18
src/assets/svgs/instagramicon.svg
Normal file
@ -0,0 +1,18 @@
|
||||
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_6949_751)">
|
||||
<g clip-path="url(#clip1_6949_751)">
|
||||
<path d="M22.0996 7.87509H13.2966C10.3071 7.87509 7.875 10.3036 7.875 13.2884V22.0777C7.875 25.0626 10.3071 27.491 13.2966 27.491H22.0996C25.0893 27.491 27.5214 25.0625 27.5214 22.0777V13.2884C27.5215 10.3036 25.0893 7.87509 22.0996 7.87509ZM25.7784 22.0777C25.7784 24.103 24.1281 25.7506 22.0997 25.7506H13.2966C11.2683 25.7507 9.61813 24.103 9.61813 22.0777V13.2884C9.61813 11.2632 11.2683 9.61551 13.2966 9.61551H22.0996C24.128 9.61551 25.7783 11.2632 25.7783 13.2884V22.0777H25.7784Z" fill="#303030"/>
|
||||
<path d="M17.6981 12.6288C14.9067 12.6288 12.6357 14.8962 12.6357 17.6833C12.6357 20.4703 14.9067 22.7376 17.6981 22.7376C20.4896 22.7376 22.7605 20.4703 22.7605 17.6833C22.7605 14.8962 20.4896 12.6288 17.6981 12.6288ZM17.6981 20.9971C15.868 20.9971 14.3789 19.5105 14.3789 17.6832C14.3789 15.8558 15.8678 14.3691 17.6981 14.3691C19.5284 14.3691 21.0174 15.8558 21.0174 17.6832C21.0174 19.5105 19.5283 20.9971 17.6981 20.9971Z" fill="#303030"/>
|
||||
<path d="M22.9729 11.1531C22.637 11.1531 22.3071 11.2889 22.0699 11.5267C21.8316 11.7634 21.6946 12.0929 21.6946 12.4294C21.6946 12.7648 21.8317 13.0943 22.0699 13.3321C22.307 13.5688 22.637 13.7057 22.9729 13.7057C23.3099 13.7057 23.6387 13.5688 23.877 13.3321C24.1152 13.0943 24.2512 12.7647 24.2512 12.4294C24.2512 12.0929 24.1152 11.7634 23.877 11.5267C23.6399 11.2889 23.3099 11.1531 22.9729 11.1531Z" fill="#303030"/>
|
||||
</g>
|
||||
<circle cx="17.5" cy="17.5" r="16.5" stroke="#303030" stroke-width="2"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_6949_751">
|
||||
<rect width="35" height="35" fill="white"/>
|
||||
</clipPath>
|
||||
<clipPath id="clip1_6949_751">
|
||||
<rect width="19.6465" height="19.616" fill="white" transform="translate(7.875 7.87509)"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
After Width: | Height: | Size: 1.8 KiB |
18
src/assets/svgs/linkedinicon.svg
Normal file
@ -0,0 +1,18 @@
|
||||
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_6949_766)">
|
||||
<circle cx="17.5" cy="17.5" r="16.5" stroke="#303030" stroke-width="2"/>
|
||||
<g clip-path="url(#clip1_6949_766)">
|
||||
<path d="M13.4445 13.8592H10.298C10.1583 13.8592 10.0452 13.9724 10.0452 14.112V24.2205C10.0452 24.3602 10.1583 24.4733 10.298 24.4733H13.4445C13.5842 24.4733 13.6973 24.3602 13.6973 24.2205V14.112C13.6973 13.9724 13.5842 13.8592 13.4445 13.8592Z" fill="#303030"/>
|
||||
<path d="M11.8725 8.83395C10.7276 8.83395 9.79614 9.76438 9.79614 10.908C9.79614 12.0522 10.7276 12.9829 11.8725 12.9829C13.0165 12.9829 13.9472 12.0521 13.9472 10.908C13.9472 9.76438 13.0165 8.83395 11.8725 8.83395Z" fill="#303030"/>
|
||||
<path d="M21.4482 13.6079C20.1844 13.6079 19.2502 14.1512 18.6835 14.7685V14.112C18.6835 13.9724 18.5704 13.8592 18.4307 13.8592H15.4174C15.2777 13.8592 15.1646 13.9724 15.1646 14.112V24.2206C15.1646 24.3602 15.2777 24.4734 15.4174 24.4734H18.557C18.6967 24.4734 18.8098 24.3602 18.8098 24.2206V19.2192C18.8098 17.5338 19.2676 16.8772 20.4425 16.8772C21.722 16.8772 21.8236 17.9298 21.8236 19.3059V24.2206C21.8236 24.3603 21.9368 24.4734 22.0764 24.4734H25.2173C25.3569 24.4734 25.4701 24.3603 25.4701 24.2206V18.6759C25.4701 16.1698 24.9922 13.6079 21.4482 13.6079Z" fill="#303030"/>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_6949_766">
|
||||
<rect width="35" height="35" fill="white"/>
|
||||
</clipPath>
|
||||
<clipPath id="clip1_6949_766">
|
||||
<rect width="15.6739" height="15.6739" fill="white" transform="translate(9.79614 8.81671)"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
After Width: | Height: | Size: 1.5 KiB |
3
src/assets/svgs/seta-para-cima.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg width="25" height="13" viewBox="0 0 25 13" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M23.7428 11.3959C23.741 11.6959 23.6177 11.9953 23.373 12.226L23.3728 12.2261C22.8668 12.7035 22.037 12.7035 21.5311 12.2261L21.5232 12.2345L21.5311 12.2261L12.3457 3.5599L12.0712 3.30091L11.7967 3.5599L2.61178 12.2258C2.10549 12.7033 1.27571 12.7032 0.769767 12.2259L0.769708 12.2258C0.525704 11.9957 0.402467 11.6972 0.400037 11.398C0.401876 11.0981 0.525111 10.7986 0.769782 10.5678L0.769785 10.5678L11.1506 0.773762C11.4013 0.537307 11.7333 0.415846 12.0712 0.415846C12.4093 0.415846 12.7415 0.537566 12.9922 0.773969L23.3728 10.568L23.3729 10.5681C23.6171 10.7983 23.7403 11.0968 23.7428 11.3959Z" fill="white" stroke="white" stroke-width="0.8"/>
|
||||
</svg>
|
After Width: | Height: | Size: 764 B |
3
src/assets/svgs/seta.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg width="6" height="8" viewBox="0 0 6 8" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M5.1162 3.60396L1.67632 0.164193C1.45751 -0.0547314 1.10273 -0.0547314 0.884018 0.164193C0.665288 0.382921 0.665288 0.737679 0.884018 0.95639L3.92778 4.00006L0.884106 7.04362C0.665377 7.26244 0.665377 7.61716 0.884106 7.83589C1.10284 8.0547 1.45759 8.0547 1.67641 7.83589L5.11629 4.39607C5.22566 4.28665 5.28028 4.1434 5.28028 4.00008C5.28028 3.85668 5.22555 3.71332 5.1162 3.60396Z" fill="#C4C4C4"/>
|
||||
</svg>
|
After Width: | Height: | Size: 509 B |
11
src/assets/svgs/twittericon.svg
Normal file
@ -0,0 +1,11 @@
|
||||
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_6949_758)">
|
||||
<circle cx="17.5" cy="17.5" r="16.5" stroke="#303030" stroke-width="2"/>
|
||||
<path d="M29.9914 10.1563C29.0947 10.5497 28.1392 10.8104 27.143 10.937C28.1678 10.3251 28.95 9.36358 29.3177 8.20462C28.3622 8.7743 27.3072 9.1767 26.1829 9.40126C25.2757 8.43521 23.9826 7.83688 22.5719 7.83688C19.835 7.83688 17.6316 10.0584 17.6316 12.7817C17.6316 13.1735 17.6648 13.5503 17.7462 13.909C13.6363 13.7086 9.99962 11.7388 7.5566 8.73813C7.13009 9.47812 6.87991 10.3251 6.87991 11.2369C6.87991 12.949 7.76157 14.4666 9.07577 15.3453C8.28152 15.3302 7.50235 15.0996 6.84223 14.7364C6.84223 14.7515 6.84223 14.7711 6.84223 14.7907C6.84223 17.193 8.55581 19.1884 10.8029 19.6481C10.4005 19.7581 9.96195 19.8108 9.5068 19.8108C9.19031 19.8108 8.8708 19.7928 8.57089 19.7264C9.21141 21.6842 11.029 23.1235 13.1902 23.1702C11.5082 24.4859 9.37267 25.2786 7.06076 25.2786C6.65535 25.2786 6.26652 25.2605 5.87769 25.2108C8.06751 26.623 10.6628 27.4293 13.4614 27.4293C22.5583 27.4293 27.5318 19.8937 27.5318 13.3619C27.5318 13.1434 27.5243 12.9324 27.5137 12.7229C28.4948 12.0266 29.3192 11.157 29.9914 10.1563Z" fill="#303030"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_6949_758">
|
||||
<rect width="35" height="35" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
After Width: | Height: | Size: 1.3 KiB |
11
src/assets/svgs/whatsapp.svg
Normal file
@ -0,0 +1,11 @@
|
||||
<svg width="34" height="34" viewBox="0 0 34 34" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_3715_5917)">
|
||||
<path d="M17.0042 0H16.9958C7.62238 0 0 7.6245 0 17C0 20.7188 1.1985 24.1655 3.23638 26.9641L1.11775 33.2796L7.65213 31.1908C10.3403 32.9715 13.5469 34 17.0042 34C26.3776 34 34 26.3734 34 17C34 7.62663 26.3776 0 17.0042 0Z" fill="#4CAF50"/>
|
||||
<path d="M26.8962 24.0061C26.486 25.1642 24.8583 26.1247 23.5599 26.4052C22.6717 26.5944 21.5114 26.7452 17.6057 25.126C12.6098 23.0562 9.39255 17.9796 9.1418 17.6502C8.90167 17.3209 7.12305 14.9621 7.12305 12.5226C7.12305 10.0831 8.36192 8.89524 8.8613 8.38524C9.27142 7.96661 9.9493 7.77536 10.5995 7.77536C10.8099 7.77536 10.999 7.78599 11.169 7.79449C11.6684 7.81574 11.9192 7.84549 12.2485 8.63386C12.6587 9.62199 13.6574 12.0615 13.7764 12.3122C13.8975 12.563 14.0187 12.903 13.8487 13.2324C13.6893 13.5724 13.549 13.7232 13.2983 14.0122C13.0475 14.3012 12.8095 14.5222 12.5588 14.8325C12.3293 15.1024 12.07 15.3914 12.359 15.8907C12.648 16.3795 13.6468 18.0094 15.1173 19.3184C17.0149 21.0077 18.5534 21.5475 19.1038 21.777C19.5139 21.947 20.0027 21.9066 20.3023 21.5879C20.6827 21.1777 21.1523 20.4977 21.6304 19.8284C21.9704 19.3481 22.3997 19.2886 22.8502 19.4586C23.3092 19.618 25.738 20.8186 26.2374 21.0672C26.7368 21.318 27.0662 21.437 27.1873 21.6474C27.3063 21.8577 27.3063 22.8459 26.8962 24.0061Z" fill="white"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_3715_5917">
|
||||
<rect width="34" height="34" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
After Width: | Height: | Size: 1.5 KiB |
11
src/assets/svgs/youtubeicon.svg
Normal file
@ -0,0 +1,11 @@
|
||||
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_6949_763)">
|
||||
<circle cx="17.5" cy="17.5" r="16.5" stroke="#303030" stroke-width="2"/>
|
||||
<path d="M27.8026 12.2486C27.5447 11.2896 26.7885 10.5336 25.8296 10.2754C24.0778 9.79605 17.0705 9.79605 17.0705 9.79605C17.0705 9.79605 10.0635 9.79605 8.3117 10.2572C7.37124 10.5152 6.59666 11.2897 6.33869 12.2486C5.87769 14.0003 5.87769 17.633 5.87769 17.633C5.87769 17.633 5.87769 21.284 6.33869 23.0174C6.59693 23.9763 7.35279 24.7323 8.31183 24.9905C10.0819 25.47 17.0708 25.47 17.0708 25.47C17.0708 25.47 24.0778 25.47 25.8296 25.0088C26.7887 24.7507 27.5447 23.9947 27.8029 23.0358C28.2638 21.284 28.2638 17.6515 28.2638 17.6515C28.2638 17.6515 28.2822 14.0003 27.8026 12.2486ZM14.8396 20.989V14.277L20.6665 17.633L14.8396 20.989Z" fill="#303030"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_6949_763">
|
||||
<rect width="35" height="35" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
After Width: | Height: | Size: 978 B |
19
src/atomo/SocialMediaItem.tsx
Normal file
@ -0,0 +1,19 @@
|
||||
import React from "react";
|
||||
|
||||
interface Media {
|
||||
href: string;
|
||||
src: string;
|
||||
alt: string;
|
||||
}
|
||||
|
||||
function SocialMediaItem(props: Media) {
|
||||
return (
|
||||
<li>
|
||||
<a href={props.href}>
|
||||
<img src={props.src} alt={props.alt} />
|
||||
</a>
|
||||
</li>
|
||||
);
|
||||
}
|
||||
|
||||
export { SocialMediaItem };
|
63
src/components/FooterTop.tsx
Normal file
@ -0,0 +1,63 @@
|
||||
import React from "react";
|
||||
import { DropDownItem } from "../atomo/DropDownItem";
|
||||
import { SocialMediaItem } from "../atomo/SocialMediaItem";
|
||||
import { FooterTopMobile } from "./FooterTopMobile";
|
||||
import style from "../components/footer-top.module.scss";
|
||||
|
||||
import facebook from "../assets/svgs/facebookicon.svg";
|
||||
import instagram from "../assets/svgs/instagramicon.svg";
|
||||
import twitter from "../assets/svgs/twittericon.svg";
|
||||
import youtube from "../assets/svgs/youtubeicon.svg";
|
||||
import linkedin from "../assets/svgs/linkedinicon.svg";
|
||||
|
||||
const FooterTop = () => {
|
||||
return (
|
||||
<footer className={style["footer-container"]}>
|
||||
<div className={style["footer-wrapper"]}>
|
||||
<FooterTopMobile />
|
||||
<section className={style["footer-list-wrapper"]}>
|
||||
<ul className={style["footer-list"]}>
|
||||
<h3>Institucional</h3>
|
||||
<DropDownItem href={"/"} text={"Quem Somos"} />
|
||||
<DropDownItem href={"/"} text={"Política de Privacidade"} />
|
||||
<DropDownItem href={"/"} text={"Segurança"} />
|
||||
<DropDownItem href={"/"} text={"Seja um Revendedor"} />
|
||||
</ul>
|
||||
|
||||
<ul className={style["footer-list"]}>
|
||||
<h3>dÚVIDAS</h3>
|
||||
<DropDownItem href={"/"} text={"Entrega"} />
|
||||
<DropDownItem href={"/"} text={"Pagamento"} />
|
||||
<DropDownItem href={"/"} text={"Trocas e Devoluções"} />
|
||||
<DropDownItem href={"/"} text={"Dúvidas Frequentes"} />
|
||||
</ul>
|
||||
|
||||
<ul className={style["footer-list"]}>
|
||||
<h3>FALE CONOSCO</h3>
|
||||
<h4>
|
||||
Atendimento ao <br />
|
||||
Consumidor
|
||||
</h4>
|
||||
<DropDownItem href={"/"} text={"(11) 4159-9504"} />
|
||||
<h4>Atendimento Online</h4>
|
||||
<DropDownItem href={"/"} text={"(11) 99433-8825"} />
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<div className={style["footer-social-media-container"]}>
|
||||
<ul className={style["footer-social-media-wrapper"]}>
|
||||
<SocialMediaItem href={"/"} src={facebook} alt={"Facebook"} />
|
||||
<SocialMediaItem href={"/"} src={instagram} alt={"Instagram"} />
|
||||
<SocialMediaItem href={"/"} src={twitter} alt={"Twitter"} />
|
||||
<SocialMediaItem href={"/"} src={youtube} alt={"Youtube"} />
|
||||
<SocialMediaItem href={"/"} src={linkedin} alt={"LinkedIn"} />
|
||||
</ul>
|
||||
|
||||
<a href="/">www.loremipsum.com</a>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
);
|
||||
};
|
||||
|
||||
export { FooterTop };
|
62
src/components/FooterTopMobile.tsx
Normal file
@ -0,0 +1,62 @@
|
||||
import React from "react";
|
||||
import {
|
||||
Accordion,
|
||||
AccordionBody,
|
||||
AccordionHeader,
|
||||
AccordionItem,
|
||||
} from "react-headless-accordion";
|
||||
import style from "../components/footer-top.module.scss";
|
||||
// import { DropDownItem } from "../atomo/DropDownItem";
|
||||
|
||||
const FooterTopMobile = () => {
|
||||
return (
|
||||
<Accordion className={style["footer-accordion"]}>
|
||||
<AccordionItem>
|
||||
<AccordionHeader className={style["footer-button"]}>
|
||||
<h3>Institucional</h3>
|
||||
</AccordionHeader>
|
||||
|
||||
<AccordionBody className={style["footer-list-accordion"]}>
|
||||
<div className={style["footer-list-item"]}>
|
||||
<a href="/">Quem Somos</a>
|
||||
<a href="/">Política de Privacidade</a>
|
||||
<a href="/">Segurança</a>
|
||||
<a href="/">Seja um Revendedor</a>
|
||||
</div>
|
||||
</AccordionBody>
|
||||
</AccordionItem>
|
||||
|
||||
<AccordionItem>
|
||||
<AccordionHeader className={style["footer-button"]}>
|
||||
<h3>Dúvidas</h3>
|
||||
</AccordionHeader>
|
||||
|
||||
<AccordionBody className={style["footer-list-accordion"]}>
|
||||
<div className={style["footer-list-item"]}>
|
||||
<a href="/">Entrega</a>
|
||||
<a href="/">Pagamento</a>
|
||||
<a href="/">Trocas e Devoluções</a>
|
||||
<a href="/">Dúvidas Frequentes</a>
|
||||
</div>
|
||||
</AccordionBody>
|
||||
</AccordionItem>
|
||||
|
||||
<AccordionItem>
|
||||
<AccordionHeader className={style["footer-button"]}>
|
||||
<h3>Fale Conosco</h3>
|
||||
</AccordionHeader>
|
||||
|
||||
<AccordionBody className={style["footer-list-accordion"]}>
|
||||
<div className={style["footer-list-item"]}>
|
||||
<h4>Atendimento ao Consumidor</h4>
|
||||
<a href="/">(11) 4159-9504</a>
|
||||
<h4>Atendimento Online</h4>
|
||||
<a href="/">(11) 99433-8825</a>
|
||||
</div>
|
||||
</AccordionBody>
|
||||
</AccordionItem>
|
||||
</Accordion>
|
||||
);
|
||||
};
|
||||
|
||||
export { FooterTopMobile };
|
73
src/components/MainContent.tsx
Normal file
@ -0,0 +1,73 @@
|
||||
import React from "react";
|
||||
import { BrowserRouter as Router, Route, Routes } from "react-router-dom";
|
||||
|
||||
import style from "./main-content.module.scss";
|
||||
|
||||
import { Sobre } from "../components/main/components/Sobre";
|
||||
import { FormasDePagamento } from "../components/main/components/FormasDePagamento";
|
||||
import { Entrega } from "../components/main/components/Entrega";
|
||||
import { TrocaEDevolucao } from "../components/main/components/TrocaEDevolucao";
|
||||
import { SegurancaEPrivacidade } from "../components/main/components/SegurancaEPrivacidade";
|
||||
import { Contato } from "../components/main/components/Contato";
|
||||
|
||||
import home from "../assets/svgs/home.svg";
|
||||
import seta from "../assets/svgs/seta.svg";
|
||||
import whats from "../assets/svgs/whatsapp.svg";
|
||||
import setaCima from "../assets/svgs/seta-para-cima.svg";
|
||||
|
||||
const MainContent = () => {
|
||||
return (
|
||||
<main className={style["main-content-container"]}>
|
||||
<section className={style["main-content-top-container"]}>
|
||||
<div className={style["main-content-bread-wrapper"]}>
|
||||
<a href="/">
|
||||
<img src={home} alt="Home" />
|
||||
</a>
|
||||
|
||||
<figure>
|
||||
<img src={seta} alt="Seta" />
|
||||
</figure>
|
||||
<span>institucional</span>
|
||||
</div>
|
||||
<div className={style["main-content-title-wrapper"]}>
|
||||
<h1>institucional</h1>
|
||||
</div>
|
||||
</section>
|
||||
<Router>
|
||||
<Routes>
|
||||
<Route path="/" element={<Sobre />} />
|
||||
<Route path="/sobre" element={<Sobre />} />
|
||||
<Route path="/forma-de-pagamento" element={<FormasDePagamento />} />
|
||||
<Route path="/entrega" element={<Entrega />} />
|
||||
<Route path="/troca-e-devolucao" element={<TrocaEDevolucao />} />
|
||||
<Route
|
||||
path="/seguranca-e-privacidade"
|
||||
element={<SegurancaEPrivacidade />}
|
||||
/>
|
||||
<Route path="/contato" element={<Contato />} />
|
||||
</Routes>
|
||||
</Router>
|
||||
|
||||
<a
|
||||
className={style["main-link-topButton"]}
|
||||
href="https://api.whatsapp.com/send/?phone=%2B5522997240484&text&type=phone_number&app_absent=0"
|
||||
target="_blank"
|
||||
>
|
||||
<img
|
||||
className={style["main-whatssap-link"]}
|
||||
src={whats}
|
||||
alt="Whatsapp"
|
||||
/>
|
||||
</a>
|
||||
<a className={style["main-link-topButton"]} href="#">
|
||||
<img
|
||||
className={style["main-content-backToTop"]}
|
||||
src={setaCima}
|
||||
alt="Volte ao Topo"
|
||||
/>
|
||||
</a>
|
||||
</main>
|
||||
);
|
||||
};
|
||||
|
||||
export { MainContent };
|
60
src/components/Newsletter.tsx
Normal file
@ -0,0 +1,60 @@
|
||||
import React from "react";
|
||||
import { Formik, Form, Field, ErrorMessage, FormikHelpers } from "formik";
|
||||
import style from "./newsletter.module.scss";
|
||||
import NewsletterSchema from "../schema/NewsletterSchema";
|
||||
|
||||
interface INewsletter {
|
||||
newsletter: string;
|
||||
}
|
||||
|
||||
const initialValues = {
|
||||
newsletter: "",
|
||||
};
|
||||
|
||||
const Newsletter = () => {
|
||||
const handleSubmit = (values: INewsletter) => {
|
||||
console.log(values);
|
||||
};
|
||||
return (
|
||||
<section className={style["newsletter-container"]}>
|
||||
<div className={style["newsletter-wrapper"]}>
|
||||
<h2 className={style["newsletter-title"]}>Assine nossa Newsletter</h2>
|
||||
|
||||
<Formik
|
||||
onSubmit={handleSubmit}
|
||||
initialValues={initialValues}
|
||||
validationSchema={NewsletterSchema}
|
||||
>
|
||||
{({ errors, touched }) => (
|
||||
<Form className={style["newsletter-form"]}>
|
||||
<div className={style["newsletter-form-wrapper"]}>
|
||||
<div className={style["newsletter-input"]}>
|
||||
<Field
|
||||
id="newsletter"
|
||||
name="newsletter"
|
||||
placeholder="E-mail"
|
||||
/>
|
||||
<ErrorMessage
|
||||
component="span"
|
||||
name="newsletter"
|
||||
className={
|
||||
errors.newsletter && touched.newsletter
|
||||
? style["form-feedback"]
|
||||
: ""
|
||||
}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<button className={style["newsletter-button"]} type="submit">
|
||||
ENVIAR
|
||||
</button>
|
||||
</div>
|
||||
</Form>
|
||||
)}
|
||||
</Formik>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
};
|
||||
|
||||
export { Newsletter };
|
@ -5,6 +5,14 @@
|
||||
height: 64px;
|
||||
background: variables.$color-black;
|
||||
|
||||
@media screen and (min-width: 2500px) {
|
||||
height: 96px;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1024px) {
|
||||
height: 134px;
|
||||
}
|
||||
|
||||
.footer-wrapper {
|
||||
width: 80.46875%;
|
||||
padding: 20px 0;
|
||||
@ -14,14 +22,34 @@
|
||||
justify-content: space-between;
|
||||
margin: 0 auto;
|
||||
|
||||
@media screen and (max-width: 1024px) {
|
||||
width: 100%;
|
||||
padding: 15px 16px;
|
||||
gap: 15px;
|
||||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
justify-content: flex-start;
|
||||
}
|
||||
|
||||
.footer-text {
|
||||
width: 25%;
|
||||
display: flex;
|
||||
|
||||
font-weight: 400;
|
||||
font-size: 10px;
|
||||
line-height: 12px;
|
||||
text-transform: capitalize;
|
||||
color: variables.$color-white;
|
||||
|
||||
@media screen and (min-width: 2500px) {
|
||||
font-size: 20px;
|
||||
line-height: 23px;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1024px) {
|
||||
order: 1;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.footer-creditcards {
|
||||
@ -32,11 +60,28 @@
|
||||
|
||||
width: 45%;
|
||||
|
||||
@media screen and (max-width: 1024px) {
|
||||
justify-content: flex-start;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.creditcard {
|
||||
@media screen and (min-width: 2500px) {
|
||||
height: 40px;
|
||||
}
|
||||
}
|
||||
|
||||
.footer-line {
|
||||
width: 24px;
|
||||
border: 1px solid variables.$color-grey;
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
|
||||
.vtex-certified {
|
||||
@media screen and (min-width: 2500px) {
|
||||
height: 66px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.footer-copyright {
|
||||
@ -46,12 +91,32 @@
|
||||
justify-content: flex-end;
|
||||
gap: 13px;
|
||||
|
||||
@media screen and (max-width: 1024px) {
|
||||
justify-content: flex-start;
|
||||
order: 2;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
a {
|
||||
img {
|
||||
@media screen and (min-width: 2500px) {
|
||||
height: 30px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
span {
|
||||
font-weight: 400;
|
||||
font-size: 10px;
|
||||
line-height: 12px;
|
||||
text-transform: capitalize;
|
||||
white-space: nowrap;
|
||||
color: variables.$color-white;
|
||||
|
||||
@media screen and (min-width: 2500px) {
|
||||
font-size: 20px;
|
||||
line-height: 23px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
188
src/components/footer-top.module.scss
Normal file
@ -0,0 +1,188 @@
|
||||
@use "../variables.module.scss";
|
||||
|
||||
.footer-container {
|
||||
width: 100%;
|
||||
height: 239px;
|
||||
background: variables.$color-white;
|
||||
border-top: 1px solid variables.$color-black;
|
||||
|
||||
display: flex;
|
||||
position: relative;
|
||||
|
||||
@media screen and (min-width: 2500px) {
|
||||
height: 297px;
|
||||
}
|
||||
|
||||
.footer-wrapper {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding: 50px 0;
|
||||
margin: 0 auto;
|
||||
width: 80.46875%;
|
||||
|
||||
//mobile
|
||||
@media screen and (max-width: 1024px) {
|
||||
width: 100%;
|
||||
flex-direction: column;
|
||||
padding: 24px 16px;
|
||||
}
|
||||
|
||||
.footer-accordion {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
justify-content: space-between;
|
||||
z-index: 5;
|
||||
width: 100%;
|
||||
|
||||
@media screen and (min-width: 1025px) {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.footer-button {
|
||||
outline: 0;
|
||||
border: 0;
|
||||
background: variables.$color-white;
|
||||
width: 100%;
|
||||
padding: 12px 0;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
|
||||
&::after {
|
||||
content: "+";
|
||||
font-weight: 500;
|
||||
font-size: 14px;
|
||||
line-height: 16px;
|
||||
color: variables.$color-black3;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-weight: 500;
|
||||
font-size: 14px;
|
||||
line-height: 16px;
|
||||
text-transform: capitalize;
|
||||
|
||||
color: variables.$color-black3;
|
||||
}
|
||||
}
|
||||
|
||||
.footer-list-accordion {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.footer-list-item {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
background: variables.$color-white;
|
||||
width: 100%;
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
font-weight: 400;
|
||||
font-size: 14px;
|
||||
line-height: 16px;
|
||||
text-transform: capitalize;
|
||||
margin-top: 6px;
|
||||
color: variables.$color-grey;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//desktop
|
||||
|
||||
.footer-list-wrapper {
|
||||
display: flex;
|
||||
gap: 121px;
|
||||
|
||||
@media screen and (min-width: 2500px) {
|
||||
gap: 293px;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1024px) {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.footer-list {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 12px;
|
||||
|
||||
h3 {
|
||||
font-weight: 500;
|
||||
font-size: 14px;
|
||||
line-height: 16px;
|
||||
text-transform: uppercase;
|
||||
color: variables.$color-black3;
|
||||
|
||||
@media screen and (min-width: 2500px) {
|
||||
font-size: 28px;
|
||||
line-height: 33px;
|
||||
}
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-weight: 500;
|
||||
font-size: 12px;
|
||||
line-height: 14px;
|
||||
text-transform: capitalize;
|
||||
color: variables.$color-black3;
|
||||
|
||||
@media screen and (min-width: 2500px) {
|
||||
font-size: 24px;
|
||||
line-height: 28px;
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
font-weight: 400;
|
||||
font-size: 12px;
|
||||
line-height: 14px;
|
||||
text-transform: capitalize;
|
||||
text-decoration: none;
|
||||
color: variables.$color-black3;
|
||||
|
||||
@media screen and (min-width: 2500px) {
|
||||
font-size: 24px;
|
||||
line-height: 28px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.footer-social-media-container {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 12px;
|
||||
z-index: 1;
|
||||
|
||||
@media screen and (max-width: 1024px) {
|
||||
position: absolute;
|
||||
bottom: 20px;
|
||||
}
|
||||
|
||||
.footer-social-media-wrapper {
|
||||
display: flex;
|
||||
gap: 10px;
|
||||
|
||||
img {
|
||||
@media screen and (min-width: 2500px) {
|
||||
height: 70px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
font-weight: 400;
|
||||
font-size: 14px;
|
||||
line-height: 16px;
|
||||
text-decoration: none;
|
||||
color: variables.$color-black3;
|
||||
|
||||
@media screen and (min-width: 2500px) {
|
||||
font-size: 28px;
|
||||
line-height: 33px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -41,6 +41,10 @@
|
||||
border: 0;
|
||||
font-size: 0;
|
||||
width: 0;
|
||||
|
||||
img {
|
||||
width: auto;
|
||||
}
|
||||
}
|
||||
|
||||
.dropdown-menu {
|
||||
|
229
src/components/main-content.module.scss
Normal file
@ -0,0 +1,229 @@
|
||||
@use "../variables.module.scss";
|
||||
|
||||
.main-content-container {
|
||||
width: 100%;
|
||||
background: variables.$color-white;
|
||||
padding: 29px 0 40px 0;
|
||||
|
||||
.main-content-top-container {
|
||||
width: 80.46875%;
|
||||
margin: 0 auto;
|
||||
|
||||
@media screen and (max-width: 1024px) {
|
||||
width: 100%;
|
||||
padding: 0 16px;
|
||||
}
|
||||
|
||||
.main-content-bread-wrapper {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 9.73px;
|
||||
|
||||
a {
|
||||
img {
|
||||
width: 100%;
|
||||
height: 16px;
|
||||
|
||||
@media screen and (min-width: 2500px) {
|
||||
height: 31.25px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
figure {
|
||||
img {
|
||||
width: 100%;
|
||||
height: 8px;
|
||||
|
||||
@media screen and (min-width: 2500px) {
|
||||
height: 15.62px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
span {
|
||||
font-weight: 400;
|
||||
font-size: 12px;
|
||||
line-height: 14px;
|
||||
color: variables.$color-grey;
|
||||
text-transform: uppercase;
|
||||
|
||||
@media screen and (min-width: 2500px) {
|
||||
font-weight: 400;
|
||||
font-size: 24px;
|
||||
line-height: 28px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.main-content-title-wrapper {
|
||||
text-align: center;
|
||||
padding: 80px 0;
|
||||
|
||||
h1 {
|
||||
font-weight: 400;
|
||||
font-size: 24px;
|
||||
line-height: 28px;
|
||||
letter-spacing: 0.1em;
|
||||
text-transform: uppercase;
|
||||
color: variables.$color-black2;
|
||||
|
||||
@media screen and (min-width: 2500px) {
|
||||
font-size: 48px;
|
||||
line-height: 56px;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1024px) {
|
||||
padding: 80px 0 40px 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.main-content-wrapper {
|
||||
width: 80.46875%;
|
||||
display: flex;
|
||||
margin: 0 auto;
|
||||
|
||||
@media screen and (max-width: 1024px) {
|
||||
width: 100%;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.main-content-list {
|
||||
width: 29.32038%;
|
||||
height: 285px;
|
||||
border-right: 1px solid variables.$color-black;
|
||||
|
||||
@media screen and (max-width: 1024px) {
|
||||
width: 100%;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.main-content-item {
|
||||
padding: 5px 0 5px 16px;
|
||||
|
||||
@media screen and (max-width: 1024px) {
|
||||
padding: 10px 16px;
|
||||
}
|
||||
|
||||
a {
|
||||
font-weight: 400;
|
||||
font-size: 16px;
|
||||
line-height: 19px;
|
||||
color: variables.$color-grey3;
|
||||
text-decoration: none;
|
||||
|
||||
@media screen and (min-width: 2500px) {
|
||||
font-size: 32px;
|
||||
line-height: 38px;
|
||||
}
|
||||
}
|
||||
|
||||
.selected {
|
||||
display: flex;
|
||||
padding: 10px 16px;
|
||||
background: variables.$color-black;
|
||||
color: variables.$color-white;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.main-content-text {
|
||||
width: 72.62135%;
|
||||
|
||||
@media screen and (max-width: 1024px) {
|
||||
width: 100%;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.main-content-text-wrapper {
|
||||
margin-left: 30px;
|
||||
|
||||
@media screen and (max-width: 1024px) {
|
||||
margin-left: 0;
|
||||
padding: 0 16px;
|
||||
}
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-weight: 700;
|
||||
font-size: 24px;
|
||||
line-height: 28px;
|
||||
color: variables.$color-black2;
|
||||
margin-bottom: 12px;
|
||||
|
||||
@media screen and (min-width: 2500px) {
|
||||
font-size: 48px;
|
||||
line-height: 56px;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1024px) {
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
p {
|
||||
font-weight: 400;
|
||||
font-size: 13px;
|
||||
line-height: 15px;
|
||||
color: variables.$color-grey3;
|
||||
margin-bottom: 12px;
|
||||
|
||||
@media screen and (min-width: 2500px) {
|
||||
font-size: 26px;
|
||||
line-height: 30px;
|
||||
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.main-link-topButton {
|
||||
img {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.main-whatssap-link,
|
||||
.main-content-backToTop {
|
||||
position: fixed;
|
||||
z-index: 6;
|
||||
right: 16px;
|
||||
}
|
||||
|
||||
.main-whatssap-link {
|
||||
bottom: 220px;
|
||||
|
||||
@media screen and (min-width: 2500px) {
|
||||
height: 66px;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1024px) {
|
||||
bottom: 90px;
|
||||
}
|
||||
}
|
||||
|
||||
.main-content-backToTop {
|
||||
background: variables.$color-grey;
|
||||
padding: 13px 10px;
|
||||
border-radius: 50%;
|
||||
width: 34px;
|
||||
height: 34px;
|
||||
|
||||
bottom: 180px;
|
||||
|
||||
@media screen and (min-width: 2500px) {
|
||||
width: 66px;
|
||||
height: 66px;
|
||||
padding: 25px 20px;
|
||||
|
||||
bottom: 150px;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1024px) {
|
||||
bottom: 50px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
21
src/components/main/components/Contato.tsx
Normal file
@ -0,0 +1,21 @@
|
||||
import React from "react";
|
||||
import { MainMenu } from "./MainMenu";
|
||||
import { MainForm } from "./MainForm";
|
||||
|
||||
import style from "../../main-content.module.scss";
|
||||
|
||||
const Contato = () => {
|
||||
return (
|
||||
<section className={style["main-content-wrapper"]}>
|
||||
<MainMenu />
|
||||
<div className={style["main-content-text"]}>
|
||||
<div className={style["main-content-text-wrapper"]}>
|
||||
<h2>Preencha o formulário</h2>
|
||||
<MainForm />
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
};
|
||||
|
||||
export { Contato };
|
46
src/components/main/components/Entrega.tsx
Normal file
@ -0,0 +1,46 @@
|
||||
import React from "react";
|
||||
import { MainMenu } from "./MainMenu";
|
||||
|
||||
import style from "../../main-content.module.scss";
|
||||
|
||||
const Entrega = () => {
|
||||
return (
|
||||
<section className={style["main-content-wrapper"]}>
|
||||
<MainMenu />
|
||||
<div className={style["main-content-text"]}>
|
||||
<div className={style["main-content-text-wrapper"]}>
|
||||
<h2>Entrega</h2>
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
<p>
|
||||
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>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
};
|
||||
|
||||
export { Entrega };
|
46
src/components/main/components/FormasDePagamento.tsx
Normal file
@ -0,0 +1,46 @@
|
||||
import React from "react";
|
||||
import { MainMenu } from "./MainMenu";
|
||||
|
||||
import style from "../../main-content.module.scss";
|
||||
|
||||
const FormasDePagamento = () => {
|
||||
return (
|
||||
<section className={style["main-content-wrapper"]}>
|
||||
<MainMenu />
|
||||
<div className={style["main-content-text"]}>
|
||||
<div className={style["main-content-text-wrapper"]}>
|
||||
<h2>Formas de Pagamento</h2>
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
<p>
|
||||
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>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
};
|
||||
|
||||
export { FormasDePagamento };
|
136
src/components/main/components/MainForm.tsx
Normal file
@ -0,0 +1,136 @@
|
||||
import React from "react";
|
||||
import { Field, Form, Formik, ErrorMessage } from "formik";
|
||||
|
||||
import style from "../../main/components/main-form.module.scss";
|
||||
import FormMainSchema from "../../../schema/FormMainSchema";
|
||||
|
||||
interface IFormMain {
|
||||
name: string;
|
||||
email: string;
|
||||
cpf: string;
|
||||
nowDate: string;
|
||||
tel: string;
|
||||
inst: string;
|
||||
check: boolean;
|
||||
}
|
||||
|
||||
const initialValues = {
|
||||
name: "",
|
||||
email: "",
|
||||
cpf: "",
|
||||
nowDate: "",
|
||||
tel: "",
|
||||
inst: "",
|
||||
check: false,
|
||||
};
|
||||
|
||||
const MainForm = () => {
|
||||
return (
|
||||
<section className={style["main-form-container"]}>
|
||||
<Formik
|
||||
onSubmit={(values: IFormMain, { resetForm }) => {
|
||||
console.log(values);
|
||||
resetForm();
|
||||
console.log("blah");
|
||||
}}
|
||||
initialValues={initialValues}
|
||||
validationSchema={FormMainSchema}
|
||||
>
|
||||
{({ errors, touched, isSubmitting }) => (
|
||||
<Form className={style["main-form"]}>
|
||||
<div className={style["main-form-item-wrapper"]}>
|
||||
<label htmlFor="name">Nome</label>
|
||||
<Field id="name" name="name" placeholder="Seu nome completo" />
|
||||
<ErrorMessage
|
||||
component="span"
|
||||
name="name"
|
||||
className={errors.name && touched ? style["form-feedback"] : ""}
|
||||
/>
|
||||
</div>
|
||||
<div className={style["main-form-item-wrapper"]}>
|
||||
<label htmlFor="email">E-mail</label>
|
||||
<Field id="email" name="email" placeholder="Seu e-mail" />
|
||||
<ErrorMessage
|
||||
component="span"
|
||||
name="email"
|
||||
className={
|
||||
errors.email && touched ? style["form-feedback"] : ""
|
||||
}
|
||||
/>
|
||||
</div>
|
||||
<div className={style["main-form-item-wrapper"]}>
|
||||
<label htmlFor="cpf">CPF</label>
|
||||
<Field id="cpf" name="cpf" placeholder="000.000.000-00" />
|
||||
<ErrorMessage
|
||||
component="span"
|
||||
name="cpf"
|
||||
className={errors.cpf && touched ? style["form-feedback"] : ""}
|
||||
/>
|
||||
</div>
|
||||
<div className={style["main-form-item-wrapper"]}>
|
||||
<label htmlFor="nowDate">Data de Nascimento:</label>
|
||||
<Field
|
||||
type="date"
|
||||
id="nowDate"
|
||||
name="nowDate"
|
||||
placeholder="00.00.0000"
|
||||
/>
|
||||
<ErrorMessage
|
||||
component="span"
|
||||
name="date"
|
||||
className={
|
||||
errors.nowDate && touched ? style["form-feedback"] : ""
|
||||
}
|
||||
/>
|
||||
</div>
|
||||
<div className={style["main-form-item-wrapper"]}>
|
||||
<label htmlFor="tel">Telefone:</label>
|
||||
<Field id="tel" name="tel" placeholder="(00) 00000-0000" />
|
||||
<ErrorMessage
|
||||
component="span"
|
||||
name="tel"
|
||||
className={errors.tel && touched ? style["form-feedback"] : ""}
|
||||
/>
|
||||
</div>
|
||||
<div className={style["main-form-item-wrapper"]}>
|
||||
<label htmlFor="inst">Instagram</label>
|
||||
<Field id="inst" name="inst" placeholder="@seuuser" />
|
||||
<ErrorMessage
|
||||
component="span"
|
||||
name="inst"
|
||||
className={errors.inst && touched ? style["form-feedback"] : ""}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className={style["main-form-checkbox"]}>
|
||||
<label htmlFor="check">
|
||||
<span className={style["main-form-dot"]}>* </span>
|
||||
<span className={style["main-form-span"]}>
|
||||
Declaro que li e aceito
|
||||
</span>
|
||||
<Field type="checkbox" id="check" name="check" />
|
||||
<ErrorMessage
|
||||
component="span"
|
||||
name="check"
|
||||
className={
|
||||
errors.check && touched ? style["form-feedback"] : ""
|
||||
}
|
||||
/>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<button
|
||||
className={style["main-form-button"]}
|
||||
type="submit"
|
||||
disabled={isSubmitting}
|
||||
>
|
||||
CADASTRE-SE
|
||||
</button>
|
||||
</Form>
|
||||
)}
|
||||
</Formik>
|
||||
</section>
|
||||
);
|
||||
};
|
||||
|
||||
export { MainForm };
|
79
src/components/main/components/MainMenu.tsx
Normal file
@ -0,0 +1,79 @@
|
||||
import React from "react";
|
||||
import { NavLink } from "react-router-dom";
|
||||
import classnames from "classnames";
|
||||
|
||||
import style from "../../main-content.module.scss";
|
||||
|
||||
const MainMenu = () => {
|
||||
const activeClassName = style["selected"];
|
||||
return (
|
||||
<div className={style["main-content-list"]}>
|
||||
<nav>
|
||||
<ul className={style["teste"]}>
|
||||
<li className={classnames(style["main-content-item"])}>
|
||||
<NavLink
|
||||
to="/sobre"
|
||||
className={({ isActive }) =>
|
||||
isActive ? activeClassName : undefined
|
||||
}
|
||||
>
|
||||
Sobre
|
||||
</NavLink>
|
||||
</li>
|
||||
<li className={classnames(style["main-content-item"])}>
|
||||
<NavLink
|
||||
to="/forma-de-pagamento"
|
||||
className={({ isActive }) =>
|
||||
isActive ? activeClassName : undefined
|
||||
}
|
||||
>
|
||||
Forma de Pagamento
|
||||
</NavLink>
|
||||
</li>
|
||||
<li className={classnames(style["main-content-item"])}>
|
||||
<NavLink
|
||||
to="/entrega"
|
||||
className={({ isActive }) =>
|
||||
isActive ? activeClassName : undefined
|
||||
}
|
||||
>
|
||||
Entrega
|
||||
</NavLink>
|
||||
</li>
|
||||
<li className={classnames(style["main-content-item"])}>
|
||||
<NavLink
|
||||
to="/troca-e-devolucao"
|
||||
className={({ isActive }) =>
|
||||
isActive ? activeClassName : undefined
|
||||
}
|
||||
>
|
||||
Troca e Devolução
|
||||
</NavLink>
|
||||
</li>
|
||||
<li className={classnames(style["main-content-item"])}>
|
||||
<NavLink
|
||||
to="/seguranca-e-privacidade"
|
||||
className={({ isActive }) =>
|
||||
isActive ? activeClassName : undefined
|
||||
}
|
||||
>
|
||||
Segurança e Privacidade
|
||||
</NavLink>
|
||||
</li>
|
||||
<li className={classnames(style["main-content-item"])}>
|
||||
<NavLink
|
||||
to="/contato"
|
||||
className={({ isActive }) =>
|
||||
isActive ? activeClassName : undefined
|
||||
}
|
||||
>
|
||||
Contato
|
||||
</NavLink>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export { MainMenu };
|
46
src/components/main/components/SegurancaEPrivacidade.tsx
Normal file
@ -0,0 +1,46 @@
|
||||
import React from "react";
|
||||
import { MainMenu } from "./MainMenu";
|
||||
|
||||
import style from "../../main-content.module.scss";
|
||||
|
||||
const SegurancaEPrivacidade = () => {
|
||||
return (
|
||||
<section className={style["main-content-wrapper"]}>
|
||||
<MainMenu />
|
||||
<div className={style["main-content-text"]}>
|
||||
<div className={style["main-content-text-wrapper"]}>
|
||||
<h2>Segurança e Privacidade</h2>
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
<p>
|
||||
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>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
};
|
||||
|
||||
export { SegurancaEPrivacidade };
|
46
src/components/main/components/Sobre.tsx
Normal file
@ -0,0 +1,46 @@
|
||||
import React from "react";
|
||||
import { MainMenu } from "./MainMenu";
|
||||
|
||||
import style from "../../main-content.module.scss";
|
||||
|
||||
const Sobre = () => {
|
||||
return (
|
||||
<section className={style["main-content-wrapper"]}>
|
||||
<MainMenu />
|
||||
<div className={style["main-content-text"]}>
|
||||
<div className={style["main-content-text-wrapper"]}>
|
||||
<h2>Sobre</h2>
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
<p>
|
||||
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>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
};
|
||||
|
||||
export { Sobre };
|
46
src/components/main/components/TrocaEDevolucao.tsx
Normal file
@ -0,0 +1,46 @@
|
||||
import React from "react";
|
||||
import { MainMenu } from "./MainMenu";
|
||||
|
||||
import style from "../../main-content.module.scss";
|
||||
|
||||
const TrocaEDevolucao = () => {
|
||||
return (
|
||||
<section className={style["main-content-wrapper"]}>
|
||||
<MainMenu />
|
||||
<div className={style["main-content-text"]}>
|
||||
<div className={style["main-content-text-wrapper"]}>
|
||||
<h2>Troca e Devolução</h2>
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
<p>
|
||||
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>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
};
|
||||
|
||||
export { TrocaEDevolucao };
|
167
src/components/main/components/main-form.module.scss
Normal file
@ -0,0 +1,167 @@
|
||||
@use "../../../variables.module.scss";
|
||||
|
||||
.main-form-container {
|
||||
width: 100%;
|
||||
height: 650px;
|
||||
|
||||
@media screen and (min-width: 2500px) {
|
||||
height: 900px;
|
||||
}
|
||||
|
||||
.main-form {
|
||||
width: 100%;
|
||||
height: 600px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
.main-form-item-wrapper {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
position: relative;
|
||||
|
||||
label {
|
||||
font-weight: 400;
|
||||
font-size: 14px;
|
||||
line-height: 16px;
|
||||
color: variables.$color-black4;
|
||||
|
||||
margin-left: 15px;
|
||||
margin-bottom: 12px;
|
||||
|
||||
@media screen and (min-width: 2500px) {
|
||||
font-size: 28px;
|
||||
line-height: 33px;
|
||||
}
|
||||
}
|
||||
|
||||
input {
|
||||
padding: 15px 20px;
|
||||
border: 1px solid variables.$color-black4;
|
||||
border-radius: 25px;
|
||||
|
||||
margin-bottom: 12px;
|
||||
|
||||
@media screen and (min-width: 2500px) {
|
||||
font-size: 28px;
|
||||
line-height: 33px;
|
||||
}
|
||||
}
|
||||
|
||||
input::placeholder {
|
||||
font-weight: 400;
|
||||
font-size: 14px;
|
||||
line-height: 16px;
|
||||
color: variables.$color-grey6;
|
||||
|
||||
@media screen and (min-width: 2500px) {
|
||||
font-size: 28px;
|
||||
line-height: 33px;
|
||||
}
|
||||
}
|
||||
|
||||
.form-feedback {
|
||||
position: absolute;
|
||||
right: 20px;
|
||||
bottom: 60px;
|
||||
font-weight: 400;
|
||||
font-size: 12px;
|
||||
line-height: 14px;
|
||||
color: variables.$color-red;
|
||||
|
||||
@media screen and (min-width: 2500px) {
|
||||
font-size: 24px;
|
||||
line-height: 28px;
|
||||
|
||||
bottom: 80px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.main-form-checkbox {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-bottom: 12px;
|
||||
margin-top: 12px;
|
||||
|
||||
label {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
input {
|
||||
margin-left: 4.28px;
|
||||
|
||||
@media screen and (min-width: 2500px) {
|
||||
width: 35.15px;
|
||||
height: 35.15px;
|
||||
}
|
||||
}
|
||||
|
||||
.main-form-dot,
|
||||
.main-form-span {
|
||||
font-weight: 400;
|
||||
font-size: 14px;
|
||||
line-height: 16px;
|
||||
|
||||
@media screen and (min-width: 2500px) {
|
||||
font-size: 28px;
|
||||
line-height: 33px;
|
||||
}
|
||||
}
|
||||
|
||||
.main-form-dot {
|
||||
color: variables.$color-red;
|
||||
}
|
||||
|
||||
.main-form-span {
|
||||
color: variables.$color-black4;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.form-feedback {
|
||||
position: absolute;
|
||||
right: 18%;
|
||||
font-weight: 400;
|
||||
font-size: 12px;
|
||||
line-height: 14px;
|
||||
color: variables.$color-red;
|
||||
|
||||
@media screen and (min-width: 2500px) {
|
||||
font-size: 24px;
|
||||
line-height: 28px;
|
||||
|
||||
right: 15%;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 360px) {
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.main-form-button {
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-size: 16px;
|
||||
line-height: 19px;
|
||||
letter-spacing: 0.05em;
|
||||
color: variables.$color-white;
|
||||
|
||||
outline: 0;
|
||||
border: 0;
|
||||
padding: 17px 0;
|
||||
|
||||
background: variables.$color-black;
|
||||
border-radius: 25px;
|
||||
|
||||
@media screen and (min-width: 2500px) {
|
||||
font-size: 32px;
|
||||
line-height: 38px;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 360px) {
|
||||
margin-top: 4px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
151
src/components/newsletter.module.scss
Normal file
@ -0,0 +1,151 @@
|
||||
@use "../variables.module.scss";
|
||||
|
||||
.newsletter-container {
|
||||
width: 100%;
|
||||
height: 104px;
|
||||
border-top: 1px solid variables.$color-black;
|
||||
background: variables.$color-white;
|
||||
|
||||
@media screen and (min-width: 2500px) {
|
||||
height: 141.24px;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1024px) {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.newsletter-form {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.newsletter-wrapper {
|
||||
width: 36.40625%;
|
||||
padding: 16px 0;
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
justify-content: flex-start;
|
||||
flex-direction: column;
|
||||
margin: 0 auto;
|
||||
|
||||
@media screen and (max-width: 1024px) {
|
||||
width: 100%;
|
||||
padding: 16px;
|
||||
}
|
||||
|
||||
.newsletter-title {
|
||||
font-weight: 500;
|
||||
font-size: 18px;
|
||||
line-height: 21px;
|
||||
letter-spacing: 0.05em;
|
||||
text-transform: uppercase;
|
||||
color: variables.$color-black3;
|
||||
|
||||
margin-bottom: 8px;
|
||||
|
||||
@media screen and (min-width: 2500px) {
|
||||
font-size: 36px;
|
||||
line-height: 42px;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1024px) {
|
||||
font-size: 14px;
|
||||
line-height: 16px;
|
||||
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
}
|
||||
|
||||
.newsletter-form-wrapper {
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
gap: 8px;
|
||||
|
||||
@media screen and (max-width: 1024px) {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
.newsletter-input {
|
||||
position: relative;
|
||||
|
||||
input {
|
||||
width: 100%;
|
||||
min-width: 340px;
|
||||
height: 42px;
|
||||
padding: 13px 16px;
|
||||
border: 1px solid variables.$color-grey2;
|
||||
border-radius: 4px;
|
||||
|
||||
@media screen and (min-width: 2500px) {
|
||||
min-width: 668px;
|
||||
|
||||
font-size: 28px;
|
||||
line-height: 33px;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1024px) {
|
||||
min-width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
input::placeholder {
|
||||
font-weight: 400;
|
||||
font-size: 14px;
|
||||
line-height: 16px;
|
||||
color: variables.$color-grey;
|
||||
|
||||
@media screen and (min-width: 2500px) {
|
||||
font-size: 28px;
|
||||
line-height: 33px;
|
||||
}
|
||||
}
|
||||
|
||||
.form-feedback {
|
||||
position: absolute;
|
||||
right: -30px;
|
||||
bottom: 45px;
|
||||
font-weight: 400;
|
||||
font-size: 12px;
|
||||
line-height: 14px;
|
||||
color: variables.$color-red;
|
||||
|
||||
@media screen and (min-width: 2500px) {
|
||||
font-size: 24px;
|
||||
line-height: 28px;
|
||||
|
||||
right: -95px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.newsletter-button {
|
||||
width: 126px;
|
||||
height: 42px;
|
||||
padding: 14px 20px;
|
||||
outline: 0;
|
||||
border: 0;
|
||||
background: variables.$color-black;
|
||||
box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
|
||||
border-radius: 4px;
|
||||
|
||||
font-weight: 700;
|
||||
font-size: 12px;
|
||||
line-height: 14px;
|
||||
text-align: center;
|
||||
letter-spacing: 0.05em;
|
||||
color: variables.$color-white;
|
||||
|
||||
@media screen and (min-width: 2500px) {
|
||||
width: 246px;
|
||||
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1024px) {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -31,3 +31,9 @@ ul {
|
||||
li {
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
img {
|
||||
display: block;
|
||||
width: 100%;
|
||||
object-fit: contain;
|
||||
}
|
||||
|
@ -3,12 +3,18 @@ import React from "react";
|
||||
import { HeaderTop } from "../components/HeaderTop";
|
||||
import { HeaderBottom } from "../components/HeaderBottom";
|
||||
import { FooterBottom } from "../components/FooterBottom";
|
||||
import { FooterTop } from "../components/FooterTop";
|
||||
import { Newsletter } from "../components/Newsletter";
|
||||
import { MainContent } from "../components/MainContent";
|
||||
|
||||
function Home() {
|
||||
return (
|
||||
<div className="App">
|
||||
<HeaderTop />
|
||||
<HeaderBottom />
|
||||
<MainContent />
|
||||
<Newsletter />
|
||||
<FooterTop />
|
||||
<FooterBottom />
|
||||
</div>
|
||||
);
|
||||
|
37
src/schema/FormMainSchema.ts
Normal file
@ -0,0 +1,37 @@
|
||||
import * as Yup from "yup";
|
||||
|
||||
const getFormatedDate = (currentDate: string) => {
|
||||
return currentDate.split("/").reverse().join("-");
|
||||
};
|
||||
|
||||
const getFormatedCPF = (currentCPF: string) => {
|
||||
return currentCPF.split(".").reverse().join("-");
|
||||
};
|
||||
|
||||
const getFormatedTel = (currentTel: string) => {
|
||||
return currentTel.split("()").reverse().join("-");
|
||||
};
|
||||
|
||||
const getFormatedInst = (currentInst: string) => {
|
||||
return currentInst.split("@").join("@");
|
||||
};
|
||||
|
||||
export default Yup.object().shape({
|
||||
name: Yup.string()
|
||||
.min(2, "Nome deve conter pelo menos 2 letras!")
|
||||
.required("*Campo Obrigatório"),
|
||||
email: Yup.string().required("*Campo Obrigatório").email("Email inválido"),
|
||||
cpf: Yup.string()
|
||||
.min(11, getFormatedCPF("111.111.111-11"))
|
||||
.required("*Campo Obrigatório"),
|
||||
nowDate: Yup.date()
|
||||
.max(8, getFormatedDate(new Date().toLocaleDateString()))
|
||||
.required("*Campo Obrigatório"),
|
||||
tel: Yup.string()
|
||||
.required("*Campo Obrigatório")
|
||||
.min(11, getFormatedTel("(22)99999-9999")),
|
||||
inst: Yup.string().min(3, getFormatedInst("@seuuser")).notRequired(),
|
||||
check: Yup.boolean()
|
||||
.oneOf([true], "Você deve aceitar os termos!")
|
||||
.required("*Campo Obrigatório"),
|
||||
});
|
7
src/schema/NewsletterSchema.ts
Normal file
@ -0,0 +1,7 @@
|
||||
import * as Yup from "yup";
|
||||
|
||||
export default Yup.object().shape({
|
||||
newsletter: Yup.string()
|
||||
.required("*Campo Obrigatório")
|
||||
.email("Email inválido"),
|
||||
});
|
@ -9,6 +9,7 @@ $font-primary: "Roboto", sans-serif;
|
||||
$color-black: #000000;
|
||||
$color-black2: #292929;
|
||||
$color-black3: #303030;
|
||||
$color-black4: #100d0e;
|
||||
|
||||
$color-white: #ffffff;
|
||||
|
||||
@ -17,6 +18,7 @@ $color-grey2: #e5e5e5;
|
||||
$color-grey3: #7d7d7d;
|
||||
$color-grey4: #f2f2f2;
|
||||
$color-grey5: #c6c6c6;
|
||||
$color-grey6: #b9b7b7;
|
||||
|
||||
$color-red: #ff0000;
|
||||
|
||||
|