Skip to main content

css

Guides styling implementation using TailwindCSS + CSS Modules. Triggered when handling component styles, layout design, or CSS patterns.

Source facts

Repository
MatrixAges/polywise
Last source activity
March 23, 2026 at 12:25
Detected SKILL.md language
English
Stars
663
Forks
34

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
css
description
Guides styling implementation using TailwindCSS + CSS Modules. Triggered when handling component styles, layout design, or CSS patterns.
# CSS Styling Guide This skill provides mandatory specifications for combining TailwindCSS + CSS Modules for styling implementation in this project. ## 1. Architecture Overview This project adopts a hybrid styling strategy: - **TailwindCSS**: For simple, utility-first styles and layouts. - **CSS Modules**: For complex state management, component-specific styles, and high maintainability needs. - **Rsbuild + Lightning CSS**: Provides modern CSS processing with PostCSS support. ## 2. Styling Strategy Decision Tree ### When to Use TailwindCSS ```typescript // ✅ Use TailwindCSS: // - Simple layouts (flex, grid, positioning) // - Basic spacing (margin, padding) // - Basic colors and typography // - One-off styles // - Rapid prototyping <div className='flex items-center gap-3 p-4'> <span className='text-std-600'>Content</span> </div> ``` ### When to Use CSS Modules ```typescript // ✅ Use CSS Modules: // - Complex state transitions (hover, active, focus state combinations) // - Component-specific animations // - Nested selector patterns // - Repeated complex styles // - Dark mode switching logic // - Style combinations that would make TailwindCSS class strings too long import styles from './index.module.css' <div className={`w_100 border_box relative${styles._local}`}> <button className='btn_copy'></button> </div> ``` ## 3. TailwindCSS Patterns ### 3.1 Multi-line Class Naming ```typescript // ✅ Recommended: multi-line for readability <div className=' flex items-center justify-center w-18 h-screen is_drag ' > <Icon size={20}></Icon> </div> // ❌ Avoid: still writing on single line when styles are complex <div className='flex items-center justify-center w-18 h-screen is_drag'> ``` ### 3.2 Conditional Styles with Template Strings ```typescript // ✅ Use template strings for conditional class names const Index = ({ fold }: { fold: boolean }) => { return ( <nav className={` relative flex flex-col h-full ${fold ? 'w-18 items-center justify-center' : 'border-std-900/8 w-60 border-r py-2'} `} > </nav> ) } ``` ### 3.3 Global Utilities ```typescript // Electron window dragging <div className='is_drag'></div> // Allow dragging <div className='no_drag clickable'></div> // Disallow dragging, allow clicking // Lucide icon borders <svg className='lucide'></svg> // Apply 1.8px line width // Custom utilities <div className='clickable'></div> // cursor pointer <div className='border_box'></div> // box-sizing: border-box <div className='w_100'></div> // width: 100% ``` ## 4. CSS Modules Patterns ### 4.1 File Structure ```css /* index.module.css */ @reference '../../../styles/index.css'; /* For importing Tailwind base */ ._local { /* Component-specific styles */ &:hover { /* Hover state */ } :global { /* Global class styles (skip hashing) */ } } ``` ### 4.2 Nested States and :global ```css /* index.module.css */ ._local { padding: 16px 0; &:hover { :global { .btn_copy { opacity: 1; } } } } :global { .btn_copy { opacity: 0; transition-property: opacity; &:hover { @apply bg-std-300; } } } ``` ### 4.3 Using @apply ```css ._local { /* ✅ Use @apply to include TailwindCSS utilities */ @apply rounded-xl; /* ✅ Mix custom CSS with @apply */ padding: 16px 0; /* ✅ Use @apply for colors */ :global { .lang { @apply text-std-400; } } } ``` ### 4.4 CSS Variables ```css /* ✅ Use snake_case for CSS variables */ ._local { --margin_y: 1.2em; p { margin-block: var(--margin_y); } } ``` ## 5. Color System The project uses semantic color names: ```typescript // TailwindCSS color classes 'text-std-800' // Primary text 'text-std-600' // Secondary text 'text-std-400' // Muted text 'text-std-white' // White text 'text-std-black' // Black text 'bg-std-100' // Primary background 'bg-std-200' // Secondary background 'bg-std-300' // Hover background 'bg-std-800' // Dark background 'border-std-200' // Light border 'border-std-900/8' // Dark border with opacity ``` ## 6. Constraints and Best Practices ### 6.1 Naming Conventions - **TailwindCSS**: Use standard utility class names. - **CSS Modules**: Class names must use `snake_case`. - **CSS Variables**: Use `snake_case` with `--` prefix. - **Component Container**: Always use `_local` for the main container class name. ### 6.2 Code Style - **TailwindCSS**: Use line breaks for better readability. - **CSS Modules**: No comments. Use Tab indentation. - **Blank Lines**: Separate different logical areas with blank lines. ### 6.3 Performance and Maintenance - **Avoid Long Strings**: Don't create TailwindCSS strings exceeding 100 characters. Use CSS Modules instead. - **No Inline Styles**: Avoid inline `style` props unless absolutely necessary. - **No !important**: Absolutely never use `!important` in CSS Modules.
View on GitHub