Merge pull request 'Feat(Main): Cria rotas da pagina, e cria main page completa com responsividade mobile e Tv' (#5) from Feature/MainPage into develop

Reviewed-on: #5
This commit is contained in:
Rhayllon Daudt 2023-01-20 21:46:48 +00:00
commit a792739551
27 changed files with 1232 additions and 279 deletions

View File

@ -15,6 +15,7 @@
"@types/node": "^16.18.11",
"@types/react": "^18.0.26",
"@types/react-dom": "^18.0.10",
"@types/react-input-mask": "^3.0.2",
"formik": "^2.2.9",
"react": "^18.2.0",
"react-dom": "^18.2.0",
@ -3881,6 +3882,14 @@
"@types/react": "*"
}
},
"node_modules/@types/react-input-mask": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/@types/react-input-mask/-/react-input-mask-3.0.2.tgz",
"integrity": "sha512-WTli3kUyvUqqaOLYG/so2pLqUvRb+n4qnx2He5klfqZDiQmRyD07jVIt/bco/1BrcErkPMtpOm+bHii4Oed6cQ==",
"dependencies": {
"@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",
@ -19663,6 +19672,14 @@
"@types/react": "*"
}
},
"@types/react-input-mask": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/@types/react-input-mask/-/react-input-mask-3.0.2.tgz",
"integrity": "sha512-WTli3kUyvUqqaOLYG/so2pLqUvRb+n4qnx2He5klfqZDiQmRyD07jVIt/bco/1BrcErkPMtpOm+bHii4Oed6cQ==",
"requires": {
"@types/react": "*"
}
},
"@types/react-modal": {
"version": "3.13.1",
"resolved": "https://registry.npmjs.org/@types/react-modal/-/react-modal-3.13.1.tgz",

View File

@ -10,6 +10,7 @@
"@types/node": "^16.18.11",
"@types/react": "^18.0.26",
"@types/react-dom": "^18.0.10",
"@types/react-input-mask": "^3.0.2",
"formik": "^2.2.9",
"react": "^18.2.0",
"react-dom": "^18.2.0",

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 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="M12.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.07811 6.63886 0.742449 6.63877 0.541181 6.44888L0.541122 6.44882C0.448342 6.36133 0.401297 6.24944 0.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.63821 0.408533 6.77079 0.458327 6.86907 0.55102C6.86908 0.551029 6.86909 0.551037 6.8691 0.551047L12.4587 5.82475L12.4588 5.82482C12.5516 5.9124 12.5987 6.02428 12.6 6.13647Z" fill="white" stroke="white" stroke-width="0.8"/>
</svg>

After

Width:  |  Height:  |  Size: 891 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.0547314 2.10261 -0.0547314 1.8839 0.164193C1.66517 0.382921 1.66517 0.737679 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

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

@ -103,7 +103,7 @@ const FooterMidle = () => {
</div>
<div className={styles["page-footer__fM-colum-wrapper__colum"]}>
<h4 className={styles["page-footer__fM-colum-wrapper__Title"]}>Institucional</h4>
<h4 className={styles["page-footer__fM-colum-wrapper__Title"]}>Fale Conosco</h4>
<ul className={styles["page-footer__fM-colum-wrapper__links"]}>

View File

@ -1,85 +1,189 @@
import React from "react";
import { ModalMenu } from "./ModalMenu";
import styles from "../scss/partials/header.module.scss"
import styles from "../scss/partials/header.module.scss";
import { Link } from "react-router-dom";
import logo from "../assets/imgs/Image-LogoM3Academy.png"
import iconLupa from "../assets/svgs/Vector-Search.svg"
import iconCart from "../assets/svgs/Cart-Icon.svg"
import menuMobile from "../assets/svgs/MenuMobile.svg"
import logo from "../assets/imgs/Image-LogoM3Academy.png";
import iconLupa from "../assets/svgs/Vector-Search.svg";
import iconCart from "../assets/svgs/Cart-Icon.svg";
const Header = () => {
return <header className={styles["page-header"]}>
<HeaderPlatforms/>
return (
<header className={styles["page-header"]}>
<HeaderPlatforms />
</header>
}
);
};
const HeaderPlatforms : any = () => {
if (window.innerWidth > 1024){
return <>
<HeaderTop/>
<HeaderBottom/>
</>
}else if (window.innerWidth <= 1024){
return <>
<HeaderTopMobile/>
</>
}
}
const HeaderPlatforms: any = () => {
if (window.innerWidth > 1024) {
return (
<>
<HeaderTop />
<HeaderBottom />
</>
);
} else if (window.innerWidth <= 1024) {
return (
<>
<HeaderTopMobile />
</>
);
}
};
const HeaderTop = () => {
return (
<div className={styles["page-header__top-wrapper"]}>
<a className={styles["page-header__top-wrapper__logo-wrapper"]} href="/"><img className={styles["page-header__top-wrapper__logo-wrapper__logo"]} src= { logo } alt="LogoM3" /></a>
<div className={styles["page-header__top-wrapper__search-bar"]}>
<input className={styles["page-header__top-wrapper__search-bar__input"]} type="text" placeholder="Buscar..." />
<button className={styles["page-header__top-wrapper__search-bar__input-button"]}><img className={styles["page-header__top-wrapper__search-bar__input-button__img"]} src= { iconLupa } alt="Icone Busca" /></button>
</div>
<div className={styles["page-header__top-wrapper__login-cart-wrapper"]}>
<a className={styles["page-header__top-wrapper__login-cart-wrapper__login"]} href="">Entrar</a>
<img className={styles["page-header__top-wrapper__login-cart-wrapper__cart"]} src={ iconCart } alt="Icone Carrinho" />
</div>
</div>
)
return (
<div className={styles["page-header__top-wrapper"]}>
<a className={styles["page-header__top-wrapper__logo-wrapper"]} href="/">
<img
className={styles["page-header__top-wrapper__logo-wrapper__logo"]}
src={logo}
alt="LogoM3"
/>
</a>
<div className={styles["page-header__top-wrapper__search-bar"]}>
<input
className={styles["page-header__top-wrapper__search-bar__input"]}
type="text"
placeholder="Buscar..."
/>
<button
className={
styles["page-header__top-wrapper__search-bar__input-button"]
}
>
<img
className={
styles["page-header__top-wrapper__search-bar__input-button__img"]
}
src={iconLupa}
alt="Icone Busca"
/>
</button>
</div>
<div className={styles["page-header__top-wrapper__login-cart-wrapper"]}>
<a
className={
styles["page-header__top-wrapper__login-cart-wrapper__login"]
}
href=""
>
Entrar
</a>
<img
className={
styles["page-header__top-wrapper__login-cart-wrapper__cart"]
}
src={iconCart}
alt="Icone Carrinho"
/>
</div>
</div>
);
};
const HeaderTopMobile = () => {
return (
<div className={styles["page-header__top-wrapper"]}>
<ModalMenu/>
<div className={styles["page-header__top-wrapper__logo-wrapper"]}>
<a className={styles["page-header__top-wrapper__logo-wrapper__link"]} href="/"><img className={styles["page-header__top-wrapper__logo-wrapper__link__logo"]} src= { logo } alt="LogoM3" /></a>
</div>
<div className={styles["page-header__top-wrapper__login-cart-wrapper"]}>
<a className={styles["page-header__top-wrapper__login-cart-wrapper__login"]} href="">Entrar</a>
<img className={styles["page-header__top-wrapper__login-cart-wrapper__cart"]} src={ iconCart } alt="Icone Carrinho" />
</div>
<div className={styles["page-header__top-wrapper__search-bar"]}>
<input className={styles["page-header__top-wrapper__search-bar__input"]} type="text" placeholder="Buscar..." />
<button className={styles["page-header__top-wrapper__search-bar__input-button"]}><img className={styles["page-header__top-wrapper__search-bar__input-button__img"]} src= { iconLupa } alt="Icone Busca" /></button>
</div>
</div>
)
return (
<div className={styles["page-header__top-wrapper"]}>
<ModalMenu />
<div className={styles["page-header__top-wrapper__logo-wrapper"]}>
<a
className={styles["page-header__top-wrapper__logo-wrapper__link"]}
href="/"
>
<img
className={
styles["page-header__top-wrapper__logo-wrapper__link__logo"]
}
src={logo}
alt="LogoM3"
/>
</a>
</div>
<div className={styles["page-header__top-wrapper__login-cart-wrapper"]}>
<a
className={
styles["page-header__top-wrapper__login-cart-wrapper__login"]
}
href=""
>
Entrar
</a>
<img
className={
styles["page-header__top-wrapper__login-cart-wrapper__cart"]
}
src={iconCart}
alt="Icone Carrinho"
/>
</div>
<div className={styles["page-header__top-wrapper__search-bar"]}>
<input
className={styles["page-header__top-wrapper__search-bar__input"]}
type="text"
placeholder="Buscar..."
/>
<button
className={
styles["page-header__top-wrapper__search-bar__input-button"]
}
>
<img
className={
styles["page-header__top-wrapper__search-bar__input-button__img"]
}
src={iconLupa}
alt="Icone Busca"
/>
</button>
</div>
</div>
);
};
const HeaderBottom = () => {
return (
<div className={styles["page-header__bottom-wrapper"]}>
<nav className={styles["page-header__bottom-wrapper-content"]}>
<ul className={styles["page-header__bottom-wrapper-content__links-wrapper"]}>
<a className={styles["page-header__bottom-wrapper-content__links-wrapper__link"]} href="">
<li className={styles["page-header__bottom-wrapper-content__links-wrapper__link-content"]}>cursos</li>
</a>
<a className={styles["page-header__bottom-wrapper-content__links-wrapper__link"]} href="">
<li className={styles["page-header__bottom-wrapper-content__links-wrapper__link-content"]}>saiba mais</li>
</a>
<a className={styles["page-header__bottom-wrapper-content__links-wrapper__link"]} href="">
<li className={styles["page-header__bottom-wrapper-content__links-wrapper__link-content"]}>institucionais</li>
</a>
</ul>
</nav>
</div>
)
return (
<div className={styles["page-header__bottom-wrapper"]}>
<nav className={styles["page-header__bottom-wrapper-content"]}>
<ul
className={
styles["page-header__bottom-wrapper-content__links-wrapper"]
}
>
<li
className={
styles["page-header__bottom-wrapper-content__links-wrapper__link"]
}
> <Link to={"/cursos"} className={
styles[
"page-header__bottom-wrapper-content__links-wrapper__link-content"
]
} >cursos</Link>
</li>
<li
className={
styles["page-header__bottom-wrapper-content__links-wrapper__link"]
}
> <Link to={"/saibamais"} className={
styles[
"page-header__bottom-wrapper-content__links-wrapper__link-content"
]
} >Saiba mais</Link>
</li>
<li
className={
styles["page-header__bottom-wrapper-content__links-wrapper__link"]
}
> <Link to={"/institucional/sobre"} className={
styles[
"page-header__bottom-wrapper-content__links-wrapper__link-content"
]
} >Institucional</Link>
</li>
</ul>
</nav>
</div>
);
};
export { Header };
export { Header };

View File

@ -0,0 +1,13 @@
import React from "react";
// const DivContent = () => {
// return (
// <div className={styles["page-main-section__contentWrapper"]}>
// <h2 className={styles["page-main-section__contentWrapper__title"]}>Sobre</h2>
// <p className={styles["page-main-section__contentWrapper__content"]}>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</p>
// </div>
// )
// };
export {}

View File

@ -0,0 +1,411 @@
import React, { useState } from "react";
import { NavLink, Outlet } from "react-router-dom";
import { Formik, Form, Field, ErrorMessage, FormikHelpers } from "formik";
import FormSchema from "../schema/FormSchema";
import styles from "../scss/partials/mainPage.module.scss";
import homeBreadcrumb from "../assets/svgs/homeBreadcrumb.svg";
import arrowBreadcrumb from "../assets/svgs/arrowBreadcrumb.svg";
const MainPage = () => {
return (
<main className={styles["page-main"]}>
<BreadcrumbAndTitle />
<section className={styles["page-main-section"]}>
<DivLinks />
<Outlet />
</section>
</main>
);
};
const DivLinks = () => {
return (
<div className={styles["page-main-section__linksWrapper"]}>
<NavLink
to={"/institucional/sobre"}
className={({ isActive }) =>
isActive ? "active-link-intitucional" : ""
}
>
Sobre
</NavLink>
<NavLink
to={"/institucional/formadepagamento"}
className={({ isActive }) =>
isActive ? "active-link-intitucional" : ""
}
>
Forma de Pagamento
</NavLink>
<NavLink
to={"/institucional/entrega"}
className={({ isActive }) =>
isActive ? "active-link-intitucional" : ""
}
>
Entrega
</NavLink>
<NavLink
to={"/institucional/trocaedevolucao"}
className={({ isActive }) =>
isActive ? "active-link-intitucional" : ""
}
>
Troca e Devolução
</NavLink>
<NavLink
to={"/institucional/segurancaeprivacidade"}
className={({ isActive }) =>
isActive ? "active-link-intitucional" : ""
}
>
Segurança e Privacidade
</NavLink>
<NavLink
to={"/institucional/contato"}
className={({ isActive }) =>
isActive ? "active-link-intitucional" : ""
}
>
Contato
</NavLink>
</div>
);
};
interface IContent {
contentTitle: string;
content: string;
}
const DivContent = (props: IContent) => {
const { content, contentTitle } = props;
return (
<div className={styles["page-main-section__contentWrapper"]}>
<h2 className={styles["page-main-section__contentWrapper__title"]}>
{contentTitle}
</h2>
<p className={styles["page-main-section__contentWrapper__content"]}>
{content}
</p>
</div>
);
};
interface IFormikValues {
name: string;
email: string;
cpf: string;
dataNascimento: string;
telefone: string;
instagram: string;
terms: boolean;
}
const DivContentForm = () => {
const initialValues = {
name: "",
email: "",
cpf: "",
dataNascimento: "",
telefone: "",
instagram: "",
terms: false,
};
const handleFormikSubmit = (values: IFormikValues) => {};
return (
<div className={styles["page-main-section__contentWrapperForm"]}>
<Formik
onSubmit={handleFormikSubmit}
initialValues={initialValues}
validationSchema={FormSchema}
>
<Form>
<h2
className={
styles["page-main-section__contentWrapperForm__TitleForm"]
}
>
Preencha o formulário{" "}
</h2>
<div
className={
styles["page-main-section__contentWrapperForm__FieldWrrapper"]
}
>
<label
className={
styles[
"page-main-section__contentWrapperForm__FieldWrrapper__Label"
]
}
htmlFor="name"
>
Nome
</label>
<Field
className={
styles[
"page-main-section__contentWrapperForm__FieldWrrapper__Input"
]
}
id="name"
placeholder="Seu nome completo"
name="name"
/>
<ErrorMessage
component="span"
name="name"
className={
styles[
"page-main-section__contentWrapperForm__FieldWrrapper__Errormessage"
]
}
/>
</div>
<div
className={
styles["page-main-section__contentWrapperForm__FieldWrrapper"]
}
>
<label
className={
styles[
"page-main-section__contentWrapperForm__FieldWrrapper__Label"
]
}
htmlFor="email"
>
E-mail
</label>
<Field
className={
styles[
"page-main-section__contentWrapperForm__FieldWrrapper__Input"
]
}
id="email"
placeholder="Seu e-mail"
name="email"
/>
<ErrorMessage
component="span"
name="email"
className={
styles[
"page-main-section__contentWrapperForm__FieldWrrapper__Errormessage"
]
}
/>
</div>
<div
className={
styles["page-main-section__contentWrapperForm__FieldWrrapper"]
}
>
<label
className={
styles[
"page-main-section__contentWrapperForm__FieldWrrapper__Label"
]
}
htmlFor="cpf"
>
CPF
</label>
<Field
className={
styles[
"page-main-section__contentWrapperForm__FieldWrrapper__Input"
]
}
id="cpf"
placeholder="000.000.000-00"
name="cpf"
/>
<ErrorMessage
component="span"
name="cpf"
className={
styles[
"page-main-section__contentWrapperForm__FieldWrrapper__Errormessage"
]
}
/>
</div>
<div
className={
styles["page-main-section__contentWrapperForm__FieldWrrapper"]
}
>
<label
className={
styles[
"page-main-section__contentWrapperForm__FieldWrrapper__Label"
]
}
htmlFor="dataNascimento"
>
Data de Nascimento:
</label>
<Field
className={
styles[
"page-main-section__contentWrapperForm__FieldWrrapper__Input"
]
}
id="dataNascimento"
placeholder="00.00.0000"
name="dataNascimento"
/>
<ErrorMessage
component="span"
name="dataNascimento"
className={
styles[
"page-main-section__contentWrapperForm__FieldWrrapper__Errormessage"
]
}
/>
</div>
<div
className={
styles["page-main-section__contentWrapperForm__FieldWrrapper"]
}
>
<label
className={
styles[
"page-main-section__contentWrapperForm__FieldWrrapper__Label"
]
}
htmlFor="telefone"
>
Telefone:
</label>
<Field
className={
styles[
"page-main-section__contentWrapperForm__FieldWrrapper__Input"
]
}
id="telefone"
placeholder="(00) 00000-0000"
name="telefone"
/>
<ErrorMessage
component="span"
name="telefone"
className={
styles[
"page-main-section__contentWrapperForm__FieldWrrapper__Errormessage"
]
}
/>
</div>
<div
className={
styles["page-main-section__contentWrapperForm__FieldWrrapper"]
}
>
<label
className={
styles[
"page-main-section__contentWrapperForm__FieldWrrapper__Label"
]
}
htmlFor="instagram"
>
Instagram
</label>
<Field
className={
styles[
"page-main-section__contentWrapperForm__FieldWrrapper__Input"
]
}
id="instagram"
placeholder="@seuuser "
name="instagram"
/>
{/* <ErrorMessage component="span" name="instagram" className={styles["page-main-section__contentWrapperForm__FieldWrrapper__Errormessage"]}/> */}
</div>
<div
className={
styles[
"page-main-section__contentWrapperForm__FieldWrrapperTerms"
]
}
>
<Field
className={
styles[
"page-main-section__contentWrapperForm__FieldWrrapperTerms__InputTerms"
]
}
id="terms"
type="checkbox"
name="terms"
/>
<label
className={
styles[
"page-main-section__contentWrapperForm__FieldWrrapperTerms__LabelTerms"
]
}
htmlFor="terms"
>
Declaro que li e aceito
</label>
<ErrorMessage
component="span"
name="terms"
className={
styles[
"page-main-section__contentWrapperForm__FieldWrrapperTerms__ErrormessageTerms"
]
}
/>
</div>
<button
className={
styles["page-main-section__contentWrapperForm__ButtonSubmit"]
}
type="submit"
>
CADASTRE-SE
</button>
</Form>
</Formik>
</div>
);
};
const BreadcrumbAndTitle = () => {
return (
<div className={styles["page-main-breadcrumb-wrapper"]}>
<ul className={styles["page-main-breadcrumb"]}>
<li className={styles["page-main-breadcrumb__wrapper-content"]}>
<img src={homeBreadcrumb} alt="Home Icon" />
</li>
<li className={styles["page-main-breadcrumb__wrapper-content"]}>
<img src={arrowBreadcrumb} alt="Arrow Icon" />
</li>
<li className={styles["page-main-breadcrumb__wrapper-content"]}>
<p className={styles["page-main-breadcrumb__wrapper-content__text"]}>
Institucional
</p>
</li>
</ul>
<h1 className={styles["page-main-breadcrumb-wrapper__title"]}>
Institucional
</h1>
</div>
);
};
export { MainPage, DivContent, DivContentForm };

View File

@ -0,0 +1,14 @@
import React from "react";
import ReactInputMask from "react-input-mask";
interface IValues {
value: any,
onChange: any
}
const MaskedInput = () => {
return <ReactInputMask mask="999.999.999-99"/>
}
export {MaskedInput}
// value={values.value} onChange={values.onChange}

View File

@ -1,26 +1,29 @@
import React, {useState} from "react";
import Modal from 'react-modal';
import React, { useState } from "react";
import Modal from "react-modal";
import { Link } from "react-router-dom";
import menuMobile from "../assets/svgs/MenuMobile.svg"
import closeMenuMobile from "../assets/svgs/CloseMenuMobile.svg"
import menuMobile from "../assets/svgs/MenuMobile.svg";
import closeMenuMobile from "../assets/svgs/CloseMenuMobile.svg";
import "../scss/partials/modalMenu.scss";
Modal.setAppElement('#root');
Modal.setAppElement("#root");
const ModalMenu = () => {
const [modalIsOpen, setIsOpen] = React.useState(false);
const [modalIsOpen, setIsOpen] = React.useState(false);
function openModal() {
setIsOpen(true);
}
function openModal() {
setIsOpen(true);
}
function closeModal() {
setIsOpen(false);
}
function closeModal() {
setIsOpen(false);
}
return <div className="containerModalMenuHambuerguer">
<button onClick={openModal} className="buttonModalOpen"><img src= { menuMobile } alt="HambuerguerMenuIcon" /></button>
return (
<div className="containerModalMenuHambuerguer">
<button onClick={openModal} className="buttonModalOpen">
<img src={menuMobile} alt="HambuerguerMenuIcon" />
</button>
<Modal
isOpen={modalIsOpen}
onRequestClose={closeModal}
@ -29,16 +32,19 @@ const ModalMenu = () => {
className="modal-content"
>
<div className="div1">
<a href="">Entrar</a>
<a href="">Entrar</a>
</div>
<div className="div2">
<Link to={"/cursos"}>Cursos</Link>
<Link to={"/saibamais"}>Saiba Mais</Link>
<Link to={"/institucionais"}>Institucional</Link>
<Link to={"/cursos"}>Cursos</Link>
<Link to={"/saibamais"}>Saiba Mais</Link>
<Link to={"/institucional/sobre"}>Institucional</Link>
</div>
<button onClick={closeModal} className="buttonModalClose"><img src= { closeMenuMobile } alt="HambuerguerMenuIcon" /></button>
<button onClick={closeModal} className="buttonModalClose">
<img src={closeMenuMobile} alt="HambuerguerMenuIcon" />
</button>
</Modal>
</div>
}
);
};
export { ModalMenu };
export { ModalMenu };

View File

@ -0,0 +1,29 @@
import React from "react";
import whattsIcon from "../assets/imgs/whatsapp.png"
import arrowToTop from "../assets/svgs/ArrowToTop.svg"
import "../scss/partials/WhattsButtonTop.scss"
// interface IWhatsButtonCss{
// className: string;
// }
const Whatts = () => {
// const {className} = props
return <div className="WhattsWrapper">
<a href="https://wa.me/5522999999999" target="_blank">
<img src={whattsIcon} alt="Icone para redirecionar à conversa no Whatts" />
</a>
</div>
}
const ButtonToTop = () => {
return <a href="#">
<div className="ButtonToTopWrapper">
<img src={arrowToTop} alt="Seta para cima" />
</div>
</a>
}
export {Whatts, ButtonToTop}

View File

@ -1,25 +1,36 @@
import React from 'react';
import ReactDOM from 'react-dom/client';
import './scss/global.scss';
import './scss/utils/variables.scss';
import React from "react";
import ReactDOM from "react-dom/client";
import "./scss/global.scss";
import "./scss/utils/variables.scss";
import { BrowserRouter, Routes, Route } from "react-router-dom";
import { Home } from "./pages/Home";
import { Cursos } from "./pages/Cursos";
import { Saibamais } from "./pages/Saibamais";
import { Institucional } from "./pages/Institucional";
import { DivContent, DivContentForm } from "./components/MainPage";
const titletext = "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.\nSed 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.\nUt 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?"
import {BrowserRouter, Routes, Route} from "react-router-dom"
import {Home} from "./pages/Home"
import { Cursos } from './pages/Cursos';
import { Saibamais } from './pages/Saibamais';
import { Institucionais } from './pages/Institucionais';
const root = ReactDOM.createRoot(
document.getElementById('root') as HTMLElement
document.getElementById("root") as HTMLElement
);
root.render(
root.render(
<BrowserRouter>
<Routes>
<Route path='/' element={<Home/>}/>
<Route path='/cursos' element={<Cursos/>}/>
<Route path='/saibamais' element={<Saibamais/>}/>
<Route path='/institucionais' element={<Institucionais/>}/>
<Route path="/" element={<Home />} />
<Route path="/cursos" element={<Cursos />} />
<Route path="/saibamais" element={<Saibamais />} />
<Route path="/institucional" element={<Institucional />} >
<Route path="sobre" element={<DivContent content={titletext} contentTitle="Sobre"/>}/>
<Route path="formadepagamento" element={<DivContent content={titletext} contentTitle="Forma de Pagamento"/>}/>
<Route path="entrega" element={<DivContent content={titletext} contentTitle="Entrega"/>}/>
<Route path="trocaedevolucao" element={<DivContent content={titletext} contentTitle="Troca e Devolução"/>}/>
<Route path="segurancaeprivacidade" element={<DivContent content={titletext} contentTitle="Segurança e Privacidade"/>}/>
<Route path="contato" element={<DivContentForm/>}/>
</Route>
</Routes>
</BrowserRouter>
);
);

View File

@ -2,11 +2,15 @@ import React from "react";
import { Header } from "../components/Header"
import { Footer } from "../components/Footer"
import { MainPage } from "../components/MainPage";
import { Whatts, ButtonToTop } from "../components/WhatappButtontop";
const Cursos = () => {
return <>
<Header/>
<Footer/>
<Whatts/>
<ButtonToTop/>
</>;
};

View File

@ -2,11 +2,15 @@ import React from "react";
import { Header } from "../components/Header"
import { Footer } from "../components/Footer"
import { MainPage } from "../components/MainPage";
import { ButtonToTop, Whatts } from "../components/WhatappButtontop";
const Home = () => {
return <>
<Header/>
<Footer/>
<Whatts/>
<ButtonToTop/>
</>;
};

View File

@ -1,13 +0,0 @@
import React from "react";
import { Header } from "../components/Header"
import { Footer } from "../components/Footer"
const Institucionais = () => {
return <>
<Header/>
<Footer/>
</>;
};
export { Institucionais };

View File

@ -0,0 +1,18 @@
import React from "react";
import { Header } from "../components/Header"
import { Footer } from "../components/Footer"
import { MainPage } from "../components/MainPage";
import { ButtonToTop, Whatts } from "../components/WhatappButtontop";
const Institucional = () => {
return <>
<Header/>
<MainPage/>
<Footer/>
<Whatts/>
<ButtonToTop/>
</>;
};
export { Institucional };

View File

@ -2,11 +2,15 @@ import React from "react";
import { Header } from "../components/Header"
import { Footer } from "../components/Footer"
import { MainPage } from "../components/MainPage";
import { ButtonToTop, Whatts } from "../components/WhatappButtontop";
const Saibamais = () => {
return <>
<Header/>
<Footer/>
<Whatts/>
<ButtonToTop/>
</>;
};

View File

@ -0,0 +1,11 @@
import * as Yup from "yup"
export default Yup.object().shape({
name: Yup.string().required("*Campo Obrigatório"),
email: Yup.string().required("*Campo Obrigatório").email("Email inválido"),
cpf: Yup.string().required("*Campo Obrigatório"),
dataNascimento: Yup.string().required("*Campo Obrigatório"),
telefone: Yup.string().required("*Campo Obrigatório"),
instagram: Yup.string(),
terms: Yup.bool().required().oneOf([true], '*')
})

View File

@ -12,81 +12,8 @@ code {
monospace;
}
.containerModalMenuHambuerguer{
display: flex;
align-items: center;
}
.div1,
.div2{
a{
font-family: var(--font-roboto);
font-style: normal;
font-weight: 500;
font-size: 14px;
line-height: 16px;
text-transform: uppercase;
text-decoration: none;
}
}
.div1{
display: flex;
.active-link-intitucional{
background-color: var(--black1);
box-sizing: border-box;
padding: 31px 0 31px 16px;
a{
font-weight: 400;
color: #FFFFFF;
}
}
.div2{
display: flex;
flex-direction: column;
gap: 12px;
padding: 31px 0 0 16px;
a{
font-weight: 500;
color: #C4C4C4;
}
}
.buttonModalClose{
position: absolute;
top: 32px;
right: 16px;
border: none;
background: transparent;
padding: 0;
display: flex;
outline: 0;
}
.buttonModalOpen{
border: none;
background: transparent;
padding: 0;
display: flex;
outline: 0;
}
.modal-overlay{
background-color: rgba(69, 69, 69, 0.7);
position: fixed;
top: 0;
bottom: 0;
right: 0;
left: 0;
display: flex;
}
.modal-content{
width: 96.48%;
background-color: var(--white1);
position: relative;
max-height: 585px;
box-sizing: border-box;
}
font-weight: 700 !important;
color: var(--white1) !important;
}

View File

@ -1,78 +1,76 @@
// .Container{
// display: flex;
// justify-content: center;
// align-items: center;
// }
// .div1,
// .div2{
// a{
// font-family: var(--font-roboto);
// font-style: normal;
// font-weight: 500;
// font-size: 14px;
// line-height: 16px;
// text-transform: uppercase;
// text-decoration: none;
// }
// }
// .div1{
// display: flex;
// background-color: var(--black1);
// box-sizing: border-box;
// padding: 31px 0 31px 16px;
// a{
// font-weight: 400;
// color: #FFFFFF;
// }
// }
// .div2{
// display: flex;
// flex-direction: column;
// gap: 12px;
// padding: 31px 0 0 16px;
// a{
// font-weight: 500;
// color: #C4C4C4;
// }
// }
// .buttonModalClose{
// position: absolute;
// top: 32px;
// right: 16px;
// border: none;
// background: transparent;
// padding: 0;
// display: flex;
// outline: 0;
// }
// .buttonModalOpen{
// border: none;
// background: transparent;
// padding: 0;
// display: flex;
// outline: 0;
// }
// .modal-overlay{
// background-color: rgba(69, 69, 69, 0.7);
// position: fixed;
// top: 0;
// bottom: 0;
// right: 0;
// left: 0;
// display: flex;
// }
// .modal-content{
// width: 96.48%;
// background-color: var(--white1);
// position: relative;
// max-height: 585px;
// box-sizing: border-box;
// }
.containerModalMenuHambuerguer{
display: flex;
align-items: center;
}
.div1,
.div2{
a{
font-family: var(--font-roboto);
font-style: normal;
font-weight: 500;
font-size: 14px;
line-height: 16px;
text-transform: uppercase;
text-decoration: none;
}
}
.div1{
display: flex;
background-color: var(--black1);
box-sizing: border-box;
padding: 31px 0 31px 16px;
a{
font-weight: 400;
color: #FFFFFF;
}
}
.div2{
display: flex;
flex-direction: column;
gap: 12px;
padding: 31px 0 0 16px;
a{
font-weight: 500;
color: #C4C4C4;
}
}
.buttonModalClose{
position: absolute;
top: 32px;
right: 16px;
border: none;
background: transparent;
padding: 0;
display: flex;
outline: 0;
}
.buttonModalOpen{
border: none;
background: transparent;
padding: 0;
display: flex;
outline: 0;
}
.modal-overlay{
background-color: rgba(69, 69, 69, 0.7);
position: fixed;
top: 0;
bottom: 0;
right: 0;
left: 0;
display: flex;
}
.modal-content{
width: 96.48%;
background-color: var(--white1);
position: relative;
max-height: 585px;
box-sizing: border-box;
}

View File

@ -0,0 +1,28 @@
.WhattsWrapper{
position: fixed;
bottom: 50px;
right: 16px;
cursor: pointer;
z-index: 9999;
@media screen and (min-width: 2500px) {
bottom: 95px;
}
}
.ButtonToTopWrapper{
position: fixed;
bottom: 13px;
right: 16px;
cursor: pointer;
z-index: 9999;
background-color: var(--grey2);
border-radius: 50px;
img{
padding: 13px 10.5px;
@media screen and (min-width: 2500px) {
padding: 27px 24px;
}
}
}

View File

@ -1,6 +1,5 @@
.page-header{
background-color: var(--black1);
margin-bottom: 200px;
&__top-wrapper{
display: grid;
@ -159,9 +158,8 @@
margin: 0;
&__link{
text-decoration: none;
margin-right: 55px;
&-content{
font-family: var(--font-roboto);
color: var(--white1);
@ -169,6 +167,7 @@
font-weight: 500;
font-size: 14px;
line-height: 16px;
text-decoration: none;
@media screen and (min-width: 2500px) {
font-size: 28px;

View File

@ -0,0 +1,338 @@
.page-main{
@media screen and (max-width: 1024px) {
padding: 0 16px;
}
&-breadcrumb-wrapper{
width: 84.38%;
margin: 30px auto 80px auto;
@media screen and (max-width: 1024px) {
width: 100%;
margin: 30px auto 40px auto;
}
&__title{
display: flex;
justify-content: center;
text-transform: uppercase;
font-family: 'Roboto';
font-style: normal;
font-weight: 400;
font-size: 24px;
line-height: 28px;
letter-spacing: 0.1em;
color: var(--black3);
margin: 80px 0 0 0;
@media screen and (min-width: 2500px) {
font-size: 48px;
line-height: 56px;
}
}
}
&-breadcrumb{
display: flex;
list-style-type: none;
gap: 8px;
padding: 0;
margin: 0;
&__wrapper-content{
display: flex;
align-items: center;
&__text{
margin: 0;
font-family: 'Roboto';
font-style: normal;
font-weight: 400;
font-size: 12px;
line-height: 14px;
color: #C4C4C4;
@media screen and (min-width: 2500px) {
font-size: 24px;
line-height: 28px;
}
}
}
}
&-section{
display: flex;
width: 84.38%;
margin: 0 auto 70px auto;
gap: 30px;
@media screen and (max-width: 1024px) {
flex-direction: column;
width: 100%;
margin: 0 auto 80px auto;
}
&__linksWrapper{
display: flex;
flex-direction: column;
width: 28.76%;
@media screen and (min-width: 1025px) {
border-right: 1px solid var(--black1);
min-height: 285px;
max-height: 285px;
}
@media screen and (max-width: 1024px) {
width: 100%;
}
@media screen and (min-width: 2500px) {
min-height: 465px;
max-height: 465px;
}
a{
height: 39px;
font-family: var(--font-roboto);
font-style: normal;
font-weight: 400;
font-size: 16px;
line-height: 19px;
color: var(--grey4);
text-decoration: none;
box-sizing: border-box;
display: flex;
align-items: center;
padding: 0 16px;
@media screen and (min-width: 2500px) {
font-size: 32px;
line-height: 38px;
height: 58px;
}
}
}
&__contentWrapper{
width: 71.24%;
@media screen and (max-width: 1024px) {
width: 100%;
}
&__title{
margin: 0;
font-family: var(--font-roboto);
font-style: normal;
font-weight: 700;
font-size: 24px;
line-height: 28px;
color: var(--black3);
padding: 10px 0 12px 0;
@media screen and (min-width: 2500px) {
font-size: 48px;
line-height: 56px;
}
@media screen and (max-width: 1024px) {
display: flex;
justify-content: center;
padding: 0 0 12px 0;
}
}
&__content{
margin: 0;
font-family: var(--font-roboto);
font-style: normal;
font-weight: 400;
font-size: 13px;
line-height: 15px;
color: var(--grey4);
@media screen and (min-width: 2500px) {
font-size: 26px;
line-height: 30px;
}
}
}
&__contentWrapperForm{
width: 71.24%;
@media screen and (max-width: 1024px) {
width: 100%;
}
&__ButtonSubmit{
width: 100%;
border: none;
height: 52px;
border-radius: 25px;
background-color: var(--black1);
color: var(--white1);
font-family: var(--font-roboto);
font-size: 16px;
line-height: 19px;
letter-spacing: 0.05em;
text-transform: uppercase;
cursor: pointer;
@media screen and (min-width: 2500px) {
font-size: 32px;
line-height: 38px;
height: 71px;
}
}
&__TitleForm{
margin: 0;
padding: 8px 0 12px 0;
font-family: var(--font-roboto);
font-style: normal;
font-weight: 700;
font-size: 24px;
line-height: 28px;
display: flex;
align-items: center;
color: var(--black1);
@media screen and (min-width: 2500px) {
font-size: 48px;
line-height: 56px;
}
@media screen and (max-width: 1024px) {
padding: 0 0 12px 0;
justify-content: center;
}
}
&__FieldWrrapper{
display: flex;
flex-direction: column;
padding-bottom: 12px;
position: relative;
&__Label{
margin: 0;
padding: 0 0 11px 15px;
font-family: var(--font-roboto);
font-style: normal;
font-weight: 400;
font-size: 14px;
line-height: 16px;
color: var(--black4);
@media screen and (min-width: 2500px) {
font-size: 28px;
line-height: 33px;
}
}
&__Input{
margin: 0;
padding: 0 20px;
height: 44px;
background: var(--white1);
border: 1px solid var(--black4);
border-radius: 25px;
font-family: var(--font-roboto);
font-style: normal;
font-weight: 400;
font-size: 14px;
line-height: 16px;
outline: 0;
@media screen and (min-width: 2500px) {
font-size: 28px;
line-height: 33px;
height: 62px;
}
&::placeholder{
font-family: var(--font-roboto);
font-size: 14px;
line-height: 16px;
color: var(--grey5);
@media screen and (min-width: 2500px) {
font-size: 28px;
line-height: 33px;
}
}
}
&__Errormessage{
position: absolute;
top: 13px;
right: 20px;
font-family: var(--font-roboto);
font-weight: 400;
font-size: 12px;
line-height: 14px;
color: var(--red1);
@media screen and (min-width: 2500px) {
font-size: 24px;
line-height: 28px;
}
}
}
&__FieldWrrapperTerms{
display: flex;
padding-bottom: 12px;
justify-content: center;
flex-direction: row-reverse;
&__LabelTerms{
margin: 0;
padding: 0 5px 0 0;
font-family: var(--font-roboto);
font-style: normal;
font-weight: 400;
font-size: 14px;
line-height: 16px;
color: var(--black4);
text-decoration: underline;
@media screen and (min-width: 2500px) {
font-size: 28px;
line-height: 33px;
}
}
&__InputTerms{
display: flex;
margin: 0;
border: 1px solid var(--black1);
border-radius: 3px;
@media screen and (min-width: 2500px) {
width: 35px;
}
}
&__ErrormessageTerms{
font-family: var(--font-roboto);
font-weight: 400;
font-size: 12px;
line-height: 14px;
color: var(--red1);
padding-right: 2px;
@media screen and (min-width: 2500px) {
font-size: 24px;
line-height: 28px;
}
}
}
}
}
}

View File

@ -6,8 +6,14 @@
--black1: #000000;
--black2: #303030;
--black3: #292929;
--black4: #100D0E;
--grey1: #c6c6c6;
--grey2: #c4c4c4;
--grey3: #E5E5E5;
--grey4: #7D7D7D;
--grey5: #B9B7B7;
--red1: #FF0000;
}