Some checks failed
CI / build-and-test (pull_request) Has been cancelled
### 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)
##
1 line
30 KiB
JavaScript
1 line
30 KiB
JavaScript
exports.id=4012,exports.ids=[4012],exports.modules={21007:(e,t,s)=>{Promise.resolve().then(s.bind(s,25883)),Promise.resolve().then(s.bind(s,66696)),Promise.resolve().then(s.bind(s,72852))},35303:()=>{},25883:(e,t,s)=>{"use strict";s.d(t,{BookingForm:()=>Z});var a=s(97247),r=s(28964),i=s(58053),n=s(27757),l=s(6274),d=s(30938),o=s(67636),c=s(62513),m=s(97154),u=s(42420),x=s(25008);function h({className:e,classNames:t,showOutsideDays:s=!0,captionLayout:r="label",buttonVariant:n="ghost",formatters:l,components:h,...g}){let f=(0,m.U)();return a.jsx(u._,{showOutsideDays:s,className:(0,x.cn)("bg-background group/calendar p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent",String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,e),captionLayout:r,formatters:{formatMonthDropdown:e=>e.toLocaleString("default",{month:"short"}),...l},classNames:{root:(0,x.cn)("w-fit",f.root),months:(0,x.cn)("flex gap-4 flex-col md:flex-row relative",f.months),month:(0,x.cn)("flex flex-col w-full gap-4",f.month),nav:(0,x.cn)("flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between",f.nav),button_previous:(0,x.cn)((0,i.d)({variant:n}),"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none",f.button_previous),button_next:(0,x.cn)((0,i.d)({variant:n}),"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none",f.button_next),month_caption:(0,x.cn)("flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)",f.month_caption),dropdowns:(0,x.cn)("w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5",f.dropdowns),dropdown_root:(0,x.cn)("relative has-focus:border-ring border border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] rounded-md",f.dropdown_root),dropdown:(0,x.cn)("absolute bg-popover inset-0 opacity-0",f.dropdown),caption_label:(0,x.cn)("select-none font-medium","label"===r?"text-sm":"rounded-md pl-2 pr-1 flex items-center gap-1 text-sm h-8 [&>svg]:text-muted-foreground [&>svg]:size-3.5",f.caption_label),table:"w-full border-collapse",weekdays:(0,x.cn)("flex",f.weekdays),weekday:(0,x.cn)("text-muted-foreground rounded-md flex-1 font-normal text-[0.8rem] select-none",f.weekday),week:(0,x.cn)("flex w-full mt-2",f.week),week_number_header:(0,x.cn)("select-none w-(--cell-size)",f.week_number_header),week_number:(0,x.cn)("text-[0.8rem] select-none text-muted-foreground",f.week_number),day:(0,x.cn)("relative w-full h-full p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md group/day aspect-square select-none",f.day),range_start:(0,x.cn)("rounded-l-md bg-accent",f.range_start),range_middle:(0,x.cn)("rounded-none",f.range_middle),range_end:(0,x.cn)("rounded-r-md bg-accent",f.range_end),today:(0,x.cn)("bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none",f.today),outside:(0,x.cn)("text-muted-foreground aria-selected:text-muted-foreground",f.outside),disabled:(0,x.cn)("text-muted-foreground opacity-50",f.disabled),hidden:(0,x.cn)("invisible",f.hidden),...t},components:{Root:({className:e,rootRef:t,...s})=>a.jsx("div",{"data-slot":"calendar",ref:t,className:(0,x.cn)(e),...s}),Chevron:({className:e,orientation:t,...s})=>"left"===t?a.jsx(d.Z,{className:(0,x.cn)("size-4",e),...s}):"right"===t?a.jsx(o.Z,{className:(0,x.cn)("size-4",e),...s}):a.jsx(c.Z,{className:(0,x.cn)("size-4",e),...s}),DayButton:p,WeekNumber:({children:e,...t})=>a.jsx("td",{...t,children:a.jsx("div",{className:"flex size-(--cell-size) items-center justify-center text-center",children:e})}),...h},...g})}function p({className:e,day:t,modifiers:s,...n}){let l=(0,m.U)(),d=r.useRef(null);return r.useEffect(()=>{s.focused&&d.current?.focus()},[s.focused]),a.jsx(i.z,{ref:d,variant:"ghost",size:"icon","data-day":t.date.toLocaleDateString(),"data-selected-single":s.selected&&!s.range_start&&!s.range_end&&!s.range_middle,"data-range-start":s.range_start,"data-range-end":s.range_end,"data-range-middle":s.range_middle,className:(0,x.cn)("data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 dark:hover:text-accent-foreground flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md [&>span]:text-xs [&>span]:opacity-70",l.day,e),...n})}var g=s(68317);function f({...e}){return a.jsx(g.fC,{"data-slot":"popover",...e})}function j({...e}){return a.jsx(g.xz,{"data-slot":"popover-trigger",...e})}function b({className:e,align:t="center",sideOffset:s=4,...r}){return a.jsx(g.h_,{children:a.jsx(g.VY,{"data-slot":"popover-content",align:t,sideOffset:s,className:(0,x.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden",e),...r})})}var v=s(94049),N=s(70170),y=s(44494),w=s(58579),k=s(48407),z=s(5271),_=s(50820),P=s(8749),D=s(90526),S=s(93587),T=s(61517),C=s(79906);let q=["10:00 AM","11:00 AM","12:00 PM","1:00 PM","2:00 PM","3:00 PM","4:00 PM","5:00 PM","6:00 PM"],I=[{size:"Small (2-4 inches)",duration:"1-2 hours",price:"150-300"},{size:"Medium (4-6 inches)",duration:"2-4 hours",price:"300-600"},{size:"Large (6+ inches)",duration:"4-6 hours",price:"600-1000"},{size:"Full Session",duration:"6-8 hours",price:"1000-1500"}];function Z({artistId:e}){let[t,s]=(0,r.useState)(1),[d,o]=(0,r.useState)(),{data:c,isLoading:m}=(0,k.qI)({limit:50}),[u,x]=(0,r.useState)({firstName:"",lastName:"",email:"",phone:"",age:"",artistId:e||"",preferredDate:"",preferredTime:"",alternateDate:"",alternateTime:"",tattooDescription:"",tattooSize:"",placement:"",isFirstTattoo:!1,hasAllergies:!1,allergyDetails:"",referenceImages:"",specialRequests:"",depositAmount:100,agreeToTerms:!1,agreeToDeposit:!1}),p=c?.find(e=>e.slug===u.artistId),g=I.find(e=>e.size===u.tattooSize),Z=(0,w.ye)("BOOKING_ENABLED"),A=(e,t)=>{x(s=>({...s,[e]:t}))};return a.jsx("div",{className:"container mx-auto px-4 py-8",children:(0,a.jsxs)("div",{className:"max-w-4xl mx-auto",children:[(0,a.jsxs)("div",{className:"text-center mb-8",children:[a.jsx("h1",{className:"font-playfair text-4xl md:text-5xl font-bold mb-4",children:"Book Your Appointment"}),a.jsx("p",{className:"text-lg text-muted-foreground",children:"Let's create something amazing together. Fill out the form below to schedule your tattoo session."})]}),a.jsx("div",{className:"flex justify-center mb-8",children:a.jsx("div",{className:"flex items-center space-x-4",children:[1,2,3,4].map(e=>(0,a.jsxs)("div",{className:"flex items-center",children:[a.jsx("div",{className:`w-8 h-8 rounded-full flex items-center justify-center text-sm font-medium ${t>=e?"bg-primary text-primary-foreground":"bg-muted text-muted-foreground"}`,children:e}),e<4&&a.jsx("div",{className:`w-12 h-0.5 mx-2 ${t>e?"bg-primary":"bg-muted"}`})]},e))})}),!Z&&(0,a.jsxs)("div",{className:"mb-6 text-center text-sm",role:"status","aria-live":"polite",children:["Online booking is temporarily unavailable. Please"," ",a.jsx(C.default,{href:"/contact",className:"underline",children:"contact the studio"}),"."]}),(0,a.jsxs)("form",{onSubmit:e=>{e.preventDefault(),Z&&console.log("Booking submitted:",u)},children:[1===t&&(0,a.jsxs)(n.Zb,{children:[a.jsx(n.Ol,{children:(0,a.jsxs)(n.ll,{className:"flex items-center space-x-2",children:[a.jsx(z.Z,{className:"w-5 h-5"}),a.jsx("span",{children:"Personal Information"})]})}),(0,a.jsxs)(n.aY,{className:"space-y-6",children:[(0,a.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,a.jsxs)("div",{children:[a.jsx("label",{className:"block text-sm font-medium mb-2",children:"First Name *"}),a.jsx(N.I,{value:u.firstName,onChange:e=>A("firstName",e.target.value),required:!0})]}),(0,a.jsxs)("div",{children:[a.jsx("label",{className:"block text-sm font-medium mb-2",children:"Last Name *"}),a.jsx(N.I,{value:u.lastName,onChange:e=>A("lastName",e.target.value),required:!0})]})]}),(0,a.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,a.jsxs)("div",{children:[a.jsx("label",{className:"block text-sm font-medium mb-2",children:"Email *"}),a.jsx(N.I,{type:"email",value:u.email,onChange:e=>A("email",e.target.value),required:!0})]}),(0,a.jsxs)("div",{children:[a.jsx("label",{className:"block text-sm font-medium mb-2",children:"Phone *"}),a.jsx(N.I,{type:"tel",value:u.phone,onChange:e=>A("phone",e.target.value),required:!0})]})]}),a.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:(0,a.jsxs)("div",{children:[a.jsx("label",{className:"block text-sm font-medium mb-2",children:"Age *"}),a.jsx(N.I,{type:"number",min:"18",value:u.age,onChange:e=>A("age",e.target.value),required:!0}),a.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"Must be 18 or older"})]})}),(0,a.jsxs)("div",{className:"flex items-center space-x-2",children:[a.jsx(l.X,{id:"firstTattoo",checked:u.isFirstTattoo,onCheckedChange:e=>A("isFirstTattoo",e)}),a.jsx("label",{htmlFor:"firstTattoo",className:"text-sm",children:"This is my first tattoo"})]}),(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"flex items-center space-x-2",children:[a.jsx(l.X,{id:"allergies",checked:u.hasAllergies,onCheckedChange:e=>A("hasAllergies",e)}),a.jsx("label",{htmlFor:"allergies",className:"text-sm",children:"I have allergies or medical conditions"})]}),u.hasAllergies&&(0,a.jsxs)("div",{children:[a.jsx("label",{className:"block text-sm font-medium mb-2",children:"Please specify:"}),a.jsx(y.g,{value:u.allergyDetails,onChange:e=>A("allergyDetails",e.target.value),placeholder:"Please describe any allergies, medical conditions, or medications..."})]})]})]})]}),2===t&&(0,a.jsxs)(n.Zb,{children:[a.jsx(n.Ol,{children:(0,a.jsxs)(n.ll,{className:"flex items-center space-x-2",children:[a.jsx(_.Z,{className:"w-5 h-5"}),a.jsx("span",{children:"Artist & Scheduling"})]})}),(0,a.jsxs)(n.aY,{className:"space-y-6",children:[(0,a.jsxs)("div",{children:[a.jsx("label",{className:"block text-sm font-medium mb-2",children:"Select Artist *"}),(0,a.jsxs)(v.Ph,{value:u.artistId,onValueChange:e=>A("artistId",e),disabled:m,children:[a.jsx(v.i4,{children:a.jsx(v.ki,{placeholder:m?"Loading artists...":"Choose your preferred artist"})}),a.jsx(v.Bw,{children:m?(0,a.jsxs)("div",{className:"flex items-center justify-center p-4",children:[a.jsx(P.Z,{className:"w-4 h-4 animate-spin mr-2"}),a.jsx("span",{className:"text-sm text-muted-foreground",children:"Loading..."})]}):c&&c.length>0?c.map(e=>a.jsx(v.Ql,{value:e.slug,children:a.jsx("div",{className:"flex items-center justify-between w-full",children:(0,a.jsxs)("div",{children:[a.jsx("p",{className:"font-medium",children:e.name}),a.jsx("p",{className:"text-sm text-muted-foreground",children:e.specialties.join(", ")})]})})},e.slug)):a.jsx("div",{className:"p-4 text-sm text-muted-foreground text-center",children:"No artists available"})})]})]}),p&&(0,a.jsxs)("div",{className:"p-4 bg-muted/50 rounded-lg",children:[a.jsx("h4",{className:"font-medium mb-2",children:p.name}),a.jsx("p",{className:"text-sm text-muted-foreground mb-2",children:p.specialties.join(", ")}),p.hourlyRate&&(0,a.jsxs)("p",{className:"text-sm",children:["Starting rate: ",(0,a.jsxs)("span",{className:"font-medium",children:["$",p.hourlyRate,"/hr"]})]})]}),(0,a.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[(0,a.jsxs)("div",{children:[a.jsx("label",{className:"block text-sm font-medium mb-2",children:"Preferred Date *"}),(0,a.jsxs)(f,{children:[a.jsx(j,{asChild:!0,children:(0,a.jsxs)(i.z,{variant:"outline",className:"w-full justify-start text-left font-normal bg-transparent",children:[a.jsx(_.Z,{className:"mr-2 h-4 w-4"}),d?(0,T.WU)(d,"PPP"):"Pick a date"]})}),a.jsx(b,{className:"w-auto p-0",children:a.jsx(h,{mode:"single",selected:d,onSelect:o,initialFocus:!0,disabled:e=>e<new Date||0===e.getDay()})})]})]}),(0,a.jsxs)("div",{children:[a.jsx("label",{className:"block text-sm font-medium mb-2",children:"Preferred Time *"}),(0,a.jsxs)(v.Ph,{value:u.preferredTime,onValueChange:e=>A("preferredTime",e),children:[a.jsx(v.i4,{children:a.jsx(v.ki,{placeholder:"Select time"})}),a.jsx(v.Bw,{children:q.map(e=>a.jsx(v.Ql,{value:e,children:e},e))})]})]})]}),(0,a.jsxs)("div",{className:"p-4 bg-blue-50 rounded-lg",children:[a.jsx("h4",{className:"font-medium mb-2 text-blue-900",children:"Alternative Date & Time"}),a.jsx("p",{className:"text-sm text-blue-700 mb-4",children:"Please provide an alternative in case your preferred slot is unavailable."}),(0,a.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,a.jsxs)("div",{children:[a.jsx("label",{className:"block text-sm font-medium mb-2",children:"Alternative Date"}),a.jsx(N.I,{type:"date",value:u.alternateDate,onChange:e=>A("alternateDate",e.target.value),min:new Date().toISOString().split("T")[0]})]}),(0,a.jsxs)("div",{children:[a.jsx("label",{className:"block text-sm font-medium mb-2",children:"Alternative Time"}),(0,a.jsxs)(v.Ph,{value:u.alternateTime,onValueChange:e=>A("alternateTime",e),children:[a.jsx(v.i4,{children:a.jsx(v.ki,{placeholder:"Select time"})}),a.jsx(v.Bw,{children:q.map(e=>a.jsx(v.Ql,{value:e,children:e},e))})]})]})]})]})]})]}),3===t&&(0,a.jsxs)(n.Zb,{children:[a.jsx(n.Ol,{children:(0,a.jsxs)(n.ll,{className:"flex items-center space-x-2",children:[a.jsx(D.Z,{className:"w-5 h-5"}),a.jsx("span",{children:"Tattoo Details"})]})}),(0,a.jsxs)(n.aY,{className:"space-y-6",children:[(0,a.jsxs)("div",{children:[a.jsx("label",{className:"block text-sm font-medium mb-2",children:"Tattoo Description *"}),a.jsx(y.g,{value:u.tattooDescription,onChange:e=>A("tattooDescription",e.target.value),placeholder:"Describe your tattoo idea in detail. Include style, colors, themes, and any specific elements you want...",rows:4,required:!0})]}),(0,a.jsxs)("div",{children:[a.jsx("label",{className:"block text-sm font-medium mb-2",children:"Estimated Size & Duration *"}),(0,a.jsxs)(v.Ph,{value:u.tattooSize,onValueChange:e=>A("tattooSize",e),children:[a.jsx(v.i4,{children:a.jsx(v.ki,{placeholder:"Select tattoo size"})}),a.jsx(v.Bw,{children:I.map(e=>a.jsx(v.Ql,{value:e.size,children:(0,a.jsxs)("div",{className:"flex flex-col",children:[a.jsx("span",{className:"font-medium",children:e.size}),(0,a.jsxs)("span",{className:"text-sm text-muted-foreground",children:[e.duration," • $",e.price]})]})},e.size))})]})]}),g&&(0,a.jsxs)("div",{className:"p-4 bg-muted/50 rounded-lg",children:[a.jsx("h4",{className:"font-medium mb-2",children:"Size Details"}),(0,a.jsxs)("div",{className:"grid grid-cols-3 gap-4 text-sm",children:[(0,a.jsxs)("div",{children:[a.jsx("p",{className:"text-muted-foreground",children:"Size"}),a.jsx("p",{className:"font-medium",children:g.size})]}),(0,a.jsxs)("div",{children:[a.jsx("p",{className:"text-muted-foreground",children:"Duration"}),a.jsx("p",{className:"font-medium",children:g.duration})]}),(0,a.jsxs)("div",{children:[a.jsx("p",{className:"text-muted-foreground",children:"Price Range"}),(0,a.jsxs)("p",{className:"font-medium",children:["$",g.price]})]})]})]}),(0,a.jsxs)("div",{children:[a.jsx("label",{className:"block text-sm font-medium mb-2",children:"Placement on Body *"}),a.jsx(N.I,{value:u.placement,onChange:e=>A("placement",e.target.value),placeholder:"e.g., Upper arm, forearm, shoulder, back, etc.",required:!0})]}),(0,a.jsxs)("div",{children:[a.jsx("label",{className:"block text-sm font-medium mb-2",children:"Reference Images"}),a.jsx(N.I,{type:"file",multiple:!0,accept:"image/*",onChange:e=>A("referenceImages",e.target.files)}),a.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"Upload reference images to help your artist understand your vision"})]}),(0,a.jsxs)("div",{children:[a.jsx("label",{className:"block text-sm font-medium mb-2",children:"Special Requests"}),a.jsx(y.g,{value:u.specialRequests,onChange:e=>A("specialRequests",e.target.value),placeholder:"Any special requests, concerns, or additional information...",rows:3})]})]})]}),4===t&&(0,a.jsxs)(n.Zb,{children:[a.jsx(n.Ol,{children:(0,a.jsxs)(n.ll,{className:"flex items-center space-x-2",children:[a.jsx(S.Z,{className:"w-5 h-5"}),a.jsx("span",{children:"Review & Deposit"})]})}),(0,a.jsxs)(n.aY,{className:"space-y-6",children:[(0,a.jsxs)("div",{className:"p-6 bg-muted/50 rounded-lg",children:[a.jsx("h3",{className:"font-playfair text-xl font-bold mb-4",children:"Booking Summary"}),(0,a.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsxs)("div",{children:[a.jsx("p",{className:"text-sm text-muted-foreground",children:"Client"}),(0,a.jsxs)("p",{className:"font-medium",children:[u.firstName," ",u.lastName]})]}),(0,a.jsxs)("div",{children:[a.jsx("p",{className:"text-sm text-muted-foreground",children:"Email"}),a.jsx("p",{className:"font-medium",children:u.email})]}),(0,a.jsxs)("div",{children:[a.jsx("p",{className:"text-sm text-muted-foreground",children:"Phone"}),a.jsx("p",{className:"font-medium",children:u.phone})]})]}),(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsxs)("div",{children:[a.jsx("p",{className:"text-sm text-muted-foreground",children:"Artist"}),a.jsx("p",{className:"font-medium",children:p?.name})]}),(0,a.jsxs)("div",{children:[a.jsx("p",{className:"text-sm text-muted-foreground",children:"Preferred Date"}),a.jsx("p",{className:"font-medium",children:d?(0,T.WU)(d,"PPP"):"Not selected"})]}),(0,a.jsxs)("div",{children:[a.jsx("p",{className:"text-sm text-muted-foreground",children:"Preferred Time"}),a.jsx("p",{className:"font-medium",children:u.preferredTime||"Not selected"})]})]})]}),(0,a.jsxs)("div",{className:"mt-6 pt-6 border-t",children:[(0,a.jsxs)("div",{children:[a.jsx("p",{className:"text-sm text-muted-foreground",children:"Tattoo Description"}),a.jsx("p",{className:"font-medium",children:u.tattooDescription})]}),(0,a.jsxs)("div",{className:"mt-3",children:[a.jsx("p",{className:"text-sm text-muted-foreground",children:"Size & Placement"}),(0,a.jsxs)("p",{className:"font-medium",children:[u.tattooSize," • ",u.placement]})]})]})]}),(0,a.jsxs)("div",{className:"p-6 border-2 border-primary/20 rounded-lg",children:[(0,a.jsxs)("h3",{className:"font-semibold mb-4 flex items-center",children:[a.jsx(S.Z,{className:"w-5 h-5 mr-2 text-primary"}),"Deposit Required"]}),(0,a.jsxs)("p",{className:"text-muted-foreground mb-4",children:["A deposit of ",(0,a.jsxs)("span",{className:"font-bold text-primary",children:["$",u.depositAmount]})," is required to secure your appointment. This deposit will be applied to your final tattoo cost."]}),(0,a.jsxs)("ul",{className:"text-sm text-muted-foreground space-y-1",children:[a.jsx("li",{children:"• Deposit is non-refundable but transferable to future appointments"}),a.jsx("li",{children:"• 48-hour notice required for rescheduling"}),a.jsx("li",{children:"• Final pricing will be discussed during consultation"})]})]}),(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"flex items-start space-x-2",children:[a.jsx(l.X,{id:"terms",checked:u.agreeToTerms,onCheckedChange:e=>A("agreeToTerms",e),required:!0}),(0,a.jsxs)("label",{htmlFor:"terms",className:"text-sm leading-relaxed",children:["I agree to the"," ",a.jsx(C.default,{href:"/terms",className:"text-primary hover:underline",children:"Terms and Conditions"})," ","and"," ",a.jsx(C.default,{href:"/privacy",className:"text-primary hover:underline",children:"Privacy Policy"})]})]}),(0,a.jsxs)("div",{className:"flex items-start space-x-2",children:[a.jsx(l.X,{id:"deposit",checked:u.agreeToDeposit,onCheckedChange:e=>A("agreeToDeposit",e),required:!0}),a.jsx("label",{htmlFor:"deposit",className:"text-sm leading-relaxed",children:"I understand and agree to the deposit policy outlined above"})]})]})]})]}),(0,a.jsxs)("div",{className:"flex justify-between mt-8",children:[a.jsx(i.z,{type:"button",variant:"outline",onClick:()=>s(e=>Math.max(e-1,1)),disabled:1===t,children:"Previous"}),t<4?a.jsx(i.z,{type:"button",onClick:()=>s(e=>Math.min(e+1,4)),children:"Next Step"}):a.jsx(i.z,{type:"submit",className:"bg-primary hover:bg-primary/90",disabled:!u.agreeToTerms||!u.agreeToDeposit||!Z,children:"Submit Booking & Pay Deposit"})]})]})]})})}},2502:(e,t,s)=>{"use strict";s.d(t,{Cd:()=>d,X:()=>o,bZ:()=>l});var a=s(97247);s(28964);var r=s(87972),i=s(25008);let n=(0,r.j)("relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",{variants:{variant:{default:"bg-card text-card-foreground",destructive:"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90"}},defaultVariants:{variant:"default"}});function l({className:e,variant:t,...s}){return a.jsx("div",{"data-slot":"alert",role:"alert",className:(0,i.cn)(n({variant:t}),e),...s})}function d({className:e,...t}){return a.jsx("div",{"data-slot":"alert-title",className:(0,i.cn)("col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight",e),...t})}function o({className:e,...t}){return a.jsx("div",{"data-slot":"alert-description",className:(0,i.cn)("text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed",e),...t})}},27757:(e,t,s)=>{"use strict";s.d(t,{Ol:()=>n,SZ:()=>d,Zb:()=>i,aY:()=>o,eW:()=>c,ll:()=>l});var a=s(97247);s(28964);var r=s(25008);function i({className:e,...t}){return a.jsx("div",{"data-slot":"card",className:(0,r.cn)("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",e),...t})}function n({className:e,...t}){return a.jsx("div",{"data-slot":"card-header",className:(0,r.cn)("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",e),...t})}function l({className:e,...t}){return a.jsx("div",{"data-slot":"card-title",className:(0,r.cn)("leading-none font-semibold",e),...t})}function d({className:e,...t}){return a.jsx("div",{"data-slot":"card-description",className:(0,r.cn)("text-muted-foreground text-sm",e),...t})}function o({className:e,...t}){return a.jsx("div",{"data-slot":"card-content",className:(0,r.cn)("px-6",e),...t})}function c({className:e,...t}){return a.jsx("div",{"data-slot":"card-footer",className:(0,r.cn)("flex items-center px-6 [.border-t]:pt-6",e),...t})}},6274:(e,t,s)=>{"use strict";s.d(t,{X:()=>l});var a=s(97247),r=s(37830),i=s(48799),n=s(25008);function l({className:e,...t}){return a.jsx(r.fC,{"data-slot":"checkbox",className:(0,n.cn)("peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",e),...t,children:a.jsx(r.z$,{"data-slot":"checkbox-indicator",className:"flex items-center justify-center text-current transition-none",children:a.jsx(i.Z,{className:"size-3.5"})})})}},70170:(e,t,s)=>{"use strict";s.d(t,{I:()=>i});var a=s(97247);s(28964);var r=s(25008);function i({className:e,type:t,...s}){return a.jsx("input",{type:t,"data-slot":"input",className:(0,r.cn)("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",e),...s})}},94049:(e,t,s)=>{"use strict";s.d(t,{Bw:()=>u,Ph:()=>o,Ql:()=>x,i4:()=>m,ki:()=>c});var a=s(97247),r=s(52846),i=s(62513),n=s(48799),l=s(45370),d=s(25008);function o({...e}){return a.jsx(r.fC,{"data-slot":"select",...e})}function c({...e}){return a.jsx(r.B4,{"data-slot":"select-value",...e})}function m({className:e,size:t="default",children:s,...n}){return(0,a.jsxs)(r.xz,{"data-slot":"select-trigger","data-size":t,className:(0,d.cn)("border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...n,children:[s,a.jsx(r.JO,{asChild:!0,children:a.jsx(i.Z,{className:"size-4 opacity-50"})})]})}function u({className:e,children:t,position:s="popper",...i}){return a.jsx(r.h_,{children:(0,a.jsxs)(r.VY,{"data-slot":"select-content",className:(0,d.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md","popper"===s&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",e),position:s,...i,children:[a.jsx(h,{}),a.jsx(r.l_,{className:(0,d.cn)("p-1","popper"===s&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),children:t}),a.jsx(p,{})]})})}function x({className:e,children:t,...s}){return(0,a.jsxs)(r.ck,{"data-slot":"select-item",className:(0,d.cn)("focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",e),...s,children:[a.jsx("span",{className:"absolute right-2 flex size-3.5 items-center justify-center",children:a.jsx(r.wU,{children:a.jsx(n.Z,{className:"size-4"})})}),a.jsx(r.eT,{children:t})]})}function h({className:e,...t}){return a.jsx(r.u_,{"data-slot":"select-scroll-up-button",className:(0,d.cn)("flex cursor-default items-center justify-center py-1",e),...t,children:a.jsx(l.Z,{className:"size-4"})})}function p({className:e,...t}){return a.jsx(r.$G,{"data-slot":"select-scroll-down-button",className:(0,d.cn)("flex cursor-default items-center justify-center py-1",e),...t,children:a.jsx(i.Z,{className:"size-4"})})}},44494:(e,t,s)=>{"use strict";s.d(t,{g:()=>i});var a=s(97247);s(28964);var r=s(25008);function i({className:e,...t}){return a.jsx("textarea",{"data-slot":"textarea",className:(0,r.cn)("border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",e),...t})}},48407:(e,t,s)=>{"use strict";s.d(t,{qI:()=>i,xE:()=>n});var a=s(30490);let r={all:["artists"],lists:()=>[...r.all,"list"],list:e=>[...r.lists(),e],details:()=>[...r.all,"detail"],detail:e=>[...r.details(),e],me:()=>[...r.all,"me"]};function i(e){return(0,a.a)({queryKey:r.list(e),queryFn:async()=>{let t=new URLSearchParams;e?.specialty&&t.append("specialty",e.specialty),e?.search&&t.append("search",e.search),e?.limit&&t.append("limit",e.limit.toString()),e?.page&&t.append("page",e.page.toString());let s=await fetch(`/api/artists?${t.toString()}`);if(!s.ok)throw Error("Failed to fetch artists");return(await s.json()).artists},staleTime:3e5})}function n(e){return(0,a.a)({queryKey:r.detail(e||""),queryFn:async()=>{if(!e)return null;let t=await fetch(`/api/artists/${e}`);if(!t.ok){if(404===t.status)return null;throw Error("Failed to fetch artist")}return t.json()},enabled:!!e,staleTime:3e5})}},38252:(e,t,s)=>{"use strict";s.d(t,{F:()=>a});let a=(0,s(45347).createProxy)(String.raw`/home/Nicholai/Documents/Dev/united_v03/united-tattoo/united-tattoo/components/booking-form.tsx#BookingForm`)},58030:(e,t,s)=>{"use strict";s.d(t,{O:()=>i});var a=s(72051),r=s(37170);function i({className:e,...t}){return a.jsx("div",{"data-slot":"skeleton",className:(0,r.cn)("bg-accent animate-pulse rounded-md",e),...t})}},37170:(e,t,s)=>{"use strict";s.d(t,{cn:()=>i});var a=s(36272),r=s(51472);function i(...e){return(0,r.m6)((0,a.W)(e))}}}; |