1import{r as c,u as D,bj as I,bk as R,j as e,E as B,Q as y,a2 as P,a9 as $,a7 as q,a3 as H,aa as M,ab as Q,a4 as N,ac as O,ad as A,a5 as z,a6 as G,B as m,b as U,c as V,d as W,w as Z,e as J}from"./index-Btl-MrG-.js";import{D as K,a as L,b as X,c as Y,d as _}from"./dialog-D5ICR8yo.js";import{P as ee}from"./ProductExtrasSelector-DJF2SwSE.js";import{S as ae}from"./SocialShareButtons-BzdT64nK.js";import{M as se}from"./minus-WGCo4rN0.js";import"./separator-DvxCfcIQ.js";const te={Vitality:G,Calm:z,Digestion:N,Energy:A,Hydration:O,"Gut Health":N,Circulation:Q,"Cleanse & Detox":M,"Mind & Focus":H,Immunity:q,"Sleep & Rest":$,Recovery:P},le={Vitality:"bg-orange-100 text-orange-800 dark:bg-orange-900/30 dark:text-orange-300",Calm:"bg-purple-100 text-purple-800 dark:bg-purple-900/30 dark:text-purple-300",Digestion:"bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-300",Energy:"bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-300",Hydration:"bg-cyan-100 text-cyan-800 dark:bg-cyan-900/30 dark:text-cyan-300","Gut Health":"bg-lime-100 text-lime-800 dark:bg-lime-900/30 dark:text-lime-300",Circulation:"bg-rose-100 text-rose-800 dark:bg-rose-900/30 dark:text-rose-300","Cleanse & Detox":"bg-emerald-100 text-emerald-800 dark:bg-emerald-900/30 dark:text-emerald-300","Mind & Focus":"bg-indigo-100 text-indigo-800 dark:bg-indigo-900/30 dark:text-indigo-300",Immunity:"bg-teal-100 text-teal-800 dark:bg-teal-900/30 dark:text-teal-300","Sleep & Rest":"bg-slate-100 text-slate-800 dark:bg-slate-900/30 dark:text-slate-300",Recovery:"bg-amber-100 text-amber-800 dark:bg-amber-900/30 dark:text-amber-300"},me=({product:l,isOpen:x,onClose:g})=>{var b,j,f,v;const[h,k]=c.useState(0),[d,u]=c.useState(1),[r,p]=c.useState([]),w=D(a=>a.addItem),S=(l==null?void 0:l.node.id)||"",{hasExtras:C}=I(S);if(c.useEffect(()=>{var a,i;x&&((a=l==null?void 0:l.node)!=null&&a.id)&&((i=l==null?void 0:l.node)!=null&&i.title)&&R(l.node.id,l.node.title)},[x,(b=l==null?void 0:l.node)==null?void 0:b.id]),!l)return null;const{node:t}=l,s=(j=t.variants.edges[h])==null?void 0:j.node,n=t.images.edges,E=!(s!=null&&s.availableForSale),o=r.reduce((a,i)=>a+i.price*i.quantity,0),F=()=>{var i;if(!s)return;const a={product:l,title:t.title,imageUrl:(i=n[0])==null?void 0:i.node.url,variantId:s.id,variantTitle:s.title,price:s.price,quantity:d,selectedOptions:Z(s.selectedOptions||[],parseFloat(s.price.amount)*d+o),productType:W(l),extras:r.length>0?r:void 0};w(a),J.success("Added to cart",{description:`${t.title} (${d}) has been added to your cart.`}),p([]),g()};return e.jsx(K,{open:x,onOpenChange:g,children:e.jsxs(L,{className:"max-w-4xl max-h-[90vh] overflow-y-auto",children:[e.jsxs(X,{children:[e.jsx(Y,{className:"text-2xl",children:t.title}),e.jsx(_,{children:"View product details and add to cart"})]}),e.jsxs("div",{className:"grid md:grid-cols-2 gap-6",children:[e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"aspect-square overflow-hidden rounded-lg bg-muted",children:n[0]?e.jsx("img",{src:n[0].node.url,alt:n[0].node.altText||t.title,className:"w-full h-full object-cover"}):e.jsx("div",{className:"w-full h-full flex items-center justify-center text-muted-foreground",children:"No image"})}),e.jsx(ae,{productTitle:t.title,productUrl:`/product/${t.handle||t.id}`,productImage:(f=n[0])==null?void 0:f.node.url,className:"mt-3"}),n.length>1&&e.jsx("div",{className:"grid grid-cols-4 gap-2",children:n.slice(1,5).map((a,i)=>e.jsx("div",{className:"aspect-square overflow-hidden rounded-md bg-muted",children:e.jsx("img",{src:a.node.url,alt:a.node.altText||`${t.title} ${i+2}`,className:"w-full h-full object-cover"})},i))})]}),e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{children:[e.jsxs("p",{className:"text-3xl font-bold text-primary",children:["R",parseFloat((s==null?void 0:s.price.amount)||t.priceRange.minVariantPrice.amount).toFixed(2)]}),e.jsx(B,{amount:parseFloat((s==null?void 0:s.price.amount)||t.priceRange.minVariantPrice.amount)*d+o,className:"mt-2"}),E?e.jsx(y,{variant:"destructive",className:"mt-2",children:"Sold Out"}):e.jsx(y,{variant:"default",className:"mt-2",children:"In Stock"})]}),t.description&&e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold mb-2",children:"Description"}),e.jsx("p",{className:"text-muted-foreground",children:t.description})]}),((v=t.healthTags)==null?void 0:v.length)>0&&e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold mb-2",children:"Health Benefits"}),e.jsx("div",{className:"flex flex-wrap gap-1.5",children:t.healthTags.map(a=>{const i=te[a],T=le[a]||"bg-muted text-muted-foreground";return e.jsxs("span",{className:`inline-flex items-center gap-1 rounded-full px-2.5 py-1 text-xs font-medium ${T}`,children:[i&&e.jsx(i,{className:"h-3 w-3"}),a]},a)})})]}),t.variants.edges.length>1&&e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold mb-2",children:"Select Variant"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:t.variants.edges.map((a,i)=>e.jsx(m,{variant:h===i?"default":"outline",onClick:()=>k(i),disabled:!a.node.availableForSale,children:a.node.title},a.node.id))})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold mb-2",children:"Quantity"}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(m,{variant:"outline",size:"icon",onClick:()=>u(Math.max(1,d-1)),children:e.jsx(se,{className:"h-4 w-4"})}),e.jsx("span",{className:"w-12 text-center font-semibold",children:d}),e.jsx(m,{variant:"outline",size:"icon",onClick:()=>u(d+1),children:e.jsx(U,{className:"h-4 w-4"})})]})]}),C&&e.jsx(ee,{productId:t.id,onExtrasChange:p}),r.length>0&&e.jsxs("div",{className:"bg-muted/50 rounded-lg p-3 space-y-1",children:[e.jsx("p",{className:"text-sm font-medium",children:"Selected Extras:"}),r.map(a=>e.jsxs("div",{className:"flex justify-between text-sm",children:[e.jsxs("span",{children:[a.name," x",a.quantity]}),e.jsxs("span",{children:["+R",(a.price*a.quantity).toFixed(2)]})]},a.id)),e.jsxs("div",{className:"border-t pt-1 mt-1 flex justify-between font-medium",children:[e.jsx("span",{children:"Extras Total:"}),e.jsxs("span",{children:["R",o.toFixed(2)]})]})]}),e.jsxs(m,{onClick:F,className:"w-full",size:"lg",disabled:!(s!=null&&s.availableForSale),children:[e.jsx(V,{className:"w-5 h-5 mr-2"}),s!=null&&s.availableForSale?`Add to Cart - R${(parseFloat(s.price.amount)*d+o).toFixed(2)}`:"Out of Stock"]})]})]})]})})};export{me as ProductQuickView};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.