feat: Implementa input newsletter

This commit is contained in:
Cainã Milech 2022-12-29 23:59:48 -03:00
parent 61b747cc46
commit a8ac4bbc13
17 changed files with 414 additions and 71 deletions

View File

@ -1,12 +1,12 @@
import React from "react";
import logo from "./logo.svg";
import "../src/assets/styles/global.scss";
import { Home } from "./pages/Home";
import { Institucional } from "./pages/Institucional";
function App() {
return (
<div>
<Home />
<Institucional />
</div>
);
}

View File

@ -0,0 +1,3 @@
<svg width="6" height="8" viewBox="0 0 6 8" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M5.11608 3.60396L1.6762 0.164193C1.45738 -0.0547311 1.10261 -0.0547311 0.883896 0.164193C0.665166 0.382921 0.665166 0.737678 0.883896 0.95639L3.92766 4.00006L0.883984 7.04362C0.665255 7.26244 0.665255 7.61716 0.883984 7.83589C1.10271 8.0547 1.45747 8.0547 1.67629 7.83589L5.11617 4.39607C5.22553 4.28665 5.28015 4.1434 5.28015 4.00008C5.28015 3.85668 5.22543 3.71332 5.11608 3.60396Z" fill="#C4C4C4"/>
</svg>

After

Width:  |  Height:  |  Size: 510 B

View File

@ -0,0 +1,10 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_1_306)">
<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"/>
</g>
<defs>
<clipPath id="clip0_1_306">
<rect width="16" height="16" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 986 B

View File

@ -1,35 +0,0 @@
.main {
border: 1px solid red;
margin-left: 100px;
margin-right: 100px;
&__title {
text-align: center;
margin-bottom: 80px;
}
.navigation {
display: flex;
&__items {
list-style: none;
border-right: 1px solid black;
width: 302px;
height: 285px;
margin-right: 30px;
a {
padding: 10px 16px;
display: block;
text-decoration: none;
color: gray;
/*color: $black;*/
}
}
}
footer {
margin-top: 50px;
}
}

View File

@ -2,12 +2,5 @@
box-sizing: border-box;
padding: 0;
margin: 0;
}
//Colors
$black: #000;
.ativo {
color: white !important;
background-color: black;
font-family: var(--font-roboto);
}

View File

@ -0,0 +1,58 @@
.main {
border: 1px solid var(--gray-100);
margin-left: 100px;
margin-right: 100px;
&__breadcrumb {
display: flex;
align-items: center;
gap: 9.72px;
figure {
display: contents;
}
span {
color: var(--gray-100);
font-weight: 400;
font-size: 12px;
line-height: 14px;
}
}
&__title {
color: var(--black-100);
font-style: normal;
font-weight: 400;
font-size: 24px;
line-height: 28px;
letter-spacing: 0.1em;
text-align: center;
margin-bottom: 80px;
}
&__wrapperNav {
display: flex;
.content {
width: 69.2%;
align-self: center;
h2 {
color: var(--black-100);
font-weight: 700;
font-size: 24px;
line-height: 28px;
margin-bottom: 12px;
}
p {
color: var(--gray-200);
font-weight: 400;
font-size: 13px;
line-height: 15px;
margin-bottom: 13px;
}
}
}
}

View File

@ -0,0 +1,22 @@
.items {
list-style: none;
border-right: 1px solid var(--black);
width: 302px;
height: 285px;
margin-right: 30px;
a {
color: var(--gray-200);
padding: 10px 16px;
display: block;
text-decoration: none;
font-weight: 400;
font-size: 16px;
line-height: 19px;
&.ativo {
color: var(--white);
background-color: var(--black);
}
}
}

View File

@ -0,0 +1,40 @@
.newsletter {
margin-top: 70px;
border-top: 1px solid var(--black);
border-bottom: 1px solid var(--black);
padding: 16px 0;
display: flex;
justify-content: center;
&__wrapper {
h3 {
color: var(--black-200);
font-weight: 500;
font-size: 18px;
line-height: 21px;
letter-spacing: 0.05em;
margin-bottom: 8px;
}
form {
input {
padding: 13px 16px;
border: 1px solid var(--gray-300);
border-radius: 4px;
font-weight: 400;
font-size: 14px;
line-height: 16px;
color: var(--gray-100);
width: 340px;
height: 42px;
&::placeholder {
font-weight: 400;
font-size: 14px;
line-height: 16px;
color: var(--gray-100);
}
}
}
}
}

View File

@ -0,0 +1,13 @@
:root {
--font-roboto: "Roboto", sans-serif;
--black: #000;
--black-100: #292929;
--black-200: #303030;
--white: #fff;
--gray-100: #c4c4c4;
--gray-200: #7d7d7d;
--gray-300: #e5e5e5;
}

View File

@ -1,7 +1,38 @@
import React from "react";
const Entrega = () => {
return <div>entregaa</div>;
return (
<div className="content">
<h2>Entrega</h2>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure dolor in reprehenderit in voluptate
velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
occaecat cupidatat non proident, sunt in culpa qui officia deserunt
mollit anim id est laborum.
</p>
<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>
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 { Entrega };

View File

@ -1,57 +1,69 @@
import React from "react";
import { NavLink } from "react-router-dom";
import styles from "../assets/styles/Home.module.scss";
import navigation from "../assets/styles/modules/Navigation.module.scss";
const Navigation = () => {
let activeClassName = "ativo";
/*let activeClassName = "ativo";*/
return (
<ul className={styles["navigation__items"]}>
<li className={styles["navigation__item"]}>
<ul className={navigation["items"]}>
<li className={navigation["item"]}>
<NavLink
to="/"
className={({ isActive }) => (isActive ? activeClassName : undefined)}
className={({ isActive }) =>
isActive ? navigation.ativo : undefined
}
>
Sobre
</NavLink>
</li>
<li className={styles["navigation__item"]}>
<li className={navigation["item"]}>
<NavLink
to="/pagamento"
className={({ isActive }) => (isActive ? activeClassName : undefined)}
className={({ isActive }) =>
isActive ? navigation.ativo : undefined
}
>
Forma de Pagamento
</NavLink>
</li>
<li className={styles["navigation__item"]}>
<li className={navigation["item"]}>
<NavLink
to="/entrega"
className={({ isActive }) => (isActive ? activeClassName : undefined)}
className={({ isActive }) =>
isActive ? navigation.ativo : undefined
}
>
Entrega
</NavLink>
</li>
<li className={styles["navigation__item"]}>
<li className={navigation["item"]}>
<NavLink
to="/troca"
className={({ isActive }) => (isActive ? activeClassName : undefined)}
className={({ isActive }) =>
isActive ? navigation.ativo : undefined
}
>
Troca e Devolução
</NavLink>
</li>
<li className={styles["navigation__item"]}>
<li className={navigation["item"]}>
<NavLink
to="/seguranca"
className={({ isActive }) => (isActive ? activeClassName : undefined)}
className={({ isActive }) =>
isActive ? navigation.ativo : undefined
}
>
Segurança e Privacidade
</NavLink>
</li>
<li className={styles["navigation__item"]}>
<li className={navigation["item"]}>
<NavLink
to="/contato"
className={({ isActive }) => (isActive ? activeClassName : undefined)}
className={({ isActive }) =>
isActive ? navigation.ativo : undefined
}
>
Contato
</NavLink>

View File

@ -0,0 +1,54 @@
import React from "react";
import newsletter from "../assets/styles/modules/Newsletter.module.scss";
import { Formik, Form, Field, ErrorMessage } from "formik";
import * as Yup from "yup";
const FormSchema = Yup.object().shape({
email: Yup.string().required("Campo obrigatorio").email("email invalido"),
});
interface IEmailType {
email: string;
}
/*const initialValues = {
email: "",
};*/
const Newsletter = () => {
return (
<div className={newsletter["newsletter"]}>
<div className={newsletter["newsletter__wrapper"]}>
<h3>ASSINE NOSSA NEWSLETTER</h3>
<Formik
onSubmit={(values: IEmailType, actions) => {
actions.resetForm();
}}
initialValues={{ email: "" }}
validationSchema={FormSchema}
>
{({ errors, touched }) => (
<Form>
<Field
placeholder="E-mail"
id="email"
name="email"
className={errors.email && touched.email && "invalid"}
/>
<ErrorMessage
component="span"
name="email"
className="invalid-feedback"
/>
<button type="submit">Enviar</button>
</Form>
)}
</Formik>
</div>
</div>
);
};
export { Newsletter };

View File

@ -1,7 +1,38 @@
import React from "react";
const Pagamento = () => {
return <div>formas de pagamentoooooo</div>;
return (
<div className="content">
<h2>Forma de Pagamento</h2>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure dolor in reprehenderit in voluptate
velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
occaecat cupidatat non proident, sunt in culpa qui officia deserunt
mollit anim id est laborum.
</p>
<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>
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 { Pagamento };

View File

@ -1,7 +1,38 @@
import React from "react";
const Seguranca = () => {
return <div>segggg</div>;
return (
<div className="content">
<h2>Segurança e Privacidade</h2>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure dolor in reprehenderit in voluptate
velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
occaecat cupidatat non proident, sunt in culpa qui officia deserunt
mollit anim id est laborum.
</p>
<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>
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 { Seguranca };

View File

@ -1,7 +1,38 @@
import React from "react";
const Sobre = () => {
return <div>sobreeee</div>;
return (
<div className="content">
<h2>Sobre</h2>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure dolor in reprehenderit in voluptate
velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
occaecat cupidatat non proident, sunt in culpa qui officia deserunt
mollit anim id est laborum.
</p>
<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>
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 { Sobre };

View File

@ -1,7 +1,38 @@
import React from "react";
const Troca = () => {
return <div>trocaaaa</div>;
return (
<div className="content">
<h2>Troca e Devolução</h2>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure dolor in reprehenderit in voluptate
velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
occaecat cupidatat non proident, sunt in culpa qui officia deserunt
mollit anim id est laborum.
</p>
<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>
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 { Troca };

View File

@ -1,9 +1,12 @@
import React from "react";
import styles from "../assets/styles/Home.module.scss";
/*import styles from "../assets/styles/Home.module.scss";*/
import "../assets/styles/variables.scss";
import "../assets/styles/main.scss";
import { Header } from "../components/Header";
import { Navigation } from "../components/Navigation";
import { Newsletter } from "../components/Newsletter";
import { Footer } from "../components/Footer";
import { Routes, Route } from "react-router-dom";
@ -14,15 +17,28 @@ import { Entrega } from "../components/Entrega";
import { Troca } from "../components/Troca";
import { Seguranca } from "../components/Seguranca";
import { Contato } from "../components/Contato";
//IMAGES
import iconHome from "../assets/images/svgs/home.svg";
import iconArrow from "../assets/images/svgs/arrow-right.svg";
const Home = () => {
const Institucional = () => {
return (
<div>
<Header />
<div className={styles["main"]}>
<h1 className={styles["main__title"]}>INSTITUCIONAL</h1>
<div className="main">
<div className="main__breadcrumb">
<figure>
<img src={iconHome} />
</figure>
<figure>
<img src={iconArrow} />
</figure>
<span>INSTITUCIONAL</span>
</div>
<div className={styles["navigation"]}>
<h1 className="main__title">INSTITUCIONAL</h1>
<div className="main__wrapperNav">
<Navigation />
<Routes>
<Route path="/" element={<Sobre />} />
@ -33,6 +49,8 @@ const Home = () => {
<Route path="/contato" element={<Contato />} />
</Routes>
</div>
<Newsletter />
</div>
<Footer />
@ -40,4 +58,4 @@ const Home = () => {
);
};
export { Home };
export { Institucional };