diff --git a/README.md b/README.md index ccf7a272..b2157627 100644 --- a/README.md +++ b/README.md @@ -83,6 +83,23 @@ Esse projeto é usado pela [SouJunior](https://github.com/SouJunior). [Projeto Vagas - Backend](https://github.com/SouJunior/vagas-backend) + +## Autor(es) 🙎🏻‍♂️ + +- Max Faria | [GitHub](https://github.com/max-faria) - [Linkedin](https://www.linkedin.com/in/maxfariaa/) +- Isabela S. Hyeda Buitoni | [GitHub](https://github.com/isabelahyeda) - [Linkedin](https://www.linkedin.com/in/isabelahyeda/) +- Leonardo Dias Monteiro | [GitHub](https://github.com/Leodias2204) - [Linkedin](https://www.linkedin.com/in/leonardo-dias-monteiro-54642264/) + +## Ex-Autor(es) 🙎🏻‍♂️ + +- Filipe Reis | [GitHub](https://github.com/FilipeLeoni) - [LinkedIn](https://www.linkedin.com/in/filipe-leoni-5745551a8/) +- Igor Gonçalves | [GitHub](https://github.com/igords-goncalves) - [Linkedin](https://www.linkedin.com/in/igords-goncalves/) +- João Vitor Kremer | [GitHub](https://github.com/JoaoKremerDev) - [LinkedIn](https://www.linkedin.com/in/joaokremer/) +- Alberto Santos | [GitHub](https://github.com/allbertuu) - [LinkedIn](https://www.linkedin.com/in/albertov-albuquerque/) - [Portfólio](https://portfolio-allbertuu.vercel.app/) +- Carlos Junior | [GitHub](https://github.com/CarlosJunioor) - [LinkedIn](https://www.linkedin.com/in/carlosjuniordev/) +- Rafael Pires | [GitHub](https://github.com/RafaelPires2) - [Linkedin](https://www.linkedin.com/in/rafael-pires-075891212/) +- Silvia Luiza | [GitHub](https://github.com/SilviaLTeixeira) - [LinkedIn](https://www.linkedin.com/in/silvialuiza/) + ## Feedback 💬 Se você tiver algum feedback, por favor nos deixe saber por meio do nosso [site](https://soujunior.tech). Ou fazendo uma [contribuição](#contribuição-). diff --git a/package-lock.json b/package-lock.json index 4476431f..51a0a134 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,8 @@ "@emotion/styled": "^11.11.0", "@hookform/resolvers": "^2.9.10", "@mui/icons-material": "^5.15.13", - "@mui/material": "^5.15.13", + "@mui/material": "^5.16.6", + "@mui/styled-engine-sc": "^6.0.0-alpha.18", "@phosphor-icons/react": "^2.0.9", "@tiptap/extension-bubble-menu": "^2.0.0-beta.206", "@tiptap/extension-bullet-list": "^2.0.0-beta.209", @@ -42,6 +43,8 @@ "prosemirror-view": "^1.30.0", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-ga": "^3.3.1", + "react-ga4": "^2.1.0", "react-hook-form": "^7.41.0", "react-icons": "^4.10.1", "react-input-mask": "^2.0.4", @@ -49,12 +52,11 @@ "react-markdown": "^9.0.1", "react-number-format": "^5.1.4", "react-query": "^3.39.3", - "react-router-dom": "^6.3.0", + "react-router-dom": "^6.26.0", "react-scripts": "5.0.1", - "react-select": "^5.7.2", "react-toastify": "^9.1.1", "rehype-raw": "^7.0.0", - "styled-components": "^5.3.5", + "styled-components": "^6.1.12", "swiper": "^9.3.2", "tiptap": "^1.32.2", "uuid": "^9.0.0", @@ -2590,11 +2592,6 @@ } } }, - "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.8.1", "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", @@ -2710,6 +2707,7 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.0.tgz", "integrity": "sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==", + "dev": true, "dependencies": { "@floating-ui/utils": "^0.2.1" } @@ -2718,27 +2716,17 @@ "version": "1.6.3", "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.3.tgz", "integrity": "sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==", + "dev": true, "dependencies": { "@floating-ui/core": "^1.0.0", "@floating-ui/utils": "^0.2.0" } }, - "node_modules/@floating-ui/react-dom": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.8.tgz", - "integrity": "sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==", - "dependencies": { - "@floating-ui/dom": "^1.6.1" - }, - "peerDependencies": { - "react": ">=16.8.0", - "react-dom": ">=16.8.0" - } - }, "node_modules/@floating-ui/utils": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz", - "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==" + "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==", + "dev": true }, "node_modules/@hookform/resolvers": { "version": "2.9.11", @@ -3681,41 +3669,10 @@ "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==" }, - "node_modules/@mui/base": { - "version": "5.0.0-beta.39", - "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.39.tgz", - "integrity": "sha512-puyUptF7VJ+9/dMIRLF+DLR21cWfvejsA6OnatfJfqFp8aMhya7xQtvYLEfCch6ahvFZvNC9FFEGGR+qkgFjUg==", - "dependencies": { - "@babel/runtime": "^7.23.9", - "@floating-ui/react-dom": "^2.0.8", - "@mui/types": "^7.2.13", - "@mui/utils": "^5.15.13", - "@popperjs/core": "^2.11.8", - "clsx": "^2.1.0", - "prop-types": "^15.8.1" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@types/react": "^17.0.0 || ^18.0.0", - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, "node_modules/@mui/core-downloads-tracker": { - "version": "5.15.13", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.15.13.tgz", - "integrity": "sha512-ERsk9EWpiitSiKnmUdFJGshtFk647l4p7r+mjRWe/F1l5kT1NTTKkaeDLcK3/lsy0udXjMgcG0bNwzbYBdDdhQ==", + "version": "5.16.6", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.16.6.tgz", + "integrity": "sha512-kytg6LheUG42V8H/o/Ptz3olSO5kUXW9zF0ox18VnblX6bO2yif1FPItgc3ey1t5ansb1+gbe7SatntqusQupg==", "funding": { "type": "opencollective", "url": "https://opencollective.com/mui-org" @@ -3747,21 +3704,21 @@ } }, "node_modules/@mui/material": { - "version": "5.15.13", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.15.13.tgz", - "integrity": "sha512-E+QisOJcIzTTyeJ0o3lgYMcyrmCydb2S4cn9vTtGpIB9uR6fQ6La3dIGsXgYEGyeOB9YkWzQbNzYzvyODGEWKA==", + "version": "5.16.6", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.16.6.tgz", + "integrity": "sha512-0LUIKBOIjiFfzzFNxXZBRAyr9UQfmTAFzbt6ziOU2FDXhorNN2o3N9/32mNJbCA8zJo2FqFU6d3dtoqUDyIEfA==", "dependencies": { "@babel/runtime": "^7.23.9", - "@mui/base": "5.0.0-beta.39", - "@mui/core-downloads-tracker": "^5.15.13", - "@mui/system": "^5.15.13", - "@mui/types": "^7.2.13", - "@mui/utils": "^5.15.13", + "@mui/core-downloads-tracker": "^5.16.6", + "@mui/system": "^5.16.6", + "@mui/types": "^7.2.15", + "@mui/utils": "^5.16.6", + "@popperjs/core": "^2.11.8", "@types/react-transition-group": "^4.4.10", "clsx": "^2.1.0", "csstype": "^3.1.3", "prop-types": "^15.8.1", - "react-is": "^18.2.0", + "react-is": "^18.3.1", "react-transition-group": "^4.4.5" }, "engines": { @@ -3791,12 +3748,12 @@ } }, "node_modules/@mui/private-theming": { - "version": "5.15.13", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.15.13.tgz", - "integrity": "sha512-j5Z2pRi6talCunIRIzpQERSaHwLd5EPdHMwIKDVCszro1RAzRZl7WmH68IMCgQmJMeglr+FalqNuq048qptGAg==", + "version": "5.16.6", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.16.6.tgz", + "integrity": "sha512-rAk+Rh8Clg7Cd7shZhyt2HGTTE5wYKNSJ5sspf28Fqm/PZ69Er9o6KX25g03/FG2dfpg5GCwZh/xOojiTfm3hw==", "dependencies": { "@babel/runtime": "^7.23.9", - "@mui/utils": "^5.15.13", + "@mui/utils": "^5.16.6", "prop-types": "^15.8.1" }, "engines": { @@ -3817,9 +3774,9 @@ } }, "node_modules/@mui/styled-engine": { - "version": "5.15.11", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.15.11.tgz", - "integrity": "sha512-So21AhAngqo07ces4S/JpX5UaMU2RHXpEA6hNzI6IQjd/1usMPxpgK8wkGgTe3JKmC2KDmH8cvoycq5H3Ii7/w==", + "version": "5.16.6", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.16.6.tgz", + "integrity": "sha512-zaThmS67ZmtHSWToTiHslbI8jwrmITcN93LQaR2lKArbvS7Z3iLkwRoiikNWutx9MBs8Q6okKvbZq1RQYB3v7g==", "dependencies": { "@babel/runtime": "^7.23.9", "@emotion/cache": "^11.11.0", @@ -3847,16 +3804,37 @@ } } }, + "node_modules/@mui/styled-engine-sc": { + "version": "6.0.0-alpha.18", + "resolved": "https://registry.npmjs.org/@mui/styled-engine-sc/-/styled-engine-sc-6.0.0-alpha.18.tgz", + "integrity": "sha512-W3mqR1K01rPL0BVNTgGpIYxdbQ/nTAlwYaohRdmX7FZvbm1yKw9F90OIGxM503dfRMVBi6a/neYPgIUebcGsHw==", + "dependencies": { + "@babel/runtime": "^7.23.9", + "csstype": "^3.1.3", + "hoist-non-react-statics": "^3.3.2", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "styled-components": "^6.0.0" + } + }, "node_modules/@mui/system": { - "version": "5.15.13", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.15.13.tgz", - "integrity": "sha512-eHaX3sniZXNWkxX0lmcLxROhQ5La0HkOuF7zxbSdAoHUOk07gboQYmF6hSJ/VBFx/GLanIw67FMTn88vc8niLg==", + "version": "5.16.6", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.16.6.tgz", + "integrity": "sha512-5xgyJjBIMPw8HIaZpfbGAaFYPwImQn7Nyh+wwKWhvkoIeDosQ1ZMVrbTclefi7G8hNmqhip04duYwYpbBFnBgw==", "dependencies": { "@babel/runtime": "^7.23.9", - "@mui/private-theming": "^5.15.13", - "@mui/styled-engine": "^5.15.11", - "@mui/types": "^7.2.13", - "@mui/utils": "^5.15.13", + "@mui/private-theming": "^5.16.6", + "@mui/styled-engine": "^5.16.6", + "@mui/types": "^7.2.15", + "@mui/utils": "^5.16.6", "clsx": "^2.1.0", "csstype": "^3.1.3", "prop-types": "^15.8.1" @@ -3887,9 +3865,9 @@ } }, "node_modules/@mui/types": { - "version": "7.2.13", - "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.13.tgz", - "integrity": "sha512-qP9OgacN62s+l8rdDhSFRe05HWtLLJ5TGclC9I1+tQngbssu0m2dmFZs+Px53AcOs9fD7TbYd4gc9AXzVqO/+g==", + "version": "7.2.15", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.15.tgz", + "integrity": "sha512-nbo7yPhtKJkdf9kcVOF8JZHPZTmqXjJ/tI0bdWgHg5tp9AnIN4Y7f7wm9T+0SyGYJk76+GYZ8Q5XaTYAsUHN0Q==", "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0" }, @@ -3900,14 +3878,16 @@ } }, "node_modules/@mui/utils": { - "version": "5.15.13", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.15.13.tgz", - "integrity": "sha512-qNlR9FLEhORC4zVZ3fzF48213EhP/92N71AcFbhHN73lPJjAbq9lUv+71P7uEdRHdrrOlm8+1zE8/OBy6MUqdg==", + "version": "5.16.6", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.16.6.tgz", + "integrity": "sha512-tWiQqlhxAt3KENNiSRL+DIn9H5xNVK6Jjf70x3PnfQPz1MPBdh7yyIcAyVBT9xiw7hP3SomRhPR7hzBMBCjqEA==", "dependencies": { "@babel/runtime": "^7.23.9", - "@types/prop-types": "^15.7.11", + "@mui/types": "^7.2.15", + "@types/prop-types": "^15.7.12", + "clsx": "^2.1.1", "prop-types": "^15.8.1", - "react-is": "^18.2.0" + "react-is": "^18.3.1" }, "engines": { "node": ">=12.0.0" @@ -4079,9 +4059,9 @@ "integrity": "sha512-dyHY+sMF0ihPus3O27ODd4+agdHMEmuRdyiZJ2CCWjPV5UFmn17ZbElvk6WOGVE4rdCJKZQCrPV2BcikOMLUGQ==" }, "node_modules/@remix-run/router": { - "version": "1.15.3", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.15.3.tgz", - "integrity": "sha512-Oy8rmScVrVxWZVOpEF57ovlnhpZ8CCPlnIIumVcV9nFdiSIrus99+Lw78ekXyGvVDlIsFJbSfmSovJUhCWYV3w==", + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.19.0.tgz", + "integrity": "sha512-zDICCLKEwbVYTS6TjYaWtHXxkdoUvD/QXvyVZjGCsWz5vyH7aFeONlPffPdW+Y/t6KT0MgXb2Mfjun9YpWN1dA==", "engines": { "node": ">=14.0.0" } @@ -5208,9 +5188,9 @@ "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==" }, "node_modules/@types/prop-types": { - "version": "15.7.11", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", - "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==" + "version": "15.7.12", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", + "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==" }, "node_modules/@types/q": { "version": "1.5.8", @@ -5356,6 +5336,11 @@ "csstype": "^3.0.2" } }, + "node_modules/@types/stylis": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@types/stylis/-/stylis-4.2.5.tgz", + "integrity": "sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw==" + }, "node_modules/@types/testing-library__jest-dom": { "version": "5.14.9", "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.9.tgz", @@ -6519,21 +6504,6 @@ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/babel-plugin-styled-components": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.1.4.tgz", - "integrity": "sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", - "@babel/plugin-syntax-jsx": "^7.22.5", - "lodash": "^4.17.21", - "picomatch": "^2.3.1" - }, - "peerDependencies": { - "styled-components": ">= 2" - } - }, "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", @@ -7101,9 +7071,9 @@ } }, "node_modules/clsx": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz", - "integrity": "sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", "engines": { "node": ">=6" } @@ -13872,7 +13842,8 @@ "node_modules/memoize-one": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", - "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==", + "dev": true }, "node_modules/merge-descriptors": { "version": "1.0.1", @@ -15277,9 +15248,9 @@ } }, "node_modules/postcss": { - "version": "8.4.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.36.tgz", - "integrity": "sha512-/n7eumA6ZjFHAsbX30yhHup/IMkOmlmvtEi7P+6RMYf+bGJSUHc3geH4a0NSZxAz/RJfiS9tooCTs9LAVYUZKw==", + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", "funding": [ { "type": "opencollective", @@ -15297,7 +15268,7 @@ "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.0.0", - "source-map-js": "^1.1.0" + "source-map-js": "^1.2.0" }, "engines": { "node": "^10 || ^12 || >=14" @@ -17025,6 +16996,20 @@ "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz", "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==" }, + "node_modules/react-ga": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/react-ga/-/react-ga-3.3.1.tgz", + "integrity": "sha512-4Vc0W5EvXAXUN/wWyxvsAKDLLgtJ3oLmhYYssx+YzphJpejtOst6cbIHCIyF50Fdxuf5DDKqRYny24yJ2y7GFQ==", + "peerDependencies": { + "prop-types": "^15.6.0", + "react": "^15.6.2 || ^16.0 || ^17 || ^18" + } + }, + "node_modules/react-ga4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/react-ga4/-/react-ga4-2.1.0.tgz", + "integrity": "sha512-ZKS7PGNFqqMd3PJ6+C2Jtz/o1iU9ggiy8Y8nUeksgVuvNISbmrQtJiZNvC/TjDsqD0QlU5Wkgs7i+w9+OjHhhQ==" + }, "node_modules/react-hook-form": { "version": "7.51.1", "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.51.1.tgz", @@ -17145,11 +17130,11 @@ } }, "node_modules/react-router": { - "version": "6.22.3", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.22.3.tgz", - "integrity": "sha512-dr2eb3Mj5zK2YISHK++foM9w4eBnO23eKnZEDs7c880P6oKbrjz/Svg9+nxqtHQK+oMW4OtjZca0RqPglXxguQ==", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.26.0.tgz", + "integrity": "sha512-wVQq0/iFYd3iZ9H2l3N3k4PL8EEHcb0XlU2Na8nEwmiXgIUElEH6gaJDtUQxJ+JFzmIXaQjfdpcGWaM6IoQGxg==", "dependencies": { - "@remix-run/router": "1.15.3" + "@remix-run/router": "1.19.0" }, "engines": { "node": ">=14.0.0" @@ -17159,12 +17144,12 @@ } }, "node_modules/react-router-dom": { - "version": "6.22.3", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.22.3.tgz", - "integrity": "sha512-7ZILI7HjcE+p31oQvwbokjk6OA/bnFxrhJ19n82Ex9Ph8fNAq+Hm/7KchpMGlTgWhUxRHMMCut+vEtNpWpowKw==", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.26.0.tgz", + "integrity": "sha512-RRGUIiDtLrkX3uYcFiCIxKFWMcWQGMojpYZfcstc63A1+sSnVgILGIm9gNUA6na3Fm1QuPGSBQH2EMbAZOnMsQ==", "dependencies": { - "@remix-run/router": "1.15.3", - "react-router": "6.22.3" + "@remix-run/router": "1.19.0", + "react-router": "6.26.0" }, "engines": { "node": ">=14.0.0" @@ -17250,6 +17235,7 @@ "version": "5.8.0", "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.8.0.tgz", "integrity": "sha512-TfjLDo58XrhP6VG5M/Mi56Us0Yt8X7xD6cDybC7yoRMUNm7BGO7qk8J0TLQOua/prb8vUOtsfnXZwfm30HGsAA==", + "dev": true, "dependencies": { "@babel/runtime": "^7.12.0", "@emotion/cache": "^11.4.0", @@ -18223,9 +18209,9 @@ } }, "node_modules/source-map-js": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.1.0.tgz", - "integrity": "sha512-9vC2SfsJzlej6MAaMPLu8HiBSHGdRAJ9hVFYN1ibZoNkeanmDmLUcIrj6G9DGL7XMJ54AKg/G75akXl1/izTOw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", "engines": { "node": ">=0.10.0" } @@ -18707,23 +18693,22 @@ } }, "node_modules/styled-components": { - "version": "5.3.11", - "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.3.11.tgz", - "integrity": "sha512-uuzIIfnVkagcVHv9nE0VPlHPSCmXIUGKfJ42LNjxCCTDTL5sgnJ8Z7GZBq0EnLYGln77tPpEpExt2+qa+cZqSw==", - "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" + "version": "6.1.12", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.1.12.tgz", + "integrity": "sha512-n/O4PzRPhbYI0k1vKKayfti3C/IGcPf+DqcrOB7O/ab9x4u/zjqraneT5N45+sIe87cxrCApXM8Bna7NYxwoTA==", + "dependencies": { + "@emotion/is-prop-valid": "1.2.2", + "@emotion/unitless": "0.8.1", + "@types/stylis": "4.2.5", + "css-to-react-native": "3.2.0", + "csstype": "3.1.3", + "postcss": "8.4.38", + "shallowequal": "1.1.0", + "stylis": "4.3.2", + "tslib": "2.6.2" }, "engines": { - "node": ">=10" + "node": ">= 16" }, "funding": { "type": "opencollective", @@ -18731,33 +18716,13 @@ }, "peerDependencies": { "react": ">= 16.8.0", - "react-dom": ">= 16.8.0", - "react-is": ">= 16.8.0" - } - }, - "node_modules/styled-components/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/styled-components/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" + "react-dom": ">= 16.8.0" } }, - "node_modules/styled-components/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } + "node_modules/styled-components/node_modules/stylis": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.2.tgz", + "integrity": "sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg==" }, "node_modules/stylehacks": { "version": "5.1.1", @@ -19872,6 +19837,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==", + "dev": true, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0" }, diff --git a/package.json b/package.json index 6bb066cb..d6b85262 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,8 @@ "@emotion/styled": "^11.11.0", "@hookform/resolvers": "^2.9.10", "@mui/icons-material": "^5.15.13", - "@mui/material": "^5.15.13", + "@mui/material": "^5.16.6", + "@mui/styled-engine-sc": "^6.0.0-alpha.18", "@phosphor-icons/react": "^2.0.9", "@tiptap/extension-bubble-menu": "^2.0.0-beta.206", "@tiptap/extension-bullet-list": "^2.0.0-beta.209", @@ -53,11 +54,11 @@ "react-markdown": "^9.0.1", "react-number-format": "^5.1.4", "react-query": "^3.39.3", - "react-router-dom": "^6.3.0", + "react-router-dom": "^6.26.0", "react-scripts": "5.0.1", "react-toastify": "^9.1.1", "rehype-raw": "^7.0.0", - "styled-components": "^5.3.5", + "styled-components": "^6.1.12", "swiper": "^9.3.2", "tiptap": "^1.32.2", "uuid": "^9.0.0", diff --git a/public/index.html b/public/index.html index 42929b11..6f9dbce5 100644 --- a/public/index.html +++ b/public/index.html @@ -46,6 +46,7 @@ a.appendChild(r); })(window, document, 'https://static.hotjar.com/c/hotjar-', '.js?sv='); + diff --git a/src/assets/imgs/blogSouJunior-img.svg b/src/assets/imgs/blogSouJunior-img.svg new file mode 100644 index 00000000..21a69e84 --- /dev/null +++ b/src/assets/imgs/blogSouJunior-img.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/components/FooterDefault/index.tsx b/src/components/FooterDefault/index.tsx index ff63cc2e..b556ad4d 100644 --- a/src/components/FooterDefault/index.tsx +++ b/src/components/FooterDefault/index.tsx @@ -45,11 +45,11 @@ const FooterDefault = () => {
  • - Portal de mentoria + Blog da SouJunior
  • diff --git a/src/components/FooterDefault/styles.ts b/src/components/FooterDefault/styles.ts index 3cbc7c7d..f635e584 100644 --- a/src/components/FooterDefault/styles.ts +++ b/src/components/FooterDefault/styles.ts @@ -9,6 +9,7 @@ export const Footer = styled.footer` display: flex; justify-content: center; padding: 25px 0; + background-color: white; .mobile-wrapper { display: none; diff --git a/src/components/HeaderDefault/index.tsx b/src/components/HeaderDefault/index.tsx index c992fbc4..2e2201e6 100644 --- a/src/components/HeaderDefault/index.tsx +++ b/src/components/HeaderDefault/index.tsx @@ -9,6 +9,7 @@ import JobFilter from './components/JobFilter'; import * as S from './styles'; import { CaretLeft } from 'phosphor-react'; +import Header from '../Header'; interface HeaderProps { isActive: boolean; @@ -61,7 +62,7 @@ const HeaderDefault: React.FC = ({ isActive }) => { const shouldShowJobFilter = (isActive && isLaptop) || feedJob; const isFeed = !isLaptop && feedJob; - + return ( <> {isMobileOpen && ( diff --git a/src/components/Home/HomeJobFilter/styles.ts b/src/components/Home/HomeJobFilter/styles.ts index edd06073..c61e1061 100644 --- a/src/components/Home/HomeJobFilter/styles.ts +++ b/src/components/Home/HomeJobFilter/styles.ts @@ -72,6 +72,7 @@ export const Input = styled.input` padding: 0 56px; color: #515151; background-color: transparent; + outline: none; text-overflow: ellipsis; ::placeholder { diff --git a/src/components/JobFilterPerfil/index.tsx b/src/components/JobFilterPerfil/index.tsx new file mode 100644 index 00000000..9ca6ee1e --- /dev/null +++ b/src/components/JobFilterPerfil/index.tsx @@ -0,0 +1,75 @@ +import { useState, useEffect } from 'react'; +import { useNavigate, useLocation, useSearchParams } from 'react-router-dom'; + +import Search from '../../assets/imgs/search.svg'; +import Location from '../../assets/imgs/location.svg'; + +import * as S from './styles'; +import SwitchButton from '../SwitchButton'; + + +const JobFilterPerfil = () => { + const [searchParams, setSearchParams] = useSearchParams(); + const [searchTerm, setSearchTerm] = useState(searchParams.get('search') || '',); + const [location, setLocation] = useState(searchParams.get('location') || '',); + const [isSwitchChecked, setIsSwitchChecked] = useState(false); + const navigate = useNavigate(); + const { pathname } = useLocation(); + + useEffect(() => { + setIsSwitchChecked(false); + }, [searchTerm, location]); + + const handleSubmit = (event: any) => { + event.preventDefault(); + + if (pathname !== '/job') { + setSearchParams({}); + }; + + navigate(`/candidate-portal/job?search=${searchTerm}&location=${location}`); + }; + + return ( + + + setSearchTerm(event.target.value)} + /> + + + search btn + + + + + setLocation(event.target.value)} + className="location" + /> + + + location btn + + + + + setIsSwitchChecked(event.target.checked)} + /> + + {/* Pesquisar */} + + ); +}; + +export default JobFilterPerfil; diff --git a/src/components/JobFilterPerfil/styles.ts b/src/components/JobFilterPerfil/styles.ts new file mode 100644 index 00000000..6cf5391c --- /dev/null +++ b/src/components/JobFilterPerfil/styles.ts @@ -0,0 +1,83 @@ +import styled from 'styled-components'; + +export const Container = styled.form` + display: flex; + align-items: center; + justify-content: center; + gap: 16px; + height: 100%; + + @media (max-width: 1280px) { + .location { + display: none; + } + } + + @media (max-width: 1024px) { + gap: 8px; + } + + @media (max-width: 767px) { + width: 100%; + } +`; + +export const BoxInput = styled.div` + display: flex; + align-items: center; + position: relative; + width: 256px; + + @media (max-width: 767px) { + width: 100%; + } +`; + +export const Input = styled.input` + position: relative; + width: 100%; + height: 45px; + padding: 0 16px 0 40px; + border: 1px solid #c1dfff; + background: #eff3f9; + border-radius: 42px; + font-size: 14px; + line-height: 120%; + color: #666666; + outline: none; + + :focus { + outline-color: #1165ba; + } + + @media (max-width: 767px) { + height: 36px; + } +`; + +export const BtnIcon = styled.button` + position: absolute; + left: 14px; +`; + +// export const Button = styled.button` +// width: 116px; +// height: 45px; +// border: none; +// border-radius: 24px; +// background: #003986; +// font-family: 'Radio Canada'; +// font-size: 14px; +// line-height: 140%; +// color: #fff; +// cursor: pointer; +// transition: all 0.2s ease-in-out; + +// &:hover { +// opacity: 0.8; +// } + +// @media (max-width: 1024px) { +// display: none; +// } +// `; \ No newline at end of file diff --git a/src/components/JourneySection/components/JourneyResponsive/index.tsx b/src/components/JourneySection/components/JourneyResponsive/index.tsx index 46f76d59..25211c4a 100644 --- a/src/components/JourneySection/components/JourneyResponsive/index.tsx +++ b/src/components/JourneySection/components/JourneyResponsive/index.tsx @@ -38,7 +38,9 @@ const JourneyResponsive: React.FC = ({ data }) => { {item.content.map((paragraph, index) => (
    - {renderTextWithLinksAndBreaks(paragraph.text)} + {paragraph.text ? renderTextWithLinksAndBreaks(paragraph.text) + :paragraph.sub && {renderTextWithLinksAndBreaks(paragraph.sub)} + }
    ))}
    diff --git a/src/components/JourneySection/components/JourneyResponsive/types.ts b/src/components/JourneySection/components/JourneyResponsive/types.ts index 9a496cf2..aca55ed3 100644 --- a/src/components/JourneySection/components/JourneyResponsive/types.ts +++ b/src/components/JourneySection/components/JourneyResponsive/types.ts @@ -1,5 +1,6 @@ export interface Paragraph { - text: string; + text?: string; + sub?: string; } export interface JourneyResponsiveProps { diff --git a/src/components/JourneySection/components/RightContent/index.tsx b/src/components/JourneySection/components/RightContent/index.tsx index 9b233374..7e4ca371 100644 --- a/src/components/JourneySection/components/RightContent/index.tsx +++ b/src/components/JourneySection/components/RightContent/index.tsx @@ -28,8 +28,7 @@ const RightContent: React.FC = ({ content }) => { {paragraphs.map((paragraph, index) => (
    {paragraph.text ? renderTextWithLinksAndBreaks(paragraph.text) - :paragraph.sub ? {renderTextWithLinksAndBreaks(paragraph.sub)} - : null + :paragraph.sub && {renderTextWithLinksAndBreaks(paragraph.sub)} }
    ))} diff --git a/src/components/LoginCard/PopUpAntiFraudMessage/index.tsx b/src/components/LoginCard/PopUpAntiFraudMessage/index.tsx index 9a32fa3f..ce7210a2 100644 --- a/src/components/LoginCard/PopUpAntiFraudMessage/index.tsx +++ b/src/components/LoginCard/PopUpAntiFraudMessage/index.tsx @@ -50,7 +50,7 @@ const PopUpAntiFraudMessage = () => { '& .MuiAlert-message': { width: "100%" }, }} > - + Cuidado com fraudes de pessoas ou empresas que tentam se passar pela SouJunior! Ler Mais. diff --git a/src/components/LoginCard/UserForms/index.tsx b/src/components/LoginCard/UserForms/index.tsx index b707268e..4c4550e5 100644 --- a/src/components/LoginCard/UserForms/index.tsx +++ b/src/components/LoginCard/UserForms/index.tsx @@ -72,10 +72,8 @@ export const UserForms = (props: any): JSX.Element => { const navigate = useNavigate(); const auth: any = useContext(AuthContext); - // Recebe o tipo do usuário const userType = props.type; - // Define qual formulário deverá ser validado const getFormValidation = isLogin === 'login' ? schemaUserLoginForm : schemaUserRegisterForm; @@ -89,12 +87,10 @@ export const UserForms = (props: any): JSX.Element => { resolver: yupResolver(getFormValidation), }); - // Realiza o login e maniopula dados async function handleFormOnSubmit() { setIsFormSubmitted(true); try { - // Recebe dados do contexto para verificação await auth.login(email, password, userType); navigate('/candidate-portal'); setPopUpAntiFraudOpen(true); @@ -271,6 +267,7 @@ export const UserForms = (props: any): JSX.Element => { placeholder="Digite seu nome completo" aria-label="Nome do candidato" maxLength={50} + pattern="[A-Za-z\s]+" > {errors.registerName && ( @@ -371,20 +368,22 @@ export const UserForms = (props: any): JSX.Element => { - {hasError && ( {errors.privacyTerms && ( <>{errors.privacyTerms.message} )} - )} {errorEmail && <>{errorEmail} } diff --git a/src/components/Portal/Header/styles.ts b/src/components/Portal/Header/styles.ts index cb1a761e..db74a3f9 100644 --- a/src/components/Portal/Header/styles.ts +++ b/src/components/Portal/Header/styles.ts @@ -59,10 +59,9 @@ export const Name = styled.div` @media (max-width: 540px) { display: none; - } - - + } `; + export const Email = styled.div` font-size: 14px; font-weight: 400; diff --git a/src/components/Portal/ProfileModal/ChangePasswordModal/index.tsx b/src/components/Portal/ProfileModal/ChangePasswordModal/index.tsx index 1eb9aad6..5652aa87 100644 --- a/src/components/Portal/ProfileModal/ChangePasswordModal/index.tsx +++ b/src/components/Portal/ProfileModal/ChangePasswordModal/index.tsx @@ -20,12 +20,11 @@ const ChangePasswordModal = ({ setChangePasswordModal }: ChangePasswordModalProp const modalRef = useRef(null); const handleClick = () => { - setChangePasswordModal (false); - auth.user.type === 'USER' ? - (navigate('/candidate-portal')) - : - (navigate('/company-portal')) - setTimeout(() => window.location.reload(), 0) + setChangePasswordModal(false); + navigate('/change-password'); + setTimeout(() => { + window.location.reload(); + }, 0); document.body.style.overflow = 'auto'; } diff --git a/src/components/Portal/ProfileModal/PolicyModal/index.tsx b/src/components/Portal/ProfileModal/PolicyModal/index.tsx index d4474e97..a8bc97d6 100644 --- a/src/components/Portal/ProfileModal/PolicyModal/index.tsx +++ b/src/components/Portal/ProfileModal/PolicyModal/index.tsx @@ -21,6 +21,15 @@ const PolicyModal: React.FC = ({ setPolicyModal }) => { setPolicyModal(false); }; + useEffect(() => { + const handleOutsideClick = (e: MouseEvent) => { + if (modalRef.current && e.target instanceof Node && !modalRef.current.contains(e.target)) { + setPolicyModal(false); + } + }; + document.addEventListener('mousedown', handleOutsideClick); + }, []); + return ( diff --git a/src/components/Portal/ProfileModal/TermsModal/index.tsx b/src/components/Portal/ProfileModal/TermsModal/index.tsx index d9d192fe..82c9bdca 100644 --- a/src/components/Portal/ProfileModal/TermsModal/index.tsx +++ b/src/components/Portal/ProfileModal/TermsModal/index.tsx @@ -21,6 +21,15 @@ const TermsModal: React.FC = ({ setTermsModal }) => { setTermsModal(false); }; + useEffect(() => { + const handleOutsideClick = (e: MouseEvent) => { + if (modalRef.current && e.target instanceof Node && !modalRef.current.contains(e.target)) { + setTermsModal(false); + } + }; + document.addEventListener('mousedown', handleOutsideClick); + }, []); + return ( diff --git a/src/components/SwitchButton/index.tsx b/src/components/SwitchButton/index.tsx new file mode 100644 index 00000000..abf838d2 --- /dev/null +++ b/src/components/SwitchButton/index.tsx @@ -0,0 +1,23 @@ +import * as React from 'react'; +import Switch from '@mui/material/Switch'; +import { Container } from './styles'; + +interface SwitchButtonProps { + checked: boolean; + onChange: (event: React.ChangeEvent) => void; +} + +export default function SwitchButton({ checked, onChange }: SwitchButtonProps) { + const text = checked ? 'Alerta criado' : 'Alerta de vagas'; + + return ( + +

    {text}

    + +
    + ); +} diff --git a/src/components/SwitchButton/styles.ts b/src/components/SwitchButton/styles.ts new file mode 100644 index 00000000..de86d8a9 --- /dev/null +++ b/src/components/SwitchButton/styles.ts @@ -0,0 +1,16 @@ +import styled from 'styled-components'; + + +export const Container = styled.div ` + display: flex; + align-items: center; + justify-content: center; + gap: 10px; + color: #666666; + + @media (max-width: 767px) { + h2 { + display: none; + } + } +` \ No newline at end of file diff --git a/src/hooks/useApi.ts b/src/hooks/useApi.ts index 5490044c..82e5b21a 100644 --- a/src/hooks/useApi.ts +++ b/src/hooks/useApi.ts @@ -236,7 +236,8 @@ export const useApi = () => ({ confirmNewPassword, }, { headers: { Authorization: `Bearer ${token}`, - },}); + },} + ); return res.data; }, diff --git a/src/pages/CandidatePortal.tsx b/src/pages/CandidatePortal.tsx index 7fe5a8fa..d2468382 100644 --- a/src/pages/CandidatePortal.tsx +++ b/src/pages/CandidatePortal.tsx @@ -2,39 +2,29 @@ import { Main, Container, Row, - Position, - ProfileButton, + Position + } from './styles/CandidatePortalStyles'; import Header from '../components/Portal/Header'; -import Search from '../components/Portal/Search'; -import CurriculumImage from '../assets/imgs/cv.svg'; -import { useNavigate } from 'react-router-dom'; import { AuthContext } from '../contexts/Auth/AuthContext'; import { useContext } from 'react'; import Footer from '../components/Portal/Footer'; import PopUpAntiFraudMessage from '../components/LoginCard/PopUpAntiFraudMessage'; - +import JobFilterPerfil from '../components/JobFilterPerfil'; const CandidatePortal = () => { - const navigate = useNavigate(); const { popUpAntiFraudOpen } = useContext(AuthContext); const auth: any = useContext(AuthContext); - + return (
    - {popUpAntiFraudOpen && } + {popUpAntiFraudOpen && }
    - +

    Olá, {auth.user.name}

    - {/* navigate('/candidate-settings')}> -
    - currículo -
    -
    Atualizar meu currículo
    -
    */}