- System-based dark/light mode detection
- Manual theme toggle with smooth transitions
- Persistent theme preference
- Dropdown-based language switcher
- Support for multiple locales
- Emoji flag indicators
- Animated icon buttons with hover effects
- Loading states with smooth transitions
- Success/completion animations
- Command palette (βK) support
- Advanced filtering options
- Mobile-optimized search interface
- Orange Theme
/* Primary */ from-orange-500 to-orange-600 /* Hover */ from-orange-600 to-orange-700 /* Accent Text */ text-orange-300, text-orange-400 /* Transparencies */ orange-500/20, orange-500/10, orange-500/5
- Dark Gradient Base
background: radial-gradient(circle at 0% 0%, rgba(255, 97, 0, 0.12) 0%, transparent 50%), radial-gradient(circle at 100% 0%, rgba(255, 97, 0, 0.12) 0%, transparent 50%), linear-gradient(180deg, #111827 0%, #1e1b18 100%);
- Primary:
text-white/90
- Secondary:
text-white/70
- Tertiary:
text-white/60
- Disabled:
text-white/40
.card-glass {
@apply bg-gradient-to-b from-white/[0.08] to-white/[0.04]
backdrop-blur-md
rounded-2xl
transition-all duration-300
shadow-[inset_0_1px_1px_rgba(255,255,255,0.05),0_4px_20px_rgba(0,0,0,0.1)];
}
.btn-orange {
@apply bg-gradient-to-r from-orange-500 to-orange-600
hover:from-orange-600 hover:to-orange-700
text-white font-medium px-6 py-2.5 rounded-lg
transition-all duration-300
focus:ring-2 focus:ring-orange-500/50 focus:outline-none;
}
- H1:
text-2xl sm:text-3xl font-medium
- H2:
text-xl sm:text-2xl font-medium
- Body:
text-base sm:text-lg
- Small:
text-sm
- Regular:
font-normal
- Medium:
font-medium
- Bold:
font-bold
- Standard:
transition-all duration-300
- Smooth:
transition-all duration-500
- Loading:
animate-spin
- Fade:
animate-fade-in
,animate-fade-up
- Pulse:
animate-pulse
- Custom:
@keyframes diceRoll { 0% { transform: rotate(0deg) scale(1); } 50% { transform: rotate(180deg) scale(1.1); } 100% { transform: rotate(360deg) scale(1); } }
- Scale:
hover:scale-105
,hover:scale-110
- Group: Use
group
andgroup-hover
for nested animations
- Medium:
backdrop-blur-md
- Large:
backdrop-blur-xl
shadow-[inset_0_1px_1px_rgba(255,255,255,0.05),0_4px_20px_rgba(0,0,0,0.1)]
- Light:
border border-white/[0.03]
- Medium:
border border-white/[0.05]
- Heavy:
border border-white/[0.1]
- Horizontal:
bg-gradient-to-r
- Vertical:
bg-gradient-to-b
- Max Width:
max-w-6xl mx-auto
- Padding:
p-4 md:p-8
grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4
- Small:
gap-4
- Medium:
gap-6
- Large:
gap-8
- Small (sm): 640px
- Medium (md): 768px
- Large (lg): 1024px
- Extra Large (xl): 1280px
selection:bg-orange-500/20 selection:text-orange-200
focus:ring-2 focus:ring-orange-500/50 focus:outline-none
- Maintain WCAG 2.1 AA standards
- Use opacity for text variations
- Small:
w-4 h-4
- Medium:
w-5 h-5
- Large:
w-6 h-6
- Primary:
text-orange-300
- Secondary:
text-white/70
- Hover:
group-hover:text-orange-200
- Square:
aspect-square
- Video:
aspect-video
- Custom:
aspect-[4/3]
loading="lazy"
decoding="async"
- Glass effect with hover states
- Consistent padding and rounded corners
- Optional border highlights
- Clear hover states
- Loading states when applicable
- Disabled states with reduced opacity
- Consistent input styling
- Clear focus states
- Loading states with spinners
- Success confirmation animations
- Tabbed form interfaces
- Icon-enhanced input fields
- Backdrop blur
- Smooth enter/exit animations
- Mobile-responsive layouts
- Use
will-change
sparingly - Optimize animations for 60fps
- Lazy load images and components
- Semantic HTML
- ARIA labels where needed
- Keyboard navigation support
- Mobile-first approach
- Fluid typography
- Flexible layouts
- Already dark-themed by default (depend of project)
- Use opacity for variations
- Maintain contrast ratios
- System preference detection
- Manual override option
const [isLoading, setIsLoading] = useState(false);
// Usage in buttons
<Button disabled={isLoading}>
{isLoading ? <Loader2 className="animate-spin" /> : "Submit"}
</Button>
- Linear progress bars with gradients
- Circular loading spinners
- Pulse animations
- Download/Upload progress tracking
- Line charts with multiple datasets
- Area charts with gradient fills
- Bar charts with rounded corners
- Radar charts for comparison
- Responsive containers
- Dark mode optimized colors
- Custom tooltips and legends
const [submitted, setSubmitted] = useState(false);
// Success message handling
{submitted && <p className="text-green-500">Success!</p>}
const [isAnimating, setIsAnimating] = useState(false);
// Trigger animations
<div className={isAnimating ? "animate-bounce" : ""}>
Content
</div>