Complete roadmap for applying premium components to all dashboard pages
Phase 1 is complete. We've built a professional component library. Now we need to apply it to all dashboard pages to create a cohesive, premium experience across the entire app.
Timeline: 2-3 hours
Effort: Medium (repetitive but straightforward)
Impact: High (transforms entire app)
File: src/app/admin/dashboard/page.tsx
Changes:
- Import premium components
- Replace stat cards with StatCard
- Replace buttons with PremiumButton
- Replace cards with PremiumCard
- Update color scheme to Indigo
- Apply typography hierarchy
- Improve spacing
Before:
<div className="bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-2xl p-4 sm:p-5">
<p className="text-sm text-gray-500 dark:text-gray-400">Total Queries</p>
<p className="text-2xl font-bold text-gray-900 dark:text-white">1,247</p>
</div>After:
<StatCard
label="Total Queries"
value={1247}
icon={<BarChart3 className="h-5 w-5" />}
color="indigo"
trend={{ value: 12, isPositive: true }}
/>File: src/app/contract-analyzer/page.tsx
Changes:
- Import premium components
- Update file upload card styling
- Replace result cards with PremiumCard
- Update buttons with PremiumButton
- Apply Indigo color scheme
- Improve typography
- Better spacing
Before:
<div className="bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-2xl p-4 sm:p-5">
<h3 className="font-semibold text-gray-900 dark:text-white">Upload Contract</h3>
{/* Upload area */}
</div>After:
<PremiumCard title="Upload Contract" description="PDF or text file">
{/* Upload area */}
</PremiumCard>File: src/app/pricing/page.tsx
Changes:
- Import premium components
- Update pricing cards with PremiumCard
- Replace buttons with PremiumButton
- Apply Indigo color scheme
- Improve typography
- Better spacing
Before:
<div className="bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-2xl p-6">
<h3 className="text-lg font-semibold text-gray-900 dark:text-white">Pro</h3>
<p className="text-2xl font-bold text-gray-900 dark:text-white">$29/mo</p>
</div>After:
<PremiumCard title="Pro" hoverable>
<p className="text-premium-h2 text-indigo-600">$29/mo</p>
{/* Features */}
</PremiumCard>File: src/app/cases/page.tsx
Changes:
- Import premium components
- Update case cards with PremiumCard
- Replace buttons with PremiumButton
- Apply Indigo color scheme
- Improve typography
- Better spacing
File: src/app/drafts/page.tsx
Changes:
- Import premium components
- Update draft cards with PremiumCard
- Replace buttons with PremiumButton
- Apply Indigo color scheme
- Improve typography
- Better spacing
File: src/app/summarizer/page.tsx
Changes:
- Import premium components
- Update summary cards with PremiumCard
- Replace buttons with PremiumButton
- Apply Indigo color scheme
- Improve typography
- Better spacing
File: src/app/case-tracker/page.tsx
Changes:
- Import premium components
- Update tracker cards with PremiumCard
- Replace buttons with PremiumButton
- Apply Indigo color scheme
- Improve typography
- Better spacing
File: src/app/crm/page.tsx
Changes:
- Import premium components
- Update client cards with PremiumCard
- Replace buttons with PremiumButton
- Apply Indigo color scheme
- Improve typography
- Better spacing
File: src/app/news/page.tsx
Changes:
- Import premium components
- Update news cards with PremiumCard
- Replace buttons with PremiumButton
- Apply Indigo color scheme
- Improve typography
File: src/app/acts/page.tsx
Changes:
- Import premium components
- Update act cards with PremiumCard
- Replace buttons with PremiumButton
- Apply Indigo color scheme
- Improve typography
File: src/app/notices/page.tsx
Changes:
- Import premium components
- Update notice cards with PremiumCard
- Replace buttons with PremiumButton
- Apply Indigo color scheme
- Improve typography
File: src/app/research/page.tsx
Changes:
- Import premium components
- Update research cards with PremiumCard
- Replace buttons with PremiumButton
- Apply Indigo color scheme
- Improve typography
- Test all pages on mobile (< 768px)
- Verify 2-column grids work
- Check full-width cards
- Test drawer sidebar
- Verify floating action buttons
- Test all pages in dark mode
- Verify color contrast
- Check smooth transitions
- No flashing or glitches
- Keyboard navigation (Tab, Shift+Tab)
- Focus states visible
- ARIA labels present
- Color contrast (4.5:1)
- Screen reader compatible
- Bundle size check
- Load time measurement
- Animation FPS (60fps)
- Memory usage
- No console errors
- Chrome/Edge
- Firefox
- Safari
- Mobile browsers
- Component storybook
- Usage examples
- Design tokens documentation
- Migration guide
- Best practices guide
- Admin Dashboard
- Contract Analyzer
- Pricing Page
- Cases Page
- Drafts Page
- Summarizer Page
- Case Tracker Page
- CRM Page
- News Page
- Acts Page
- Notices Page
- Research Page
- Mobile responsiveness
- Dark mode
- Accessibility
- Performance
- Cross-browser
- Component storybook
- Usage examples
- Design tokens
- Migration guide
- Best practices
<div className="flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4">
<div>
<h1 className="text-premium-h1">Page Title</h1>
<p className="text-premium-body text-slate-600 dark:text-slate-400 mt-2">
Description
</p>
</div>
<PremiumButton size="lg">
<Plus className="h-4 w-4" />
Action
</PremiumButton>
</div><div className="grid grid-cols-2 lg:grid-cols-4 gap-4">
{stats.map((stat) => (
<StatCard
key={stat.label}
label={stat.label}
value={stat.value}
icon={stat.icon}
color="indigo"
trend={stat.trend}
/>
))}
</div><div className="grid grid-cols-1 lg:grid-cols-2 gap-6">
{items.map((item) => (
<PremiumCard key={item.id} title={item.title} hoverable>
{/* Content */}
</PremiumCard>
))}
</div>{loading ? (
<SkeletonLoader count={4} height="h-32" />
) : (
<div>Content</div>
)}<div className="flex gap-3">
<PremiumButton variant="primary">Primary</PremiumButton>
<PremiumButton variant="secondary">Secondary</PremiumButton>
<PremiumButton variant="ghost">Ghost</PremiumButton>
</div>❌ Don't: Mix old and new components
// Bad - mixing styles
<div className="bg-gray-100 rounded-2xl p-4">
<StatCard />
</div>✅ Do: Use PremiumCard wrapper
// Good - consistent
<PremiumCard>
<StatCard />
</PremiumCard>❌ Don't: Use random colors
// Bad
<div className="bg-blue-200 text-purple-600">✅ Do: Use design system colors
// Good
<StatCard color="indigo" />❌ Don't: Inconsistent spacing
// Bad
<div className="p-2 m-8 gap-3">✅ Do: Use spacing classes
// Good
<div className="space-premium-lg">For each page, verify:
- Components render without errors
- Dark mode works correctly
- Mobile responsive (< 768px)
- Tablet responsive (768px - 1024px)
- Desktop responsive (> 1024px)
- Hover states work
- Loading states work
- Accessibility (keyboard navigation)
- No console errors
- Build passes
- Bundle size: < 50KB (gzipped)
- Load time: < 2s (3G)
- Animation FPS: 60fps
- Lighthouse score: > 90
- Core Web Vitals: All green
| Phase | Task | Time | Status |
|---|---|---|---|
| 1 | Components | 1h | ✅ Complete |
| 2 | Admin Dashboard | 30m | ⏳ Next |
| 2 | Contract Analyzer | 30m | ⏳ Next |
| 2 | Pricing Page | 20m | ⏳ Next |
| 2 | Cases Page | 20m | ⏳ Next |
| 2 | Drafts Page | 20m | ⏳ Next |
| 2 | Summarizer Page | 20m | ⏳ Next |
| 2 | Case Tracker Page | 20m | ⏳ Next |
| 2 | CRM Page | 20m | ⏳ Next |
| 2 | News Page | 15m | ⏳ Next |
| 2 | Acts Page | 15m | ⏳ Next |
| 2 | Notices Page | 15m | ⏳ Next |
| 2 | Research Page | 15m | ⏳ Next |
| 3 | Testing & Polish | 1-2h | ⏳ Next |
| 4 | Documentation | 30m | ⏳ Next |
| Total | 5-6h |
✅ All pages use premium components
✅ Consistent Indigo color scheme
✅ Proper typography hierarchy
✅ 24-32px spacing between sections
✅ Hover elevation effects
✅ Dark mode support
✅ Mobile responsive
✅ WCAG AA accessible
✅ Build passing
✅ No console errors
- Start with Admin Dashboard (highest impact)
- Apply to Contract Analyzer (monetization feature)
- Apply to Pricing Page (customer-facing)
- Apply to remaining pages (in order of importance)
- Test thoroughly (mobile, dark mode, accessibility)
- Document (for future reference)
- Quick Reference:
PREMIUM_COMPONENTS_QUICK_REFERENCE.md - Implementation Guide:
PREMIUM_COMPONENTS_IMPLEMENTATION.md - Visual Guide:
COMPONENT_LIBRARY_VISUAL_GUIDE.md - Example:
src/app/dashboard/page.tsx
Phase 2 will transform the entire app to use premium components. Each page follows the same pattern:
- Import components
- Replace old cards with PremiumCard
- Replace old buttons with PremiumButton
- Replace old stats with StatCard
- Apply Indigo color scheme
- Improve typography
- Better spacing
Estimated time: 2-3 hours
Impact: High (entire app feels premium)
Difficulty: Low (repetitive, straightforward)
Last Updated: February 20, 2026