| name | react-classlist |
| description | Organize long or disorganized className attributes in React components into semantic groups using cn() or className |
React ClassName Organizer
Organize className attributes in React components for readability and maintainability.
When to trigger
Refactor className when:
- Single-line className exceeds 80-100 characters
- Disorganized
cn()orclassList()calls exist - User explicitly requests className organization
Instructions
Choose utility function:
- Use
cn()if already imported in the file - Otherwise, use standard
className
- Use
Break into multiple lines:
- Each line should be semantically grouped
- Lines should not exceed ~80 characters
- Keep responsive modifiers with their base class
Group classes in this order:
- Layout (flex, grid, position type)
- Spacing (gap, padding, margin)
- Sizing (width, height, min/max)
- Display & visibility
- Typography (font, text-*)
- Colors & backgrounds
- Borders & effects
- Positioning values (top, left, z-index)
- Transitions & animations
- Responsive variants (keep with base class)
Format:
// Before: className="overflow-y-auto max-h-[50vh] md:max-h-auto flex-col gap-4 md:gap-2 pt-2 w-full md:w-auto" // After: className=cn( 'flex-col gap-4 md:gap-2 pt-2', 'w-full md:w-auto max-h-[50vh] md:max-h-auto', 'overflow-y-auto scrollbar-hide' )Keep together:
- Responsive modifiers with base:
'w-full md:w-auto' - Related utilities:
'flex items-center justify-between'
- Responsive modifiers with base:
Tool access
allowed-tools:
- Read
- Edit
- Grep
Notes
- Preserve all existing classes
- Maintain semantic grouping over strict alphabetical order
- Each line should be readable and cohesive