Files
secu-frontend/dist/assets/ObjectsView-BhTJxexl.js
OpenClaw e5d09e9c80 feat: App lock with biometric/PIN
- LockScreen component with PIN pad
- SecuritySettings for setup
- Biometric (WebAuthn) support
- PIN fallback (6 digits)
- Auto-lock after 30s in background
- Lock on app start if enabled
- Settings page integration
2026-03-12 20:54:53 +00:00

2 lines
21 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import{d as te,u as se,q as le,m as g,c as l,a as t,y as k,e as r,b as d,v as m,s as T,F as _,x as w,t as i,w as K,B as q,A as ne,r as c,k as oe,o as n,p as H,n as ae}from"./index-OvQoqblD.js";const ie={class:"space-y-6"},ue={class:"flex items-center justify-between"},de={class:"card"},re={class:"grid grid-cols-1 md:grid-cols-4 gap-4"},me=["value"],pe={class:"flex items-end"},ce={class:"text-sm text-gray-500"},ve={key:0,class:"text-center py-12"},be={key:1,class:"card text-center py-12 text-gray-500"},ge={key:2,class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"},ye=["onClick"],xe={class:"flex items-start gap-4"},fe={class:"text-4xl"},ke={class:"flex-1 min-w-0"},_e={class:"font-semibold text-gray-900 dark:text-white truncate"},we={key:0,class:"text-sm text-gray-500"},he={key:1,class:"text-sm text-gray-500"},je={class:"flex gap-2 mt-2"},Ce={class:"text-xs bg-gray-100 dark:bg-gray-700 px-2 py-1 rounded"},Ue={key:0,class:"text-xs bg-blue-100 dark:bg-blue-900 text-blue-800 dark:text-blue-200 px-2 py-1 rounded"},Ve={key:1,class:"text-xs bg-green-100 dark:bg-green-900 text-green-800 dark:text-green-200 px-2 py-1 rounded"},Me=["onClick"],$e=["onClick"],Se={key:3,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/50"},Oe={class:"bg-white dark:bg-gray-800 rounded-lg shadow-xl w-full max-w-4xl mx-4 max-h-[90vh] overflow-y-auto"},Ne={class:"p-6"},ze={class:"flex items-start justify-between mb-6"},Ae={class:"flex items-center gap-4"},Fe={class:"text-4xl"},Te={class:"text-2xl font-bold text-gray-900 dark:text-white"},Ke={key:0,class:"text-gray-500"},De={class:"grid grid-cols-2 md:grid-cols-4 gap-4 mb-6"},qe={key:0,class:"bg-gray-50 dark:bg-gray-700 p-3 rounded"},Be={class:"font-medium"},Ie={key:1,class:"bg-gray-50 dark:bg-gray-700 p-3 rounded"},Le={class:"font-medium truncate"},He={key:2,class:"bg-gray-50 dark:bg-gray-700 p-3 rounded"},Pe={class:"font-medium"},Ee={key:3,class:"bg-gray-50 dark:bg-gray-700 p-3 rounded"},Ze={class:"font-medium"},Re={key:0,class:"mb-6"},Qe={class:"text-gray-600 dark:text-gray-300 whitespace-pre-wrap"},Ge={key:1,class:"grid grid-cols-2 gap-4 mb-6"},Je={key:0,class:"bg-yellow-50 dark:bg-yellow-900/20 p-4 rounded"},We={class:"text-sm whitespace-pre-wrap"},Xe={key:1,class:"bg-blue-50 dark:bg-blue-900/20 p-4 rounded"},Ye={class:"text-sm whitespace-pre-wrap"},et={class:"mb-6"},tt={class:"flex items-center justify-between mb-3"},st={key:0,class:"text-gray-500 text-sm"},lt={key:1,class:"grid gap-2"},nt={class:"font-medium"},ot={key:0,class:"text-xs bg-blue-500 text-white px-1 rounded ml-1"},at={key:1,class:"text-xs bg-red-500 text-white px-1 rounded ml-1"},it={key:0,class:"text-sm text-gray-500"},ut={key:1,class:"text-sm"},dt=["onClick"],rt={class:"mb-6"},mt={class:"flex items-center justify-between mb-3"},pt={key:0,class:"text-gray-500 text-sm"},ct={key:1,class:"space-y-3"},vt={class:"flex items-start justify-between"},bt={class:"font-medium"},gt={class:"text-xs text-gray-500 ml-2"},yt={class:"text-sm mt-1 whitespace-pre-wrap text-gray-600 dark:text-gray-300"},xt=["onClick"],ft={key:2,class:"mb-6"},kt={class:"flex flex-wrap gap-2"},_t={class:"flex justify-end pt-4 border-t dark:border-gray-700"},wt={key:4,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/50"},ht={class:"bg-white dark:bg-gray-800 rounded-lg shadow-xl w-full max-w-2xl mx-4 max-h-[90vh] overflow-y-auto"},jt={class:"p-6"},Ct={class:"text-xl font-semibold mb-4"},Ut={class:"grid grid-cols-2 gap-4"},Vt={class:"col-span-2"},Mt=["value"],$t={class:"grid grid-cols-4 gap-4"},St={class:"col-span-2"},Ot={class:"col-span-2"},Nt={class:"grid grid-cols-2 gap-4"},zt={class:"flex gap-3 pt-4"},At=["disabled"],Ft={key:5,class:"fixed inset-0 z-[60] flex items-center justify-center bg-black/50"},Tt={class:"bg-white dark:bg-gray-800 rounded-lg shadow-xl w-full max-w-md mx-4"},Kt={class:"p-6"},Dt={class:"grid grid-cols-2 gap-4"},qt={class:"grid grid-cols-2 gap-4"},Bt={class:"flex gap-4"},It={class:"flex items-center gap-2"},Lt={class:"flex items-center gap-2"},Ht={class:"flex gap-3"},Pt={key:6,class:"fixed inset-0 z-[60] flex items-center justify-center bg-black/50"},Et={class:"bg-white dark:bg-gray-800 rounded-lg shadow-xl w-full max-w-md mx-4"},Zt={class:"p-6"},Rt={class:"flex items-center gap-2"},Qt={class:"flex gap-3"},Wt=te({__name:"ObjectsView",setup(Gt){const y=se(),B=c(!0),I=c([]),h=c([]),o=c(null),x=c(""),$=c(""),S=c("active"),j=c(!1),O=c(!1),C=c(null),u=c({name:"",short_name:"",object_number:"",object_type:"other",street:"",house_number:"",postal_code:"",city:"",phone:"",email:"",description:"",access_info:"",parking_info:"",customer_name:"",size_sqm:null,floors:null}),N=c(!1),z=c(!1),p=c({name:"",role:"",company:"",phone:"",mobile:"",email:"",availability:"",is_primary:!1,is_emergency:!1,notes:""}),A=c(!1),v=c({title:"",category:"general",content:"",is_critical:!1});le(async()=>{await Promise.all([f(),P()]),B.value=!1});async function f(){try{const a=new URLSearchParams;S.value&&a.append("status",S.value),$.value&&a.append("type",$.value),x.value&&a.append("search",x.value),I.value=await g.get(`/objects?${a}`)}catch(a){console.error("Failed to load objects:",a)}}async function P(){try{h.value=await g.get("/objects/types")}catch(a){console.error("Failed to load types:",a)}}async function U(a){try{o.value=await g.get(`/objects/${a}`),O.value=!0}catch(e){console.error("Failed to load object:",e)}}const D=oe(()=>{let a=[...I.value];if(x.value){const e=x.value.toLowerCase();a=a.filter(b=>{var V,M,s;return b.name.toLowerCase().includes(e)||((V=b.city)==null?void 0:V.toLowerCase().includes(e))||((M=b.object_number)==null?void 0:M.toLowerCase().includes(e))||((s=b.customer_name)==null?void 0:s.toLowerCase().includes(e))})}return a});function E(){C.value=null,u.value={name:"",short_name:"",object_number:"",object_type:"other",street:"",house_number:"",postal_code:"",city:"",phone:"",email:"",description:"",access_info:"",parking_info:"",customer_name:"",size_sqm:null,floors:null},j.value=!0}function Z(a){C.value=a,u.value={...a},j.value=!0}async function R(){if(u.value.name){N.value=!0;try{C.value?await g.put(`/objects/${C.value.id}`,u.value):await g.post("/objects",u.value),j.value=!1,await f()}catch(a){console.error("Failed to save:",a)}finally{N.value=!1}}}async function Q(a){if(confirm("Objekt wirklich archivieren?"))try{await g.delete(`/objects/${a}`),await f()}catch(e){console.error("Failed to delete:",e)}}async function G(){if(!(!p.value.name||!o.value))try{await g.post(`/objects/${o.value.id}/contacts`,p.value),await U(o.value.id),z.value=!1,p.value={name:"",role:"",company:"",phone:"",mobile:"",email:"",availability:"",is_primary:!1,is_emergency:!1,notes:""}}catch(a){console.error("Failed to add contact:",a)}}async function J(a){if(confirm("Kontakt löschen?"))try{await g.delete(`/objects/${o.value.id}/contacts/${a}`),await U(o.value.id)}catch(e){console.error("Failed to delete:",e)}}async function W(){if(!(!v.value.title||!v.value.content||!o.value))try{await g.post(`/objects/${o.value.id}/instructions`,v.value),await U(o.value.id),A.value=!1,v.value={title:"",category:"general",content:"",is_critical:!1}}catch(a){console.error("Failed to add instruction:",a)}}async function X(a){if(confirm("Dienstanweisung löschen?"))try{await g.delete(`/objects/${o.value.id}/instructions/${a}`),await U(o.value.id)}catch(e){console.error("Failed to delete:",e)}}function L(a){const e=h.value.find(b=>b.key===a);return(e==null?void 0:e.icon)||"📍"}function Y(a){const e=h.value.find(b=>b.key===a);return(e==null?void 0:e.name)||a}function ee(a){return{general:"Allgemein",patrol:"Rundgang",emergency:"Notfall",access:"Zugang",reporting:"Meldewesen"}[a]||a}return(a,e)=>{var b,V,M;return n(),l("div",ie,[t("div",ue,[e[37]||(e[37]=t("h1",{class:"text-2xl font-bold text-gray-900 dark:text-white"},"🏢 Objekte",-1)),k(y).canManageUsers?(n(),l("button",{key:0,onClick:E,class:"btn btn-primary"}," Neues Objekt ")):r("",!0)]),t("div",de,[t("div",re,[t("div",null,[e[38]||(e[38]=t("label",{class:"block text-sm font-medium mb-1"},"🔍 Suche",-1)),d(t("input",{"onUpdate:modelValue":e[0]||(e[0]=s=>x.value=s),type:"text",class:"input",placeholder:"Name, Stadt, Kunde...",onInput:f},null,544),[[m,x.value]])]),t("div",null,[e[40]||(e[40]=t("label",{class:"block text-sm font-medium mb-1"},"🏷️ Typ",-1)),d(t("select",{"onUpdate:modelValue":e[1]||(e[1]=s=>$.value=s),class:"input",onChange:f},[e[39]||(e[39]=t("option",{value:""},"Alle Typen",-1)),(n(!0),l(_,null,w(h.value,s=>(n(),l("option",{key:s.key,value:s.key},i(s.icon)+" "+i(s.name),9,me))),128))],544),[[T,$.value]])]),t("div",null,[e[42]||(e[42]=t("label",{class:"block text-sm font-medium mb-1"},"📊 Status",-1)),d(t("select",{"onUpdate:modelValue":e[2]||(e[2]=s=>S.value=s),class:"input",onChange:f},[...e[41]||(e[41]=[t("option",{value:"active"},"Aktiv",-1),t("option",{value:"inactive"},"Inaktiv",-1),t("option",{value:"archived"},"Archiviert",-1),t("option",{value:"all"},"Alle",-1)])],544),[[T,S.value]])]),t("div",pe,[t("p",ce,i(D.value.length)+" Objekte ",1)])])]),B.value?(n(),l("div",ve,[...e[43]||(e[43]=[t("div",{class:"animate-spin text-4xl"},"⏳",-1)])])):D.value.length===0?(n(),l("div",be," Keine Objekte gefunden ")):(n(),l("div",ge,[(n(!0),l(_,null,w(D.value,s=>(n(),l("div",{key:s.id,class:"card hover:shadow-lg transition-all cursor-pointer",onClick:F=>U(s.id)},[t("div",xe,[t("div",fe,i(L(s.object_type)),1),t("div",ke,[t("h3",_e,i(s.name),1),s.city?(n(),l("p",we," 📍 "+i(s.postal_code)+" "+i(s.city),1)):r("",!0),s.customer_name?(n(),l("p",he," 👤 "+i(s.customer_name),1)):r("",!0),t("div",je,[t("span",Ce,i(Y(s.object_type)),1),s.contact_count?(n(),l("span",Ue," 👥 "+i(s.contact_count),1)):r("",!0),s.checkpoint_count?(n(),l("span",Ve," 📍 "+i(s.checkpoint_count)+" CP ",1)):r("",!0)])])]),k(y).canManageUsers?(n(),l("div",{key:0,class:"flex gap-2 mt-4 pt-3 border-t dark:border-gray-700",onClick:e[3]||(e[3]=K(()=>{},["stop"]))},[t("button",{onClick:F=>Z(s),class:"text-sm text-blue-600 hover:underline"}," ✏️ Bearbeiten ",8,Me),t("button",{onClick:F=>Q(s.id),class:"text-sm text-red-600 hover:underline"}," 🗑️ Archivieren ",8,$e)])):r("",!0)],8,ye))),128))])),O.value&&o.value?(n(),l("div",Se,[t("div",Oe,[t("div",Ne,[t("div",ze,[t("div",Ae,[t("span",Fe,i(L(o.value.object_type)),1),t("div",null,[t("h2",Te,i(o.value.name),1),o.value.city?(n(),l("p",Ke,i(o.value.street)+" "+i(o.value.house_number)+", "+i(o.value.postal_code)+" "+i(o.value.city),1)):r("",!0)])]),t("button",{onClick:e[4]||(e[4]=s=>O.value=!1),class:"text-2xl hover:bg-gray-100 dark:hover:bg-gray-700 p-2 rounded"}," ✕ ")]),t("div",De,[o.value.phone?(n(),l("div",qe,[e[44]||(e[44]=t("p",{class:"text-xs text-gray-500"},"📞 Telefon",-1)),t("p",Be,i(o.value.phone),1)])):r("",!0),o.value.email?(n(),l("div",Ie,[e[45]||(e[45]=t("p",{class:"text-xs text-gray-500"},"📧 E-Mail",-1)),t("p",Le,i(o.value.email),1)])):r("",!0),o.value.customer_name?(n(),l("div",He,[e[46]||(e[46]=t("p",{class:"text-xs text-gray-500"},"👤 Kunde",-1)),t("p",Pe,i(o.value.customer_name),1)])):r("",!0),o.value.object_number?(n(),l("div",Ee,[e[47]||(e[47]=t("p",{class:"text-xs text-gray-500"},"# Objektnummer",-1)),t("p",Ze,i(o.value.object_number),1)])):r("",!0)]),o.value.description?(n(),l("div",Re,[e[48]||(e[48]=t("h3",{class:"font-semibold mb-2"},"📝 Beschreibung",-1)),t("p",Qe,i(o.value.description),1)])):r("",!0),o.value.access_info||o.value.parking_info?(n(),l("div",Ge,[o.value.access_info?(n(),l("div",Je,[e[49]||(e[49]=t("h3",{class:"font-semibold mb-2"},"🔑 Zugang",-1)),t("p",We,i(o.value.access_info),1)])):r("",!0),o.value.parking_info?(n(),l("div",Xe,[e[50]||(e[50]=t("h3",{class:"font-semibold mb-2"},"🅿️ Parken",-1)),t("p",Ye,i(o.value.parking_info),1)])):r("",!0)])):r("",!0),t("div",et,[t("div",tt,[e[51]||(e[51]=t("h3",{class:"font-semibold"},"👥 Ansprechpartner",-1)),k(y).canManageUsers?(n(),l("button",{key:0,onClick:e[5]||(e[5]=s=>z.value=!0),class:"text-sm text-blue-600 hover:underline"}," Hinzufügen ")):r("",!0)]),(b=o.value.contacts)!=null&&b.length?(n(),l("div",lt,[(n(!0),l(_,null,w(o.value.contacts,s=>(n(),l("div",{key:s.id,class:"flex items-center justify-between bg-gray-50 dark:bg-gray-700 p-3 rounded"},[t("div",null,[t("p",nt,[H(i(s.name)+" ",1),s.is_primary?(n(),l("span",ot,"Haupt")):r("",!0),s.is_emergency?(n(),l("span",at,"Notfall")):r("",!0)]),s.role?(n(),l("p",it,i(s.role),1)):r("",!0),s.phone||s.mobile?(n(),l("p",ut," 📞 "+i(s.phone||s.mobile),1)):r("",!0)]),k(y).canManageUsers?(n(),l("button",{key:0,onClick:F=>J(s.id),class:"text-red-500 hover:text-red-700"}," 🗑️ ",8,dt)):r("",!0)]))),128))])):(n(),l("div",st," Keine Kontakte hinterlegt "))]),t("div",rt,[t("div",mt,[e[52]||(e[52]=t("h3",{class:"font-semibold"},"📋 Dienstanweisungen",-1)),k(y).canManageUsers?(n(),l("button",{key:0,onClick:e[6]||(e[6]=s=>A.value=!0),class:"text-sm text-blue-600 hover:underline"}," Hinzufügen ")):r("",!0)]),(V=o.value.instructions)!=null&&V.length?(n(),l("div",ct,[(n(!0),l(_,null,w(o.value.instructions,s=>(n(),l("div",{key:s.id,class:ae(["p-4 rounded border-l-4",s.is_critical?"border-red-500 bg-red-50 dark:bg-red-900/20":"border-gray-300 bg-gray-50 dark:bg-gray-700"])},[t("div",vt,[t("div",null,[t("p",bt,[H(i(s.title)+" ",1),t("span",gt,i(ee(s.category)),1)]),t("p",yt,i(s.content),1)]),k(y).canManageUsers?(n(),l("button",{key:0,onClick:F=>X(s.id),class:"text-red-500 hover:text-red-700 ml-2"}," 🗑️ ",8,xt)):r("",!0)])],2))),128))])):(n(),l("div",pt," Keine Dienstanweisungen hinterlegt "))]),(M=o.value.checkpoints)!=null&&M.length?(n(),l("div",ft,[e[53]||(e[53]=t("h3",{class:"font-semibold mb-3"},"📍 Kontrollpunkte",-1)),t("div",kt,[(n(!0),l(_,null,w(o.value.checkpoints,s=>(n(),l("span",{key:s.id,class:"bg-green-100 dark:bg-green-900 text-green-800 dark:text-green-200 px-3 py-1 rounded text-sm"},i(s.name),1))),128))])])):r("",!0),t("div",_t,[t("button",{onClick:e[7]||(e[7]=s=>O.value=!1),class:"btn"}," Schließen ")])])])])):r("",!0),j.value?(n(),l("div",wt,[t("div",ht,[t("div",jt,[t("h2",Ct,i(C.value?"✏️ Objekt bearbeiten":" Neues Objekt"),1),t("form",{onSubmit:K(R,["prevent"]),class:"space-y-4"},[t("div",Ut,[t("div",Vt,[e[54]||(e[54]=t("label",{class:"block text-sm font-medium mb-1"},"Name *",-1)),d(t("input",{"onUpdate:modelValue":e[8]||(e[8]=s=>u.value.name=s),type:"text",class:"input",required:""},null,512),[[m,u.value.name]])]),t("div",null,[e[55]||(e[55]=t("label",{class:"block text-sm font-medium mb-1"},"Kurzname",-1)),d(t("input",{"onUpdate:modelValue":e[9]||(e[9]=s=>u.value.short_name=s),type:"text",class:"input"},null,512),[[m,u.value.short_name]])]),t("div",null,[e[56]||(e[56]=t("label",{class:"block text-sm font-medium mb-1"},"Objektnummer",-1)),d(t("input",{"onUpdate:modelValue":e[10]||(e[10]=s=>u.value.object_number=s),type:"text",class:"input"},null,512),[[m,u.value.object_number]])]),t("div",null,[e[57]||(e[57]=t("label",{class:"block text-sm font-medium mb-1"},"Typ",-1)),d(t("select",{"onUpdate:modelValue":e[11]||(e[11]=s=>u.value.object_type=s),class:"input"},[(n(!0),l(_,null,w(h.value,s=>(n(),l("option",{key:s.key,value:s.key},i(s.icon)+" "+i(s.name),9,Mt))),128))],512),[[T,u.value.object_type]])]),t("div",null,[e[58]||(e[58]=t("label",{class:"block text-sm font-medium mb-1"},"Kunde",-1)),d(t("input",{"onUpdate:modelValue":e[12]||(e[12]=s=>u.value.customer_name=s),type:"text",class:"input"},null,512),[[m,u.value.customer_name]])])]),e[68]||(e[68]=t("hr",{class:"dark:border-gray-700"},null,-1)),t("div",$t,[t("div",St,[e[59]||(e[59]=t("label",{class:"block text-sm font-medium mb-1"},"Straße",-1)),d(t("input",{"onUpdate:modelValue":e[13]||(e[13]=s=>u.value.street=s),type:"text",class:"input"},null,512),[[m,u.value.street]])]),t("div",null,[e[60]||(e[60]=t("label",{class:"block text-sm font-medium mb-1"},"Nr.",-1)),d(t("input",{"onUpdate:modelValue":e[14]||(e[14]=s=>u.value.house_number=s),type:"text",class:"input"},null,512),[[m,u.value.house_number]])]),t("div",null,[e[61]||(e[61]=t("label",{class:"block text-sm font-medium mb-1"},"PLZ",-1)),d(t("input",{"onUpdate:modelValue":e[15]||(e[15]=s=>u.value.postal_code=s),type:"text",class:"input"},null,512),[[m,u.value.postal_code]])]),t("div",Ot,[e[62]||(e[62]=t("label",{class:"block text-sm font-medium mb-1"},"Stadt",-1)),d(t("input",{"onUpdate:modelValue":e[16]||(e[16]=s=>u.value.city=s),type:"text",class:"input"},null,512),[[m,u.value.city]])]),t("div",null,[e[63]||(e[63]=t("label",{class:"block text-sm font-medium mb-1"},"Telefon",-1)),d(t("input",{"onUpdate:modelValue":e[17]||(e[17]=s=>u.value.phone=s),type:"tel",class:"input"},null,512),[[m,u.value.phone]])]),t("div",null,[e[64]||(e[64]=t("label",{class:"block text-sm font-medium mb-1"},"E-Mail",-1)),d(t("input",{"onUpdate:modelValue":e[18]||(e[18]=s=>u.value.email=s),type:"email",class:"input"},null,512),[[m,u.value.email]])])]),t("div",null,[e[65]||(e[65]=t("label",{class:"block text-sm font-medium mb-1"},"Beschreibung",-1)),d(t("textarea",{"onUpdate:modelValue":e[19]||(e[19]=s=>u.value.description=s),class:"input",rows:"2"},null,512),[[m,u.value.description]])]),t("div",Nt,[t("div",null,[e[66]||(e[66]=t("label",{class:"block text-sm font-medium mb-1"},"🔑 Zugangsinfos",-1)),d(t("textarea",{"onUpdate:modelValue":e[20]||(e[20]=s=>u.value.access_info=s),class:"input",rows:"2",placeholder:"Schlüssel, Codes..."},null,512),[[m,u.value.access_info]])]),t("div",null,[e[67]||(e[67]=t("label",{class:"block text-sm font-medium mb-1"},"🅿️ Parkhinweise",-1)),d(t("textarea",{"onUpdate:modelValue":e[21]||(e[21]=s=>u.value.parking_info=s),class:"input",rows:"2"},null,512),[[m,u.value.parking_info]])])]),t("div",zt,[t("button",{type:"button",onClick:e[22]||(e[22]=s=>j.value=!1),class:"btn flex-1"}," Abbrechen "),t("button",{type:"submit",disabled:N.value,class:"btn btn-primary flex-1"},i(N.value?"Speichern...":"Speichern"),9,At)])],32)])])])):r("",!0),z.value?(n(),l("div",Ft,[t("div",Tt,[t("div",Kt,[e[78]||(e[78]=t("h2",{class:"text-xl font-semibold mb-4"},"👤 Kontakt hinzufügen",-1)),t("form",{onSubmit:K(G,["prevent"]),class:"space-y-4"},[t("div",null,[e[69]||(e[69]=t("label",{class:"block text-sm font-medium mb-1"},"Name *",-1)),d(t("input",{"onUpdate:modelValue":e[23]||(e[23]=s=>p.value.name=s),type:"text",class:"input",required:""},null,512),[[m,p.value.name]])]),t("div",Dt,[t("div",null,[e[70]||(e[70]=t("label",{class:"block text-sm font-medium mb-1"},"Rolle",-1)),d(t("input",{"onUpdate:modelValue":e[24]||(e[24]=s=>p.value.role=s),type:"text",class:"input",placeholder:"z.B. Hausmeister"},null,512),[[m,p.value.role]])]),t("div",null,[e[71]||(e[71]=t("label",{class:"block text-sm font-medium mb-1"},"Firma",-1)),d(t("input",{"onUpdate:modelValue":e[25]||(e[25]=s=>p.value.company=s),type:"text",class:"input"},null,512),[[m,p.value.company]])])]),t("div",qt,[t("div",null,[e[72]||(e[72]=t("label",{class:"block text-sm font-medium mb-1"},"Telefon",-1)),d(t("input",{"onUpdate:modelValue":e[26]||(e[26]=s=>p.value.phone=s),type:"tel",class:"input"},null,512),[[m,p.value.phone]])]),t("div",null,[e[73]||(e[73]=t("label",{class:"block text-sm font-medium mb-1"},"Mobil",-1)),d(t("input",{"onUpdate:modelValue":e[27]||(e[27]=s=>p.value.mobile=s),type:"tel",class:"input"},null,512),[[m,p.value.mobile]])])]),t("div",null,[e[74]||(e[74]=t("label",{class:"block text-sm font-medium mb-1"},"E-Mail",-1)),d(t("input",{"onUpdate:modelValue":e[28]||(e[28]=s=>p.value.email=s),type:"email",class:"input"},null,512),[[m,p.value.email]])]),t("div",Bt,[t("label",It,[d(t("input",{"onUpdate:modelValue":e[29]||(e[29]=s=>p.value.is_primary=s),type:"checkbox",class:"rounded"},null,512),[[q,p.value.is_primary]]),e[75]||(e[75]=t("span",{class:"text-sm"},"Hauptkontakt",-1))]),t("label",Lt,[d(t("input",{"onUpdate:modelValue":e[30]||(e[30]=s=>p.value.is_emergency=s),type:"checkbox",class:"rounded"},null,512),[[q,p.value.is_emergency]]),e[76]||(e[76]=t("span",{class:"text-sm"},"Notfallkontakt",-1))])]),t("div",Ht,[t("button",{type:"button",onClick:e[31]||(e[31]=s=>z.value=!1),class:"btn flex-1"},"Abbrechen"),e[77]||(e[77]=t("button",{type:"submit",class:"btn btn-primary flex-1"},"Hinzufügen",-1))])],32)])])])):r("",!0),A.value?(n(),l("div",Pt,[t("div",Et,[t("div",Zt,[e[85]||(e[85]=t("h2",{class:"text-xl font-semibold mb-4"},"📋 Dienstanweisung hinzufügen",-1)),t("form",{onSubmit:K(W,["prevent"]),class:"space-y-4"},[t("div",null,[e[79]||(e[79]=t("label",{class:"block text-sm font-medium mb-1"},"Titel *",-1)),d(t("input",{"onUpdate:modelValue":e[32]||(e[32]=s=>v.value.title=s),type:"text",class:"input",required:""},null,512),[[m,v.value.title]])]),t("div",null,[e[81]||(e[81]=t("label",{class:"block text-sm font-medium mb-1"},"Kategorie",-1)),d(t("select",{"onUpdate:modelValue":e[33]||(e[33]=s=>v.value.category=s),class:"input"},[...e[80]||(e[80]=[ne('<option value="general">Allgemein</option><option value="patrol">Rundgang</option><option value="emergency">Notfall</option><option value="access">Zugang</option><option value="reporting">Meldewesen</option>',5)])],512),[[T,v.value.category]])]),t("div",null,[e[82]||(e[82]=t("label",{class:"block text-sm font-medium mb-1"},"Inhalt *",-1)),d(t("textarea",{"onUpdate:modelValue":e[34]||(e[34]=s=>v.value.content=s),class:"input",rows:"4",required:""},null,512),[[m,v.value.content]])]),t("label",Rt,[d(t("input",{"onUpdate:modelValue":e[35]||(e[35]=s=>v.value.is_critical=s),type:"checkbox",class:"rounded"},null,512),[[q,v.value.is_critical]]),e[83]||(e[83]=t("span",{class:"text-sm text-red-600"},"⚠️ Als kritisch markieren",-1))]),t("div",Qt,[t("button",{type:"button",onClick:e[36]||(e[36]=s=>A.value=!1),class:"btn flex-1"},"Abbrechen"),e[84]||(e[84]=t("button",{type:"submit",class:"btn btn-primary flex-1"},"Hinzufügen",-1))])],32)])])])):r("",!0)])}}});export{Wt as default};