Badges - ViewComponent Edition
Status indicators, labels, and tags using ViewComponent
🌍 Real-World Use Cases
Practical badge implementations you'll actually use
📦 E-commerce Order Status
Order #1234
iPhone 15 Pro Max
Order #1235
MacBook Pro 14"
Order #1236
AirPods Pro
Order #1237
Magic Keyboard
Order #1238
iPad Pro
<%= render BadgeComponent.new("Pending", variant: :yellow, dot: true) %>
<%= status_badge(:pending) %>  <!-- Helper method -->
            👥 User Status & Roles
JD
                  John Doe
                  
    
  Online
                  
  Admin
                
              JS
                  Jane Smith
                  
    
  Away
                  
  Editor
                
              MB
                  Mike Brown
                  
    
  Offline
                  
  Viewer
                
              <%= render BadgeComponent.new("Online", variant: :green, dot: true, size: :xs) %>
<%= render BadgeComponent.new("Admin", variant: :purple, size: :xs, style: :solid) %>
            🏷️ Content Tags (Removable)
              
  Ruby on Rails
    
              
  ViewComponent
    
              
  Stimulus
    
              
  Hotwire
    
              
  Turbo
    
              
  Tailwind CSS
    
              
  JavaScript
    
              
  PostgreSQL
    
            
            Click X to remove tags (each badge has its own controller)
<!-- Controller is automatically added to each removable badge -->
<%= render BadgeComponent.new("Ruby on Rails", variant: :red, removable: true) %>
            📋 Task Priority Levels
Fix critical security bug
Due: Today
Deploy new feature
Due: This week
Update documentation
Due: Next week
Refactor old code
Due: No deadline
<%= render BadgeComponent.new("Urgent", variant: :red, size: :sm, style: :solid) %>
            💳 Subscription Plans
Basic
Free$0/month
- ✓ 5 projects
 - ✓ Basic support
 - ✓ 1 GB storage
 
                  
  Most Popular
                
                Pro
$29$29/month
- ✓ Unlimited projects
 - ✓ Priority support
 - ✓ 100 GB storage
 
Enterprise
CustomCustom
- ✓ Everything in Pro
 - ✓ Dedicated support
 - ✓ Unlimited storage
 
<%= render BadgeComponent.new("Most Popular", variant: :blue, style: :solid) %>
            🔔 Notification Badges
<button class="...">
  Messages
  <%= render BadgeComponent.new("99+", variant: :green, size: :xs, style: :solid) %>
</button>
            🛍️ Product Labels
                    Product Image
                  
                  
                    
  New
                  
                Premium Headphones
$299
                    Product Image
                  
                  
                    
  50% OFF
                  
                Wireless Mouse
$80 $40
                    Product Image
                  
                  
                    
  Bestseller
                    
  Limited
                  
                Mechanical Keyboard
$199
<%= render BadgeComponent.new("50% OFF", variant: :red, style: :solid) %>
            📁 File Type Indicators
presentation.pdf
2.4 MB
report.docx
1.8 MB
data.xlsx
3.2 MB
archive.zip
15.7 MB
<%= render BadgeComponent.new("PDF", variant: :red, size: :xs, shape: :pill) %>
            🎨 Component Variants
All available badge styles and options
Colors (Light Style)
              
  Gray
              
  Blue
              
  Green
              
  Yellow
              
  Red
              
  Purple
              
  Pink
              
  Indigo
              
  Orange
            
            Colors (Solid Style)
              
  Gray
              
  Blue
              
  Green
              
  Yellow
              
  Red
              
  Purple
              
  Pink
              
  Indigo
              
  Orange
            
          Sizes
              
  Extra Small
              
  Small
              
  Medium
              
  Large
            
          Shapes
              
  Rounded (Default)
              
  Pill
              
  Square
            
          With Status Dots
              
    
  Active
              
    
  Pending
              
    
  Error
              
    
  Info
            
          💡 API Reference
Component parameters and usage
# Basic usage
<%= render BadgeComponent.new("Text", variant: :blue) %>
# With all options
<%= render BadgeComponent.new(
  "Premium",
  variant: :blue,      # :gray, :blue, :green, :yellow, :red, :purple, :pink, :indigo, :orange
  size: :sm,           # :xs, :sm, :md, :lg
  shape: :rounded,     # :rounded, :pill, :square
  style: :light,       # :light, :solid
  dot: false,          # true/false - adds status dot
  removable: false     # true/false - adds remove button
) %>
# Helper method
<%= badge_component("Text", variant: :green) %>
# Status helper
<%= status_badge(:pending) %>  # Auto-configures color and dot