Skip to main content

Dropdown

Apresentação

O componente Dropdown é responsável por criar menus suspensos que permitem ao usuário escolher uma opção entre várias alternativas. Ele é composto por três subcomponentes: Button (botão que ativa o dropdown), Items (container das opções) e Item (opções individuais).

Quando usar

  • Para navegação em menus
  • Para seleção de opções
  • Para ações contextuais
  • Para filtros de dados
  • Para ordenação de listas
  • Para seleção de categorias
  • Para ações secundárias
  • Para configurações rápidas
  • Para seleção de idiomas
  • Para seleção de temas

Forma básica de uso

import { Dropdown } from 'eitri-luminus';

// Dropdown básico
<Dropdown>
<Dropdown.Button>Menu</Dropdown.Button>
<Dropdown.Items>
<Dropdown.Item>Opção 1</Dropdown.Item>
<Dropdown.Item>Opção 2</Dropdown.Item>
<Dropdown.Item>Opção 3</Dropdown.Item>
</Dropdown.Items>
</Dropdown>

// Dropdown com classes personalizadas
<Dropdown className="dropdown-end">
<Dropdown.Button className="btn-primary">
Menu Personalizado
</Dropdown.Button>
<Dropdown.Items className="menu-compact">
<Dropdown.Item className="text-primary">Opção 1</Dropdown.Item>
<Dropdown.Item className="text-secondary">Opção 2</Dropdown.Item>
<Dropdown.Item className="text-accent">Opção 3</Dropdown.Item>
</Dropdown.Items>
</Dropdown>

// Dropdown com diferentes posicionamentos
<Dropdown className="dropdown-top">
<Dropdown.Button>Menu Superior</Dropdown.Button>
<Dropdown.Items>
<Dropdown.Item>Opção 1</Dropdown.Item>
<Dropdown.Item>Opção 2</Dropdown.Item>
</Dropdown.Items>
</Dropdown>

<Dropdown className="dropdown-bottom">
<Dropdown.Button>Menu Inferior</Dropdown.Button>
<Dropdown.Items>
<Dropdown.Item>Opção 1</Dropdown.Item>
<Dropdown.Item>Opção 2</Dropdown.Item>
</Dropdown.Items>
</Dropdown>

// Dropdown com conteúdo rico
<Dropdown>
<Dropdown.Button>
<div className="flex items-center gap-2">
<svg xmlns="http://www.w3.org/2000/svg" className="h-5 w-5" viewBox="0 0 20 20" fill="currentColor">
<path fillRule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clipRule="evenodd" />
</svg>
<span>Menu com Ícone</span>
</div>
</Dropdown.Button>
<Dropdown.Items>
<Dropdown.Item>
<div className="flex items-center gap-2">
<svg xmlns="http://www.w3.org/2000/svg" className="h-5 w-5" viewBox="0 0 20 20" fill="currentColor">
<path d="M10 12a2 2 0 100-4 2 2 0 000 4z" />
<path fillRule="evenodd" d="M.458 10C1.732 5.943 5.522 3 10 3s8.268 2.943 9.542 7c-1.274 4.057-5.064 7-9.542 7S1.732 14.057.458 10zM14 10a4 4 0 11-8 0 4 4 0 018 0z" clipRule="evenodd" />
</svg>
<span>Opção com Ícone</span>
</div>
</Dropdown.Item>
</Dropdown.Items>
</Dropdown>

Propriedades

PropriedadeTipoDescrição
classNamestringClasses CSS adicionais
idstringIdentificador único do componente
PropriedadeTipoDescrição
classNamestringClasses CSS adicionais
idstringIdentificador único do componente
PropriedadeTipoDescrição
classNamestringClasses CSS adicionais
idstringIdentificador único do componente
tabIndexnumberÍndice de tabulação
PropriedadeTipoDescrição
classNamestringClasses CSS adicionais
idstringIdentificador único do componente

Heranças

Os componentes Dropdown e seus subcomponentes herdam todas as propriedades comuns da biblioteca através da interface CommonProps, que inclui:

  • Propriedades de estilo (margin, padding, etc)
  • Propriedades de layout (flex, grid, etc)
  • Propriedades de posicionamento
  • Propriedades de acessibilidade
  • Propriedades de identificação (id, data-e)

Observações

  • O Dropdown usa a classe 'dropdown' para estilização base
  • O Dropdown.Button usa a classe 'btn' para estilização base
  • O Dropdown.Items usa a classe 'dropdown-content' para estilização base
  • É possível personalizar a aparência usando classes do Tailwind
  • Os componentes são responsivos por padrão
  • Suportam diferentes posicionamentos (top, bottom, end, start)
  • Mantêm a semântica HTML apropriada
  • Podem conter conteúdo rico (ícones, textos, etc)
  • São especialmente úteis para navegação e seleção
  • Podem ser combinados com outros componentes
  • Suportam diferentes tamanhos e estilos
  • São ativados por clique por padrão
  • Suportam navegação por teclado
  • Podem ser usados em menus de navegação
  • Suportam diferentes variantes de estilo