Files
pragma-stack/DEV_PAGES_QUICK_REFERENCE.md
Felipe Cardoso 68e28e4c76 Revert Zustand persist middleware approach and restore AuthInitializer
- Remove persist middleware from authStore (causing hooks timing issues)
- Restore original AuthInitializer component pattern
- Keep good Phase 3 optimizations:
  - Theme FOUC fix (inline script)
  - React Query refetchOnWindowFocus disabled
  - Code splitting for dev/auth components
  - Shared form components (FormField, useFormError)
  - Store location in lib/stores
2025-11-02 14:52:12 +01:00

353 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Dev Pages Quick Reference
## Visual Structure Comparison
### Hub & Docs Pages (Hero Pattern)
```
┌─────────────────────────────────────────┐
│ DevLayout Global Nav (sticky) │
├─────────────────────────────────────────┤
│ ┌───────────────────────────────────────┐│
│ │ HERO SECTION (gradient bg) ││
│ │ - Title ││
│ │ - Description ││
│ │ - CTA Buttons ││
│ └───────────────────────────────────────┘│
├─────────────────────────────────────────┤
│ MAIN CONTENT │
│ ┌─────────────────────────────────────┐ │
│ │ Section 1 (Grid Layout) │ │
│ └─────────────────────────────────────┘ │
│ ┌─────────────────────────────────────┐ │
│ │ Section 2 (Grid Layout) │ │
│ └─────────────────────────────────────┘ │
│ ┌─────────────────────────────────────┐ │
│ │ Section 3 (Grid Layout) │ │
│ └─────────────────────────────────────┘ │
└─────────────────────────────────────────┘
```
### Forms/Layouts/Spacing Pages (Header Pattern)
```
┌─────────────────────────────────────────┐
│ CUSTOM STICKY HEADER (hides global nav) │
│ [Back] | Title + Subtitle │
├─────────────────────────────────────────┤
│ MAIN CONTENT │
│ ┌─────────────────────────────────────┐ │
│ │ ExampleSection 1 │ │
│ │ - Title + Description │ │
│ │ - Example + Code tabs │ │
│ │ - BeforeAfter if needed │ │
│ └─────────────────────────────────────┘ │
│ ┌─────────────────────────────────────┐ │
│ │ ExampleSection 2 │ │
│ └─────────────────────────────────────┘ │
│ ... more sections ... │
├─────────────────────────────────────────┤
│ FOOTER │
│ [Learn more: Link to Doc] │
└─────────────────────────────────────────┘
```
### Components Page (Minimal Pattern)
```
┌─────────────────────────────────────────┐
│ DevLayout Global Nav (sticky) │
├─────────────────────────────────────────┤
│ ComponentShowcase (dynamically loaded) │
│ 787 lines of component examples │
└─────────────────────────────────────────┘
```
---
## Page Inventory
### Pages Analyzed
1. `/dev/page.tsx` - Design System Hub
2. `/dev/components/page.tsx` - Component Showcase
3. `/dev/forms/page.tsx` - Form Patterns
4. `/dev/layouts/page.tsx` - Layout Patterns
5. `/dev/spacing/page.tsx` - Spacing Patterns
6. `/dev/docs/page.tsx` - Documentation Hub
7. `/dev/docs/design-system/[...slug]/page.tsx` - Dynamic Doc Pages
---
## Key Findings
### What's Duplicated
- **Custom Sticky Headers** (40 lines × 3 pages = 120 lines)
- Forms page header
- Layouts page header
- Spacing page header
- **Custom Footers** (8 lines × 3 pages = 24 lines)
- Forms page footer
- Layouts page footer
- Spacing page footer
**Total Duplication: 144 lines**
### What's Missing
- Breadcrumb navigation (all pages)
- Consistent page titles (only hero/header based)
- Footers on half the pages
- Consistent component loading patterns
### What's Inconsistent
1. Header implementation (custom vs inherited)
2. Page title display (hero vs header vs frontmatter)
3. Footer presence (3 pages yes, 4 pages no)
4. Page wrapper structure (min-h-screen vs not)
5. Content padding (py-12 vs py-8)
6. 'use client' directive (Forms only)
7. Dynamic imports (Components & Spacing only)
---
## Component Architecture
### Current Dev Components
```
/src/components/dev/
├── DevLayout.tsx - Global layout wrapper (14KB)
├── Example.tsx - Example container with tabs (5KB)
├── BeforeAfter.tsx - Before/after comparison
├── CodeSnippet.tsx - Code syntax highlighting
└── ComponentShowcase.tsx - 787-line component gallery
```
### Proposed New Components
```
/src/components/dev/
├── DevPageHeader.tsx - Shared page header with back button
├── DevBreadcrumbs.tsx - Navigation breadcrumbs
├── DevPageFooter.tsx - Shared footer with doc links
├── DevPageLayout.tsx - Complete page wrapper
└── ExampleLoadingSkeleton.tsx - Consistent loading state
```
---
## Page Usage Matrix
### What Each Page Actually Has
```
Hub Comp Forms Layout Spacing Docs DocsDyn
'use client' · · ✓ · · · ·
Custom Header · · ✓ ✓ ✓ · ·
Back Button · · ✓ ✓ ✓ · ·
Page Title H · H H H H FM
Breadcrumbs · · · · · · ·
Hero Section ✓ · · · · ✓ ·
Footer · · ✓ ✓ ✓ · ·
ExampleSection · · ✓ ✓ ✓ · ·
BeforeAfter · · ✓ ✓ ✓ · ·
Dynamic Imports · ✓ · · ✓ · ·
Code Duplication Low Low High High High Low Low
Legend:
✓ = Has it
· = Doesn't have it
H = Hero section
FM = Frontmatter
```
### What Each Page Should Have (Target)
```
Hub Comp Forms Layout Spacing Docs DocsDyn
'use client' · · ✓ · · · ·
Custom Header · · ✗ ✗ ✗ · ·
Back Button · ✓ ✓ ✓ ✓ · ✓
Page Title H ✓ ✓ ✓ ✓ H FM
Breadcrumbs · ✓ ✓ ✓ ✓ · ✓
Hero Section ✓ · · · · ✓ ·
Footer FTR FTR ✓ ✓ ✓ FTR FTR
ExampleSection · · ✓ ✓ ✓ · ·
BeforeAfter · · ✓ ✓ ✓ · ·
Dynamic Imports · ✓ · · ✓ · ·
Code Duplication Red Red Green Green Green Red Red
Legend:
✓ = Add/Keep
✗ = Remove
FTR = Use footer component
Red = Needs attention
Green = Ready
```
---
## Implementation Roadmap
### Phase 1: Extract Components (1-2 hours)
1. Create `DevPageHeader.tsx` - shared header
2. Create `DevPageFooter.tsx` - shared footer
3. Create `DevPageLayout.tsx` - wrapper component
4. Create `DevBreadcrumbs.tsx` - breadcrumb nav
### Phase 2: Refactor Pages (2-3 hours)
1. Update Forms page - remove custom header, use DevPageLayout
2. Update Layouts page - remove custom header, use DevPageLayout
3. Update Spacing page - remove custom header, use DevPageLayout
4. Update Components page - add breadcrumbs & footer
### Phase 3: Enhance (1-2 hours)
1. Add breadcrumbs to all non-hub pages
2. Standardize dynamic imports
3. Add consistent loading skeletons
4. Update Hub/Docs footers
### Phase 4: Polish (30-60 min)
1. Add Table of Contents to long pages
2. Improve mobile responsiveness
3. Test navigation flow
4. Verify accessibility
**Total Effort: 4-8 hours**
---
## Code Examples
### Before (Duplicated Header)
```typescript
// /dev/forms/page.tsx
export default function FormsPage() {
return (
<div className="min-h-screen bg-background">
<header className="sticky top-0 z-50 w-full border-b bg-background/95">
<div className="container mx-auto flex h-16 items-center gap-4 px-4">
<Link href="/dev">
<Button variant="ghost" size="icon">
<ArrowLeft />
</Button>
</Link>
<div>
<h1 className="text-xl font-bold">Form Patterns</h1>
<p className="text-sm text-muted-foreground">
react-hook-form + Zod examples
</p>
</div>
</div>
</header>
<main>...</main>
<footer className="mt-16 border-t py-6">
<Link href="/dev/docs/design-system/06-forms">
Forms Documentation
</Link>
</footer>
</div>
);
}
```
### After (Using Components)
```typescript
// /dev/forms/page.tsx
import { DevPageLayout } from '@/components/dev/DevPageLayout';
import { ExampleSection } from '@/components/dev/Example';
export default function FormsPage() {
return (
<DevPageLayout
title="Form Patterns"
subtitle="react-hook-form + Zod examples"
breadcrumbs={[
{ label: 'Hub', href: '/dev' },
{ label: 'Forms' }
]}
footer={{
label: 'Forms Documentation',
href: '/dev/docs/design-system/06-forms'
}}
showBackButton
>
<div className="space-y-12">
<ExampleSection
title="Basic Form"
description="..."
>
{/* Content */}
</ExampleSection>
</div>
</DevPageLayout>
);
}
```
**Savings: 40 lines of code per page × 3 pages = 120 lines**
---
## Testing Checklist
After implementation:
- [ ] All pages display breadcrumbs (except Hub)
- [ ] All pages have page titles visible
- [ ] All pages have footers with doc links (or no links for hubs)
- [ ] Back button works on all detail pages
- [ ] Global nav is consistent across pages
- [ ] Mobile navigation works properly
- [ ] Dynamic imports show loading states
- [ ] No console errors or warnings
---
## Files to Create/Modify
### Create
- `src/components/dev/DevPageHeader.tsx` (NEW)
- `src/components/dev/DevBreadcrumbs.tsx` (NEW)
- `src/components/dev/DevPageFooter.tsx` (NEW)
- `src/components/dev/DevPageLayout.tsx` (NEW)
### Modify
- `src/app/dev/components/page.tsx`
- `src/app/dev/forms/page.tsx`
- `src/app/dev/layouts/page.tsx`
- `src/app/dev/spacing/page.tsx`
- `src/app/dev/page.tsx` (footer)
- `src/app/dev/docs/page.tsx` (footer)
- `src/app/dev/docs/design-system/[...slug]/page.tsx` (footer)
### Keep As-Is
- `src/app/dev/layout.tsx`
- `src/components/dev/DevLayout.tsx`
- `src/components/dev/Example.tsx`
- `src/components/dev/BeforeAfter.tsx`
- `src/components/dev/CodeSnippet.tsx`
- `src/components/dev/ComponentShowcase.tsx`
---
## Metrics
### Code Duplication
- **Current:** 144 lines duplicated
- **After:** 0 lines duplicated
### File Complexity
- **Current:** 7 pages with inconsistent patterns
- **After:** 7 pages with consistent patterns
### Component Count
- **Current:** 6 components
- **After:** 10 components (adding 4 reusable pieces)
### Bundle Size Impact
- **Estimate:** +2-3KB for new components
- **Offset by:** Removing 144 lines of duplicated code
---
## Related Documentation
For more details, see:
- `/workdrive/workspace/Projects/HomeLab/fast-next-template/DEV_PAGES_STRUCTURE_ANALYSIS.md` - Full technical analysis
- `/workdrive/workspace/Projects/HomeLab/fast-next-template/frontend/docs/design-system/` - Design system docs
- `/workdrive/workspace/Projects/HomeLab/fast-next-template/CLAUDE.md` - Project guidelines