1import{a as q,r as S,j as e,d as H,u as M,s as B}from"./index-DfbPMtFZ.js";import{B as O,d as R,H as $,F as X}from"./Footer-DkkU8vMF.js";import{I as J,L as Q}from"./ImageUpload-DDRE_7dj.js";import{B as v,I as t}from"./Combination-DdoM_vzj.js";import{L as j}from"./label-BPIIdxfs.js";import{S as z,a as I,b as k,c as C,d as g}from"./select-BpTHHfDC.js";import{C as A,a as G,b as Y,c as ee,d as se}from"./card-DN9U93Ar.js";import{T as re}from"./trash-2-CCxrRo8I.js";import{o as ie,s as c,u as ae,F as ne,a as o,b as d,c as h,d as m,e as x,t as te}from"./types-CZRSIYhW.js";import{T as le}from"./textarea-B6myJTMQ.js";import{i as ce}from"./useListings-BA8PmhrO.js";import{s as _}from"./sanitize-DeERsSn4.js";import{S as oe}from"./SEOHead-CT9CEd2t.js";import{p as L,b as de}from"./seoData-Zu0mqGag.js";import{A as he}from"./arrow-left-CSjVKsEU.js";import"./shield-gTmsYmaS.js";import"./image-BB9h9Mr0.js";import"./index-BdQq_4o_.js";import"./index-DL1OQS8_.js";import"./chevron-down-B7uBTmvX.js";const me=({listingId:V,variants:p,onChange:u})=>{const{toast:b}=q(),[a,l]=S.useState({variant_type:"size",variant_name:"",variant_value:"",price_modifier:0,stock_quantity:0}),F=()=>{if(!a.variant_name||!a.variant_value){b({title:"Fehler",description:"Bitte füllen Sie alle Pflichtfelder aus.",variant:"destructive"});return}u([...p,a]),l({variant_type:"size",variant_name:"",variant_value:"",price_modifier:0,stock_quantity:0})},f=r=>{const i=p.filter((Z,w)=>w!==r);u(i)};return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx(j,{className:"text-lg font-semibold",children:"Produktvarianten"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Fügen Sie GröÃen, Farben oder andere Varianten hinzu"})]}),p.length>0&&e.jsx("div",{className:"space-y-2",children:p.map((r,i)=>e.jsx(A,{children:e.jsxs(G,{className:"p-4 flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-4 flex-1",children:[e.jsx(O,{variant:"outline",children:r.variant_type}),e.jsxs("div",{children:[e.jsxs("p",{className:"font-medium",children:[r.variant_name,": ",r.variant_value]}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:[r.price_modifier!==0&&e.jsxs("span",{className:"mr-3",children:["Preis: ",r.price_modifier>0?"+":"","â¬",r.price_modifier]}),r.stock_quantity>0&&e.jsxs("span",{children:["Lager: ",r.stock_quantity]}),r.sku&&e.jsxs("span",{className:"ml-3",children:["SKU: ",r.sku]})]})]})]}),e.jsx(v,{variant:"ghost",size:"icon",onClick:()=>f(i),children:e.jsx(re,{className:"h-4 w-4 text-destructive"})})]})},i))}),e.jsx(A,{children:e.jsxs(G,{className:"p-4 space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(j,{children:"Variantentyp *"}),e.jsxs(z,{value:a.variant_type,onValueChange:r=>l({...a,variant_type:r}),children:[e.jsx(I,{children:e.jsx(k,{})}),e.jsxs(C,{children:[e.jsx(g,{value:"size",children:"GröÃe"}),e.jsx(g,{value:"color",children:"Farbe"}),e.jsx(g,{value:"custom",children:"Benutzerdefiniert"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(j,{children:"Name *"}),e.jsx(t,{placeholder:"z.B. GröÃe, Farbe, Material",value:a.variant_name,onChange:r=>l({...a,variant_name:r.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(j,{children:"Wert *"}),e.jsx(t,{placeholder:"z.B. XL, Rot, Stahl",value:a.variant_value,onChange:r=>l({...a,variant_value:r.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(j,{children:"Preisänderung (â¬)"}),e.jsx(t,{type:"number",step:"0.01",placeholder:"0.00",value:a.price_modifier,onChange:r=>l({...a,price_modifier:Number(r.target.value)})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(j,{children:"Lagerbestand"}),e.jsx(t,{type:"number",placeholder:"0",value:a.stock_quantity,onChange:r=>l({...a,stock_quantity:Number(r.target.value)})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(j,{children:"SKU (optional)"}),e.jsx(t,{placeholder:"Artikelnummer",value:a.sku,onChange:r=>l({...a,sku:r.target.value})})]})]}),e.jsxs(v,{onClick:F,className:"w-full",children:[e.jsx(R,{className:"h-4 w-4 mr-2"}),"Variante hinzufügen"]})]})})]})},xe=ie({title:c().min(3,"Bezeichnung muss mindestens 3 Zeichen haben").max(100,"Bezeichnung darf maximal 100 Zeichen haben").regex(/^[a-zA-Z0-9\s\-_.,!?()äöüÃÃÃÃ]+$/,"Bezeichnung enthält ungültige Zeichen"),description:c().min(10,"Beschreibung muss mindestens 10 Zeichen haben").max(2e3,"Beschreibung darf maximal 2000 Zeichen haben"),category:c().min(1,"Kategorie ist erforderlich"),size:c().min(1,"GröÃe ist erforderlich"),price:c().min(1,"Preis ist erforderlich").regex(/^\d+(\.\d{1,2})?$/,"Ungültiges Preisformat"),shipping_price:c().regex(/^\d*(\.\d{1,2})?$/,"Ungültiges Versandpreis-Format").optional(),quantity:c().min(1,"Stückzahl ist erforderlich").regex(/^\d+$/,"Stückzahl muss eine ganze Zahl sein"),condition:c().optional(),location:c().max(200,"Standort darf maximal 200 Zeichen haben").optional(),display_location:c().min(1,"Anzeigestandort ist erforderlich").max(100,"Anzeigestandort darf maximal 100 Zeichen haben")}),Ae=()=>{const{user:V}=H(),p=M(),{toast:u}=q(),[b,a]=S.useState(!1),[l,F]=S.useState([]),[f,r]=S.useState([]),i=ae({resolver:te(xe),defaultValues:{title:"",description:"",category:"",size:"",price:"",shipping_price:"",quantity:"1",condition:"",location:"",display_location:""}}),Z=async s=>{var n;if(!V){u({title:"Fehler",description:"Sie müssen angemeldet sein, um ein Inserat zu erstellen.",variant:"destructive"});return}if(l.length===0){u({title:"Bilder erforderlich",description:"Bitte laden Sie mindestens ein Bild für Ihr Inserat hoch.",variant:"destructive"});return}a(!0);try{const y={title:_(s.title.trim()),description:_(s.description.trim()),category:s.category,size:s.size,price:parseFloat(s.price),shipping_price:s.shipping_price?parseFloat(s.shipping_price):0,quantity:parseInt(s.quantity),condition:s.condition||null,location:(n=s.location)!=null&&n.trim()?_(s.location.trim()):null,display_location:_(s.display_location.trim())},{data:N,error:E}=await B.from("listings").insert({user_id:V.id,...y,images:l,status:"active"}).select().single();if(E)throw E;if(N&&f.length>0){const U=f.map(W=>({listing_id:N.id,...W})),{error:T}=await B.from("listing_variants").insert(U);T&&(console.error("Error inserting variants:",T),u({title:"Warnung",description:"Inserat erstellt, aber Varianten konnten nicht gespeichert werden.",variant:"destructive"}))}N&&await B.rpc("log_activity",{activity_type:"listing_create",activity_data:{title:y.title},listing_id:N.id}),ce(),u({title:"Erfolgreich",description:"Ihr Inserat wurde erfolgreich erstellt."}),p("/dashboard")}catch(y){console.error("Error creating listing:",y),u({title:"Fehler",description:"Es gab einen Fehler beim Erstellen des Inserats.",variant:"destructive"})}finally{a(!1)}}
1,w=["Krafttraining","Cardio","Functional Training","Gewichte","Zubehör","Sonstiges"],K=["Klein (bis 50cm)","Mittel (50-150cm)","Groà (150-250cm)","Sehr groà (über 250cm)"],P=["Neu","Sehr gut","Gut","Gebraucht","Defekt"],D=[{name:"Home",url:"/"},{name:"Verkaufen",url:"/create-listing"}];return e.jsxs("div",{className:"min-h-screen bg-background",children:[e.jsx(oe,{title:L.createListing.title,description:L.createListing.description,keywords:L.createListing.keywords,structuredData:de(D),canonicalUrl:"https://fitnessprofi.at/create-listing"}),e.jsx($,{}),e.jsxs("main",{className:"max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 py-8",children:[e.jsxs("div",{className:"mb-6",children:[e.jsxs(v,{variant:"ghost",onClick:()=>p("/dashboard"),className:"mb-4",children:[e.jsx(he,{className:"w-4 h-4 mr-2"}),"Zurück zum Dashboard"]}),e.jsx("h1",{className:"text-3xl font-bold text-foreground",children:"Neues Inserat erstellen"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"Geben Sie Ihr Fitness-Gerät zum Verkauf auf"})]}),e.jsxs(A,{children:[e.jsxs(Y,{children:[e.jsx(ee,{children:"Inserat Details"}),e.jsx(se,{children:"Füllen Sie alle Pflichtfelder aus, um Ihr Inserat zu veröffentlichen."})]}),e.jsx(G,{children:e.jsx(ne,{...i,children:e.jsxs("form",{onSubmit:i.handleSubmit(Z),className:"space-y-6",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[e.jsx(o,{control:i.control,name:"title",render:({field:s})=>e.jsxs(d,{children:[e.jsx(h,{children:"Bezeichnung *"}),e.jsx(m,{children:e.jsx(t,{placeholder:"z.B. Kraftstation Profi 2000",...s})}),e.jsx(x,{})]})}),e.jsx(o,{control:i.control,name:"price",render:({field:s})=>e.jsxs(d,{children:[e.jsx(h,{children:"Preis (â¬)"}),e.jsx(m,{children:e.jsx(t,{type:"number",step:"0.01",placeholder:"999.99",...s})}),e.jsx(x,{})]})})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[e.jsx(o,{control:i.control,name:"shipping_price",render:({field:s})=>e.jsxs(d,{children:[e.jsx(h,{children:"Versandkosten (â¬)"}),e.jsx(m,{children:e.jsx(t,{type:"number",step:"0.01",placeholder:"0.00",...s})}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Optional: Lassen Sie leer oder 0 für kostenloser Versand"}),e.jsx(x,{})]})}),e.jsx(o,{control:i.control,name:"quantity",render:({field:s})=>e.jsxs(d,{children:[e.jsx(h,{children:"Stückzahl *"}),e.jsx(m,{children:e.jsx(t,{type:"number",min:"1",placeholder:"1",...s})}),e.jsx(x,{})]})})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[e.jsx(o,{control:i.control,name:"category",render:({field:s})=>e.jsxs(d,{children:[e.jsx(h,{children:"Kategorie *"}),e.jsxs(z,{onValueChange:s.onChange,defaultValue:s.value,children:[e.jsx(m,{children:e.jsx(I,{children:e.jsx(k,{placeholder:"Wählen Sie eine Kategorie"})})}),e.jsx(C,{children:w.map(n=>e.jsx(g,{value:n,children:n},n))})]}),e.jsx(x,{})]})}),e.jsx(o,{control:i.control,name:"size",render:({field:s})=>e.jsxs(d,{children:[e.jsx(h,{children:"GröÃe *"}),e.jsxs(z,{onValueChange:s.onChange,defaultValue:s.value,children:[e.jsx(m,{children:e.jsx(I,{children:e.jsx(k,{placeholder:"Wählen Sie eine GröÃe"})})}),e.jsx(C,{children:K.map(n=>e.jsx(g,{value:n,children:n},n))})]}),e.jsx(x,{})]})})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[e.jsx(o,{control:i.control,name:"condition",render:({field:s})=>e.jsxs(d,{children:[e.jsx(h,{children:"Zustand"}),e.jsxs(z,{onValueChange:s.onChange,defaultValue:s.value,children:[e.jsx(m,{children:e.jsx(I,{children:e.jsx(k,{placeholder:"Wählen Sie den Zustand"})})}),e.jsx(C,{children:P.map(n=>e.jsx(g,{value:n,children:n},n))})]}),e.jsx(x,{})]})}),e.jsx(o,{control:i.control,name:"display_location",render:({field:s})=>e.jsxs(d,{children:[e.jsx(h,{children:"Anzeigestandort *"}),e.jsx(m,{children:e.jsx(t,{placeholder:"z.B. München, Bayern",...s})}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"ð Wird öffentlich angezeigt. Verwenden Sie nur Stadt/Region - KEINE Hausnummern oder StraÃen!"}),e.jsx("p",{className:"text-xs text-orange-600",children:"â ï¸ Ihre Privatsphäre: Geben Sie hier niemals Ihre vollständige Adresse ein."}),e.jsx(x,{})]})})]}),e.jsx(o,{control:i.control,name:"location",render:({field:s})=>e.jsxs(d,{children:[e.jsx(h,{children:"Vollständige Adresse (privat)"}),e.jsx(m,{children:e.jsx(t,{placeholder:"Vollständige Adresse für ernsthafte Interessenten",...s})}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"ð Diese Adresse wird NUR mit verifizierten Käufern geteilt. Optional, aber empfohlen für lokale Abholung."}),e.jsx(x,{})]})}),e.jsx(J,{onImagesChange:F,maxImages:10}),e.jsx(me,{variants:f,onChange:r}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h3",{className:"text-sm font-medium",children:"Standort auf Karte auswählen"}),e.jsx(Q,{onLocationSelect:s=>{i.setValue("location",s.address)},initialLocation:i.watch("location"),className:"h-64 w-full"})]}),e.jsx(o,{control:i.control,name:"description",render:({field:s})=>e.jsxs(d,{children:[e.jsx(h,{children:"Beschreibung *"}),e.jsx(m,{children:e.jsx(le,{placeholder:"Beschreiben Sie Ihr Fitness-Gerät detailliert...",className:"min-h-32",...s})}),e.jsx(x,{})]})}),e.jsxs("div",{className:"flex justify-end space-x-4 pt-6",children:[e.jsx(v,{type:"button",variant:"outline",onClick:()=>
1p("/dashboard"),children:"Abbrechen"}),e.jsx(v,{type:"submit",disabled:b,children:b?"Wird erstellt...":"Inserat erstellen"})]})]})})})]})]}),e.jsx(X,{})]})};export{Ae 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.