Componente
Sidebar
Uma casca completa de sidebar de aplicação. Envolva uma sidebar e a área principal num layout, monte a navegação com header, grupos, menus e submenus colapsáveis, colapse para ícones ou off-canvas, escolha um lado e variante, e alterne de qualquer lugar com um gatilho.
Casca de aplicação
Photos
Toggle collapses the sidebar to an icon rail.
import { ChangeDetectionStrategy, Component } from '@angular/core';
import { HbButtonComponent, HbSidebarImports } from '@herbst/ui';
import { NgIcon, provideIcons } from '@ng-icons/core';
import { phosphorBell, phosphorLeaf, phosphorTag } from '@ng-icons/phosphor-icons/regular';
@Component({
selector: 'hb-demo-sidebar-basic',
imports: [HbSidebarImports, HbButtonComponent, NgIcon],
viewProviders: [provideIcons({ phosphorLeaf, phosphorTag, phosphorBell })],
template: `
<hb-sidebar-layout class="h-[28rem] w-full overflow-hidden rounded-md border border-border">
<hb-sidebar hbId="docs-basic" hbCollapsible="icon">
<hb-sidebar-header>
<div class="flex items-center gap-2 px-1 py-1.5">
<ng-icon name="phosphorLeaf" class="text-primary [&>svg]:size-5" />
<span class="font-medium group-data-[collapsed]/sb:hidden">Herbst</span>
</div>
</hb-sidebar-header>
<hb-sidebar-content>
<hb-sidebar-group>
<hb-sidebar-group-label>Photos</hb-sidebar-group-label>
<hb-sidebar-group-content>
<hb-sidebar-menu>
<hb-sidebar-menu-item>
<a
hbSidebarMenuButton
href="#"
[hbActive]="true"
(click)="$event.preventDefault()"
>
<ng-icon name="phosphorLeaf" />
<span>Photos</span>
</a>
</hb-sidebar-menu-item>
<hb-sidebar-menu-item>
<a hbSidebarMenuButton href="#" (click)="$event.preventDefault()">
<ng-icon name="phosphorTag" />
<span>Forests</span>
</a>
</hb-sidebar-menu-item>
<hb-sidebar-menu-item>
<a hbSidebarMenuButton href="#" (click)="$event.preventDefault()">
<ng-icon name="phosphorBell" />
<span>Alerts</span>
</a>
</hb-sidebar-menu-item>
</hb-sidebar-menu>
</hb-sidebar-group-content>
</hb-sidebar-group>
</hb-sidebar-content>
<hb-sidebar-footer>
<div class="px-1 text-xs text-muted-foreground group-data-[collapsed]/sb:hidden">
Signed in as A. Herbst
</div>
</hb-sidebar-footer>
</hb-sidebar>
<hb-sidebar-main>
<div class="flex items-center gap-2 border-b border-border p-3">
<button hbSidebarTrigger target="docs-basic" hb-button hbType="outline" hbSize="sm">
Toggle
</button>
<span class="text-sm font-medium">Photos</span>
</div>
<div class="p-4 text-sm text-muted-foreground">
Toggle collapses the sidebar to an icon rail.
</div>
</hb-sidebar-main>
</hb-sidebar-layout>
`,
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class HbDemoSidebarBasicComponent {}
Submenus colapsáveis
Flutuante, direita e off-canvas
Referência de API
hb-sidebar
| Propriedade | Descrição | Tipo | Padrão |
|---|---|---|---|
| [(hbOpen)] / [hbId] | O estado aberto (bidirecional), e um id que o hbSidebarTrigger mira para alternar esta sidebar. | boolean / string | true / auto |
| [hbSide] / [hbVariant] | A qual borda ancora, e sua aparência. | 'left' | 'right' / 'sidebar' | 'floating' | 'inset' | 'left' / 'sidebar' |
| [hbCollapsible] | Como colapsa: para um rail de ícones, totalmente off-canvas, ou não colapsa. | 'icon' | 'offcanvas' | 'none' | 'icon' |
| [hbWidth] / [hbIconWidth] | Largura expandida, e a largura do rail de ícones quando colapsada. | string | '16rem' / '3rem' |
| [hbOverlay] / [hbDismissable] / [hbHideOnOutsideClick] | Flutua sobre o conteúdo com backdrop (também automático no mobile), fecha no backdrop, e fecha ao clicar fora. | boolean | false / true / true |
| [hbOpenOnHover] / [hbHoverOpenDelay] / [hbHoverCloseDelay] | Expande uma sidebar colapsada no hover, com atrasos de abrir/fechar em milissegundos. | boolean / number | false / 50 / 100 |
| (hbOnOpenChange) | Emite { value, originalEvent } sempre que o estado aberto muda. | HbSidebarOpenChangeEvent | — |
Structure
| Propriedade | Descrição | Tipo | Padrão |
|---|---|---|---|
| hb-sidebar-layout / hb-sidebar-main | A casca flex que envolve a(s) sidebar(s), e a área de conteúdo principal ao lado. | component | — |
| hb-sidebar-header / -content / -footer | As regiões superior, meio rolável e inferior da sidebar. | component | — |
| hb-sidebar-group / -group-label / -group-content | Uma seção titulada da navegação. | component | — |
| hb-sidebar-menu / -menu-item | Uma lista de menu e seus itens. Um item aceita [hbCollapsible], [(hbOpen)], [hbDefaultOpen], [hbDisabled] para hospedar um submenu. | component | — |
| [hbSidebarMenuButton] / [hbSidebarMenuSubButton] | O link clicável dentro de um item (hbActive marca a página atual) e dentro de um subitem. | directive | — |
| [hbSidebarTrigger] / [hbSidebarRail] | Um botão que alterna uma sidebar pelo id target, e um rail de borda que alterna no clique. | directive | — |