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

13 lines
12 KiB
JavaScript

(()=>{var e={};e.id=7409,e.ids=[7409],e.modules={72934:e=>{"use strict";e.exports=require("next/dist/client/components/action-async-storage.external.js")},54580:e=>{"use strict";e.exports=require("next/dist/client/components/request-async-storage.external.js")},45869:e=>{"use strict";e.exports=require("next/dist/client/components/static-generation-async-storage.external.js")},20399:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},55315:e=>{"use strict";e.exports=require("path")},17360:e=>{"use strict";e.exports=require("url")},69353:(e,t,r)=>{"use strict";r.r(t),r.d(t,{GlobalError:()=>s.a,__next_app__:()=>f,originalPathname:()=>c,pages:()=>u,routeModule:()=>p,tree:()=>d}),r(90996),r(70546),r(40656),r(40509);var n=r(30170),o=r(45002),i=r(83876),s=r.n(i),l=r(66299),a={};for(let e in l)0>["default","tree","pages","GlobalError","originalPathname","__next_app__","routeModule"].indexOf(e)&&(a[e]=()=>l[e]);r.d(t,a);let d=["",{children:["/_not-found",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(r.bind(r,70546)),"/home/Nicholai/Documents/Dev/united_v03/united-tattoo/united-tattoo/app/not-found.tsx"]}]},{}]},{layout:[()=>Promise.resolve().then(r.bind(r,40656)),"/home/Nicholai/Documents/Dev/united_v03/united-tattoo/united-tattoo/app/layout.tsx"],error:[()=>Promise.resolve().then(r.bind(r,40509)),"/home/Nicholai/Documents/Dev/united_v03/united-tattoo/united-tattoo/app/error.tsx"],"not-found":[()=>Promise.resolve().then(r.bind(r,70546)),"/home/Nicholai/Documents/Dev/united_v03/united-tattoo/united-tattoo/app/not-found.tsx"],metadata:{icon:[async e=>(await Promise.resolve().then(r.bind(r,57481))).default(e)],apple:[],openGraph:[],twitter:[],manifest:void 0}}],u=[],c="/_not-found/page",f={require:r,loadChunk:()=>Promise.resolve()},p=new n.AppPageRouteModule({definition:{kind:o.x.APP_PAGE,page:"/_not-found/page",pathname:"/_not-found",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:d}})},85897:(e,t,r)=>{Promise.resolve().then(r.bind(r,36797)),Promise.resolve().then(r.t.bind(r,35268,23))},403:(e,t,r)=>{Promise.resolve().then(r.bind(r,54528))},15784:(e,t,r)=>{Promise.resolve().then(r.bind(r,37614))},36033:(e,t,r)=>{Promise.resolve().then(r.t.bind(r,63642,23)),Promise.resolve().then(r.t.bind(r,87586,23)),Promise.resolve().then(r.t.bind(r,47838,23)),Promise.resolve().then(r.t.bind(r,58057,23)),Promise.resolve().then(r.t.bind(r,77741,23)),Promise.resolve().then(r.t.bind(r,13118,23))},35303:()=>{},36797:(e,t,r)=>{"use strict";r.d(t,{default:()=>m});var n=r(97247),o=r(19898),i=r(58797),s=r(41755),l=r(36634),a=r(28964),d=r(58579),u=r(76950),c=r(57797),f=r(17818);let p=({...e})=>{let{theme:t="system"}=(0,c.F)();return n.jsx(f.x7,{theme:t,className:"toaster group",style:{"--normal-bg":"var(--popover)","--normal-text":"var(--popover-foreground)","--normal-border":"var(--border)"},...e})};function h({children:e,...t}){return n.jsx(c.f,{...t,children:e})}function m({children:e,initialFlags:t}){let[r]=(0,a.useState)(()=>new i.S({defaultOptions:{queries:{staleTime:6e4,retry:(e,t)=>{if("object"==typeof t&&null!==t&&"status"in t){let e=t.status;if("number"==typeof e&&e>=400&&e<500)return!1}return e<3}}}}));return n.jsx(o.SessionProvider,{children:(0,n.jsxs)(s.aH,{client:r,children:[n.jsx(d.OH,{value:t,children:n.jsx(h,{attribute:"class",defaultTheme:"dark",enableSystem:!1,children:n.jsx(a.Suspense,{fallback:n.jsx("div",{children:"Loading..."}),children:(0,n.jsxs)(u.LenisProvider,{children:[e,n.jsx(p,{})]})})})}),n.jsx(l.t,{initialIsOpen:!1})]})})}r(4047)},54528:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o});var n=r(97247);function o({error:e,reset:t}){return n.jsx("div",{className:"min-h-[50vh] flex items-center justify-center p-8",children:(0,n.jsxs)("div",{className:"text-center space-y-3",children:[n.jsx("h2",{className:"text-xl font-semibold",children:"Something went wrong"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:e?.message||"An unexpected error occurred."}),n.jsx("button",{onClick:()=>t(),className:"inline-flex items-center rounded-md border px-3 py-1.5 text-sm hover:bg-accent",children:"Try again"})]})})}r(28964)},37614:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o});var n=r(97247);function o(){return n.jsx("div",{className:"min-h-[50vh] flex items-center justify-center p-8",children:(0,n.jsxs)("div",{className:"text-center space-y-3",children:[n.jsx("h2",{className:"text-xl font-semibold",children:"404 - Page Not Found"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"The page you are looking for does not exist or has been moved."}),n.jsx("a",{href:"/",className:"inline-flex items-center rounded-md border px-3 py-1.5 text-sm hover:bg-accent",children:"Go home"})]})})}},58579:(e,t,r)=>{"use strict";r.d(t,{OH:()=>f,ye:()=>p});var n=r(97247),o=r(28964);let i=Object.freeze({ADMIN_ENABLED:!0,ARTISTS_MODULE_ENABLED:!0,UPLOADS_ADMIN_ENABLED:!0,BOOKING_ENABLED:!0,PUBLIC_APPOINTMENT_REQUESTS_ENABLED:!1,REFERENCE_UPLOADS_PUBLIC_ENABLED:!1,DEPOSITS_ENABLED:!1,PUBLIC_DB_ARTISTS_ENABLED:!1,ADVANCED_NAV_SCROLL_ANIMATIONS_ENABLED:!0,STRICT_CI_GATES_ENABLED:!0,ISR_CACHE_R2_ENABLED:!0}),s=Object.keys(i),l=new Set(s),a=new Set,d=null;function u(e={}){if(e.refresh&&(d=null),d)return d;let t=function(){let e={};for(let t of s){let r=function(e){let t=function(){if("undefined"!=typeof globalThis)return globalThis.__UNITED_TATTOO_RUNTIME_FLAGS__}();return t&&void 0!==t[e]?t[e]:"undefined"!=typeof process&&process.env&&void 0!==process.env[e]?process.env[e]:void 0}(t),n=function(e,t){if("boolean"==typeof e)return e;if("string"==typeof e){let t=e.trim().toLowerCase();if("true"===t||"1"===t)return!0;if("false"===t||"0"===t)return!1}return t}(r,i[t]);null!=r&&("string"!=typeof r||""!==r.trim())||a.has(t)||(a.add(t),"undefined"!=typeof console&&console.warn(`[flags] ${t} not provided; defaulting to ${n}. Set env var to override.`)),e[t]=n}return Object.freeze(e)}();return d=t,t}new Proxy({},{get:(e,t)=>{if(l.has(t))return u()[t]},ownKeys:()=>s,getOwnPropertyDescriptor:(e,t)=>{if(l.has(t))return{configurable:!0,enumerable:!0,value:u()[t]}}});let c=(0,o.createContext)(i);function f({value:e,children:t}){return n.jsx(c.Provider,{value:e,children:t})}function p(e){return(0,o.useContext)(c)[e]}},76950:(e,t,r)=>{"use strict";r.d(t,{L:()=>s,LenisProvider:()=>l});var n=r(97247),o=r(28964);let i=(0,o.createContext)(void 0);function s(){let e=(0,o.useContext)(i);if(void 0===e)throw Error("useLenis must be used within a LenisProvider");return e.lenis}function l({children:e}){let[t,r]=(0,o.useState)(null);return n.jsx(i.Provider,{value:{lenis:t},children:e})}},40509:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});let n=(0,r(45347).createProxy)(String.raw`/home/Nicholai/Documents/Dev/united_v03/united-tattoo/united-tattoo/app/error.tsx#default`)},40656:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>h,dynamic:()=>p,metadata:()=>f});var n=r(72051),o=r(54233),i=r.n(o),s=r(73372),l=r.n(s),a=r(26269),d=r(98252);let u=(0,r(45347).createProxy)(String.raw`/home/Nicholai/Documents/Dev/united_v03/united-tattoo/united-tattoo/app/ClientLayout.tsx#default`);var c=r(93470);r(67272);let f={title:"United Tattoo - Professional Tattoo Studio",description:"Book appointments with our talented artists and explore stunning tattoo portfolios at United Tattoo."},p="force-dynamic";function h({children:e}){let t=(0,c.L6)({refresh:!0});return(0,n.jsxs)("html",{lang:"en",className:`${i().variable} ${l().variable}`,children:[n.jsx("head",{children:n.jsx(d.default,{id:"design-credit",strategy:"afterInteractive",children:`(function(){
if (typeof window !== 'undefined' && window.console && !window.__UNITED_TATTOO_CREDIT_DONE) {
window.__UNITED_TATTOO_CREDIT_DONE = true;
var lines = [
"╔══════════════════════════════════════════════════════════════════════╗",
"║ Website designed and developed by Nicholai Vogel for Christy Lumberg ║",
"║ NO MIDDLEMEN | NO INTERMEDIARIES | VERIFIED OWNERSHIP ║",
"║ \xa9 2025 Christy Lumberg — ALL RIGHTS RESERVED ║",
"╚══════════════════════════════════════════════════════════════════════╝"
];
console.log(lines.join("\\n"));
}
})();`})}),n.jsx("body",{className:"font-sans antialiased",children:n.jsx(a.Suspense,{fallback:null,children:n.jsx(u,{initialFlags:t,children:e})})})]})}},70546:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});let n=(0,r(45347).createProxy)(String.raw`/home/Nicholai/Documents/Dev/united_v03/united-tattoo/united-tattoo/app/not-found.tsx#default`)},93470:(e,t,r)=>{"use strict";r.d(t,{L6:()=>a,vU:()=>d});let n=Object.freeze({ADMIN_ENABLED:!0,ARTISTS_MODULE_ENABLED:!0,UPLOADS_ADMIN_ENABLED:!0,BOOKING_ENABLED:!0,PUBLIC_APPOINTMENT_REQUESTS_ENABLED:!1,REFERENCE_UPLOADS_PUBLIC_ENABLED:!1,DEPOSITS_ENABLED:!1,PUBLIC_DB_ARTISTS_ENABLED:!1,ADVANCED_NAV_SCROLL_ANIMATIONS_ENABLED:!0,STRICT_CI_GATES_ENABLED:!0,ISR_CACHE_R2_ENABLED:!0}),o=Object.keys(n),i=new Set(o),s=new Set,l=null;function a(e={}){if(e.refresh&&(l=null),l)return l;let t=function(){let e={};for(let t of o){let r=function(e){let t=function(){if("undefined"!=typeof globalThis)return globalThis.__UNITED_TATTOO_RUNTIME_FLAGS__}();return t&&void 0!==t[e]?t[e]:"undefined"!=typeof process&&process.env&&void 0!==process.env[e]?process.env[e]:void 0}(t),o=function(e,t){if("boolean"==typeof e)return e;if("string"==typeof e){let t=e.trim().toLowerCase();if("true"===t||"1"===t)return!0;if("false"===t||"0"===t)return!1}return t}(r,n[t]);null!=r&&("string"!=typeof r||""!==r.trim())||s.has(t)||(s.add(t),"undefined"!=typeof console&&console.warn(`[flags] ${t} not provided; defaulting to ${o}. Set env var to override.`)),e[t]=o}return Object.freeze(e)}();return l=t,t}let d=new Proxy({},{get:(e,t)=>{if(i.has(t))return a()[t]},ownKeys:()=>o,getOwnPropertyDescriptor:(e,t)=>{if(i.has(t))return{configurable:!0,enumerable:!0,value:a()[t]}}})},90996:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return i}}),r(6484);let n=r(72051);r(26269);let o={error:{fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},desc:{display:"inline-block"},h1:{display:"inline-block",margin:"0 20px 0 0",padding:"0 23px 0 0",fontSize:24,fontWeight:500,verticalAlign:"top",lineHeight:"49px"},h2:{fontSize:14,fontWeight:400,lineHeight:"49px",margin:0}};function i(){return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("title",{children:"404: This page could not be found."}),(0,n.jsx)("div",{style:o.error,children:(0,n.jsxs)("div",{children:[(0,n.jsx)("style",{dangerouslySetInnerHTML:{__html:"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}),(0,n.jsx)("h1",{className:"next-error-h1",style:o.h1,children:"404"}),(0,n.jsx)("div",{style:o.desc,children:(0,n.jsx)("h2",{style:o.h2,children:"This page could not be found."})})]})})]})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},54203:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ReflectAdapter",{enumerable:!0,get:function(){return r}});class r{static get(e,t,r){let n=Reflect.get(e,t,r);return"function"==typeof n?n.bind(e):n}static set(e,t,r,n){return Reflect.set(e,t,r,n)}static has(e,t){return Reflect.has(e,t)}static deleteProperty(e,t){return Reflect.deleteProperty(e,t)}}},57481:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o});var n=r(54564);let o=e=>[{type:"image/x-icon",sizes:"16x16",url:(0,n.fillMetadataSegment)(".",e.params,"favicon.ico")+""}]},67272:()=>{},4047:()=>{},6484:(e,t,r)=>{"use strict";function n(e){return e&&e.__esModule?e:{default:e}}r.r(t),r.d(t,{_:()=>n,_interop_require_default:()=>n})}};var t=require("../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),n=t.X(0,[9379,1488],()=>r(69353));module.exports=n})();