tailwind-3
SKILL.md
Styling Decision Tree
Aurora form layout? → layout__container + col-* classes
Theme colors needed? → bg-primary, text-on-primary, bg-card, etc.
Dark mode support? → Use theme utilities (auto) OR dark:* variants
Responsive design? → Mobile-first with sm:/md:/lg:/xl: prefixes
Custom component style? → @apply in SCSS for reusable patterns
One-off styling? → Inline Tailwind classes
Critical Rules
Use Aurora Grid for Forms
<!-- ✅ ALWAYS: Aurora layout system for forms -->
<div class="layout__container">
<mat-form-field class="col-6">...</mat-form-field>
<mat-form-field class="col-6">...</mat-form-field>
<mat-form-field class="col-12">...</mat-form-field>
</div>
<!-- ❌ NEVER: Raw Tailwind grid in forms -->
<div class="grid grid-cols-12 gap-4">
<mat-form-field class="col-span-6">...</mat-form-field>
</div>
Use Theme-Aware Utilities
<!-- ✅ ALWAYS: Theme utilities (auto dark mode) -->
<div class="text-default bg-card">Auto dark mode</div>
<div class="bg-primary text-on-primary">Theme colors</div>
<!-- ⚠️ CAUTION: Manual colors need dark variants -->
<div class="bg-white dark:bg-slate-800">Manual handling</div>
Project Configuration
Key Files
| File | Purpose |
|---|---|
tailwind.config.js |
Main Tailwind config |
src/@fuse/styles/tailwind.scss |
Base styles and layers |
src/@aurora/styles/layout.scss |
Aurora grid system |
src/@aurora/styles/overrides/*.scss |
Aurora utilities |
src/@fuse/tailwind/plugins/ |
Custom Fuse plugins |
Important Settings
// tailwind.config.js
{
darkMode: ['selector', '.dark'], // Dark mode via .dark class
important: true, // All utilities are !important
content: ['./src/**/*.{html,scss,ts}'],
}
Aurora Grid Layout System
Column Classes (Responsive)
| Class | Desktop (md+) | Tablet (sm) | Mobile |
|---|---|---|---|
col-1 to col-4 |
col-span-N | col-span-3 | col-span-6 |
col-5 to col-11 |
col-span-N | col-span-6 | col-span-12 |
col-12 |
col-span-12 | col-span-12 | col-span-12 |
Form Layout Examples
<!-- 2-column form -->
<div class="layout__container">
<mat-form-field class="col-6">Name</mat-form-field>
<mat-form-field class="col-6">Email</mat-form-field>
</div>
<!-- 3-column form -->
<div class="layout__container">
<mat-form-field class="col-4">First Name</mat-form-field>
<mat-form-field class="col-4">Last Name</mat-form-field>
<mat-form-field class="col-4">Phone</mat-form-field>
</div>
<!-- Mixed columns -->
<div class="layout__container">
<mat-form-field class="col-8">Address</mat-form-field>
<mat-form-field class="col-4">ZIP Code</mat-form-field>
<mat-form-field class="col-12">Notes</mat-form-field>
</div>
Theme Colors
Primary/Accent/Warn Palettes
<!-- Primary (indigo by default) -->
<div class="bg-primary text-on-primary">Primary button</div>
<div class="bg-primary-500">Primary 500</div>
<div class="text-primary-600">Primary text</div>
<div class="border-primary">Primary border</div>
<!-- Accent (slate by default) -->
<div class="bg-accent text-on-accent">Accent</div>
<!-- Warn (red by default) -->
<div class="bg-warn text-on-warn">Warning</div>
Theme-Aware Semantic Colors
<!-- Text colors -->
<p class="text-default">Main text color</p>
<p class="text-secondary">Secondary/muted text</p>
<p class="text-hint">Hint/placeholder text</p>
<p class="text-disabled">Disabled state text</p>
<!-- Background colors -->
<div class="bg-default">Page background</div>
<div class="bg-card">Card/surface background</div>
<div class="bg-dialog">Dialog background</div>
<div class="bg-hover">Hover state background</div>
Theme Switching
<!-- Apply theme to container -->
<div class="theme-brand">Uses brand palette</div>
<div class="theme-teal">Uses teal palette</div>
<div class="theme-purple">Uses purple palette</div>
<div class="theme-rose">Uses rose palette</div>
<div class="theme-amber">Uses amber palette</div>
Dark Mode
How It Works
Dark mode is controlled by .dark class on body (Fuse handles this).
<!-- Automatic: Theme utilities handle dark mode -->
<div class="bg-card">
<!-- Light: white background -->
<!-- Dark: slate-800 background -->
</div>
<!-- Manual: When using non-theme colors -->
<div class="bg-white dark:bg-slate-800">
<p class="text-gray-900 dark:text-white">Content</p>
</div>
Dark Mode Patterns
<!-- ✅ PREFERRED: Theme-aware utilities -->
<div class="text-default bg-card border">Card</div>
<button class="bg-primary text-on-primary">Button</button>
<!-- ⚠️ WHEN NEEDED: Manual dark variants -->
<div class="bg-gray-100 text-gray-900 dark:bg-gray-800 dark:text-gray-100">
Custom colors with dark support
</div>
Common Patterns
Flexbox
<!-- Center content -->
<div class="flex items-center justify-center">...</div>
<!-- Space between -->
<div class="flex items-center justify-between">...</div>
<!-- Flex with gap -->
<div class="flex items-center gap-4">...</div>
<!-- Flex column -->
<div class="flex flex-col gap-2">...</div>
<!-- Inline flex -->
<div class="inline-flex items-center gap-2">...</div>
Grid (Non-Form Layouts)
<!-- Basic grid -->
<div class="grid grid-cols-3 gap-4">...</div>
<!-- Responsive grid -->
<div class="grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-4">...</div>
Spacing
<!-- Padding -->
<div class="p-4">All sides</div>
<div class="px-4 py-2">Horizontal, vertical</div>
<div class="pb-2 pt-4">Top, bottom</div>
<!-- Margin -->
<div class="m-4">All sides</div>
<div class="mx-auto">Center horizontally</div>
<div class="mb-4 mt-8">Top, bottom</div>
<!-- Gap (flexbox/grid) -->
<div class="flex gap-4">...</div>
Typography
<h1 class="text-2xl font-bold">Heading</h1>
<p class="text-secondary text-sm">Secondary text</p>
<span class="text-xs font-medium uppercase tracking-wide">Label</span>
Cards
<!-- Basic card -->
<div class="bg-card rounded-lg p-6 shadow">...</div>
<!-- Card with hover effect -->
<div class="bg-card rounded-lg p-6 shadow transition-shadow hover:shadow-lg">
...
</div>
<!-- Card with border -->
<div class="bg-card rounded-lg border p-6">...</div>
Borders & Shadows
<div class="rounded-lg border">Rounded border</div>
<div class="rounded-full shadow-lg">Circle with shadow</div>
<div class="ring-2 ring-primary ring-offset-2">Focus ring</div>
States
<button class="hover:bg-primary-600 focus:ring-2 active:scale-95">
Interactive
</button>
<input class="focus:border-primary focus:outline-none" />
<div class="group-hover:opacity-100">Group hover</div>
Responsive Design
Breakpoints
| Prefix | Min Width | Usage |
|---|---|---|
| (none) | 0px | Mobile first |
sm: |
600px | Small tablets |
md: |
960px | Tablets/laptops |
lg: |
1280px | Desktops |
xl: |
1440px | Large screens |
Common Patterns
<!-- Stack on mobile, row on desktop -->
<div class="flex flex-col sm:flex-row">...</div>
<!-- Responsive padding -->
<div class="p-4 sm:p-6 md:p-8">...</div>
<!-- Show/hide by breakpoint -->
<div class="hidden sm:block">Desktop only</div>
<div class="sm:hidden">Mobile only</div>
<!-- Responsive typography -->
<h1 class="text-2xl sm:text-3xl md:text-4xl">Title</h1>
<!-- Responsive width -->
<div class="w-full md:w-1/2 lg:w-1/3">...</div>
Component Page Layout
Standard Aurora Page Structure
<div class="absolute inset-0 flex w-full flex-col overflow-hidden">
<!-- Header -->
<div
class="bg-card flex flex-0 flex-col border-b p-6 sm:flex-row sm:items-center sm:justify-between sm:px-10 sm:py-4 dark:bg-transparent"
>
<div class="min-w-0 flex-1">
<au-breadcrumb [data]="breadcrumb"></au-breadcrumb>
<au-title>
<mat-icon class="mr-2 icon-size-8">settings</mat-icon>
Page Title
</au-title>
</div>
<!-- Actions -->
<div class="mt-6 flex flex-shrink-0 items-center sm:ml-4 sm:mt-0">
<button
class="ml-3"
[color]="'primary'"
mat-flat-button
>
<mat-icon class="mr-2 icon-size-5">save</mat-icon>
Save
</button>
</div>
</div>
<!-- Main Content -->
<div class="flex-auto overflow-y-auto px-6 pt-6 sm:px-10 sm:pt-10">
<div class="form-card">
<div class="layout__container">
<!-- Form fields here -->
</div>
</div>
</div>
</div>
Fuse Utility Classes
Icon Sizing
<mat-icon class="icon-size-4">icon</mat-icon>
<!-- 1rem -->
<mat-icon class="icon-size-5">icon</mat-icon>
<!-- 1.25rem -->
<mat-icon class="icon-size-6">icon</mat-icon>
<!-- 1.5rem -->
<mat-icon class="icon-size-8">icon</mat-icon>
<!-- 2rem -->
<mat-icon class="icon-size-10">icon</mat-icon>
<!-- 2.5rem -->
<mat-icon class="icon-size-12">icon</mat-icon>
<!-- 3rem -->
Extended Spacing
<div class="w-90">360px width</div>
<div class="h-120">480px height</div>
<div class="max-w-200">800px max width</div>
Extended Z-Index
<div class="z-60">Above most elements</div>
<div class="z-999">Above modals</div>
<div class="z-9999">Tooltips, dropdowns</div>
Using @apply in SCSS
Component Styles
// ✅ GOOD: Reusable component styles
.form-card {
@apply bg-card rounded-lg p-6 shadow;
}
.button-primary {
@apply rounded bg-primary px-4 py-2 text-on-primary;
}
// ✅ GOOD: Custom utilities layer
@layer utilities {
.truncate-2-lines {
@apply line-clamp-2;
}
}
// ❌ AVOID: @apply for one-off styles
// Use inline classes instead
Interpolation for !important
// When needed despite important: true in config
.text-forced {
@apply text-default #{'!important'};
}
Anti-Patterns
| Avoid | Do Instead |
|---|---|
Raw grid-cols-* in forms |
Use layout__container + col-* |
| Hard-coded colors without dark variant | Use theme utilities (bg-card, text-default) |
!important in HTML classes |
Tailwind config has important: true |
| Inline styles for spacing | Use Tailwind spacing utilities |
@apply for single-use styles |
Use inline utility classes |
| Hex colors in arbitrary values | Use theme color classes |
Related Skills
| Skill | When to Use Together |
|---|---|
angular-19 |
Angular component patterns |
angular-material-19 |
Material components styling |
tailwind-4 |
When migrating to Tailwind 4 |
Resources
- Tailwind Config:
tailwind.config.js - Fuse Plugins:
src/@fuse/tailwind/plugins/ - Aurora Styles:
src/@aurora/styles/ - Official Docs: https://v3.tailwindcss.com/docs
Weekly Installs
3
Repository
avvale/aurora-frontFirst Seen
Feb 28, 2026
Security Audits
Installed on
cline3
github-copilot3
codex3
kimi-cli3
gemini-cli3
cursor3