Skip to content
Extensões

Dropdown

Painel flutuante reutilizável para menus, selects e autocomplete. Sem trigger — cada componente que usa cuida do seu gatilho. Usa tokens overlay para cores. Dark mode automático.

components/dropdown.cssAbrir no Figma

Variantes

Padrão, com ícone, com avatar, checkbox e radio. Hover nos itens para ver os estados.

Carregando exemplo...

Propriedades

Classes disponíveis para configurar o dropdown.

PropriedadeTipoDefaultDescrição
.dropdown-menuclassePainel flutuante. Posição absolute, z-index 1000.
.dropdown-menu.is-openclasseExibe o painel.
.dropdown-listclasseLista interna com scroll.
.dropdown-itemclasseItem clicável (48px).
.dropdown-item--avatarclasseItem com avatar (56px).
.dropdown-item--dangerclasseItem destrutivo (vermelho).
.dropdown-item--checkclasseItem com checkbox.
.dropdown-item--radioclasseItem com radio.
.dropdown-dividerclasseDivisor horizontal entre itens.
.dropdown-headerclasseTítulo de seção (não clicável).
.dropdown-menu--bottomclassePosiciona abaixo do trigger (padrão).
.dropdown-menu--topclassePosiciona acima do trigger.
.dropdown-menu--bottom-rightclasseAbaixo, alinhado à direita.
.dropdown-menu--top-rightclasseAcima, alinhado à direita.

Código

Snippets prontos para copiar e usar.

Padrão

html
<div style="position: relative;">
    <!-- Trigger (botão, input, etc.) -->
    <div class="dropdown-menu dropdown-menu--bottom is-open">
        <div class="dropdown-list">
            <button class="dropdown-item">
                <span class="dropdown-item-label">Opção 1</span>
            </button>
            <button class="dropdown-item">
                <span class="dropdown-item-label">Opção 2</span>
            </button>
        </div>
    </div>
</div>

Com ícone e item destrutivo

html
<div class="dropdown-menu is-open">
    <div class="dropdown-list">
        <button class="dropdown-item">
            <span class="dropdown-item-icon"><!-- SVG --></span>
            <span class="dropdown-item-label">Editar</span>
        </button>
        <div class="dropdown-divider"></div>
        <button class="dropdown-item dropdown-item--danger">
            <span class="dropdown-item-icon"><!-- SVG --></span>
            <span class="dropdown-item-label">Excluir</span>
        </button>
    </div>
</div>

Com avatar (pesquisa de usuários)

html
<div class="dropdown-menu is-open">
    <div class="dropdown-list">
        <button class="dropdown-item dropdown-item--avatar">
            <img class="dropdown-item-avatar" src="foto.jpg" alt="">
            <span class="dropdown-item-content">
                <span class="dropdown-item-label">João Silva</span>
                <span class="dropdown-item-support">123.456.789-00</span>
            </span>
        </button>
    </div>
</div>

Com checkbox

html
<div class="dropdown-menu is-open">
    <div class="dropdown-list">
        <button class="dropdown-item dropdown-item--check is-checked">
            <span class="dropdown-check-box">
                <svg viewBox="0 0 12 12" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M2.5 6L5 8.5L9.5 3.5"/></svg>
            </span>
            <span class="dropdown-item-label">Ativo</span>
        </button>
    </div>
</div>

Tokens utilizados

Variáveis semânticas overlay aplicadas ao componente.

TokenUso
--surface-overlay-neutral-container-defaultBackground do item
--surface-overlay-neutral-container-hoverBackground no hover
--surface-overlay-alert-container-errorBackground do item destrutivo no hover
--border-overlay-neutral-defaultBorda do painel e divisor
--border-overlay-neutral-strongBorda do checkbox/radio
--text-overlay-neutral-secondaryCor do texto padrão
--text-overlay-neutral-defaultCor do texto no hover
--text-overlay-neutral-subtleCor do texto de suporte
--text-overlay-error-defaultCor do texto destrutivo
--icon-overlay-neutral-secondaryCor do ícone padrão
--icon-overlay-neutral-defaultCor do ícone no hover
--icon-overlay-error-defaultCor do ícone destrutivo
--radius-defaultBorder-radius do painel (6px)
--spacing-3Padding vertical / gap item (12px)
--spacing-4Padding horizontal item (16px)

Design System interno do GALES