Add jobs
This commit is contained in:
626
.cursor/commands/responsive.md
Normal file
626
.cursor/commands/responsive.md
Normal file
@@ -0,0 +1,626 @@
|
||||
# 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
|
||||
|
||||
Reference in New Issue
Block a user