From 1d0525d9ecb554e9588bc283b0dedbd9a8adb467 Mon Sep 17 00:00:00 2001 From: HenriqueSSan Date: Sat, 7 Jan 2023 15:04:03 -0300 Subject: [PATCH] refactor(workspace): created structure folder using Atom methodology --- .../Atoms/CustomLink/@types/index.d.ts | 10 +++++ src/components/Atoms/CustomLink/index.tsx | 18 ++++++++ src/components/Atoms/Icon/@types/index.d.ts | 7 ++++ src/components/Atoms/Icon/index.tsx | 10 +++++ src/components/Atoms/Item/@types/index.d.ts | 5 +++ src/components/Atoms/Item/index.tsx | 5 +++ .../Molecules}/Accordion/@types/index.d.ts | 0 .../Molecules}/Accordion/context/Items.tsx | 0 .../Molecules}/Accordion/index.scss | 0 .../Molecules}/Accordion/index.tsx | 0 .../Molecules}/Breadcrumb/index.module.scss | 0 .../Molecules}/Breadcrumb/index.tsx | 0 src/components/Molecules/ButtonIcon/index.tsx | 15 +++++++ .../Molecules/ItemList/@types/index.d.ts | 12 ++++++ src/components/Molecules/ItemList/index.tsx | 11 +++++ src/modules/common/Item.tsx | 14 ------- src/routes/index.tsx | 2 +- src/template/Footer/@types/index.d.ts | 2 +- src/template/Footer/containers/_List.tsx | 18 ++++---- src/template/Footer/containers/_Payment.tsx | 9 ++-- src/template/Footer/containers/__Contact.tsx | 11 ++--- .../Footer/containers/__Institutional.tsx | 20 ++++----- src/template/Footer/containers/__Question.tsx | 20 ++++----- src/template/Footer/containers/__Socials.tsx | 42 ++++++++----------- .../Header/containers/@types/index.d.ts | 11 ++++- src/template/Header/containers/_Bottom.tsx | 26 ++++++------ src/template/Header/containers/_Search.tsx | 11 +++-- src/template/Header/containers/_Top.tsx | 27 ++++++------ src/template/Header/containers/__Actions.tsx | 21 ++++++++++ src/template/Sidebar/index.tsx | 19 +++++---- 30 files changed, 229 insertions(+), 117 deletions(-) create mode 100644 src/components/Atoms/CustomLink/@types/index.d.ts create mode 100644 src/components/Atoms/CustomLink/index.tsx create mode 100644 src/components/Atoms/Icon/@types/index.d.ts create mode 100644 src/components/Atoms/Icon/index.tsx create mode 100644 src/components/Atoms/Item/@types/index.d.ts create mode 100644 src/components/Atoms/Item/index.tsx rename src/{modules/components => components/Molecules}/Accordion/@types/index.d.ts (100%) rename src/{modules/components => components/Molecules}/Accordion/context/Items.tsx (100%) rename src/{modules/components => components/Molecules}/Accordion/index.scss (100%) rename src/{modules/components => components/Molecules}/Accordion/index.tsx (100%) rename src/{modules/components => components/Molecules}/Breadcrumb/index.module.scss (100%) rename src/{modules/components => components/Molecules}/Breadcrumb/index.tsx (100%) create mode 100644 src/components/Molecules/ButtonIcon/index.tsx create mode 100644 src/components/Molecules/ItemList/@types/index.d.ts create mode 100644 src/components/Molecules/ItemList/index.tsx delete mode 100644 src/modules/common/Item.tsx create mode 100644 src/template/Header/containers/__Actions.tsx diff --git a/src/components/Atoms/CustomLink/@types/index.d.ts b/src/components/Atoms/CustomLink/@types/index.d.ts new file mode 100644 index 0000000..0f93509 --- /dev/null +++ b/src/components/Atoms/CustomLink/@types/index.d.ts @@ -0,0 +1,10 @@ +import { AnchorHTMLAttributes, ReactNode } from 'react' +import { LinkProps, To } from 'react-router-dom' + +export interface CustomLinkProps + extends AnchorHTMLAttributes, + LinkProps { + children: ReactNode | ReactNode[] + href?: string + to?: To | any +} diff --git a/src/components/Atoms/CustomLink/index.tsx b/src/components/Atoms/CustomLink/index.tsx new file mode 100644 index 0000000..3c20aec --- /dev/null +++ b/src/components/Atoms/CustomLink/index.tsx @@ -0,0 +1,18 @@ +import { CustomLinkProps } from './@types' +import { Link } from 'react-router-dom' + +export function CustomLink({ children, href, to, ...props }: CustomLinkProps) { + return ( + <> + {href ? ( + + {children} + + ) : ( + + {children} + + )} + + ) +} diff --git a/src/components/Atoms/Icon/@types/index.d.ts b/src/components/Atoms/Icon/@types/index.d.ts new file mode 100644 index 0000000..1f39b80 --- /dev/null +++ b/src/components/Atoms/Icon/@types/index.d.ts @@ -0,0 +1,7 @@ +import { HTMLAttributes } from 'react' + +export interface IconProps extends HTMLAttributes { + src: any + alt: string + $container?: HTMLAttributes +} diff --git a/src/components/Atoms/Icon/index.tsx b/src/components/Atoms/Icon/index.tsx new file mode 100644 index 0000000..364ef4e --- /dev/null +++ b/src/components/Atoms/Icon/index.tsx @@ -0,0 +1,10 @@ +/* eslint-disable jsx-a11y/alt-text */ +import { IconProps } from './@types' + +export function Icon({ $container, src, alt, ...props }: IconProps) { + return ( + + {alt} + + ) +} diff --git a/src/components/Atoms/Item/@types/index.d.ts b/src/components/Atoms/Item/@types/index.d.ts new file mode 100644 index 0000000..7dac81f --- /dev/null +++ b/src/components/Atoms/Item/@types/index.d.ts @@ -0,0 +1,5 @@ +import { HTMLAttributes, ReactNode } from 'react' + +export interface ItemProps extends HTMLAttributes { + children: ReactNode | ReactNode[] +} diff --git a/src/components/Atoms/Item/index.tsx b/src/components/Atoms/Item/index.tsx new file mode 100644 index 0000000..37ac9db --- /dev/null +++ b/src/components/Atoms/Item/index.tsx @@ -0,0 +1,5 @@ +import { ItemProps } from './@types' + +export function Item({ children, ...props }: ItemProps) { + return
  • {children}
  • +} diff --git a/src/modules/components/Accordion/@types/index.d.ts b/src/components/Molecules/Accordion/@types/index.d.ts similarity index 100% rename from src/modules/components/Accordion/@types/index.d.ts rename to src/components/Molecules/Accordion/@types/index.d.ts diff --git a/src/modules/components/Accordion/context/Items.tsx b/src/components/Molecules/Accordion/context/Items.tsx similarity index 100% rename from src/modules/components/Accordion/context/Items.tsx rename to src/components/Molecules/Accordion/context/Items.tsx diff --git a/src/modules/components/Accordion/index.scss b/src/components/Molecules/Accordion/index.scss similarity index 100% rename from src/modules/components/Accordion/index.scss rename to src/components/Molecules/Accordion/index.scss diff --git a/src/modules/components/Accordion/index.tsx b/src/components/Molecules/Accordion/index.tsx similarity index 100% rename from src/modules/components/Accordion/index.tsx rename to src/components/Molecules/Accordion/index.tsx diff --git a/src/modules/components/Breadcrumb/index.module.scss b/src/components/Molecules/Breadcrumb/index.module.scss similarity index 100% rename from src/modules/components/Breadcrumb/index.module.scss rename to src/components/Molecules/Breadcrumb/index.module.scss diff --git a/src/modules/components/Breadcrumb/index.tsx b/src/components/Molecules/Breadcrumb/index.tsx similarity index 100% rename from src/modules/components/Breadcrumb/index.tsx rename to src/components/Molecules/Breadcrumb/index.tsx diff --git a/src/components/Molecules/ButtonIcon/index.tsx b/src/components/Molecules/ButtonIcon/index.tsx new file mode 100644 index 0000000..5205252 --- /dev/null +++ b/src/components/Molecules/ButtonIcon/index.tsx @@ -0,0 +1,15 @@ +import { ButtonHTMLAttributes } from 'react' +import { Icon } from '../../Atoms/Icon' + +interface ButtonIconProps extends ButtonHTMLAttributes { + src: any + alt: string +} + +export function ButtonIcon({ src, alt, ...props }: ButtonIconProps) { + return ( + + ) +} diff --git a/src/components/Molecules/ItemList/@types/index.d.ts b/src/components/Molecules/ItemList/@types/index.d.ts new file mode 100644 index 0000000..db88e83 --- /dev/null +++ b/src/components/Molecules/ItemList/@types/index.d.ts @@ -0,0 +1,12 @@ +import { AnchorHTMLAttributes, ReactNode } from 'react' +import { To } from 'react-router-dom' +import { CustomLinkProps } from '../../Atoms/CustomLink/@types' +import { ItemProps } from '../../Atoms/Item/@types' + +export interface ItemListProps + extends AnchorHTMLAttributes, + CustomLinkProps { + to?: To + children: ReactNode | ReactNode[] + $container?: ItemProps +} diff --git a/src/components/Molecules/ItemList/index.tsx b/src/components/Molecules/ItemList/index.tsx new file mode 100644 index 0000000..d796f55 --- /dev/null +++ b/src/components/Molecules/ItemList/index.tsx @@ -0,0 +1,11 @@ +import { Item } from '../../Atoms/Item' +import { CustomLink } from '../../Atoms/CustomLink' +import { ItemListProps } from './@types' + +export function ItemList({ $container, children, ...props }: ItemListProps) { + return ( + + {children} + + ) +} diff --git a/src/modules/common/Item.tsx b/src/modules/common/Item.tsx deleted file mode 100644 index 3d20dc2..0000000 --- a/src/modules/common/Item.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import { AnchorHTMLAttributes, HTMLAttributes, ReactNode } from 'react' - -interface ItemProps extends AnchorHTMLAttributes { - children: ReactNode | ReactNode[] - $container?: HTMLAttributes -} - -export function Item({ children, $container, ...props }: ItemProps) { - return ( -
  • - {children} -
  • - ) -} diff --git a/src/routes/index.tsx b/src/routes/index.tsx index fbe85b9..106c430 100644 --- a/src/routes/index.tsx +++ b/src/routes/index.tsx @@ -2,7 +2,7 @@ import { useMemo } from 'react' import { Outlet, Route, Routes } from 'react-router-dom' import { Header } from '../template/Header' -import { Breadcrumb } from '../modules/components/Breadcrumb' +import { Breadcrumb } from '../components/Molecules/Breadcrumb' import { Sidebar } from '../template/Sidebar' import { About } from '../pages/Institutional/About' import { Contact } from '../pages/Institutional/Contact' diff --git a/src/template/Footer/@types/index.d.ts b/src/template/Footer/@types/index.d.ts index 6cda59f..f589b26 100644 --- a/src/template/Footer/@types/index.d.ts +++ b/src/template/Footer/@types/index.d.ts @@ -1,4 +1,4 @@ -import { AccordionProps } from '../../../modules/components/Accordion/@types' +import { AccordionProps } from '../../../components/Molecules/Accordion/@types' export interface InstitutionalListProps extends Omit {} diff --git a/src/template/Footer/containers/_List.tsx b/src/template/Footer/containers/_List.tsx index a012880..e077157 100644 --- a/src/template/Footer/containers/_List.tsx +++ b/src/template/Footer/containers/_List.tsx @@ -1,6 +1,6 @@ import { ListProps } from '../@types' -import { AccordionProviderItems } from '../../../modules/components/Accordion/context/Items' +import { AccordionProviderItems } from '../../../components/Molecules/Accordion/context/Items' import { ContactList } from './__Contact' import { InstitutionalList } from './__Institutional' @@ -8,6 +8,8 @@ import { QuestionsList } from './__Question' import { Socials } from './__Socials' import css from '../index.module.scss' +import { Item } from '../../../components/Atoms/Item' +import { CustomLink } from '../../../components/Atoms/CustomLink' export function List({ accordionCurrentIsOpen, @@ -22,20 +24,20 @@ export function List({ }} >
      -
    • + -
    • -
    • + + -
    • + -
    • + -
    • +
    - www.loremipsum.com + www.loremipsum.com
    diff --git a/src/template/Footer/containers/_Payment.tsx b/src/template/Footer/containers/_Payment.tsx index c182961..9ab5f18 100644 --- a/src/template/Footer/containers/_Payment.tsx +++ b/src/template/Footer/containers/_Payment.tsx @@ -8,6 +8,7 @@ import VisaBrandImg from '../../../assets/brands/Visa.png' import VtexPCIImg from '../../../assets/brands/vtex-pci-200.png' import styles from '../index.module.scss' +import { Item } from '../../../components/Atoms/Item' const assetsImg = [ MasterCardBrandImg, @@ -24,15 +25,15 @@ export function PaymentsList() {
      {assetsImg.map((image, index) => { return ( -
    • + -
    • + ) })}
      -
    • + -
    • +
    ) } diff --git a/src/template/Footer/containers/__Contact.tsx b/src/template/Footer/containers/__Contact.tsx index 05617e3..2b59911 100644 --- a/src/template/Footer/containers/__Contact.tsx +++ b/src/template/Footer/containers/__Contact.tsx @@ -1,6 +1,7 @@ import { ContactListProps } from '../@types' -import { Accordion } from '../../../modules/components/Accordion' +import { Item } from '../../../components/Atoms/Item' +import { Accordion } from '../../../components/Molecules/Accordion' import styles from '../index.module.scss' @@ -16,10 +17,10 @@ export function ContactList({ customKey }: ContactListProps) {
      -
    • Atendimento ao Consumidor
    • -
    • (11) 4159 9504
    • -
    • Atendimento Online
    • -
    • (11) 99433-8825
    • + Atendimento ao Consumidor + (11) 4159 9504 + Atendimento Online + (11) 99433-8825
    diff --git a/src/template/Footer/containers/__Institutional.tsx b/src/template/Footer/containers/__Institutional.tsx index eb6c78a..2a9b7f0 100644 --- a/src/template/Footer/containers/__Institutional.tsx +++ b/src/template/Footer/containers/__Institutional.tsx @@ -1,9 +1,9 @@ import { InstitutionalListProps } from '../@types' -import { Accordion } from '../../../modules/components/Accordion' -import { Item } from '../../../modules/common/Item' +import { Accordion } from '../../../components/Molecules/Accordion' import css from '../index.module.scss' +import { ItemList } from '../../../components/Molecules/ItemList' export function InstitutionalList({ customKey }: InstitutionalListProps) { return ( @@ -16,18 +16,18 @@ export function InstitutionalList({ customKey }: InstitutionalListProps) {
      - + Quem somos nós - - + + Política de Privacidade - - + + Segurança - - + + Seja um Revendedor - +
    diff --git a/src/template/Footer/containers/__Question.tsx b/src/template/Footer/containers/__Question.tsx index 2ebd688..349eed3 100644 --- a/src/template/Footer/containers/__Question.tsx +++ b/src/template/Footer/containers/__Question.tsx @@ -1,7 +1,7 @@ import { QuestionsListProps } from '../@types' -import { Accordion } from '../../../modules/components/Accordion' -import { Item } from '../../../modules/common/Item' +import { Accordion } from '../../../components/Molecules/Accordion' +import { ItemList } from '../../../components/Molecules/ItemList' import css from '../index.module.scss' @@ -16,18 +16,18 @@ export function QuestionsList({ customKey }: QuestionsListProps) {
      - + Entrega - - + + Pagamento - - + + Trocas e Devoluções - - + + Dúvidas Frequentes - +
    diff --git a/src/template/Footer/containers/__Socials.tsx b/src/template/Footer/containers/__Socials.tsx index 24f20f3..4fa614a 100644 --- a/src/template/Footer/containers/__Socials.tsx +++ b/src/template/Footer/containers/__Socials.tsx @@ -1,3 +1,5 @@ +import { ItemList } from '../../../components/Molecules/ItemList' + import facebookIcon from '../../../assets/icons/facebook.svg' import instagramIcon from '../../../assets/icons/instagram.svg' import linkedinIcon from '../../../assets/icons/linkedin.svg' @@ -9,31 +11,21 @@ import css from '../index.module.scss' export function Socials() { return ( ) } diff --git a/src/template/Header/containers/@types/index.d.ts b/src/template/Header/containers/@types/index.d.ts index 6501935..47af801 100644 --- a/src/template/Header/containers/@types/index.d.ts +++ b/src/template/Header/containers/@types/index.d.ts @@ -1,3 +1,5 @@ +import { HTMLAttributes, ButtonHTMLAttributes } from 'react' + export type ISearchProps = HTMLAttributes export interface ITopProps { @@ -5,6 +7,13 @@ export interface ITopProps { } export interface IBottomProps { - isMenuOpen: boolean handleClickClose: () => void + isMenuOpen: boolean +} + +export interface ActionsProps extends ButtonHTMLAttributes { + $container?: HTMLAttributes + handleClick: () => any + src: any + alt: string } diff --git a/src/template/Header/containers/_Bottom.tsx b/src/template/Header/containers/_Bottom.tsx index c08e9ab..501301e 100644 --- a/src/template/Header/containers/_Bottom.tsx +++ b/src/template/Header/containers/_Bottom.tsx @@ -1,5 +1,8 @@ import { IBottomProps } from './@types' +import { ItemList } from '../../../components/Molecules/ItemList' +import { Actions } from './__Actions' + import closeIcon from '../../../assets/icons/x.svg' import styles from '../index.module.scss' @@ -21,23 +24,20 @@ export function Bottom({ isMenuOpen, handleClickClose }: IBottomProps) { }`} >
    -
    - Entrar - -
    +
      {['Cursos', 'Saiba Mais', 'Institucionais'].map((item, index) => { return ( -
    • - {item} -
    • + + {item} + ) })}
    diff --git a/src/template/Header/containers/_Search.tsx b/src/template/Header/containers/_Search.tsx index 85a4565..66f3729 100644 --- a/src/template/Header/containers/_Search.tsx +++ b/src/template/Header/containers/_Search.tsx @@ -2,6 +2,8 @@ import { useState } from 'react' import { ISearchProps } from './@types' +import { ButtonIcon } from '../../../components/Molecules/ButtonIcon' + import searchIcon from '../../../assets/icons/search.svg' export function Search({ ...props }: ISearchProps) { @@ -20,9 +22,12 @@ export function Search({ ...props }: ISearchProps) { value={searchData} onChange={handleChangeValue} /> - + setSearchData('')} + src={searchIcon} + alt="Search Icon" + />
    ) } diff --git a/src/template/Header/containers/_Top.tsx b/src/template/Header/containers/_Top.tsx index 13a658a..414a9f4 100644 --- a/src/template/Header/containers/_Top.tsx +++ b/src/template/Header/containers/_Top.tsx @@ -1,5 +1,7 @@ import { ITopProps } from './@types' +import { ButtonIcon } from '../../../components/Molecules/ButtonIcon' +import { Actions } from './__Actions' import { Search } from './_Search' import cartIcon from '../../../assets/icons/minicart.svg' @@ -12,13 +14,13 @@ import styles from '../index.module.scss' export function Top({ handleClickOpen }: ITopProps) { return (
    - + onClick={handleClickOpen} + type="button" + src={openIcon} + alt="ícone do botão para abrir o menu" + /> @@ -29,13 +31,12 @@ export function Top({ handleClickOpen }: ITopProps) { -
    - Entrar - - -
    + console.log('Funcionando')} + src={cartIcon} + alt="ícone de carrinho" + />
    ) } diff --git a/src/template/Header/containers/__Actions.tsx b/src/template/Header/containers/__Actions.tsx new file mode 100644 index 0000000..7d51077 --- /dev/null +++ b/src/template/Header/containers/__Actions.tsx @@ -0,0 +1,21 @@ +import { ActionsProps } from './@types' +import { CustomLink } from '../../../components/Atoms/CustomLink' +import { ButtonIcon } from '../../../components/Molecules/ButtonIcon' + +export function Actions({ + handleClick, + $container, + src, + alt, + ...props +}: ActionsProps) { + return ( +
    + Entrar + {/* prettier-ignore */} + +
    + ) +} diff --git a/src/template/Sidebar/index.tsx b/src/template/Sidebar/index.tsx index 13ccdcc..2b669aa 100644 --- a/src/template/Sidebar/index.tsx +++ b/src/template/Sidebar/index.tsx @@ -1,4 +1,6 @@ -import { Link, useLocation } from 'react-router-dom' +import { useLocation } from 'react-router-dom' + +import { ItemList } from '../../components/Molecules/ItemList' import styles from './index.module.scss' @@ -20,14 +22,13 @@ export function Sidebar() {
      {paths.map(({ path, name }) => { return ( -
    • - - {name} - -
    • + + {name} + ) })}