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

32 lines
1.1 KiB
JSON

{
"version": 3,
"middleware": {
"/": {
"files": [
"server/edge-runtime-webpack.js",
"server/middleware.js"
],
"name": "middleware",
"page": "/",
"matchers": [
{
"regexp": "^(?:\\/(_next\\/data\\/[^/]{1,}))?(?:\\/((?!_next\\/static|_next\\/image|favicon.ico|public|.*\\.png$|.*\\.jpg$|.*\\.jpeg$|.*\\.gif$|.*\\.svg$).*))(.json)?[\\/#\\?]?$",
"originalSource": "/((?!_next/static|_next/image|favicon.ico|public|.*\\.png$|.*\\.jpg$|.*\\.jpeg$|.*\\.gif$|.*\\.svg$).*)"
}
],
"wasm": [],
"assets": [],
"env": {
"__NEXT_BUILD_ID": "SVr_7PUfBPR5HoMg6Gqfy",
"NEXT_SERVER_ACTIONS_ENCRYPTION_KEY": "eqMtY6RQJg8ZzpGru9Ni8jGmRicvhYvppy45/3SECqU=",
"__NEXT_PREVIEW_MODE_ID": "aa3e44cc5c2d8f61b9a7e308f9db0bf8",
"__NEXT_PREVIEW_MODE_ENCRYPTION_KEY": "e63b6be95276873929b9ec08e113ea325ced41c2d494b0a69b62991e4c3688ab",
"__NEXT_PREVIEW_MODE_SIGNING_KEY": "8aa982a30b271251dc2f1ffdd0eb252e3bc9e47f7d478e80f5dbb2abb1b39323"
}
}
},
"functions": {},
"sortedMiddleware": [
"/"
]
}