Popover
Um painel sobreposto, disparado por um botão, para exibir conteúdo rico.
Instalação
O Shadwire segue o modelo open code do shadcn/ui: o código-fonte do componente é copiado para o seu app e passa a ser seu. Instale com a CLI:
O item popover do registry instala estes arquivos:
-
app/components/ui_component.rb -
app/components/ui/popover_component.rb -
app/components/ui/popover/trigger_component.rb -
app/components/ui/popover/content_component.rb -
app/components/ui/button_component.rb -
app/helpers/ui/popover_helper.rb -
app/helpers/ui/button_helper.rb -
app/javascript/controllers/ui_popover_controller.js -
vendor/shadwire/shadwire.css
Este componente usa Stimulus, então a aplicação precisa de importmap-rails e stimulus-rails com carregamento automático de controllers.
Ainda não instalou a CLI? gem install shadwire e depois shadwire init.
Uso
O controller ui-popover
alterna o painel, move o foco para dentro dele ao abrir e o devolve ao gatilho ao
fechar com Esc. Clicar fora também fecha.
O posicionamento usa apenas utilitários (side/align),
sem floating-ui.
Ou renderize os componentes diretamente:
Composição
Exemplos
Padrão
Um painel não modal: abre no clique, põe o foco no conteúdo e fecha com um clique fora ou com Esc.
Dimensões
Defina as dimensões da camada.
Alinhamento
align: :start, :center ou :end desloca o painel no eixo cruzado.
Alinhado em start no eixo horizontal.
Alinhado em center no eixo horizontal.
Alinhado em end no eixo horizontal.
Referência da API
Todas as partes aceitam class /
class_name e
**attrs.
| Componente | Argumento | Padrão | Descrição |
|---|---|---|---|
Popover::Trigger |
variant, size |
:outline |
O botão que abre e fecha o painel; mantém o aria-expanded atualizado. |
Popover::Content |
side |
:bottom |
:top, :right, :bottom, :left. |
Popover::Content |
align |
:center |
:start, :center, :end no eixo cruzado. |