feat: institucional com react-router-dom, estilizado, faltas mask nos inputs de contato

This commit is contained in:
Ramon Dias Ferreira 2023-01-16 01:18:03 -03:00
parent 5345cfc049
commit 71a7cff96e
22 changed files with 707 additions and 14 deletions

107
package-lock.json generated
View File

@ -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",

View File

@ -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"

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 B

BIN
src/assets/img/home.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 361 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 B

View 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

View File

@ -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>
);

View 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;

View 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

View 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

View File

@ -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;

View 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

View 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
View 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

View File

@ -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(),
});

View 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;
}

View 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;
}

View 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;
}

View File

@ -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;
}
}

View 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;
}

View 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;
}

View 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;
}