Skip to content

Repository files navigation

Eduzz UI

UI padrão das aplicações, aqui você vai encontrar:

Layout

Estrutura padrão das aplicações.

Importação

importLayoutfrom'@eduzz/ui-layout';// ouimportLayoutfrom'@eduzz/ui-layout';importSidebarfrom'@eduzz/ui-layout/Sidebar';importTopbarfrom'@eduzz/ui-layout/Topbar';importContentfrom'@eduzz/ui-layout/Content';

Estrutura base

<Layout><Layout.Topbar/><Layout.Sidebar/><Layout.Content/></Layout>

Desestruturando

Para simplificar a escrita do código, você pode desestruturar os componentes.

importLayoutfrom'@eduzz/ui-layout';const{ Sidebar, Topbar, Content }=Layout;const{ Item, Group, GroupWithGroupSwitcher }=Sidebar;functionCustomLayout(){return(<Layout><Topbar{...topbarProps}>{...}</Topbar><Sidebar{...sidebarProps}>{...}</Sidebar><Content>{...}</Content></Layout>);}exportdefaultCustomLayout;

Exemplo

import{NavLink,useLocation}from'react-router-dom';const{ Sidebar, Topbar, Content }=Layout;const{ Item, Group, GroupWithGroupSwitcher }=Sidebar;functionMyComponent(){constlocation=useLocation();return(<Layout><TopbarcurrentApplication='orbita'user={{name: 'Houston User',belt: 'Black Belt',avatar: 'https://picsum.photos/200',tag: 'unity'}}><Topbar.UnitySupportChattoken='...token gerado pelo servidor'/><Topbar.Actionicon={<NotificationOutlinesize={25}/>}label='Notificações'/><Topbar.Actionicon={<InfoChatOutlinesize={25}/>}/><Topbar.UserMenu><Topbar.UserMenuItem>Meus Dados</Topbar.UserMenuItem><Topbar.UserMenuItem>Minhas Compras</Topbar.UserMenuItem><Topbar.UserMenuGrouplabel='Contas:'><Topbar.UserMenuItemhref='http://google.com'target='_blank'>
John Doe
</Topbar.UserMenuItem><Topbar.UserMenuItemdisabled>John Doe 2</Topbar.UserMenuItem></Topbar.UserMenuGroup><Topbar.UserMenuDivider/><Topbar.UserMenuItem>Sair</Topbar.UserMenuItem></Topbar.UserMenu></Topbar><SidebarcurrentLocation={location.pathname}><Itemhref='/agendamento'>Resumo</Item><GroupWithGroupSwitcherlabel='Integrações'options={[{id: 'whatsapp',label: 'Whatsapp',icon: <WhatsAppOutlined/>,items: [<Itemkey={'option-1-item-1'}id='sidebar-option-1-item-1'>
Templates
</Item>,<Itemkey={'option-1-item-2'}id='sidebar-option-1-item-2'>
Configurações
</Item>]},{id: 'email',label: 'Email',icon: <MailOutlined/>,items: [<Itemkey={'option-2-item-1'}id='sidebar-option-2-item-1'>
Layout
</Item>,<Itemkey={'option-2-item-2'}id='sidebar-option-2-item-2'>
Templates
</Item>,<Itemkey={'option-2-item-3'}id='sidebar-option-2-item-3'>
Configurações
</Item>]}]}/><Grouplabel='Agendamento'><Itemas={NavLink}to='/agendamento'>
Evento
</Item><Itemas={NavLink}to='/agendamento'>
MasterMind
</Item><Itemas={NavLink}to='/agendamento'>
Lançamento
</Item></Group><Itemdisabled>Marketplace</Item></Sidebar><Content>{/*Your content here*/}</Content></Layout>);}

Props

Layout props

proptipoobrigatóriopadrãodescrição
mode'light' | 'dark'false'light'Modo (Dark ou Light mode)
persistModebooleanfalsefalseFaz o modo (Dark ou Light mode) persistirem no localStorage como eduzz-ui-mode
acceptModeBySearchParambooleanfalsefalseAceita receber ?eduzzMode=dark na URL por exemplo, para definir o mode
onModeChange(newMode: 'light' | 'dark') => voidfalse-Função a ser executada toda vez que houver uma mudança de modo.

Topbar props

proptipoobrigatóriopadrãodescrição
logourlfalse-Url para o logo padrao.
logoMobileurlfalse-Url para o logo na versão mobile.
currentApplicationstringfalse-Aplicação que está sendo usada, para marcar no menu de apps
userobjectfalse-Se existe um usuário logado, sem ele não terá o menu User

Topbar.Action props

proptipoobrigatóriopadrãodescrição
iconReactNodetrue-Icone, tamanho ideal 25
labelstringfalse-
isActivebooleanfalsefalseSe o icone deve manter o estado de pressionado/ativo
onClickfunctionfalse-

Topbar.UserMenuItem props

proptipoobrigatóriopadrãodescrição
iconReactNodetrue-Icone, tamanho ideal 25
childrenstringfalse-Deve ser uma string
disabledbooleanfalse-
onClickfunctionfalse-

Topbar.UserMenuGroup props

proptipoobrigatóriopadrãodescrição
labelstringtrue-
childrenReactNodetrue-

Topbar.UnitySupportChat props

proptipoobrigatóriopadrãodescrição
tokenstringfalse-Token gerado pelo servidor para uso do LiveHelper

Topbar.HyperflowSupportChat props

proptipoobrigatóriopadrãodescrição
accountsJwt() => Promise<string>true-JWT gerado a partir do accounts
hyperflowConfigHyperflowConfigtrue-Tokens dos canais do Hyperflow
currentUserCurrentUsertrue-Dados do usuário que serão enviados para o Hyperflow
hyperflowJwtstringtrue-JWT gerado a partir do secret da Hyperflow
exporttypeCurrentUser={tag: string;belt: string;isClubeBlack: boolean;id: number;name: string;email: string;isAccessPolicy: boolean;}&(|{isAccessPolicy: true;originalUserId: number;originalUserName: string;originalUserEmail: string;}|{isAccessPolicy: false});typeHyperflowConfig={chatUnityID: string;chatBlackID: string;chatEliteID: string;flowId: string;origin: 'blinket'|'checkout'|'myeduzz'|'nutror'|'orbitpages'|'safevideo';};

Documentação de apoio: Hyperflow

Topbar.ModeSwitcher props

proptipoobrigatóriopadrãodescrição
tooltipstringfalse'Tema'Texto para o tooltip do botão. mode
badgeDotbooleanfalsefalseSe um badgeDot deve ser adicionado ao botão .

Sidebar props

proptipoobrigatóriopadrãodescrição
currentLocationstringfalse-Caminho de localização atual (pathname).

Sidebar.Item props

proptipoobrigatóriopadrãodescrição
asReact.ElementTypefalse-Componente que envolve o item.
anyanyfalse-Qualquer prop que o as receba
isActivebooleanfalsefalseIrá usar o currentLocation fornecido para tentar ver se está ativo ou não
tabIndexnumberfalse-
disabledbooleanfalse-
onClickfunctionfalse-

Sidebar.Group props

proptipoobrigatóriopadrãodescrição
labelReact.ReactNodefalse--
tabIndexnumberfalse-

Sidebar.GroupWithGroupSwitcher props

proptipoobrigatóriopadrãodescrição
idstringfalse-Identificador único para o elemento raiz (HTML <li>).
labelReactNodefalse-Label ou título do grupo, exibido acima das opções do seletor.
optionsSidebarGroupWithGroupSwitcherOption[]true-Array de opções que serão renderizadas no grupo. Cada opção define um conjunto de itens e atributos.
classNamestringfalse-Classe CSS adicional para customização do componente.
defaultOptionIdstring false-Valor padrão selecionado, caso não seja informado, será utilizada a primeira opção como padrão
onChangeOption(option: SidebarGroupWithGroupSwitcherOption) => voidfalse-Função que será chamada como callback ao alterar a opção

SidebarGroupWithGroupSwitcherOption

proptipoobrigatóriopadrãodescrição
idstringtrue-Identificador único da opção.
labelstringtrue-Texto que representa o rótulo da opção. Pode ser um nome ou título descritivo.
iconReactNodefalse-Elemento opcional que pode conter um ícone ou qualquer outro elemento visual.
itemsReactNode[]true-Conjunto de itens (children) que serão renderizados quando a opção estiver selecionada.

Content props

proptipoobrigatóriopadrãodescrição
disablePaddingbooleanfalse-Remove o padding

App Loader

Loader de aplicação padrão.

Importação

importAppLoader,{useAppLoader}from'@eduzz/ui-layout';

Exemplo

Coloque no momento de createRoot e use o lazy para aparecer o loader antes da aplicação. Coloque o minimo de imports nesse arquivo para carregar o mais rapido possível.

import{lazy}from'react';import{createRoot}from'react-dom/client';importAppLoaderfrom'@eduzz/ui-layout';constApp=lazy(()=>import('./App'));createRoot(document.getElementById('app')asHTMLElement).render(<AppLoader><App/></AppLoader>);// App.tsximport{useEffect}from'react';import{useAppLoader}from'@eduzz/ui-layout';functionApp(){constappLoader=useAppLoader();useEffect(()=>{// Faça o que precisar ser feito e entao chame o `hide`appLoader.hide();// Caso queira aparecer novamenteappLoader.show();// Se algo acontecer pode mostrar uma mensagem de erroappLoader.error(newError(),()=>console.log('Tente novamente'));},[]);return<div/>}

Props

AppLoader props

proptipoobrigatóriopadrão
logourl|ReactNodefalseEduzz Logo
logoDarkModeurl|ReactNodefalseEduzz Logo

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

18 watching

Forks

Releases

Packages

Used by

Contributors

Languages