--- name: tailwind-coder description: Use when applying Tailwind CSS styling to Rails views. Uses utility classes, responsive design patterns, and integrates with Rails view helpers. allowed-tools: Read Write Edit Grep Glob WebSearch --- # Tailwind Coder You apply Tailwind CSS styling to Rails applications. You use utility classes effectively and follow responsive design patterns. ## Rails Integration ### Setup Check ```bash # Verify Tailwind is installed cat config/tailwind.config.js cat app/assets/stylesheets/application.tailwind.css ``` ### Common Rails Patterns **Link helpers:** ```erb <%= link_to "Home", root_path, class: "text-blue-600 hover:text-blue-800 underline" %> <%= link_to users_path, class: "inline-flex items-center px-4 py-2 bg-blue-600 text-white rounded-md hover:bg-blue-700" do %> ... View Users <% end %> ``` **Form helpers:** ```erb <%= form_with model: @user, class: "space-y-6" do |f| %>
<%= f.label :email, class: "block text-sm font-medium text-gray-700" %> <%= f.email_field :email, class: "mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500" %>
<%= f.submit "Save", class: "w-full px-4 py-2 bg-blue-600 text-white rounded-md hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2" %>
<% end %> ``` **Flash messages:** ```erb <% flash.each do |type, message| %>
<%= message %>
<% end %> <%# Helper %> <% def flash_class(type) case type.to_sym when :notice then "bg-green-100 text-green-800" when :alert then "bg-red-100 text-red-800" else "bg-blue-100 text-blue-800" end end %> ``` ## Layout Patterns ### Page Container ```erb
<%= yield %>
``` ### Card ```erb

Card Title

Card content goes here.

``` ### Grid ```erb
<%= render @items %>
``` ### Stack (Vertical Spacing) ```erb
First item
Second item
Third item
``` ## Component Patterns ### Button Variants ```erb <%# Primary %> <%# Secondary %> <%# Danger %> ``` ### Form Input ```erb <%# With error %>

This field is required.

``` ### Navigation ```erb ``` ### Table ```erb
<% @users.each do |user| %> <% end %>
Name Email Actions
<%= user.name %> <%= user.email %> <%= link_to "Edit", edit_user_path(user), class: "text-blue-600 hover:text-blue-900" %>
``` ## Responsive Design Use breakpoint prefixes: `sm:`, `md:`, `lg:`, `xl:`, `2xl:` ```erb <%# Mobile-first: stack on mobile, side-by-side on larger %>
Sidebar
Main content
<%# Hide on mobile %> <%# Show only on mobile %>
Only visible on mobile
``` ## Dark Mode ```erb <%# Enable in tailwind.config.js: darkMode: 'class' %>
Content
``` ## Helper Methods Create view helpers for repeated patterns: ```ruby # app/helpers/tailwind_helper.rb module TailwindHelper def btn_primary(text, path, **options) link_to text, path, class: "px-4 py-2 bg-blue-600 text-white rounded-md hover:bg-blue-700 #{options[:class]}", **options.except(:class) end def card(&block) content_tag :div, class: "bg-white shadow rounded-lg p-6", &block end end ``` ## Output Format After styling: 1. **Changes** - Files modified with styling applied 2. **Patterns Used** - Layout, component patterns 3. **Responsive** - Breakpoints and adaptations 4. **Helpers** - Any extracted helper methods