PageSourceSearch

https://dgf.de/assets/AdminShowroomNewCompany-CWlM-ky5.js

js dgf.de collected 2026-10-01 03:58:43 UTC 8,269 bytes, 6 lines download raw bytes

1import{j as e}from"./ui-B-jAfBIu.js";import{e as K,r as _}from"./vendor-DFDkvaNg.js";import{c as W,h as Z,B as b,ag as H,b as B,ah as t,ai as c,aj as a,ak as i,I as o,al as m,am as u,M as T,W as $,o as G,f as d,a6 as p,s as j,t as R}from"./index-BCsAUAr3.js";import{T as O}from"./textarea-CdCdWFQp.js";import{C as N,a as k,b as F,d as E,c as S}from"./card-FDTNR4GW.js";import{A as V}from"./arrow-left-AER8uK4l.js";import"./supabase-DM3UDwCf.js";import"./query-BNFXhbss.js";/**
2 * @license lucide-react v0.546.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 q=[["path",{d:"M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z",key:"e79jfc"}],["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}]],Q=W("palette",q),J=G({name:d().min(2,"Firmenname muss mindestens 2 Zeichen lang sein").max(100),industry:d().optional(),brand_color:d().regex(/^#[0-9A-Fa-f]{6}$/,"Ungültiger Hex-Farbcode").default("#0EA5E9"),welcome_message:d().max(500,"Willkommensnachricht darf maximal 500 Zeichen lang sein").optional(),primary_contact_email:d().email("Ungültige E-Mail-Adresse"),primary_contact_name:d().min(2,"Name muss mindestens 2 Zeichen lang sein")});function le(){const f=K(),[g,v]=_.useState(!1),[y,D]=_.useState(null),[C,M]=_.useState(null),s=Z({resolver:R(J),defaultValues:{name:"",industry:"",brand_color:"#0EA5E9",welcome_message:"",primary_contact_email:"",primary_contact_name:""}}),L=r=>{var x;const n=(x=r.target.files)==null?void 0:x[0];if(!n)return;if(!n.type.startsWith("image/")){p.error("Bitte wählen Sie eine Bilddatei aus");return}if(n.size>2*1024*1024){p.error("Datei ist zu groß (max. 2MB)");return}D(n);const h=new FileReader;h.onloadend=()=>{M(h.result)},h.readAsDataURL(n)},z=async r=>{v(!0);try{let n=null;if(y){const w=y.name.split(".").pop(),P=`${`${crypto.randomUUID()}.${w}`}`,{error:A}=await j.storage.from("company-logos").upload(P,y);if(A)throw A;const{data:U}=j.storage.from("company-logos").getPublicUrl(P);n=U.publicUrl}const{data:h,error:x}=await j.from("showroom_companies").insert({name:r.name,industry:r.industry||null,logo_url:n,brand_color:r.brand_color,welcome_message:r.welcome_message||null,status:"active"}).select().single();if(x)throw x;const l=h,{error:I}=await j.from("showroom_project_phases").insert([{company_id:l.id,name:"Einschätzung",description:"Erste Bewertung Ihres Projekts und Identifikation von Fördermöglichkeiten",order_index:1,is_unlocked:!0,unlocked_at:new Date().toISOString()},{company_id:l.id,name:"QuickCheck",description:"Schnelle Analyse der vielversprechendsten Förderoptionen",order_index:2,is_unlocked:!1},{company_id:l.id,name:"Auswählen des Kooperationsmodells",description:"Wählen Sie das passende Kooperationsmodell für Ihr Projekt",order_index:3,is_unlocked:!1},{company_id:l.id,name:"Kickoff",description:"Start der Zusammenarbeit und Planung der nächsten Schritte",order_index:4,is_unlocked:!1}]);I&&console.error("Error creating phases:",I);try{await j.functions.invoke("send-company-invitation",{body:{company_id:l.id,company_name:r.name,contact_email:r.primary_contact_email,contact_name:r.primary_contact_name}})}catch(w){console.error("Email sending failed:",w),p.warning("Firma erstellt, aber E-Mail konnte nicht versendet werden")}p.success("Firma erfolgreich erstellt!"),f(`/admin/showroom/companies/${l.id}`)}catch(n){console.error("Error creating company:",n),p.error(n.message||"Fehler beim Erstellen der Firma")}finally{v(!1)}};return e.jsxs("div",{className:"min-h-screen bg-background",children:[e.jsx("div",{className:"border-b bg-card",children:e.jsx("div",{className:"container mx-auto px-4 py-6",children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx(b,{variant:"ghost",size:"icon",onClick:()=>f("/admin/showroom"),children:e.jsx(V,{className:"h-5 w-5"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-3xl font-bold",children:"Neue Firma anlegen"}),e.jsx("p",{className:"text-muted-foreground",children:"Erstellen Sie einen neuen Showroom für Ihren Kunden"})]})]})})}),e.jsx("div",{className:"container mx-auto px-4 py-8 max-w-4xl",children:e.jsx(H,{...s,children:e.jsxs("form",{onSubmit:s.handleSubmit(z),className:"space-y-6",children:[e.jsxs(N,{children:[e.jsxs(k,{children:[e.jsxs(F,{className:"flex items-center gap-2",children:[e.jsx(B,{className:"h-5 w-5"}),"Firmeninformationen"]}),e.jsx(E,{children:"Grundlegende Informationen über die Firma"})]}),e.jsxs(S,{className:"space-y-4",children:[e.jsx(t,{control:s.control,name:"name",render:({field:r})=>e.jsxs(c,{children:[e.jsx(a,{children:"Firmenname *"}),e.jsx(i,{children:e.jsx(o,{placeholder:"z.B. Mustermann GmbH",...r})}),e.jsx(m,{})]})}),e.jsx(t,{control:s.control,name:"industry",render:({field:r})=>e.jsxs(c,{children:[e.jsx(a,{children:"Branche"}),e.jsx(i,{children:e.jsx(o,{placeholder:"z.B. Immobilien, Energie, Industrie",...r})}),e.jsx(u,{children:"Optional: Hilft bei der Kategorisierung"}),e.jsx(m,{})]})})]})]}),e.jsxs(N,{children:[e.jsxs(k,{children:[e.jsxs(F,{className:"flex items-center gap-2",children:[e.jsx(Q,{className:"h-5 w-5"}),"Branding & Design"]}),e.jsx(E,{children:"Personalisieren Sie den Showroom für Ihren Kunden"})]}),e.jsxs(S,{className:"space-y-6",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(a,{children:"Firmenlogo"}),e.jsxs("div",{className:"flex items-center gap-4",children:[C&&e.jsx("div",{className:"h-24 w-24 rounded-lg border bg-muted flex items-center justify-center overflow-hidden",children:e.jsx("img",{src:C,alt:"Logo Preview",className:"max-h-full max-w-full object-contain"})}),e.jsxs("div",{className:"flex-1",children:[e.jsx(o,{type:"file",accept:"image/*",onChange:L,className:"cursor-pointer"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-2",children:"Empfohlen: PNG oder SVG, max. 2MB"})]})]})]}),e.jsx(t,{control:s.control,name:"brand_color",render:({field:r})=>e.jsxs(c,{children:[e.jsx(a,{children:"Brand-Farbe"}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx(i,{children:e.jsx(o,{type:"color",...r,className:"h-12 w-24 cursor-pointer"})}),e.jsx(i,{children:e.jsx(o,{type:"text",placeholder:"#0EA5E9",...r,className:"font-mono"})})]}),e.jsx(u,{children:"Diese Farbe wird im Showroom für Akzente verwendet"}),e.jsx(m,{})]})}),e.jsx(t,{control:s.control,name:"welcome_message",render:({field:r})=>e.jsxs(c,{children:[e.jsx(a,{children:"Willkommensnachricht"}),e.jsx(i,{children:e.jsx(O,{placeholder:"Willkommen bei Ihrem persönlichen Projekt-Portal! Hier finden Sie alle wichtigen Dokumente und Informationen...",rows:4,...r})}),e.jsx(u,{children:"Diese Nachricht sehen Kunden beim Login (max. 500 Zeichen)"}),e.jsx(m,{})]})})]})]}),e.jsxs(N,{children:[e.jsxs(k,{children:[e.jsxs(F,{className:"flex items-center gap-2",children:[e.jsx(T,{className:"h-5 w-5"}),"Primärkontakt"]}),e.jsx(E,{children:"Wer soll Zugriff auf den Showroom erhalten?"})]}),e.jsxs(S,{className:"space-y-4",children:[e.jsx(t,{control:s.control,name:"primary_contact_name",render:({field:r})=>e.jsxs(c,{children:[e.jsx(a,{children:"Name *"}),e.jsx(i,{children:e.jsx(o,{placeholder:"Max Mustermann",...r})}),e.jsx(m,{})]})}),e.jsx(t,{control:s.control,name:"primary_contact_email",render:({field:r})=>e.jsxs(c,{children:[e.jsx(a,{children:"E-Mail-Adresse *"}),e.jsx(i,{children:e.jsx(o,{type:"email",placeholder:"[email protected]",...r})}),e.jsx(u,{children:"Diese Person erhält eine Einladungs-E-Mail mit Login-Link"}),e.jsx(m,{})]})})]})]}),e.jsxs("div",{className:"flex items-center justify-between pt-4",children:[e.jsx(b,{type:"button",variant:"outline",onClick:()=>f("/admin/showroom"),disabled:g,children:"Abbrechen"}),e.jsx(b,{type:"submit",disabled:g,children:g?e.jsxs(e.Fragment,{children:[e.jsx($,{className:"h-4 w-4 mr-2 animate-spin"}),"Erstelle Firma..."]}):e.jsxs(e.Fragment,{children:[e.jsx(B,{className:"h-4 w-4 mr-2"}),"Firma erstellen & Einladung senden"]})})]})]})})})]})}export{le 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.