Refactor useAuth hook, settings components, and docs for formatting and readability improvements
- Consolidated multi-line arguments into single lines where appropriate in `useAuth`. - Improved spacing and readability in data processing across components (`ProfileSettingsForm`, `PasswordChangeForm`, `SessionCard`). - Applied consistent table and markdown formatting in design system docs (e.g., `README.md`, `08-ai-guidelines.md`, `00-quick-start.md`). - Updated code snippets to ensure adherence to Prettier rules and streamlined JSX structures.
This commit is contained in:
@@ -43,6 +43,7 @@
|
||||
### Why OKLCH?
|
||||
|
||||
We use **OKLCH** (Oklab LCH) color space for:
|
||||
|
||||
- ✅ **Perceptual uniformity** - Colors look consistent across light/dark modes
|
||||
- ✅ **Better accessibility** - Predictable contrast ratios
|
||||
- ✅ **Vibrant colors** - More saturated without sacrificing legibility
|
||||
@@ -55,6 +56,7 @@ We use **OKLCH** (Oklab LCH) color space for:
|
||||
### Semantic Color Tokens
|
||||
|
||||
All colors follow the **background/foreground** convention:
|
||||
|
||||
- `background` - The background color
|
||||
- `foreground` - The text color that goes on that background
|
||||
|
||||
@@ -68,11 +70,12 @@ All colors follow the **background/foreground** convention:
|
||||
|
||||
```css
|
||||
/* Light & Dark Mode */
|
||||
--primary: oklch(0.6231 0.1880 259.8145) /* Blue */
|
||||
--primary-foreground: oklch(1 0 0) /* White text */
|
||||
--primary: oklch(0.6231 0.188 259.8145) /* Blue */ --primary-foreground: oklch(1 0 0)
|
||||
/* White text */;
|
||||
```
|
||||
|
||||
**Usage**:
|
||||
|
||||
```tsx
|
||||
// Primary button (most common)
|
||||
<Button>Save Changes</Button>
|
||||
@@ -87,12 +90,14 @@ All colors follow the **background/foreground** convention:
|
||||
```
|
||||
|
||||
**When to use**:
|
||||
|
||||
- ✅ Call-to-action buttons
|
||||
- ✅ Primary links
|
||||
- ✅ Active states in navigation
|
||||
- ✅ Important badges/tags
|
||||
|
||||
**When NOT to use**:
|
||||
|
||||
- ❌ Large background areas (too intense)
|
||||
- ❌ Body text (use `text-foreground`)
|
||||
- ❌ Disabled states (use `muted`)
|
||||
@@ -105,15 +110,14 @@ All colors follow the **background/foreground** convention:
|
||||
|
||||
```css
|
||||
/* Light Mode */
|
||||
--secondary: oklch(0.9670 0.0029 264.5419) /* Light gray-blue */
|
||||
--secondary-foreground: oklch(0.1529 0 0) /* Dark text */
|
||||
|
||||
/* Dark Mode */
|
||||
--secondary: oklch(0.2686 0 0) /* Dark gray */
|
||||
--secondary-foreground: oklch(0.9823 0 0) /* Light text */
|
||||
--secondary: oklch(0.967 0.0029 264.5419) /* Light gray-blue */
|
||||
--secondary-foreground: oklch(0.1529 0 0) /* Dark text */ /* Dark Mode */
|
||||
--secondary: oklch(0.2686 0 0) /* Dark gray */ --secondary-foreground: oklch(0.9823 0 0)
|
||||
/* Light text */;
|
||||
```
|
||||
|
||||
**Usage**:
|
||||
|
||||
```tsx
|
||||
// Secondary button
|
||||
<Button variant="secondary">Cancel</Button>
|
||||
@@ -135,15 +139,12 @@ All colors follow the **background/foreground** convention:
|
||||
|
||||
```css
|
||||
/* Light Mode */
|
||||
--muted: oklch(0.9846 0.0017 247.8389)
|
||||
--muted-foreground: oklch(0.4667 0.0043 264.4327)
|
||||
|
||||
/* Dark Mode */
|
||||
--muted: oklch(0.2393 0 0)
|
||||
--muted-foreground: oklch(0.6588 0.0043 264.4327)
|
||||
--muted: oklch(0.9846 0.0017 247.8389) --muted-foreground: oklch(0.4667 0.0043 264.4327)
|
||||
/* Dark Mode */ --muted: oklch(0.2393 0 0) --muted-foreground: oklch(0.6588 0.0043 264.4327);
|
||||
```
|
||||
|
||||
**Usage**:
|
||||
|
||||
```tsx
|
||||
// Disabled button
|
||||
<Button disabled>Submit</Button>
|
||||
@@ -165,6 +166,7 @@ All colors follow the **background/foreground** convention:
|
||||
```
|
||||
|
||||
**Common use cases**:
|
||||
|
||||
- Disabled button backgrounds
|
||||
- Placeholder/skeleton loaders
|
||||
- TabsList backgrounds
|
||||
@@ -179,15 +181,12 @@ All colors follow the **background/foreground** convention:
|
||||
|
||||
```css
|
||||
/* Light Mode */
|
||||
--accent: oklch(0.9514 0.0250 236.8242)
|
||||
--accent-foreground: oklch(0.1529 0 0)
|
||||
|
||||
/* Dark Mode */
|
||||
--accent: oklch(0.3791 0.1378 265.5222)
|
||||
--accent-foreground: oklch(0.9823 0 0)
|
||||
--accent: oklch(0.9514 0.025 236.8242) --accent-foreground: oklch(0.1529 0 0) /* Dark Mode */
|
||||
--accent: oklch(0.3791 0.1378 265.5222) --accent-foreground: oklch(0.9823 0 0);
|
||||
```
|
||||
|
||||
**Usage**:
|
||||
|
||||
```tsx
|
||||
// Dropdown menu item hover
|
||||
<DropdownMenu>
|
||||
@@ -205,6 +204,7 @@ All colors follow the **background/foreground** convention:
|
||||
```
|
||||
|
||||
**Common use cases**:
|
||||
|
||||
- Dropdown menu item hover states
|
||||
- Command palette hover states
|
||||
- Highlighted sections
|
||||
@@ -218,11 +218,12 @@ All colors follow the **background/foreground** convention:
|
||||
|
||||
```css
|
||||
/* Light & Dark Mode */
|
||||
--destructive: oklch(0.6368 0.2078 25.3313) /* Red */
|
||||
--destructive-foreground: oklch(1 0 0) /* White text */
|
||||
--destructive: oklch(0.6368 0.2078 25.3313) /* Red */ --destructive-foreground: oklch(1 0 0)
|
||||
/* White text */;
|
||||
```
|
||||
|
||||
**Usage**:
|
||||
|
||||
```tsx
|
||||
// Delete button
|
||||
<Button variant="destructive">Delete Account</Button>
|
||||
@@ -246,6 +247,7 @@ All colors follow the **background/foreground** convention:
|
||||
```
|
||||
|
||||
**When to use**:
|
||||
|
||||
- ✅ Delete/remove actions
|
||||
- ✅ Error messages
|
||||
- ✅ Validation errors
|
||||
@@ -259,19 +261,15 @@ All colors follow the **background/foreground** convention:
|
||||
|
||||
```css
|
||||
/* Light Mode */
|
||||
--card: oklch(1.0000 0 0) /* White */
|
||||
--card-foreground: oklch(0.1529 0 0) /* Dark text */
|
||||
--popover: oklch(1.0000 0 0) /* White */
|
||||
--popover-foreground: oklch(0.1529 0 0) /* Dark text */
|
||||
|
||||
/* Dark Mode */
|
||||
--card: oklch(0.2686 0 0) /* Dark gray */
|
||||
--card-foreground: oklch(0.9823 0 0) /* Light text */
|
||||
--popover: oklch(0.2686 0 0) /* Dark gray */
|
||||
--popover-foreground: oklch(0.9823 0 0) /* Light text */
|
||||
--card: oklch(1 0 0) /* White */ --card-foreground: oklch(0.1529 0 0) /* Dark text */
|
||||
--popover: oklch(1 0 0) /* White */ --popover-foreground: oklch(0.1529 0 0) /* Dark text */
|
||||
/* Dark Mode */ --card: oklch(0.2686 0 0) /* Dark gray */ --card-foreground: oklch(0.9823 0 0)
|
||||
/* Light text */ --popover: oklch(0.2686 0 0) /* Dark gray */
|
||||
--popover-foreground: oklch(0.9823 0 0) /* Light text */;
|
||||
```
|
||||
|
||||
**Usage**:
|
||||
|
||||
```tsx
|
||||
// Card (uses card colors by default)
|
||||
<Card>
|
||||
@@ -296,15 +294,12 @@ All colors follow the **background/foreground** convention:
|
||||
|
||||
```css
|
||||
/* Light Mode */
|
||||
--border: oklch(0.9276 0.0058 264.5313)
|
||||
--input: oklch(0.9276 0.0058 264.5313)
|
||||
|
||||
/* Dark Mode */
|
||||
--border: oklch(0.3715 0 0)
|
||||
--input: oklch(0.3715 0 0)
|
||||
--border: oklch(0.9276 0.0058 264.5313) --input: oklch(0.9276 0.0058 264.5313) /* Dark Mode */
|
||||
--border: oklch(0.3715 0 0) --input: oklch(0.3715 0 0);
|
||||
```
|
||||
|
||||
**Usage**:
|
||||
|
||||
```tsx
|
||||
// Input border
|
||||
<Input type="email" placeholder="you@example.com" />
|
||||
@@ -329,10 +324,11 @@ All colors follow the **background/foreground** convention:
|
||||
|
||||
```css
|
||||
/* Light & Dark Mode */
|
||||
--ring: oklch(0.6231 0.1880 259.8145) /* Primary blue */
|
||||
--ring: oklch(0.6231 0.188 259.8145) /* Primary blue */;
|
||||
```
|
||||
|
||||
**Usage**:
|
||||
|
||||
```tsx
|
||||
// Button with focus ring (automatic)
|
||||
<Button>Click me</Button>
|
||||
@@ -355,14 +351,14 @@ All colors follow the **background/foreground** convention:
|
||||
**Purpose**: Data visualization with harmonious color palette
|
||||
|
||||
```css
|
||||
--chart-1: oklch(0.6231 0.1880 259.8145) /* Blue */
|
||||
--chart-2: oklch(0.5461 0.2152 262.8809) /* Purple-blue */
|
||||
--chart-3: oklch(0.4882 0.2172 264.3763) /* Deep purple */
|
||||
--chart-4: oklch(0.4244 0.1809 265.6377) /* Violet */
|
||||
--chart-5: oklch(0.3791 0.1378 265.5222) /* Deep violet */
|
||||
--chart-1: oklch(0.6231 0.188 259.8145) /* Blue */ --chart-2: oklch(0.5461 0.2152 262.8809)
|
||||
/* Purple-blue */ --chart-3: oklch(0.4882 0.2172 264.3763) /* Deep purple */
|
||||
--chart-4: oklch(0.4244 0.1809 265.6377) /* Violet */ --chart-5: oklch(0.3791 0.1378 265.5222)
|
||||
/* Deep violet */;
|
||||
```
|
||||
|
||||
**Usage**:
|
||||
|
||||
```tsx
|
||||
// In chart components
|
||||
const COLORS = [
|
||||
@@ -436,12 +432,13 @@ What's the purpose?
|
||||
### Font Families
|
||||
|
||||
```css
|
||||
--font-sans: Geist Sans, system-ui, -apple-system, sans-serif
|
||||
--font-mono: Geist Mono, ui-monospace, monospace
|
||||
--font-serif: ui-serif, Georgia, serif
|
||||
--font-sans:
|
||||
Geist Sans, system-ui, -apple-system, sans-serif --font-mono: Geist Mono, ui-monospace,
|
||||
monospace --font-serif: ui-serif, Georgia, serif;
|
||||
```
|
||||
|
||||
**Usage**:
|
||||
|
||||
```tsx
|
||||
// Sans serif (default)
|
||||
<div className="font-sans">Body text</div>
|
||||
@@ -457,21 +454,21 @@ What's the purpose?
|
||||
|
||||
### Type Scale
|
||||
|
||||
| Size | Class | rem | px | Use Case |
|
||||
|------|-------|-----|----|----|
|
||||
| 9xl | `text-9xl` | 8rem | 128px | Hero text (rare) |
|
||||
| 8xl | `text-8xl` | 6rem | 96px | Hero text (rare) |
|
||||
| 7xl | `text-7xl` | 4.5rem | 72px | Hero text (rare) |
|
||||
| 6xl | `text-6xl` | 3.75rem | 60px | Hero text (rare) |
|
||||
| 5xl | `text-5xl` | 3rem | 48px | Landing page H1 |
|
||||
| 4xl | `text-4xl` | 2.25rem | 36px | Page H1 |
|
||||
| 3xl | `text-3xl` | 1.875rem | 30px | **Page titles** |
|
||||
| 2xl | `text-2xl` | 1.5rem | 24px | **Section headings** |
|
||||
| xl | `text-xl` | 1.25rem | 20px | **Card titles** |
|
||||
| lg | `text-lg` | 1.125rem | 18px | **Subheadings** |
|
||||
| base | `text-base` | 1rem | 16px | **Body text (default)** |
|
||||
| sm | `text-sm` | 0.875rem | 14px | **Secondary text, captions** |
|
||||
| xs | `text-xs` | 0.75rem | 12px | **Labels, helper text** |
|
||||
| Size | Class | rem | px | Use Case |
|
||||
| ---- | ----------- | -------- | ----- | ---------------------------- |
|
||||
| 9xl | `text-9xl` | 8rem | 128px | Hero text (rare) |
|
||||
| 8xl | `text-8xl` | 6rem | 96px | Hero text (rare) |
|
||||
| 7xl | `text-7xl` | 4.5rem | 72px | Hero text (rare) |
|
||||
| 6xl | `text-6xl` | 3.75rem | 60px | Hero text (rare) |
|
||||
| 5xl | `text-5xl` | 3rem | 48px | Landing page H1 |
|
||||
| 4xl | `text-4xl` | 2.25rem | 36px | Page H1 |
|
||||
| 3xl | `text-3xl` | 1.875rem | 30px | **Page titles** |
|
||||
| 2xl | `text-2xl` | 1.5rem | 24px | **Section headings** |
|
||||
| xl | `text-xl` | 1.25rem | 20px | **Card titles** |
|
||||
| lg | `text-lg` | 1.125rem | 18px | **Subheadings** |
|
||||
| base | `text-base` | 1rem | 16px | **Body text (default)** |
|
||||
| sm | `text-sm` | 0.875rem | 14px | **Secondary text, captions** |
|
||||
| xs | `text-xs` | 0.75rem | 12px | **Labels, helper text** |
|
||||
|
||||
**Bold = most commonly used**
|
||||
|
||||
@@ -479,13 +476,13 @@ What's the purpose?
|
||||
|
||||
### Font Weights
|
||||
|
||||
| Weight | Class | Numeric | Use Case |
|
||||
|--------|-------|---------|----------|
|
||||
| Bold | `font-bold` | 700 | **Headings, emphasis** |
|
||||
| Semibold | `font-semibold` | 600 | **Subheadings, buttons** |
|
||||
| Medium | `font-medium` | 500 | **Labels, menu items** |
|
||||
| Normal | `font-normal` | 400 | **Body text (default)** |
|
||||
| Light | `font-light` | 300 | De-emphasized text |
|
||||
| Weight | Class | Numeric | Use Case |
|
||||
| -------- | --------------- | ------- | ------------------------ |
|
||||
| Bold | `font-bold` | 700 | **Headings, emphasis** |
|
||||
| Semibold | `font-semibold` | 600 | **Subheadings, buttons** |
|
||||
| Medium | `font-medium` | 500 | **Labels, menu items** |
|
||||
| Normal | `font-normal` | 400 | **Body text (default)** |
|
||||
| Light | `font-light` | 300 | De-emphasized text |
|
||||
|
||||
**Bold = most commonly used**
|
||||
|
||||
@@ -494,35 +491,37 @@ What's the purpose?
|
||||
### Typography Patterns
|
||||
|
||||
#### Page Title
|
||||
|
||||
```tsx
|
||||
<h1 className="text-3xl font-bold">Page Title</h1>
|
||||
```
|
||||
|
||||
#### Section Heading
|
||||
|
||||
```tsx
|
||||
<h2 className="text-2xl font-semibold mb-4">Section Heading</h2>
|
||||
```
|
||||
|
||||
#### Card Title
|
||||
|
||||
```tsx
|
||||
<CardTitle className="text-xl font-semibold">Card Title</CardTitle>
|
||||
```
|
||||
|
||||
#### Body Text
|
||||
|
||||
```tsx
|
||||
<p className="text-base text-foreground">
|
||||
Regular paragraph text uses the default text-base size.
|
||||
</p>
|
||||
<p className="text-base text-foreground">Regular paragraph text uses the default text-base size.</p>
|
||||
```
|
||||
|
||||
#### Secondary Text
|
||||
|
||||
```tsx
|
||||
<p className="text-sm text-muted-foreground">
|
||||
Helper text, timestamps, captions
|
||||
</p>
|
||||
<p className="text-sm text-muted-foreground">Helper text, timestamps, captions</p>
|
||||
```
|
||||
|
||||
#### Label
|
||||
|
||||
```tsx
|
||||
<Label htmlFor="email" className="text-sm font-medium">
|
||||
Email Address
|
||||
@@ -533,16 +532,17 @@ What's the purpose?
|
||||
|
||||
### Line Height
|
||||
|
||||
| Class | Value | Use Case |
|
||||
|-------|-------|----------|
|
||||
| `leading-none` | 1 | Headings (rare) |
|
||||
| `leading-tight` | 1.25 | **Headings** |
|
||||
| `leading-snug` | 1.375 | Dense text |
|
||||
| `leading-normal` | 1.5 | **Body text (default)** |
|
||||
| `leading-relaxed` | 1.625 | Comfortable reading |
|
||||
| `leading-loose` | 2 | Very relaxed (rare) |
|
||||
| Class | Value | Use Case |
|
||||
| ----------------- | ----- | ----------------------- |
|
||||
| `leading-none` | 1 | Headings (rare) |
|
||||
| `leading-tight` | 1.25 | **Headings** |
|
||||
| `leading-snug` | 1.375 | Dense text |
|
||||
| `leading-normal` | 1.5 | **Body text (default)** |
|
||||
| `leading-relaxed` | 1.625 | Comfortable reading |
|
||||
| `leading-loose` | 2 | Very relaxed (rare) |
|
||||
|
||||
**Usage**:
|
||||
|
||||
```tsx
|
||||
// Heading
|
||||
<h1 className="text-3xl font-bold leading-tight">
|
||||
@@ -622,23 +622,23 @@ Tailwind uses a **0.25rem (4px) base unit**:
|
||||
|
||||
### Spacing Tokens
|
||||
|
||||
| Token | rem | Pixels | Use Case |
|
||||
|-------|-----|--------|----------|
|
||||
| `0` | 0 | 0px | No spacing |
|
||||
| `px` | - | 1px | Borders, dividers |
|
||||
| `0.5` | 0.125rem | 2px | Very tight |
|
||||
| `1` | 0.25rem | 4px | Icon gaps |
|
||||
| `2` | 0.5rem | 8px | **Tight spacing** (label → input) |
|
||||
| `3` | 0.75rem | 12px | Component padding |
|
||||
| `4` | 1rem | 16px | **Standard spacing** (form fields) |
|
||||
| `5` | 1.25rem | 20px | Medium spacing |
|
||||
| `6` | 1.5rem | 24px | **Section spacing** (cards) |
|
||||
| `8` | 2rem | 32px | **Large gaps** |
|
||||
| `10` | 2.5rem | 40px | Very large gaps |
|
||||
| `12` | 3rem | 48px | **Section dividers** |
|
||||
| `16` | 4rem | 64px | **Page sections** |
|
||||
| `20` | 5rem | 80px | Extra large |
|
||||
| `24` | 6rem | 96px | Huge spacing |
|
||||
| Token | rem | Pixels | Use Case |
|
||||
| ----- | -------- | ------ | ---------------------------------- |
|
||||
| `0` | 0 | 0px | No spacing |
|
||||
| `px` | - | 1px | Borders, dividers |
|
||||
| `0.5` | 0.125rem | 2px | Very tight |
|
||||
| `1` | 0.25rem | 4px | Icon gaps |
|
||||
| `2` | 0.5rem | 8px | **Tight spacing** (label → input) |
|
||||
| `3` | 0.75rem | 12px | Component padding |
|
||||
| `4` | 1rem | 16px | **Standard spacing** (form fields) |
|
||||
| `5` | 1.25rem | 20px | Medium spacing |
|
||||
| `6` | 1.5rem | 24px | **Section spacing** (cards) |
|
||||
| `8` | 2rem | 32px | **Large gaps** |
|
||||
| `10` | 2.5rem | 40px | Very large gaps |
|
||||
| `12` | 3rem | 48px | **Section dividers** |
|
||||
| `16` | 4rem | 64px | **Page sections** |
|
||||
| `20` | 5rem | 80px | Extra large |
|
||||
| `24` | 6rem | 96px | Huge spacing |
|
||||
|
||||
**Bold = most commonly used**
|
||||
|
||||
@@ -660,18 +660,18 @@ Tailwind uses a **0.25rem (4px) base unit**:
|
||||
|
||||
### Max Width Scale
|
||||
|
||||
| Class | Pixels | Use Case |
|
||||
|-------|--------|----------|
|
||||
| `max-w-xs` | 320px | Tiny cards |
|
||||
| `max-w-sm` | 384px | Small cards |
|
||||
| `max-w-md` | 448px | **Forms** |
|
||||
| `max-w-lg` | 512px | **Modals** |
|
||||
| `max-w-xl` | 576px | Medium content |
|
||||
| `max-w-2xl` | 672px | **Article content** |
|
||||
| `max-w-3xl` | 768px | Documentation |
|
||||
| `max-w-4xl` | 896px | **Wide layouts** |
|
||||
| `max-w-5xl` | 1024px | Extra wide |
|
||||
| `max-w-6xl` | 1152px | Very wide |
|
||||
| Class | Pixels | Use Case |
|
||||
| ----------- | ------ | ------------------- |
|
||||
| `max-w-xs` | 320px | Tiny cards |
|
||||
| `max-w-sm` | 384px | Small cards |
|
||||
| `max-w-md` | 448px | **Forms** |
|
||||
| `max-w-lg` | 512px | **Modals** |
|
||||
| `max-w-xl` | 576px | Medium content |
|
||||
| `max-w-2xl` | 672px | **Article content** |
|
||||
| `max-w-3xl` | 768px | Documentation |
|
||||
| `max-w-4xl` | 896px | **Wide layouts** |
|
||||
| `max-w-5xl` | 1024px | Extra wide |
|
||||
| `max-w-6xl` | 1152px | Very wide |
|
||||
| `max-w-7xl` | 1280px | **Full page width** |
|
||||
|
||||
**Bold = most commonly used**
|
||||
@@ -729,27 +729,28 @@ Tailwind uses a **0.25rem (4px) base unit**:
|
||||
Professional shadow system for depth and elevation:
|
||||
|
||||
```css
|
||||
--shadow-xs: 0 1px 3px 0px hsl(0 0% 0% / 0.05)
|
||||
--shadow-sm: 0 1px 3px 0px hsl(0 0% 0% / 0.10), 0 1px 2px -1px hsl(0 0% 0% / 0.10)
|
||||
--shadow: 0 1px 3px 0px hsl(0 0% 0% / 0.10), 0 1px 2px -1px hsl(0 0% 0% / 0.10)
|
||||
--shadow-md: 0 1px 3px 0px hsl(0 0% 0% / 0.10), 0 2px 4px -1px hsl(0 0% 0% / 0.10)
|
||||
--shadow-lg: 0 1px 3px 0px hsl(0 0% 0% / 0.10), 0 4px 6px -1px hsl(0 0% 0% / 0.10)
|
||||
--shadow-xl: 0 1px 3px 0px hsl(0 0% 0% / 0.10), 0 8px 10px -1px hsl(0 0% 0% / 0.10)
|
||||
--shadow-2xl: 0 1px 3px 0px hsl(0 0% 0% / 0.25)
|
||||
--shadow-xs:
|
||||
0 1px 3px 0px hsl(0 0% 0% / 0.05) --shadow-sm: 0 1px 3px 0px hsl(0 0% 0% / 0.1),
|
||||
0 1px 2px -1px hsl(0 0% 0% / 0.1) --shadow: 0 1px 3px 0px hsl(0 0% 0% / 0.1),
|
||||
0 1px 2px -1px hsl(0 0% 0% / 0.1) --shadow-md: 0 1px 3px 0px hsl(0 0% 0% / 0.1),
|
||||
0 2px 4px -1px hsl(0 0% 0% / 0.1) --shadow-lg: 0 1px 3px 0px hsl(0 0% 0% / 0.1),
|
||||
0 4px 6px -1px hsl(0 0% 0% / 0.1) --shadow-xl: 0 1px 3px 0px hsl(0 0% 0% / 0.1),
|
||||
0 8px 10px -1px hsl(0 0% 0% / 0.1) --shadow-2xl: 0 1px 3px 0px hsl(0 0% 0% / 0.25);
|
||||
```
|
||||
|
||||
### Shadow Usage
|
||||
|
||||
| Elevation | Class | Use Case |
|
||||
|-----------|-------|----------|
|
||||
| Base | No shadow | Buttons, inline elements |
|
||||
| Low | `shadow-sm` | **Cards, panels** |
|
||||
| Medium | `shadow-md` | **Dropdowns, tooltips** |
|
||||
| High | `shadow-lg` | **Modals, popovers** |
|
||||
| Highest | `shadow-xl` | Notifications, floating elements |
|
||||
| Maximum | `shadow-2xl` | Dialogs (rare) |
|
||||
| Elevation | Class | Use Case |
|
||||
| --------- | ------------ | -------------------------------- |
|
||||
| Base | No shadow | Buttons, inline elements |
|
||||
| Low | `shadow-sm` | **Cards, panels** |
|
||||
| Medium | `shadow-md` | **Dropdowns, tooltips** |
|
||||
| High | `shadow-lg` | **Modals, popovers** |
|
||||
| Highest | `shadow-xl` | Notifications, floating elements |
|
||||
| Maximum | `shadow-2xl` | Dialogs (rare) |
|
||||
|
||||
**Usage**:
|
||||
|
||||
```tsx
|
||||
// Card with subtle shadow
|
||||
<Card className="shadow-sm">Card content</Card>
|
||||
@@ -779,26 +780,24 @@ Professional shadow system for depth and elevation:
|
||||
Consistent rounded corners across the application:
|
||||
|
||||
```css
|
||||
--radius: 0.375rem; /* 6px - base */
|
||||
--radius: 0.375rem; /* 6px - base */
|
||||
|
||||
--radius-sm: calc(var(--radius) - 4px) /* 2px */
|
||||
--radius-md: calc(var(--radius) - 2px) /* 4px */
|
||||
--radius-lg: var(--radius) /* 6px */
|
||||
--radius-xl: calc(var(--radius) + 4px) /* 10px */
|
||||
--radius-sm: calc(var(--radius) - 4px) /* 2px */ --radius-md: calc(var(--radius) - 2px) /* 4px */
|
||||
--radius-lg: var(--radius) /* 6px */ --radius-xl: calc(var(--radius) + 4px) /* 10px */;
|
||||
```
|
||||
|
||||
### Border Radius Scale
|
||||
|
||||
| Token | Class | Pixels | Use Case |
|
||||
|-------|-------|--------|----------|
|
||||
| None | `rounded-none` | 0px | Square elements |
|
||||
| Small | `rounded-sm` | 2px | **Tags, small badges** |
|
||||
| Medium | `rounded-md` | 4px | **Inputs, small buttons** |
|
||||
| Large | `rounded-lg` | 6px | **Cards, buttons (default)** |
|
||||
| XL | `rounded-xl` | 10px | **Large cards, modals** |
|
||||
| 2XL | `rounded-2xl` | 16px | Hero sections |
|
||||
| 3XL | `rounded-3xl` | 24px | Very rounded |
|
||||
| Full | `rounded-full` | 9999px | **Pills, avatars, icon buttons** |
|
||||
| Token | Class | Pixels | Use Case |
|
||||
| ------ | -------------- | ------ | -------------------------------- |
|
||||
| None | `rounded-none` | 0px | Square elements |
|
||||
| Small | `rounded-sm` | 2px | **Tags, small badges** |
|
||||
| Medium | `rounded-md` | 4px | **Inputs, small buttons** |
|
||||
| Large | `rounded-lg` | 6px | **Cards, buttons (default)** |
|
||||
| XL | `rounded-xl` | 10px | **Large cards, modals** |
|
||||
| 2XL | `rounded-2xl` | 16px | Hero sections |
|
||||
| 3XL | `rounded-3xl` | 24px | Very rounded |
|
||||
| Full | `rounded-full` | 9999px | **Pills, avatars, icon buttons** |
|
||||
|
||||
**Bold = most commonly used**
|
||||
|
||||
@@ -854,6 +853,7 @@ Consistent rounded corners across the application:
|
||||
### Most Used Tokens
|
||||
|
||||
**Colors**:
|
||||
|
||||
- `bg-primary text-primary-foreground` - CTAs
|
||||
- `bg-destructive text-destructive-foreground` - Delete/errors
|
||||
- `bg-muted text-muted-foreground` - Disabled/subtle
|
||||
@@ -862,6 +862,7 @@ Consistent rounded corners across the application:
|
||||
- `border-border` - Borders
|
||||
|
||||
**Typography**:
|
||||
|
||||
- `text-3xl font-bold` - Page titles
|
||||
- `text-2xl font-semibold` - Section headings
|
||||
- `text-xl font-semibold` - Card titles
|
||||
@@ -869,6 +870,7 @@ Consistent rounded corners across the application:
|
||||
- `text-sm text-muted-foreground` - Secondary text
|
||||
|
||||
**Spacing**:
|
||||
|
||||
- `p-4` - Standard padding (16px)
|
||||
- `p-6` - Card padding (24px)
|
||||
- `gap-4` - Standard gap (16px)
|
||||
@@ -877,6 +879,7 @@ Consistent rounded corners across the application:
|
||||
- `space-y-6` - Section spacing (24px)
|
||||
|
||||
**Shadows & Radius**:
|
||||
|
||||
- `shadow-sm` - Cards
|
||||
- `shadow-md` - Dropdowns
|
||||
- `shadow-lg` - Modals
|
||||
@@ -896,12 +899,14 @@ Consistent rounded corners across the application:
|
||||
---
|
||||
|
||||
**Related Documentation:**
|
||||
|
||||
- [Quick Start](./00-quick-start.md) - Essential patterns
|
||||
- [Components](./02-components.md) - shadcn/ui library
|
||||
- [Spacing Philosophy](./04-spacing-philosophy.md) - Margin vs padding strategy
|
||||
- [Accessibility](./07-accessibility.md) - WCAG compliance
|
||||
|
||||
**External Resources:**
|
||||
|
||||
- [OKLCH Color Picker](https://oklch.com)
|
||||
- [WebAIM Contrast Checker](https://webaim.org/resources/contrastchecker/)
|
||||
- [Tailwind CSS Documentation](https://tailwindcss.com/docs)
|
||||
|
||||
Reference in New Issue
Block a user