┌─────────────────────────────────────────┐
│ │
│ Page Content Here │
│ │
└─────────────────────────────────────────┘
┌─────────────────────────────────────────┐
│ 🏠 🔍 🔔(3) 👤 │
│ Home Search Alerts Profile │
│ ━━ │
└─────────────────────────────────────────┘
Features:
- Active indicator (━━) under selected item
- Badge (3) on notifications
- Touch-optimized spacing
- Safe area padding
┌─────────────────────────────────────────┐
│ ← Menu Page Title ⚙️ │
└─────────────────────────────────────────┘
Features:
- Back/Menu button on left
- Centered title with truncation
- Custom action on right
- Sticky positioning
┌─────────────────────────────────────────┐
│ │
│ Backdrop (blurred) │
│ │
│ ╭─────────────────────────────────╮ │
│ │ Modal Title ✕ │ │
│ ├─────────────────────────────────┤ │
│ │ │ │
│ │ Modal content goes here │ │
│ │ │ │
│ │ [Primary Button] │ │
│ │ │ │
│ ╰─────────────────────────────────╯ │
└─────────────────────────────────────────┘
Variants:
- Bottom: Slides up from bottom
- Center: Fades in at center
- Full: Takes full screen
┌─────────────────────────────────────────┐
│ │
│ Backdrop (blurred) │
│ │
│ ╭─────────────────────────────────╮ │
│ │ Choose an action │ │
│ ├─────────────────────────────────┤ │
│ │ 📤 Share │ │
│ │ ⚙️ Settings │ │
│ │ 🗑️ Delete (red) │ │
│ ├─────────────────────────────────┤ │
│ │ Cancel │ │
│ ╰─────────────────────────────────╯ │
└─────────────────────────────────────────┘
Swipe Left: ←←← [Content]
Swipe Right: [Content] →→→
Swipe Up: [Content] ↑↑↑
Swipe Down: ↓↓↓ [Content]
Tap: [Content] •
Double Tap: [Content] ••
Long Press: [Content] ⊙ (hold)
State 1: Normal
┌─────────────────────────────────────────┐
│ Content Item 1 │
│ Content Item 2 │
│ Content Item 3 │
└─────────────────────────────────────────┘
State 2: Pulling
┌─────────────────────────────────────────┐
│ ↻ (rotating) │
│ ───────────────────── │
│ Content Item 1 │
│ Content Item 2 │
└─────────────────────────────────────────┘
State 3: Refreshing
┌─────────────────────────────────────────┐
│ ⟳ (spinning) │
│ ───────────────────── │
│ Loading new content... │
└─────────────────────────────────────────┘
┌─────────────────────────────────────────┐
│ Name * │
│ ┌───────────────────────────────────┐ │
│ │ John Doe │ │
│ └───────────────────────────────────┘ │
│ │
│ Email * │
│ ┌───────────────────────────────────┐ │
│ │ 📧 john@example.com │ │
│ └───────────────────────────────────┘ │
│ │
│ Message * │
│ ┌───────────────────────────────────┐ │
│ │ Your message here... │ │
│ │ │ │
│ │ │ │
│ └───────────────────────────────────┘ │
│ │
│ ┌───────────────────────────────────┐ │
│ │ Submit Form │ │
│ └───────────────────────────────────┘ │
└─────────────────────────────────────────┘
With Error:
┌─────────────────────────────────────────┐
│ Email * │
│ ┌───────────────────────────────────┐ │
│ │ invalid-email │ │ (red border)
│ └───────────────────────────────────┘ │
│ ⚠️ Please enter a valid email │ (red text)
└─────────────────────────────────────────┘
Primary: ┌─────────────────┐
│ Primary Button │ (blue bg, white text)
└─────────────────┘
Secondary: ┌─────────────────┐
│ Secondary Button│ (gray bg, white text)
└─────────────────┘
Outline: ┌─────────────────┐
│ Outline Button │ (blue border, blue text)
└─────────────────┘
Ghost: ┌─────────────────┐
│ Ghost Button │ (transparent, blue text)
└─────────────────┘
Loading: ┌─────────────────┐
│ ⟳ Loading... │ (spinner + text)
└─────────────────┘
MobileLoading:
┌─────────────────────────────────────────┐
│ │
│ ⟳ │
│ Loading data... │
│ │
└─────────────────────────────────────────┘
Skeleton:
┌─────────────────────────────────────────┐
│ ⚪ ▓▓▓▓▓▓▓▓▓▓▓▓ │
│ ▓▓▓▓▓▓▓▓ │
│ │
│ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ │
│ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ │
└─────────────────────────────────────────┘
Progress Bar:
┌─────────────────────────────────────────┐
│ Progress 75% │
│ ████████████████████░░░░░░░░░░░░░░░░ │
└─────────────────────────────────────────┘
xs: ⚪ (24px)
sm: ⚪ (32px)
md: ⚪ (40px)
lg: ⚪ (48px)
xl: ⚪ (64px)
With Initials:
┌────┐
│ JD │ (if no image)
└────┘
Loading:
┌─────────────────────────────────────────┐
│ │
│ ⟳ │
│ │
└─────────────────────────────────────────┘
Loaded:
┌─────────────────────────────────────────┐
│ │
│ [Image Content] │
│ │
└─────────────────────────────────────────┘
Error:
┌─────────────────────────────────────────┐
│ │
│ 🖼️ │
│ │
└─────────────────────────────────────────┘
┌─────────────────────────────────────────┐
│ All (24) Active (8) Completed (16) │
│ ━━━━━ │
└─────────────────────────────────────────┘
┌──────────┐
│ Mobile │
│ Phone │
│ View │
└──────────┘
┌────────────────┐
│ Large Phone │
│ or Small │
│ Tablet View │
└────────────────┘
┌──────────────────────┐
│ Tablet Portrait │
│ View │
└──────────────────────┘
┌────────────────────────────┐
│ Tablet Landscape or │
│ Small Desktop View │
└────────────────────────────┘
┌──────────────────────────────────┐
│ Desktop View │
└──────────────────────────────────┘
┌────────────────────────────────────────┐
│ Large Desktop View │
└────────────────────────────────────────┘
┌──────────────┐
│ │ 44px height
│ Button │ minimum
│ │
└──────────────┘
┌──────────────┐
│ │ 48px height
│ Button │ recommended
│ │
└──────────────┘
Frame 1: ┌─────┐
│ │
└─────┘
▼▼▼▼▼
Frame 2: ┌─────┐
│ │
▼▼▼
└─────┘
Frame 3: ┌─────┐
▼
│ │
└─────┘
Frame 4: ┌─────┐
│ │
└─────┘
Frame 1: ░░░░░ (0% opacity)
Frame 2: ▒▒▒▒▒ (33% opacity)
Frame 3: ▓▓▓▓▓ (66% opacity)
Frame 4: █████ (100% opacity)
Frame 1: ◐
Frame 2: ◓
Frame 3: ◑
Frame 4: ◒
Default: [ Button ]
Hover: [ Button ] (darker)
Active: [ Button ] (darkest)
Disabled: [ Button ] (grayed, 50% opacity)
Loading: [ ⟳ Loading... ]
Default: ┌──────────┐
│ │
└──────────┘
Focus: ┌──────────┐ (blue border, ring)
│ | │
└──────────┘
Error: ┌──────────┐ (red border)
│ │
└──────────┘
⚠️ Error message
Disabled: ┌──────────┐ (gray, 50% opacity)
│ │
└──────────┘
Closed: (not visible)
Opening: ░░░░░░░░░░ (animating in)
░ Modal ░
░░░░░░░░░░
Open: ██████████ (fully visible)
█ Modal █
██████████
Closing: ▒▒▒▒▒▒▒▒▒▒ (animating out)
▒ Modal ▒
▒▒▒▒▒▒▒▒▒▒
50: ░░░░░ #f0f9ff (lightest)
100: ░░░░ #e0f2fe
200: ░░░ #bae6fd
300: ░░ #7dd3fc
400: ░ #38bdf8
500: █ #0ea5e9 (base)
600: ██ #0284c7
700: ███ #0369a1
800: ████ #075985
900: █████ #0c4a6e (darkest)
Light: ░ #7B61FF
Default: █ #5B3FFF
Dark: ██ #3B1FDF
Success: 🟢 Green
Warning: 🟡 Yellow
Danger: 🔴 Red
Info: 🔵 Blue
0: •
1: •─
2: •──
3: •───
4: •────
5: •─────
6: •──────
8: •────────
10: •──────────
12: •────────────
16: •────────────────
20: •────────────────────
xs: Text (12px)
sm: Text (14px)
base: Text (16px)
lg: Text (18px)
xl: Text (20px)
2xl: Text (24px)
3xl: Text (30px)
4xl: Text (36px)
┌─────────────────────────────────────────┐
│ ← Menu Dashboard ⚙️ │ ← MobileHeader
├─────────────────────────────────────────┤
│ All (24) Active (8) Done (16) │ ← MobileTabBar
│ ━━━━━ │
├─────────────────────────────────────────┤
│ ↓ Pull to refresh │ ← PullToRefresh
│ │
│ ╭─────────────────────────────────╮ │
│ │ ⚪ Task Title │ │ ← Card
│ │ Description here... │ │
│ │ [View Details] │ │
│ ╰─────────────────────────────────╯ │
│ │
│ ╭─────────────────────────────────╮ │
│ │ ⚪ Another Task │ │
│ │ More details... │ │
│ │ [View Details] │ │
│ ╰─────────────────────────────────╯ │
│ │
├─────────────────────────────────────────┤
│ 🏠 🔍 🔔(3) 👤 │ ← MobileNavigation
│ Home Search Alerts Profile │
│ ━━ │
└─────────────────────────────────────────┘
This visual guide helps developers understand what each component looks like and how they work together in a mobile interface.