Tailwind CSS Utility Styling
Core Utility Classes
Layout
```tsx
// Flexbox
// Grid
// Positioning
Spacing
```tsx
// Padding: p-{size}
// Margin: m-{size}
Typography
```tsx
Mobile-First Responsive (MANDATORY)
Start with mobile (unprefixed), add breakpoints:
```tsx
Breakpoints: `sm:` (640px), `md:` (768px), `lg:` (1024px), `xl:` (1280px)
Dark Mode
Use `dark:` prefix:
```tsx
CSS Variables (REQUIRED)
Use semantic variables, never hardcoded colors:
```tsx
// ✅ GOOD
// ❌ BAD
```
Available variables:
- `background`, `foreground`
- `card`, `card-foreground`
- `primary`, `primary-foreground`
- `secondary`, `muted`, `accent`
- `destructive`, `border`, `input`, `ring`
cva for Variants
```tsx
import { cva } from 'class-variance-authority';
const buttonVariants = cva(
"base classes here",
{
variants: {
variant: {
default: "bg-primary text-primary-foreground",
destructive: "bg-destructive",
},
size: {
default: "h-10 px-4",
sm: "h-9 px-3",
},
},
defaultVariants: {
variant: "default",
size: "default",
},
}
);
```
Token Estimate: ~2,500 tokens
1---2name: tailwind-utility-styling-23description: Tailwind CSS utility-first styling, mobile-first responsive design, dark mode, CSS variables, and cva variants. Keywords: "style", "tailwind", "responsive", "dark mode", "mobile-first", "css variables"4---56# Tailwind CSS Utility Styling78## Core Utility Classes910### Layout1112\`\`\`tsx13// Flexbox14<div className="flex justify-center items-center gap-4">1516// Grid17<div className="grid grid-cols-3 gap-6">1819// Positioning20<div className="relative">21 <div className="absolute top-0 right-0">22\`\`\`2324### Spacing2526\`\`\`tsx27// Padding: p-{size}28<div className="p-4"> // 1rem (16px)29<div className="px-6 py-4"> // Horizontal/vertical3031// Margin: m-{size}32<div className="mt-8 mb-4"> // Top/bottom33<div className="mx-auto"> // Center horizontally34\`\`\`3536### Typography3738\`\`\`tsx39<h1 className="text-3xl font-bold leading-tight">40<p className="text-base text-muted-foreground">41\`\`\`4243## Mobile-First Responsive (MANDATORY)4445Start with mobile (unprefixed), add breakpoints:4647\`\`\`tsx48<div className="49 flex flex-col // Mobile: stack50 md:flex-row // Medium+: horizontal51 gap-4 md:gap-6 // Responsive gap52">53\`\`\`5455Breakpoints: \`sm:\` (640px), \`md:\` (768px), \`lg:\` (1024px), \`xl:\` (1280px)5657## Dark Mode5859Use \`dark:\` prefix:6061\`\`\`tsx62<div className="bg-white dark:bg-zinc-900 text-zinc-900 dark:text-zinc-100">63\`\`\`6465## CSS Variables (REQUIRED)6667Use semantic variables, never hardcoded colors:6869\`\`\`tsx70// ✅ GOOD71<Button className="bg-primary text-primary-foreground">72<Alert className="bg-destructive text-destructive-foreground">7374// ❌ BAD75<Button className="bg-blue-500 text-white">76\`\`\`7778Available variables:79- \`background\`, \`foreground\`80- \`card\`, \`card-foreground\`81- \`primary\`, \`primary-foreground\`82- \`secondary\`, \`muted\`, \`accent\`83- \`destructive\`, \`border\`, \`input\`, \`ring\`8485## cva for Variants8687\`\`\`tsx88import { cva } from 'class-variance-authority';8990const buttonVariants = cva(91 "base classes here",92 {93 variants: {94 variant: {95 default: "bg-primary text-primary-foreground",96 destructive: "bg-destructive",97 },98 size: {99 default: "h-10 px-4",100 sm: "h-9 px-3",101 },102 },103 defaultVariants: {104 variant: "default",105 size: "default",106 },107 }108);109\`\`\`110111---112113**Token Estimate**: ~2,500 tokens