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
4.1 KiB
JSON

{"version":3,"pages404":true,"caseSensitive":false,"basePath":"","redirects":[{"source":"/:path+/","destination":"/:path+","internal":true,"statusCode":308,"regex":"^(?:/((?:[^/]+?)(?:/(?:[^/]+?))*))/$"}],"headers":[],"dynamicRoutes":[{"page":"/admin/artists/[id]","regex":"^/admin/artists/([^/]+?)(?:/)?$","routeKeys":{"nxtPid":"nxtPid"},"namedRegex":"^/admin/artists/(?<nxtPid>[^/]+?)(?:/)?$"},{"page":"/api/artists/[id]","regex":"^/api/artists/([^/]+?)(?:/)?$","routeKeys":{"nxtPid":"nxtPid"},"namedRegex":"^/api/artists/(?<nxtPid>[^/]+?)(?:/)?$"},{"page":"/api/auth/[...nextauth]","regex":"^/api/auth/(.+?)(?:/)?$","routeKeys":{"nxtPnextauth":"nxtPnextauth"},"namedRegex":"^/api/auth/(?<nxtPnextauth>.+?)(?:/)?$"},{"page":"/api/portfolio/[id]","regex":"^/api/portfolio/([^/]+?)(?:/)?$","routeKeys":{"nxtPid":"nxtPid"},"namedRegex":"^/api/portfolio/(?<nxtPid>[^/]+?)(?:/)?$"},{"page":"/artists/[id]","regex":"^/artists/([^/]+?)(?:/)?$","routeKeys":{"nxtPid":"nxtPid"},"namedRegex":"^/artists/(?<nxtPid>[^/]+?)(?:/)?$"},{"page":"/artists/[id]/book","regex":"^/artists/([^/]+?)/book(?:/)?$","routeKeys":{"nxtPid":"nxtPid"},"namedRegex":"^/artists/(?<nxtPid>[^/]+?)/book(?:/)?$"}],"staticRoutes":[{"page":"/","regex":"^/(?:/)?$","routeKeys":{},"namedRegex":"^/(?:/)?$"},{"page":"/_not-found","regex":"^/_not\\-found(?:/)?$","routeKeys":{},"namedRegex":"^/_not\\-found(?:/)?$"},{"page":"/admin","regex":"^/admin(?:/)?$","routeKeys":{},"namedRegex":"^/admin(?:/)?$"},{"page":"/admin/analytics","regex":"^/admin/analytics(?:/)?$","routeKeys":{},"namedRegex":"^/admin/analytics(?:/)?$"},{"page":"/admin/artists","regex":"^/admin/artists(?:/)?$","routeKeys":{},"namedRegex":"^/admin/artists(?:/)?$"},{"page":"/admin/artists/new","regex":"^/admin/artists/new(?:/)?$","routeKeys":{},"namedRegex":"^/admin/artists/new(?:/)?$"},{"page":"/admin/calendar","regex":"^/admin/calendar(?:/)?$","routeKeys":{},"namedRegex":"^/admin/calendar(?:/)?$"},{"page":"/admin/portfolio","regex":"^/admin/portfolio(?:/)?$","routeKeys":{},"namedRegex":"^/admin/portfolio(?:/)?$"},{"page":"/admin/settings","regex":"^/admin/settings(?:/)?$","routeKeys":{},"namedRegex":"^/admin/settings(?:/)?$"},{"page":"/admin/uploads","regex":"^/admin/uploads(?:/)?$","routeKeys":{},"namedRegex":"^/admin/uploads(?:/)?$"},{"page":"/aftercare","regex":"^/aftercare(?:/)?$","routeKeys":{},"namedRegex":"^/aftercare(?:/)?$"},{"page":"/artist-dashboard","regex":"^/artist\\-dashboard(?:/)?$","routeKeys":{},"namedRegex":"^/artist\\-dashboard(?:/)?$"},{"page":"/artist-dashboard/portfolio","regex":"^/artist\\-dashboard/portfolio(?:/)?$","routeKeys":{},"namedRegex":"^/artist\\-dashboard/portfolio(?:/)?$"},{"page":"/artist-dashboard/profile","regex":"^/artist\\-dashboard/profile(?:/)?$","routeKeys":{},"namedRegex":"^/artist\\-dashboard/profile(?:/)?$"},{"page":"/artists","regex":"^/artists(?:/)?$","routeKeys":{},"namedRegex":"^/artists(?:/)?$"},{"page":"/auth/error","regex":"^/auth/error(?:/)?$","routeKeys":{},"namedRegex":"^/auth/error(?:/)?$"},{"page":"/auth/signin","regex":"^/auth/signin(?:/)?$","routeKeys":{},"namedRegex":"^/auth/signin(?:/)?$"},{"page":"/book","regex":"^/book(?:/)?$","routeKeys":{},"namedRegex":"^/book(?:/)?$"},{"page":"/contact","regex":"^/contact(?:/)?$","routeKeys":{},"namedRegex":"^/contact(?:/)?$"},{"page":"/deposit","regex":"^/deposit(?:/)?$","routeKeys":{},"namedRegex":"^/deposit(?:/)?$"},{"page":"/favicon.ico","regex":"^/favicon\\.ico(?:/)?$","routeKeys":{},"namedRegex":"^/favicon\\.ico(?:/)?$"},{"page":"/gift-cards","regex":"^/gift\\-cards(?:/)?$","routeKeys":{},"namedRegex":"^/gift\\-cards(?:/)?$"},{"page":"/privacy","regex":"^/privacy(?:/)?$","routeKeys":{},"namedRegex":"^/privacy(?:/)?$"},{"page":"/specials","regex":"^/specials(?:/)?$","routeKeys":{},"namedRegex":"^/specials(?:/)?$"},{"page":"/terms","regex":"^/terms(?:/)?$","routeKeys":{},"namedRegex":"^/terms(?:/)?$"}],"dataRoutes":[],"rsc":{"header":"RSC","varyHeader":"RSC, Next-Router-State-Tree, Next-Router-Prefetch","prefetchHeader":"Next-Router-Prefetch","didPostponeHeader":"x-nextjs-postponed","contentTypeHeader":"text/x-component","suffix":".rsc","prefetchSuffix":".prefetch.rsc"},"rewrites":[]}