united-tattoo/.open-next/server-functions/default/.next/app-path-routes-manifest.json
Nicholai 1378bff909 updated the following components to use the API instead of hardcoded data:
### 1. __artists-grid.tsx__ (Main Artist Browsing)

- Uses  hook from
- Fetches from  endpoint
- Includes loading states, error handling, and filtering
- __Impact:__ Primary artist browsing experience now fully API-driven

### 2. __artist-portfolio.tsx__ (Individual Artist Pages)

- Uses  hook
- Fetches from  endpoint
- Fixed all TypeScript errors (changed image ID from number to string)
- Added loading/error states
- __Impact:__ Artist detail pages now fully API-driven

### 3. __booking-form.tsx__ (Artist Selection Dropdown)

- Uses  hook for artist selection
- Updated to use API data structure ( array, , etc.)
- Added loading state for dropdown
- __Impact:__ Booking flow now uses real artist data

## ⚠️ REMAINING (Decorative/Marketing Components)

Two complex components still use hardcoded :

### 4. __artists-section.tsx__ (Homepage Hero - 348 lines)

- Homepage marketing section with complex parallax scrolling
- Uses hardcoded artist data for visual cards
- __Non-blocking:__ This is a decorative homepage element

### 5. __artists-page-section.tsx__ (Artists Page Section - 413 lines)

- Full-page artists showcase with parallax effects
- Uses hardcoded artist data for visual layout
- __Non-blocking:__ Alternative to artists-grid.tsx (which IS using API)

##
2025-10-06 04:44:08 -06:00

1 line
1.8 KiB
JSON

{"/_not-found/page":"/_not-found","/aftercare/page":"/aftercare","/api/admin/migrate/route":"/api/admin/migrate","/api/auth/[...nextauth]/route":"/api/auth/[...nextauth]","/artists/[id]/book/page":"/artists/[id]/book","/artists/page":"/artists","/auth/error/page":"/auth/error","/book/page":"/book","/artists/[id]/page":"/artists/[id]","/deposit/page":"/deposit","/contact/page":"/contact","/auth/signin/page":"/auth/signin","/favicon.ico/route":"/favicon.ico","/gift-cards/page":"/gift-cards","/page":"/","/privacy/page":"/privacy","/terms/page":"/terms","/specials/page":"/specials","/api/admin/stats/route":"/api/admin/stats","/api/artists/[id]/route":"/api/artists/[id]","/api/files/bulk-delete/route":"/api/files/bulk-delete","/api/appointments/route":"/api/appointments","/api/artists/me/route":"/api/artists/me","/api/files/folder/route":"/api/files/folder","/api/artists/route":"/api/artists","/api/files/stats/route":"/api/files/stats","/api/files/route":"/api/files","/api/portfolio/route":"/api/portfolio","/api/portfolio/bulk-delete/route":"/api/portfolio/bulk-delete","/api/portfolio/stats/route":"/api/portfolio/stats","/api/portfolio/[id]/route":"/api/portfolio/[id]","/api/users/route":"/api/users","/api/settings/route":"/api/settings","/api/upload/route":"/api/upload","/admin/artists/[id]/page":"/admin/artists/[id]","/admin/artists/new/page":"/admin/artists/new","/admin/artists/page":"/admin/artists","/admin/calendar/page":"/admin/calendar","/admin/page":"/admin","/artist-dashboard/page":"/artist-dashboard","/artist-dashboard/portfolio/page":"/artist-dashboard/portfolio","/admin/uploads/page":"/admin/uploads","/admin/settings/page":"/admin/settings","/admin/portfolio/page":"/admin/portfolio","/admin/analytics/page":"/admin/analytics","/artist-dashboard/profile/page":"/artist-dashboard/profile"}