Componente

Carousel

Um slider arrastável baseado no Embla. Mostre um ou vários itens por vez, corra na horizontal ou vertical, faça loop, autoplay, e controle com botões anterior, próximo e pontos.

Básico

1
2
3
4
5

Slide 1 / 5

import { ChangeDetectionStrategy, Component, signal } from '@angular/core';

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

@Component({
  selector: 'hb-demo-carousel-basic',
  imports: [HbCarouselImports],
  template: `
    <div class="flex flex-col gap-2">
      <hb-carousel class="block w-96 max-w-full" hbSize="lg" (hbSelect)="current.set($event)">
        <hb-carousel-content>
          @for (n of slides; track n) {
            <hb-carousel-item>
              <div
                class="flex h-40 items-center justify-center rounded-md bg-muted font-display text-4xl"
              >
                {{ n }}
              </div>
            </hb-carousel-item>
          }
        </hb-carousel-content>
        <hb-carousel-previous />
        <hb-carousel-next />
        <hb-carousel-dots />
      </hb-carousel>

      <p class="font-mono text-[12px] text-muted-foreground">
        Slide {{ current() + 1 }} / {{ slides.length }}
      </p>
    </div>
  `,
  changeDetection: ChangeDetectionStrategy.OnPush,
})
export class HbDemoCarouselBasicComponent {
  protected readonly slides = [1, 2, 3, 4, 5];
  protected readonly current = signal(0);
}

Vários por vez e loop

1
2
3
4
5
6
7
8

Autoplay

1
2
3
4

Vertical e arraste livre

1
2
3
4
5
6
7
8

Referência de API

hb-carousel

PropriedadeDescriçãoTipoPadrão
[hbOrientation] Eixo de rolagem do carrossel. 'horizontal' | 'vertical' 'horizontal'
[hbAlign] Onde o slide ativo se encaixa na viewport. 'start' | 'center' | 'end' 'start'
[hbLoop] Volta do último slide para o primeiro. boolean false
[hbDragFree] Arraste de rolagem livre sem encaixar nos slides. boolean false
[hbSpacing] Espaço entre os slides em pixels. number 16
[hbSize] Tamanho dos botões anterior/próximo e dos pontos. 'xs' | 'sm' | 'md' | 'lg' | 'xl' 'md'
[hbAutoplay] Avança os slides automaticamente. boolean false
[hbDelay] Intervalo do autoplay em milissegundos. number 4000
(hbSelect) Emite o índice do slide que ficou ativo. number

Parts

PropriedadeDescriçãoTipoPadrão
hb-carousel-content / hb-carousel-item Trilho e seus slides; a basis do item (ex. basis-1/3) define quantos aparecem. slot
hb-carousel-previous / hb-carousel-next Botões que avançam ou voltam um slide. element
hb-carousel-dots Pontos de paginação refletindo o slide ativo. element