0.9.1
DU

Links

Styled link components with multiple variants, styles, sizes, and icon support.

Variants

All 9 semantic color variants with the default style.

<%= bui_link("#", variant: :primary) { "Primary" } %>
<%= bui_link("#", variant: :secondary) { "Secondary" } %>
<%= bui_link("#", variant: :accent) { "Accent" } %>
<%= bui_link("#", variant: :success) { "Success" } %>
<%= bui_link("#", variant: :danger) { "Danger" } %>
<%= bui_link("#", variant: :warning) { "Warning" } %>
<%= bui_link("#", variant: :info) { "Info" } %>
<%= bui_link("#", variant: :light) { "Light" } %>
<%= bui_link("#", variant: :dark) { "Dark" } %>

Styles

Three visual styles: default, underline, and ghost. Shown with primary, success, and danger variants.

<%# Default style %>
<%= bui_link("#", variant: :primary, style: :default) { "Primary" } %>

<%# Underline style %>
<%= bui_link("#", variant: :primary, style: :underline) { "Primary" } %>

<%# Ghost style (adds background on hover) %>
<%= bui_link("#", variant: :primary, style: :ghost) { "Primary" } %>

Sizes

Five sizes from extra-small to extra-large.

<%= bui_link("#", variant: :primary, size: :xs) { "Extra Small" } %>
<%= bui_link("#", variant: :primary, size: :sm) { "Small" } %>
<%= bui_link("#", variant: :primary, size: :md) { "Medium" } %>
<%= bui_link("#", variant: :primary, size: :lg) { "Large" } %>
<%= bui_link("#", variant: :primary, size: :xl) { "Extra Large" } %>

External Links

Links with target="_blank" automatically get rel="noopener noreferrer" for security.

<%# Opens in new tab with automatic rel="noopener noreferrer" %>
<%= bui_link("https://github.com", variant: :primary, target: "_blank") { "GitHub" } %>
<%= bui_link("https://rubyonrails.org", variant: :danger, style: :underline, target: "_blank") { "Ruby on Rails" } %>

Disabled Links

Disabled links are visually muted and non-interactive.

<%= bui_link("#", variant: :primary, disabled: true) { "Disabled Default" } %>
<%= bui_link("#", variant: :success, style: :underline, disabled: true) { "Disabled Underline" } %>
<%= bui_link("#", variant: :danger, style: :ghost, disabled: true) { "Disabled Ghost" } %>

With Icons

Links support icon_before and icon_after slots for inline SVG icons.

<%# Icon before the link text %>
<%= bui_link("#", variant: :primary) do |link| %>
  <% link.with_icon_before do %>
    <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
      <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
            d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3..." />
    </svg>
  <% end %>
  Home
<% end %>

<%# Icon after the link text %>
<%= bui_link("#", variant: :primary) do |link| %>
  <% link.with_icon_after do %>
    <svg class="w-4 h-4" ...>...</svg>
  <% end %>
  Next Page
<% end %>

<%# Both icons %>
<%= bui_link("#", variant: :accent, style: :underline) do |link| %>
  <% link.with_icon_before do %>
    <svg class="w-4 h-4" ...>...</svg>
  <% end %>
  <% link.with_icon_after do %>
    <svg class="w-4 h-4" ...>...</svg>
  <% end %>
  Download Report
<% end %>