Design System

Sidebar

Navegação lateral fixa usada em todos os portais (Command Center, Consultant Portal, Seller Portal). Colapsável em modo ícone. Usa o componente AppSidebar de @workspace/ui.

import { SidebarProvider } from "@workspace/ui/components/sidebar";
import { AppSidebar } from "@workspace/ui/components/app-sidebar";

<SidebarProvider defaultOpen={true}>
  <AppSidebar
    items={menuItems}
    title="Centro de Comandos"
    showSearch
    searchPlaceholder="Encontre"
    onSearchOpen={() => setCommandOpen(true)}
    userProfile={{ name: "Ana Paula", role: "Admin", avatarUrl }}
  />
  <SidebarInset>
    <AppHeader menuItems={menuItems} />
    <main>{children}</main>
  </SidebarInset>
</SidebarProvider>

Anatomia (Figma)

Sidebar expandida (191px) e colapsada (~48px) conforme Figma.

Centro de Comandos
Encontre/

Ana Paula

Admin

Estrutura do componente

Composição interna do AppSidebar.

ComponenteClasse / PropFunção
Sidebarcollapsible="icon"Container raiz com modo de colapso
SidebarHeaderLogo + títuloCabeçalho com logo Ana Autentic e título do portal
Search buttonh-8 w-full rounded-mdAbre CommandDialog (atalho /)
SidebarContentmt-2Área de navegação com NavMain
NavMainitems: MenuItems[]Lista de itens de menu com ícones e labels
SidebarFooterSidebarUserProfilePerfil do usuário com avatar, nome e role

Dimensões (Figma)

ElementoDimensãoClasse Tailwind
Largura (expandida)191px--sidebar-width: 191px
Largura (colapsada)~48px--sidebar-width-icon: 48px
Altura100vhh-svh
Logo19x19pxsize-4 rounded bg-primary
Ícones nav13x13pxsize={13} strokeWidth={1.5}
Texto nav13pxtext-sm font-normal
Texto nav ativo13pxtext-sm font-medium text-primary
Avatar footer27x27px (circle)size-7 rounded-full
Search kbd14x14px / 9px texth-[14px] w-[14px] text-[9px]

Cores

Tokens de cor da sidebar definidos no tema.

ElementoTokenValor
Fundosidebar-background#FCFCFC
Bordasidebar-border#EFEFF3
Item ativoprimary#FF3D8D
Item hoversidebar-accent#FEE5F1
Textosidebar-foregroundforeground
Texto secundáriomuted-foregroundmuted-foreground

Comportamento

AçãoComportamentoDetalhes
ToggleAlterna entre expandida (191px) e colapsada (48px)Controlado por SidebarToggle no header
PersistênciaEstado salvo em cookieSidebarProvider persiste via cookie sidebar_state
MobileSheet (off-canvas overlay)Abre como sheet lateral em telas < md
BuscaAbre CommandDialogAtalho / ou clique no botão de busca
ColapsoEsconde textos, mostra apenas íconescollapsible="icon" com transição animada

API Reference

PropTypeDefaultDescrição
itemsMenuItems[]Array de itens do menu (id, label, href, icon)
titlestring'Ana Autentic'Título exibido ao lado do logo
showSearchbooleanfalseExibir barra de busca no header da sidebar
searchPlaceholderstring'Buscar...'Placeholder do campo de busca
onSearchOpen() => voidCallback ao clicar na busca (abre CommandDialog). Se não fornecido, dispara Cmd+J
userProfile{ name, role, avatarUrl? }Perfil do usuário para o footer. Se não fornecido, exibe SidebarToggleShortcut
collapsible'offcanvas' | 'icon' | 'none''icon'Modo de colapso (fixo como 'icon' no AppSidebar)