import{c as de,d as ue,f as me,h as pe,u as N,s as y,j as e,T as J,i as W,k as Z,L as P,l as ee,a as C,b as fe,r as z,m as Ie,n as qe,R as v,o as xe,p as Fe,q as Oe,P as he,v as Ee,w as $e,e as Le}from"./index-D5aSL5Lk.js";import{u as Ve,a as He}from"./useMetaDescription-Dr9AdqMY.js";import{u as Qe}from"./useDocumentTitle-B-SBpz7s.js";import{u as Ke}from"./useOpenGraph-BJUJ8GJb.js";import{O as Be}from"./OptimizedImage-BDiwQDT8.js";import{C as Ue,S as Xe,P as Ye}from"./ProductCard-5OM8mCzQ.js";import{u as te}from"./useMutation-tTbw9fD5.js";import{B as _,F as Ge}from"./Footer-B625QnUy.js";import{B as re,a as Je}from"./bell-CG2gu7ec.js";import{C as A,a as S,b as We,c as Ze}from"./card-Xe3d9dhi.js";import{B as et}from"./badge-ChUUq-BC.js";import{C as tt}from"./circle-check-BQ8-zlbN.js";import{t as g,c as rt,e as it,g as ie,m as se,a as T,b as st,r as at,u as nt,d as ot}from"./zod-DcfU_8_4.js";import{S as D,c as ge,R as ct,T as lt,C as dt}from"./index-ClwVMAx4.js";import{T as ut}from"./textarea-DSeH8gpv.js";import{A as mt,C as pt,a as ft}from"./alert-D83Fgsxk.js";import{o as xt,n as ht,s as gt}from"./types-BQK_W90y.js";import{H,P as ae,S as vt}from"./Header-CQ-hRMFy.js";import{u as jt}from"./index-CeP29QIk.js";import{C as bt}from"./chevron-down-B5BGiQa3.js";import{S as yt}from"./StructuredBreadcrumb-BCzmleui.js";import{T as wt,a as Nt,b as ne,c as oe}from"./tabs-BeQtBmu6.js";import{a as Ct,g as _t}from"./seoHelpers-DphZaCAd.js";import{A as zt}from"./arrow-left-PTJHM8zM.js";import{T as At}from"./tag-DyoEMiBs.js";import{E as St}from"./external-link-RH3nu8XI.js";import"./checkbox-CzTzIcmO.js";import"./index-DVk-hwER.js";import"./check-DCNsCDBV.js";import"./index-CL0xAu-I.js";import"./chevron-right-Dnq_A__P.js";/**
* @license lucide-react v0.462.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const Rt=de("MessageSquare",[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}]]);/**
* @license lucide-react v0.462.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const ce=de("Star",[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]]),Tt=({productId:r,variant:s="outline",size:i="default",showLabel:t=!0})=>{const{user:a}=ue(),{toast:n}=me(),c=pe(),{data:o,isLoading:u}=N({queryKey:["subscription",r,a==null?void 0:a.id],queryFn:async()=>{if(!a)return null;const{data:l,error:m}=await y.from("product_subscriptions").select("*").eq("user_id",a.id).eq("product_id",r).maybeSingle();if(m)throw m;return l},enabled:!!a}),p=te({mutationFn:async()=>{if(!a)throw new Error("Must be logged in");const{error:l}=await y.from("product_subscriptions").insert({user_id:a.id,product_id:r,notify_price_drop:!0,notify_new_reviews:!0});if(l)throw l},onSuccess:()=>{c.invalidateQueries({queryKey:["subscription",r,a==null?void 0:a.id]}),n({title:"Abonare reușită!",description:"Vei primi notificări când prețul se schimbă sau apar recenzii noi."})},onError:l=>{n({title:"Eroare",description:l.message||"Nu s-a putut activa notificările",variant:"destructive"})}}),d=te({mutationFn:async()=>{if(!a||!o)throw new Error("No subscription found");const{error:l}=await y.from("product_subscriptions").delete().eq("id",o.id);if(l)throw l},onSuccess:()=>{c.invalidateQueries({queryKey:["subscription",r,a==null?void 0:a.id]}),n({title:"Dezabonat",description:"Nu vei mai primi notificări pentru acest produs."})},onError:l=>{n({title:"Eroare",description:l.message||"Nu s-a putut dezactiva notificările",variant:"destructive"})}});if(!a)return e.jsx(J,{children:e.jsxs(W,{children:[e.jsx(Z,{asChild:!0,children:e.jsx(_,{variant:s,size:i,asChild:!0,children:e.jsxs(P,{to:"/login",children:[e.jsx(re,{className:"h-4 w-4"}),t&&i!=="icon"&&e.jsx("span",{className:"ml-2",children:"Urmărește"})]})})}),e.jsx(ee,{children:e.jsx("p",{children:"Conectează-te pentru a primi notificări"})})]})});const x=!!o,f=p.isPending||d.isPending;return e.jsx(J,{children:e.jsxs(W,{children:[e.jsx(Z,{asChild:!0,children:e.jsxs(_,{variant:x?"default":s,size:i,onClick:()=>{x?d.mutate():p.mutate()},disabled:u||f,children:[x?e.jsx(Je,{className:"h-4 w-4"}):e.jsx(re,{className:"h-4 w-4"}),t&&i!=="icon"&&e.jsx("span",{className:"ml-2",children:x?"Dezabonează-te":"Urmărește"})]})}),e.jsx(ee,{children:e.jsx("p",{children:x?"Oprește notificările":"Primește alerte pentru reduceri de preț"})})]})})},I=({rating:r,maxRating:s=5,size:i="md",showValue:t=!1,interactive:a=!1,onRatingChange:n})=>{const c={sm:"h-4 w-4",md:"h-5 w-5",lg:"h-6 w-6"},o=u=>{a&&n&&n(u)};return e.jsxs("div",{className:"flex items-center gap-1",children:[Array.from({length:s},(u,p)=>{const d=p+1,x=d<=r,f=d>r&&d-1<r,l=f?r%1*100:0;return e.jsxs("div",{className:C("relative",a&&"cursor-pointer hover:scale-110 transition-transform"),onClick:()=>o(d),children:[e.jsx(ce,{className:C(c[i],"text-muted-foreground")}),e.jsx("div",{className:"absolute inset-0 overflow-hidden",style:{width:f?`${l}%`:x?"100%":"0%"},children:e.jsx(ce,{className:C(c[i],"fill-yellow-400 text-yellow-400")})})]},p)}),t&&e.jsx("span",{className:"ml-1 text-sm font-medium text-muted-foreground",children:r.toFixed(1)})]})};function M(r,s){const i=g(r),t=g(s),a=i.getTime()-t.getTime();return a<0?-1:a>0?1:a}function Dt(r){return rt(r,Date.now())}function Mt(r,s){const i=g(r),t=g(s),a=i.getFullYear()-t.getFullYear(),n=i.getMonth()-t.getMonth();return a*12+n}function Pt(r){return s=>{const t=(r?Math[r]:Math.trunc)(s);return t===0?0:t}}function kt(r,s){return+g(r)-+g(s)}function It(r){const s=g(r);return s.setHours(23,59,59,999),s}function qt(r){const s=g(r),i=s.getMonth();return s.setFullYear(s.getFullYear(),i+1,0),s.setHours(23,59,59,999),s}function Ft(r){const s=g(r);return+It(s)==+qt(s)}function Ot(r,s){const i=g(r),t=g(s),a=M(i,t),n=Math.abs(Mt(i,t));let c;if(n<1)c=0;else{i.getMonth()===1&&i.getDate()>27&&i.setDate(30),i.setMonth(i.getMonth()-a*n);let o=M(i,t)===-a;Ft(g(r))&&n===1&&M(r,t)===1&&(o=!1),c=a*(n-Number(o))}return c===0?0:c}function Et(r,s,i){const t=kt(r,s)/1e3;return Pt(i==null?void 0:i.roundingMethod)(t)}function $t(r,s,i){const t=st(),a=(i==null?void 0:i.locale)??t.locale??it,n=2520,c=M(r,s);if(isNaN(c))throw new RangeError("Invalid time value");const o=Object.assign({},i,{addSuffix:i==null?void 0:i.addSuffix,comparison:c});let u,p;c>0?(u=g(s),p=g(r)):(u=g(r),p=g(s));const d=Et(p,u),x=(ie(p)-ie(u))/1e3,f=Math.round((d-x)/60);let l;if(f<2)return i!=null&&i.includeSeconds?d<5?a.formatDistance("lessThanXSeconds",5,o):d<10?a.formatDistance("lessThanXSeconds",10,o):d<20?a.formatDistance("lessThanXSeconds",20,o):d<40?a.formatDistance("halfAMinute",0,o):d<60?a.formatDistance("lessThanXMinutes",1,o):a.formatDistance("xMinutes",1,o):f===0?a.formatDistance("lessThanXMinutes",1,o):a.formatDistance("xMinutes",f,o);if(f<45)return a.formatDistance("xMinutes",f,o);if(f<90)return a.formatDistance("aboutXHours",1,o);if(f<se){const m=Math.round(f/60);return a.formatDistance("aboutXHours",m,o)}else{if(f<n)return a.formatDistance("xDays",1,o);if(f<T){const m=Math.round(f/se);return a.formatDistance("xDays",m,o)}else if(f<T*2)return l=Math.round(f/T),a.formatDistance("aboutXMonths",l,o)}if(l=Ot(p,u),l<12){const m=Math.round(f/T);return a.formatDistance("xMonths",m,o)}else{const m=l%12,h=Math.trunc(l/12);return m<3?a.formatDistance("aboutXYears",h,o):m<9?a.formatDistance("overXYears",h,o):a.formatDistance("almostXYears",h+1,o)}}function Lt(r,s){return $t(r,Dt(r),s)}const Vt=({rating:r,reviewText:s,createdAt:i,isVerifiedPurchase:t,userEmail:a})=>{const n=o=>{const[u,p]=o.split("@");return u.length<=3?`${u[0]}***@${p}`:`${u.substring(0,3)}***@${p}`},c={"@context":"https://schema.org","@type":"Review",author:{"@type":"Person",name:a?n(a):"Utilizator anonim"},datePublished:i,reviewBody:s,reviewRating:{"@type":"Rating",ratingValue:r,bestRating:5,worstRating:1},...t&&{itemReviewed:{"@type":"Product"}}};return e.jsxs(e.Fragment,{children:[e.jsx("script",{type:"application/ld+json",dangerouslySetInnerHTML:{__html:JSON.stringify(c)}}),e.jsx(A,{children:e.jsxs(S,{className:"p-6",children:[e.jsxs("div",{className:"flex items-start justify-between mb-3",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx(I,{rating:r,size:"sm"}),t&&e.jsxs(et,{variant:"secondary",className:"text-xs flex items-center gap-1",children:[e.jsx(tt,{className:"h-3 w-3"}),"Cumpărare verificată"]})]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:a?n(a):"Utilizator anonim"})]}),e.jsx("span",{className:"text-xs text-muted-foreground",children:Lt(new Date(i),{addSuffix:!0,locale:at})})]}),e.jsx("p",{className:"text-sm leading-relaxed",children:s})]})})]})},Ht=({productId:r})=>{const{data:s,isLoading:i}=N({queryKey:["reviews",r],queryFn:async()=>{const{data:c,error:o}=await y.from("reviews_public").select("*").eq("product_id",r).order("created_at",{ascending:!1});if(o)throw o;return c}}),{data:t}=N({queryKey:["product-rating",r],queryFn:async()=>{const{data:c,error:o}=await y.rpc("get_product_rating",{product_uuid:r});if(o)throw o;return c[0]}});if(i)return e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(fe,{className:"h-8 w-8 animate-spin text-primary"})});const a=(t==null?void 0:t.average_rating)||0,n=(t==null?void 0:t.review_count)||0;return e.jsxs("div",{className:"space-y-6",children:[n>0&&e.jsx(A,{children:e.jsx(S,{className:"p-6",children:e.jsxs("div",{className:"flex items-center gap-6",children:[e.jsxs("div",{className:"text-center",children:[e.jsx("div",{className:"text-4xl font-bold mb-2",children:a.toFixed(1)}),e.jsx(I,{rating:a,size:"md"}),e.jsxs("p",{className:"text-sm text-muted-foreground mt-2",children:[n," ",n===1?"recenzie":"recenzii"]})]}),e.jsx(D,{orientation:"vertical",className:"h-20"}),e.jsx("div",{className:"flex-1",children:e.jsx("div",{className:"space-y-2",children:[5,4,3,2,1].map(c=>{const o=(s==null?void 0:s.filter(p=>p.rating===c).length)||0,u=n>0?o/n*100:0;return e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("span",{className:"text-sm w-8",children:[c," ★"]}),e.jsx("div",{className:"flex-1 h-2 bg-muted rounded-full overflow-hidden",children:e.jsx("div",{className:"h-full bg-yellow-400",style:{width:`${u}%`}})}),e.jsx("span",{className:"text-sm text-muted-foreground w-12 text-right",children:o})]},c)})})})]})})}),s&&s.length>0?e.jsx("div",{className:"space-y-4",children:s.map(c=>e.jsx(Vt,{rating:c.rating,reviewText:c.review_text,createdAt:c.created_at,isVerifiedPurchase:c.is_verified_purchase},c.id))}):e.jsx(A,{children:e.jsxs(S,{className:"p-12 text-center",children:[e.jsx(Rt,{className:"h-12 w-12 mx-auto mb-4 text-muted-foreground"}),e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"Nicio recenzie încă"}),e.jsx("p",{className:"text-muted-foreground",children:"Fii primul care lasă o recenzie pentru acest produs!"})]})})]})},Qt=xt({rating:ht().min(1,"Selectează o evaluare").max(5),reviewText:gt().trim().min(10,"Recenzia trebuie să conțină cel puțin 10 caractere").max(1e3,"Recenzia nu poate depăși 1000 de caractere")}),Kt=({productId:r,onReviewSubmitted:s})=>{const{user:i}=ue(),{toast:t}=me(),[a,n]=z.useState(0),[c,o]=z.useState(!1),{register:u,handleSubmit:p,formState:{errors:d},reset:x,setValue:f}=nt({resolver:ot(Qt),defaultValues:{rating:0,reviewText:""}}),l=async h=>{if(!i){t({title:"Eroare",description:"Trebuie să fii autentificat pentru a lăsa o recenzie",variant:"destructive"});return}o(!0);try{const{error:j}=await y.from("reviews").insert({product_id:r,user_id:i.id,rating:h.rating,review_text:h.reviewText});if(j)if(j.code==="23505")t({title:"Recenzie existentă",description:"Ai lăsat deja o recenzie pentru acest produs",variant:"destructive"});else throw j;else t({title:"Recenzie trimisă!",description:"Mulțumim pentru recenzia ta!"}),x(),n(0),s()}catch{t({title:"Eroare",description:"Nu s-a putut trimite recenzia. Te rugăm să încerci din nou.",variant:"destructive"})}finally{o(!1)}},m=h=>{n(h),f("rating",h)};return i?e.jsxs(A,{children:[e.jsx(We,{children:e.jsx(Ze,{children:"Scrie o recenzie"})}),e.jsx(S,{children:e.jsxs("form",{onSubmit:p(l),className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium mb-2 block",children:"Evaluarea ta *"}),e.jsx(I,{rating:a,interactive:!0,onRatingChange:m,size:"lg"}),d.rating&&e.jsx("p",{className:"text-sm text-destructive mt-1",children:d.rating.message})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"reviewText",className:"text-sm font-medium mb-2 block",children:"Recenzia ta *"}),e.jsx(ut,{id:"reviewText",...u("reviewText"),placeholder:"Spune-ne ce părere ai despre acest produs...",rows:4,maxLength:1e3}),d.reviewText&&e.jsx("p",{className:"text-sm text-destructive mt-1",children:d.reviewText.message})]}),e.jsx(_,{type:"submit",disabled:c,children:c?"Se trimite...":"Trimite recenzia"})]})})]}):e.jsx(A,{children:e.jsx(S,{className:"p-6",children:e.jsxs(mt,{children:[e.jsx(pt,{className:"h-4 w-4"}),e.jsxs(ft,{children:["Trebuie să fii autentificat pentru a lăsa o recenzie."," ",e.jsx(P,{to:"/login",className:"font-medium text-primary hover:underline",children:"Conectează-te"})," ","sau"," ",e.jsx(P,{to:"/signup",className:"font-medium text-primary hover:underline",children:"Înregistrează-te"})]})]})})})};var b="Accordion",Bt=["Home","End","ArrowDown","ArrowUp","ArrowLeft","ArrowRight"],[B,Ut,Xt]=Ie(b),[q,Er]=qe(b,[Xt,ge]),U=ge(),ve=v.forwardRef((r,s)=>{const{type:i,...t}=r,a=t,n=t;return e.jsx(B.Provider,{scope:r.__scopeAccordion,children:i==="multiple"?e.jsx(Wt,{...n,ref:s}):e.jsx(Jt,{...a,ref:s})})});ve.displayName=b;var[je,Yt]=q(b),[be,Gt]=q(b,{collapsible:!1}),Jt=v.forwardRef((r,s)=>{const{value:i,defaultValue:t,onValueChange:a=()=>{},collapsible:n=!1,...c}=r,[o,u]=xe({prop:i,defaultProp:t??"",onChange:a,caller:b});return e.jsx(je,{scope:r.__scopeAccordion,value:v.useMemo(()=>o?[o]:[],[o]),onItemOpen:u,onItemClose:v.useCallback(()=>n&&u(""),[n,u]),children:e.jsx(be,{scope:r.__scopeAccordion,collapsible:n,children:e.jsx(ye,{...c,ref:s})})})}),Wt=v.forwardRef((r,s)=>{const{value:i,defaultValue:t,onValueChange:a=()=>{},...n}=r,[c,o]=xe({prop:i,defaultProp:t??[],onChange:a,caller:b}),u=v.useCallback(d=>o((x=[])=>[...x,d]),[o]),p=v.useCallback(d=>o((x=[])=>x.filter(f=>f!==d)),[o]);return e.jsx(je,{scope:r.__scopeAccordion,value:c,onItemOpen:u,onItemClose:p,children:e.jsx(be,{scope:r.__scopeAccordion,collapsible:!0,children:e.jsx(ye,{...n,ref:s})})})}),[Zt,F]=q(b),ye=v.forwardRef((r,s)=>{const{__scopeAccordion:i,disabled:t,dir:a,orientation:n="vertical",...c}=r,o=v.useRef(null),u=Fe(o,s),p=Ut(i),x=jt(a)==="ltr",f=Oe(r.onKeyDown,l=>{var Y;if(!Bt.includes(l.key))return;const m=l.target,h=p().filter(V=>{var G;return!((G=V.ref.current)!=null&&G.disabled)}),j=h.findIndex(V=>V.ref.current===m),R=h.length;if(j===-1)return;l.preventDefault();let w=j;const O=0,E=R-1,$=()=>{w=j+1,w>E&&(w=O)},L=()=>{w=j-1,w<O&&(w=E)};switch(l.key){case"Home":w=O;break;case"End":w=E;break;case"ArrowRight":n==="horizontal"&&(x?$():L());break;case"ArrowDown":n==="vertical"&&$();break;case"ArrowLeft":n==="horizontal"&&(x?L():$());break;case"ArrowUp":n==="vertical"&&L();break}const ke=w%R;(Y=h[ke].ref.current)==null||Y.focus()});return e.jsx(Zt,{scope:i,disabled:t,direction:a,orientation:n,children:e.jsx(B.Slot,{scope:i,children:e.jsx(he.div,{...c,"data-orientation":n,ref:u,onKeyDown:t?void 0:f})})})}),k="AccordionItem",[er,X]=q(k),we=v.forwardRef((r,s)=>{const{__scopeAccordion:i,value:t,...a}=r,n=F(k,i),c=Yt(k,i),o=U(i),u=Ee(),p=t&&c.value.includes(t)||!1,d=n.disabled||r.disabled;return e.jsx(er,{scope:i,open:p,disabled:d,triggerId:u,children:e.jsx(ct,{"data-orientation":n.orientation,"data-state":Se(p),...o,...a,ref:s,disabled:d,open:p,onOpenChange:x=>{x?c.onItemOpen(t):c.onItemClose(t)}})})});we.displayName=k;var Ne="AccordionHeader",Ce=v.forwardRef((r,s)=>{const{__scopeAccordion:i,...t}=r,a=F(b,i),n=X(Ne,i);return e.jsx(he.h3,{"data-orientation":a.orientation,"data-state":Se(n.open),"data-disabled":n.disabled?"":void 0,...t,ref:s})});Ce.displayName=Ne;var K="AccordionTrigger",_e=v.forwardRef((r,s)=>{const{__scopeAccordion:i,...t}=r,a=F(b,i),n=X(K,i),c=Gt(K,i),o=U(i);return e.jsx(B.ItemSlot,{scope:i,children:e.jsx(lt,{"aria-disabled":n.open&&!c.collapsible||void 0,"data-orientation":a.orientation,id:n.triggerId,...o,...t,ref:s})})});_e.displayName=K;var ze="AccordionContent",Ae=v.forwardRef((r,s)=>{const{__scopeAccordion:i,...t}=r,a=F(b,i),n=X(ze,i),c=U(i);return e.jsx(dt,{role:"region","aria-labelledby":n.triggerId,"data-orientation":a.orientation,...c,...t,ref:s,style:{"--radix-accordion-content-height":"var(--radix-collapsible-content-height)","--radix-accordion-content-width":"var(--radix-collapsible-content-width)",...r.style}})});Ae.displayName=ze;function Se(r){return r?"open":"closed"}var tr=ve,rr=we,ir=Ce,Re=_e,Te=Ae;const sr=tr,De=z.forwardRef(({className:r,...s},i)=>e.jsx(rr,{ref:i,className:C("border-b",r),...s}));De.displayName="AccordionItem";const Me=z.forwardRef(({className:r,children:s,...i},t)=>e.jsx(ir,{className:"flex",children:e.jsxs(Re,{ref:t,className:C("flex flex-1 items-center justify-between py-4 font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180",r),...i,children:[s,e.jsx(bt,{className:"h-4 w-4 shrink-0 transition-transform duration-200"})]})}));Me.displayName=Re.displayName;const Pe=z.forwardRef(({className:r,children:s,...i},t)=>e.jsx(Te,{ref:t,className:"overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",...i,children:e.jsx("div",{className:C("pb-4 pt-0",r),children:s})}));Pe.displayName=Te.displayName;const Q=[{question:"Cum primesc notificări pentru scăderi de preț?",answer:"Poți primi notificări automate pentru scăderi de preț apăsând butonul 'Abonează-te la notificări' pe pagina produsului. Vei fi notificat instant când prețul scade."},{question:"Cum funcționează comparația de produse pe Clyper?",answer:"Selectează mai multe produse folosind butonul de comparație, apoi accesează pagina de comparație pentru a vedea diferențele de preț, specificații și caracteristici între produse."},{question:"De unde provin produsele listate pe Clyper?",answer:"Toate produsele sunt listate de la magazine partenere verificate. Când apeși 'Cumpără acum', vei fi redirecționat către magazinul partener pentru finalizarea comenzii."},{question:"Pot verifica recenzii pentru produse?",answer:"Da! Fiecare produs are o secțiune de recenzii unde poți citi experiențele altor utilizatori și poți lăsa propria ta recenzie după achiziție."}],le={"Electronice & IT":[{question:"Are produsul garanție?",answer:"Garanția este oferită de magazinul vânzător. Detaliile despre garanție sunt disponibile pe pagina produsului din magazinul partener sau poți contacta direct vânzătorul."},{question:"Cum verific compatibilitatea produsului?",answer:"Verifică specificațiile tehnice din descrierea produsului și compară cu dispozitivele tale. Pentru întrebări specifice, recomandăm să contactezi magazinul vânzător înainte de achiziție."}],Fashion:[{question:"Cum aleg mărimea corectă?",answer:"Consultă ghidul de mărimi disponibil pe pagina produsului din magazinul partener. Fiecare brand poate avea mărimi diferite, așa că verifică mereu tabelul de mărimi specific."},{question:"Cum funcționează returnările?",answer:"Politica de returnare este stabilită de magazinul vânzător. Găsești detaliile complete despre returnări și schimburi pe site-ul magazinului partener."}],"Casă & Grădină":[{question:"Necesită produsul instalare profesională?",answer:"Verifică descrierea produsului pentru detalii despre instalare. Unele produse pot fi instalate ușor acasă, altele pot necesita asistență profesională."},{question:"Care sunt dimensiunile produsului?",answer:"Dimensiunile exacte sunt specificate în secțiunea de specificații a produsului. Asigură-te că măsori spațiul disponibil înainte de achiziție."}],"Sport & Outdoor":[{question:"Cum îngrijesc produsul?",answer:"Instrucțiunile de îngrijire sunt incluse cu produsul. Pentru echipamente sportive, recomandăm curățare regulată și depozitare corespunzătoare pentru durabilitate maximă."},{question:"Este produsul rezistent la apă?",answer:"Verifică specificațiile tehnice pentru detalii despre rezistența la apă. Nivelul de protecție poate varia de la rezistent la stropi până la complet impermeabil."}]},ar=r=>{const s=[];return r.price>1e3&&s.push({question:"Sunt disponibile opțiuni de plată în rate?",answer:"Opțiunile de plată în rate sunt oferite de magazinul vânzător. Verifică pe pagina produsului din magazinul partener pentru a vedea metodele de plată disponibile."}),r.brand&&s.push({question:`Este ${r.brand} un brand de încredere?`,answer:`${r.brand} este un brand recunoscut pe piață. Poți verifica recenziile utilizatorilor de pe Clyper pentru a afla experiențele altor cumpărători cu produse ${r.brand}.`}),r.store_name&&s.push({question:`Cât durează livrarea de la ${r.store_name}?`,answer:`Termenele de livrare sunt gestionate de ${r.store_name}. Detaliile despre opțiunile și costurile de livrare sunt disponibile în procesul de checkout pe site-ul magazinului.`}),s},nr=r=>{const s=[];if(s.push(...Q.slice(0,3)),r.category){const t=Object.keys(le).find(a=>{var n;return(n=r.category)==null?void 0:n.toLowerCase().includes(a.toLowerCase())});t&&s.push(...le[t].slice(0,2))}const i=ar(r);return s.push(...i.slice(0,2)),s.push(Q[Q.length-1]),s.slice(0,7)},or=({product:r})=>{const s=nr(r),i={"@context":"https://schema.org","@type":"FAQPage",mainEntity:s.map(t=>({"@type":"Question",name:t.question,acceptedAnswer:{"@type":"Answer",text:t.answer}}))};return e.jsxs(e.Fragment,{children:[e.jsx("script",{type:"application/ld+json",dangerouslySetInnerHTML:{__html:JSON.stringify(i)}}),e.jsx(sr,{type:"single",collapsible:!0,className:"w-full space-y-2",children:s.map((t,a)=>e.jsxs(De,{value:`faq-${a}`,className:"border border-border rounded-lg px-4",itemScope:!0,itemType:"https://schema.org/Question",children:[e.jsx(Me,{className:"text-left hover:no-underline py-4",itemProp:"name",children:e.jsx("span",{className:"font-semibold",children:t.question})}),e.jsx(Pe,{className:"text-muted-foreground pb-4",itemScope:!0,itemType:"https://schema.org/Answer",children:e.jsx("div",{itemProp:"text",children:t.answer})})]},a))})]})},$r=()=>{Ve();const{slug:r}=$e(),s=Le(),i=pe(),{data:t,isLoading:a}=N({queryKey:["product",r],queryFn:async()=>{let{data:l,error:m}=await y.from("products").select("*").eq("slug",r).eq("is_active",!0).maybeSingle();if(!l&&!m&&r){const h=await y.from("products").select("*").eq("id",r).eq("is_active",!0).maybeSingle();l=h.data,m=h.error}if(m)throw m;return l}}),{data:n}=N({queryKey:["product-rating",t==null?void 0:t.id],queryFn:async()=>{if(!(t!=null&&t.id))return null;const{data:l,error:m}=await y.rpc("get_product_rating",{product_uuid:t.id});if(m)throw m;return l[0]},enabled:!!(t!=null&&t.id)}),{data:c=[]}=N({queryKey:["related-products",t==null?void 0:t.category,t==null?void 0:t.brand,t==null?void 0:t.id],queryFn:async()=>{if(!t)return[];const{data:l,error:m}=await y.from("products").select("id, name, price, image_url, store_name, affiliate_link, slug").eq("is_active",!0).neq("id",t.id).or(`category.eq.${t.category},brand.eq.${t.brand}`).limit(4);if(m)throw m;return l},enabled:!!t}),o=()=>{t!=null&&t.id&&(i.invalidateQueries({queryKey:["reviews",t.id]}),i.invalidateQueries({queryKey:["product-rating",t.id]}))},u=z.useCallback(l=>{if(!(t!=null&&t.id))return;window._affiliateClickTracker||(window._affiliateClickTracker=new Map);const m=Date.now(),h=window._affiliateClickTracker.get(t.id);if(h&&m-h<5e3)return console.log("🚫 Blocked duplicate click for:",t.id,t.name),l.preventDefault(),l.stopPropagation(),!1;window._affiliateClickTracker.set(t.id,m),console.log("✅ Allowed click for:",t.id,t.name);for(const[j,R]of window._affiliateClickTracker.entries())m-R>1e4&&window._affiliateClickTracker.delete(j)},[t==null?void 0:t.id,t==null?void 0:t.name]);if(Qe(t?`${t.name} - ${t.price.toFixed(2)} RON | Clyper`:"Produs | Clyper"),He(t?Ct(t.name,t.price,t.store_name,t.category):"Descoperă produse de calitate la prețuri excelente pe Clyper"),Ke({title:(t==null?void 0:t.name)||"Produs",description:(t==null?void 0:t.description)||(t==null?void 0:t.name)||"Descoperă produse de calitate la prețuri excelente",image:(t==null?void 0:t.image_url)||void 0,type:"product",siteName:"Clyper",twitterCard:"summary_large_image",price:t==null?void 0:t.price,currency:"RON",availability:"in stock",brand:(t==null?void 0:t.brand)||void 0,condition:"new"}),a)return e.jsxs("div",{className:"min-h-screen bg-background",children:[e.jsx(H,{}),e.jsx("div",{className:"container mx-auto px-4 py-8 flex items-center justify-center min-h-[60vh]",children:e.jsx(fe,{className:"h-8 w-8 animate-spin text-primary"})})]});if(!t)return e.jsxs("div",{className:"min-h-screen bg-background",children:[e.jsx(H,{}),e.jsx("div",{className:"container mx-auto px-4 py-8",children:e.jsxs("div",{className:"text-center py-12",children:[e.jsx(ae,{className:"h-16 w-16 mx-auto mb-4 text-muted-foreground"}),e.jsx("h2",{className:"text-2xl font-bold mb-2",children:"Produsul nu a fost găsit"}),e.jsx("p",{className:"text-muted-foreground mb-6",children:"Ne pare rău, produsul pe care îl căutați nu este disponibil."}),e.jsx(_,{asChild:!0,children:e.jsx(P,{to:"/products",children:"Înapoi la produse"})})]})})]});const p=(n==null?void 0:n.average_rating)||0,d=(n==null?void 0:n.review_count)||0,x=t.image_url?t.image_url.startsWith("http")?t.image_url:`https://clyper.ro${t.image_url}`:"https://clyper.ro/placeholder.svg",f={"@context":"https://schema.org/","@type":"Product",name:t.name,image:[x],description:t.description||`${t.name} - găsește cele mai bune prețuri pe Clyper`,sku:t.id,mpn:t.id,gtin:t.id,...t.brand&&{brand:{"@type":"Brand",name:t.brand}},...t.category&&{category:t.category},offers:{"@type":"Offer",url:`https://clyper.ro/products/${t.id}`,priceCurrency:"RON",price:t.price.toFixed(2),priceValidUntil:new Date(Date.now()+30*24*60*60*1e3).toISOString().split("T")[0],itemCondition:"https://schema.org/NewCondition",availability:"https://schema.org/InStock",availabilityStarts:t.created_at||new Date().toISOString(),seller:{"@type":"Organization",name:t.store_name||"Partner Store"},shippingDetails:{"@type":"OfferShippingDetails",shippingDestination:{"@type":"DefinedRegion",addressCountry:"RO"}},hasMerchantReturnPolicy:{"@type":"MerchantReturnPolicy",applicableCountry:"RO",returnPolicyCategory:"https://schema.org/MerchantReturnFiniteReturnWindow"}},...d>0&&{aggregateRating:{"@type":"AggregateRating",ratingValue:p.toFixed(1),reviewCount:d,bestRating:"5",worstRating:"1",ratingCount:d}}};return e.jsxs("div",{className:"min-h-screen bg-background",children:[e.jsx("script",{type:"application/ld+json",dangerouslySetInnerHTML:{__html:JSON.stringify(f)}}),e.jsx(H,{}),e.jsxs("div",{className:"container mx-auto px-4 py-8",children:[e.jsx(yt,{items:[{label:"Acasă",href:"/"},{label:"Produse",href:"/products"},...t.category?[{label:t.category,href:`/products?category=${encodeURIComponent(t.category)}`}]:[],{label:t.name}]}),e.jsxs(_,{variant:"ghost",onClick:()=>s(-1),className:"mb-6",children:[e.jsx(zt,{className:"mr-2 h-4 w-4"}),"Înapoi"]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-8 mb-12",children:[e.jsx("div",{className:"space-y-4",children:e.jsx("div",{className:"aspect-square bg-muted rounded-lg overflow-hidden",children:e.jsx(Be,{src:t.image_url||"/placeholder.svg",alt:_t({name:t.name,brand:t.brand,category:t.category,store:t.store_name,price:t.price}),className:"w-full h-full",objectFit:"contain",priority:!0,sizes:"(max-width: 1024px) 100vw, 50vw"})})}),e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground mb-2",children:[e.jsx(vt,{className:"h-4 w-4"}),t.store_name||"N/A"]}),e.jsx("h1",{className:"text-3xl font-bold mb-4",children:t.name}),d>0&&e.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[e.jsx(I,{rating:p,showValue:!0,size:"md"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["(",d," ",d===1?"recenzie":"recenzii",")"]})]}),e.jsx("div",{className:"flex items-baseline gap-2 mb-6",children:e.jsxs("span",{className:"text-4xl font-bold text-primary",children:[t.price.toFixed(2)," RON"]})})]}),e.jsx(D,{}),e.jsxs("div",{className:"space-y-3",children:[e.jsx("h3",{className:"font-semibold text-lg",children:"Specificații"}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[t.category&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(At,{className:"h-4 w-4 text-muted-foreground"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-xs text-muted-foreground",children:"Categorie"}),e.jsx("p",{className:"text-sm font-medium",children:t.category})]})]}),t.brand&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ae,{className:"h-4 w-4 text-muted-foreground"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-xs text-muted-foreground",children:"Brand"}),e.jsx("p",{className:"text-sm font-medium",children:t.brand})]})]})]})]}),e.jsx(D,{}),t.description&&e.jsxs("div",{className:"space-y-3",children:[e.jsx("h3",{className:"font-semibold text-lg",children:"Descriere"}),e.jsx("p",{className:"text-muted-foreground leading-relaxed",children:t.description})]}),e.jsx(Ue,{productId:t.id,variant:"button",className:"w-full"}),e.jsx(Tt,{productId:t.id,variant:"outline",size:"lg"}),e.jsx(D,{}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold text-sm mb-3",children:"Distribuie oferta"}),e.jsx(Xe,{url:`https://clyper.ro/products/${t.id}`,title:t.name,description:t.description||`Descoperă ${t.name} la cel mai bun preț!`,price:t.price,variant:"outline",size:"lg"})]}),e.jsx(_,{asChild:!0,size:"lg",className:"w-full bg-danger hover:bg-danger/90 text-danger-foreground",children:e.jsxs("a",{href:t.affiliate_link,target:"_blank",rel:"noopener",onClick:u,children:["Cumpără acum",e.jsx(St,{className:"ml-2 h-5 w-5"})]})}),e.jsx("p",{className:"text-xs text-muted-foreground text-center",children:"Vei fi redirecționat către magazinul partener pentru a finaliza comanda"})]})]}),e.jsxs("div",{className:"mt-16",children:[e.jsx("h2",{className:"text-2xl font-bold mb-6",children:"Recenzii și Evaluări"}),e.jsxs(wt,{defaultValue:"reviews",className:"w-full",children:[e.jsxs(Nt,{className:"grid w-full max-w-md grid-cols-2",children:[e.jsx(ne,{value:"reviews",children:"Toate recenziile"}),e.jsx(ne,{value:"write",children:"Scrie o recenzie"})]}),e.jsx(oe,{value:"reviews",className:"mt-6",children:e.jsx(Ht,{productId:t.id})}),e.jsx(oe,{value:"write",className:"mt-6",children:e.jsx(Kt,{productId:t.id,onReviewSubmitted:o})})]})]}),e.jsxs("div",{className:"mt-16",children:[e.jsx("h2",{className:"text-2xl font-bold mb-6",children:"Întrebări Frecvente"}),e.jsx(or,{product:t})]}),c.length>0&&e.jsxs("div",{className:"mt-16",children:[e.jsx("h2",{className:"text-2xl font-bold mb-6",children:"Produse similare"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-6",children:c.map(l=>e.jsx(Ye,{product:l,compact:!0},l.id))})]})]}),e.jsx(Ge,{})]})};export{$r as default};