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

48 lines
2.5 KiB
JSON

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