PageSourceSearch

https://fitnessprofi.lovable.app/assets/CustomerListingDetail-D9Xlfqyb.js

js fitnessprofi.lovable.app collected 2026-10-03 03:31:39 UTC 27,561 bytes, 28 lines download raw bytes

vendor: 4,494 bytes, lines 1-6
1import{c as Pe,e as oe,r as c,f as Q,j as e,P as z,g as H,p as Ve,n as Le,m as Ge,i as de,a as $,d as O,L as Te,s as S,k as ze,u as $e}from"./index-DfbPMtFZ.js";import{g as me,h as Oe,I as qe,i as Ke,B as U,H as He,f as Ue,e as Ze,F as We}from"./Footer-DkkU8vMF.js";import{u as Je,I as E,B as w}from"./Combination-DdoM_vzj.js";import{C as F,b as V,a as B,c as L,d as te}from"./card-DN9U93Ar.js";import{D as Z,a as ue,b as W,c as J,d as X,e as Y,f as ae}from"./dialog-CUfzLZNo.js";import{o as he,s as A,u as ie,F as ne,a as k,b as C,c as R,d as I,e as D,t as le}from"./types-CZRSIYhW.js";import{T}from"./textarea-B6myJTMQ.js";import{L as M}from"./label-BPIIdxfs.js";import{u as Xe}from"./index-DL1OQS8_.js";import{F as xe}from"./flag-lqiTSeng.js";import{F as Ye}from"./FavoriteButton-BuMmWnPt.js";import{A as Qe,a as es}from"./avatar-BJUSXNbd.js";import{S as G}from"./star-DebO7FFT.js";import{f as ss}from"./formatDistanceToNow-D1nxES6E.js";import{d as rs}from"./de-BSRZDHuq.js";import{C as ts}from"./checkbox-D0DkDVL1.js";import{A as as}from"./arrow-left-CSjVKsEU.js";import{C as ce,S as is,T as ns,R as ls,D as cs}from"./tag-_WCX-uBx.js";import{M as os}from"./map-pin-BpPyR111.js";import{C as ds}from"./calendar-AeHpRayc.js";import"./shield-gTmsYmaS.js";/**
2 * @license lucide-react v0.462.0 - ISC
3 *
4 * This source code is licensed under the ISC license.
5 * See the LICENSE file in the root directory of this source tree.
6 */const ms=Pe("ThumbsUp",[["path",{d:"M7 10v12",key:"1qc93n"}],["path",{d:"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z",key:"emmmcr"}]]);var ee="Radio",[us,pe]=oe(ee),[hs,xs]=us(ee),fe=c.forwardRef((m,u)=>{const{__scopeRadio:i,name:n,checked:s=!1,required:p,disabled:l,value:j="on",onCheck:f,form:N,...g}=m,[r,d]=c.useState(null),t=Q(u,b=>d(b)),o=c.useRef(!1),x=r?N||!!r.closest("form"):!0;return e.jsxs(hs,{scope:i,checked:s,disabled:l,children:[e.jsx(z.button,{type:"button",role:"radio","aria-checked":s,"data-state":Ne(s),"data-disabled":l?"":void 0,disabled:l,value:j,...g,ref:t,onClick:H(m.onClick,b=>{s||f==null||f(),x&&(o.current=b.isPropagationStopped(),o.current||b.stopPropagation())})}),x&&e.jsx(ve,{control:r,bubbles:!o.current,name:n,value:j,checked:s,required:p,disabled:l,form:N,style:{transform:"translateX(-100%)"}})]})});fe.displayName=ee;var ge="RadioIndicator",je=c.forwardRef((m,u)=>{const{__scopeRadio:i,forceMount:n,...s}=m,p=xs(ge,i);return e.jsx(Ve,{present:n||p.checked,children:e.jsx(z.span,{"data-state":Ne(p.checked),"data-disabled":p.disabled?"":void 0,...s,ref:u})})});je.displayName=ge;var ps="RadioBubbleInput",ve=c.forwardRef(({__scopeRadio:m,control:u,checked:i,bubbles:n=!0,...s},p)=>{const l=c.useRef(null),j=Q(l,p),f=Xe(i),N=Le(u);return c.useEffect(()=>{const g=l.current;if(!g)return;const r=window.HTMLInputElement.prototype,t=Object.getOwnPropertyDescriptor(r,"checked").set;if(f!==i&&t){const o=new Event("click",{bubbles:n});t.call(g,i),g.dispatchEvent(o)}},[f,i,n]),e.jsx(z.input,{type:"radio","aria-hidden":!0,defaultChecked:i,...s,tabIndex:-1,ref:j,style:{...s.style,...N,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});ve.displayName=ps;function Ne(m){return m?"checked":"unchecked"}var fs=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],q="RadioGroup",[gs,Ws]=oe(q,[me,pe]),we=me(),be=pe(),[js,vs]=gs(q),ye=c.forwardRef((m,u)=>{const{__scopeRadioGroup:i,name:n,defaultValue:s,value:p,required:l=!1,disabled:j=!1,orientation:f,dir:N,loop:g=!0,onValueChange:r,...d}=m,t=we(i),o=Je(N),[x,b]=Ge({prop:p,defaultProp:s??null,onChange:r,caller:q});return e.jsx(js,{scope:i,name:n,required:l,disabled:j,value:x,onValueChange:b,children:e.jsx(Oe,{asChild:!0,...t,orientation:f,dir:o,loop:g,children:e.jsx(z.div,{role:"radiogroup","aria-required":l,"aria-orientation":f,"data-disabled":j?"":void 0,dir:o,...d,ref:u})})})});ye.displayName=q;var _e="RadioGroupItem",Se=c.forwardRef((m,u)=>{const{__scopeRadioGroup:i,disabled:n,...s}=m,p=vs(_e,i),l=p.disabled||n,j=we(i),f=be(i),N=c.useRef(null),g=Q(u,N),r=p.value===s.value,d=c.useRef(!1);return c.useEffect(()=>{const t=x=>{fs.includes(x.key)&&(d.current=!0)},o=()=>d.current=!1;return document.addEventListener("keydown",t),document.addEventListener("keyup",o),()=>{document.removeEventListener("keydown",t),document.removeEventListener("keyup",o)}},[]),e.jsx(qe,{asChild:!0,...j,focusable:!l,active:r,children:e.jsx(fe,{disabled:l,required:p.required,
6checked:r,...f,...s,name:p.name,ref:g,onCheck:()=>p.onValueChange(s.value),onKeyDown:H(t=>{t.key==="Enter"&&t.preventDefault()}),onFocus:H(s.onFocus,()=>{var t;d.current&&((t=N.current)==null||t.click())})})})});Se.displayName=_e;var Ns="RadioGroupIndicator",ke=c.forwardRef((m,u)=>{const{__scopeRadioGroup:i,...n}=m,s=be(i);return e.jsx(je,{...s,...n,ref:u})});ke.displayName=Ns;var Ce=ye,Re=Se,ws=ke;const Ie=c.forwardRef(({className:m,...u},i)=>e.jsx(Ce,{className:de("grid gap-2",m),...u,ref:i}));Ie.displayName=Ce.displayName;const De=c.forwardRef(({className:m,...u},i)=>e.jsx(Re,{ref:i,className:de("aspect-square h-4 w-4 rounded-full border border-primary text-primary ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",m),...u,children:e.jsx(ws,{className:"flex items-center justify-center",children:e.jsx(Ke,{className:"h-2.5 w-2.5 fill-current text-current"})})}));De.displayName=Re.displayName;const bs=[{value:"spam",label:"Spam oder Fake-Anzeige"},{value:"fraud",label:"Betrug oder verdächtige Aktivität"},{value:"inappropriate",label:"Unangemessener Inhalt"},{value:"stolen",label:"Gestohlene Ware"},{value:"wrong_category",label:"Falsche Kategorie"},{value:"duplicate",label:"Doppelte Anzeige"},{value:"other",label:"Sonstiges"}],ys=({listingId:m,children:u})=>{const[i,n]=c.useState(!1),[s,p]=c.useState(!1),[l,j]=c.useState(""),[f,N]=c.useState(""),[g,r]=c.useState(""),{toast:d}=$(),{user:t}=O(),o=async x=>{if(x.preventDefault(),!l){d({title:"Grund erforderlich",description:"Bitte wählen Sie einen Grund für die Meldung aus.",variant:"destructive"});return}if(!t&&!g){d({title:"E-Mail erforderlich",description:"Bitte geben Sie Ihre E-Mail-Adresse an.",variant:"destructive"});return}p(!0);try{const b={listing_id:m,reason:l,description:f.trim()||null,reporter_id:(t==null?void 0:t.id)||null,reporter_email:t?null:g},{error:v}=await S.from("listing_reports").insert(b);if(v)throw v;d({title:"Meldung gesendet",description:"Vielen Dank für Ihre Meldung. Wir werden sie überprüfen."}),n(!1),j(""),N(""),r("")}catch(b){console.error("Error submitting report:",b),d({title:"Fehler",description:"Die Meldung konnte nicht gesendet werden. Bitte versuchen Sie es erneut.",variant:"destructive"})}finally{p(!1)}};return e.jsxs(Z,{open:i,onOpenChange:n,children:[e.jsx(ue,{asChild:!0,children:u}),e.jsxs(W,{className:"max-w-md",children:[e.jsxs(J,{children:[e.jsxs(X,{className:"flex items-center gap-2",children:[e.jsx(xe,{className:"h-5 w-5 text-destructive"}),"Anzeige melden"]}),e.jsx(Y,{children:"Melden Sie verdächtige oder unangemessene Anzeigen. Alle Meldungen werden überprüft."})]}),e.jsxs("form",{onSubmit:o,className:"space-y-4",children:[!t&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(M,{htmlFor:"reporter-email",children:"Ihre E-Mail-Adresse"}),e.jsx(E,{id:"reporter-email",type:"email",value:g,onChange:x=>r(x.target.value),placeholder:"[email protected]",required:!0})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(M,{children:"Grund der Meldung"}),e.jsx(Ie,{value:l,onValueChange:j,children:bs.map(x=>e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(De,{value:x.value,id:x.value}),e.jsx(M,{htmlFor:x.value,className:"text-sm font-normal",children:x.label})]},x.value))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(M,{htmlFor:"description",children:"Weitere Details (optional)"}),e.jsx(T,{id:"description",value:f,onChange:x=>N(x.target.value),placeholder:"Beschreiben Sie das Problem näher...",rows:3})]}),e.jsxs("div",{className:"flex gap-2 pt-2",children:[e.jsx(w,{type:"button",variant:"outline",onClick:()=>n(!1),className:"flex-1",children:"Abbrechen"}),e.jsxs(w,{type:"submit",disabled:s,className:"flex-1",children:[s&&e.jsx(Te,{className:"mr-2 h-4 w-4 animate-spin"}),"Melden"]})]})]})]})]})},_s=({sellerId:m,ratings:u,averageRating:i,totalRatings:n,onRatingUpdate:s})=>{const{user:p}=O(),{toast:l}=$(),j=(r,d="sm")=>{const t=d==="lg"?"h-5 w-5":"h-4 w-4";return e.jsx("div",{className:"flex",children:[1,2,3,4,5].map(o=>e.jsx(G,{className:`${t} ${o<=r?"fill-yellow-400 text-yellow-400":"text-muted-foreground"}`},o))})},f=async(r,d)=>{if(!p){l({title:"Anmeldung erforderlich",description:"Bitte melden Sie sich an, um zu bewerten.",variant:"destructive"});return}try{const{data:t}=await S.from("rating_helpful_votes").select("*").eq("rating_id",r).eq("user_id",p.id).maybeSingle();if(t){const{error:o}=await S.from("rating_helpful_votes").update({is_helpful:d}).eq("id",t.id);if(o)throw o}else{const{error:o}=await S.from("rating_helpful_votes").insert({rating_id:r,user_id:p.id,is_helpful:d});if(o)throw o}l({title:"Bewertung gespeichert",description:"Ihre Bewertung wurde gespeichert."}),s==null||s()}catch(t){console.error("Error voting on rating:",t),l({title:"Fehler",description:"Bewertung konnte nicht gespeichert werden.",variant:"destructive"})}},g=(()=>{const r=[0,0,0,0,0];return u.forEach(d=>{r[d.rating-1]++}),r.reverse()})();return e.jsxs("div",{className:"space-y-6",children:[e.jsxs(F,{children:[e.jsx(V,{children:e.jsx("h3",{className:"text-lg font-semibold",children:"Verkäuferbewertungen"})}),e.jsx(B,{children:e.jsxs("div",{className:"flex items-center gap-6 mb-6",children:[e.jsxs("div",{className:"text-center",children:[e.jsx("div",{className:"text-3xl font-bold",children:i.toFixed(1)}),j(Math.round(i),"lg"),e.jsxs("div",{className:"text-sm text-muted-foreground",children:[n," ",n===1?"Bewertung":"Bewertungen"]})]}),e.jsx("div",{className:"flex-1 space-y-2",children:[5,4,3,2,1].map((r,d)=>e.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[e.jsx("span",{className:"w-8",children:r}),e.jsx(G,{className:"h-3 w-3 fill-yellow-400 text-yellow-400"}),e.jsx("div",{className:"flex-1 bg-muted rounded-full h-2",children:e.jsx("div",{className:"bg-yellow-400 h-2 rounded-full",style:{width:`${n>0?g[d]/n*100:0}%`}})}),e.jsx("span",{className:"w-8 text-muted-foreground",children:g[d]})]},r))})]})})]}),e.jsx("div",{className:"space-y-4",children:u.length===0?e.jsx(F,{children:e.jsxs(B,{className:"p-8 text-center",children:[e.jsx(G,{className:"h-12 w-12 text-muted-foreground mx-auto mb-4"}),e.jsx("h3",{className:"font-semibold mb-2",children:"Noch keine Be
6wertungen"}),e.jsx("p",{className:"text-muted-foreground",children:"Dieser Verkäufer hat noch keine Bewertungen erhalten."})]})}):u.map(r=>{var d,t,o,x;return e.jsx(F,{children:e.jsx(B,{className:"p-6",children:e.jsxs("div",{className:"flex items-start gap-4",children:[e.jsx(Qe,{className:"h-10 w-10",children:e.jsx(es,{children:((o=(t=(d=r.buyer_profile)==null?void 0:d.display_name)==null?void 0:t.charAt(0))==null?void 0:o.toUpperCase())||"B"})}),e.jsxs("div",{className:"flex-1 space-y-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"font-medium",children:((x=r.buyer_profile)==null?void 0:x.display_name)||"Anonymer Käufer"}),r.is_verified_purchase&&e.jsx(U,{variant:"secondary",className:"text-xs",children:"Verifizierter Kauf"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[j(r.rating),e.jsx("span",{className:"text-sm text-muted-foreground",children:ss(new Date(r.created_at),{addSuffix:!0,locale:rs})})]}),r.review_text&&e.jsx("p",{className:"text-sm leading-relaxed",children:r.review_text}),e.jsxs("div",{className:"flex items-center gap-2 pt-2",children:[e.jsx("span",{className:"text-xs text-muted-foreground",children:"War diese Bewertung hilfreich?"}),e.jsxs(w,{variant:"ghost",size:"sm",onClick:()=>f(r.id,!0),className:"h-6 px-2 text-xs",children:[e.jsx(ms,{className:"h-3 w-3 mr-1"}),"Ja ",r.helpful_count>0&&`(${r.helpful_count})`]})]})]})]})})},r.id)})})]})},Ss=({sellerId:m,listingId:u,onRatingSubmitted:i})=>{const[n,s]=c.useState(0),[p,l]=c.useState(0),[j,f]=c.useState(""),[N,g]=c.useState(!1),[r,d]=c.useState(!1),{user:t}=O(),{toast:o}=$(),x=async()=>{if(!t){o({title:"Anmeldung erforderlich",description:"Bitte melden Sie sich an, um eine Bewertung abzugeben.",variant:"destructive"});return}if(n===0){o({title:"Bewertung erforderlich",description:"Bitte geben Sie eine Sterne-Bewertung ab.",variant:"destructive"});return}if(t.id===m){o({title:"Nicht erlaubt",description:"Sie können sich nicht selbst bewerten.",variant:"destructive"});return}d(!0);try{const{data:v}=await S.from("seller_ratings").select("id").eq("seller_id",m).eq("buyer_id",t.id).eq("listing_id",u||null).maybeSingle();if(v){o({title:"Bereits bewertet",description:"Sie haben diesen Verkäufer bereits bewertet.",variant:"destructive"});return}const{error:P}=await S.from("seller_ratings").insert({seller_id:m,buyer_id:t.id,listing_id:u||null,rating:n,review_text:j.trim()||null,transaction_completed:N,is_verified_purchase:N});if(P)throw P;o({title:"Bewertung gespeichert",description:"Vielen Dank für Ihre Bewertung!"}),s(0),f(""),g(!1),i==null||i()}catch(v){console.error("Error submitting rating:",v),o({title:"Fehler",description:"Bewertung konnte nicht gespeichert werden.",variant:"destructive"})}finally{d(!1)}},b=()=>e.jsx("div",{className:"flex gap-1",children:[1,2,3,4,5].map(v=>e.jsx(G,{className:`h-8 w-8 cursor-pointer transition-colors ${v<=(p||n)?"fill-yellow-400 text-yellow-400":"text-muted-foreground hover:text-yellow-400"}`,onClick:()=>s(v),onMouseEnter:()=>l(v),onMouseLeave:()=>l(0)},v))});return t?t.id===m?null:e.jsxs(F,{children:[e.jsx(V,{children:e.jsx(L,{children:"Verkäufer bewerten"})}),e.jsxs(B,{className:"space-y-6",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(M,{children:"Ihre Bewertung"}),e.jsxs("div",{className:"flex items-center gap-2",children:[b(),e.jsx("span",{className:"text-sm text-muted-foreground ml-2",children:n>0?`${n} von 5 Sternen`:"Klicken Sie auf die Sterne"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(M,{htmlFor:"review-text",children:"Bewertungstext (optional)"}),e.jsx(T,{id:"review-text",placeholder:"Teilen Sie Ihre Erfahrung mit diesem Verkäufer...",value:j,onChange:v=>f(v.target.value),rows:4})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(ts,{id:"transaction-completed",checked:N,onCheckedChange:v=>g(v)}),e.jsx(M,{htmlFor:"transaction-completed",className:"text-sm",children:"Ich habe erfolgreich von diesem Verkäufer gekauft"})]}),e.jsx(w,{onClick:x,disabled:r||n===0,className:"w-full",children:r?"Wird gespeichert...":"Bewertung abgeben"})]})]}):e.jsx(F,{children:e.jsx(B,{className:"p-6 text-center",children:e.jsx("p",{className:"text-muted-foreground",children:"Melden Sie sich an, um eine Bewertung abzugeben."})})})},ks=he({name:A().min(2,"Name muss mindestens 2 Zeichen haben"),email:A().email("Ungültige E-Mail-Adresse"),phone:A().optional(),message:A().min(10,"Nachricht muss mindestens 10 Zeichen haben")}),Cs=he({offerPrice:A().min(1,"Preisvorschlag ist erforderlich").regex(/^\d+(\.\d{1,2})?$/,"Ungültiges Preisformat"),name:A().min(2,"Name muss mindestens 2 Zeichen haben"),email:A().email("Ungültige E-Mail-Adresse"),phone:A().optional(),message:A().optional()}),Js=()=>{const{id:m}=ze(),u=$e(),{user:i}=O(),{toast:n}=$(),[s,p]=c.useState(null),[l,j]=c.useState(null),[f,N]=c.useState([]),[g,r]=c.useState(!0),[d,t]=c.useState(0),[o,x]=c.useState(!1),[b,v]=c.useState(!1),[P,Ae]=c.useState(!1),y=ie({resolver:le(ks),defaultValues:{name:"",email:"",ph
6one:"",message:""}}),_=ie({resolver:le(Cs),defaultValues:{offerPrice:"",name:"",email:"",phone:"",message:""}});c.useEffect(()=>{var a,h;i&&(y.setValue("name",((a=i.email)==null?void 0:a.split("@")[0])||""),y.setValue("email",i.email||""),_.setValue("name",((h=i.email)==null?void 0:h.split("@")[0])||""),_.setValue("email",i.email||""))},[i,y,_]),c.useEffect(()=>{(async()=>{if(m)try{const{data:h,error:se}=await S.rpc("get_listing_with_location",{listing_id:m}).maybeSingle();if(se){console.error("Error fetching listing:",se),n({title:"Fehler",description:"Inserat konnte nicht geladen werden.",variant:"destructive"}),u("/search");return}if(!h){n({title:"Nicht gefunden",description:"Das Inserat wurde nicht gefunden oder ist nicht mehr verfügbar.",variant:"destructive"}),u("/search");return}p(h);const{data:re}=await S.rpc("get_seller_contact_safe",{seller_user_id:h.user_id}).maybeSingle();re&&j(re),await K(h.user_id),y.setValue("message",`Hallo,
7
8ich interessiere mich für Ihr Inserat "${h.title}".
9
10Bitte kontaktieren Sie mich für weitere Details.
11
12Vielen Dank!`),Ee(h.id)}catch(h){console.error("Error fetching listing:",h),n({title:"Fehler",description:"Ein Fehler ist aufgetreten.",variant:"destructive"}),u("/search")}finally{r(!1)}})()},[m,u,n,y]);const K=async a=>{try{const{data:h}=await S.from("seller_ratings").select(`
13          *,
14          buyer_profile:profiles!seller_ratings_buyer_id_fkey(display_name)
15        `).eq("seller_id",a).order("created_at",{ascending:!1});N(h||[])}catch(h){console.error("Error fetching seller ratings:",h)}},Ee=async a=>{try{await S.functions.invoke("track-listing-view",{body:{listing_id:a}})}catch(h){console.log("Could not track view:",h)}},Fe=async a=>{if(s)try{const h=`Hallo,
16
17Ich interessiere mich für Ihr Inserat "${s.title}".
18
19Ich möchte Ihnen einen Preisvorschlag von €${a.offerPrice} unterbreiten.
20
21${a.message||"Bitte lassen Sie mich wissen, ob dieser Preis für Sie akzeptabel ist."}
22
23Vielen Dank!
24
25Kontaktdaten:
26Name: ${a.name}
27E-Mail: ${a.email}${a.phone?`
28Telefon: ${a.phone}`:""}`;n({title:"Preisvorschlag gesendet!",description:`Ihr Angebot von €${a.offerPrice} wurde an den Verkäufer gesendet.`}),v(!1),_.reset()}catch(h){console.error("Error sending price offer:",h),n({title:"Fehler",description:"Preisvorschlag konnte nicht gesendet werden.",variant:"destructive"})}},Be=async a=>{if(s)try{n({title:"Nachricht gesendet!",description:"Ihre Anfrage wurde an den Verkäufer gesendet. Sie werden in Kürze kontaktiert."}),x(!1),y.reset()}catch(h){console.error("Error sending message:",h),n({title:"Fehler",description:"Nachricht konnte nicht gesendet werden.",variant:"destructive"})}},Me=async()=>{const a=window.location.href;if(navigator.share)try{await navigator.share({title:s==null?void 0:s.title,text:`Schau dir dieses Fitness-Gerät an: ${s==null?void 0:s.title}`,url:a})}catch(h){console.log("Error sharing:",h)}else navigator.clipboard.writeText(a),n({title:"Link kopiert!",description:"Der Link wurde in die Zwischenablage kopiert."})};return g?e.jsx("div",{className:"min-h-screen flex items-center justify-center bg-background",children:e.jsxs("div",{className:"text-center",children:[e.jsx("div",{className:"animate-spin rounded-full h-12 w-12 border-b-2 border-primary mx-auto"}),e.jsx("p",{className:"mt-4 text-muted-foreground",children:"Lade Inserat..."})]})}):s?e.jsxs("div",{className:"min-h-screen bg-background",children:[e.jsx(He,{}),e.jsxs("main",{className:"max-w-6xl mx-auto px-4 sm:px-6 lg:px-8 py-8",children:[e.jsx("div",{className:"mb-6",children:e.jsxs(w,{variant:"ghost",onClick:()=>u("/search"),className:"mb-4",children:[e.jsx(as,{className:"w-4 h-4 mr-2"}),"Zurück zur Suche"]})}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-8",children:[e.jsx("div",{className:"lg:col-span-2 space-y-4",children:s.images&&s.images.length>0?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"aspect-square rounded-lg overflow-hidden bg-muted",children:e.jsx("img",{src:s.images[d],alt:s.title,className:"w-full h-full object-cover"})}),s.images.length>1&&e.jsx("div",{className:"flex space-x-2 overflow-x-auto pb-2",children:s.images.map((a,h)=>e.jsx("button",{onClick:()=>t(h),className:`flex-shrink-0 w-20 h-20 rounded-md overflow-hidden border-2 ${h===d?"border-primary":"border-transparent"}`,children:e.jsx("img",{src:a,alt:`${s.title} ${h+1}`,className:"w-full h-full object-cover"})},h))})]}):e.jsx("div",{className:"aspect-square rounded-lg bg-muted flex items-center justify-center",children:e.jsxs("div",{className:"text-center",children:[e.jsx(ce,{className:"w-12 h-12 text-muted-foreground mx-auto mb-2"}),e.jsx("p",{className:"text-muted-foreground",children:"Keine Bilder verfügbar"})]})})}),e.jsxs("div",{className:"space-y-6",children:[e.jsxs(F,{children:[e.jsx(V,{children:e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsxs("div",{children:[e.jsx(L,{className:"text-2xl",children:s.title}),e.jsxs(te,{className:"text-2xl font-bold text-primary mt-2",children:["€",s.price.toFixed(2),s.shipping_price&&s.shipping_price>0&&e.jsxs("div",{className:"text-sm font-normal text-muted-foreground mt-1",children:["+ €",s.shipping_price.toFixed(2)," Versandkosten"]}),(!s.shipping_price||s.shipping_price===0)&&e.jsx("div",{className:"text-sm font-normal text-green-600 mt-1",children:"Versandkostenfrei"})]})]}),e.jsxs("div",{className:"flex space-x-2",children:[e.jsx(w,{variant:"outline",size:"icon",onClick:Me,children:e.jsx(is,{className:"w-4 h-4"})}),e.jsx(w,{variant:"outline",size:"icon",onClick:()=>Ae(!P),children:e.jsx(Ue,{className:`w-4 h-4 ${P?"fill-red-500 text-red-500":""}`})})]}),e.jsxs("div",{className:"flex flex-wrap gap-3",children:[e.jsx(Ye,{listingId:m,className:"flex-1 sm:flex-initial"}),e.jsx(ys,{listingId:m,children:e.jsxs(w,{variant:"outline",className:"flex-1 sm:flex-initial",children:[e.jsx(xe,{className:"h-4 w-4 mr-2"}),"Melden"]})})]})]})}),e.jsx(B,{className:"space-y-4",children:e.jsxs("div",{className:"grid grid-cols-1 gap-3",children:[e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(ns,{className:"w-4 h-4 text-muted-foreground"}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"Kategorie:"}),e.jsx(U,{variant:"secondary",children:s.category})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(ls,{className:"w-4 h-4 text-muted-foreground"}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"Größe:"}),e.jsx("span",{className:"text-sm",children:s.size})]}),s.condition&&e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(ce,{className:"w-4 h-4 text-muted-foreground"}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"Zustand:"}),e.jsx(U,{variant:"outline",children:s.condition})]}),(s.display_location||s.location)&&e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(os,{className:"w-4 h-4 text-muted-foreground"}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"Standort:"}),e.jsx("span",{className:"text-sm",children:s.display_location||s.location})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(ds,{className:"w-4 h-4 text-muted-foreground"}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"Anzeige vom:"}),e.jsx("span",{className:"text-sm",children:new Date(s.created_at).toLocaleDateString("de-DE")})]})]})})]}),e.jsxs(F,{children:[e.jsxs(V,{children:[e.jsx(L,{children:"Verkäufer kontaktieren"}),(l==null?void 0:l.display_name)&&e.jsxs(te,{children:["Verkauft von: ",l.display_name]})]}),e.jsxs(B,{className:"space-y-3",children:[e.jsxs(Z,{open:o,onOpenChange:x,children:[e.jsx(ue,{asChild:!0,children:e.jsxs(w,{className:"w-full",size:"lg",children:[e.jsx(Ze,{className:"w-4 h-4 mr-2"}),"Nachricht senden"]})}),e.jsxs(W,{className:"max-w-md",children:[e.jsxs(J,{children:[e.jsx(X,{children:"Verkäufer kontaktieren"}),e.jsx(Y,{children:"Senden Sie eine Nachricht bezüglich dieses Inserats."})]}),e.jsx(ne,{...y,children:e.jsxs("form",{onSubmit:y.handleSubmit(Be),className:"space-y-4",children:[e.jsx(k,{control:y.control,name:"name",render:({field:a})=>e.jsxs(C,{children:[e.jsx(R,{children:"Ihr Name"}),e.jsx(I,{children:e.jsx(E,{placeholder:"Max Mustermann",...a})}),e.jsx(D,{})]})}),e.jsx(k,{control:y.control,name:"email",render:({field:a})=>e.jsxs(C,{children:[e.jsx(R,{children:"E-Mail"}),e.jsx(I,{children:e.jsx(E,{type:"email",placeholder:"[email protected]",...a})}),e.jsx(D,{})]})}),e.jsx(k,{control:y.control,name:"phone",render:({field:a})=>e.jsxs(C,{children:[e.jsx(R,{children:"Telefon (optional)"}),e.jsx(I,{children:e.jsx(E,{placeholder:"+49 123 456789",...a})}),e.jsx(D,{})]})}),e.jsx(k,{control:y.control,name:"message",render:({field:a})=>e.jsxs(C,{children:[e.jsx(R,{children:"Nachricht"}),e.jsx(I,{children:e.jsx(T,{placeholder:"Ihre Nachricht...",className:"min-h-20",...a})}),e.jsx(D,{})]})}),e.jsxs(ae,{children:[e.jsx(w,{type:"button",variant:"outline",onClick:()=>x(!1),children:"Abbrechen"}),e.jsx(w,{type:"submit",children:"Nachricht senden"})]})]})})]})]}),e.jsxs(w,{variant:"outline",className:"w-full",size:"lg",onClick:()=>v(!0),children:[e.jsx(cs,{className:"w-4 h-4 mr-2"}),"Preisvorschlag senden"]}),e.jsx(Z,{open:b,onOpenChange:v,children:e.jsxs(W,{className:"max-w-md",children:[e.jsxs(J,{children:[e.jsx(X,{children:"Preisvorschlag senden"}),e.jsx(Y,{children:"Machen Sie dem Verkäufer ein Angebot für diesen Art
28ikel."})]}),e.jsx(ne,{..._,children:e.jsxs("form",{onSubmit:_.handleSubmit(Fe),className:"space-y-4",children:[e.jsx(k,{control:_.control,name:"offerPrice",render:({field:a})=>e.jsxs(C,{children:[e.jsx(R,{children:"Ihr Preisvorschlag (€)"}),e.jsx(I,{children:e.jsx(E,{type:"number",step:"0.01",placeholder:`Weniger als €${s==null?void 0:s.price.toFixed(2)}`,...a})}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:["Aktuelle Preis: €",s==null?void 0:s.price.toFixed(2)]}),e.jsx(D,{})]})}),e.jsx(k,{control:_.control,name:"name",render:({field:a})=>e.jsxs(C,{children:[e.jsx(R,{children:"Ihr Name"}),e.jsx(I,{children:e.jsx(E,{placeholder:"Max Mustermann",...a})}),e.jsx(D,{})]})}),e.jsx(k,{control:_.control,name:"email",render:({field:a})=>e.jsxs(C,{children:[e.jsx(R,{children:"E-Mail"}),e.jsx(I,{children:e.jsx(E,{type:"email",placeholder:"[email protected]",...a})}),e.jsx(D,{})]})}),e.jsx(k,{control:_.control,name:"phone",render:({field:a})=>e.jsxs(C,{children:[e.jsx(R,{children:"Telefon (optional)"}),e.jsx(I,{children:e.jsx(E,{placeholder:"+49 123 456789",...a})}),e.jsx(D,{})]})}),e.jsx(k,{control:_.control,name:"message",render:({field:a})=>e.jsxs(C,{children:[e.jsx(R,{children:"Zusätzliche Nachricht (optional)"}),e.jsx(I,{children:e.jsx(T,{placeholder:"Zusätzliche Details zu Ihrem Angebot...",className:"min-h-16",...a})}),e.jsx(D,{})]})}),e.jsxs(ae,{children:[e.jsx(w,{type:"button",variant:"outline",onClick:()=>v(!1),children:"Abbrechen"}),e.jsx(w,{type:"submit",children:"Preisvorschlag senden"})]})]})})]})}),(l==null?void 0:l.phone)&&e.jsx(w,{variant:"outline",className:"w-full",asChild:!0,children:e.jsxs("a",{href:`tel:${l.phone}`,children:["Anrufen: ",l.phone]})})]})]}),s&&l&&e.jsxs("div",{className:"space-y-6",children:[e.jsx(_s,{sellerId:s.user_id,ratings:f,averageRating:l.rating_average||0,totalRatings:l.rating_count||0,onRatingUpdate:()=>K(s.user_id)}),e.jsx(Ss,{sellerId:s.user_id,listingId:s.id,onRatingSubmitted:()=>K(s.user_id)})]}),e.jsxs(F,{children:[e.jsx(V,{children:e.jsx(L,{children:"Beschreibung"})}),e.jsx(B,{children:e.jsx("p",{className:"text-muted-foreground whitespace-pre-wrap",children:s.description})})]})]})]})]}),e.jsx(We,{})]}):null};export{Js as default};

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.