development #12

Merged
DaviKlein merged 22 commits from development into main 2023-01-21 00:34:19 +00:00
74 changed files with 31744 additions and 73 deletions

23
.gitignore vendored Normal file
View File

@ -0,0 +1,23 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
/node_modules
/.pnp
.pnp.js
# testing
/coverage
# production
/build
# misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local
npm-debug.log*
yarn-debug.log*
yarn-error.log*

View File

@ -1,93 +1,46 @@
# Desafio REACT e Typescript
# Getting Started with Create React App
This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).
## Available Scripts
## Getting started
In the project directory, you can run:
To make it easy for you to get started with GitLab, here's a list of recommended next steps.
### `npm start`
Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)!
Runs the app in the development mode.\
Open [http://localhost:3000](http://localhost:3000) to view it in the browser.
## Add your files
The page will reload if you make edits.\
You will also see any lint errors in the console.
- [ ] [Create](https://gitlab.com/-/experiment/new_project_readme_content:6ad80019019932803f32a91ae13cb05b?https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://gitlab.com/-/experiment/new_project_readme_content:6ad80019019932803f32a91ae13cb05b?https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files
- [ ] [Add files using the command line](https://gitlab.com/-/experiment/new_project_readme_content:6ad80019019932803f32a91ae13cb05b?https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command:
### `npm test`
```
cd existing_repo
git remote add origin https://gitlab.com/m3-academy/fase-06/desafio-react-e-typescript.git
git branch -M main
git push -uf origin main
```
Launches the test runner in the interactive watch mode.\
See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.
## Integrate with your tools
### `npm run build`
- [ ] [Set up project integrations](https://gitlab.com/-/experiment/new_project_readme_content:6ad80019019932803f32a91ae13cb05b?https://gitlab.com/m3-academy/fase-06/desafio-react-e-typescript/-/settings/integrations)
Builds the app for production to the `build` folder.\
It correctly bundles React in production mode and optimizes the build for the best performance.
## Collaborate with your team
The build is minified and the filenames include the hashes.\
Your app is ready to be deployed!
- [ ] [Invite team members and collaborators](https://gitlab.com/-/experiment/new_project_readme_content:6ad80019019932803f32a91ae13cb05b?https://docs.gitlab.com/ee/user/project/members/)
- [ ] [Create a new merge request](https://gitlab.com/-/experiment/new_project_readme_content:6ad80019019932803f32a91ae13cb05b?https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html)
- [ ] [Automatically close issues from merge requests](https://gitlab.com/-/experiment/new_project_readme_content:6ad80019019932803f32a91ae13cb05b?https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically)
- [ ] [Enable merge request approvals](https://gitlab.com/-/experiment/new_project_readme_content:6ad80019019932803f32a91ae13cb05b?https://docs.gitlab.com/ee/user/project/merge_requests/approvals/)
- [ ] [Automatically merge when pipeline succeeds](https://gitlab.com/-/experiment/new_project_readme_content:6ad80019019932803f32a91ae13cb05b?https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html)
See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.
## Test and Deploy
### `npm run eject`
Use the built-in continuous integration in GitLab.
**Note: this is a one-way operation. Once you `eject`, you cant go back!**
- [ ] [Get started with GitLab CI/CD](https://gitlab.com/-/experiment/new_project_readme_content:6ad80019019932803f32a91ae13cb05b?https://docs.gitlab.com/ee/ci/quick_start/index.html)
- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing(SAST)](https://gitlab.com/-/experiment/new_project_readme_content:6ad80019019932803f32a91ae13cb05b?https://docs.gitlab.com/ee/user/application_security/sast/)
- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://gitlab.com/-/experiment/new_project_readme_content:6ad80019019932803f32a91ae13cb05b?https://docs.gitlab.com/ee/topics/autodevops/requirements.html)
- [ ] [Use pull-based deployments for improved Kubernetes management](https://gitlab.com/-/experiment/new_project_readme_content:6ad80019019932803f32a91ae13cb05b?https://docs.gitlab.com/ee/user/clusters/agent/)
- [ ] [Set up protected environments](https://gitlab.com/-/experiment/new_project_readme_content:6ad80019019932803f32a91ae13cb05b?https://docs.gitlab.com/ee/ci/environments/protected_environments.html)
If you arent satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.
***
Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point youre on your own.
# Editing this README
You dont have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldnt feel obligated to use this feature. However we understand that this tool wouldnt be useful if you couldnt customize it when you are ready for it.
When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thank you to [makeareadme.com](https://gitlab.com/-/experiment/new_project_readme_content:6ad80019019932803f32a91ae13cb05b?https://www.makeareadme.com/) for this template.
## Learn More
## Suggestions for a good README
Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information.
## Name
Choose a self-explaining name for your project.
## Description
Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors.
## Badges
On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge.
## Visuals
Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method.
## Installation
Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection.
## Usage
Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README.
## Support
Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc.
## Roadmap
If you have ideas for releases in the future, it is a good idea to list them in the README.
## Contributing
State if you are open to contributions and what your requirements are for accepting them.
For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self.
You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser.
## Authors and acknowledgment
Show your appreciation to those who have contributed to the project.
## License
For open source projects, say how it is licensed.
## Project status
If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers.
You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).
To learn React, check out the [React documentation](https://reactjs.org/).

93
README.old.md Normal file
View File

@ -0,0 +1,93 @@
# Desafio REACT e Typescript
## Getting started
To make it easy for you to get started with GitLab, here's a list of recommended next steps.
Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)!
## Add your files
- [ ] [Create](https://gitlab.com/-/experiment/new_project_readme_content:6ad80019019932803f32a91ae13cb05b?https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://gitlab.com/-/experiment/new_project_readme_content:6ad80019019932803f32a91ae13cb05b?https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files
- [ ] [Add files using the command line](https://gitlab.com/-/experiment/new_project_readme_content:6ad80019019932803f32a91ae13cb05b?https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command:
```
cd existing_repo
git remote add origin https://gitlab.com/m3-academy/fase-06/desafio-react-e-typescript.git
git branch -M main
git push -uf origin main
```
## Integrate with your tools
- [ ] [Set up project integrations](https://gitlab.com/-/experiment/new_project_readme_content:6ad80019019932803f32a91ae13cb05b?https://gitlab.com/m3-academy/fase-06/desafio-react-e-typescript/-/settings/integrations)
## Collaborate with your team
- [ ] [Invite team members and collaborators](https://gitlab.com/-/experiment/new_project_readme_content:6ad80019019932803f32a91ae13cb05b?https://docs.gitlab.com/ee/user/project/members/)
- [ ] [Create a new merge request](https://gitlab.com/-/experiment/new_project_readme_content:6ad80019019932803f32a91ae13cb05b?https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html)
- [ ] [Automatically close issues from merge requests](https://gitlab.com/-/experiment/new_project_readme_content:6ad80019019932803f32a91ae13cb05b?https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically)
- [ ] [Enable merge request approvals](https://gitlab.com/-/experiment/new_project_readme_content:6ad80019019932803f32a91ae13cb05b?https://docs.gitlab.com/ee/user/project/merge_requests/approvals/)
- [ ] [Automatically merge when pipeline succeeds](https://gitlab.com/-/experiment/new_project_readme_content:6ad80019019932803f32a91ae13cb05b?https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html)
## Test and Deploy
Use the built-in continuous integration in GitLab.
- [ ] [Get started with GitLab CI/CD](https://gitlab.com/-/experiment/new_project_readme_content:6ad80019019932803f32a91ae13cb05b?https://docs.gitlab.com/ee/ci/quick_start/index.html)
- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing(SAST)](https://gitlab.com/-/experiment/new_project_readme_content:6ad80019019932803f32a91ae13cb05b?https://docs.gitlab.com/ee/user/application_security/sast/)
- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://gitlab.com/-/experiment/new_project_readme_content:6ad80019019932803f32a91ae13cb05b?https://docs.gitlab.com/ee/topics/autodevops/requirements.html)
- [ ] [Use pull-based deployments for improved Kubernetes management](https://gitlab.com/-/experiment/new_project_readme_content:6ad80019019932803f32a91ae13cb05b?https://docs.gitlab.com/ee/user/clusters/agent/)
- [ ] [Set up protected environments](https://gitlab.com/-/experiment/new_project_readme_content:6ad80019019932803f32a91ae13cb05b?https://docs.gitlab.com/ee/ci/environments/protected_environments.html)
***
# Editing this README
When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thank you to [makeareadme.com](https://gitlab.com/-/experiment/new_project_readme_content:6ad80019019932803f32a91ae13cb05b?https://www.makeareadme.com/) for this template.
## Suggestions for a good README
Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information.
## Name
Choose a self-explaining name for your project.
## Description
Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors.
## Badges
On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge.
## Visuals
Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method.
## Installation
Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection.
## Usage
Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README.
## Support
Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc.
## Roadmap
If you have ideas for releases in the future, it is a good idea to list them in the README.
## Contributing
State if you are open to contributions and what your requirements are for accepting them.
For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self.
You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser.
## Authors and acknowledgment
Show your appreciation to those who have contributed to the project.
## License
For open source projects, say how it is licensed.
## Project status
If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers.

29135
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

50
package.json Normal file
View File

@ -0,0 +1,50 @@
{
"name": "desafio-react-e-typescript",
"version": "0.1.0",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^5.16.5",
"@testing-library/react": "^13.4.0",
"@testing-library/user-event": "^13.5.0",
"@types/jest": "^27.5.2",
"@types/node": "^16.18.11",
"@types/react": "^18.0.26",
"@types/react-dom": "^18.0.10",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-router-dom": "^6.6.2",
"react-scripts": "5.0.1",
"sass": "^1.57.1",
"typescript": "^4.9.4",
"web-vitals": "^2.1.4"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
},
"devDependencies": {
"formik": "^2.2.9",
"react-router": "^6.6.2",
"yup": "^0.32.11"
}
}

24
public/index.html Normal file
View File

@ -0,0 +1,24 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#000000" />
<link
href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,500;0,700;1,400&display=swap"
rel="stylesheet"
/>
<meta
name="description"
content="Web site created using create-react-app"
/>
<title>Desafio React</title>
</head>
<body>
<div id="root"></div>
</body>
</html>

111
src/App.scss Normal file
View File

@ -0,0 +1,111 @@
@import "./components/Variables.scss";
body {
margin: 0;
}
.Container-menu {
display: flex;
flex-direction: column;
}
.TopContainer_wrapper {
display: flex;
flex-direction: column;
}
.MainConteiner {
display: flex;
max-width: 100%;
padding-bottom: 66px;
@media (min-width: 1025px) {
margin: 0 100px;
margin-bottom: 70px;
}
@media (max-width: 1024px) {
padding-bottom: 68px;
}
@media (min-width: 2500px) {
margin-bottom: 84px;
}
.Main_textArea {
@media (min-width: 1025px) {
width: 100%;
padding: 10px 0px;
}
@media (max-width: 1024px) {
padding: 0 16px;
}
h2 {
margin: 0;
margin-bottom: 12px;
font-family: $fontFamily;
font-style: normal;
font-weight: 700;
font-size: 24px;
line-height: 28px;
color: $color-black;
@media (max-width: 1024px) {
text-align: center;
margin-top: 30px;
}
@media (min-width: 2500px) {
font-weight: 700;
font-size: 48px;
line-height: 56px;
}
}
.MainText {
display: flex;
flex-direction: column;
font-family: $fontFamily;
font-style: normal;
font-weight: 400;
font-size: 13px;
line-height: 15px;
color: $color-gray-500;
gap: 20px;
.Apagar-Texto {
@media (max-width: 1024px) {
display: none;
}
}
p {
margin: 0;
color: $color-gray-500;
font-weight: 400;
font-size: 13px;
line-height: 15px;
font-family: $fontFamily;
@media (max-width: 1024px) {
font-weight: 400;
font-size: 12px;
line-height: 18px;
text-align: justify;
}
@media (min-width: 2500px) {
font-weight: 400;
font-size: 26px;
line-height: 30px;
}
}
}
}
@media (max-width: 1024px) {
flex-direction: column;
}
}

32
src/App.tsx Normal file
View File

@ -0,0 +1,32 @@
import { Router } from "./router";
import { Navegation } from "./components/Navegation";
import { ScreenSize } from "./components/DetectSize";
import { HeaderDesktop } from "./components/Header/HeaderDesktop";
import { HeaderMobile } from "./components/Header/HeaderMobile";
import { TopContainer } from "./components/Container-menu/TopContainer";
import { MainFooter } from "./components/Footer/FooterMain";
import "./App.scss";
export const App = () => {
return (
ScreenSize(),
(
<>
{window.innerWidth > 1024 ? <HeaderDesktop /> : <HeaderMobile />}
<section className="Container-menu">
<div className="TopContainer_wrapper">
<TopContainer />
</div>
<div className="MainConteiner">
<Navegation />
<Router />
</div>
<MainFooter />
</section>
</>
)
);
};

View File

@ -0,0 +1,133 @@
import { Formik, Form, Field, ErrorMessage } from "formik";
import FormSchema from "./schema/FormSchema";
import { useState } from "react";
interface IFormikValues {
name: string;
email: string;
cpf: string;
data: string;
telefone: string;
instagram?: string;
checkbox: boolean;
}
const initialValues = {
name: "",
email: "",
cpf: "",
data: "",
telefone: "",
instagram: "",
checkbox: false,
};
export const ContactForm = () => {
const [isSubmited, setIsSubmited] = useState(false);
const formSubmit = (values: IFormikValues) => {
setIsSubmited(true);
};
return (
<Formik
onSubmit={formSubmit}
initialValues={initialValues}
validationSchema={FormSchema}
validateOnMount
>
{({ errors, touched, isValid, validateForm }) => (
<Form>
<div className="form-entryes">
<label htmlFor="name">Nome</label>
<span className="error">
<ErrorMessage name="name" className="form-ivalid-feedback" />
</span>
<Field
id="name"
name="name"
placeholder="Seu nome completo"
className={errors.name && touched.name && "invalid"}
/>
</div>
<div className="form-entryes">
<label htmlFor="email">E-mail</label>
<span className="error">
<ErrorMessage name="email" className="form-ivalid-feedback" />
</span>
<Field
id="email"
name="email"
placeholder="Seu e-mail"
className={errors.email && touched.email && "invalid"}
/>
</div>
<div className="form-entryes">
<label htmlFor="cpf">CPF</label>
<span className="error">
<ErrorMessage name="cpf" className="form-ivalid-feedback" />
</span>
<Field
id="cpf"
name="cpf"
type="number"
placeholder="000.000.000-00"
className={errors.cpf && touched.cpf && "invalid"}
/>
</div>
<div className="form-entryes">
<label htmlFor="data">Data de Nascimento:</label>
<span className="error">
<ErrorMessage name="data" className="form-ivalid-feedback" />
</span>
<Field
id="data"
name="data"
type="number"
placeholder="00.00.0000"
className={errors.data && touched.data && "invalid"}
/>
</div>
<div className="form-entryes">
<label htmlFor="telefone">Telefone:</label>
<span className="error">
<ErrorMessage name="telefone" className="form-ivalid-feedback" />
</span>
<Field
id="telefone"
name="telefone"
type="tel"
placeholder="(00) 00000-0000"
className={errors.telefone && touched.telefone && "invalid"}
/>
</div>
<div className="form-entryes">
<label htmlFor="instagram">Instagram</label>
<span>
<ErrorMessage name="instagram" className="form-ivalid-feedback" />
</span>
<Field id="instagram" name="instagram" placeholder="@seuuser" />
</div>
<div className="checkbox_wrapper">
<label htmlFor="checkbox">Declaro que li e aceito</label>
<span className="check-error">
<ErrorMessage name="checkbox" className="form-ivalid-feedback" />
</span>
<Field
type="checkbox"
id="checkbox"
name="checkbox"
className={errors.checkbox && touched.checkbox && "invalid"}
/>
</div>
<button>CADASTRE-SE</button>
{isSubmited && <span>*Formulário enviado com sucesso!</span>}
</Form>
)}
</Formik>
);
};

View File

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

View File

@ -0,0 +1,75 @@
@import "../Variables.scss";
.TopIcons {
display: flex;
padding: 29px 16px;
align-items: center;
.HouseIcon {
@media (min-width: 2500px) {
img {
width: 31.22px;
}
}
}
@media (min-width: 1025px) {
padding: 30px 0 81px 100px;
}
.Arrow {
margin: 0 9.7px;
@media (min-width: 2500px) {
width: 15.62px;
height: 15.62px;
}
}
.span_top {
font-family: $fontFamily;
font-style: normal;
font-weight: 400;
font-size: 12px;
line-height: 14px;
color: $color-gray;
text-transform: uppercase;
@media (min-width: 2500px) {
font-weight: 400;
font-size: 24px;
line-height: 28px;
}
}
}
.Title_wrapper {
display: flex;
justify-content: center;
.Title {
margin: 0 0 80px 0;
font-family: $fontFamily;
font-style: normal;
font-weight: 400;
font-size: 24px;
line-height: 28px;
letter-spacing: 0.1em;
text-transform: uppercase;
color: $color-gray-800;
@media (max-width: 1024px) {
margin: 80px 0 40px;
font-weight: 400;
font-size: 24px;
line-height: 28px;
letter-spacing: 0.1em;
}
@media (min-width: 2500px) {
font-weight: 400;
font-size: 48px;
line-height: 56px;
letter-spacing: 0.1em;
}
}
}

View File

@ -0,0 +1,23 @@
import { NavLink } from "react-router-dom";
import HouseIcon from "../assets/imgs/SVGs/house-icon.svg";
import Arrow from "../assets/imgs/SVGs/arrow-point-to-right.svg";
import "./TopContainer.modules.scss";
export const TopContainer = () => {
return (
<>
<div className="TopIcons">
<NavLink className="HouseIcon" to={"/"}>
<img src={HouseIcon} alt="HouseIcon" />
</NavLink>
<img className="Arrow" src={Arrow} alt="Arrow" />
<span className="span_top"> institucional </span>
</div>
<div className="Title_wrapper">
<h1 className="Title"> institucional </h1>
</div>
</>
);
};

View File

@ -0,0 +1,26 @@
import React, { useState, useEffect } from "react";
import { HeaderDesktop } from "./Header/HeaderDesktop";
import { HeaderMobile } from "./Header/HeaderMobile";
export function ScreenSize() {
const [windowDimenion, detectHW] = useState({
winWidth: window.innerWidth,
});
const detectSize = () => {
detectHW({
winWidth: window.innerWidth,
});
};
useEffect(() => {
window.addEventListener("resize", detectSize);
return () => {
window.removeEventListener("resize", detectSize);
};
}, [windowDimenion]);
return window.innerWidth > 1024 ? <HeaderDesktop /> : <HeaderMobile />;
}

View File

@ -0,0 +1,45 @@
import Vtex from "../assets/imgs/SVGs/Vtex-logo.svg";
import M3 from "../assets/imgs/SVGs/M3-logo.svg";
import Master from "../assets/imgs/SVGs/credit-cards/Master.svg";
import Visa from "../assets/imgs/SVGs/credit-cards/Visa.svg";
import Diners from "../assets/imgs/SVGs/credit-cards/Diners.svg";
import Elo from "../assets/imgs/SVGs/credit-cards/Elo.svg";
import Hiper from "../assets/imgs/SVGs/credit-cards/Hiper.svg";
import Pagseguro from "../assets/imgs/SVGs/credit-cards/Pagseguro.svg";
import Boleto from "../assets/imgs/SVGs/credit-cards/Boleto.svg";
import vtex from "../assets/imgs/SVGs/credit-cards/vtex-pci-200.svg";
export const BottomFooter = () => {
return (
<>
<div className="Bottom_Wrapper">
<span className="corporateName">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
eiusmod tempor
</span>
<div className="Payment_methods">
<img className="carts_icons" src={Master} alt="Master-icon" />
<img className="carts_icons" src={Visa} alt="Visa-icon" />
<img className="carts_icons" src={Diners} alt="Diners-icon" />
<img className="carts_icons" src={Elo} alt="Elo-icon" />
<img className="carts_icons" src={Hiper} alt="Hiper-icon" />
<img className="carts_icons" src={Pagseguro} alt="Pagseguro-icon" />
<img className="carts_icons" src={Boleto} alt="Boleto-icon" />
<span className="div_icons"> </span>
<img className="vtex_icon" src={vtex} alt="vtex-icon" />
</div>
<div className="Authors">
<span className="Powered_by"> Powered by </span>
<img className="vtex_logo" src={Vtex} alt="Vtex-logo" />
<span className="Developed_by"> Developed by </span>
<img className="m3_logo" src={M3} alt="M3-logo" />
</div>
</div>
</>
);
};

View File

@ -0,0 +1,62 @@
import { MenuList1, MenuList2, MenuList3 } from "./MenuListFooter";
import { useState } from "react";
export const Contact = () => {
const [isOpened, setIsOpened] = useState(false);
const [isOpened2, setIsOpened2] = useState(false);
const [isOpened3, setIsOpened3] = useState(false);
if (window.innerWidth > 1024) {
return (
<>
<div className="Contact_wrapper">
<div className="Menu_folder">
<h5> Institucional </h5>
<MenuList1 />
</div>
<div className="Menu_folder">
<h5> Dúvidas </h5>
<MenuList2 />
</div>
<div className="Menu_folder">
<h5> Fale Conosco </h5>
<MenuList3 />
</div>
</div>
</>
);
} else {
return (
<>
<div className="Contact_wrapper">
<div
className="Menu_folder"
onClick={() => {
setIsOpened(!isOpened);
}}
>
<h5> Institucional </h5>
{isOpened && <MenuList1 />}
</div>
<div
className="Menu_folder"
onClick={() => {
setIsOpened2(!isOpened2);
}}
>
<h5> Dúvidas </h5>
{isOpened2 && <MenuList2 />}
</div>
<div
className="Menu_folder"
onClick={() => {
setIsOpened3(!isOpened3);
}}
>
<h5> Fale Conosco </h5>
{isOpened3 && <MenuList3 />}
</div>
</div>
</>
);
}
};

View File

@ -0,0 +1,536 @@
@import "../Variables.scss";
.Footer_container {
display: flex;
flex-direction: column;
.Newsletter_Container {
display: flex;
flex-direction: column;
border-top: 1px solid $color-black;
border-bottom: 1px solid $color-black;
padding: 16px;
@media (min-width: 1025px) {
padding: 16px 31.485%;
}
.Newsletter_wrapper {
display: flex;
flex-direction: column;
flex-wrap: wrap;
.News_title {
font-family: $fontFamily;
font-style: normal;
font-weight: 500;
font-size: 18px;
line-height: 21px;
letter-spacing: 0.05em;
font-variant: small-caps;
color: $color-gray-700;
margin: 0 0 16px 0;
text-transform: uppercase;
@media (min-width: 2500px) {
font-weight: 500;
font-size: 36px;
line-height: 42px;
}
@media (min-width: 1025px) {
margin: 0 0 8px 0;
}
@media (max-width: 1024px) {
font-weight: 500;
font-size: 14px;
line-height: 16px;
}
}
.Submite_wrapper {
display: flex;
@media (max-width: 1024px) {
flex-direction: column;
gap: 16px;
}
@media (min-width: 1025px) {
width: 100%;
}
.Input_News {
padding: 13px 16px;
border: 1px solid $color-white-500;
border-radius: 4px;
font-family: $fontFamily;
font-style: normal;
font-weight: 400;
font-size: 14px;
line-height: 16px;
color: $color-gray;
@media (max-width: 1024px) {
height: 14px;
}
@media (max-width: 375px) {
height: 14px;
}
@media (max-width: 1024px) {
font-weight: 400;
font-size: 14px;
line-height: 16px;
padding: 17px 16px;
}
@media (min-width: 2500px) {
height: 31px !important;
width: 68.486% !important;
font-weight: 400;
font-size: 28px;
line-height: 33px;
}
@media (min-width: 1025px) {
height: 14px;
margin-right: 8px;
width: 24.376%;
min-width: 306px;
}
&::placeholder {
color: $color-gray;
}
}
.Button_News {
padding: 14px 20px;
background: $color-black;
box-shadow: 0px 4px 4px rgba($color-black, 0.25);
border-radius: 4px;
border: none;
font-family: $fontFamily;
font-style: normal;
font-weight: 700;
font-size: 12px;
line-height: 14px;
color: $color-white;
@media (max-width: 1024px) {
padding: 17px 0;
font-weight: 700;
font-size: 14px;
line-height: 16px;
letter-spacing: 0.05em;
}
@media (min-width: 2500px) {
width: 26.574% !important;
height: 59px !important;
font-weight: 700;
font-size: 24px;
line-height: 28px;
}
@media (min-width: 1025px) {
height: 42px;
width: 9.844%;
min-width: 126px;
}
}
}
}
}
.Footer_top {
display: flex;
@media (max-width: 1024px) {
flex-direction: column;
padding: 24px 16px;
}
@media (min-width: 1025px) {
position: relative;
padding: 50px 0;
}
.Contact_wrapper {
display: flex;
gap: 121px;
width: 55.235%;
margin: 0 12.11% 0 100px;
@media (max-width: 1024px) {
flex-direction: column;
gap: 0;
margin: 0;
width: 100%;
}
@media (min-width: 2500px) {
gap: 293px;
margin: 0 15.16% 0 100px;
width: 61.24%;
}
.Menu_folder {
display: flex;
flex-direction: column;
min-width: 20.51%;
@media (min-width: 2500px) {
min-width: 20.575%;
}
h5 {
margin-top: 0;
font-family: $fontFamily;
font-style: normal;
font-weight: 500;
font-size: 14px;
line-height: 16px;
color: $color-gray-700;
text-transform: uppercase;
@media (max-width: 1024px) {
margin-bottom: 12px;
text-transform: capitalize;
&::after {
content: "+";
float: right;
font-size: 14px;
}
}
@media (min-width: 2500px) {
font-weight: 500;
font-size: 28px;
line-height: 33px;
}
}
.links_footer {
transform: 0.4s;
transition: 0.4s;
text-decoration: none;
font-family: $fontFamily;
font-style: normal;
font-weight: 400;
font-size: 12px;
line-height: 14px;
text-transform: capitalize;
color: $color-gray-700;
margin-bottom: 12px;
width: 155px;
@media (max-width: 1024px) {
color: $color-gray-500;
}
@media (min-width: 2500px) {
width: 100%;
font-weight: 400;
font-size: 24px;
line-height: 28px;
}
}
.last {
text-decoration-line: underline;
}
}
}
}
.SocialMedia {
.Img_wrappers {
display: flex;
gap: 10px;
margin-bottom: 12px;
img {
@media (min-width: 2500px) {
width: 70px;
height: 70px;
}
}
}
.Site {
font-family: $fontFamily;
font-style: normal;
font-weight: 400;
font-size: 14px;
line-height: 16px;
color: $color-gray-700;
@media (min-width: 2500px) {
font-weight: 400;
font-size: 28px;
line-height: 33px;
}
}
.Wpp-Icon {
display: flex;
flex-direction: column;
gap: 1px;
position: fixed;
right: 16px;
bottom: 51px;
@media (max-width: 375px) {
bottom: 26px !important;
right: 14px;
}
@media (min-width: 1025px) {
right: 16px;
bottom: 210px;
}
@media (max-width: 1024px) {
bottom: 46px;
}
@media (min-width: 2500px) {
.Chat_button img,
.button_wrapper {
width: 66px;
height: 66px;
}
right: 16px;
bottom: 275px;
}
.button_wrapper {
position: relative;
img {
@media (min-width: 2500px) {
width: 70px;
height: 70px;
}
}
}
.button_wrapper::after {
content: " ";
width: 13px;
height: 7px;
top: 33%;
right: 31%;
position: absolute;
background-image: url("../assets/imgs/SVGs/Vector.svg");
@media (min-width: 2500px) {
background-repeat: no-repeat;
height: 24.14px;
width: 24.14px;
background-size: contain;
top: 37%;
}
}
.button {
display: flex;
background-image: url("../assets/imgs/SVGs/Vector.svg");
}
}
}
.Bottom_Wrapper {
justify-content: space-between;
display: flex;
padding: 15px;
background: $color-black;
@media (max-width: 1024px) {
flex-direction: column;
gap: 15px;
padding: 15px 16px;
}
@media (min-width: 1025px) {
padding: 15px 100px;
}
.corporateName {
display: flex;
align-self: center;
width: 236px;
height: 24px;
font-family: $fontFamily;
font-style: normal;
font-weight: 400;
font-size: 10px;
line-height: 12px;
color: $color-white;
text-transform: capitalize;
@media (max-width: 1024px) {
align-self: baseline;
}
@media (min-width: 2500px) {
font-weight: 400;
font-size: 20px;
line-height: 23px;
width: 471px;
height: 47px;
}
}
.Payment_methods {
align-items: center;
display: flex;
gap: 12px;
@media (max-width: 374px) {
gap: 7px !important;
}
@media (max-width: 1024px) {
order: -1;
}
@media (max-width: 570px) {
gap: 11px;
}
.carts_icons {
width: 36px;
height: 20px;
@media (max-width: 374px) {
width: 22px !important;
}
@media (max-width: 570px) {
width: 30px;
}
@media (min-width: 2500px) {
width: 70px;
height: 39.27px;
}
}
.div_icons {
content: "";
border: 1px solid $color-gray;
transform: rotate(90deg);
width: 22px;
height: 0px;
@media (max-width: 374px) {
width: 0 !important;
}
@media (max-width: 375px) {
transform: rotate(180deg);
height: 18px;
}
@media (max-width: 1024px) {
width: 22px;
}
@media (min-width: 2500px) {
width: 22px;
}
}
.vtex_icon {
width: 54.61px;
height: 34px;
@media (max-width: 374px) {
width: 34px !important;
}
@media (max-width: 570px) {
width: 45px;
height: 28px;
}
@media (min-width: 2500px) {
width: 106px;
height: 66px;
}
}
}
.Authors {
display: flex;
gap: 13px;
@media (min-width: 2500px) {
width: 406px;
}
.Powered_by {
display: flex;
align-items: center;
width: 53px;
font-family: $fontFamily;
font-style: normal;
font-weight: 400;
font-size: 10px;
line-height: 12px;
text-transform: capitalize;
color: $color-white;
@media (min-width: 2500px) {
font-weight: 400;
font-size: 20px;
line-height: 23px;
width: 110px;
}
}
.Developed_by {
display: flex;
align-items: center;
width: 61px;
font-family: $fontFamily;
font-style: normal;
font-weight: 400;
font-size: 10px;
line-height: 12px;
text-transform: capitalize;
color: $color-white;
@media (min-width: 2500px) {
font-weight: 400;
font-size: 20px;
line-height: 23px;
width: 125px;
}
}
.vtex_logo {
display: flex;
align-self: center;
width: 44.92px;
height: 16px;
@media (min-width: 2500px) {
font-weight: 400;
font-size: 20px;
line-height: 23px;
width: 84.22px;
height: 30px;
}
}
.m3_logo {
display: flex;
align-self: center;
width: 28.66px;
height: 15.65px;
@media (min-width: 2500px) {
width: 54.95px;
height: 30px;
}
}
}
}
}

View File

@ -0,0 +1,21 @@
import { Newsletter } from "./Newsletter";
import { Contact } from "./ContactFooter";
import { SocialMedia } from "./SocialMedia";
import { BottomFooter } from "./BottomFooter";
import "./FooterMain.modules.scss";
export const MainFooter = () => {
return (
<>
<section className="Footer_container">
<Newsletter />
<div className="Footer_top">
<Contact />
<SocialMedia />
</div>
<BottomFooter />
</section>
</>
);
};

View File

@ -0,0 +1,63 @@
import { NavLink } from "react-router-dom";
interface MenuFooterProps {
isOpened: boolean;
setIsOpened: React.Dispatch<React.SetStateAction<boolean>>;
}
export const MenuList1 = () => {
return (
<>
<NavLink className={`links_footer`} to={"/"}>
Quem Somos
</NavLink>
<NavLink className={"links_footer"} to={"/"}>
Política de Privacidade
</NavLink>
<NavLink className={"links_footer"} to={"/"}>
Segurança
</NavLink>
<NavLink className={"links_footer last"} to={"/"}>
Seja um Revendedor
</NavLink>
</>
);
};
export const MenuList2 = () => {
return (
<>
<NavLink className={"links_footer"} to={"/"}>
Entrega
</NavLink>
<NavLink className={"links_footer"} to={"/"}>
Pagamento
</NavLink>
<NavLink className={"links_footer"} to={"/"}>
Trocas e Devoluções
</NavLink>
<NavLink className={"links_footer last"} to={"/"}>
Dúvidas Frequentes
</NavLink>
</>
);
};
export const MenuList3 = () => {
return (
<>
<NavLink className={"links_footer"} to={"/"}>
Atendimento ao Consumidor
</NavLink>
<NavLink className={"links_footer"} to={"/"}>
(11) 4159-9504
</NavLink>
<NavLink className={"links_footer"} to={"/"}>
Atendimento Online
</NavLink>
<NavLink className={"links_footer last"} to={"/"}>
(11) 99433-8825
</NavLink>
</>
);
};

View File

@ -0,0 +1,16 @@
export const Newsletter = () => {
return (
<>
<section className="Newsletter_Container">
<div className="Newsletter_wrapper">
<h4 className="News_title"> Assine nossa Newsletter </h4>
<div className="Submite_wrapper">
<input className="Input_News" type="text" placeholder="E-mail" />
<button className="Button_News"> ENVIAR </button>
</div>
</div>
</section>
</>
);
};

View File

@ -0,0 +1,26 @@
import Facebook from "../assets/imgs/SVGs/Facebook.svg";
import Instagram from "../assets/imgs/SVGs/Instagram.svg";
import Twitter from "../assets/imgs/SVGs/Twitter.svg";
import YouTube from "../assets/imgs/SVGs/YouTube.svg";
import Linkedin from "../assets/imgs/SVGs/Linkedin.svg";
import { WppIcon } from "./wpp";
export const SocialMedia = () => {
return (
<>
<div className="SocialMedia">
<div className="Img_wrappers">
<img src={Facebook} alt="Facebook-logo" />
<img src={Instagram} alt="Instagram-logo" />
<img src={Twitter} alt="Twitter-logo" />
<img src={YouTube} alt="YouTube-logo" />
<img src={Linkedin} alt="Linkedin-logo" />
</div>
<span className="Site"> www.loremipsum.com </span>
<WppIcon />
{/* <div>{window.innerWidth > 1024 ? <WppIcon /> : ""}</div> */}
</div>
</>
);
};

View File

@ -0,0 +1,30 @@
import Wpp from "../assets/imgs/SVGs/whatsapp.svg";
import Ellipse from "../assets/imgs/SVGs/Ellipse.svg";
import { useEffect } from "react";
export const WppIcon = () => {
return (
<>
<div className="Wpp-Icon">
<a
className="Chat_button"
href="https://wa.me/0000000000"
target="_blank"
rel="noopener noreferrer"
>
<img src={Wpp} alt="Wpp-logo" />
</a>
<div className="button_wrapper">
<img
className="Button_wpp"
src={Ellipse}
alt="Ellipse-logo"
onClick={(e) => {
window.scrollTo(0, 0);
}}
/>
</div>
</div>
</>
);
};

View File

@ -0,0 +1,19 @@
import { NavLink } from "react-router-dom";
export const ContentMenuHeader = () => {
return (
<>
<div className="ContentHeader_wrapper">
<NavLink to={"/"}>
<button>CURSOS</button>
</NavLink>
<NavLink to={"/"}>
<button>SAIBA MAIS</button>
</NavLink>
<NavLink to={"/"}>
<button>INSTITUCIONAIS</button>
</NavLink>
</div>
</>
);
};

View File

@ -0,0 +1,148 @@
@import "../Variables.scss";
.HeaderDesktop {
display: flex;
justify-content: space-between;
height: 31px;
padding: 22px 100px;
background: $color-black;
font-family: $fontFamily;
border-bottom: 1px solid $color-gray;
@media (min-width: 2500px) {
height: 56px;
}
.m3LogoWrapper {
display: flex;
align-items: center;
.M3Logo {
width: 100%;
@media (min-width: 2500px) {
width: 265.62px;
height: 50.5px;
}
}
}
.Search_Header_wrapper {
position: relative;
display: flex;
align-items: center;
width: 24.445%;
max-width: 515px;
.Search_Header {
position: relative;
width: 100%;
height: 12px;
padding: 8px 16px;
border: 2px solid $color-white-100;
border-radius: 5px;
font-weight: 400;
font-size: 14px;
line-height: 16px;
color: $color-gray;
&::placeholder {
color: $color-gray;
}
@media (min-width: 2500px) {
height: 29px;
padding: 12px 16px;
font-weight: 400;
font-size: 28px;
line-height: 33px;
}
}
}
.Search_Header_wrapper::after {
position: absolute;
content: "";
width: 18px;
height: 18px;
top: 7px;
right: 16px;
background-image: url("../assets/imgs/SVGs/search-icon-desktop.svg");
background-repeat: no-repeat;
cursor: pointer;
@media (min-width: 2500px) {
width: 35.15px;
height: 35.15px;
background-size: contain;
top: 10px;
}
}
.Headerlinks {
display: flex;
gap: 55px;
.EnterLink {
display: flex;
align-items: center;
font-style: normal;
font-weight: 400;
font-size: 14px;
line-height: 16px;
color: $color-white;
text-decoration: none;
@media (min-width: 2500px) {
font-size: 28px;
line-height: 33px;
}
}
.CartIcon_Wrapper {
display: flex;
align-items: center;
a {
display: flex;
align-items: center;
}
.CartIcon {
width: 100%;
}
}
}
}
.ContentHeader_wrapper {
padding: 14px 100px;
background: $color-black;
font-family: $fontFamily;
font-style: normal;
gap: 55px;
display: flex;
height: 16px;
font-weight: 400;
font-size: 14px;
line-height: 16px;
@media (min-width: 2500px) {
height: 33px;
}
button {
padding: 0;
background: $color-black;
border: none;
color: $color-white;
cursor: pointer;
font-weight: 500;
font-size: 14px;
line-height: 16px;
text-transform: uppercase;
font-family: $fontFamily;
@media (min-width: 2500px) {
font-weight: 500;
font-size: 28px;
line-height: 33px;
}
}
}

View File

@ -0,0 +1,44 @@
import React from "react";
import { NavLink } from "react-router-dom";
import LogoM3 from "../assets/imgs/SVGs/M3Logo_desktop.svg";
import CartIcon from "../assets/imgs/SVGs/CartIcon_desktop.svg";
import { ContentMenuHeader } from "./ContentMenuHeader";
import "./HeaderDesktop.modules.scss";
export const HeaderDesktop = () => {
return (
<>
<section className="HeaderDesktop">
<div className="m3LogoWrapper">
<NavLink to={"/"}>
<img src={LogoM3} alt="LogoM3" className="M3Logo" />
</NavLink>
</div>
<div className="Search_Header_wrapper">
<input
name="Search_Header"
className="Search_Header"
placeholder="Buscar..."
/>
<label className="InconWrapper" htmlFor={"Search_Header"}></label>
</div>
<div className="Headerlinks">
<NavLink to={"/"} className="EnterLink">
ENTRAR
</NavLink>
<div className="CartIcon_Wrapper">
<NavLink to={"/"}>
<img src={CartIcon} alt="Cart-Icon" className="CartIcon" />
</NavLink>
</div>
</div>
</section>
<div className="Header_botom">
<ContentMenuHeader />
</div>
</>
);
};

View File

@ -0,0 +1,141 @@
@import "../Variables.scss";
.HeaderMobile {
display: flex;
flex-direction: column;
padding: 25px 16px;
background: $color-black;
.topHeaderMobile {
display: flex;
justify-content: space-between;
padding-bottom: 25px;
.ModalWrapper {
position: fixed;
left: 0;
top: 0;
pointer-events: none;
opacity: 0;
transition: all 0.2s ease-in-out;
.ModalContent {
z-index: 8;
.ContentHeader_wrapper {
display: flex;
flex-direction: column;
height: 585px;
background: $color-white;
padding: 31px 16px;
gap: 12px;
z-index: 8;
button {
color: $color-gray;
background: $color-white;
}
}
}
.Modaltop {
display: flex;
justify-content: space-between;
padding: 31px 16px;
background: $color-black;
color: $color-white;
font-family: $fontFamily;
font-style: normal;
font-weight: 400;
font-size: 14px;
line-height: 16px;
z-index: 8;
.CloseButton {
border: none;
background: $color-black;
}
}
}
.ModalWrapper.opened {
display: flex;
flex-direction: column;
width: calc(100% - 36px);
position: fixed;
left: 0;
top: 0;
z-index: 8;
pointer-events: all;
opacity: 1;
}
.ModalOuverlay {
position: fixed;
left: 0;
top: 0;
right: 0;
bottom: 0;
z-index: 1;
background-color: rgba(69, 69, 69, 0.7);
}
}
.MenuIcon {
background: $color-black;
border: none;
@media (max-width: 1024px) {
padding-left: 0;
}
}
.Search_Header_wrapper {
position: relative;
width: 100%;
@media (max-width: 374px) {
display: flex;
justify-content: center;
}
.Search_Header {
width: 96.372%;
border: 2px solid $color-white-100;
border-radius: 5px;
padding: 10px 16px;
color: $color-black;
@media (max-width: 1024px) {
height: 12px;
width: calc(100% - 36px);
}
@media (max-width: 375px) {
width: 89.508%;
height: 12px;
font-weight: 400;
font-size: 14px;
line-height: 16px;
}
&::placeholder {
color: $color-gray;
}
}
}
.Search_Header_wrapper::after {
position: absolute;
content: "";
width: 18px;
height: 18px;
right: 16px;
top: 10px;
background-image: url("../assets/imgs/SVGs/search-icon-desktop.svg");
cursor: pointer;
}
}

View File

@ -0,0 +1,38 @@
import { useState } from "react";
import { NavLink } from "react-router-dom";
import LogoM3 from "../assets/imgs/SVGs/Logo-M3Academy_mobile.svg";
import CartIcon from "../assets/imgs/SVGs/minicart_mobile.svg";
import MenuHamburguer from "../assets/imgs/SVGs/MenuHamburguer.svg";
import { MenuHeader } from "../MenuHeader";
import "./HeaderMobile.modules.scss";
export const HeaderMobile = () => {
const [isOpened, setIsOpened] = useState(false);
return (
<>
<section className="HeaderMobile">
<div className="topHeaderMobile">
<MenuHeader isOpened={isOpened} setIsOpened={setIsOpened} />
<button className="MenuIcon" onClick={() => setIsOpened(true)}>
<img src={MenuHamburguer} alt="" />
</button>
<div>
<NavLink to={"/"}>
<img src={LogoM3} alt="LogoM3" className="M3Logo" />
</NavLink>
</div>
<div>
<NavLink to={"/"}>
<img src={CartIcon} alt="CartIcon" className="CartIcon" />
</NavLink>
</div>
</div>
<div className="Search_Header_wrapper">
<input className="Search_Header" placeholder="Buscar..." />
</div>
</section>
</>
);
};

View File

@ -0,0 +1,27 @@
import { ContentMenuHeader } from "./Header/ContentMenuHeader";
import CloseIcon from "./assets/imgs/SVGs/Close-button.svg";
interface MenuHeaderProps {
isOpened: boolean;
setIsOpened: React.Dispatch<React.SetStateAction<boolean>>;
}
export const MenuHeader = ({ isOpened, setIsOpened }: MenuHeaderProps) => {
return (
<>
<section className={`ModalWrapper ${isOpened && "opened"}`}>
<div className="Modaltop">
<span> ENTRAR </span>
<button className="CloseButton" onClick={() => setIsOpened(false)}>
<img src={CloseIcon} alt="CloseIcon" />
</button>
</div>
<div className="ModalContent">
<ContentMenuHeader />
</div>
<div className="ModalOuverlay"></div>
</section>
</>
);
};

View File

@ -0,0 +1,71 @@
@import "./Variables.scss";
.MenuRoutes {
padding: 0 16px;
@media (min-width: 2500px) {
width: 35.12% !important;
}
@media (min-width: 1025px) {
width: 40.376%;
padding: 0;
margin-right: 30px;
}
ul {
list-style: none;
padding: 0 0 51px 0;
margin: 0 !important;
border-right: 1px solid #000;
@media (max-width: 1024px) {
border: 0;
padding-bottom: 0;
}
@media (min-width: 2500px) {
padding: 0px 0 117px 0;
}
.Title_links {
a {
display: flex;
padding: 10px 16px;
margin: 0 !important;
list-style: none;
@media (max-width: 1024px) {
padding: 10px 16px;
}
@media (min-width: 2500px) {
font-weight: 400;
font-size: 32px;
line-height: 38px;
}
}
}
.active {
background: $color-black;
color: $color-white;
font-weight: 700;
margin: 0 !important;
}
a {
font-family: $fontFamily;
font-style: normal;
font-weight: 400;
font-size: 16px;
line-height: 19px;
color: $color-gray-500;
text-decoration: none;
}
.last {
content: "";
}
}
}

View File

@ -0,0 +1,41 @@
import { useState } from "react";
import { NavLink } from "react-router-dom";
import "./Navegation.modules.scss";
export const Navegation = () => {
const [isActive, setIsActive] = useState(false);
const handlechange = () => {
setIsActive((isActive) => !isActive);
};
let toggleClassCheck = isActive ? "active" : "";
return (
<>
<nav className="MenuRoutes">
<ul className="links_wrapper">
<li className={`Title_links ${toggleClassCheck} `}>
<NavLink to={"/"}> Sobre </NavLink>
</li>
<li className={`Title_links ${toggleClassCheck} `}>
<NavLink to={"/Pagamentos"}> Formas de Pagamento </NavLink>
</li>
<li className={`Title_links ${toggleClassCheck} `}>
<NavLink to={"/Entrega"}> Entrega </NavLink>
</li>
<li className={`Title_links ${toggleClassCheck} `}>
<NavLink to={"/Devolução"}> Troca e Devolução </NavLink>
</li>
<li className={`Title_links ${toggleClassCheck} `}>
<NavLink to={"/Segurança"}> Segurança e Privacidade </NavLink>
</li>
<li className={`Title_links ${toggleClassCheck} `}>
<NavLink to={"/Contatos"}> Contatos </NavLink>
</li>
</ul>
</nav>
</>
);
};

View File

@ -0,0 +1,16 @@
$fontFamily: "Roboto", sans-serif;
$color-black: #000;
$color-black-800: #100d0e;
$color-white: #fff;
$color-white-100: #f0f0f0;
$color-white-500: #e5e5e5;
$color-gray: #c4c4c4;
$color-gray-300: #b9b7b7;
$color-gray-500: #7d7d7d;
$color-gray-700: #303030;
$color-gray-800: #292929;
$color-red: #ff0000;

View File

@ -0,0 +1,12 @@
<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_3715_4730)">
<path d="M27.823 4.07236C27.6697 3.88079 27.4377 3.76928 27.1923 3.76928H5.69581L5.09469 1.16451C5.01009 0.798054 4.68377 0.538452 4.30768 0.538452H0.80768C0.361648 0.538452 0 0.9001 0 1.34619C0 1.79227 0.361648 2.15387 0.80768 2.15387H3.66516L7.7455 19.8355C7.83005 20.2019 8.15642 20.4615 8.53251 20.4615H24.7154C25.1614 20.4615 25.523 20.0999 25.523 19.6539C25.523 19.2078 25.1614 18.8462 24.7154 18.8462H9.17509L8.55384 16.1539H24.7693C25.1471 16.1539 25.4744 15.892 25.5573 15.5235L27.9803 4.75426C28.0342 4.51483 27.9763 4.26398 27.823 4.07236Z" fill="white"/>
<path d="M11.8461 21.5385C10.2132 21.5385 8.88458 22.867 8.88458 24.5C8.88458 26.133 10.2131 27.4615 11.8461 27.4615C13.4791 27.4615 14.8077 26.133 14.8077 24.5C14.8077 22.867 13.4792 21.5385 11.8461 21.5385Z" fill="white"/>
<path d="M21.5385 21.5385C19.9055 21.5385 18.5769 22.867 18.5769 24.5C18.5769 26.133 19.9054 27.4615 21.5385 27.4615C23.1714 27.4615 24.5 26.133 24.5 24.5C24.5 22.867 23.1715 21.5385 21.5385 21.5385Z" fill="white"/>
</g>
<defs>
<clipPath id="clip0_3715_4730">
<rect width="28" height="28" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,4 @@
<svg width="15" height="15" viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11.2284 1.28215L1.22996 10.9942C0.550673 11.6541 0.568968 12.7044 1.27083 13.3401C1.97268 13.9759 3.09232 13.9564 3.77161 13.2966L13.77 3.58449C14.4493 2.92466 14.431 1.87436 13.7292 1.23858C13.0273 0.602806 11.9077 0.622311 11.2284 1.28215Z" fill="white"/>
<path d="M1.65213 3.40819L10.8751 13.7186C11.5082 14.4263 12.6262 14.5239 13.3724 13.9366C14.1185 13.3493 14.2102 12.2995 13.5771 11.5918L4.35414 1.28143C3.72107 0.573715 2.603 0.476092 1.85686 1.06338C1.11072 1.65067 1.01906 2.70048 1.65213 3.40819Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 638 B

View File

@ -0,0 +1,3 @@
<svg width="34" height="34" viewBox="0 0 34 34" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M34 17C34 26.3888 26.3888 34 17 34C7.61116 34 0 26.3888 0 17C0 7.61116 7.61116 0 17 0C26.3888 0 34 7.61116 34 17Z" fill="#C4C4C4"/>
</svg>

After

Width:  |  Height:  |  Size: 244 B

View File

@ -0,0 +1,16 @@
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_6828_910)">
<g clip-path="url(#clip1_6828_910)">
<path d="M19.1778 27.4911V18.544H22.1734L22.6228 15.0561H19.1778V12.8296C19.1778 11.8201 19.4564 11.1321 20.9026 11.1321L22.7441 11.1314V8.01166C22.4256 7.97019 21.3325 7.87511 20.0602 7.87511C17.4034 7.87511 15.5845 9.50026 15.5845 12.4842V15.0561H12.5799V18.544H15.5845V27.4911H19.1778Z" fill="#303030"/>
</g>
<circle cx="17.5" cy="17.5" r="16.5" stroke="#303030" stroke-width="2"/>
</g>
<defs>
<clipPath id="clip0_6828_910">
<rect width="35" height="35" fill="white"/>
</clipPath>
<clipPath id="clip1_6828_910">
<rect width="19.574" height="19.616" fill="white" transform="translate(7.87497 7.87509)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 803 B

View File

@ -0,0 +1,18 @@
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_6828_915)">
<g clip-path="url(#clip1_6828_915)">
<path d="M22.0996 7.87509H13.2966C10.3071 7.87509 7.87497 10.3036 7.87497 13.2884V22.0777C7.87497 25.0626 10.3071 27.491 13.2966 27.491H22.0996C25.0893 27.491 27.5214 25.0625 27.5214 22.0777V13.2884C27.5215 10.3036 25.0893 7.87509 22.0996 7.87509ZM25.7784 22.0777C25.7784 24.103 24.1281 25.7506 22.0997 25.7506H13.2966C11.2683 25.7507 9.6181 24.103 9.6181 22.0777V13.2884C9.6181 11.2632 11.2683 9.61551 13.2966 9.61551H22.0996C24.128 9.61551 25.7783 11.2632 25.7783 13.2884V22.0777H25.7784Z" fill="#303030"/>
<path d="M17.6982 12.6288C14.9067 12.6288 12.6358 14.8962 12.6358 17.6833C12.6358 20.4703 14.9067 22.7376 17.6982 22.7376C20.4896 22.7376 22.7606 20.4703 22.7606 17.6833C22.7606 14.8962 20.4896 12.6288 17.6982 12.6288ZM17.6982 20.9971C15.868 20.9971 14.3789 19.5105 14.3789 17.6832C14.3789 15.8558 15.8679 14.3691 17.6982 14.3691C19.5285 14.3691 21.0175 15.8558 21.0175 17.6832C21.0175 19.5105 19.5284 20.9971 17.6982 20.9971Z" fill="#303030"/>
<path d="M22.9729 11.1531C22.6371 11.1531 22.3072 11.2889 22.07 11.5267C21.8317 11.7634 21.6946 12.0929 21.6946 12.4294C21.6946 12.7648 21.8318 13.0942 22.07 13.3321C22.3071 13.5688 22.6371 13.7057 22.9729 13.7057C23.3099 13.7057 23.6388 13.5688 23.877 13.3321C24.1153 13.0942 24.2512 12.7647 24.2512 12.4294C24.2512 12.0929 24.1153 11.7634 23.877 11.5267C23.64 11.2889 23.3099 11.1531 22.9729 11.1531Z" fill="#303030"/>
</g>
<circle cx="17.5" cy="17.5" r="16.5" stroke="#303030" stroke-width="2"/>
</g>
<defs>
<clipPath id="clip0_6828_915">
<rect width="35" height="35" fill="white"/>
</clipPath>
<clipPath id="clip1_6828_915">
<rect width="19.6465" height="19.616" fill="white" transform="translate(7.87497 7.87509)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -0,0 +1,18 @@
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_6828_930)">
<circle cx="17.5" cy="17.5" r="16.5" stroke="#303030" stroke-width="2"/>
<g clip-path="url(#clip1_6828_930)">
<path d="M13.4447 13.8592H10.2981C10.1584 13.8592 10.0453 13.9724 10.0453 14.112V24.2205C10.0453 24.3602 10.1584 24.4733 10.2981 24.4733H13.4447C13.5843 24.4733 13.6975 24.3602 13.6975 24.2205V14.112C13.6975 13.9724 13.5843 13.8592 13.4447 13.8592Z" fill="#303030"/>
<path d="M11.8725 8.83394C10.7276 8.83394 9.7962 9.76436 9.7962 10.908C9.7962 12.0521 10.7276 12.9829 11.8725 12.9829C13.0165 12.9829 13.9472 12.0521 13.9472 10.908C13.9473 9.76436 13.0165 8.83394 11.8725 8.83394Z" fill="#303030"/>
<path d="M21.4482 13.6079C20.1844 13.6079 19.2502 14.1512 18.6835 14.7685V14.112C18.6835 13.9724 18.5704 13.8592 18.4307 13.8592H15.4174C15.2777 13.8592 15.1646 13.9724 15.1646 14.112V24.2205C15.1646 24.3602 15.2777 24.4733 15.4174 24.4733H18.557C18.6967 24.4733 18.8098 24.3602 18.8098 24.2205V19.2191C18.8098 17.5338 19.2676 16.8772 20.4425 16.8772C21.722 16.8772 21.8236 17.9298 21.8236 19.3058V24.2206C21.8236 24.3602 21.9368 24.4734 22.0764 24.4734H25.2173C25.3569 24.4734 25.4701 24.3602 25.4701 24.2206V18.6759C25.4701 16.1698 24.9922 13.6079 21.4482 13.6079Z" fill="#303030"/>
</g>
</g>
<defs>
<clipPath id="clip0_6828_930">
<rect width="35" height="35" fill="white"/>
</clipPath>
<clipPath id="clip1_6828_930">
<rect width="15.6739" height="15.6739" fill="white" transform="translate(9.7962 8.8167)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 19 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 19 KiB

View File

@ -0,0 +1,4 @@
<svg width="29" height="16" viewBox="0 0 29 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M17.0306 5.52943C16.5832 4.93602 16.0212 4.44253 15.3793 4.07945C14.7375 3.71637 14.0295 3.49142 13.2991 3.41851C12.5687 3.34559 11.8314 3.42626 11.1327 3.65553C10.4341 3.88479 9.78893 4.25778 9.23719 4.75145L8.76053 4.38191C5.48585 2.02851 0.900357 4.02695 0.471361 8.05788C0.340858 9.99984 0.307448 11.9473 0.371262 13.8928C0.360734 14.1424 0.40062 14.3916 0.488442 14.6249C0.576265 14.8581 0.71015 15.0705 0.881788 15.2488C1.05343 15.427 1.25915 15.5674 1.4862 15.6612C1.71325 15.755 1.95677 15.8002 2.20165 15.794C2.44131 15.7929 2.67828 15.7424 2.89833 15.6456C3.11838 15.5487 3.31697 15.4075 3.48215 15.2304C3.64733 15.0532 3.77571 14.8439 3.85955 14.6148C3.9434 14.3858 3.98099 14.1418 3.97007 13.8976C3.97007 12.4973 3.97007 11.0969 3.97007 9.69165C3.96621 9.27506 3.9949 8.85882 4.05587 8.44687C4.13275 8.02525 4.36328 7.64896 4.70108 7.39367C5.03889 7.13838 5.45893 7.02303 5.87672 7.07082C6.28512 7.10223 6.66826 7.28451 6.95433 7.58349C7.2404 7.88246 7.40975 8.27761 7.43064 8.69486C7.45447 9.21027 7.43064 9.72568 7.43064 10.2411C7.43064 11.4956 7.43064 12.7501 7.43064 14.0046C7.42574 14.3685 7.53183 14.7249 7.73422 15.0245C7.93661 15.3242 8.22529 15.5523 8.56033 15.6773C9.77582 16.1927 11.0151 15.2883 11.039 13.8636C11.039 12.2055 11.039 10.5474 11.0866 8.88935C11.1027 8.48854 11.2228 8.09925 11.4346 7.76128C11.6363 7.46326 11.9286 7.24129 12.2663 7.12968C12.6041 7.01806 12.9684 7.02301 13.3031 7.14375C13.6807 7.25169 14.0107 7.48791 14.2387 7.81332C14.4667 8.13872 14.5789 8.53379 14.5567 8.93311C14.5567 10.6106 14.5567 12.2882 14.5567 13.9657C14.5567 14.2064 14.6032 14.4448 14.6935 14.6672C14.7838 14.8896 14.9162 15.0917 15.0831 15.2619C15.2499 15.4321 15.4481 15.5672 15.6661 15.6593C15.8841 15.7514 16.1178 15.7988 16.3538 15.7988C16.5898 15.7988 16.8234 15.7514 17.0415 15.6593C17.2595 15.5672 17.4576 15.4321 17.6244 15.2619C17.7913 15.0917 17.9237 14.8896 18.014 14.6672C18.1043 14.4448 18.1508 14.2064 18.1508 13.9657C18.1508 12.2493 18.1508 10.562 18.1508 8.82128C18.154 7.62619 17.7591 6.46544 17.0306 5.52943Z" fill="white"/>
<path d="M26.0349 6.50162L25.4676 6.26337C26.0301 5.81603 26.564 5.4319 27.0406 4.99428C27.4641 4.65415 27.8297 4.24508 28.1227 3.78354C28.9806 2.14978 27.7699 0.24858 25.849 0.204818C24.0758 0.180506 22.3074 0.180506 20.5342 0.180506C20.317 0.165195 20.0991 0.196902 19.8947 0.273547C19.6904 0.350191 19.5042 0.470042 19.3485 0.625235C19.1928 0.780428 19.071 0.967457 18.9911 1.17405C18.9112 1.38065 18.875 1.60214 18.8849 1.824C18.8637 2.04997 18.8909 2.27795 18.9646 2.49213C19.0384 2.70632 19.1569 2.90158 19.312 3.0644C19.467 3.22721 19.655 3.35368 19.8627 3.43504C20.0705 3.5164 20.2931 3.5507 20.5151 3.53556C21.3826 3.53556 22.2502 3.53556 23.1177 3.53556C23.2655 3.58419 23.418 3.58419 23.704 3.58419C22.5266 4.55666 21.4398 5.48052 20.3673 6.39465C19.6762 6.97814 19.4665 7.61511 19.7096 8.33961C19.8387 8.69722 20.0793 9.00173 20.3944 9.20639C20.7096 9.41105 21.0819 9.50455 21.4541 9.47255C22.3741 9.47255 23.2988 9.47255 24.2188 9.47255C24.4251 9.43364 24.6373 9.44151 24.8403 9.49562C25.0433 9.54973 25.2321 9.64874 25.3934 9.78563C25.5547 9.92253 25.6845 10.0939 25.7735 10.2877C25.8626 10.4815 25.9088 10.6929 25.9088 10.907C25.9088 11.121 25.8626 11.3324 25.7735 11.5262C25.6845 11.72 25.5547 11.8914 25.3934 12.0283C25.2321 12.1652 25.0433 12.2642 24.8403 12.3183C24.6373 12.3724 24.4251 12.3803 24.2188 12.3414C23.0271 12.3414 21.8355 12.3414 20.6438 12.3414C20.2261 12.3644 19.8329 12.5499 19.5452 12.8597C19.2575 13.1695 19.0971 13.58 19.0971 14.0067C19.0971 14.4335 19.2575 14.844 19.5452 15.1538C19.8329 15.4636 20.2261 15.6491 20.6438 15.6721C21.8879 15.6721 23.1368 15.6721 24.3808 15.6721C25.4737 15.6438 26.5238 15.2332 27.3552 14.5091C28.1866 13.7849 28.7487 12.7913 28.9473 11.6947C29.1056 10.621 28.9042 9.52429 28.3757 8.58189C27.8472 7.63949 27.0224 6.90654 26.0349 6.50162Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 3.9 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 19 KiB

View File

@ -0,0 +1,5 @@
<svg width="28" height="23" viewBox="0 0 28 23" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M26.25 19.0001H1.75002C0.783509 19.0001 0 19.7836 0 20.7501C0 21.7166 0.783508 22.5001 1.75002 22.5001H26.25C27.2165 22.5001 28 21.7166 28 20.7501C28 19.7836 27.2165 19.0001 26.25 19.0001Z" fill="white"/>
<path d="M26.25 9.5H1.75002C0.783509 9.5 0 10.2835 0 11.25C0 12.2165 0.783508 13 1.75002 13H26.25C27.2165 13 28 12.2165 28 11.25C28 10.2835 27.2165 9.5 26.25 9.5Z" fill="white"/>
<path d="M26.25 0H1.75002C0.783509 0 0 0.783509 0 1.75002C0 2.71652 0.783508 3.50003 1.75002 3.50003H26.25C27.2165 3.50003 28 2.71652 28 1.75002C28 0.783509 27.2165 0 26.25 0Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 688 B

View File

@ -0,0 +1,11 @@
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_6828_922)">
<circle cx="17.5" cy="17.5" r="16.5" stroke="#303030" stroke-width="2"/>
<path d="M29.9915 10.1563C29.0947 10.5497 28.1392 10.8104 27.143 10.937C28.1679 10.3251 28.95 9.36358 29.3178 8.20462C28.3623 8.7743 27.3073 9.1767 26.183 9.40126C25.2757 8.43521 23.9826 7.83688 22.572 7.83688C19.8351 7.83688 17.6317 10.0584 17.6317 12.7817C17.6317 13.1735 17.6648 13.5503 17.7462 13.909C13.6363 13.7086 9.99968 11.7388 7.55666 8.73813C7.13015 9.47812 6.87997 10.3251 6.87997 11.2369C6.87997 12.949 7.76163 14.4666 9.07583 15.3453C8.28158 15.3302 7.50241 15.0996 6.8423 14.7364C6.8423 14.7515 6.8423 14.7711 6.8423 14.7907C6.8423 17.193 8.55588 19.1884 10.803 19.6481C10.4006 19.7581 9.96201 19.8108 9.50686 19.8108C9.19037 19.8108 8.87086 19.7928 8.57095 19.7264C9.21147 21.6842 11.029 23.1235 13.1902 23.1702C11.5083 24.4859 9.37273 25.2786 7.06083 25.2786C6.65541 25.2786 6.26658 25.2605 5.87775 25.2108C8.06757 26.623 10.6628 27.4293 13.4615 27.4293C22.5584 27.4293 27.5319 19.8937 27.5319 13.3619C27.5319 13.1434 27.5243 12.9324 27.5138 12.7229C28.4949 12.0266 29.3193 11.157 29.9915 10.1563Z" fill="#303030"/>
</g>
<defs>
<clipPath id="clip0_6828_922">
<rect width="35" height="35" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -0,0 +1,3 @@
<svg width="13" height="7" viewBox="0 0 13 7" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0.400026 6.13719C0.401078 6.02468 0.448119 5.91242 0.541189 5.82462L0.541192 5.82461L6.13082 0.550956C6.13085 0.550933 6.13087 0.55091 6.13089 0.550887C6.22923 0.458193 6.36162 0.408533 6.49988 0.408533C6.63823 0.408533 6.77081 0.458336 6.8691 0.551047L12.4587 5.82475L12.4588 5.82482C12.5516 5.9124 12.5987 6.02428 12.6 6.13647C12.5989 6.24898 12.5519 6.36118 12.4588 6.44888L12.4587 6.44902C12.2574 6.63896 11.9216 6.63894 11.7204 6.44903L11.7204 6.44902L6.7744 1.78259L6.4999 1.5236L6.2254 1.78259L1.27968 6.44882C1.27966 6.44884 1.27964 6.44886 1.27962 6.44888C1.0781 6.63886 0.742447 6.63877 0.541181 6.44888L0.541122 6.44882C0.448342 6.36133 0.401297 6.24944 0.400026 6.13719Z" fill="white" stroke="white" stroke-width="0.8"/>
</svg>

After

Width:  |  Height:  |  Size: 844 B

View File

@ -0,0 +1,7 @@
<svg width="46" height="16" viewBox="0 0 46 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M32.8808 5.99083H31.2736V11.4557C31.2736 11.558 31.1852 11.6456 31.0819 11.6456H29.8434C29.7402 11.6456 29.6517 11.558 29.6517 11.4557V5.99083H28.0298C27.9856 5.99083 27.9266 5.97622 27.8971 5.94699C27.8676 5.91777 27.8381 5.87394 27.8381 5.81549V4.8511C27.8381 4.80727 27.8529 4.74882 27.8971 4.7196C27.9266 4.69037 27.9856 4.66115 28.0298 4.67576H32.8808C32.984 4.67576 33.0725 4.74882 33.0725 4.8511V5.81549C33.0725 5.91777 32.984 5.99083 32.8808 5.99083Z" fill="white"/>
<path d="M38.0558 11.6017C37.4218 11.6893 36.773 11.7332 36.139 11.7186C34.9152 11.7186 33.8389 11.4117 33.8389 9.70213V6.5898C33.8389 4.88021 34.93 4.58797 36.1538 4.58797C36.7878 4.57336 37.4218 4.6172 38.0558 4.70487C38.1885 4.71948 38.2475 4.77793 38.2475 4.89482V5.77154C38.2475 5.87382 38.159 5.96149 38.0558 5.96149H36.0653C35.623 5.96149 35.4608 6.10761 35.4608 6.60441V7.4519H37.9821C38.0853 7.4519 38.1738 7.53957 38.1738 7.64186V8.53318C38.1738 8.63547 38.0853 8.72314 37.9821 8.72314H35.4608V9.71674C35.4608 10.1989 35.623 10.3597 36.0653 10.3597H38.0558C38.159 10.3597 38.2475 10.4473 38.2475 10.5496V11.4263C38.2475 11.5286 38.1885 11.5871 38.0558 11.6017Z" fill="white"/>
<path d="M45.1924 11.6455H43.6884C43.5852 11.6601 43.482 11.6016 43.4378 11.4993L42.1255 9.45367L40.9459 11.4555C40.8869 11.5724 40.8132 11.6455 40.71 11.6455H39.3093C39.2798 11.6455 39.2355 11.6455 39.206 11.6162C39.1766 11.587 39.1618 11.5578 39.1618 11.5139C39.1618 11.4847 39.1766 11.4701 39.1766 11.4555L41.2261 8.06555L39.1471 4.85094C39.1323 4.83632 39.1323 4.8071 39.1323 4.79249C39.1323 4.71943 39.206 4.66098 39.2798 4.67559H40.828C40.9312 4.67559 41.0049 4.76327 41.0639 4.85094L42.2729 6.75048L43.4525 4.85094C43.4967 4.74865 43.5852 4.69021 43.6884 4.67559H45.0891C45.1629 4.67559 45.2366 4.71943 45.2366 4.79249C45.2366 4.8071 45.2218 4.83632 45.2218 4.85094L43.1576 8.09477L45.3103 11.4555C45.3251 11.4847 45.3398 11.5139 45.3398 11.5432C45.3251 11.6016 45.2661 11.6455 45.1924 11.6455Z" fill="white"/>
<path d="M25.5821 4.69067C25.5083 4.69067 25.4494 4.73451 25.4346 4.80757L24.0634 9.84866C24.0486 9.95094 24.0191 9.99478 23.9307 9.99478C23.8422 9.99478 23.8127 9.95094 23.798 9.84866L22.4267 4.80757C22.412 4.73451 22.353 4.69067 22.2793 4.69067H20.9228C20.8785 4.69067 20.8343 4.70529 20.8048 4.74912C20.7753 4.77834 20.7606 4.82218 20.7753 4.86602C20.7753 4.86602 22.4562 10.6523 22.4709 10.7108C22.6921 11.3975 23.2377 11.7336 23.9307 11.7336C24.5942 11.7628 25.1987 11.3391 25.3904 10.7108C25.4199 10.6377 27.0565 4.86602 27.0565 4.86602C27.0713 4.82218 27.0565 4.77834 27.027 4.74912C26.9975 4.7199 26.9533 4.69067 26.9091 4.69067H25.5821Z" fill="white"/>
<path d="M17.9149 0H3.80428C3.28822 0 2.81639 0.277625 2.56573 0.70137C2.30033 1.13973 2.28559 1.68037 2.5215 2.11872L3.93698 4.77808H1.37142C1.04704 4.77808 0.737403 4.93881 0.560467 5.21644C0.383532 5.49406 0.383532 5.84475 0.530978 6.13699L5.07231 14.6411C5.2345 14.9479 5.55889 15.1379 5.89801 15.1379C6.23714 15.1379 6.56152 14.9479 6.72371 14.6411L7.96225 12.3324L9.51044 15.2402C9.7611 15.7078 10.2624 16 10.7932 16C11.324 16 11.8253 15.7078 12.076 15.2402L19.1534 2.04566C19.3893 1.60731 19.3746 1.08128 19.1092 0.672146C18.8733 0.248402 18.4014 0 17.9149 0ZM11.6042 5.56712L8.5078 11.3242C8.40459 11.5288 8.19817 11.6457 7.96225 11.6457C7.72634 11.6457 7.51992 11.5142 7.4167 11.3242L4.36457 5.62557C4.27611 5.45023 4.27611 5.24566 4.37932 5.07032C4.48253 4.89498 4.67421 4.79269 4.86589 4.79269H11.1176C11.3093 4.79269 11.4862 4.88036 11.5747 5.0411C11.6926 5.20183 11.6926 5.40639 11.6042 5.56712Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@ -0,0 +1,11 @@
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_6828_927)">
<circle cx="17.5" cy="17.5" r="16.5" stroke="#303030" stroke-width="2"/>
<path d="M27.8027 12.2486C27.5447 11.2896 26.7886 10.5336 25.8297 10.2754C24.0779 9.79604 17.0706 9.79604 17.0706 9.79604C17.0706 9.79604 10.0636 9.79604 8.31176 10.2572C7.3713 10.5152 6.59672 11.2897 6.33875 12.2486C5.87775 14.0003 5.87775 17.633 5.87775 17.633C5.87775 17.633 5.87775 21.284 6.33875 23.0174C6.59699 23.9763 7.35285 24.7323 8.31189 24.9905C10.082 25.47 17.0709 25.47 17.0709 25.47C17.0709 25.47 24.0779 25.47 25.8297 25.0088C26.7887 24.7507 27.5447 23.9947 27.803 23.0358C28.2638 21.284 28.2638 17.6514 28.2638 17.6514C28.2638 17.6514 28.2823 14.0003 27.8027 12.2486ZM14.8396 20.989V14.277L20.6665 17.633L14.8396 20.989Z" fill="#303030"/>
</g>
<defs>
<clipPath id="clip0_6828_927">
<rect width="35" height="35" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 976 B

View File

@ -0,0 +1,10 @@
<svg width="8" height="8" viewBox="0 0 8 8" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_1_310)">
<path d="M6.11608 3.60396L2.6762 0.164193C2.45738 -0.0547311 2.10261 -0.0547311 1.8839 0.164193C1.66517 0.382921 1.66517 0.737678 1.8839 0.95639L4.92766 4.00006L1.88398 7.04362C1.66525 7.26244 1.66525 7.61716 1.88398 7.83589C2.10271 8.0547 2.45747 8.0547 2.67629 7.83589L6.11617 4.39607C6.22553 4.28665 6.28015 4.1434 6.28015 4.00008C6.28015 3.85668 6.22543 3.71332 6.11608 3.60396Z" fill="#C4C4C4"/>
</g>
<defs>
<clipPath id="clip0_1_310">
<rect width="8" height="8" fill="white" transform="matrix(1 0 0 -1 0 8)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 669 B

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 18 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 92 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 25 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 24 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 14 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 28 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 26 KiB

View File

@ -0,0 +1,9 @@
<svg width="56" height="34" viewBox="0 0 56 34" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<rect x="0.408936" width="54.6061" height="34" fill="url(#pattern0)"/>
<defs>
<pattern id="pattern0" patternContentUnits="objectBoundingBox" width="1" height="1">
<use xlink:href="#image0_3851_174" transform="translate(0 -0.00590909) scale(0.005 0.0080303)"/>
</pattern>
<image id="image0_3851_174" width="200" height="126" xlink:href="data:image/png;base64,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"/>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@ -0,0 +1,3 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M15.8326 7.59562L14.6903 6.4533L8.40431 0.167326C8.18118 -0.0557753 7.81942 -0.0557753 7.59628 0.167326L1.31028 6.4533L0.167381 7.59623C-0.0518699 7.82324 -0.0456085 8.185 0.18141 8.40425C0.402871 8.61814 0.753946 8.61814 0.975407 8.40425L1.14226 8.23623V15.4285C1.14226 15.7442 1.3981 16 1.71372 16H14.2857C14.6013 16 14.8572 15.7442 14.8572 15.4285V8.23623L15.0246 8.40368C15.2516 8.62293 15.6134 8.61664 15.8326 8.38965C16.0465 8.16819 16.0465 7.81708 15.8326 7.59562ZM9.71409 14.8571H6.28537V10.2855H9.71409V14.8571ZM13.7142 14.8571H10.857V9.71403C10.857 9.39841 10.6011 9.14256 10.2855 9.14256H5.7139C5.39829 9.14256 5.14244 9.39841 5.14244 9.71403V14.8571H2.28518V7.09334L7.99969 1.3788L13.7142 7.09334V14.8571Z" fill="#C4C4C4"/>
</svg>

After

Width:  |  Height:  |  Size: 848 B

View File

@ -0,0 +1,12 @@
<svg width="55" height="55" viewBox="0 0 55 55" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_3751_539)">
<path d="M54.3344 7.95273C54.0351 7.57862 53.5819 7.36086 53.1027 7.36086H11.1231L9.9492 2.27412C9.78398 1.55848 9.14672 1.05151 8.41228 1.05151H1.57728C0.706248 1.05151 0 1.75776 0 2.6289C0 3.50004 0.706248 4.20619 1.57728 4.20619H7.15753L15.1259 38.7358C15.291 39.4515 15.9283 39.9585 16.6628 39.9585H48.2656C49.1367 39.9585 49.8428 39.2522 49.8428 38.3812C49.8428 37.51 49.1366 36.8039 48.2656 36.8039H17.9176L16.7044 31.5462H48.3709C49.1086 31.5462 49.7478 31.0348 49.9097 30.3151L54.6416 9.28438C54.7467 8.81682 54.6338 8.32694 54.3344 7.95273Z" fill="white"/>
<path d="M23.1338 42.0615C19.9449 42.0615 17.3503 44.6559 17.3503 47.845C17.3503 51.0341 19.9448 53.6285 23.1338 53.6285C26.3228 53.6285 28.9173 51.0341 28.9173 47.845C28.9173 44.6559 26.3229 42.0615 23.1338 42.0615Z" fill="white"/>
<path d="M42.0614 42.0615C38.8725 42.0615 36.278 44.6559 36.278 47.845C36.278 51.0341 38.8724 53.6285 42.0614 53.6285C45.2504 53.6285 47.8449 51.0341 47.8449 47.845C47.8449 44.6559 45.2505 42.0615 42.0614 42.0615Z" fill="white"/>
</g>
<defs>
<clipPath id="clip0_3751_539">
<rect width="54.68" height="54.68" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -0,0 +1,5 @@
<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M27.823 4.07236C27.6697 3.88079 27.4377 3.76928 27.1923 3.76928H5.69581L5.09469 1.16451C5.01009 0.798054 4.68377 0.538452 4.30768 0.538452H0.80768C0.361648 0.538452 0 0.9001 0 1.34619C0 1.79227 0.361648 2.15387 0.80768 2.15387H3.66516L7.7455 19.8355C7.83005 20.2019 8.15642 20.4615 8.53251 20.4615H24.7154C25.1614 20.4615 25.523 20.0999 25.523 19.6539C25.523 19.2078 25.1614 18.8462 24.7154 18.8462H9.17509L8.55384 16.1539H24.7693C25.1471 16.1539 25.4744 15.892 25.5573 15.5235L27.9803 4.75426C28.0342 4.51483 27.9763 4.26398 27.823 4.07236Z" fill="white"/>
<path d="M11.8461 21.5385C10.2132 21.5385 8.88458 22.867 8.88458 24.5C8.88458 26.133 10.2131 27.4615 11.8461 27.4615C13.4791 27.4615 14.8077 26.133 14.8077 24.5C14.8077 22.867 13.4792 21.5385 11.8461 21.5385Z" fill="white"/>
<path d="M21.5385 21.5385C19.9055 21.5385 18.5769 22.867 18.5769 24.5C18.5769 26.133 19.9054 27.4615 21.5385 27.4615C23.1714 27.4615 24.5 26.133 24.5 24.5C24.5 22.867 23.1715 21.5385 21.5385 21.5385Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,10 @@
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_6124_39)">
<path d="M13.2094 11.6187C14.0951 10.4091 14.6249 8.92334 14.6249 7.31267C14.6249 3.2807 11.3444 0.000183105 7.31245 0.000183105C3.28048 0.000183105 0 3.2807 0 7.31267C0 11.3446 3.28052 14.6252 7.31248 14.6252C8.92315 14.6252 10.409 14.0953 11.6186 13.2095L16.4092 18.0001L18 16.4093C18 16.4092 13.2094 11.6187 13.2094 11.6187ZM7.31248 12.3751C4.52086 12.3751 2.25001 10.1043 2.25001 7.31267C2.25001 4.52104 4.52086 2.25019 7.31248 2.25019C10.1041 2.25019 12.375 4.52104 12.375 7.31267C12.375 10.1043 10.1041 12.3751 7.31248 12.3751Z" fill="#303030"/>
</g>
<defs>
<clipPath id="clip0_6124_39">
<rect width="18" height="18" rx="5" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 804 B

View File

@ -0,0 +1,10 @@
<svg width="36" height="36" viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_3751_533)">
<path d="M25.7949 22.6886C27.5246 20.3265 28.5592 17.4252 28.5592 14.2799C28.5592 6.40637 22.1531 0.000244141 14.2796 0.000244141C6.40606 0.000244141 0 6.40637 0 14.2799C0 22.1534 6.40613 28.5596 14.2797 28.5596C17.4249 28.5596 20.3266 27.5248 22.6886 25.7951L32.0435 35.15L35.15 32.0436C35.15 32.0435 25.7949 22.6886 25.7949 22.6886ZM14.2797 24.1658C8.82824 24.1658 4.39377 19.7313 4.39377 14.2799C4.39377 8.82848 8.82824 4.39401 14.2797 4.39401C19.7311 4.39401 24.1655 8.82848 24.1655 14.2799C24.1655 19.7313 19.731 24.1658 14.2797 24.1658Z" fill="#292929"/>
</g>
<defs>
<clipPath id="clip0_3751_533">
<rect width="35.15" height="35.15" rx="5" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 821 B

View File

@ -0,0 +1,11 @@
<svg width="34" height="34" viewBox="0 0 34 34" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_3403_1267)">
<path d="M17.0042 0H16.9958C7.62238 0 0 7.6245 0 17C0 20.7188 1.1985 24.1655 3.23638 26.9641L1.11775 33.2796L7.65213 31.1908C10.3403 32.9715 13.5469 34 17.0042 34C26.3776 34 34 26.3734 34 17C34 7.62663 26.3776 0 17.0042 0Z" fill="#4CAF50"/>
<path d="M26.8961 24.0061C26.486 25.1642 24.8582 26.1247 23.5599 26.4052C22.6716 26.5944 21.5114 26.7452 17.6056 25.126C12.6097 23.0562 9.39249 17.9796 9.14174 17.6502C8.90161 17.3209 7.12299 14.9621 7.12299 12.5226C7.12299 10.0831 8.36186 8.89524 8.86124 8.38524C9.27136 7.96662 9.94924 7.77537 10.5995 7.77537C10.8099 7.77537 10.999 7.78599 11.169 7.79449C11.6684 7.81574 11.9191 7.84549 12.2485 8.63387C12.6586 9.62199 13.6574 12.0615 13.7764 12.3122C13.8975 12.563 14.0186 12.903 13.8486 13.2324C13.6892 13.5724 13.549 13.7232 13.2982 14.0122C13.0475 14.3012 12.8095 14.5222 12.5587 14.8325C12.3292 15.1024 12.07 15.3914 12.359 15.8907C12.648 16.3795 13.6467 18.0094 15.1172 19.3184C17.0149 21.0077 18.5534 21.5475 19.1037 21.777C19.5139 21.947 20.0026 21.9066 20.3022 21.5879C20.6826 21.1777 21.1522 20.4977 21.6304 19.8284C21.9704 19.3481 22.3996 19.2886 22.8501 19.4586C23.3091 19.618 25.738 20.8186 26.2374 21.0672C26.7367 21.318 27.0661 21.437 27.1872 21.6474C27.3062 21.8577 27.3062 22.8459 26.8961 24.0061Z" fill="white"/>
</g>
<defs>
<clipPath id="clip0_3403_1267">
<rect width="34" height="34" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -0,0 +1,13 @@
<svg width="34" height="73" viewBox="0 0 34 73" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M34 56C34 65.3888 26.3888 73 17 73C7.61116 73 0 65.3888 0 56C0 46.6112 7.61116 39 17 39C26.3888 39 34 46.6112 34 56Z" fill="#C4C4C4"/>
<path d="M23.6 58.1365C23.5989 58.249 23.5519 58.3612 23.4588 58.4489L23.4587 58.449C23.2574 58.639 22.9216 58.6389 22.7204 58.449L22.7204 58.449L17.7744 53.7826L17.4999 53.5236L17.2254 53.7826L12.2797 58.4488C12.2797 58.4488 12.2796 58.4489 12.2796 58.4489C12.0781 58.6389 11.7424 58.6388 11.5412 58.4489L11.5411 58.4488C11.4483 58.3613 11.4013 58.2494 11.4 58.1372C11.4011 58.0247 11.4481 57.9124 11.5412 57.8246L11.5412 57.8246L17.1308 52.551C17.1308 52.5509 17.1309 52.5509 17.1309 52.5509C17.2292 52.4582 17.3616 52.4085 17.4999 52.4085C17.6382 52.4085 17.7708 52.4583 17.8691 52.551C17.8691 52.551 17.8691 52.551 17.8691 52.551L23.4587 57.8247L23.4588 57.8248C23.5516 57.9124 23.5987 58.0243 23.6 58.1365Z" fill="white" stroke="white" stroke-width="0.8"/>
<g clip-path="url(#clip0_3715_5434)">
<path d="M17.0042 0H16.9958C7.62238 0 0 7.6245 0 17C0 20.7188 1.1985 24.1655 3.23638 26.9641L1.11775 33.2796L7.65213 31.1908C10.3403 32.9715 13.5469 34 17.0042 34C26.3776 34 34 26.3734 34 17C34 7.62663 26.3776 0 17.0042 0Z" fill="#4CAF50"/>
<path d="M26.8962 24.0061C26.486 25.1642 24.8583 26.1247 23.5599 26.4052C22.6717 26.5944 21.5114 26.7452 17.6057 25.126C12.6098 23.0562 9.39255 17.9796 9.1418 17.6502C8.90167 17.3209 7.12305 14.9621 7.12305 12.5226C7.12305 10.0831 8.36192 8.89524 8.8613 8.38524C9.27142 7.96661 9.9493 7.77536 10.5995 7.77536C10.8099 7.77536 10.999 7.78599 11.169 7.79449C11.6684 7.81574 11.9192 7.84549 12.2485 8.63386C12.6587 9.62199 13.6574 12.0615 13.7764 12.3122C13.8975 12.563 14.0187 12.903 13.8487 13.2324C13.6893 13.5724 13.549 13.7232 13.2983 14.0122C13.0475 14.3012 12.8095 14.5222 12.5588 14.8325C12.3293 15.1024 12.07 15.3914 12.359 15.8907C12.648 16.3795 13.6468 18.0094 15.1173 19.3184C17.0149 21.0077 18.5534 21.5475 19.1038 21.777C19.5139 21.947 20.0027 21.9066 20.3023 21.5879C20.6827 21.1777 21.1523 20.4977 21.6304 19.8284C21.9704 19.3481 22.3997 19.2886 22.8502 19.4586C23.3092 19.618 25.738 20.8186 26.2374 21.0672C26.7368 21.318 27.0662 21.437 27.1873 21.6474C27.3063 21.8577 27.3063 22.8459 26.8962 24.0061Z" fill="white"/>
</g>
<defs>
<clipPath id="clip0_3715_5434">
<rect width="34" height="34" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@ -0,0 +1,9 @@
export const phoneNumber =
/^\(?[1-9]{2}\)? ?(?:[2-8]|9[1-9])[0-9]{3}\-?[0-9]{4}$/;
// export const cpfNumber = /\d{3}.\d{3}.\d{3}-\d{2}/;
export const cpfNumber =
/^([0-9]{3}\.?[0-9]{3}\.?[0-9]{3}\-?[0-9]{2}|[0-9]{2}\.?[0-9]{3}\.?[0-9]{3}\/?[0-9]{4}\-?[0-9]{2})$/;
export const insta =
/(?:^|[^\w])(?:@)([\w-](?:(?:[\w-]|(?:\.(?!\.))){0,28}(?:[\w-]))?)/;

View File

@ -0,0 +1,20 @@
import * as Yup from "yup";
import { phoneNumber, cpfNumber, insta } from "./CustonValidationsRegex";
export default Yup.object().shape({
name: Yup.string().required("*Campo Obrigatório"),
email: Yup.string()
.email()
.required("*Campo Obrigatório")
.email("E-mail inválido"),
cpf: Yup.string()
.matches(cpfNumber, "CPF inválido")
.required("*Campo Obrigatório"),
telefone: Yup.string()
.matches(phoneNumber, "numero inválido")
.required("*Campo Obrigatório"),
instagram: Yup.string().matches(insta, "conta inválida"),
data: Yup.date().required("*Campo Obrigatório"),
checkbox: Yup.boolean().oneOf([true], "*"),
});

15
src/index.tsx Normal file
View File

@ -0,0 +1,15 @@
import React from "react";
import ReactDOM from "react-dom/client";
import { BrowserRouter } from "react-router-dom";
import { App } from "./App";
const root = ReactDOM.createRoot(
document.getElementById("root") as HTMLElement
);
root.render(
<React.StrictMode>
<BrowserRouter>
<App />
</BrowserRouter>
</React.StrictMode>
);

12
src/pages/About.tsx Normal file
View File

@ -0,0 +1,12 @@
import { MainText } from "../components/Container-menu/TextContainer";
export const About = () => {
return (
<>
<div className="Main_textArea">
<h2>Sobre</h2>
<MainText />
</div>
</>
);
};

View File

@ -0,0 +1,162 @@
@import "../components/Variables.scss";
form {
position: relative;
display: flex;
flex-direction: column;
padding: 16px;
font-family: $fontFamily;
font-style: normal;
font-weight: 400;
font-size: 14px;
line-height: 16px;
@media (max-width: 1024px) {
padding: 0;
}
@media (min-width: 1025px) {
width: 100%;
padding: 0px;
}
.form-entryes {
flex-direction: column;
align-items: flex-start;
position: relative;
label {
color: $color-black-800;
margin: 12px 0 12px 15px;
@media (min-width: 2500px) {
font-weight: 400;
font-size: 28px;
line-height: 33px;
}
}
input {
width: calc(100% - 42px);
height: 14px;
padding: 15px 20px;
border: 1px solid $color-black-800;
border-radius: 25px;
font-family: $fontFamily;
font-style: normal;
font-weight: 400;
font-size: 14px;
line-height: 16px;
color: $color-gray-300;
margin: 0;
@media (min-width: 2500px) {
height: 31px;
font-weight: 400;
font-size: 28px;
line-height: 33px;
}
&::placeholder {
color: $color-gray-300;
}
}
}
.error {
display: flex;
justify-content: end;
font-family: $fontFamily;
font-style: normal;
font-weight: 400;
font-size: 12px;
line-height: 14px;
color: $color-red;
position: absolute;
align-self: flex-end;
top: 25px;
@media (min-width: 2500px) {
font-weight: 400;
font-size: 24px;
line-height: 28px;
}
}
.checkbox_wrapper {
margin: 12px 0;
position: relative;
span {
display: flex;
justify-content: flex-start !important;
margin-left: 13px;
margin-right: 2px;
color: #ff0000;
@media (min-width: 2500px) {
font-size: 26px;
}
}
label {
margin-left: 0;
text-decoration: underline;
@media (min-width: 2500px) {
font-weight: 400;
font-size: 28px;
line-height: 33px;
}
}
}
button {
height: 52.44px;
letter-spacing: 0.05em;
font-family: $fontFamily;
font-style: normal;
font-weight: 400;
font-size: 16px;
line-height: 19px;
padding: 17px;
background: $color-black;
border-radius: 25px;
color: $color-white;
@media (min-width: 2500px) {
height: 71px;
font-weight: 400;
font-size: 32px;
line-height: 38px;
padding: 16px 17px 17px 17px;
}
}
div {
display: flex;
justify-content: center;
align-items: center;
label {
order: 2;
font-weight: 400;
font-size: 14px;
line-height: 16px;
}
input {
order: 3;
width: 18px;
height: 18px;
border: 1px solid $color-black;
border-radius: 3px;
margin: 0 4px 3px;
@media (min-width: 2500px) {
width: 36.4px;
height: 35.15px;
}
}
}
@media (max-width: 1024px) {
h2 {
text-align: center;
}
}
}

13
src/pages/Contact.tsx Normal file
View File

@ -0,0 +1,13 @@
import { ContactForm } from "../components/ContactForm";
import "./Contact.modules.scss";
export const Form = () => {
return (
<>
<div className="Main_textArea">
<h2>Preencha o formulário </h2>
<ContactForm />
</div>
</>
);
};

12
src/pages/Delivery.tsx Normal file
View File

@ -0,0 +1,12 @@
import { MainText } from "../components/Container-menu/TextContainer";
export const Delivery = () => {
return (
<>
<div className="Main_textArea">
<h2>Entrega</h2>
<MainText />
</div>
</>
);
};

12
src/pages/Payments.tsx Normal file
View File

@ -0,0 +1,12 @@
import { MainText } from "../components/Container-menu/TextContainer";
export const Payments = () => {
return (
<>
<div className="Main_textArea">
<h2>Pagamentos</h2>
<MainText />
</div>
</>
);
};

12
src/pages/Privacy.tsx Normal file
View File

@ -0,0 +1,12 @@
import { MainText } from "../components/Container-menu/TextContainer";
export const Privacy = () => {
return (
<>
<div className="Main_textArea">
<h2>Seguraça e Privacidade</h2>
<MainText />
</div>
</>
);
};

12
src/pages/Refund.tsx Normal file
View File

@ -0,0 +1,12 @@
import { MainText } from "../components/Container-menu/TextContainer";
export const Refund = () => {
return (
<>
<div className="Main_textArea">
<h2>Troca ou Devolução</h2>
<MainText />
</div>
</>
);
};

1
src/react-app-env.d.ts vendored Normal file
View File

@ -0,0 +1 @@
/// <reference types="react-scripts" />

23
src/router.tsx Normal file
View File

@ -0,0 +1,23 @@
import { Routes, Route } from "react-router-dom";
import { About } from "./pages/About";
import { Payments } from "./pages/Payments";
import { Delivery } from "./pages/Delivery";
import { Form } from "./pages/Contact";
import { Privacy } from "./pages/Privacy";
import { Refund } from "./pages/Refund";
export const Router = () => {
return (
<>
<Routes>
<Route path="/" element={<About />} />
<Route path="/Pagamentos" element={<Payments />} />
<Route path="/Entrega" element={<Delivery />} />
<Route path="/Devolução" element={<Refund />} />
<Route path="/Segurança" element={<Privacy />} />
<Route path="/Contatos" element={<Form />} />
</Routes>
</>
);
};

26
tsconfig.json Normal file
View File

@ -0,0 +1,26 @@
{
"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"
]
}