627 lines
19 KiB
Markdown
627 lines
19 KiB
Markdown
# responsive
|
|
|
|
## When to Use
|
|
|
|
Use this command when you want to:
|
|
- Implement responsive/mobile design using DaisyUI components
|
|
- Make existing components mobile-friendly with DaisyUI patterns
|
|
- Create beautiful, modern responsive layouts following DaisyUI documentation
|
|
- Optimize UI for different screen sizes using DaisyUI's responsive features
|
|
|
|
## Prerequisites
|
|
|
|
- Component or page file open or specified
|
|
- Tailwind CSS configured
|
|
- DaisyUI installed and configured
|
|
- Reference to DaisyUI documentation: https://daisyui.com/components/
|
|
- Understanding of the component's current structure
|
|
|
|
## Execution Steps
|
|
|
|
### Step 1: Analyze Current Component
|
|
|
|
Read the component file to understand its structure:
|
|
|
|
**If file is open in editor:**
|
|
- Use the currently open file
|
|
|
|
**If file path provided:**
|
|
- Read the file: `cat [file-path]`
|
|
|
|
**Analyze:**
|
|
- Current layout structure (grid, flex, etc.)
|
|
- Existing responsive classes (if any)
|
|
- Component complexity and nesting
|
|
- Content that needs to be responsive (tables, forms, charts, cards)
|
|
|
|
### Step 2: Identify Responsive Requirements
|
|
|
|
Determine what needs to be responsive:
|
|
|
|
**Common responsive patterns:**
|
|
- **Navigation**: Mobile hamburger menu, desktop horizontal nav
|
|
- **Tables**: Horizontal scroll on mobile, full table on desktop
|
|
- **Forms**: Stacked inputs on mobile, side-by-side on desktop
|
|
- **Cards/Grids**: Single column on mobile, multi-column on desktop
|
|
- **Charts**: Smaller on mobile, larger on desktop
|
|
- **Modals**: Full screen on mobile, centered on desktop
|
|
- **Text**: Smaller on mobile, larger on desktop
|
|
- **Spacing**: Tighter on mobile, more spacious on desktop
|
|
|
|
**Identify:**
|
|
- Which elements need responsive behavior
|
|
- Breakpoints where layout should change
|
|
- Mobile vs desktop content differences
|
|
|
|
### Step 3: Apply Mobile-First Responsive Design
|
|
|
|
Implement responsive design using Tailwind's mobile-first approach:
|
|
|
|
#### 3.1: Breakpoint Strategy
|
|
|
|
**Tailwind breakpoints (mobile-first):**
|
|
- Base (default): Mobile (< 640px)
|
|
- `sm:` - Small devices (≥ 640px)
|
|
- `md:` - Medium devices (≥ 768px)
|
|
- `lg:` - Large devices (≥ 1024px)
|
|
- `xl:` - Extra large (≥ 1280px)
|
|
- `2xl:` - 2X Extra large (≥ 1536px)
|
|
|
|
**Pattern:** Start with mobile styles, then add larger breakpoints:
|
|
```tsx
|
|
// Mobile first: base styles are for mobile
|
|
<div className="w-full p-4 md:p-6 lg:p-8">
|
|
// Mobile: full width, padding 4
|
|
// md+: padding 6
|
|
// lg+: padding 8
|
|
</div>
|
|
```
|
|
|
|
#### 3.2: Layout Patterns
|
|
|
|
**Grid Layouts:**
|
|
```tsx
|
|
// Single column mobile, multi-column desktop
|
|
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
|
|
{/* Cards */}
|
|
</div>
|
|
|
|
// Responsive grid with auto-fit
|
|
<div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4 md:gap-6">
|
|
```
|
|
|
|
**Flexbox Layouts:**
|
|
```tsx
|
|
// Stack on mobile, row on desktop
|
|
<div className="flex flex-col md:flex-row gap-4">
|
|
{/* Items */}
|
|
</div>
|
|
|
|
// Center on mobile, space-between on desktop
|
|
<div className="flex flex-col items-center md:flex-row md:justify-between">
|
|
```
|
|
|
|
**Container Patterns:**
|
|
```tsx
|
|
// Use layout utility class or custom container
|
|
<div className="layout">
|
|
{/* Content with responsive margins */}
|
|
</div>
|
|
|
|
// Or custom responsive container
|
|
<div className="w-full px-4 sm:px-6 lg:px-8 max-w-7xl mx-auto">
|
|
```
|
|
|
|
#### 3.3: Navigation Patterns (DaisyUI Navbar)
|
|
|
|
**DaisyUI Navbar Pattern** (https://daisyui.com/components/navbar/):
|
|
```tsx
|
|
// DaisyUI navbar with responsive menu
|
|
<div className="navbar bg-base-300">
|
|
{/* Mobile menu button */}
|
|
<div className="navbar-start">
|
|
<button className="btn btn-ghost lg:hidden" onClick={toggleMenu}>
|
|
<svg className="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
|
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M4 6h16M4 12h16M4 18h16" />
|
|
</svg>
|
|
</button>
|
|
<a className="btn btn-ghost text-xl">Logo</a>
|
|
</div>
|
|
|
|
{/* Desktop navigation */}
|
|
<div className="navbar-center hidden lg:flex">
|
|
<ul className="menu menu-horizontal px-1">
|
|
<li><a>Item 1</a></li>
|
|
<li><a>Item 2</a></li>
|
|
</ul>
|
|
</div>
|
|
|
|
{/* Navbar end */}
|
|
<div className="navbar-end">
|
|
<button className="btn btn-primary">Action</button>
|
|
</div>
|
|
</div>
|
|
|
|
// Mobile drawer/sidebar (DaisyUI Drawer pattern)
|
|
<div className={`drawer lg:drawer-open`}>
|
|
<input id="drawer-toggle" type="checkbox" className="drawer-toggle" checked={isOpen} onChange={toggleMenu} />
|
|
<div className="drawer-side">
|
|
<label htmlFor="drawer-toggle" className="drawer-overlay"></label>
|
|
<ul className="menu p-4 w-80 min-h-full bg-base-200 text-base-content">
|
|
{/* Mobile menu items */}
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
```
|
|
|
|
#### 3.4: Table Patterns (DaisyUI Table)
|
|
|
|
**DaisyUI Table Patterns** (https://daisyui.com/components/table/):
|
|
```tsx
|
|
// Option 1: Horizontal scroll on mobile (recommended)
|
|
<div className="overflow-x-auto">
|
|
<table className="table table-zebra w-full">
|
|
<thead>
|
|
<tr>
|
|
<th>Header 1</th>
|
|
<th>Header 2</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{/* Table rows */}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
|
|
// Option 2: Responsive table size (mobile: table-xs, desktop: table)
|
|
<div className="overflow-x-auto">
|
|
<table className="table table-xs md:table table-zebra w-full">
|
|
{/* Table content */}
|
|
</table>
|
|
</div>
|
|
|
|
// Option 3: Card layout on mobile, table on desktop
|
|
<div className="block md:hidden space-y-4">
|
|
{/* DaisyUI cards for mobile */}
|
|
<div className="card bg-base-100 shadow">
|
|
<div className="card-body">
|
|
{/* Card content matching table data */}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div className="hidden md:block overflow-x-auto">
|
|
<table className="table table-zebra w-full">
|
|
{/* Table for desktop */}
|
|
</table>
|
|
</div>
|
|
```
|
|
|
|
#### 3.5: Form Patterns (DaisyUI Form)
|
|
|
|
**DaisyUI Form Patterns** (https://daisyui.com/components/form/):
|
|
```tsx
|
|
// DaisyUI form-control with responsive grid
|
|
<form className="w-full max-w-2xl mx-auto space-y-4">
|
|
{/* Stacked on mobile, side-by-side on desktop */}
|
|
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
|
|
<div className="form-control">
|
|
<label className="label">
|
|
<span className="label-text">First Name</span>
|
|
</label>
|
|
<input type="text" className="input input-bordered w-full" />
|
|
</div>
|
|
<div className="form-control">
|
|
<label className="label">
|
|
<span className="label-text">Last Name</span>
|
|
</label>
|
|
<input type="text" className="input input-bordered w-full" />
|
|
</div>
|
|
</div>
|
|
|
|
{/* Full width field */}
|
|
<div className="form-control">
|
|
<label className="label">
|
|
<span className="label-text">Email</span>
|
|
</label>
|
|
<input type="email" className="input input-bordered w-full" />
|
|
</div>
|
|
|
|
{/* Responsive button */}
|
|
<div className="form-control mt-6">
|
|
<button className="btn btn-primary w-full md:w-auto">Submit</button>
|
|
</div>
|
|
</form>
|
|
```
|
|
|
|
#### 3.6: Typography Patterns
|
|
|
|
**Responsive Text:**
|
|
```tsx
|
|
// Smaller on mobile, larger on desktop
|
|
<h1 className="text-2xl md:text-3xl lg:text-4xl font-bold">
|
|
Title
|
|
</h1>
|
|
|
|
<p className="text-sm md:text-base lg:text-lg">
|
|
Content
|
|
</p>
|
|
```
|
|
|
|
#### 3.7: Spacing Patterns
|
|
|
|
**Responsive Spacing:**
|
|
```tsx
|
|
// Tighter on mobile, more spacious on desktop
|
|
<div className="p-4 md:p-6 lg:p-8">
|
|
{/* Content */}
|
|
</div>
|
|
|
|
// Responsive gaps
|
|
<div className="flex flex-col gap-2 md:gap-4 lg:gap-6">
|
|
{/* Items */}
|
|
</div>
|
|
```
|
|
|
|
#### 3.8: Modal/Dialog Patterns (DaisyUI Modal)
|
|
|
|
**DaisyUI Modal Patterns** (https://daisyui.com/components/modal/):
|
|
```tsx
|
|
// Full screen on mobile, centered on desktop
|
|
<dialog className={`modal ${isOpen ? 'modal-open' : ''}`}>
|
|
<div className="modal-box w-full max-w-none md:max-w-2xl mx-auto">
|
|
<h3 className="font-bold text-lg">Modal Title</h3>
|
|
<p className="py-4">Modal content</p>
|
|
<div className="modal-action">
|
|
<button className="btn" onClick={closeModal}>Close</button>
|
|
</div>
|
|
</div>
|
|
<form method="dialog" className="modal-backdrop" onClick={closeModal}>
|
|
<button>close</button>
|
|
</form>
|
|
</dialog>
|
|
|
|
// Responsive modal with different sizes
|
|
<dialog className={`modal ${isOpen ? 'modal-open' : ''}`}>
|
|
<div className="modal-box w-11/12 max-w-none md:max-w-lg lg:max-w-2xl">
|
|
{/* Modal content */}
|
|
</div>
|
|
</dialog>
|
|
```
|
|
|
|
#### 3.9: Chart/Visualization Patterns
|
|
|
|
**Responsive Charts:**
|
|
```tsx
|
|
// Responsive chart container
|
|
<div ref={containerRef} className="w-full h-auto">
|
|
<Chart
|
|
width={containerWidth}
|
|
height={containerWidth * (isMobile ? 0.8 : 0.6)}
|
|
/>
|
|
</div>
|
|
|
|
// Or use aspect ratio
|
|
<div className="w-full aspect-[4/3] md:aspect-[16/9]">
|
|
<Chart />
|
|
</div>
|
|
```
|
|
|
|
### Step 4: Reference DaisyUI Documentation
|
|
|
|
**Before implementing any component, check DaisyUI documentation:**
|
|
- Open or reference: https://daisyui.com/components/
|
|
- Find the component you need (navbar, card, table, modal, etc.)
|
|
- Review the component's responsive examples and classes
|
|
- Use the exact DaisyUI classes and patterns from the docs
|
|
|
|
**DaisyUI Documentation Structure:**
|
|
- Each component page shows examples
|
|
- Copy the exact class names and structure
|
|
- Adapt the examples to your use case with responsive breakpoints
|
|
|
|
### Step 5: Apply DaisyUI Responsive Components
|
|
|
|
Use DaisyUI components following official documentation: https://daisyui.com/components/
|
|
|
|
**DaisyUI Responsive Components (from docs):**
|
|
|
|
1. **Navbar** (https://daisyui.com/components/navbar/):
|
|
- Use `navbar` with `navbar-start`, `navbar-center`, `navbar-end`
|
|
- Mobile hamburger: `btn btn-ghost lg:hidden`
|
|
- Desktop nav: `hidden lg:flex`
|
|
```tsx
|
|
<div className="navbar bg-base-300">
|
|
<div className="navbar-start">
|
|
<button className="btn btn-ghost lg:hidden">☰</button>
|
|
</div>
|
|
<div className="navbar-center hidden lg:flex">
|
|
{/* Desktop nav items */}
|
|
</div>
|
|
</div>
|
|
```
|
|
|
|
2. **Drawer** (https://daisyui.com/components/drawer/):
|
|
- Use `drawer` with `drawer-side` for mobile sidebar
|
|
- Toggle with `drawer-open` class
|
|
```tsx
|
|
<div className="drawer lg:drawer-open">
|
|
<input id="drawer-toggle" type="checkbox" className="drawer-toggle" />
|
|
<div className="drawer-side">
|
|
<label htmlFor="drawer-toggle" className="drawer-overlay"></label>
|
|
<ul className="menu p-4 w-80 min-h-full bg-base-200">
|
|
{/* Sidebar content */}
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
```
|
|
|
|
3. **Card** (https://daisyui.com/components/card/):
|
|
- Use `card` with `card-body` for responsive cards
|
|
- Responsive grid: `grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3`
|
|
```tsx
|
|
<div className="card bg-base-100 shadow-xl">
|
|
<div className="card-body p-4 md:p-6">
|
|
<h2 className="card-title text-lg md:text-xl">Title</h2>
|
|
<p className="text-sm md:text-base">Content</p>
|
|
</div>
|
|
</div>
|
|
```
|
|
|
|
4. **Table** (https://daisyui.com/components/table/):
|
|
- Wrap in `overflow-x-auto` for mobile scroll
|
|
- Use `table-xs` for mobile, `table` for desktop
|
|
```tsx
|
|
<div className="overflow-x-auto">
|
|
<table className="table table-zebra w-full">
|
|
{/* Table content */}
|
|
</table>
|
|
</div>
|
|
```
|
|
|
|
5. **Modal** (https://daisyui.com/components/modal/):
|
|
- Use `modal` with `modal-box` for responsive modals
|
|
- Full screen mobile: `w-full max-w-none md:max-w-2xl`
|
|
```tsx
|
|
<dialog className={`modal ${isOpen ? 'modal-open' : ''}`}>
|
|
<div className="modal-box w-full max-w-none md:max-w-2xl">
|
|
{/* Modal content */}
|
|
</div>
|
|
</dialog>
|
|
```
|
|
|
|
6. **Form** (https://daisyui.com/components/form/):
|
|
- Use `form-control` with responsive grid
|
|
- Inputs: `input input-bordered w-full`
|
|
```tsx
|
|
<div className="form-control">
|
|
<label className="label">
|
|
<span className="label-text">Label</span>
|
|
</label>
|
|
<input type="text" className="input input-bordered w-full" />
|
|
</div>
|
|
```
|
|
|
|
7. **Bottom Navigation** (https://daisyui.com/components/bottom-navigation/):
|
|
- Use `btm-nav` for mobile bottom navigation
|
|
```tsx
|
|
<div className="btm-nav lg:hidden fixed bottom-0">
|
|
<button className="active">Home</button>
|
|
<button>Settings</button>
|
|
</div>
|
|
```
|
|
|
|
8. **Tabs** (https://daisyui.com/components/tabs/):
|
|
- Use `tabs` with responsive layout
|
|
- Mobile: `tabs tabs-boxed`, Desktop: `tabs tabs-lifted`
|
|
```tsx
|
|
<div className="tabs tabs-boxed md:tabs-lifted">
|
|
<a className="tab">Tab 1</a>
|
|
<a className="tab tab-active">Tab 2</a>
|
|
</div>
|
|
```
|
|
|
|
9. **Dropdown** (https://daisyui.com/components/dropdown/):
|
|
- Use `dropdown` with responsive positioning
|
|
```tsx
|
|
<div className="dropdown dropdown-end">
|
|
<label tabIndex={0} className="btn btn-ghost">Menu</label>
|
|
<ul className="dropdown-content menu bg-base-100 rounded-box z-[1] w-52 p-2 shadow">
|
|
{/* Dropdown items */}
|
|
</ul>
|
|
</div>
|
|
```
|
|
|
|
10. **Stats** (https://daisyui.com/components/stats/):
|
|
- Use `stats` with responsive grid
|
|
```tsx
|
|
<div className="stats stats-vertical md:stats-horizontal shadow w-full">
|
|
<div className="stat">...</div>
|
|
</div>
|
|
```
|
|
|
|
### Step 6: Implement Beautiful Mobile UX
|
|
|
|
**Mobile UX Best Practices:**
|
|
|
|
1. **Touch Targets:**
|
|
- Minimum 44x44px touch targets
|
|
- Adequate spacing between interactive elements
|
|
```tsx
|
|
<button className="btn btn-primary min-h-[44px] min-w-[44px]">
|
|
Action
|
|
</button>
|
|
```
|
|
|
|
2. **Swipe Gestures:**
|
|
- Consider swipeable cards/carousels
|
|
- Use libraries like `react-swipeable` if needed
|
|
|
|
3. **Bottom Navigation** (DaisyUI Bottom Nav - https://daisyui.com/components/bottom-navigation/):
|
|
- Use DaisyUI `btm-nav` for mobile bottom navigation
|
|
```tsx
|
|
<div className="btm-nav lg:hidden fixed bottom-0 z-50 bg-base-300">
|
|
<button className="active text-primary">
|
|
<svg>...</svg>
|
|
<span className="btm-nav-label">Home</span>
|
|
</button>
|
|
<button>
|
|
<svg>...</svg>
|
|
<span className="btm-nav-label">Settings</span>
|
|
</button>
|
|
</div>
|
|
```
|
|
|
|
4. **Sticky Headers:**
|
|
- Keep important actions accessible
|
|
```tsx
|
|
<div className="sticky top-0 z-50 bg-base-100">
|
|
{/* Header content */}
|
|
</div>
|
|
```
|
|
|
|
5. **Loading States** (DaisyUI Loading - https://daisyui.com/components/loading/):
|
|
- Use DaisyUI loading spinners appropriately sized for mobile
|
|
```tsx
|
|
<div className="flex justify-center items-center min-h-[200px]">
|
|
<span className="loading loading-spinner loading-sm md:loading-md lg:loading-lg"></span>
|
|
</div>
|
|
|
|
// Or use loading text
|
|
<div className="flex flex-col items-center gap-4">
|
|
<span className="loading loading-spinner loading-lg"></span>
|
|
<span className="text-sm md:text-base">Loading...</span>
|
|
</div>
|
|
```
|
|
|
|
### Step 7: Test Responsive Breakpoints
|
|
|
|
Verify the implementation works at different breakpoints:
|
|
|
|
**Test breakpoints:**
|
|
- Mobile: 375px, 414px (iPhone sizes)
|
|
- Tablet: 768px, 1024px (iPad sizes)
|
|
- Desktop: 1280px, 1536px+
|
|
|
|
**Check:**
|
|
- Layout doesn't break at any breakpoint
|
|
- Text is readable at all sizes
|
|
- Interactive elements are easily tappable
|
|
- Content doesn't overflow horizontally
|
|
- Images scale appropriately
|
|
|
|
### Step 8: Optimize Performance
|
|
|
|
**Mobile Performance:**
|
|
|
|
1. **Lazy Loading:**
|
|
- Lazy load images and heavy components
|
|
```tsx
|
|
<img
|
|
src={imageSrc}
|
|
loading="lazy"
|
|
className="w-full h-auto"
|
|
alt="..."
|
|
/>
|
|
```
|
|
|
|
2. **Conditional Rendering:**
|
|
- Render mobile/desktop versions conditionally if needed
|
|
```tsx
|
|
{isMobile ? <MobileComponent /> : <DesktopComponent />}
|
|
```
|
|
|
|
3. **Reduce Animations on Mobile:**
|
|
- Consider `prefers-reduced-motion`
|
|
```tsx
|
|
<div className="transition-transform motion-reduce:transition-none">
|
|
```
|
|
|
|
## Error Handling
|
|
|
|
**If component file not found:**
|
|
- Check file path
|
|
- Verify file exists
|
|
- **STOP**: Cannot proceed without component
|
|
|
|
**If Tailwind classes not working:**
|
|
- Verify Tailwind config includes the file
|
|
- Check if classes are in content paths
|
|
- Rebuild Tailwind: `npm run build` or check build process
|
|
|
|
**If layout breaks at breakpoints:**
|
|
- Check for conflicting classes
|
|
- Verify breakpoint order (mobile-first)
|
|
- Test with browser dev tools
|
|
- Fix overflow issues with `overflow-x-hidden` on body
|
|
|
|
**If DaisyUI components not responsive:**
|
|
- Check DaisyUI version: `npm list daisyui`
|
|
- Verify Tailwind config includes DaisyUI plugin
|
|
- Reference DaisyUI docs: https://daisyui.com/components/
|
|
- Use DaisyUI's responsive utilities from documentation
|
|
- Ensure you're using the correct DaisyUI class names
|
|
|
|
## Example Execution
|
|
|
|
**User input:** `/responsive` (with component file open)
|
|
|
|
**AI execution:**
|
|
|
|
1. Analyze component: Read `UnifiedTradingModal.tsx`
|
|
- Found: Large form with multiple sections
|
|
- Found: Tables and cards
|
|
- Found: Some responsive classes already present
|
|
2. Identify requirements:
|
|
- Form inputs need stacking on mobile
|
|
- Tables need horizontal scroll
|
|
- Modal needs full-screen on mobile
|
|
- Cards need single column on mobile
|
|
3. Reference DaisyUI docs:
|
|
- Check https://daisyui.com/components/modal/ for modal patterns
|
|
- Check https://daisyui.com/components/form/ for form patterns
|
|
- Check https://daisyui.com/components/table/ for table patterns
|
|
- Check https://daisyui.com/components/card/ for card patterns
|
|
4. Implement responsive using DaisyUI:
|
|
- Update form: Use `form-control` with `grid grid-cols-1 md:grid-cols-2 gap-4`
|
|
- Update tables: Wrap in `overflow-x-auto` with `table table-zebra`
|
|
- Update modal: Use DaisyUI `modal` with `modal-box w-full max-w-none md:max-w-2xl`
|
|
- Update cards: Use DaisyUI `card` with `grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3`
|
|
5. Apply mobile UX:
|
|
- Use DaisyUI buttons (already meet 44px touch target)
|
|
- Add responsive spacing: `p-4 md:p-6`
|
|
- Update typography: `text-sm md:text-base`
|
|
6. Test: Verify at 375px, 768px, 1024px breakpoints
|
|
7. Success: "✅ Component is now fully responsive using DaisyUI components!"
|
|
|
|
**If table component:**
|
|
|
|
1. Analyze: Read table component
|
|
2. Identify: Table needs mobile-friendly layout
|
|
3. Implement:
|
|
- Option 1: Horizontal scroll wrapper
|
|
- Option 2: Card layout for mobile, table for desktop
|
|
4. Choose best approach based on data complexity
|
|
5. Implement chosen pattern
|
|
6. Success: "✅ Table is now responsive with [chosen pattern]!"
|
|
|
|
## Important Notes
|
|
|
|
- ✅ **Mobile-first approach** - Base styles for mobile, then add larger breakpoints
|
|
- ✅ **Use Tailwind breakpoints** - sm: 640px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px
|
|
- ✅ **DaisyUI components** - Always use DaisyUI components from https://daisyui.com/components/
|
|
- ✅ **Follow DaisyUI docs** - Reference official documentation for component usage
|
|
- ✅ **Touch targets** - Minimum 44x44px for mobile (DaisyUI buttons meet this)
|
|
- ✅ **No horizontal scroll** - Prevent horizontal overflow on mobile
|
|
- ✅ **Test all breakpoints** - Verify at 375px, 768px, 1024px, 1280px
|
|
- ✅ **Performance** - Lazy load images, optimize for mobile
|
|
- ⚠️ **Breakpoint order** - Always mobile-first: base → sm → md → lg → xl → 2xl
|
|
- ⚠️ **Content priority** - Show most important content first on mobile
|
|
- ⚠️ **Spacing** - Tighter on mobile, more spacious on desktop
|
|
- ⚠️ **DaisyUI classes** - Use DaisyUI utility classes (`btn`, `card`, `input`, etc.)
|
|
- 📱 **Mobile breakpoints**: < 640px (base), ≥ 640px (sm), ≥ 768px (md)
|
|
- 💻 **Desktop breakpoints**: ≥ 1024px (lg), ≥ 1280px (xl), ≥ 1536px (2xl)
|
|
- 🎨 **DaisyUI Components**: `navbar`, `drawer`, `card`, `table`, `modal`, `form`, `btm-nav`, `tabs`, `dropdown`, `stats`
|
|
- 📚 **DaisyUI Docs**: https://daisyui.com/components/ - Always reference for component patterns
|
|
- 🔧 **Layout utility**: Use `.layout` class or custom responsive containers
|
|
|