Merge pull request 'feature/InstitucionalMain' (#1) from feature/InstitucionalMain into feature/Footer

Reviewed-on: #1
This commit is contained in:
Gustavo Rallenson Gonçalves Da Silva 2023-01-13 20:59:39 +00:00
commit 4ef36fbfb2
21 changed files with 8832 additions and 7462 deletions

View File

@ -10,4 +10,4 @@ end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = false
max_line_length = 100
max_line_length = 70

View File

@ -0,0 +1,11 @@
import { BrowserRouter, Route } from 'react-router-dom';
import {Home} from '../Institucional';
const Routes = () => (
<BrowserRouter>
<Route path="/home" component="" />
</BrowserRouter>
);
export default Routes;

View File

@ -15,13 +15,22 @@
"@types/node": "^16.18.11",
"@types/react": "^18.0.26",
"@types/react-dom": "^18.0.10",
"cpf-check": "^3.0.0",
"formik": "^2.2.9",
"moment": "^2.29.4",
"node-sass": "^7.0.3",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-router-dom": "^6.6.2",
"react-scripts": "5.0.1",
"sass-loader": "^13.2.0",
"styled-components": "^5.3.6",
"typescript": "^4.9.4",
"web-vitals": "^2.1.4"
"web-vitals": "^2.1.4",
"yup": "^0.32.11"
},
"devDependencies": {
"@types/styled-components": "^5.1.26"
}
},
"node_modules/@adobe/css-tools": {
@ -2143,6 +2152,29 @@
"postcss-selector-parser": "^6.0.10"
}
},
"node_modules/@emotion/is-prop-valid": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz",
"integrity": "sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==",
"dependencies": {
"@emotion/memoize": "^0.8.0"
}
},
"node_modules/@emotion/memoize": {
"version": "0.8.0",
"resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz",
"integrity": "sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA=="
},
"node_modules/@emotion/stylis": {
"version": "0.8.5",
"resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz",
"integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ=="
},
"node_modules/@emotion/unitless": {
"version": "0.7.5",
"resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz",
"integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg=="
},
"node_modules/@eslint/eslintrc": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz",
@ -3115,6 +3147,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",
@ -3789,6 +3829,16 @@
"@types/node": "*"
}
},
"node_modules/@types/hoist-non-react-statics": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz",
"integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==",
"dev": true,
"dependencies": {
"@types/react": "*",
"hoist-non-react-statics": "^3.3.0"
}
},
"node_modules/@types/html-minifier-terser": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz",
@ -3842,6 +3892,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",
@ -3963,6 +4018,17 @@
"resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz",
"integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw=="
},
"node_modules/@types/styled-components": {
"version": "5.1.26",
"resolved": "https://registry.npmjs.org/@types/styled-components/-/styled-components-5.1.26.tgz",
"integrity": "sha512-KuKJ9Z6xb93uJiIyxo/+ksS7yLjS1KzG6iv5i78dhVg/X3u5t1H7juRWqVmodIdz6wGVaIApo1u01kmFRdJHVw==",
"dev": true,
"dependencies": {
"@types/hoist-non-react-statics": "*",
"@types/react": "*",
"csstype": "^3.0.2"
}
},
"node_modules/@types/testing-library__jest-dom": {
"version": "5.14.5",
"resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.5.tgz",
@ -5113,6 +5179,26 @@
"@babel/core": "^7.0.0-0"
}
},
"node_modules/babel-plugin-styled-components": {
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.7.tgz",
"integrity": "sha512-i7YhvPgVqRKfoQ66toiZ06jPNA3p6ierpfUuEWxNF+fV27Uv5gxBkf8KZLHUCc1nFA9j6+80pYoIpqCeyW3/bA==",
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.16.0",
"@babel/helper-module-imports": "^7.16.0",
"babel-plugin-syntax-jsx": "^6.18.0",
"lodash": "^4.17.11",
"picomatch": "^2.3.0"
},
"peerDependencies": {
"styled-components": ">= 2"
}
},
"node_modules/babel-plugin-syntax-jsx": {
"version": "6.18.0",
"resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz",
"integrity": "sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw=="
},
"node_modules/babel-plugin-transform-react-remove-prop-types": {
"version": "0.4.24",
"resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz",
@ -5521,6 +5607,14 @@
"node": ">=8"
}
},
"node_modules/camelize": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz",
"integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/caniuse-api": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz",
@ -5948,6 +6042,11 @@
"node": ">=10"
}
},
"node_modules/cpf-check": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/cpf-check/-/cpf-check-3.0.0.tgz",
"integrity": "sha512-IwUJdDJ57kheRXiO7govTBOcKsLK/AdDrVKfk6rYCCNDcOBUiY9zmUY0fWI4/S/oIpbhHWMcOD0O2DLawuwiBw=="
},
"node_modules/cross-spawn": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
@ -5986,6 +6085,14 @@
"postcss": "^8.4"
}
},
"node_modules/css-color-keywords": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz",
"integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==",
"engines": {
"node": ">=4"
}
},
"node_modules/css-declaration-sorter": {
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.1.tgz",
@ -6167,6 +6274,16 @@
"resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz",
"integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w=="
},
"node_modules/css-to-react-native": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.0.0.tgz",
"integrity": "sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ==",
"dependencies": {
"camelize": "^1.0.0",
"css-color-keywords": "^1.0.0",
"postcss-value-parser": "^4.0.2"
}
},
"node_modules/css-tree": {
"version": "1.0.0-alpha.37",
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz",
@ -8359,6 +8476,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",
@ -8892,6 +9045,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",
@ -12073,6 +12239,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",
@ -12542,6 +12713,14 @@
"mkdirp": "bin/cmd.js"
}
},
"node_modules/moment": {
"version": "2.29.4",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
"integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==",
"engines": {
"node": "*"
}
},
"node_modules/ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
@ -12564,6 +12743,11 @@
"resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz",
"integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ=="
},
"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",
@ -14755,6 +14939,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",
@ -15064,6 +15253,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-is": {
"version": "17.0.2",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
@ -15077,6 +15271,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",
@ -16168,6 +16392,11 @@
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
},
"node_modules/shallowequal": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz",
"integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ=="
},
"node_modules/shebang-command": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
@ -16676,6 +16905,36 @@
"webpack": "^5.0.0"
}
},
"node_modules/styled-components": {
"version": "5.3.6",
"resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.3.6.tgz",
"integrity": "sha512-hGTZquGAaTqhGWldX7hhfzjnIYBZ0IXQXkCYdvF1Sq3DsUaLx6+NTHC5Jj1ooM2F68sBiVz3lvhfwQs/S3l6qg==",
"hasInstallScript": true,
"dependencies": {
"@babel/helper-module-imports": "^7.0.0",
"@babel/traverse": "^7.4.5",
"@emotion/is-prop-valid": "^1.1.0",
"@emotion/stylis": "^0.8.4",
"@emotion/unitless": "^0.7.4",
"babel-plugin-styled-components": ">= 1.12.0",
"css-to-react-native": "^3.0.0",
"hoist-non-react-statics": "^3.0.0",
"shallowequal": "^1.1.0",
"supports-color": "^5.5.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/styled-components"
},
"peerDependencies": {
"react": ">= 16.8.0",
"react-dom": ">= 16.8.0",
"react-is": ">= 16.8.0"
}
},
"node_modules/stylehacks": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz",
@ -17064,6 +17323,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",
@ -17096,6 +17360,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",
@ -18492,6 +18761,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": {
@ -19866,6 +20152,29 @@
"integrity": "sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==",
"requires": {}
},
"@emotion/is-prop-valid": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz",
"integrity": "sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==",
"requires": {
"@emotion/memoize": "^0.8.0"
}
},
"@emotion/memoize": {
"version": "0.8.0",
"resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz",
"integrity": "sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA=="
},
"@emotion/stylis": {
"version": "0.8.5",
"resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz",
"integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ=="
},
"@emotion/unitless": {
"version": "0.7.5",
"resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz",
"integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg=="
},
"@eslint/eslintrc": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz",
@ -20569,6 +20878,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",
@ -21056,6 +21370,16 @@
"@types/node": "*"
}
},
"@types/hoist-non-react-statics": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz",
"integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==",
"dev": true,
"requires": {
"@types/react": "*",
"hoist-non-react-statics": "^3.3.0"
}
},
"@types/html-minifier-terser": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz",
@ -21109,6 +21433,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",
@ -21230,6 +21559,17 @@
"resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz",
"integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw=="
},
"@types/styled-components": {
"version": "5.1.26",
"resolved": "https://registry.npmjs.org/@types/styled-components/-/styled-components-5.1.26.tgz",
"integrity": "sha512-KuKJ9Z6xb93uJiIyxo/+ksS7yLjS1KzG6iv5i78dhVg/X3u5t1H7juRWqVmodIdz6wGVaIApo1u01kmFRdJHVw==",
"dev": true,
"requires": {
"@types/hoist-non-react-statics": "*",
"@types/react": "*",
"csstype": "^3.0.2"
}
},
"@types/testing-library__jest-dom": {
"version": "5.14.5",
"resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.5.tgz",
@ -22065,6 +22405,23 @@
"@babel/helper-define-polyfill-provider": "^0.3.3"
}
},
"babel-plugin-styled-components": {
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.7.tgz",
"integrity": "sha512-i7YhvPgVqRKfoQ66toiZ06jPNA3p6ierpfUuEWxNF+fV27Uv5gxBkf8KZLHUCc1nFA9j6+80pYoIpqCeyW3/bA==",
"requires": {
"@babel/helper-annotate-as-pure": "^7.16.0",
"@babel/helper-module-imports": "^7.16.0",
"babel-plugin-syntax-jsx": "^6.18.0",
"lodash": "^4.17.11",
"picomatch": "^2.3.0"
}
},
"babel-plugin-syntax-jsx": {
"version": "6.18.0",
"resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz",
"integrity": "sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw=="
},
"babel-plugin-transform-react-remove-prop-types": {
"version": "0.4.24",
"resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz",
@ -22384,6 +22741,11 @@
}
}
},
"camelize": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz",
"integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ=="
},
"caniuse-api": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz",
@ -22706,6 +23068,11 @@
"yaml": "^1.10.0"
}
},
"cpf-check": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/cpf-check/-/cpf-check-3.0.0.tgz",
"integrity": "sha512-IwUJdDJ57kheRXiO7govTBOcKsLK/AdDrVKfk6rYCCNDcOBUiY9zmUY0fWI4/S/oIpbhHWMcOD0O2DLawuwiBw=="
},
"cross-spawn": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
@ -22729,6 +23096,11 @@
"postcss-selector-parser": "^6.0.9"
}
},
"css-color-keywords": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz",
"integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg=="
},
"css-declaration-sorter": {
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.1.tgz",
@ -22836,6 +23208,16 @@
"resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz",
"integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w=="
},
"css-to-react-native": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.0.0.tgz",
"integrity": "sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ==",
"requires": {
"camelize": "^1.0.0",
"css-color-keywords": "^1.0.0",
"postcss-value-parser": "^4.0.2"
}
},
"css-tree": {
"version": "1.0.0-alpha.37",
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz",
@ -24466,6 +24848,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",
@ -24838,6 +25246,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",
@ -27148,6 +27571,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",
@ -27501,6 +27929,11 @@
"minimist": "^1.2.6"
}
},
"moment": {
"version": "2.29.4",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
"integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w=="
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
@ -27520,6 +27953,11 @@
"resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz",
"integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ=="
},
"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",
@ -28926,6 +29364,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",
@ -29148,6 +29591,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-is": {
"version": "17.0.2",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
@ -29158,6 +29606,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",
@ -29947,6 +30412,11 @@
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
},
"shallowequal": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz",
"integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ=="
},
"shebang-command": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
@ -30345,6 +30815,23 @@
"integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==",
"requires": {}
},
"styled-components": {
"version": "5.3.6",
"resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.3.6.tgz",
"integrity": "sha512-hGTZquGAaTqhGWldX7hhfzjnIYBZ0IXQXkCYdvF1Sq3DsUaLx6+NTHC5Jj1ooM2F68sBiVz3lvhfwQs/S3l6qg==",
"requires": {
"@babel/helper-module-imports": "^7.0.0",
"@babel/traverse": "^7.4.5",
"@emotion/is-prop-valid": "^1.1.0",
"@emotion/stylis": "^0.8.4",
"@emotion/unitless": "^0.7.4",
"babel-plugin-styled-components": ">= 1.12.0",
"css-to-react-native": "^3.0.0",
"hoist-non-react-statics": "^3.0.0",
"shallowequal": "^1.1.0",
"supports-color": "^5.5.0"
}
},
"stylehacks": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz",
@ -30634,6 +31121,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",
@ -30657,6 +31149,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",
@ -31736,6 +32233,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"
}
}
}
}

View File

@ -10,12 +10,16 @@
"@types/node": "^16.18.11",
"@types/react": "^18.0.26",
"@types/react-dom": "^18.0.10",
"cpf-check": "^3.0.0",
"formik": "^2.2.9",
"moment": "^2.29.4",
"node-sass": "^7.0.3",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-router-dom": "^6.6.2",
"react-scripts": "5.0.1",
"sass-loader": "^13.2.0",
"styled-components": "^5.3.6",
"typescript": "^4.9.4",
"web-vitals": "^2.1.4",
"yup": "^0.32.11"
@ -43,5 +47,8 @@
"last 1 firefox version",
"last 1 safari version"
]
},
"devDependencies": {
"@types/styled-components": "^5.1.26"
}
}

View File

@ -12,14 +12,6 @@
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<header id="rootheader">
</header>
<main id="root">
</main>
<footer id="rootfooter">
</footer>
<div id="root"></div>
</body>
</html>

View File

@ -7,6 +7,9 @@ body {
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
a{
text-decoration: none;
}
code {
font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',

View File

@ -129,7 +129,7 @@
min-width: 54px;
width: 100%;
white-space: nowrap;
button{
button,a{
width: 100%;
height: 100%;
font-family: 'Roboto',sans-serif;
@ -292,6 +292,7 @@
font-weight: 400;
font-size: 14px;
line-height: 16px;
outline: 0;
}
button{
position: absolute;

View File

@ -1,8 +1,24 @@
@import "../utils/Variables.scss";
.hiden{
display: none !important;
}
.active{
display: block;
}
.btn{
&_open{
background: $-black;
color: $-white !important;
font-weight: 700 !important;
}
}
.main_wrapper{
width: 100%;
padding: 30px 100px 70px;
padding: 30px 100px 66px;
&_breadcrumb{
display: flex;
align-items: center;
@ -20,16 +36,25 @@
line-height: 14px;
color:$-gray-300;
}
#iconarrow{
min-width: 8px;
height: 8px;
a:hover{
text-decoration: underline;
color: $-gray-300;
}
&-images{
border: 0;
display: flex;
align-items: center;
#iconarrow{
min-width: 8px;
height: 8px;
}
}
}
&_contend{
display: flex;
flex-direction: column;
align-items: center;
&_title{
text-align: center;
font-family: 'Roboto',sans-serif;
@ -40,20 +65,188 @@
letter-spacing: 0.1em;
margin-bottom: 80px;
}
&-main{
width: 100%;
display: flex;
gap: 30px;
&-departaments{
border-right: 2px solid $-black;
background: $-white;
display: flex;
flex-direction: column;
width: 40.291%;
min-width: 302px;
height: 286px;
button{
width: 100%;
height: 39px;
text-align: start;
padding-left: 10px;
font-family: 'Roboto',sans-serif;
font-style: normal;
font-weight: 400;
font-size: 16px;
line-height: 19px;
color: $-gray-bold;
&:hover{
background: $-black;
color: $-white;
font-weight: 700;
}
}
}
&-section{
width: 100%;
#Sobre,
#contact{
width: 100%;
}
#contact{
.submitted{
color: green;
}
display: flex;
flex-direction: column;
gap :12px;
width: 100%;
.contactTitlte{
font-family: 'Roboto',sans-serif;
font-style: normal;
font-weight: 700;
font-size: 24px;
line-height: 28px;
}
.form{
&_col{
display: flex;
flex-direction: column;
position: relative;
gap: 12px;
&_Invalid{
position: absolute;
font-family: 'Roboto';
font-style: normal;
font-weight: 400;
font-size: 12px;
line-height: 14px;
right: 0;
padding: 0 20px;
color: $-red
}
Label{
padding: 0 20px;
font-family: 'Roboto',sans-serif;
font-style: normal;
font-weight: 400;
font-size: 14px;
line-height: 16px;
color: $-black-100E;
}
input{
width: 100%;
height: 46px;
border: 1px solid $-black-100E;
border-radius: 25px;
padding: 15px 20px;
}
input[placeholder]{
font-family: 'Roboto',sans-serif;
font-style: normal;
font-weight: 400;
font-size: 14px;
line-height: 16px;
color: $-gray-B97;
}
}
&_check{
width: 100%;
display: flex;
align-items: center;
justify-content: center;
gap: 4.28px;
#checkbox{
&[type="checkbox"] {
display: none;
}
}
.checkLabel {
display: flex;
align-items: center;
flex-direction: row-reverse;
gap: 4.28px;
font-family: 'Roboto',sans-serif;
font-style: normal;
font-weight: 400;
font-size: 14px;
line-height: 16px;
text-decoration: underline;
&:before{
content: "";
display: inline-block;
width: 20px;
height: 18px;
border: 1px solid $-black;
box-sizing: border-box;
border-radius: 4px;
}
}
.Symbol{
color: $-red;
text-decoration: none;
}
.checked {
&:before{
background: $-black-100E;
}
}
}
}
button{
font-family: 'Roboto',sans-serif;
background: $-black;
color: $-white;
align-items: center;
letter-spacing: 0.05em;
font-weight: 400;
font-size: 16px;
line-height: 19px;
height: 52.44px;
border-radius: 25px;
width: 100%;
}
}
#title{
font-family: 'Roboto',sans-serif;
font-style: normal;
font-weight: 700;
font-size: 24px;
line-height: 28px;
margin-bottom: 12px;
}
p{
font-family: 'Roboto',sans-serif;
font-style: normal;
font-weight: 400;
font-size: 13px;
line-height: 15px;
color: $-gray-bold;
}
}
}
}
}
// 4k
@media screen and (min-width: 2500px){
.main_wrapper{
padding: 30px 100px 84px;
&_contend{
&_title{
font-size: 48px;
line-height: 56px;
}
}
&_breadcrumb{
min-height: 32px;
&_title{
@ -69,11 +262,105 @@
height: 32px;
}
}
&_contend{
&_title{
font-size: 48px;
line-height: 56px;
}
&-main{
&-departaments{
height: 466px;
button{
height: 58px;
font-size: 32px;
line-height: 38px;
}
}
&-section{
width: 100%;
min-width: 1680px;
#Sobre{
#title{
font-size: 48px;
line-height: 56px;
}
p{
font-size: 26px;
line-height: 30px;
}
}
#contact{
.contactTitlte{
font-size: 48px;
line-height: 56px;
}
.form{
&_col{
label{
font-size: 28px;
line-height: 33px
}
input{
min-width: 100%;
width: 1680px;
height: 63px;
}
input[placeholder]{
font-size: 28px;
line-height: 33px;
}
}
&_check{
.checkLabel{
font-size: 28px;
line-height: 33px;
&:before{
content: "";
width: 36.4px;
height: 35.15px;
}
}
}
}
button{
width: 100%;
height: 71px;
font-size: 32px;
line-height: 38px;
}
}
}
}
}
}
}
@media screen and (min-width: 280px) and (max-width: 1024px){
.main_wrapper{
padding: 30px 16px 80px;
&_contend{
&-main{
flex-direction: column;
&-departaments{
min-width: 280px;
border-right: 0;
width: 100%;
}
&-section{
min-width: 280px;
#title{
text-align: center;
}
p{
font-size: 12px;
line-height: 18px;
letter-spacing: 0em;
text-align: justified;
}
}
}
}
}
}

View File

@ -4,9 +4,11 @@ import FooterStyles from "../modules/footer.module.scss"
const Footer = () =>{
return (
<div className={FooterStyles["main_wrapper"]}>
conteudo do footer
</div>
<footer>
<div className={FooterStyles["main_wrapper"]}>
conteudo do footer
</div>
</footer>
)
};

View File

@ -1,8 +1,11 @@
import React, { useState, useEffect, useRef, useMemo, useCallback,useContext} from "react"
import React, {useContext} from "react"
import { Formik,Form, Field, FormikHelpers } from 'formik';
import { Submenu } from "../../Modal/submenuModal";
import {SubmenuContext} from "../../contexts/SubmenuContext";
import {RouterContext} from "../../contexts/React_Router_context"
import { Link, Navigate } from "react-router-dom";
import { pathroot } from "../../pages/router/Pathrooter";
import HeaderStyles from "../modules/header.module.scss"
@ -22,67 +25,26 @@ const initialValues = {
const Header = () =>{
const { navigate } = useContext(RouterContext);
const { isOpened, setisOpened } = useContext(SubmenuContext)
const handleSeacrhFormikSubmit = (values:SearchboxTypes, formik: FormikHelpers<SearchboxTypes>) =>{
formik.resetForm();
}
return (
<div className={HeaderStyles["Header_wrapper"]}>
<div className={HeaderStyles["Header_wrapper-top"]}>
<fieldset className={HeaderStyles["Header_wrapper-top-logo"]}>
<a href="/">
<img src={Logo} alt="Logo" />
</a>
</fieldset>
<Formik
initialValues={initialValues}
onSubmit={handleSeacrhFormikSubmit}
>
<Form className={HeaderStyles["Header_wrapper-top-Searchbox"]}>
<Field id="search" name="search" type="text" placeholder="Buscar" />
<label htmlFor="search">
<button>
<img src={Lupa} alt="Lupa" />
</button>
</label>
</Form>
</Formik>
<div className={HeaderStyles["Header_wrapper-top-menu"]}>
<button className={HeaderStyles["Header_wrapper-top-menu-login"]}>Entrar</button>
<button className={HeaderStyles["Header_wrapper-top-menu-cart"]}>
<img src={Cart} alt="Carrinho_icon" />
</button>
</div>
</div>
<div className={HeaderStyles["Header_wrapper-mobileTop"]}>
<fieldset className={HeaderStyles["Header_wrapper-mobileTop-menu"]}>
<img
onClick={() => {setisOpened(true)}}
className={HeaderStyles["hamburguer"]}
src={MenuMobile}
alt="Logo-mobile"
/>
<Submenu isOpened={isOpened} setisOpened={setisOpened}/>
</fieldset>
<fieldset className={HeaderStyles["Header_wrapper-mobileTop-logo"]}>
<a href="/">
<img src={LogoMobile} alt="Logo-mobile" />
</a>
</fieldset>
<button className={HeaderStyles["Header_wrapper-mobileTop-cart"]}>
<img src={Cart} alt="Carrinho_icon" />
</button>
</div>
<div className={HeaderStyles["Header_wrapper-mobilebottom"]}>
<Formik
initialValues={initialValues}
onSubmit={handleSeacrhFormikSubmit}
<header >
<div className={HeaderStyles["Header_wrapper"]}>
<div className={HeaderStyles["Header_wrapper-top"]}>
<fieldset className={HeaderStyles["Header_wrapper-top-logo"]}>
<a href="/">
<img src={Logo} alt="Logo" />
</a>
</fieldset>
<Formik
initialValues={initialValues}
onSubmit={handleSeacrhFormikSubmit}
>
<Form className={HeaderStyles["Header_wrapper-mobilebottom-Searchbox"]}>
<Form className={HeaderStyles["Header_wrapper-top-Searchbox"]}>
<Field id="search" name="search" type="text" placeholder="Buscar" />
<label htmlFor="search">
<button>
@ -90,19 +52,63 @@ const Header = () =>{
</button>
</label>
</Form>
</Formik>
</div>
</Formik>
<div className={HeaderStyles["Header_wrapper-bottom"]}>
<nav className={HeaderStyles["Header_wrapper-bottom-navigator"]}>
<ul>
<li><button>CURSOS</button></li>
<li><button>SAIBA MAIS</button></li>
<li><button>INSTITUCIONAIS</button></li>
</ul>
</nav>
<div className={HeaderStyles["Header_wrapper-top-menu"]}>
<button className={HeaderStyles["Header_wrapper-top-menu-login"]}>Entrar</button>
<button className={HeaderStyles["Header_wrapper-top-menu-cart"]}>
<img src={Cart} alt="Carrinho_icon" />
</button>
</div>
</div>
<div className={HeaderStyles["Header_wrapper-mobileTop"]}>
<fieldset className={HeaderStyles["Header_wrapper-mobileTop-menu"]}>
<img
onClick={() => {setisOpened(true)}}
className={HeaderStyles["hamburguer"]}
src={MenuMobile}
alt="Logo-mobile"
/>
<Submenu isOpened={isOpened} setisOpened={setisOpened}/>
</fieldset>
<fieldset className={HeaderStyles["Header_wrapper-mobileTop-logo"]}>
<a href="/">
<img src={LogoMobile} alt="Logo-mobile" />
</a>
</fieldset>
<button className={HeaderStyles["Header_wrapper-mobileTop-cart"]}>
<img src={Cart} alt="Carrinho_icon" />
</button>
</div>
<div className={HeaderStyles["Header_wrapper-mobilebottom"]}>
<Formik
initialValues={initialValues}
onSubmit={handleSeacrhFormikSubmit}
>
<Form className={HeaderStyles["Header_wrapper-mobilebottom-Searchbox"]}>
<Field id="search" name="search" type="text" placeholder="Buscar" />
<label htmlFor="search">
<button>
<img src={Lupa} alt="Lupa" />
</button>
</label>
</Form>
</Formik>
</div>
<div className={HeaderStyles["Header_wrapper-bottom"]}>
<nav className={HeaderStyles["Header_wrapper-bottom-navigator"]}>
<ul>
<li><button onClick={() => navigate("/Cursos")}>CURSOS</button></li>
<li><button onClick={() => navigate("/Saiba+&+Mais")}>SAIBA MAIS</button></li>
<li><button onClick={() => navigate("/Institucional")}>INSTITUCIONAIS</button></li>
</ul>
</nav>
</div>
</div>
</div>
</header>
)
};

View File

@ -0,0 +1,15 @@
import React from "react"
import Institucional from "../../pages/Institucional";
const Main = () => {
return (
<main >
<Institucional />
</main>
)
};
export default Main

View File

@ -0,0 +1,45 @@
import React from "react";
import { Field, ErrorMessage } from 'formik';
interface inputProps {
type:string
name?:string;
required?:boolean
className?: string;
Errorclass?: string;
Labelclass?: string;
Inputclass?: string;
id?: string;
Label?: string;
placeholder?: string;
}
interface checkbox extends inputProps {
Simbol?: string;
Simbolclass?: string;
checked?:boolean
onClick?: (checked:React.ChangeEvent<HTMLInputElement>) => void
}
export const Inputform: React.FC<checkbox> = (
{ type="text",name,className,Inputclass,Simbol,Labelclass,Simbolclass,id,Label,placeholder, onClick,checked,Errorclass,required = false}
) => {
return(
<div className={className}>
<span className={Simbolclass}>{Simbol}</span>
<label className={Labelclass} htmlFor={id}>{Label}</label>
<Field
onClick={onClick}
checked={checked}
className={Inputclass}
id={id} name={name}
type={type}
placeholder={placeholder}
required={required}/>
<ErrorMessage
component="span"
name={String(name)}
className={Errorclass}
/>
</div>
)
};

View File

@ -12,8 +12,12 @@ export const Title: React.FC<titleName> = ({ nameTitle, className }) => {
};
export const BreadcrumbTitle: React.FC<titleName> = ({ nameTitle,className }) => {
console.log(className)
return (
<h5 className={className}>{nameTitle}</h5>
)
}
export const FormTitle: React.FC<titleName> = ({ nameTitle,className }) => {
return (
<h2 className={className}>{nameTitle}</h2>
)
}

View File

@ -1,5 +1,6 @@
// colors
$-black : #000000;
$-black-100E : #100D0E;
$-white:#ffffff;
$-gray: #D6D6D6;
$-gray-light:#e5e5e5;
@ -8,7 +9,10 @@ $-gray-200: #F2F2F2;
$-gray-300:#C4C4C4;
$-gray-400:#C6C6C6;
$-gray-500:#858585;
$-gray-bold:#7D7D7D;;
$-gray-600:#333333;
$-gray-B97:#B9B7B7;
$-prisma: #FF5A5F;
$-crimson: rgb(156, 4, 34);
$-red: #FF0000;
$-shockPink:rgb(220, 20, 60);

View File

@ -0,0 +1,27 @@
import { createContext ,useState} from 'react';
interface pathtype {
currentRoute:string
navigate: (route: string) => void
}
export const RouterContext = createContext({} as pathtype);
export const RouterProvider :React.FC<{ children: React.ReactNode }>= ({ children }) => {
const [currentRoute, setCurrentRoute] = useState('/');
const navigate = (route: string) => {
console.log(route)
setCurrentRoute(route);
}
return (
<RouterContext.Provider value={{ currentRoute:currentRoute, navigate:navigate }}>
{children}
</RouterContext.Provider>
)
}

View File

@ -1,36 +1,25 @@
import React from 'react';
import ReactDOM from 'react-dom/client';
import { Home } from './pages/Institucional';
import { Header } from './components/scripts/header';
import { Footer } from './components/scripts/footer';
import Routers from './pages/router/Pathrooter';
import {SubmenuProvider} from "./contexts/SubmenuContext"
import {RouterProvider} from "./contexts/React_Router_context"
import './components/Main.scss';
import './components/common/global.scss';
import './components/common/resets.scss'
import './components/common/resets.scss';
const rootElement = document.getElementById('root');
const rootheader = document.getElementById('rootheader');
const rootfooter = document.getElementById('rootfooter');
if (rootheader) {
ReactDOM.createRoot(rootheader).render(
<SubmenuProvider>
<Header />
</SubmenuProvider>
);
} else {
// rootElement não foi encontrado. Talvez seja necessário aguardar o carregamento da página.
}
if (rootElement) {
ReactDOM.createRoot(rootElement).render(
<Home />
);
} else {
// rootElement não foi encontrado. Talvez seja necessário aguardar o carregamento da página.
}
if (rootfooter) {
ReactDOM.createRoot(rootfooter).render(
<Footer />
<RouterProvider>
<SubmenuProvider>
<Header />
</SubmenuProvider>
<Routers />
<Footer />
</RouterProvider>
);
} else {
// rootElement não foi encontrado. Talvez seja necessário aguardar o carregamento da página.

View File

@ -1,31 +1,216 @@
import React, { useState, useEffect, useRef, useMemo, useCallback,useContext} from "react"
import React, { useState } from "react"
import { Formik,Form, FormikHelpers } from 'formik';
import moment from 'moment';
import Homeicon from "../components/assets/icons/home_icon.svg"
import Leftarrow from "../components/assets/icons/Leftarrow.svg"
import MainStyles from "../components/modules/home.module.scss"
import { Title,BreadcrumbTitle } from "../components/scripts/moleculas/Title"
import FormShecma from "../schema/FormShecma";
import { Title,BreadcrumbTitle,FormTitle } from "../components/scripts/moleculas/Title"
import { Inputform } from "../components/scripts/moleculas/InputForm"
const title = "INSTITUCIONAL"
const Home = () =>{
console.log(MainStyles)
interface FormTypes{
name:string
instagram:string,
phone: string,
cpf: string,
birthdate: string,
email: string,
aceito:boolean
}
const initialValues = {
name:"",
instagram:"",
phone: "",
cpf: "",
birthdate: "",
email: "",
aceito: false
}
const Institucional = () => {
const [activeSection, setActiveSection] = useState("Sobre");
const [isChecked, setIsChecked] = useState(false);
const [submitted, setSubmitted] = useState(false);
const handleClick = (section:string) => {
setActiveSection(section);
}
const handleFormikSubmit = (values:FormTypes, formik: FormikHelpers<FormTypes>) =>{
console.log(values)
setIsChecked(false)
values.birthdate = moment(values.birthdate, 'DDMMYYYY').format('DD/MM/YYYY');
values.cpf = values.cpf.replace(/(\d{3})(\d)/, "$1.$2")
.replace(/(\d{3})(\d)/, "$1.$2")
.replace(/(\d{3})(\d{1,2})$/, "$1-$2")
values.phone = values.phone.replace(/\D/g, '')
.replace(/(\d{2})(\d{5})(\d{4})/, "($1) $2-$3");
if (!values.instagram.startsWith("@")) {
values.instagram = `@${values.instagram}`;
}
formik.resetForm();
setSubmitted(true);
setTimeout(() => setSubmitted(false), 300000);
}
const handleCheckboxChange = (event: React.ChangeEvent<HTMLInputElement>) => {
let checked = event.target.checked
setIsChecked(checked);
};
return (
<div className={MainStyles["main_wrapper"]}>
<div className={MainStyles["main_wrapper_breadcrumb"]}>
<img id={MainStyles["iconHome"]} src={Homeicon} alt="breadcrumb-icon" />
<img id={MainStyles["iconarrow"]} src={Leftarrow} alt="seta" />
<BreadcrumbTitle className={MainStyles.main_wrapper_breadcrumb_title} nameTitle={title}/>
<div className={MainStyles["main_wrapper"]}>
<div className={MainStyles["main_wrapper_breadcrumb"]}>
<fieldset className={MainStyles["main_wrapper_breadcrumb-images"]}>
<a href="/">
<img id={MainStyles["iconHome"]} src={Homeicon} alt="breadcrumb-icon" />
</a>
<img id={MainStyles["iconarrow"]} src={Leftarrow} alt="seta" />
</fieldset>
<a href="/">
<BreadcrumbTitle className={MainStyles.main_wrapper_breadcrumb_title} nameTitle={title}/>
</a>
</div>
<div className={MainStyles["main_wrapper_contend"]}>
<Title className={MainStyles.main_wrapper_contend_title} nameTitle={title} />
<div className={MainStyles["main_wrapper_contend-main"]}>
<div className={MainStyles["main_wrapper_contend-main-departaments"]}>
<button onClick={() => handleClick("Sobre")}
className={activeSection === "Sobre" ? MainStyles["btn_open"] : MainStyles["btn_close"]}
>
Sobre
</button>
<button
className={activeSection === "Forma de Pagamento" ? MainStyles["btn_open"] : MainStyles["btn_close"]}
>
Forma de Pagamento
</button>
<button
className={activeSection === "Entrega" ? MainStyles["btn_open"] : MainStyles["btn_close"]}
>
Entrega
</button>
<button
className={activeSection === "Entrega" ? MainStyles["btn_open"] : MainStyles["btn_close"]}
>
Troca e Devolução
</button>
<button
className={activeSection === "Entrega" ? MainStyles["btn_open"] : MainStyles["btn_close"]}
>
Segurança e Privacidade
</button>
<button onClick={() => handleClick("Contato")}
className={activeSection === "Contato" ? MainStyles["btn_open"] : MainStyles["btn_close"]}
>
Contato
</button>
</div>
<div className={MainStyles["main_wrapper_contend-main-section"]}>
<section id={MainStyles["Sobre"]}
className={activeSection === "Sobre" ? MainStyles["active"] : MainStyles["hiden"]}
>
<h2 id={MainStyles["title"]}>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>
<br />
<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>
<br />
<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>
</section>
<Formik
validationSchema={FormShecma}
initialValues={initialValues}
id={MainStyles["Contato"]}
onSubmit={handleFormikSubmit}
>
{({isSubmitting ,errors,touched}) => (
<Form
id={MainStyles["contact"]}
className={activeSection === "Contato" ? MainStyles["active"] : MainStyles["hiden"]}
>
<FormTitle className={MainStyles["contactTitlte"]} nameTitle="Preencha o formulário "/>
<Inputform className={MainStyles.form_col}
id={MainStyles.Name}
type="text" name="name"
Label="NAME"
placeholder="Seu nome completo"
Errorclass={MainStyles.form_col_Invalid}
/>
<Inputform className={MainStyles.form_col}
id={MainStyles.Email}
Label="E-MAIL" name="email"
type="email"
placeholder="Seu e-mail"
Errorclass={MainStyles.form_col_Invalid}
/>
<Inputform className={MainStyles.form_col}
id={MainStyles.Cpf}
Label="CPF" name="cpf"
type="text"
placeholder="000.000.000-00"
Errorclass={MainStyles.form_col_Invalid}
/>
<Inputform className={MainStyles.form_col}
id={MainStyles.birthdate}
Label="DATA DE NASCIMENTO" name="birthdate"
type="text"
placeholder="00.00.0000"
Errorclass={MainStyles.form_col_Invalid}
/>
<Inputform className={MainStyles.form_col}
id={MainStyles.Phone}
Label="TELEFONE" name="phone"
type="text"
placeholder="(00) 00000-0000"
Errorclass={MainStyles.form_col_Invalid}
/>
<Inputform className={MainStyles.form_col}
id={MainStyles.instagram}
Label="INSTAGRAM" name="instagram"
type="text"
placeholder="@seuuser"
Errorclass={MainStyles.form_col_Invalid}
/>
<Inputform
className={MainStyles.form_check}
id={MainStyles.checkbox}
Label="Declaro que li e aceito" name="aceito"
Labelclass= {`${MainStyles.checkLabel} ${isChecked && MainStyles.checked}`}
Errorclass={MainStyles.form_col_Invalid}
type="checkbox"
checked={isChecked}
onClick={handleCheckboxChange}
Simbol="*"
Simbolclass={MainStyles.Symbol}
/>
<button type="submit">
CADASTRE-SE
</button>
{submitted && <span className={MainStyles["submitted"]}>*Formulário enviado com sucesso!</span>}
</Form>
)}
</Formik>
</div>
</div>
</div>
</div>
<div className={MainStyles["main_wrapper_contend"]}>
<Title className={MainStyles.main_wrapper_contend_title} nameTitle={title} />
conteudo da main
</div>
</div>
)
};
export { Home }
export default Institucional

View File

@ -0,0 +1,37 @@
import { BrowserRouter as Router,Routes, Route, Navigate } from 'react-router-dom';
import Institucional from '../Institucional';
import { RouterContext } from '../../contexts/React_Router_context';
interface pathtype {
currentRoute:string
navigate: (route: string) => void
}
const pathroot = {
Home: "/",
Cursos:"/Cursos",
SaibaMais:"/Saiba+&+Mais",
Institucional:"/Institucional"
}
const Routers = () => {
return(
<RouterContext.Consumer>
{({ currentRoute }:pathtype) => (
<Router>
<Routes>
<Route path={pathroot.Home} element={currentRoute === '/' ? <Institucional /> : null} />
<Route path={pathroot.Cursos} element={currentRoute === '/cursos' ? <div>estou no Cursos</div> : null} />
<Route path={pathroot.SaibaMais} element={currentRoute === '/saiba+&+mais' ? <div>estou no Saiba Mais</div> : null} />
<Route path={pathroot.Institucional} element={currentRoute === '/institucional' ? <Institucional /> : null} />
<Route path="*" element={<Navigate to={pathroot.Home}/>}/>
</Routes>
</Router>
)}
</RouterContext.Consumer>
)
}
export default Routers
export { pathroot }

View File

@ -0,0 +1,52 @@
import * as Yup from "yup";
import isCPF from 'cpf-check';
import moment from 'moment';
export default Yup.object().shape({
name: Yup.string()
.min(2, "* O nome deve ter pelo menos 2 caracteres")
.required("* Campo Obrigatório"),
email: Yup.string()
.matches(
/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@(?:gmail|hotmail|outlook)\.com$/,
"Apenas emails Pessoais (Gmail, Hotmail ou outlook) são permitidos"
)
.required("* Campo Obrigatório")
.email("* Email inválido"),
cpf: Yup.string()
.required("* Campo Obrigatório")
.transform(value => isCPF.format(value))
.test("cpf-valid", "* CPF inválido", value => isCPF.validate(value))
,
birthdate: Yup.string()
.matches(/^(0?[1-9]|[12][0-9]|3[01])\/?(0?[1-9]|1[012])\/?(\d{4})$/,"Data de nascimento inválida")
.test('is-valid-date', '* Data de nascimento inválida', value => moment(value, "DD/MM/YYYY").isValid())
.required("* Campo obrigatório")
.transform(value => moment(value, "DD/MM/YYYY").format("DD/MM/YYYY")),
phone:Yup.string()
.matches(/^\(?\d{2}\)?[\s-]?\d{5}-?\d{4}$/, '* numero invalido')
.required("* Campo Obrigatório"),
instagram:Yup.string()
.matches(/^@?[a-zA-Z0-9_]+$/, "* Formato de usuário inválido")
.max(30, "* O nome de usuário não pode ter mais de 30 caracteres"),
aceito: Yup.boolean()
.required()
.test(
"checkbox-checked",
"",
value => value === true
)
});

View File

@ -1,26 +1,20 @@
{
"compilerOptions": {
"target": "es5",
"lib": [
"dom",
"dom.iterable",
"esnext"
],
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"noFallthroughCasesInSwitch": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "react-jsx"
},
"include": [
"src"
]
"compilerOptions": {
"target": "es5",
"lib": ["dom", "dom.iterable", "esnext"],
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"noFallthroughCasesInSwitch": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "react-jsx"
},
"include": ["src", "Router"]
}

File diff suppressed because it is too large Load Diff