Shadwire
Componentes

Drawer

Um painel que desliza de uma borda, sobre um <dialog> nativo, com arrastar para fechar.

Instalação

O Shadwire segue o modelo open-code do shadcn/ui: o código-fonte do componente é copiado para a sua aplicação e passa a ser seu. Instale com a CLI:

shadwire add drawer --yes

O item drawer do registry instala estes arquivos:

  • app/components/ui_component.rb
  • app/components/ui/drawer_component.rb
  • app/components/ui/drawer/trigger_component.rb
  • app/components/ui/drawer/content_component.rb
  • app/components/ui/drawer/header_component.rb
  • app/components/ui/drawer/footer_component.rb
  • app/components/ui/drawer/title_component.rb
  • app/components/ui/drawer/description_component.rb
  • app/components/ui/drawer/close_component.rb
  • app/components/ui/button_component.rb
  • app/helpers/ui/drawer_helper.rb
  • app/helpers/ui/button_helper.rb
  • app/javascript/controllers/ui_drawer_controller.js
  • vendor/shadwire/shadwire.css

Este componente usa Stimulus: 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

<%= ui_drawer do %>
  <%= ui_drawer_trigger { "Abrir" } %>
  <%= ui_drawer_content do %>
    <%= ui_drawer_header do %>
      <%= ui_drawer_title { "Título" } %>
    <% end %>
  <% end %>
<% end %>

Exemplos

Padrão

Drawer inferior com cabeçalho, descrição e ações.

Mover para a lixeira?

Você poderá restaurar este item depois.

<%= ui_drawer do %>
  <%= ui_drawer_trigger(variant: :outline) { "Abrir drawer" } %>
  <%= ui_drawer_content(class: "mx-auto max-w-md") do %>
    <%= ui_drawer_header do %>
      <%= ui_drawer_title { "Mover para a lixeira?" } %>
      <%= ui_drawer_description { "Você poderá restaurar este item depois." } %>
    <% end %>
    <%= ui_drawer_footer do %>