1import{j as e}from"./ui-B-jAfBIu.js";import{e as U,r as l}from"./vendor-DFDkvaNg.js";import{s as d,a6 as n,B as m,D as q,z as H,y as N,C as K,ac as O,ad as P,ae as R,L as u,I as w,S as Z,i as W,j as $,k as G,m as _,W as J,M as Q}from"./index-BCsAUAr3.js";import{C as S,a as b,b as C,d as k,c as D}from"./card-FDTNR4GW.js";import{B as X}from"./badge-Dm4sUQsj.js";import{T as Y}from"./textarea-CdCdWFQp.js";import{T as ee}from"./trash-2-LJxfaF-d.js";import"./supabase-DM3UDwCf.js";import"./query-BNFXhbss.js";function de(){const h=U(),[E,x]=l.useState(!0),[j,f]=l.useState(!1),[t,M]=l.useState(null),[p,T]=l.useState([]),[o,F]=l.useState(null),[I,v]=l.useState(!1),[r,c]=l.useState({email:"",name:"",role:"member",message:""});l.useEffect(()=>{z()},[]);const z=async()=>{try{const{data:{session:s}}=await d.auth.getSession();if(!s){h("/auth");return}F(s.user.id),await g(s.user.id)}catch(s){console.error("Auth check error:",s),n.error("Authentifizierungsfehler"),h("/auth")}},g=async s=>{try{const{data:a,error:i}=await d.from("showroom_company_users").select("company_id, showroom_companies(id, name, primary_contact_email)").eq("user_id",s).maybeSingle();if(i||!a){n.error("Sie sind keiner Firma zugeordnet"),x(!1);return}const V=a.showroom_companies;M(V);const{data:A,error:y}=await d.from("showroom_company_users").select(` 2 id, 3 user_id, 4 role, 5 joined_at 6 `).eq("company_id",a.company_id).order("joined_at",{ascending:!0});if(y)throw y;T(A||[]),x(!1)}catch(a){console.error("Error loading team:",a),n.error("Fehler beim Laden der Team-Daten"),x(!1)}},L=async()=>{if(!r.email||!r.name||!t){n.error("Bitte füllen Sie alle Pflichtfelder aus");return}f(!0);try{const{error:s}=await d.functions.invoke("send-company-invitation",{body:{companyId:t.id,companyName:t.name,inviteeEmail:r.email,inviteeName:r.name,role:r.role,customMessage:r.message||void 0}});if(s)throw s;n.success("Einladung erfolgreich versendet"),v(!1),c({email:"",name:"",role:"member",message:""}),o&&await g(o)}catch(s){console.error("Invite error:",s),n.error("Fehler beim Versenden der Einladung")}finally{f(!1)}},B=async(s,a)=>{if(a===(t==null?void 0:t.primary_contact_email)){n.error("Der primäre Kontakt kann nicht entfernt werden");return}if(confirm("Mitglied wirklich entfernen?"))try{const{error:i}=await d.from("showroom_company_users").delete().eq("id",s);if(i)throw i;n.success("Mitglied entfernt"),o&&await g(o)}catch(i){console.error("Remove error:",i),n.error("Fehler beim Entfernen")}};return E?e.jsx("div",{className:"min-h-screen flex items-center justify-center",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 mb-4"}),e.jsx("p",{className:"text-muted-foreground",children:"Lade Team-Daten..."})]})}):t?e.jsx("div",{className:"min-h-screen bg-background",children:e.jsxs("div",{className:"container mx-auto px-4 py-8",children:[e.jsx("div",{className:"mb-8",children:e.jsx(m,{variant:"ghost",onClick:()=>h("/showroom"),children:"â Zurück zum Dashboard"})}),e.jsxs(S,{children:[e.jsx(b,{children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(C,{children:"Team-Verwaltung"}),e.jsxs(k,{children:["Verwalten Sie Ihre Teammitglieder für ",t.name]})]}),e.jsxs(q,{open:I,onOpenChange:v,children:[e.jsx(H,{asChild:!0,children:e.jsxs(m,{children:[e.jsx(N,{className:"h-4 w-4 mr-2"}),"Mitglied einladen"]})}),e.jsxs(K,{children:[e.jsxs(O,{children:[e.jsx(P,{children:"Neues Mitglied einladen"}),e.jsx(R,{children:"Senden Sie eine Einladungs-E-Mail an einen neuen Kollegen"})]}),e.jsxs("div",{className:"space-y-4 pt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(u,{htmlFor:"invite-email",children:"E-Mail-Adresse *"}),e.jsx(w,{id:"invite-email",type:"email",placeholder:"[email protected]",value:r.email,onChange:s=>c({...r,email:s.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(u,{htmlFor:"invite-name",children:"Name *"}),e.jsx(w,{id:"invite-name",placeholder:"Max Mustermann",value:r.name,onChange:s=>c({...r,name:s.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(u,{htmlFor:"invite-role",children:"Rolle"}),e.jsxs(Z,{value:r.role,onValueChange:s=>c({...r,role:s}),children:[e.jsx(W,{id:"invite-role",children:e.jsx($,{})}),e.jsxs(G,{children:[e.jsx(_,{value:"member",children:"Mitglied"}),e.jsx(_,{value:"decision_maker",children:"Entscheidungsträger"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(u,{htmlFor:"invite-message",children:"Persönliche Nachricht (optional)"}),e.jsx(Y,{id:"invite-message",placeholder:"Hallo! Ich lade dich ein, unserem Showroom beizutreten...",value:r.message,onChange:s=>c({...r,message:s.target.value}),rows:3})]}),e.jsx(m,{onClick:L,disabled:j,className:"w-full",children:j?e.jsxs(e.Fragment,{children:[e.jsx(J,{className:"h-4 w-4 mr-2 animate-spin"}),"Wird gesendet..."]}):e.jsxs(e.Fragment,{children:[e.jsx(Q,{className:"h-4 w-4 mr-2"}),"Einladung senden"]})})]})]})]})]})}),e.jsx(D,{children:p.length===0?e.jsxs("div",{className:"text-center py-12 text-muted-foreground",children:[e.jsx(N,{className:"h-16 w-16 mx-auto mb-4 opacity-50"}),e.jsx("p",{className:"text-lg font-medium mb-2",children:"Noch keine Teammitglieder"}),e.jsx("p",{className:"text-sm",children:"Laden Sie das erste Mitglied ein"})]}):e.jsx("div",{className:"space-y-3",children:p.map(s=>{var a,i;return e.jsxs("div",{className:"flex items-center justify-between p-4 border rounded-lg hover:bg-accent transition-colors",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("div",{className:"h-10 w-10 rounded-full bg-primary/10 flex items-center justify-center",children:e.jsx("span",{className:"text-sm font-medium text-primary",children:((a=s.user_name)==null?void 0:a[0])||
6((i=s.user_email)==null?void 0:i[0])||"?"})}),e.jsxs("div",{children:[e.jsx("p",{className:"font-medium",children:s.user_name||s.user_email||`Benutzer ${s.user_id.slice(0,8)}`}),e.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[e.jsx(X,{variant:"outline",className:"text-xs",children:s.role==="decision_maker"?"Entscheidungsträger":"Mitglied"}),e.jsx("span",{children:"â¢"}),e.jsxs("span",{children:["Beigetreten: ",new Date(s.joined_at).toLocaleDateString("de-DE")]})]})]})]}),s.user_id!==o&&e.jsx(m,{variant:"ghost",size:"sm",onClick:()=>B(s.id,s.user_id),children:e.jsx(ee,{className:"h-4 w-4 text-destructive"})})]},s.id)})})})]})]})}):e.jsx("div",{className:"min-h-screen flex items-center justify-center",children:e.jsxs(S,{className:"max-w-md",children:[e.jsxs(b,{children:[e.jsx(C,{children:"Kein Zugriff"}),e.jsx(k,{children:"Sie sind keiner Firma zugeordnet."})]}),e.jsx(D,{children:e.jsx(m,{onClick:()=>h("/showroom"),children:"Zurück zum Dashboard"})})]})})}export{de 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.