forked from M3-Academy/desafio-react-e-typescript
feat: institucional com react-router-dom, estilizado, faltas mask nos inputs de contato
This commit is contained in:
parent
5345cfc049
commit
71a7cff96e
107
package-lock.json
generated
107
package-lock.json
generated
@ -17,13 +17,16 @@
|
||||
"@types/react-dom": "^18.0.10",
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-modal": "^3.16.1",
|
||||
"react-scripts": "5.0.1",
|
||||
"typescript": "^4.9.4",
|
||||
"web-vitals": "^2.1.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/react-modal": "^3.13.1",
|
||||
"formik": "^2.2.9",
|
||||
"node-sass": "^8.0.0",
|
||||
"react-text-mask": "^5.5.0",
|
||||
"sass": "^1.57.1",
|
||||
"scss": "^0.2.4",
|
||||
"yup": "^0.32.11"
|
||||
@ -3929,6 +3932,15 @@
|
||||
"@types/react": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/react-modal": {
|
||||
"version": "3.13.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/react-modal/-/react-modal-3.13.1.tgz",
|
||||
"integrity": "sha512-iY/gPvTDIy6Z+37l+ibmrY+GTV4KQTHcCyR5FIytm182RQS69G5ps4PH2FxtC7bAQ2QRHXMevsBgck7IQruHNg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@types/react": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/resolve": {
|
||||
"version": "1.17.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz",
|
||||
@ -7831,6 +7843,11 @@
|
||||
"url": "https://github.com/sindresorhus/execa?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/exenv": {
|
||||
"version": "1.2.2",
|
||||
"resolved": "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz",
|
||||
"integrity": "sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw=="
|
||||
},
|
||||
"node_modules/exit": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
|
||||
@ -15208,6 +15225,29 @@
|
||||
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
|
||||
"integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
|
||||
},
|
||||
"node_modules/react-lifecycles-compat": {
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
|
||||
"integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA=="
|
||||
},
|
||||
"node_modules/react-modal": {
|
||||
"version": "3.16.1",
|
||||
"resolved": "https://registry.npmjs.org/react-modal/-/react-modal-3.16.1.tgz",
|
||||
"integrity": "sha512-VStHgI3BVcGo7OXczvnJN7yT2TWHJPDXZWyI/a0ssFNhGZWsPmB8cF0z33ewDXq4VfYMO1vXgiv/g8Nj9NDyWg==",
|
||||
"dependencies": {
|
||||
"exenv": "^1.2.0",
|
||||
"prop-types": "^15.7.2",
|
||||
"react-lifecycles-compat": "^3.0.0",
|
||||
"warning": "^4.0.3"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": "^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18",
|
||||
"react-dom": "^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18"
|
||||
}
|
||||
},
|
||||
"node_modules/react-refresh": {
|
||||
"version": "0.11.0",
|
||||
"resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz",
|
||||
@ -15288,6 +15328,18 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/react-text-mask": {
|
||||
"version": "5.5.0",
|
||||
"resolved": "https://registry.npmjs.org/react-text-mask/-/react-text-mask-5.5.0.tgz",
|
||||
"integrity": "sha512-SLJlJQxa0uonMXsnXRpv5abIepGmHz77ylQcra0GNd7Jtk4Wj2Mtp85uGQHv1avba2uI8ZvRpIEQPpJKsqRGYw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"prop-types": "^15.5.6"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": "^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/read-cache": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
|
||||
@ -17600,6 +17652,14 @@
|
||||
"makeerror": "1.0.12"
|
||||
}
|
||||
},
|
||||
"node_modules/warning": {
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz",
|
||||
"integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==",
|
||||
"dependencies": {
|
||||
"loose-envify": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/watchpack": {
|
||||
"version": "2.4.0",
|
||||
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",
|
||||
@ -21247,6 +21307,15 @@
|
||||
"@types/react": "*"
|
||||
}
|
||||
},
|
||||
"@types/react-modal": {
|
||||
"version": "3.13.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/react-modal/-/react-modal-3.13.1.tgz",
|
||||
"integrity": "sha512-iY/gPvTDIy6Z+37l+ibmrY+GTV4KQTHcCyR5FIytm182RQS69G5ps4PH2FxtC7bAQ2QRHXMevsBgck7IQruHNg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/react": "*"
|
||||
}
|
||||
},
|
||||
"@types/resolve": {
|
||||
"version": "1.17.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz",
|
||||
@ -24118,6 +24187,11 @@
|
||||
"strip-final-newline": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"exenv": {
|
||||
"version": "1.2.2",
|
||||
"resolved": "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz",
|
||||
"integrity": "sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw=="
|
||||
},
|
||||
"exit": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
|
||||
@ -29345,6 +29419,22 @@
|
||||
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
|
||||
"integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
|
||||
},
|
||||
"react-lifecycles-compat": {
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
|
||||
"integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA=="
|
||||
},
|
||||
"react-modal": {
|
||||
"version": "3.16.1",
|
||||
"resolved": "https://registry.npmjs.org/react-modal/-/react-modal-3.16.1.tgz",
|
||||
"integrity": "sha512-VStHgI3BVcGo7OXczvnJN7yT2TWHJPDXZWyI/a0ssFNhGZWsPmB8cF0z33ewDXq4VfYMO1vXgiv/g8Nj9NDyWg==",
|
||||
"requires": {
|
||||
"exenv": "^1.2.0",
|
||||
"prop-types": "^15.7.2",
|
||||
"react-lifecycles-compat": "^3.0.0",
|
||||
"warning": "^4.0.3"
|
||||
}
|
||||
},
|
||||
"react-refresh": {
|
||||
"version": "0.11.0",
|
||||
"resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz",
|
||||
@ -29405,6 +29495,15 @@
|
||||
"workbox-webpack-plugin": "^6.4.1"
|
||||
}
|
||||
},
|
||||
"react-text-mask": {
|
||||
"version": "5.5.0",
|
||||
"resolved": "https://registry.npmjs.org/react-text-mask/-/react-text-mask-5.5.0.tgz",
|
||||
"integrity": "sha512-SLJlJQxa0uonMXsnXRpv5abIepGmHz77ylQcra0GNd7Jtk4Wj2Mtp85uGQHv1avba2uI8ZvRpIEQPpJKsqRGYw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"prop-types": "^15.5.6"
|
||||
}
|
||||
},
|
||||
"read-cache": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
|
||||
@ -31145,6 +31244,14 @@
|
||||
"makeerror": "1.0.12"
|
||||
}
|
||||
},
|
||||
"warning": {
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz",
|
||||
"integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==",
|
||||
"requires": {
|
||||
"loose-envify": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"watchpack": {
|
||||
"version": "2.4.0",
|
||||
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",
|
||||
|
@ -12,6 +12,7 @@
|
||||
"@types/react-dom": "^18.0.10",
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-modal": "^3.16.1",
|
||||
"react-scripts": "5.0.1",
|
||||
"typescript": "^4.9.4",
|
||||
"web-vitals": "^2.1.4"
|
||||
@ -41,8 +42,10 @@
|
||||
]
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/react-modal": "^3.13.1",
|
||||
"formik": "^2.2.9",
|
||||
"node-sass": "^8.0.0",
|
||||
"react-text-mask": "^5.5.0",
|
||||
"sass": "^1.57.1",
|
||||
"scss": "^0.2.4",
|
||||
"yup": "^0.32.11"
|
||||
|
BIN
src/assets/img/arrow-point-to-right.png
Normal file
BIN
src/assets/img/arrow-point-to-right.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 229 B |
BIN
src/assets/img/home.png
Normal file
BIN
src/assets/img/home.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 361 B |
BIN
src/assets/img/menu-hamburguer.png
Normal file
BIN
src/assets/img/menu-hamburguer.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 216 B |
19
src/components/main/Main.tsx
Normal file
19
src/components/main/Main.tsx
Normal file
@ -0,0 +1,19 @@
|
||||
import React from 'react';
|
||||
import Institucional from '../../pages/institucional/Institucional';
|
||||
import Home from '../../assets/img/home.png'
|
||||
import Arrow from '../../assets/img/arrow-point-to-right.png'
|
||||
|
||||
const Main = () => {
|
||||
return(
|
||||
<div>
|
||||
<div>
|
||||
<img src={Home} alt='home'></img>
|
||||
<img src={Arrow} alt='arrow'></img>
|
||||
<p>Institucional</p>
|
||||
</div>
|
||||
<Institucional/>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
export default Main
|
@ -1,20 +1,23 @@
|
||||
import React from 'react';
|
||||
import React, { useState } from 'react';
|
||||
import ReactDOM from 'react-dom/client';
|
||||
import './styles/global.scss';
|
||||
|
||||
import Header from './components/header/Header';
|
||||
import Institucional from './pages/institucional/Institucional';
|
||||
import Footer from './components/footer/Footer';
|
||||
import Main from './components/main/Main';
|
||||
import Menu from './components/header/Menu';
|
||||
|
||||
const root = ReactDOM.createRoot(
|
||||
document.getElementById('root') as HTMLElement
|
||||
);
|
||||
|
||||
function App() {
|
||||
const [openModal, setOpenModal] = useState(false)
|
||||
return (
|
||||
<div className="App">
|
||||
<Header/>
|
||||
<Institucional/>
|
||||
<Header handleOpenModal={() => setOpenModal(true)}/>
|
||||
<Menu isOpen={openModal} onRequestClose={() => setOpenModal(false)}/>
|
||||
<Main/>
|
||||
<Footer/>
|
||||
</div>
|
||||
);
|
||||
|
104
src/pages/contato/Contato.tsx
Normal file
104
src/pages/contato/Contato.tsx
Normal file
@ -0,0 +1,104 @@
|
||||
import React from "react";
|
||||
|
||||
import {Formik, Form, Field, ErrorMessage, FormikHelpers} from "formik"
|
||||
// import MaskedInput from 'react-text-mask'
|
||||
|
||||
import Schema from "../../schema/schema";
|
||||
|
||||
import styles from "../../styles/Contato.module.scss";
|
||||
|
||||
interface IFormikValues {
|
||||
name: string;
|
||||
email: string;
|
||||
cpf: string;
|
||||
data: string;
|
||||
telefone: string;
|
||||
instagram: string;
|
||||
}
|
||||
|
||||
const initialValues = {
|
||||
name: "",
|
||||
email: "",
|
||||
cpf: "",
|
||||
data: "",
|
||||
telefone: "",
|
||||
instagram: "",
|
||||
};
|
||||
|
||||
const onSubmit = (values: IFormikValues, actions: FormikHelpers<IFormikValues>) => {
|
||||
actions.setSubmitting(true);
|
||||
actions.resetForm()
|
||||
|
||||
}
|
||||
|
||||
|
||||
function Contato() {
|
||||
return (
|
||||
<div>
|
||||
<h2 className={styles["contato__title"]}>PREENCHA O FORMULÁRIO </h2>
|
||||
|
||||
<Formik className={styles["form__formik"]} onSubmit={onSubmit} initialValues={initialValues} validationSchema={Schema}>
|
||||
{({ errors, touched}) => (
|
||||
<Form>
|
||||
<div className={styles["form__container"]}>
|
||||
<label htmlFor="name">Nome</label>
|
||||
<Field className={errors.name && touched.name && "invalid"} placeholder="Seu nome completo" id="name" name ="name"/>
|
||||
<ErrorMessage component="span"
|
||||
name="name"
|
||||
className={styles["form__invalid"]}/>
|
||||
</div>
|
||||
<div className={styles["form__container"]}>
|
||||
<label htmlFor="email">E-mail</label>
|
||||
<Field className={errors.email && touched.email && "invalid"} placeholder="Seu e__mail" id="email" name ="email"/>
|
||||
<ErrorMessage component="span"
|
||||
name="email"
|
||||
className={styles["form__invalid"]}/>
|
||||
</div>
|
||||
<div className={styles["form__container"]}>
|
||||
<label htmlFor="cpf">CPF</label>
|
||||
<Field className={errors.cpf && touched.cpf && "invalid"} placeholder="000 000 000 00" id="cpf" name ="cpf"/>
|
||||
<ErrorMessage component="span"
|
||||
name="cpf"
|
||||
className={styles["form__invalid"]}/>
|
||||
</div>
|
||||
<div className={styles["form__container"]}>
|
||||
<label htmlFor="data">Data de Nascimento:</label>
|
||||
<Field className={errors.data && touched.data && "invalid"} placeholder="00 . 00 . 0000" id="data" name ="data"/>
|
||||
<ErrorMessage component="span"
|
||||
name="data"
|
||||
className={styles["form__invalid"]}/>
|
||||
</div>
|
||||
<div className={styles["form__container"]}>
|
||||
<label htmlFor="tel">Telefone:</label>
|
||||
<Field className={errors.telefone && touched.telefone && "invalid"} placeholder="(+00) 00000 0000" id="tel" name ="tel"/>
|
||||
<ErrorMessage component="span"
|
||||
name="tel"
|
||||
className={styles["form__invalid"]}/>
|
||||
</div>
|
||||
<div className={styles["form__container"]}>
|
||||
<label htmlFor="insta">Instagram</label>
|
||||
<Field className={errors.instagram && touched.instagram && "invalid"} placeholder="@seuuser" id="insta" name ="insta"/>
|
||||
<ErrorMessage component="span"
|
||||
name="insta"
|
||||
className={styles["form__invalid"]}/>
|
||||
</div>
|
||||
|
||||
<div className={styles["form__check"]}>
|
||||
<label htmlFor="checkbox">*Declaro que li e aceito</label>
|
||||
<input type="checkbox" id="checkbox" name="checkbox"></input>
|
||||
</div>
|
||||
|
||||
<button className={styles["form__button"]} type="submit">CADASTRE-SE</button>
|
||||
|
||||
</Form>
|
||||
)}
|
||||
|
||||
</Formik>
|
||||
|
||||
</div>
|
||||
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
export default Contato;
|
15
src/pages/devolução/Devolucao.tsx
Normal file
15
src/pages/devolução/Devolucao.tsx
Normal file
@ -0,0 +1,15 @@
|
||||
import React from 'react';
|
||||
import styles from '../../styles/Devolucao.module.scss'
|
||||
|
||||
const Devolucao = () => {
|
||||
return(
|
||||
<div className={styles["devolucao__container"]}>
|
||||
<h2 className= {styles["devolucao__title"]}>Troca e Devolução</h2>
|
||||
<p className= {styles["devolucao__description"]}>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. <br /><br />
|
||||
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. <br /><br />
|
||||
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>
|
||||
)
|
||||
}
|
||||
|
||||
export default Devolucao
|
17
src/pages/entrega/Entrega.tsx
Normal file
17
src/pages/entrega/Entrega.tsx
Normal file
@ -0,0 +1,17 @@
|
||||
import React from 'react';
|
||||
import styles from '../../styles/Entrega.module.scss'
|
||||
|
||||
const Entrega = () => {
|
||||
return(
|
||||
<div className={styles["entrega__container"]}>
|
||||
<h2 className= {styles["entrega__title"]}>Entrega</h2>
|
||||
<p className= {styles["entrega__description"]}>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. <br /><br />
|
||||
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. <br /><br />
|
||||
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>
|
||||
|
||||
)
|
||||
}
|
||||
|
||||
export default Entrega
|
@ -1,9 +1,55 @@
|
||||
import React from 'react';
|
||||
import React, { useState } from "react";
|
||||
|
||||
const Institucional = () => {
|
||||
return(
|
||||
<div>Institucional</div>
|
||||
)
|
||||
import styles from "../../styles/Institucional.module.scss";
|
||||
|
||||
import Sobre from "../sobre/Sobre";
|
||||
import Pagamento from "../pagamento/Pagamento";
|
||||
import Entrega from "../entrega/Entrega";
|
||||
import Devolucao from "../devolução/Devolucao";
|
||||
import Seguranca from "../segurança/Seguranca";
|
||||
import Contato from "../contato/Contato";
|
||||
|
||||
function Institucional() {
|
||||
const [step, setStep] = useState("");
|
||||
|
||||
function render() {
|
||||
switch (step) {
|
||||
case "sobre":
|
||||
return <Sobre />;
|
||||
case "pagamento":
|
||||
return <Pagamento />;
|
||||
case "entrega":
|
||||
return <Entrega />;
|
||||
case "devolucao":
|
||||
return <Devolucao />;
|
||||
case "seguranca":
|
||||
return <Seguranca />;
|
||||
case "contato":
|
||||
return <Contato />;
|
||||
default:
|
||||
return <Sobre />;
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
<div className={styles["main__container"]}>
|
||||
<h1 className={styles["title__mobile"]}>institucional</h1>
|
||||
<ul>
|
||||
<li onClick={() => setStep("sobre")}>Sobre</li>
|
||||
<li onClick={() => setStep("pagamento")}>Forma de Pagamento</li>
|
||||
<li onClick={() => setStep("entrega")}>Entrega</li>
|
||||
<li onClick={() => setStep("devolucao")}>Troca e Devolução</li>
|
||||
<li onClick={() => setStep("seguranca")}>Segurança e Privacidade</li>
|
||||
<li onClick={() => setStep("contato")}>Contato</li>
|
||||
</ul>
|
||||
<div>
|
||||
<h1 className={styles["title__desktop"]}>institucional</h1>
|
||||
<div>{render()}</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Institucional
|
||||
export default Institucional;
|
||||
|
17
src/pages/pagamento/Pagamento.tsx
Normal file
17
src/pages/pagamento/Pagamento.tsx
Normal file
@ -0,0 +1,17 @@
|
||||
import React from 'react';
|
||||
import styles from '../../styles/Pagamento.module.scss'
|
||||
|
||||
const Pagamento = () => {
|
||||
return(
|
||||
<div className= {styles["pagamento__container"]}>
|
||||
<h2 className= {styles["pagamento__title"]}> Forma de Pagamento</h2>
|
||||
<p className= {styles["pagamento__description"]}>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. <br /><br />
|
||||
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. <br /><br />
|
||||
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>
|
||||
)
|
||||
}
|
||||
|
||||
export default Pagamento
|
16
src/pages/segurança/Seguranca.tsx
Normal file
16
src/pages/segurança/Seguranca.tsx
Normal file
@ -0,0 +1,16 @@
|
||||
import React from 'react';
|
||||
import styles from '../../styles/Seguranca.module.scss'
|
||||
|
||||
const Seguranca = () => {
|
||||
return(
|
||||
<div className= {styles["seguranca__container"]}>
|
||||
<h2 className= {styles["seguranca__title"]}> Segurança e Privacidade</h2>
|
||||
<p className= {styles["seguranca__description"]}>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. <br /><br />
|
||||
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. <br /><br />
|
||||
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>
|
||||
|
||||
)
|
||||
}
|
||||
|
||||
export default Seguranca
|
16
src/pages/sobre/Sobre.tsx
Normal file
16
src/pages/sobre/Sobre.tsx
Normal file
@ -0,0 +1,16 @@
|
||||
import React from 'react';
|
||||
import styles from '../../styles/Sobre.module.scss'
|
||||
|
||||
const Sobre = () => {
|
||||
return(
|
||||
<div className={styles["sobre__container"]} >
|
||||
<h2 className={styles["sobre__title"]}>Sobre</h2>
|
||||
<p className={styles["sobre__description"]}>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. <br /><br />
|
||||
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. <br /><br />
|
||||
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>
|
||||
|
||||
)
|
||||
}
|
||||
|
||||
export default Sobre
|
@ -1,10 +1,10 @@
|
||||
import * as Yup from "yup";
|
||||
|
||||
export default Yup.object().shape({
|
||||
name: Yup.string().required("Campo obrigatório"),
|
||||
name: Yup.string().min(3).required("Campo obrigatório"),
|
||||
email: Yup.string().required("Campo obrigatório").email("Email inválido"),
|
||||
cpf: Yup.string().required("Campo obrigatório"),
|
||||
data: Yup.string().required("Campo obrigatório"),
|
||||
tel: Yup.string().required("Campo obrigatório"),
|
||||
insta: Yup.string().required("Campo obrigatório"),
|
||||
insta: Yup.string(),
|
||||
});
|
||||
|
107
src/styles/Contato.module.scss
Normal file
107
src/styles/Contato.module.scss
Normal file
@ -0,0 +1,107 @@
|
||||
.contato__title {
|
||||
font-family: 'Roboto', sans-serif;
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-size: 24px;
|
||||
line-height: 23px;
|
||||
color: #110D0F;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
|
||||
form {
|
||||
max-width: 391px;
|
||||
margin-top: 33px;
|
||||
}
|
||||
|
||||
input::placeholder {
|
||||
font-family: 'Roboto', sans-serif;
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-size: 14px;
|
||||
line-height: 23px;
|
||||
color: #B9B7B7;
|
||||
}
|
||||
|
||||
.form__container {
|
||||
position: relative;
|
||||
|
||||
}
|
||||
|
||||
.form__container label {
|
||||
display: flex;
|
||||
font-family: 'Roboto', sans-serif;
|
||||
font-weight: 400;
|
||||
font-size: 14px;
|
||||
line-height: 23px;
|
||||
color: #100D0E;
|
||||
padding-bottom: 4px;
|
||||
padding-top: 12px;
|
||||
|
||||
}
|
||||
|
||||
.form__container input {
|
||||
font-family: 'Roboto', sans-serif;
|
||||
font-weight: 400;
|
||||
font-size: 14px;
|
||||
line-height: 23px;
|
||||
color: #B9B7B7;
|
||||
background: #FFFFFF;
|
||||
border: 1px solid #100D0E;
|
||||
border-radius: 25px;
|
||||
padding: 11px 227px 10px 28px;
|
||||
}
|
||||
|
||||
.form__check {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 8px;
|
||||
padding: 21px 0 21px;
|
||||
font-weight: 400;
|
||||
font-size: 14px;
|
||||
line-height: 23px;
|
||||
text-decoration-line: underline;
|
||||
color: #100D0E;
|
||||
|
||||
}
|
||||
|
||||
.form__button {
|
||||
width: 391.49px;
|
||||
height: 52.47px;
|
||||
left: 500px;
|
||||
top: 979px;
|
||||
background: #000000;
|
||||
border-radius: 25px;
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
font-size: 16px;
|
||||
line-height: 34px;
|
||||
letter-spacing: 0.05em;
|
||||
color: #FFFFFF;
|
||||
border: #000000;
|
||||
margin-bottom: 117px;
|
||||
}
|
||||
|
||||
button:hover {
|
||||
background-color: #000000;
|
||||
}
|
||||
|
||||
button:active {
|
||||
background-color: #000000;
|
||||
}
|
||||
|
||||
.form__invalid {
|
||||
display: flex;
|
||||
font-family: 'Roboto', sans-serif;
|
||||
font-weight: 400;
|
||||
font-size: 12px;
|
||||
color: red;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.form__container input.invalid {
|
||||
border: 1px solid red;
|
||||
}
|
||||
|
||||
|
22
src/styles/Devolucao.module.scss
Normal file
22
src/styles/Devolucao.module.scss
Normal file
@ -0,0 +1,22 @@
|
||||
.devolucao__title {
|
||||
font-family: 'Roboto', sans-serif;
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
font-size: 24px;
|
||||
line-height: 28px;
|
||||
color: #292929;
|
||||
text-align: left;
|
||||
padding-bottom: 12px;
|
||||
}
|
||||
.devolucao__description {
|
||||
font-family: 'Roboto', sans-serif;
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-size: 13px;
|
||||
line-height: 15px;
|
||||
color: #7D7D7D;
|
||||
text-align: left;
|
||||
max-width: 715px;
|
||||
padding-bottom: 171px;
|
||||
}
|
||||
|
22
src/styles/Entrega.module.scss
Normal file
22
src/styles/Entrega.module.scss
Normal file
@ -0,0 +1,22 @@
|
||||
.entrega__title {
|
||||
font-family: 'Roboto', sans-serif;
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
font-size: 24px;
|
||||
line-height: 28px;
|
||||
color: #292929;
|
||||
text-align: left;
|
||||
padding-bottom: 12px;
|
||||
}
|
||||
.entrega__description {
|
||||
font-family: 'Roboto', sans-serif;
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-size: 13px;
|
||||
line-height: 15px;
|
||||
color: #7D7D7D;
|
||||
text-align: left;
|
||||
max-width: 715px;
|
||||
padding-bottom: 171px;
|
||||
}
|
||||
|
@ -1,3 +1,114 @@
|
||||
* {
|
||||
padding: 0;
|
||||
|
||||
@import url('https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap');
|
||||
|
||||
|
||||
.main__container {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
max-width: 80%;
|
||||
}
|
||||
|
||||
.main__container ul {
|
||||
border-right: 1px solid #E5E5E5;
|
||||
margin: 150px 32px 78px 118px;
|
||||
list-style: none;
|
||||
max-height: 270px;
|
||||
max-width: 270px;
|
||||
}
|
||||
|
||||
.main__container li {
|
||||
font-family: 'Roboto', sans-serif;
|
||||
font-weight: 400;
|
||||
font-size: 16px;
|
||||
line-height: 19px;
|
||||
color: #7D7D7D;
|
||||
text-align: left;
|
||||
margin-bottom: 24px;
|
||||
margin-right: 78px;
|
||||
height: 39px;
|
||||
|
||||
}
|
||||
|
||||
.main__container li:hover {
|
||||
background-color: #000000;
|
||||
cursor: pointer;
|
||||
font-family: 'Roboto', sans-serif;
|
||||
font-weight: 700;
|
||||
font-size: 16px;
|
||||
line-height: 19px;
|
||||
color: #FFFFFF;
|
||||
padding: 10px 16px;
|
||||
}
|
||||
|
||||
.title__desktop {
|
||||
font-weight: 300;
|
||||
font-size: 24px;
|
||||
line-height: 29px;
|
||||
letter-spacing: 0.1em;
|
||||
text-transform: uppercase;
|
||||
color: #292929;
|
||||
margin-bottom: 51px;
|
||||
margin-top: 80px;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1080px) {
|
||||
.main__container {
|
||||
max-width: 80%;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 768px) {
|
||||
.main__container {
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
max-width: 343px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.main__container ul {
|
||||
margin: 33px 25px 22px 7px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: flex-end;
|
||||
}
|
||||
|
||||
.main__contato-subtitle {
|
||||
margin-top: 22px;
|
||||
}
|
||||
|
||||
.title__desktop {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.title__mobile {
|
||||
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
font-size: 24px;
|
||||
line-height: 29px;
|
||||
letter-spacing: 0.1em;
|
||||
text-transform: uppercase;
|
||||
color: #292929;
|
||||
margin: 75px 92px 33px 83px;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: 769px) {
|
||||
.title__mobile {
|
||||
display: none
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 475px) {
|
||||
.main__container ul {
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 375px) {
|
||||
.main__container ul {
|
||||
max-width: 70%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
}
|
||||
|
22
src/styles/Pagamento.module.scss
Normal file
22
src/styles/Pagamento.module.scss
Normal file
@ -0,0 +1,22 @@
|
||||
.pagamento__title {
|
||||
font-family: 'Roboto', sans-serif;
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
font-size: 24px;
|
||||
line-height: 28px;
|
||||
color: #292929;
|
||||
text-align: left;
|
||||
padding-bottom: 12px;
|
||||
}
|
||||
.pagamento__description {
|
||||
font-family: 'Roboto', sans-serif;
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-size: 13px;
|
||||
line-height: 15px;
|
||||
color: #7D7D7D;
|
||||
text-align: left;
|
||||
max-width: 715px;
|
||||
padding-bottom: 171px;
|
||||
}
|
||||
|
23
src/styles/Seguranca.module.scss
Normal file
23
src/styles/Seguranca.module.scss
Normal file
@ -0,0 +1,23 @@
|
||||
.seguranca__title {
|
||||
font-family: 'Roboto', sans-serif;
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
font-size: 24px;
|
||||
line-height: 28px;
|
||||
color: #292929;
|
||||
text-align: left;
|
||||
padding-bottom: 12px;
|
||||
}
|
||||
.seguranca__description {
|
||||
font-family: 'Roboto', sans-serif;
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-size: 13px;
|
||||
line-height: 15px;
|
||||
color: #7D7D7D;
|
||||
text-align: left;
|
||||
max-width: 715px;
|
||||
padding-bottom: 171px;
|
||||
}
|
||||
|
||||
|
23
src/styles/Sobre.module.scss
Normal file
23
src/styles/Sobre.module.scss
Normal file
@ -0,0 +1,23 @@
|
||||
.sobre__title {
|
||||
font-family: 'Roboto', sans-serif;
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
font-size: 24px;
|
||||
line-height: 28px;
|
||||
color: #292929;
|
||||
text-align: left;
|
||||
padding-bottom: 12px;
|
||||
}
|
||||
.sobre__description {
|
||||
font-family: 'Roboto', sans-serif;
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-size: 13px;
|
||||
line-height: 15px;
|
||||
color: #7D7D7D;
|
||||
text-align: left;
|
||||
max-width: 715px;
|
||||
padding-bottom: 171px;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user