Componente

Toggle

Um botão de dois estados que permanece pressionado. Use-o sozinho com estado pressed bidirecional, um ícone, uma variante e tamanho; ou agrupe vários num toggle group para seleção única ou múltipla, conectado ou espaçado, com foco de teclado rotativo e suporte a form control.

Toggle avulso

Bold StarSubscribedMuted

bold: false · last change: —

import { ChangeDetectionStrategy, Component, signal } from '@angular/core';
import { provideIcons } from '@ng-icons/core';
import { phosphorBell, phosphorStar, phosphorTextB } from '@ng-icons/phosphor-icons/regular';

import { HbToggleImports } from '@herbst/ui';

@Component({
  selector: 'hb-demo-toggle-basic',
  imports: [HbToggleImports],
  viewProviders: [provideIcons({ phosphorTextB, phosphorStar, phosphorBell })],
  template: `
    <div class="flex flex-wrap items-center gap-3">
      <hb-toggle [(hbPressed)]="bold" hbIcon="phosphorTextB" (hbChange)="last.set($event)">
        Bold
      </hb-toggle>

      <hb-toggle hbVariant="outline" hbIcon="phosphorStar" hbSize="lg">Star</hb-toggle>

      <hb-toggle hbVariant="outline" hbSize="sm" [hbPressed]="true">Subscribed</hb-toggle>

      <hb-toggle hbIcon="phosphorBell" hbDisabled>Muted</hb-toggle>
    </div>

    <p class="mt-3 font-mono text-[12px] text-muted-foreground">
      bold: {{ bold() }} · last change: {{ last() }}
    </p>
  `,
  changeDetection: ChangeDetectionStrategy.OnPush,
})
export class HbDemoToggleBasicComponent {
  protected readonly bold = signal(false);
  protected readonly last = signal<boolean | string>('—');
}

Grupo single

GridListTable

align: left · view: grid

Grupo multiple

marks: [bold, italic]

Referência de API

hb-toggle

PropriedadeDescriçãoTipoPadrão
[(hbPressed)] O estado pressionado, bidirecional. Ignorado dentro de um toggle group (o grupo controla a seleção). boolean false
[hbValue] Identifica o toggle dentro de um grupo — comparado com o valor do grupo. unknown null
[hbVariant] / [hbSize] Sobrescreve a aparência por toggle; caso contrário herdado do grupo (ou dos padrões). 'default' | 'outline' / 'xs' | 'sm' | 'md' | 'lg' | 'xl' 'default' / 'md'
[hbIcon] Ícone à esquerda renderizado antes do rótulo projetado. string ''
[hbDisabled] Desabilita este toggle (o grupo também pode desabilitar todos). boolean false
(hbChange) Emite o novo estado pressionado quando o toggle é ativado. boolean

hb-toggle-group

PropriedadeDescriçãoTipoPadrão
[hbType] Seleção única (um valor, ou null) ou múltipla (um array). 'single' | 'multiple' 'single'
[(hbValue)] O(s) valor(es) selecionado(s), bidirecional. Também funciona como form control (NG_VALUE_ACCESSOR). unknown | unknown[] null
[hbVariant] / [hbSize] A aparência aplicada a cada toggle do grupo. 'default' | 'outline' / 'xs' | 'sm' | 'md' | 'lg' | 'xl' 'default' / 'md'
[hbConnected] Une os toggles num controle segmentado contínuo; false os espaça com um gap. boolean true
[hbRollable] Apenas modo single — permite clicar no toggle ativo de novo para limpar a seleção. boolean true
[hbDisabled] / [hbAriaLabel] Desabilita o grupo inteiro, e o rotula para tecnologia assistiva. boolean / string false / ""
(hbChange) Emite a nova seleção sempre que ela muda. unknown