diff --git a/.DS_Store b/.DS_Store index 7112b092..1c0505f2 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/frontend/.DS_Store b/frontend/.DS_Store index f3eeb14b..ced4d570 100644 Binary files a/frontend/.DS_Store and b/frontend/.DS_Store differ diff --git a/frontend/coverage/html.meta.json.gz b/frontend/coverage/html.meta.json.gz index 1c352e84..df81a1ee 100644 Binary files a/frontend/coverage/html.meta.json.gz and b/frontend/coverage/html.meta.json.gz differ diff --git a/frontend/dist/assets/AssetDetailView-BJoQpmcV.js b/frontend/dist/assets/AssetDetailView-BJoQpmcV.js new file mode 100644 index 00000000..31f3545d --- /dev/null +++ b/frontend/dist/assets/AssetDetailView-BJoQpmcV.js @@ -0,0 +1 @@ +import{_ as P,r as w,c as R,o as S,i as M,w as c,s as F,v as $,g as l,b as t,n as o,e as s,a as d,aX as U,d as m,k as p,t as i,af as W,aR as Z,j as G,F as k,b9 as X}from"./index-QAlcqU00.js";import{u as q}from"./useMobileOptimization-Ds6Eb1bE.js";import{F as b}from"./FPBadge-DvOitM1C.js";import{F as Y,a as J}from"./FPPageHeader-CFIwZZgQ.js";const K={key:0},Q={key:1},tt={key:0},et={key:1},st={key:0,class:"flex items-center justify-center py-12"},at={key:1,class:"space-y-6"},rt={class:"text-sm text-gray-500"},ot={class:"text-gray-600"},nt={class:"flex items-center"},it={class:"ml-4"},lt={class:"text-2xl font-bold text-gray-900"},dt={class:"flex items-center"},ct={class:"ml-4"},ut={class:"flex items-center"},mt={class:"ml-4"},vt={class:"flex items-center"},xt={class:"ml-4"},pt={class:"bg-white shadow rounded-lg"},yt={class:"border-b border-gray-200"},ft=["onClick"],gt={key:0},wt={class:"space-y-3"},kt={class:"text-sm text-gray-900"},bt={class:"text-sm text-gray-900"},ht={class:"text-sm text-gray-900"},Ct={class:"text-sm text-gray-900"},At={class:"text-sm text-gray-900"},Mt={class:"space-y-3"},_t={class:"text-sm text-gray-900"},Nt={class:"text-sm text-gray-900"},Ht={class:"text-sm text-gray-900"},Lt={class:"text-sm text-gray-900"},Vt={key:1},jt={key:2},It={key:3},Dt={key:4},Et={key:2,class:"text-center py-12"},Tt={__name:"AssetDetailView",setup(Bt){const h=$(),_=F(),{isMobile:a}=q(),y=w(!0),u=w("overview"),r=w(null),N=[{id:"overview",label:"Overview"},{id:"maintenance",label:"Maintenance"},{id:"parts",label:"Parts"},{id:"workorders",label:"Work Orders"},{id:"analytics",label:"Analytics"}],H=R(()=>r.value&&{HVAC:"fire",ELEVATOR:"arrow-up-down",SECURITY:"shield-check",ELECTRICAL:"bolt"}[r.value.category]||"cog"),L=async()=>{y.value=!0,setTimeout(()=>{const n=parseInt(_.params.id),e={1:{id:1,name:"Main HVAC Unit",category:"HVAC",model:"Carrier 30HXC",manufacturer:"Carrier",serialNumber:"HV001234",status:"OPERATIONAL",location:"Roof Level 3",criticality:"HIGH",value:45e3,installDate:"2020-03-15",lastMaintenance:"2024-01-15T10:00:00Z",nextMaintenance:"2024-04-15T10:00:00Z",description:"Primary heating and cooling system for floors 1-3",uptime:"99.2",operatingHours:12500,warrantyActive:!0},2:{id:2,name:"Passenger Elevator",category:"ELEVATOR",model:"Otis Gen2",manufacturer:"Otis",serialNumber:"EL002456",status:"MAINTENANCE",location:"Main Lobby",criticality:"CRITICAL",value:12e4,installDate:"2019-08-20",lastMaintenance:"2024-01-20T14:00:00Z",nextMaintenance:"2024-02-20T14:00:00Z",description:"Main passenger elevator serving all floors",uptime:"98.7",operatingHours:18500,warrantyActive:!1}};r.value=e[n]||null,y.value=!1},1e3)},V=()=>{h.push(`/assets?edit=${r.value.id}`)},j=()=>{h.push(`/work-orders?create=true&assetId=${r.value.id}`)},I=n=>({OPERATIONAL:"success",MAINTENANCE:"warning",DOWN:"error",DECOMMISSIONED:"secondary"})[n]||"default",D=n=>({LOW:"secondary",MEDIUM:"info",HIGH:"warning",CRITICAL:"error"})[n]||"default",E=n=>n.toLowerCase().replace(/\b\w/g,e=>e.toUpperCase()),T=n=>n.toLowerCase().replace(/\b\w/g,e=>e.toUpperCase()),B=n=>n.toLowerCase().replace(/\b\w/g,e=>e.toUpperCase()),f=n=>n?new Date(n).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}):"N/A",O=n=>n?new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:0}).format(n):"N/A",z=n=>{if(!n)return"N/A";const e=new Date(n),C=Math.abs(new Date-e),A=Math.ceil(C/(1e3*60*60*24)),g=Math.floor(A/365),x=Math.floor(A%365/30);return g>0?`${g} year${g>1?"s":""}, ${x} month${x>1?"s":""}`:`${x} month${x>1?"s":""}`};return S(()=>{L()}),(n,e)=>(l(),M(Y,null,{header:c(()=>[m(J,{title:r.value?r.value.name:"Asset Details",description:r.value?r.value.description||"Asset information and details":"Loading asset details...",breadcrumbs:[{text:"Assets",to:"/assets"},{text:r.value?r.value.name:"Loading...",to:null}]},X({_:2},[r.value?{name:"actions",fn:c(()=>[m(s(k),{variant:"secondary",size:"sm",onClick:V},{default:c(()=>[(l(),d("svg",{class:o(["w-4 h-4",s(a)?"":"mr-2"]),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},e[1]||(e[1]=[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"},null,-1)]),2)),s(a)?(l(),d("span",Q,"Edit")):(l(),d("span",K,"Edit Asset"))]),_:1}),m(s(k),{variant:"primary",size:"sm",onClick:j},{default:c(()=>[(l(),d("svg",{class:o(["w-4 h-4",s(a)?"":"mr-2"]),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},e[2]||(e[2]=[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 6v6m0 0v6m0-6h6m-6 0H6"},null,-1)]),2)),s(a)?(l(),d("span",et,"Work Order")):(l(),d("span",tt,"Create Work Order"))]),_:1})]),key:"0"}:void 0]),1032,["title","description","breadcrumbs"])]),default:c(()=>[t("div",{class:o(s(a)?"px-4 py-6":"px-6 py-8")},[y.value?(l(),d("div",st,e[3]||(e[3]=[t("div",{class:"flex items-center space-x-2 text-gray-500"},[t("svg",{class:"w-8 h-8 animate-spin",fill:"none",viewBox:"0 0 24 24"},[t("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"}),t("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]),t("span",null,"Loading asset details...")],-1)]))):r.value?(l(),d("div",at,[t("div",{class:o(["bg-white shadow rounded-lg",s(a)?"p-4":"p-6"])},[t("div",{class:o(s(a)?"space-y-4":"flex items-start space-x-4")},[t("div",{class:o(["w-16 h-16 bg-blue-100 rounded-lg flex items-center justify-center",s(a)?"mx-auto":""])},[(l(),M(U(H.value),{class:"w-8 h-8 text-blue-600"}))],2),t("div",{class:o(["flex-1",s(a)?"text-center":""])},[t("div",{class:o(s(a)?"flex flex-wrap justify-center gap-2 mb-2":"flex items-center space-x-4 mb-2")},[m(s(b),{variant:I(r.value.status)},{default:c(()=>[p(i(E(r.value.status)),1)]),_:1},8,["variant"]),m(s(b),{variant:D(r.value.criticality)},{default:c(()=>[p(i(T(r.value.criticality)),1)]),_:1},8,["variant"]),t("span",rt,"Asset #"+i(r.value.id),1)],2),t("p",ot,i(r.value.description||"No description available"),1)],2)],2)],2),t("div",{class:o(["grid gap-4",s(a)?"grid-cols-1":"grid-cols-1 md:grid-cols-2 lg:grid-cols-4"])},[t("div",{class:o(["bg-white shadow rounded-lg",s(a)?"p-4":"p-6"])},[t("div",nt,[e[5]||(e[5]=t("div",{class:"flex-shrink-0"},[t("svg",{class:"w-8 h-8 text-green-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})])],-1)),t("div",it,[e[4]||(e[4]=t("p",{class:"text-sm font-medium text-gray-500"},"Uptime",-1)),t("p",lt,i(r.value.uptime||"99.2")+"%",1)])])],2),t("div",{class:o(["bg-white shadow rounded-lg",s(a)?"p-4":"p-6"])},[t("div",dt,[e[7]||(e[7]=t("div",{class:"flex-shrink-0"},[t("svg",{class:"w-8 h-8 text-blue-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})])],-1)),t("div",ct,[e[6]||(e[6]=t("p",{class:"text-sm font-medium text-gray-500"},"Last Maintenance",-1)),t("p",{class:o([s(a)?"text-base":"text-lg","font-semibold text-gray-900"])},i(f(r.value.lastMaintenance)),3)])])],2),t("div",{class:o(["bg-white shadow rounded-lg",s(a)?"p-4":"p-6"])},[t("div",ut,[e[9]||(e[9]=t("div",{class:"flex-shrink-0"},[t("svg",{class:"w-8 h-8 text-yellow-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"})])],-1)),t("div",mt,[e[8]||(e[8]=t("p",{class:"text-sm font-medium text-gray-500"},"Next Maintenance",-1)),t("p",{class:o([s(a)?"text-base":"text-lg","font-semibold text-gray-900"])},i(f(r.value.nextMaintenance)),3)])])],2),t("div",{class:o(["bg-white shadow rounded-lg",s(a)?"p-4":"p-6"])},[t("div",vt,[e[11]||(e[11]=t("div",{class:"flex-shrink-0"},[t("svg",{class:"w-8 h-8 text-purple-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8c-1.657 0-3 .895-3 2s1.343 2 3 2 3 .895 3 2-1.343 2-3 2m0-8c1.11 0 2.08.402 2.599 1M12 8V7m0 1v8m0 0v1m0-1c-1.11 0-2.08-.402-2.599-1"})])],-1)),t("div",xt,[e[10]||(e[10]=t("p",{class:"text-sm font-medium text-gray-500"},"Asset Value",-1)),t("p",{class:o([s(a)?"text-base":"text-lg","font-semibold text-gray-900"])},i(O(r.value.value)),3)])])],2)],2),t("div",pt,[t("div",yt,[t("nav",{class:o(["-mb-px flex",s(a)?"overflow-x-auto px-4":"space-x-8 px-6"]),"aria-label":"Tabs"},[(l(),d(W,null,Z(N,v=>t("button",{key:v.id,onClick:C=>u.value=v.id,class:o(["py-4 border-b-2 font-medium text-sm whitespace-nowrap",[u.value===v.id?"border-blue-500 text-blue-600":"border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300",s(a)?"px-3 flex-shrink-0":"px-1"]])},i(v.label),11,ft)),64))],2)]),t("div",{class:o(s(a)?"p-4":"p-6")},[u.value==="overview"?(l(),d("div",gt,[t("div",{class:o(["grid gap-6",s(a)?"grid-cols-1":"grid-cols-1 lg:grid-cols-2"])},[t("div",null,[t("h3",{class:o([s(a)?"text-base":"text-lg","font-medium text-gray-900 mb-4"])},"Basic Information",2),t("dl",wt,[t("div",{class:o(s(a)?"space-y-1":"flex justify-between")},[e[12]||(e[12]=t("dt",{class:"text-sm font-medium text-gray-500"},"Category",-1)),t("dd",kt,i(B(r.value.category)),1)],2),t("div",{class:o(s(a)?"space-y-1":"flex justify-between")},[e[13]||(e[13]=t("dt",{class:"text-sm font-medium text-gray-500"},"Model",-1)),t("dd",bt,i(r.value.model||"N/A"),1)],2),t("div",{class:o(s(a)?"space-y-1":"flex justify-between")},[e[14]||(e[14]=t("dt",{class:"text-sm font-medium text-gray-500"},"Serial Number",-1)),t("dd",ht,i(r.value.serialNumber||"N/A"),1)],2),t("div",{class:o(s(a)?"space-y-1":"flex justify-between")},[e[15]||(e[15]=t("dt",{class:"text-sm font-medium text-gray-500"},"Location",-1)),t("dd",Ct,i(r.value.location||"N/A"),1)],2),t("div",{class:o(s(a)?"space-y-1":"flex justify-between")},[e[16]||(e[16]=t("dt",{class:"text-sm font-medium text-gray-500"},"Installation Date",-1)),t("dd",At,i(f(r.value.installDate)),1)],2)])]),t("div",null,[t("h3",{class:o([s(a)?"text-base":"text-lg","font-medium text-gray-900 mb-4"])},"Technical Details",2),t("dl",Mt,[t("div",{class:o(s(a)?"space-y-1":"flex justify-between")},[e[17]||(e[17]=t("dt",{class:"text-sm font-medium text-gray-500"},"Manufacturer",-1)),t("dd",_t,i(r.value.manufacturer||"N/A"),1)],2),t("div",{class:o(s(a)?"space-y-1":"flex justify-between")},[e[18]||(e[18]=t("dt",{class:"text-sm font-medium text-gray-500"},"Operating Hours",-1)),t("dd",Nt,i(r.value.operatingHours||"0")+" hrs",1)],2),t("div",{class:o(s(a)?"space-y-1":"flex justify-between")},[e[19]||(e[19]=t("dt",{class:"text-sm font-medium text-gray-500"},"Warranty Status",-1)),t("dd",Ht,[m(s(b),{variant:r.value.warrantyActive?"success":"secondary"},{default:c(()=>[p(i(r.value.warrantyActive?"Active":"Expired"),1)]),_:1},8,["variant"])])],2),t("div",{class:o(s(a)?"space-y-1":"flex justify-between")},[e[20]||(e[20]=t("dt",{class:"text-sm font-medium text-gray-500"},"Asset Age",-1)),t("dd",Lt,i(z(r.value.installDate)),1)],2)])])],2)])):u.value==="maintenance"?(l(),d("div",Vt,e[21]||(e[21]=[t("div",{class:"text-center py-8 text-gray-500"},[t("svg",{class:"w-12 h-12 mx-auto mb-4 text-gray-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})]),t("p",{class:"text-lg font-medium"},"Maintenance History"),t("p",{class:"text-sm mt-1"},"Maintenance records and schedules will be displayed here")],-1)]))):u.value==="parts"?(l(),d("div",jt,e[22]||(e[22]=[t("div",{class:"text-center py-8 text-gray-500"},[t("svg",{class:"w-12 h-12 mx-auto mb-4 text-gray-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10"})]),t("p",{class:"text-lg font-medium"},"Parts & Inventory"),t("p",{class:"text-sm mt-1"},"Associated parts and spare inventory will be displayed here")],-1)]))):u.value==="workorders"?(l(),d("div",It,e[23]||(e[23]=[t("div",{class:"text-center py-8 text-gray-500"},[t("svg",{class:"w-12 h-12 mx-auto mb-4 text-gray-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5H7a2 2 0 00-2 2v10a2 2 0 002 2h8a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"})]),t("p",{class:"text-lg font-medium"},"Work Orders"),t("p",{class:"text-sm mt-1"},"Associated work orders and service history will be displayed here")],-1)]))):u.value==="analytics"?(l(),d("div",Dt,e[24]||(e[24]=[t("div",{class:"text-center py-8 text-gray-500"},[t("svg",{class:"w-12 h-12 mx-auto mb-4 text-gray-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"})]),t("p",{class:"text-lg font-medium"},"Performance Analytics"),t("p",{class:"text-sm mt-1"},"Performance metrics and analytics will be displayed here")],-1)]))):G("",!0)],2)])])):(l(),d("div",Et,[e[26]||(e[26]=t("svg",{class:"w-12 h-12 mx-auto mb-4 text-red-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),e[27]||(e[27]=t("h3",{class:"text-lg font-medium text-gray-900 mb-2"},"Asset Not Found",-1)),e[28]||(e[28]=t("p",{class:"text-gray-500 mb-4"},"The requested asset could not be found.",-1)),m(s(k),{onClick:e[0]||(e[0]=v=>n.$router.push("/assets"))},{default:c(()=>e[25]||(e[25]=[p(" Back to Assets ",-1)])),_:1,__:[25]})]))],2)]),_:1}))}},St=P(Tt,[["__scopeId","data-v-13b68a20"]]);export{St as default}; diff --git a/frontend/dist/assets/AssetDetailView-DzqeTmEM.js b/frontend/dist/assets/AssetDetailView-DzqeTmEM.js deleted file mode 100644 index 46a64368..00000000 --- a/frontend/dist/assets/AssetDetailView-DzqeTmEM.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as O,r as g,c as z,o as P,i as b,w as n,s as S,v as F,g as r,b as t,a as i,aW as R,d,e as u,k as m,t as o,af as $,aQ as U,n as W,j as Z,F as f,b9 as G}from"./index-BUdRbiwj.js";import{F as h}from"./FPBadge-BKY5dPnL.js";import{F as q,a as Q}from"./FPPageHeader-CTG2L28r.js";const X={class:"px-6 py-8"},Y={key:0,class:"flex items-center justify-center py-12"},J={key:1,class:"space-y-6"},K={class:"bg-white shadow rounded-lg p-6"},tt={class:"flex items-start space-x-4"},et={class:"w-16 h-16 bg-blue-100 rounded-lg flex items-center justify-center"},st={class:"flex items-center space-x-4 mb-2"},at={class:"text-sm text-gray-500"},ot={class:"text-gray-600"},rt={class:"grid grid-cols-1 md:grid-cols-4 gap-6"},nt={class:"bg-white shadow rounded-lg p-6"},it={class:"flex items-center"},lt={class:"ml-4"},dt={class:"text-2xl font-bold text-gray-900"},ct={class:"bg-white shadow rounded-lg p-6"},ut={class:"flex items-center"},mt={class:"ml-4"},vt={class:"text-lg font-semibold text-gray-900"},xt={class:"bg-white shadow rounded-lg p-6"},yt={class:"flex items-center"},pt={class:"ml-4"},gt={class:"text-lg font-semibold text-gray-900"},ft={class:"bg-white shadow rounded-lg p-6"},ht={class:"flex items-center"},wt={class:"ml-4"},kt={class:"text-lg font-semibold text-gray-900"},_t={class:"bg-white shadow rounded-lg"},bt={class:"border-b border-gray-200"},Ct={class:"-mb-px flex space-x-8 px-6","aria-label":"Tabs"},At=["onClick"],Mt={class:"p-6"},Nt={key:0},Ht={class:"grid grid-cols-1 lg:grid-cols-2 gap-6"},Lt={class:"space-y-3"},Vt={class:"flex justify-between"},It={class:"text-sm text-gray-900"},jt={class:"flex justify-between"},Dt={class:"text-sm text-gray-900"},Et={class:"flex justify-between"},Tt={class:"text-sm text-gray-900"},Bt={class:"flex justify-between"},Ot={class:"text-sm text-gray-900"},zt={class:"flex justify-between"},Pt={class:"text-sm text-gray-900"},St={class:"space-y-3"},Ft={class:"flex justify-between"},Rt={class:"text-sm text-gray-900"},$t={class:"flex justify-between"},Ut={class:"text-sm text-gray-900"},Wt={class:"flex justify-between"},Zt={class:"text-sm text-gray-900"},Gt={class:"flex justify-between"},qt={class:"text-sm text-gray-900"},Qt={key:1},Xt={key:2},Yt={key:3},Jt={key:4},Kt={key:2,class:"text-center py-12"},te={__name:"AssetDetailView",setup(ee){const w=F(),C=S(),x=g(!0),l=g("overview"),s=g(null),A=[{id:"overview",label:"Overview"},{id:"maintenance",label:"Maintenance"},{id:"parts",label:"Parts"},{id:"workorders",label:"Work Orders"},{id:"analytics",label:"Analytics"}],M=z(()=>s.value&&{HVAC:"fire",ELEVATOR:"arrow-up-down",SECURITY:"shield-check",ELECTRICAL:"bolt"}[s.value.category]||"cog"),N=async()=>{x.value=!0,setTimeout(()=>{const a=parseInt(C.params.id),e={1:{id:1,name:"Main HVAC Unit",category:"HVAC",model:"Carrier 30HXC",manufacturer:"Carrier",serialNumber:"HV001234",status:"OPERATIONAL",location:"Roof Level 3",criticality:"HIGH",value:45e3,installDate:"2020-03-15",lastMaintenance:"2024-01-15T10:00:00Z",nextMaintenance:"2024-04-15T10:00:00Z",description:"Primary heating and cooling system for floors 1-3",uptime:"99.2",operatingHours:12500,warrantyActive:!0},2:{id:2,name:"Passenger Elevator",category:"ELEVATOR",model:"Otis Gen2",manufacturer:"Otis",serialNumber:"EL002456",status:"MAINTENANCE",location:"Main Lobby",criticality:"CRITICAL",value:12e4,installDate:"2019-08-20",lastMaintenance:"2024-01-20T14:00:00Z",nextMaintenance:"2024-02-20T14:00:00Z",description:"Main passenger elevator serving all floors",uptime:"98.7",operatingHours:18500,warrantyActive:!1}};s.value=e[a]||null,x.value=!1},1e3)},H=()=>{w.push(`/assets?edit=${s.value.id}`)},L=()=>{w.push(`/work-orders?create=true&assetId=${s.value.id}`)},V=a=>({OPERATIONAL:"success",MAINTENANCE:"warning",DOWN:"error",DECOMMISSIONED:"secondary"})[a]||"default",I=a=>({LOW:"secondary",MEDIUM:"info",HIGH:"warning",CRITICAL:"error"})[a]||"default",j=a=>a.toLowerCase().replace(/\b\w/g,e=>e.toUpperCase()),D=a=>a.toLowerCase().replace(/\b\w/g,e=>e.toUpperCase()),E=a=>a.toLowerCase().replace(/\b\w/g,e=>e.toUpperCase()),y=a=>a?new Date(a).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}):"N/A",T=a=>a?new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:0}).format(a):"N/A",B=a=>{if(!a)return"N/A";const e=new Date(a),k=Math.abs(new Date-e),_=Math.ceil(k/(1e3*60*60*24)),p=Math.floor(_/365),v=Math.floor(_%365/30);return p>0?`${p} year${p>1?"s":""}, ${v} month${v>1?"s":""}`:`${v} month${v>1?"s":""}`};return P(()=>{N()}),(a,e)=>(r(),b(q,null,{header:n(()=>[d(Q,{title:s.value?s.value.name:"Asset Details",description:s.value?s.value.description||"Asset information and details":"Loading asset details...",breadcrumbs:[{text:"Assets",to:"/assets"},{text:s.value?s.value.name:"Loading...",to:null}]},G({_:2},[s.value?{name:"actions",fn:n(()=>[d(u(f),{variant:"secondary",size:"sm",onClick:H},{default:n(()=>e[1]||(e[1]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1),m(" Edit Asset ",-1)])),_:1,__:[1]}),d(u(f),{variant:"primary",size:"sm",onClick:L},{default:n(()=>e[2]||(e[2]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 6v6m0 0v6m0-6h6m-6 0H6"})],-1),m(" Create Work Order ",-1)])),_:1,__:[2]})]),key:"0"}:void 0]),1032,["title","description","breadcrumbs"])]),default:n(()=>[t("div",X,[x.value?(r(),i("div",Y,e[3]||(e[3]=[t("div",{class:"flex items-center space-x-2 text-gray-500"},[t("svg",{class:"w-8 h-8 animate-spin",fill:"none",viewBox:"0 0 24 24"},[t("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"}),t("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]),t("span",null,"Loading asset details...")],-1)]))):s.value?(r(),i("div",J,[t("div",K,[t("div",tt,[t("div",et,[(r(),b(R(M.value),{class:"w-8 h-8 text-blue-600"}))]),t("div",null,[t("div",st,[d(u(h),{variant:V(s.value.status)},{default:n(()=>[m(o(j(s.value.status)),1)]),_:1},8,["variant"]),d(u(h),{variant:I(s.value.criticality)},{default:n(()=>[m(o(D(s.value.criticality)),1)]),_:1},8,["variant"]),t("span",at,"Asset #"+o(s.value.id),1)]),t("p",ot,o(s.value.description||"No description available"),1)])])]),t("div",rt,[t("div",nt,[t("div",it,[e[5]||(e[5]=t("div",{class:"flex-shrink-0"},[t("svg",{class:"w-8 h-8 text-green-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})])],-1)),t("div",lt,[e[4]||(e[4]=t("p",{class:"text-sm font-medium text-gray-500"},"Uptime",-1)),t("p",dt,o(s.value.uptime||"99.2")+"%",1)])])]),t("div",ct,[t("div",ut,[e[7]||(e[7]=t("div",{class:"flex-shrink-0"},[t("svg",{class:"w-8 h-8 text-blue-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})])],-1)),t("div",mt,[e[6]||(e[6]=t("p",{class:"text-sm font-medium text-gray-500"},"Last Maintenance",-1)),t("p",vt,o(y(s.value.lastMaintenance)),1)])])]),t("div",xt,[t("div",yt,[e[9]||(e[9]=t("div",{class:"flex-shrink-0"},[t("svg",{class:"w-8 h-8 text-yellow-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"})])],-1)),t("div",pt,[e[8]||(e[8]=t("p",{class:"text-sm font-medium text-gray-500"},"Next Maintenance",-1)),t("p",gt,o(y(s.value.nextMaintenance)),1)])])]),t("div",ft,[t("div",ht,[e[11]||(e[11]=t("div",{class:"flex-shrink-0"},[t("svg",{class:"w-8 h-8 text-purple-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8c-1.657 0-3 .895-3 2s1.343 2 3 2 3 .895 3 2-1.343 2-3 2m0-8c1.11 0 2.08.402 2.599 1M12 8V7m0 1v8m0 0v1m0-1c-1.11 0-2.08-.402-2.599-1"})])],-1)),t("div",wt,[e[10]||(e[10]=t("p",{class:"text-sm font-medium text-gray-500"},"Asset Value",-1)),t("p",kt,o(T(s.value.value)),1)])])])]),t("div",_t,[t("div",bt,[t("nav",Ct,[(r(),i($,null,U(A,c=>t("button",{key:c.id,onClick:k=>l.value=c.id,class:W(["py-4 px-1 border-b-2 font-medium text-sm",l.value===c.id?"border-blue-500 text-blue-600":"border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300"])},o(c.label),11,At)),64))])]),t("div",Mt,[l.value==="overview"?(r(),i("div",Nt,[t("div",Ht,[t("div",null,[e[17]||(e[17]=t("h3",{class:"text-lg font-medium text-gray-900 mb-4"},"Basic Information",-1)),t("dl",Lt,[t("div",Vt,[e[12]||(e[12]=t("dt",{class:"text-sm font-medium text-gray-500"},"Category",-1)),t("dd",It,o(E(s.value.category)),1)]),t("div",jt,[e[13]||(e[13]=t("dt",{class:"text-sm font-medium text-gray-500"},"Model",-1)),t("dd",Dt,o(s.value.model||"N/A"),1)]),t("div",Et,[e[14]||(e[14]=t("dt",{class:"text-sm font-medium text-gray-500"},"Serial Number",-1)),t("dd",Tt,o(s.value.serialNumber||"N/A"),1)]),t("div",Bt,[e[15]||(e[15]=t("dt",{class:"text-sm font-medium text-gray-500"},"Location",-1)),t("dd",Ot,o(s.value.location||"N/A"),1)]),t("div",zt,[e[16]||(e[16]=t("dt",{class:"text-sm font-medium text-gray-500"},"Installation Date",-1)),t("dd",Pt,o(y(s.value.installDate)),1)])])]),t("div",null,[e[22]||(e[22]=t("h3",{class:"text-lg font-medium text-gray-900 mb-4"},"Technical Details",-1)),t("dl",St,[t("div",Ft,[e[18]||(e[18]=t("dt",{class:"text-sm font-medium text-gray-500"},"Manufacturer",-1)),t("dd",Rt,o(s.value.manufacturer||"N/A"),1)]),t("div",$t,[e[19]||(e[19]=t("dt",{class:"text-sm font-medium text-gray-500"},"Operating Hours",-1)),t("dd",Ut,o(s.value.operatingHours||"0")+" hrs",1)]),t("div",Wt,[e[20]||(e[20]=t("dt",{class:"text-sm font-medium text-gray-500"},"Warranty Status",-1)),t("dd",Zt,[d(u(h),{variant:s.value.warrantyActive?"success":"secondary"},{default:n(()=>[m(o(s.value.warrantyActive?"Active":"Expired"),1)]),_:1},8,["variant"])])]),t("div",Gt,[e[21]||(e[21]=t("dt",{class:"text-sm font-medium text-gray-500"},"Asset Age",-1)),t("dd",qt,o(B(s.value.installDate)),1)])])])])])):l.value==="maintenance"?(r(),i("div",Qt,e[23]||(e[23]=[t("div",{class:"text-center py-8 text-gray-500"},[t("svg",{class:"w-12 h-12 mx-auto mb-4 text-gray-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})]),t("p",{class:"text-lg font-medium"},"Maintenance History"),t("p",{class:"text-sm mt-1"},"Maintenance records and schedules will be displayed here")],-1)]))):l.value==="parts"?(r(),i("div",Xt,e[24]||(e[24]=[t("div",{class:"text-center py-8 text-gray-500"},[t("svg",{class:"w-12 h-12 mx-auto mb-4 text-gray-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10"})]),t("p",{class:"text-lg font-medium"},"Parts & Inventory"),t("p",{class:"text-sm mt-1"},"Associated parts and spare inventory will be displayed here")],-1)]))):l.value==="workorders"?(r(),i("div",Yt,e[25]||(e[25]=[t("div",{class:"text-center py-8 text-gray-500"},[t("svg",{class:"w-12 h-12 mx-auto mb-4 text-gray-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5H7a2 2 0 00-2 2v10a2 2 0 002 2h8a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"})]),t("p",{class:"text-lg font-medium"},"Work Orders"),t("p",{class:"text-sm mt-1"},"Associated work orders and service history will be displayed here")],-1)]))):l.value==="analytics"?(r(),i("div",Jt,e[26]||(e[26]=[t("div",{class:"text-center py-8 text-gray-500"},[t("svg",{class:"w-12 h-12 mx-auto mb-4 text-gray-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"})]),t("p",{class:"text-lg font-medium"},"Performance Analytics"),t("p",{class:"text-sm mt-1"},"Performance metrics and analytics will be displayed here")],-1)]))):Z("",!0)])])])):(r(),i("div",Kt,[e[28]||(e[28]=t("svg",{class:"w-12 h-12 mx-auto mb-4 text-red-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),e[29]||(e[29]=t("h3",{class:"text-lg font-medium text-gray-900 mb-2"},"Asset Not Found",-1)),e[30]||(e[30]=t("p",{class:"text-gray-500 mb-4"},"The requested asset could not be found.",-1)),d(u(f),{onClick:e[0]||(e[0]=c=>a.$router.push("/assets"))},{default:n(()=>e[27]||(e[27]=[m(" Back to Assets ",-1)])),_:1,__:[27]})]))])]),_:1}))}},re=O(te,[["__scopeId","data-v-81ab7b3a"]]);export{re as default}; diff --git a/frontend/dist/assets/AssetsListView-8qBNA660.js b/frontend/dist/assets/AssetsListView-8qBNA660.js new file mode 100644 index 00000000..5f707893 --- /dev/null +++ b/frontend/dist/assets/AssetsListView-8qBNA660.js @@ -0,0 +1,61 @@ +import{r as D,c as X,o as Ee,aO as Ln,_ as rt,m as tt,a as R,g as k,b as r,j as W,t as $,d as x,w as B,k as q,e as C,F as J,ac as Fn,h as De,s as Bn,v as Vn,ad as Un,i as Ae,n as ne,Q as _t,af as Qe,aR as We,ae as zn,aV as Hn}from"./index-QAlcqU00.js";import{u as $n,A as me,C as jn,a as Yn,b as Gn,S as qn}from"./assets-CvfPiugk.js";import{u as Qn}from"./locations-ElrWcwNd.js";import{u as Wn,W as Jn,C as Kn}from"./CustomFieldsForm-BwcGiCuE.js";import{u as Xn}from"./useMobileOptimization-Ds6Eb1bE.js";import{F as Zn,a as ea}from"./FPPageHeader-CFIwZZgQ.js";import{F as oe}from"./FPInput-D5RURom0.js";import{F as ce}from"./FPSelect-j7n_x8eB.js";import{F as ta}from"./FPStats-DOY0PQQF.js";import{F as na}from"./FPTable-CWvngIYd.js";import{F as Rt}from"./FPModal-DMoPysvU.js";import{F as ge}from"./FPBadge-DvOitM1C.js";import{F as Dt}from"./FPTabs-qq-Tmb7J.js";import{F as Pt}from"./FPFileUpload-Bk17EQTg.js";import{_ as aa}from"./FormRestoreNotification-2Wflg1mH.js";import"./FPCheckbox-DcRYwN3n.js";import"./FPCard-AB6NRXg5.js";function oa(){const e=D({}),t=D([]),i=D([]),s=D([]),n=D([]),o=D([]),u=D(!1),c=D(null),d=X(()=>{if(!e.value.healthMetrics)return 0;const v=e.value.healthMetrics,l={availability:.3,reliability:.25,performance:.2,quality:.15,safety:.1};let m=0;return Object.entries(l).forEach(([g,O])=>{m+=(v[g]||0)*O}),Math.round(m)}),y=X(()=>t.value.filter(v=>v.healthScore<60||v.downtime>20)),A=X(()=>t.value.filter(v=>v.healthScore>=90).sort((v,l)=>l.healthScore-v.healthScore).slice(0,10)),H=X(()=>{if(!n.value.length)return{};const v=n.value[n.value.length-1],l=n.value[n.value.length-2];if(!l)return{trend:"stable",change:0};const m=(v.total-l.total)/l.total*100;return{trend:m>5?"increasing":m<-5?"decreasing":"stable",change:Math.round(m*100)/100,current:v.total,previous:l.total}}),b=[{id:"availability",name:"Asset Availability",description:"Percentage of time asset is operational",unit:"%",target:95,formula:"(Uptime / Total Time) × 100"},{id:"reliability",name:"Asset Reliability",description:"Mean time between failures",unit:"hours",target:1e3,formula:"Operating Time / Number of Failures"},{id:"performance",name:"Performance Efficiency",description:"Actual vs designed performance",unit:"%",target:90,formula:"(Actual Output / Designed Output) × 100"},{id:"oee",name:"Overall Equipment Effectiveness",description:"Combined availability, performance, and quality",unit:"%",target:85,formula:"Availability × Performance × Quality"},{id:"mtbf",name:"Mean Time Between Failures",description:"Average time between breakdowns",unit:"hours",target:2e3,formula:"Total Operating Time / Number of Failures"},{id:"mttr",name:"Mean Time To Repair",description:"Average time to restore after failure",unit:"hours",target:4,formula:"Total Repair Time / Number of Repairs"}],P=[{id:"asset_performance",name:"Asset Performance Report",description:"Comprehensive performance analysis",frequency:["DAILY","WEEKLY","MONTHLY","QUARTERLY"],metrics:["availability","reliability","performance","oee"]},{id:"maintenance_summary",name:"Maintenance Summary",description:"Maintenance activities and costs",frequency:["WEEKLY","MONTHLY","QUARTERLY"],metrics:["maintenance_cost","work_orders","compliance"]},{id:"cost_analysis",name:"Cost Analysis Report",description:"Financial analysis of asset operations",frequency:["MONTHLY","QUARTERLY","ANNUAL"],metrics:["total_cost","maintenance_cost","parts_cost","labor_cost"]},{id:"compliance_audit",name:"Compliance Audit",description:"Regulatory compliance status",frequency:["MONTHLY","QUARTERLY","ANNUAL"],metrics:["inspections","certifications","violations"]},{id:"lifecycle_analysis",name:"Asset Lifecycle Analysis",description:"Asset age, depreciation, and replacement planning",frequency:["QUARTERLY","ANNUAL"],metrics:["age","depreciation","replacement_cost","eol_prediction"]}],V=async(v,l="30d")=>{try{u.value=!0,c.value=null;const[m,g,O,U,j]=await Promise.all([analyticsRepository.getAssetAnalytics(v,l),analyticsRepository.getPerformanceMetrics(v,l),analyticsRepository.getTrendData(v,l),analyticsRepository.getComplianceData(v,l),analyticsRepository.getCostAnalysis(v,l)]);e.value=m.data||m,t.value=g.data||g,i.value=O.data||O,s.value=U.data||U,n.value=j.data||j}catch(m){c.value=m.message||"Failed to load asset analytics",console.error("Error loading asset analytics:",m)}finally{u.value=!1}},z=async(v,l,m,g={})=>{try{u.value=!0;const O={templateId:v,assetIds:Array.isArray(l)?l:[l],startDate:m.start,endDate:m.end,parameters:g,format:"JSON",generatedAt:new Date().toISOString()},U=await reportRepository.generate(O),j=U.data||U;return o.value.push(j),j}catch(O){throw c.value=O.message||"Failed to generate report",O}finally{u.value=!1}},Y=(v,l)=>{var j,K;const m=b.find(re=>re.id===v);if(!m||!l)return null;let g=0;switch(v){case"availability":g=l.uptime&&l.totalTime?l.uptime/l.totalTime*100:0;break;case"reliability":g=l.operatingTime&&l.failures?l.operatingTime/l.failures:0;break;case"performance":g=l.actualOutput&&l.designedOutput?l.actualOutput/l.designedOutput*100:0;break;case"oee":const re=((j=Y("availability",l))==null?void 0:j.value)||0,L=((K=Y("performance",l))==null?void 0:K.value)||0,h=l.qualityRate||100;g=re/100*(L/100)*(h/100)*100;break;case"mtbf":g=l.operatingTime&&l.failures?l.operatingTime/l.failures:0;break;case"mttr":g=l.repairTime&&l.repairs?l.repairTime/l.repairs:0;break;default:g=l[v]||0}const O=m.target,U=(g-O)/O*100;return{value:Math.round(g*100)/100,target:O,variance:Math.round(U*100)/100,status:Math.abs(U)<=5?"on_target":U>0?"above_target":"below_target",trend:N(v,l)}},N=(v,l)=>{if(!l.historical||l.historical.length<2)return"stable";const g=l.historical.slice(-3).map(j=>j[v]||0),O=g[g.length-1]-g[0],U=g[0]*.05;return Math.abs(O)<=U?"stable":O>0?"improving":"declining"},w=v=>{const l=[];return v.availability<90&&l.push({type:"warning",category:"availability",message:"Asset availability is below target",recommendation:"Review maintenance schedule and identify recurring issues",priority:"high"}),v.mtbf<500&&l.push({type:"alert",category:"reliability",message:"Mean time between failures is critically low",recommendation:"Investigate root causes and consider preventive maintenance",priority:"critical"}),v.maintenanceCost>v.replacementThreshold*.7&&l.push({type:"info",category:"cost",message:"Maintenance costs approaching replacement threshold",recommendation:"Evaluate asset lifecycle and replacement options",priority:"medium"}),v.performance<80&&l.push({type:"warning",category:"performance",message:"Asset performance is declining",recommendation:"Schedule performance assessment and calibration",priority:"high"}),l.sort((m,g)=>{const O={critical:4,high:3,medium:2,low:1};return O[g.priority]-O[m.priority]})},T=v=>{const l={age:v.age||0,utilization:v.utilizationRate||0,maintenanceCompliance:v.maintenanceCompliance||100,performance:v.performance||100,failures:v.recentFailures||0},m={age:.2,utilization:.2,maintenanceCompliance:.3,performance:.2,failures:.1};let g=0;g+=Math.min(l.age/20,1)*m.age*100;const O=l.utilization>90||l.utilization<10?1:0;g+=O*m.utilization*100,g+=(100-l.maintenanceCompliance)*m.maintenanceCompliance,g+=(100-l.performance)*m.performance,g+=Math.min(l.failures*10,100)*m.failures;const U=Math.min(g,100);return{riskScore:Math.round(U),riskLevel:U>=80?"high":U>=60?"medium":"low",timeToFailure:U>=80?"1-3 months":U>=60?"3-6 months":"6+ months",confidence:_(l),factors:Object.entries(l).map(([j,K])=>({name:j,value:K,impact:m[j]*100}))}},_=v=>{const l=Object.values(v).filter(m=>m!=null).length/Object.keys(v).length;return Math.round(l*100)},F=(v,l)=>{if(!v.length)return[];const g=[...v.map(U=>U[l]||0)].sort((U,j)=>j-U),O={p90:g[Math.floor(g.length*.1)],p75:g[Math.floor(g.length*.25)],p50:g[Math.floor(g.length*.5)],p25:g[Math.floor(g.length*.75)],p10:g[Math.floor(g.length*.9)]};return v.map(U=>{const j=U[l]||0;let K="bottom";return j>=O.p90?K="top":j>=O.p75?K="high":j>=O.p50?K="medium":j>=O.p25&&(K="low"),{...U,benchmark:{value:j,ranking:K,percentile:M(j,g)}}})},M=(v,l)=>{const m=l.findIndex(g=>g<=v);return m===-1?100:Math.round(m/l.length*100)},S=(v,l="csv")=>{switch(l.toLowerCase()){case"csv":return E(v);case"json":return JSON.stringify(v,null,2);case"excel":return G(v);default:return JSON.stringify(v,null,2)}},E=v=>{if(!Array.isArray(v)||v.length===0)return"";const l=Object.keys(v[0]);return[l.join(","),...v.map(g=>l.map(O=>`"${g[O]||""}"`).join(","))].join(` +`)},G=v=>E(v);return{analyticsData:e,performanceMetrics:t,trendData:i,complianceData:s,costAnalysis:n,reports:o,loading:u,error:c,assetHealthScore:d,criticalAssets:y,topPerformers:A,costTrends:H,kpiDefinitions:b,reportTemplates:P,loadAssetAnalytics:V,generateReport:z,calculateKPI:Y,calculateTrend:N,getAssetHealthInsights:w,predictAssetFailure:T,calculatePredictionConfidence:_,benchmarkAssets:F,calculatePercentile:M,exportReportData:S,exportToCSV:E,exportToExcel:G}}function sa(){const e=D(!1),t=D({}),i=D([]),s=D([]),n=D([]),o=D([]),u=D(null),c={FAILURE_PREDICTION:"failure_prediction",MAINTENANCE_OPTIMIZATION:"maintenance_optimization",COST_FORECASTING:"cost_forecasting",PERFORMANCE_ANALYSIS:"performance_analysis",ANOMALY_DETECTION:"anomaly_detection"},d=X(()=>i.value.length>0),y=X(()=>s.value.filter(M=>M.severity==="CRITICAL")),A=X(()=>n.value.filter(M=>M.priority==="HIGH")),H=async(M,S=30)=>{try{e.value=!0,await new Promise(v=>setTimeout(v,2e3));const E={assetId:M,failureProbability:Math.random()*.3+.1,predictedFailureDate:new Date(Date.now()+Math.random()*30*24*60*60*1e3),confidence:Math.random()*.3+.7,riskFactors:[{factor:"Operating hours exceeding recommended limits",weight:.3},{factor:"Temperature anomalies detected",weight:.25},{factor:"Vibration patterns indicate wear",weight:.2},{factor:"Maintenance intervals exceeded",weight:.15},{factor:"Historical failure patterns",weight:.1}],recommendedActions:["Schedule immediate inspection","Replace critical components","Increase monitoring frequency"],timeframe:S,generatedAt:new Date},G=i.value.findIndex(v=>v.assetId===M);return G>=0?i.value[G]=E:i.value.push(E),E}catch(E){throw console.error("Failed to predict asset failure:",E),u.value="Failed to generate failure prediction",E}finally{e.value=!1}},b=async M=>{try{e.value=!0,await new Promise(E=>setTimeout(E,1500));const S=M.map(E=>({assetId:E.id,currentInterval:E.maintenanceInterval||90,optimizedInterval:Math.floor(Math.random()*30)+75,potentialSavings:Math.floor(Math.random()*5e3)+1e3,riskReduction:Math.random()*.2+.1,reasoning:["Historical performance data analysis","Similar asset benchmarking","Operating condition factors","Cost-benefit optimization"],implementationDate:new Date(Date.now()+7*24*60*60*1e3)}));return n.value.push({id:`maintenance_opt_${Date.now()}`,type:"MAINTENANCE_OPTIMIZATION",title:"Optimized Maintenance Schedules",description:"AI-recommended maintenance schedule adjustments",optimizations:S,totalSavings:S.reduce((E,G)=>E+G.potentialSavings,0),priority:"MEDIUM",confidence:.85,generatedAt:new Date}),S}catch(S){throw console.error("Failed to optimize maintenance schedule:",S),u.value="Failed to optimize maintenance schedule",S}finally{e.value=!1}},P=async M=>{try{e.value=!0,await new Promise(E=>setTimeout(E,1e3));const S=[{id:`anomaly_${Date.now()}_1`,assetId:M.id,type:"PERFORMANCE",severity:"HIGH",metric:"Operating Temperature",normalRange:"18-22°C",currentValue:"26°C",deviation:.18,detectedAt:new Date,description:"Operating temperature significantly above normal range",potentialCauses:["Cooling system malfunction","Blocked air filters","Refrigerant leak"],recommendedActions:["Inspect cooling system immediately","Check and replace air filters","Schedule refrigerant level check"]},{id:`anomaly_${Date.now()}_2`,assetId:M.id,type:"VIBRATION",severity:"MEDIUM",metric:"Vibration Level",normalRange:"0.1-0.3 mm/s",currentValue:"0.45 mm/s",deviation:.12,detectedAt:new Date,description:"Vibration levels elevated above normal operating range",potentialCauses:["Bearing wear","Misalignment","Imbalanced components"],recommendedActions:["Schedule vibration analysis","Inspect bearings and alignment","Plan preventive maintenance"]}];return s.value.push(...S),S}catch(S){throw console.error("Failed to detect anomalies:",S),u.value="Failed to detect anomalies",S}finally{e.value=!1}},V=async(M,S=365)=>{try{e.value=!0,await new Promise(v=>setTimeout(v,1500));const E=Math.random()*1e4+5e3;return{assetId:M,timeframe:S,totalForecast:E,breakdown:{maintenance:E*.6,repairs:E*.25,replacements:E*.1,energy:E*.05},monthlyTrend:Array.from({length:12},(v,l)=>({month:l+1,projected:E/12*(1+Math.random()*.2-.1),confidence:Math.random()*.2+.8})),riskFactors:[{factor:"Asset age",impact:.15},{factor:"Operating conditions",impact:.1},{factor:"Historical patterns",impact:.2},{factor:"Market trends",impact:.05}],generatedAt:new Date}}catch(E){throw console.error("Failed to forecast costs:",E),u.value="Failed to forecast costs",E}finally{e.value=!1}},z=async(M,S=[])=>{try{e.value=!0,await new Promise(v=>setTimeout(v,1200));const E={assetId:M,overallScore:Math.random()*30+70,metrics:{efficiency:Math.random()*20+80,reliability:Math.random()*25+75,availability:Math.random()*15+85,performance:Math.random()*20+80},trends:{last30Days:Math.random()*10-5,last90Days:Math.random()*15-7.5,last365Days:Math.random()*20-10},benchmarking:{industryAverage:Math.random()*20+75,peerAssets:Math.random()*25+70,bestInClass:Math.random()*15+85},insights:["Performance consistently above industry average","Slight degradation in efficiency over last quarter","Reliability metrics excellent compared to similar assets","Opportunity for improvement in energy efficiency"],recommendations:["Continue current maintenance strategy","Investigate efficiency degradation causes","Consider energy optimization upgrades","Monitor performance trends closely"],generatedAt:new Date},G=o.value.findIndex(v=>v.assetId===M);return G>=0?o.value[G]=E:o.value.push(E),E}catch(E){throw console.error("Failed to analyze performance:",E),u.value="Failed to analyze performance",E}finally{e.value=!1}},Y=async M=>{try{e.value=!0,await new Promise(E=>setTimeout(E,1e3));const S=[{id:`rec_${Date.now()}_1`,type:"ENERGY_OPTIMIZATION",title:"Energy Efficiency Improvement",description:"Upgrade HVAC controls to reduce energy consumption by 15%",priority:"HIGH",estimatedSavings:12e3,implementationCost:25e3,paybackPeriod:24,affectedAssets:M.filter(E=>E.category==="HVAC").map(E=>E.id),confidence:.87,actions:["Install smart thermostats","Upgrade building automation system","Implement demand-response controls"],timeline:"3-6 months",generatedAt:new Date},{id:`rec_${Date.now()}_2`,type:"PREDICTIVE_MAINTENANCE",title:"Implement Condition-Based Monitoring",description:"Deploy IoT sensors for real-time asset monitoring",priority:"MEDIUM",estimatedSavings:8e3,implementationCost:15e3,paybackPeriod:18,affectedAssets:M.filter(E=>E.criticality==="HIGH").map(E=>E.id),confidence:.92,actions:["Install vibration sensors","Deploy temperature monitoring","Set up data analytics platform"],timeline:"2-4 months",generatedAt:new Date}];return n.value.push(...S),S}catch(S){throw console.error("Failed to generate recommendations:",S),u.value="Failed to generate recommendations",S}finally{e.value=!1}},N=M=>{let S=100;const E=M.age||0;if(S-=Math.min(E*2,20),M.lastMaintenance){const l=Math.floor((new Date-new Date(M.lastMaintenance))/864e5);S-=Math.min(l*.1,15)}return S-={OPERATIONAL:0,MAINTENANCE:10,DOWN:30,DECOMMISSIONED:100}[M.status]||0,S*={LOW:1,MEDIUM:1.1,HIGH:1.2,CRITICAL:1.3}[M.criticality]||1,Math.max(0,Math.min(100,Math.round(S)))},w=M=>{const S=N(M),E=M.age||0,G=M.criticality||"LOW";let v=0;S<50?v+=40:S<70?v+=25:S<85&&(v+=10),E>15?v+=30:E>10?v+=20:E>5&&(v+=10),v*={CRITICAL:1.5,HIGH:1.3,MEDIUM:1.1,LOW:1}[G];const m=Math.min(100,Math.round(v));return m>=70?"HIGH":m>=40?"MEDIUM":"LOW"},T=(M,S,E,G)=>{t.value[M]={accuracy:S,precision:E,recall:G,f1Score:2*(E*G)/(E+G),lastUpdated:new Date}},_=()=>{i.value=[],s.value=[],n.value=[],o.value=[],u.value=null},F=()=>({predictions:i.value,anomalies:s.value,recommendations:n.value,performanceInsights:o.value,modelMetrics:t.value,exportedAt:new Date().toISOString()});return Ee(()=>{T(c.FAILURE_PREDICTION,.87,.85,.89),T(c.MAINTENANCE_OPTIMIZATION,.92,.9,.94),T(c.ANOMALY_DETECTION,.84,.88,.82),T(c.COST_FORECASTING,.79,.81,.78),T(c.PERFORMANCE_ANALYSIS,.91,.89,.93)}),{isProcessing:e,modelMetrics:t,predictions:i,anomalies:s,recommendations:n,performanceInsights:o,error:u,hasActivePredictions:d,criticalAnomalies:y,highPriorityRecommendations:A,AI_MODELS:c,predictAssetFailure:H,optimizeMaintenanceSchedule:b,detectAnomalies:P,forecastCosts:V,analyzePerformance:z,generateRecommendations:Y,calculateHealthScore:N,assessRisk:w,updateModelMetrics:T,clearAnalytics:_,exportAnalytics:F}}function ra(){const e=D(navigator.onLine),t=D([]),i=D(new Map),s=D(!1),n=D(null),o=D(null),u=X(()=>t.value.length>0),c=X(()=>s.value?"syncing":e.value?u.value?"pending":"synced":"offline"),d=X(()=>e.value&&!s.value),y={CACHED_ASSETS:"cmms_cached_assets",PENDING_ACTIONS:"cmms_pending_actions",LAST_SYNC:"cmms_last_sync",APP_VERSION:"cmms_app_version"},A={CREATE_ASSET:"CREATE_ASSET",UPDATE_ASSET:"UPDATE_ASSET",DELETE_ASSET:"DELETE_ASSET",CREATE_WORK_ORDER:"CREATE_WORK_ORDER",UPDATE_MAINTENANCE:"UPDATE_MAINTENANCE",CONSUME_PART:"CONSUME_PART",UPDATE_VENDOR:"UPDATE_VENDOR"},H=()=>{try{const L=localStorage.getItem(y.PENDING_ACTIONS);L&&(t.value=JSON.parse(L));const h=localStorage.getItem(y.LAST_SYNC);h&&(n.value=new Date(h));const Q=localStorage.getItem(y.CACHED_ASSETS);if(Q){const Z=JSON.parse(Q);i.value=new Map(Object.entries(Z))}}catch(L){console.error("Failed to initialize offline storage:",L),o.value="Failed to initialize offline storage"}},b=()=>{try{localStorage.setItem(y.PENDING_ACTIONS,JSON.stringify(t.value));const L=Object.fromEntries(i.value);localStorage.setItem(y.CACHED_ASSETS,JSON.stringify(L)),n.value&&localStorage.setItem(y.LAST_SYNC,n.value.toISOString())}catch(L){console.error("Failed to save to storage:",L),o.value="Failed to save offline data"}},P=(L,h)=>{i.value.set(`asset_${L}`,{data:h,timestamp:new Date().toISOString(),type:"asset"}),b()},V=L=>{const h=i.value.get(`asset_${L}`);if(!h)return null;const Q=new Date(h.timestamp);return(new Date-Q)/(1e3*60*60)>24?(i.value.delete(`asset_${L}`),b(),null):h.data},z=(L,h,Q="normal")=>{const Z={id:Y(),type:L,data:h,timestamp:new Date().toISOString(),priority:Q,retryCount:0,maxRetries:3};return Q==="high"?t.value.unshift(Z):t.value.push(Z),b(),Z.id},Y=()=>`action_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,N=async()=>{if(!d.value||t.value.length===0)return{success:!0,processed:0,failed:0};s.value=!0;let L=0,h=0;try{const Q=[...t.value];for(const Z of Q)try{await w(Z);const ie=t.value.findIndex(ee=>ee.id===Z.id);ie!==-1&&t.value.splice(ie,1),L++}catch(ie){if(console.error("Failed to process action:",Z,ie),Z.retryCount++,Z.retryCount>=Z.maxRetries){const ee=t.value.findIndex(Ne=>Ne.id===Z.id);ee!==-1&&t.value.splice(ee,1)}h++}n.value=new Date,b()}catch(Q){console.error("Sync error:",Q),o.value="Sync failed"}finally{s.value=!1}return{success:!0,processed:L,failed:h}},w=async L=>{switch(L.type){case A.CREATE_ASSET:return await T(L.data);case A.UPDATE_ASSET:return await _(L.data);case A.DELETE_ASSET:return await F(L.data);case A.CREATE_WORK_ORDER:return await M(L.data);case A.UPDATE_MAINTENANCE:return await S(L.data);case A.CONSUME_PART:return await E(L.data);case A.UPDATE_VENDOR:return await G(L.data);default:throw new Error(`Unknown action type: ${L.type}`)}},T=async L=>(await new Promise(h=>setTimeout(h,1e3)),{success:!0,id:Date.now()}),_=async L=>(await new Promise(h=>setTimeout(h,1e3)),{success:!0}),F=async L=>(await new Promise(h=>setTimeout(h,1e3)),{success:!0}),M=async L=>(await new Promise(h=>setTimeout(h,1e3)),{success:!0,id:Date.now()}),S=async L=>(await new Promise(h=>setTimeout(h,1e3)),{success:!0}),E=async L=>(await new Promise(h=>setTimeout(h,1e3)),{success:!0}),G=async L=>(await new Promise(h=>setTimeout(h,1e3)),{success:!0}),v=()=>{t.value=[],b()},l=L=>{const h=t.value.findIndex(Q=>Q.id===L);h!==-1&&(t.value.splice(h,1),b())},m=()=>{try{let L=0;return Object.values(y).forEach(h=>{const Q=localStorage.getItem(h);Q&&(L+=new Blob([Q]).size)}),{used:L,usedMB:(L/(1024*1024)).toFixed(2),maxSize:5*1024*1024,percentage:(L/(5*1024*1024)*100).toFixed(1)}}catch{return{used:0,usedMB:"0",maxSize:0,percentage:"0"}}},g=()=>{i.value.clear(),Object.values(y).forEach(L=>{localStorage.removeItem(L)})},O=()=>({pendingActions:t.value,cachedData:Object.fromEntries(i.value),lastSyncTime:n.value,exportedAt:new Date().toISOString()}),U=L=>{try{return L.pendingActions&&(t.value=L.pendingActions),L.cachedData&&(i.value=new Map(Object.entries(L.cachedData))),L.lastSyncTime&&(n.value=new Date(L.lastSyncTime)),b(),!0}catch(h){return console.error("Failed to import offline data:",h),!1}},j=()=>{e.value=!0,u.value&&setTimeout(()=>{N()},1e3)},K=()=>{e.value=!1},re=L=>{"serviceWorker"in navigator&&"sync"in window.ServiceWorkerRegistration.prototype&&navigator.serviceWorker.ready.then(h=>h.sync.register(L)).catch(h=>{console.error("Background sync registration failed:",h)})};return Ee(()=>{H(),window.addEventListener("online",j),window.addEventListener("offline",K)}),Ln(()=>{window.removeEventListener("online",j),window.removeEventListener("offline",K)}),{isOnline:e,pendingActions:t,cachedData:i,syncInProgress:s,lastSyncTime:n,error:o,hasPendingActions:u,syncStatus:c,canSync:d,ACTION_TYPES:A,initializeOfflineStorage:H,cacheAssetData:P,getCachedAssetData:V,queueAction:z,syncPendingActions:N,clearPendingActions:v,removeAction:l,getStorageUsage:m,clearCache:g,exportOfflineData:O,importOfflineData:U,requestBackgroundSync:re}}function ia(){const e=D(!1),t=D([]),i=D([]),s=D([]),n=D([]),o=D([]),u=D([]),c=D(null),d={SAFETY:"SAFETY",ENVIRONMENTAL:"ENVIRONMENTAL",ENERGY:"ENERGY",FIRE:"FIRE",ACCESSIBILITY:"ACCESSIBILITY",BUILDING_CODE:"BUILDING_CODE",INSURANCE:"INSURANCE",ISO:"ISO",OSHA:"OSHA",EPA:"EPA"},y={COMPLIANT:"COMPLIANT",NON_COMPLIANT:"NON_COMPLIANT",PENDING:"PENDING",EXPIRED:"EXPIRED",EXPIRING_SOON:"EXPIRING_SOON"},A=X(()=>o.value.filter(l=>l.status==="OPEN")),H=X(()=>{const l=new Date;return l.setDate(l.getDate()+30),i.value.filter(m=>new Date(m.expiryDate)<=l&&m.status==="ACTIVE")}),b=X(()=>{if(t.value.length===0)return 0;const l=t.value.filter(m=>m.status===y.COMPLIANT).length;return Math.round(l/t.value.length*100)}),P=X(()=>u.value.filter(l=>l.priority==="CRITICAL"&&!l.dismissed)),V=async(l=null)=>{try{e.value=!0,await new Promise(g=>setTimeout(g,1e3));const m=[{id:1,assetId:l||1,category:d.FIRE,requirement:"Fire Safety Inspection",description:"Annual fire safety system inspection and certification",status:y.COMPLIANT,lastInspection:"2024-01-15",nextInspection:"2025-01-15",inspector:"City Fire Department",certificateNumber:"FS-2024-001",notes:"All systems operational, minor recommendations implemented"},{id:2,assetId:l||1,category:d.ELEVATOR,requirement:"Elevator Safety Inspection",description:"State-mandated elevator safety inspection",status:y.EXPIRING_SOON,lastInspection:"2024-02-20",nextInspection:"2024-08-20",inspector:"State Elevator Inspector",certificateNumber:"EL-2024-045",notes:"Certificate expires soon, schedule renewal inspection"},{id:3,assetId:l||1,category:d.ENVIRONMENTAL,requirement:"EPA Refrigerant Compliance",description:"EPA Section 608 refrigerant handling compliance",status:y.NON_COMPLIANT,lastInspection:"2023-06-10",nextInspection:"2024-06-10",inspector:"EPA Certified Technician",certificateNumber:"EPA-608-2023",notes:"Refrigerant leak detected, repair required for compliance"}];t.value=l?m.filter(g=>g.assetId===l):m}catch(m){console.error("Failed to load compliance data:",m),c.value="Failed to load compliance data"}finally{e.value=!1}},z=async(l=null)=>{try{const m=[{id:1,assetId:l||1,name:"HVAC Certification",issuingBody:"ASHRAE",certificateNumber:"ASHRAE-2024-HVAC-001",issueDate:"2024-01-15",expiryDate:"2025-01-15",status:"ACTIVE",renewalRequired:!0,renewalNotificationDays:60,cost:2500,attachments:["certificate.pdf","inspection_report.pdf"]},{id:2,assetId:l||2,name:"Elevator Operating License",issuingBody:"State Department of Labor",certificateNumber:"DOL-EL-2024-789",issueDate:"2024-02-20",expiryDate:"2024-08-20",status:"EXPIRING_SOON",renewalRequired:!0,renewalNotificationDays:30,cost:1200,attachments:["license.pdf"]}];i.value=l?m.filter(g=>g.assetId===l):m}catch(m){console.error("Failed to load certifications:",m),c.value="Failed to load certifications"}},Y=async(l,m)=>{try{e.value=!0,await new Promise(O=>setTimeout(O,1e3));const g=t.value.find(O=>O.id===l);return g&&(g.nextInspection=m,g.status=y.PENDING,F({type:"INSPECTION",message:`${g.requirement} scheduled for ${m}`,dueDate:m,priority:"HIGH",assetId:g.assetId})),!0}catch(g){return console.error("Failed to schedule inspection:",g),c.value="Failed to schedule inspection",!1}finally{e.value=!1}},N=async(l,m)=>{try{e.value=!0;const g=t.value.find(O=>O.id===l);return g&&(g.lastInspection=m.inspectionDate,g.status=m.passed?y.COMPLIANT:y.NON_COMPLIANT,g.inspector=m.inspector,g.notes=m.notes,m.nextInspectionDate&&(g.nextInspection=m.nextInspectionDate),m.certificateNumber&&(g.certificateNumber=m.certificateNumber),m.passed||o.value.push({id:Date.now(),complianceRecordId:l,assetId:g.assetId,category:g.category,violation:m.violations||["Inspection failed"],severity:m.severity||"MEDIUM",status:"OPEN",discoveredDate:m.inspectionDate,description:m.notes,correctiveActions:m.correctiveActions||[]})),!0}catch(g){return console.error("Failed to record inspection result:",g),c.value="Failed to record inspection result",!1}finally{e.value=!1}},w=async(l,m)=>{try{e.value=!0;const g=i.value.find(O=>O.id===l);return g&&(g.issueDate=m.issueDate,g.expiryDate=m.expiryDate,g.certificateNumber=m.certificateNumber||g.certificateNumber,g.status="ACTIVE",g.cost=m.cost||g.cost,m.attachments&&g.attachments.push(...m.attachments),u.value=u.value.filter(O=>!(O.type==="CERTIFICATION_RENEWAL"&&O.certificationId===l))),!0}catch(g){return console.error("Failed to renew certification:",g),c.value="Failed to renew certification",!1}finally{e.value=!1}},T=l=>{const m={id:Date.now(),assetId:l.assetId,category:l.category,violation:l.violation,severity:l.severity||"MEDIUM",status:"OPEN",discoveredDate:new Date().toISOString(),description:l.description||"",correctiveActions:l.correctiveActions||[],dueDate:l.dueDate,assignedTo:l.assignedTo,estimatedCost:l.estimatedCost||0};return o.value.push(m),(m.severity==="HIGH"||m.severity==="CRITICAL")&&F({type:"VIOLATION",message:`Critical compliance violation: ${m.violation}`,dueDate:m.dueDate,priority:"CRITICAL",assetId:m.assetId,violationId:m.id}),m},_=async(l,m)=>{try{const g=o.value.find(O=>O.id===l);return g&&(g.status="RESOLVED",g.resolvedDate=new Date().toISOString(),g.resolution=m.resolution,g.resolvedBy=m.resolvedBy,g.actualCost=m.actualCost,u.value=u.value.filter(O=>O.violationId!==l)),!0}catch(g){return console.error("Failed to resolve violation:",g),c.value="Failed to resolve violation",!1}},F=l=>{const m={id:Date.now(),type:l.type,message:l.message,dueDate:l.dueDate,priority:l.priority||"MEDIUM",assetId:l.assetId,dismissed:!1,createdAt:new Date().toISOString(),...l};return u.value.push(m),m},M=l=>{const m=u.value.find(g=>g.id===l);m&&(m.dismissed=!0,m.dismissedAt=new Date().toISOString())},S=async(l=[],m=null)=>{try{e.value=!0,await new Promise(U=>setTimeout(U,1500));const g=l.length>0?t.value.filter(U=>l.includes(U.assetId)):t.value,O={generatedAt:new Date().toISOString(),dateRange:m,summary:{totalRecords:g.length,compliant:g.filter(U=>U.status===y.COMPLIANT).length,nonCompliant:g.filter(U=>U.status===y.NON_COMPLIANT).length,pending:g.filter(U=>U.status===y.PENDING).length,expiring:g.filter(U=>U.status===y.EXPIRING_SOON).length},complianceScore:b.value,byCategory:{},violations:A.value,upcomingRenewals:H.value,recommendations:["Schedule immediate inspection for expired certifications","Implement preventive maintenance for critical assets","Review compliance procedures quarterly","Train staff on regulatory requirements"]};return Object.values(d).forEach(U=>{const j=g.filter(K=>K.category===U);j.length>0&&(O.byCategory[U]={total:j.length,compliant:j.filter(K=>K.status===y.COMPLIANT).length,nonCompliant:j.filter(K=>K.status===y.NON_COMPLIANT).length,score:Math.round(j.filter(K=>K.status===y.COMPLIANT).length/j.length*100)})}),O}catch(g){return console.error("Failed to generate compliance report:",g),c.value="Failed to generate compliance report",null}finally{e.value=!1}},E=async()=>{try{await new Promise(m=>setTimeout(m,1e3));const l=[{regulation:"OSHA Safety Standards",category:d.SAFETY,effectiveDate:"2024-07-01",description:"Updated workplace safety requirements for industrial equipment",impact:"MEDIUM",actionRequired:"Review safety procedures and update documentation"},{regulation:"EPA Refrigerant Regulations",category:d.ENVIRONMENTAL,effectiveDate:"2024-09-01",description:"New reporting requirements for refrigerant usage",impact:"LOW",actionRequired:"Update reporting procedures"}];return n.value.push(...l),l.forEach(m=>{(m.impact==="HIGH"||m.impact==="CRITICAL")&&F({type:"REGULATORY_UPDATE",message:`New regulation: ${m.regulation}`,dueDate:m.effectiveDate,priority:m.impact==="CRITICAL"?"CRITICAL":"HIGH",regulation:m.regulation})}),l}catch(l){return console.error("Failed to check regulatory updates:",l),c.value="Failed to check regulatory updates",[]}},G=()=>({complianceRecords:t.value,certifications:i.value,violations:o.value,reminders:u.value,complianceScore:b.value,exportedAt:new Date().toISOString()}),v=()=>{const l=new Date;i.value.forEach(m=>{const g=new Date(m.expiryDate),O=Math.ceil((g-l)/(1e3*60*60*24));O<=m.renewalNotificationDays&&m.status==="ACTIVE"&&(m.status="EXPIRING_SOON",u.value.find(j=>j.type==="CERTIFICATION_RENEWAL"&&j.certificationId===m.id)||F({type:"CERTIFICATION_RENEWAL",message:`${m.name} expires in ${O} days`,dueDate:m.expiryDate,priority:O<=7?"CRITICAL":"HIGH",assetId:m.assetId,certificationId:m.id}))}),t.value.forEach(m=>{m.nextInspection&&new Date(m.nextInspection){v(),setInterval(v,60*60*1e3)}),{loading:e,complianceRecords:t,certifications:i,audits:s,regulations:n,violations:o,reminders:u,error:c,activeViolations:A,upcomingRenewals:H,complianceScore:b,criticalReminders:P,COMPLIANCE_CATEGORIES:d,COMPLIANCE_STATUS:y,loadComplianceData:V,loadCertifications:z,scheduleInspection:Y,recordInspectionResult:N,renewCertification:w,createViolation:T,resolveViolation:_,createReminder:F,dismissReminder:M,generateComplianceReport:S,checkRegulatoryUpdates:E,exportComplianceData:G,performComplianceCheck:v}}const la={class:"asset-id-generator"},ca={class:"mb-4 p-4 bg-green-50 border border-green-200 rounded-lg"},ua={class:"flex items-center justify-between"},da={class:"text-lg font-bold text-green-900 font-mono"},ma={class:"flex items-center space-x-2"},fa={key:0,class:"mb-4 p-4 bg-yellow-50 border border-yellow-200 rounded-lg"},ga={class:"flex items-center space-x-3"},va={key:1,class:"mb-4 p-4 bg-gray-50 border border-gray-200 rounded-lg"},pa={class:"grid grid-cols-1 md:grid-cols-3 gap-4"},ha={class:"mt-3 flex items-center justify-between"},ya={class:"text-xs text-gray-500"},wa={class:"font-mono font-bold"},Ca={class:"flex space-x-2"},Aa={key:2,class:"mt-2 text-sm text-red-600"},ba={__name:"AssetIdGenerator",props:{modelValue:{type:String,default:""},disabled:{type:Boolean,default:!1},error:{type:String,default:null}},emits:["update:modelValue"],setup(e,{expose:t,emit:i}){const s=e,n=i,o=D(""),u=D(""),c=D(!1),d=D(!1),y=D(!1),A=D("AST"),H=D("TIMESTAMP"),b=D(3),P=[{value:"TIMESTAMP",label:"Timestamp"},{value:"YYYYMMDD",label:"YYYY-MM-DD"},{value:"YYMMDD",label:"YY-MM-DD"},{value:"YYYY",label:"Year Only"}],V=[{value:2,label:"2 chars"},{value:3,label:"3 chars"},{value:4,label:"4 chars"},{value:5,label:"5 chars"}],z=X(()=>!y.value),Y=X(()=>N(A.value,H.value,b.value)),N=(v,l,m)=>{let g="";const O=new Date;switch(l){case"TIMESTAMP":g=Date.now().toString().slice(-6);break;case"YYYYMMDD":g=O.toISOString().slice(0,10).replace(/-/g,"");break;case"YYMMDD":g=O.toISOString().slice(2,10).replace(/-/g,"");break;case"YYYY":g=O.getFullYear().toString();break}const U=Math.random().toString(36).substring(2,2+m).toUpperCase();return`${v}-${g}-${U}`},w=()=>{const v=N(A.value,H.value,b.value);o.value=v,y.value=!1,n("update:modelValue",v)},T=()=>{y.value||w()},_=()=>{d.value=!d.value,d.value||(c.value=!1)},F=()=>{u.value.trim()&&(o.value=u.value.trim(),y.value=!0,c.value=!1,d.value=!1,n("update:modelValue",u.value.trim()))},M=()=>{u.value="",c.value=!1},S=()=>{},E=()=>{w(),d.value=!1},G=()=>{A.value="AST",H.value="TIMESTAMP",b.value=3};return tt(()=>d.value,v=>{v&&(c.value=!0)}),tt(()=>s.modelValue,v=>{v!==o.value&&(o.value=v)}),Ee(()=>{s.modelValue?(o.value=s.modelValue,y.value=!0):w()}),t({generateId:w,regenerateId:T}),(v,l)=>(k(),R("div",la,[r("div",ca,[r("div",ua,[r("div",null,[l[4]||(l[4]=r("h4",{class:"text-sm font-medium text-green-900"},"Asset ID",-1)),r("p",da,$(o.value||"Auto-generated"),1)]),r("div",ma,[x(C(J),{variant:"outline",size:"sm",onClick:T,disabled:e.disabled||!z.value},{default:B(()=>l[5]||(l[5]=[r("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),q(" Regenerate ",-1)])),_:1,__:[5]},8,["disabled"]),x(C(J),{variant:"ghost",size:"sm",onClick:_},{default:B(()=>l[6]||(l[6]=[r("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"}),r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"})],-1),q(" Customize ",-1)])),_:1,__:[6]})])])]),c.value?(k(),R("div",fa,[l[9]||(l[9]=r("h4",{class:"text-sm font-medium text-yellow-900 mb-2"},"Manual ID Entry",-1)),r("div",ga,[x(C(oe),{modelValue:u.value,"onUpdate:modelValue":l[0]||(l[0]=m=>u.value=m),placeholder:"Enter custom asset ID...",disabled:e.disabled,class:"flex-1"},null,8,["modelValue","disabled"]),x(C(J),{onClick:F,disabled:!u.value||e.disabled},{default:B(()=>l[7]||(l[7]=[q(" Use ID ",-1)])),_:1,__:[7]},8,["disabled"]),x(C(J),{variant:"ghost",onClick:M},{default:B(()=>l[8]||(l[8]=[q(" Cancel ",-1)])),_:1,__:[8]})]),l[10]||(l[10]=r("p",{class:"text-xs text-yellow-700 mt-2"}," Enter a custom asset ID according to your company's asset register format ",-1))])):W("",!0),d.value?(k(),R("div",va,[l[17]||(l[17]=r("h4",{class:"text-sm font-medium text-gray-700 mb-3"},"ID Format Customization",-1)),r("div",pa,[r("div",null,[l[11]||(l[11]=r("label",{class:"block text-xs font-medium text-gray-600 mb-1"},"Prefix",-1)),x(C(oe),{modelValue:A.value,"onUpdate:modelValue":l[1]||(l[1]=m=>A.value=m),placeholder:"AST",disabled:e.disabled,onInput:S},null,8,["modelValue","disabled"])]),r("div",null,[l[12]||(l[12]=r("label",{class:"block text-xs font-medium text-gray-600 mb-1"},"Date Format",-1)),x(C(ce),{modelValue:H.value,"onUpdate:modelValue":l[2]||(l[2]=m=>H.value=m),options:P,disabled:e.disabled,onChange:S},null,8,["modelValue","disabled"])]),r("div",null,[l[13]||(l[13]=r("label",{class:"block text-xs font-medium text-gray-600 mb-1"},"Suffix Length",-1)),x(C(ce),{modelValue:b.value,"onUpdate:modelValue":l[3]||(l[3]=m=>b.value=m),options:V,disabled:e.disabled,onChange:S},null,8,["modelValue","disabled"])])]),r("div",ha,[r("p",ya,[l[14]||(l[14]=q(" Preview: ",-1)),r("span",wa,$(Y.value),1)]),r("div",Ca,[x(C(J),{size:"sm",onClick:E},{default:B(()=>l[15]||(l[15]=[q("Apply",-1)])),_:1,__:[15]}),x(C(J),{size:"sm",variant:"ghost",onClick:G},{default:B(()=>l[16]||(l[16]=[q("Reset",-1)])),_:1,__:[16]})])])])):W("",!0),e.error?(k(),R("div",Aa,$(e.error),1)):W("",!0)]))}},Ia=rt(ba,[["__scopeId","data-v-11fdeccb"]]);var Me={},Ea=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then},Bt={},ae={};let it;const Ma=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];ae.getSymbolSize=function(t){if(!t)throw new Error('"version" cannot be null or undefined');if(t<1||t>40)throw new Error('"version" should be in range from 1 to 40');return t*4+17};ae.getSymbolTotalCodewords=function(t){return Ma[t]};ae.getBCHDigit=function(e){let t=0;for(;e!==0;)t++,e>>>=1;return t};ae.setToSJISFunction=function(t){if(typeof t!="function")throw new Error('"toSJISFunc" is not a valid function.');it=t};ae.isKanjiModeEnabled=function(){return typeof it<"u"};ae.toSJIS=function(t){return it(t)};var Le={};(function(e){e.L={bit:1},e.M={bit:0},e.Q={bit:3},e.H={bit:2};function t(i){if(typeof i!="string")throw new Error("Param is not a string");switch(i.toLowerCase()){case"l":case"low":return e.L;case"m":case"medium":return e.M;case"q":case"quartile":return e.Q;case"h":case"high":return e.H;default:throw new Error("Unknown EC Level: "+i)}}e.isValid=function(s){return s&&typeof s.bit<"u"&&s.bit>=0&&s.bit<4},e.from=function(s,n){if(e.isValid(s))return s;try{return t(s)}catch{return n}}})(Le);function Vt(){this.buffer=[],this.length=0}Vt.prototype={get:function(e){const t=Math.floor(e/8);return(this.buffer[t]>>>7-e%8&1)===1},put:function(e,t){for(let i=0;i>>t-i-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(e){const t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}};var Sa=Vt;function Se(e){if(!e||e<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}Se.prototype.set=function(e,t,i,s){const n=e*this.size+t;this.data[n]=i,s&&(this.reservedBit[n]=!0)};Se.prototype.get=function(e,t){return this.data[e*this.size+t]};Se.prototype.xor=function(e,t,i){this.data[e*this.size+t]^=i};Se.prototype.isReserved=function(e,t){return this.reservedBit[e*this.size+t]};var Na=Se,Ut={};(function(e){const t=ae.getSymbolSize;e.getRowColCoords=function(s){if(s===1)return[];const n=Math.floor(s/7)+2,o=t(s),u=o===145?26:Math.ceil((o-13)/(2*n-2))*2,c=[o-7];for(let d=1;d=0&&n<=7},e.from=function(n){return e.isValid(n)?parseInt(n,10):void 0},e.getPenaltyN1=function(n){const o=n.size;let u=0,c=0,d=0,y=null,A=null;for(let H=0;H=5&&(u+=t.N1+(c-5)),y=P,c=1),P=n.get(b,H),P===A?d++:(d>=5&&(u+=t.N1+(d-5)),A=P,d=1)}c>=5&&(u+=t.N1+(c-5)),d>=5&&(u+=t.N1+(d-5))}return u},e.getPenaltyN2=function(n){const o=n.size;let u=0;for(let c=0;c=10&&(c===1488||c===93)&&u++,d=d<<1&2047|n.get(A,y),A>=10&&(d===1488||d===93)&&u++}return u*t.N3},e.getPenaltyN4=function(n){let o=0;const u=n.data.length;for(let d=0;d=0;){const u=o[0];for(let d=0;d0){const o=new Uint8Array(this.degree);return o.set(s,n),o}return s};var Ta=lt,Yt={},de={},ct={};ct.isValid=function(t){return!isNaN(t)&&t>=1&&t<=40};var se={};const Gt="[0-9]+",xa="[A-Z $%*+\\-./:]+";let Ie="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";Ie=Ie.replace(/u/g,"\\u");const _a="(?:(?![A-Z0-9 $%*+\\-./:]|"+Ie+`)(?:.|[\r +]))+`;se.KANJI=new RegExp(Ie,"g");se.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g");se.BYTE=new RegExp(_a,"g");se.NUMERIC=new RegExp(Gt,"g");se.ALPHANUMERIC=new RegExp(xa,"g");const Ra=new RegExp("^"+Ie+"$"),Da=new RegExp("^"+Gt+"$"),Pa=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");se.testKanji=function(t){return Ra.test(t)};se.testNumeric=function(t){return Da.test(t)};se.testAlphanumeric=function(t){return Pa.test(t)};(function(e){const t=ct,i=se;e.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]},e.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]},e.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]},e.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]},e.MIXED={bit:-1},e.getCharCountIndicator=function(o,u){if(!o.ccBits)throw new Error("Invalid mode: "+o);if(!t.isValid(u))throw new Error("Invalid version: "+u);return u>=1&&u<10?o.ccBits[0]:u<27?o.ccBits[1]:o.ccBits[2]},e.getBestModeForData=function(o){return i.testNumeric(o)?e.NUMERIC:i.testAlphanumeric(o)?e.ALPHANUMERIC:i.testKanji(o)?e.KANJI:e.BYTE},e.toString=function(o){if(o&&o.id)return o.id;throw new Error("Invalid mode")},e.isValid=function(o){return o&&o.bit&&o.ccBits};function s(n){if(typeof n!="string")throw new Error("Param is not a string");switch(n.toLowerCase()){case"numeric":return e.NUMERIC;case"alphanumeric":return e.ALPHANUMERIC;case"kanji":return e.KANJI;case"byte":return e.BYTE;default:throw new Error("Unknown mode: "+n)}}e.from=function(o,u){if(e.isValid(o))return o;try{return s(o)}catch{return u}}})(de);(function(e){const t=ae,i=Fe,s=Le,n=de,o=ct,u=7973,c=t.getBCHDigit(u);function d(b,P,V){for(let z=1;z<=40;z++)if(P<=e.getCapacity(z,V,b))return z}function y(b,P){return n.getCharCountIndicator(b,P)+4}function A(b,P){let V=0;return b.forEach(function(z){const Y=y(z.mode,P);V+=Y+z.getBitsLength()}),V}function H(b,P){for(let V=1;V<=40;V++)if(A(b,V)<=e.getCapacity(V,P,n.MIXED))return V}e.from=function(P,V){return o.isValid(P)?parseInt(P,10):V},e.getCapacity=function(P,V,z){if(!o.isValid(P))throw new Error("Invalid QR Code version");typeof z>"u"&&(z=n.BYTE);const Y=t.getSymbolTotalCodewords(P),N=i.getTotalCodewordsCount(P,V),w=(Y-N)*8;if(z===n.MIXED)return w;const T=w-y(z,P);switch(z){case n.NUMERIC:return Math.floor(T/10*3);case n.ALPHANUMERIC:return Math.floor(T/11*2);case n.KANJI:return Math.floor(T/13);case n.BYTE:default:return Math.floor(T/8)}},e.getBestVersionForData=function(P,V){let z;const Y=s.from(V,s.M);if(Array.isArray(P)){if(P.length>1)return H(P,Y);if(P.length===0)return 1;z=P[0]}else z=P;return d(z.mode,z.getLength(),Y)},e.getEncodedBits=function(P){if(!o.isValid(P)||P<7)throw new Error("Invalid QR Code version");let V=P<<12;for(;t.getBCHDigit(V)-c>=0;)V^=u<=0;)n^=Qt<0&&(s=this.data.substr(i),n=parseInt(s,10),t.put(n,o*3+1))};var Fa=pe;const Ba=de,Je=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function he(e){this.mode=Ba.ALPHANUMERIC,this.data=e}he.getBitsLength=function(t){return 11*Math.floor(t/2)+6*(t%2)};he.prototype.getLength=function(){return this.data.length};he.prototype.getBitsLength=function(){return he.getBitsLength(this.data.length)};he.prototype.write=function(t){let i;for(i=0;i+2<=this.data.length;i+=2){let s=Je.indexOf(this.data[i])*45;s+=Je.indexOf(this.data[i+1]),t.put(s,11)}this.data.length%2&&t.put(Je.indexOf(this.data[i]),6)};var Va=he;const Ua=de;function ye(e){this.mode=Ua.BYTE,typeof e=="string"?this.data=new TextEncoder().encode(e):this.data=new Uint8Array(e)}ye.getBitsLength=function(t){return t*8};ye.prototype.getLength=function(){return this.data.length};ye.prototype.getBitsLength=function(){return ye.getBitsLength(this.data.length)};ye.prototype.write=function(e){for(let t=0,i=this.data.length;t=33088&&i<=40956)i-=33088;else if(i>=57408&&i<=60351)i-=49472;else throw new Error("Invalid SJIS character: "+this.data[t]+` +Make sure your charset is UTF-8`);i=(i>>>8&255)*192+(i&255),e.put(i,13)}};var ja=we,Jt={exports:{}};(function(e){var t={single_source_shortest_paths:function(i,s,n){var o={},u={};u[s]=0;var c=t.PriorityQueue.make();c.push(s,0);for(var d,y,A,H,b,P,V,z,Y;!c.empty();){d=c.pop(),y=d.value,H=d.cost,b=i[y]||{};for(A in b)b.hasOwnProperty(A)&&(P=b[A],V=H+P,z=u[A],Y=typeof u[A]>"u",(Y||z>V)&&(u[A]=V,c.push(A,V),o[A]=y))}if(typeof n<"u"&&typeof u[n]>"u"){var N=["Could not find a path from ",s," to ",n,"."].join("");throw new Error(N)}return o},extract_shortest_path_from_predecessor_list:function(i,s){for(var n=[],o=s;o;)n.push(o),i[o],o=i[o];return n.reverse(),n},find_path:function(i,s,n){var o=t.single_source_shortest_paths(i,s,n);return t.extract_shortest_path_from_predecessor_list(o,n)},PriorityQueue:{make:function(i){var s=t.PriorityQueue,n={},o;i=i||{};for(o in s)s.hasOwnProperty(o)&&(n[o]=s[o]);return n.queue=[],n.sorter=i.sorter||s.default_sorter,n},default_sorter:function(i,s){return i.cost-s.cost},push:function(i,s){var n={value:i,cost:s};this.queue.push(n),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};e.exports=t})(Jt);var Ya=Jt.exports;(function(e){const t=de,i=Fa,s=Va,n=za,o=ja,u=se,c=ae,d=Ya;function y(N){return unescape(encodeURIComponent(N)).length}function A(N,w,T){const _=[];let F;for(;(F=N.exec(T))!==null;)_.push({data:F[0],index:F.index,mode:w,length:F[0].length});return _}function H(N){const w=A(u.NUMERIC,t.NUMERIC,N),T=A(u.ALPHANUMERIC,t.ALPHANUMERIC,N);let _,F;return c.isKanjiModeEnabled()?(_=A(u.BYTE,t.BYTE,N),F=A(u.KANJI,t.KANJI,N)):(_=A(u.BYTE_KANJI,t.BYTE,N),F=[]),w.concat(T,_,F).sort(function(S,E){return S.index-E.index}).map(function(S){return{data:S.data,mode:S.mode,length:S.length}})}function b(N,w){switch(w){case t.NUMERIC:return i.getBitsLength(N);case t.ALPHANUMERIC:return s.getBitsLength(N);case t.KANJI:return o.getBitsLength(N);case t.BYTE:return n.getBitsLength(N)}}function P(N){return N.reduce(function(w,T){const _=w.length-1>=0?w[w.length-1]:null;return _&&_.mode===T.mode?(w[w.length-1].data+=T.data,w):(w.push(T),w)},[])}function V(N){const w=[];for(let T=0;T=0&&c<=6&&(d===0||d===6)||d>=0&&d<=6&&(c===0||c===6)||c>=2&&c<=4&&d>=2&&d<=4?e.set(o+c,u+d,!0,!0):e.set(o+c,u+d,!1,!0))}}function eo(e){const t=e.size;for(let i=8;i>c&1)===1,e.set(n,o,u,!0),e.set(o,n,u,!0)}function Ze(e,t,i){const s=e.size,n=Ka.getEncodedBits(t,i);let o,u;for(o=0;o<15;o++)u=(n>>o&1)===1,o<6?e.set(o,8,u,!0):o<8?e.set(o+1,8,u,!0):e.set(s-15+o,8,u,!0),o<8?e.set(8,s-o-1,u,!0):o<9?e.set(8,15-o-1+1,u,!0):e.set(8,15-o-1,u,!0);e.set(s-8,8,1,!0)}function ao(e,t){const i=e.size;let s=-1,n=i-1,o=7,u=0;for(let c=i-1;c>0;c-=2)for(c===6&&c--;;){for(let d=0;d<2;d++)if(!e.isReserved(n,c-d)){let y=!1;u>>o&1)===1),e.set(n,c-d,y),o--,o===-1&&(u++,o=7)}if(n+=s,n<0||i<=n){n-=s,s=-s;break}}}function oo(e,t,i){const s=new Ga;i.forEach(function(d){s.put(d.mode.bit,4),s.put(d.getLength(),Xa.getCharCountIndicator(d.mode,e)),d.write(s)});const n=Ve.getSymbolTotalCodewords(e),o=ot.getTotalCodewordsCount(e,t),u=(n-o)*8;for(s.getLengthInBits()+4<=u&&s.put(0,4);s.getLengthInBits()%8!==0;)s.putBit(0);const c=(u-s.getLengthInBits())/8;for(let d=0;d=7&&no(d,t),ao(d,u),isNaN(s)&&(s=at.getBestMask(d,Ze.bind(null,d,i))),at.applyMask(s,d),Ze(d,i,s),{modules:d,version:t,errorCorrectionLevel:i,maskPattern:s,segments:n}}Bt.create=function(t,i){if(typeof t>"u"||t==="")throw new Error("No input text");let s=Ke.M,n,o;return typeof i<"u"&&(s=Ke.from(i.errorCorrectionLevel,Ke.M),n=Oe.from(i.version),o=at.from(i.maskPattern),i.toSJISFunc&&Ve.setToSJISFunction(i.toSJISFunc)),ro(t,n,s,o)};var Kt={},ut={};(function(e){function t(i){if(typeof i=="number"&&(i=i.toString()),typeof i!="string")throw new Error("Color should be defined as hex string");let s=i.slice().replace("#","").split("");if(s.length<3||s.length===5||s.length>8)throw new Error("Invalid hex color: "+i);(s.length===3||s.length===4)&&(s=Array.prototype.concat.apply([],s.map(function(o){return[o,o]}))),s.length===6&&s.push("F","F");const n=parseInt(s.join(""),16);return{r:n>>24&255,g:n>>16&255,b:n>>8&255,a:n&255,hex:"#"+s.slice(0,6).join("")}}e.getOptions=function(s){s||(s={}),s.color||(s.color={});const n=typeof s.margin>"u"||s.margin===null||s.margin<0?4:s.margin,o=s.width&&s.width>=21?s.width:void 0,u=s.scale||4;return{width:o,scale:o?4:u,margin:n,color:{dark:t(s.color.dark||"#000000ff"),light:t(s.color.light||"#ffffffff")},type:s.type,rendererOpts:s.rendererOpts||{}}},e.getScale=function(s,n){return n.width&&n.width>=s+n.margin*2?n.width/(s+n.margin*2):n.scale},e.getImageWidth=function(s,n){const o=e.getScale(s,n);return Math.floor((s+n.margin*2)*o)},e.qrToImageData=function(s,n,o){const u=n.modules.size,c=n.modules.data,d=e.getScale(u,o),y=Math.floor((u+o.margin*2)*d),A=o.margin*d,H=[o.color.light,o.color.dark];for(let b=0;b=A&&P>=A&&b"u"&&(!u||!u.getContext)&&(d=u,u=void 0),u||(y=s()),d=t.getOptions(d);const A=t.getImageWidth(o.modules.size,d),H=y.getContext("2d"),b=H.createImageData(A,A);return t.qrToImageData(b.data,o,d),i(H,y,A),H.putImageData(b,0,0),y},e.renderToDataURL=function(o,u,c){let d=c;typeof d>"u"&&(!u||!u.getContext)&&(d=u,u=void 0),d||(d={});const y=e.render(o,u,d),A=d.type||"image/png",H=d.rendererOpts||{};return y.toDataURL(A,H.quality)}})(Kt);var Xt={};const io=ut;function Ft(e,t){const i=e.a/255,s=t+'="'+e.hex+'"';return i<1?s+" "+t+'-opacity="'+i.toFixed(2).slice(1)+'"':s}function et(e,t,i){let s=e+t;return typeof i<"u"&&(s+=" "+i),s}function lo(e,t,i){let s="",n=0,o=!1,u=0;for(let c=0;c0&&d>0&&e[c-1]||(s+=o?et("M",d+i,.5+y+i):et("m",n,0),n=0,o=!1),d+1':"",y="',A='viewBox="0 0 '+c+" "+c+'"',b=''+d+y+` +`;return typeof s=="function"&&s(null,b),b};const co=Ea,st=Bt,Zt=Kt,uo=Xt;function dt(e,t,i,s,n){const o=[].slice.call(arguments,1),u=o.length,c=typeof o[u-1]=="function";if(!c&&!co())throw new Error("Callback required as last argument");if(c){if(u<2)throw new Error("Too few arguments provided");u===2?(n=i,i=t,t=s=void 0):u===3&&(t.getContext&&typeof n>"u"?(n=s,s=void 0):(n=s,s=i,i=t,t=void 0))}else{if(u<1)throw new Error("Too few arguments provided");return u===1?(i=t,t=s=void 0):u===2&&!t.getContext&&(s=i,i=t,t=void 0),new Promise(function(d,y){try{const A=st.create(i,s);d(e(A,t,s))}catch(A){y(A)}})}try{const d=st.create(i,s);n(null,e(d,t,s))}catch(d){n(d)}}Me.create=st.create;Me.toCanvas=dt.bind(null,Zt.render);Me.toDataURL=dt.bind(null,Zt.renderToDataURL);Me.toString=dt.bind(null,function(e,t,i){return uo.render(e,i)});function mo(){const e=D(""),t=D(!1),i=D(null);return{qrCode:e,generating:t,error:i,generateQRCode:async c=>{if(!(c!=null&&c.name)&&!(c!=null&&c.assetNumber))throw new Error("Asset must have a name or asset number to generate QR code");t.value=!0,i.value=null;try{const d={id:c.assetNumber||`ASSET-${Date.now()}`,name:c.name||"Unnamed Asset",category:c.category||"Unspecified",location:c.location||"No location",status:c.status||"Unknown",criticality:c.criticality||"Not set",purchaseDate:c.purchaseDate||null,value:c.currentValue||c.purchasePrice||null,vendor:c.vendor||null,lastMaintenance:c.lastMaintenance||null,nextMaintenance:c.nextMaintenance||null,generatedAt:new Date().toISOString(),system:"Atlas CMMS",url:`${window.location.origin}/assets/${c.assetNumber||"new"}`},y=JSON.stringify(d),A=await Me.toDataURL(y,{width:300,margin:2,color:{dark:"#000000",light:"#FFFFFF"},errorCorrectionLevel:"H"});e.value=A;const H={qrCode:A,data:d};return console.log("✅ QR Code generated with data:",d),H}catch(d){throw i.value=d.message,console.error("❌ Failed to generate QR code:",d),d}finally{t.value=!1}},clearQRCode:()=>{e.value="",i.value=null},canGenerateQRCode:c=>!!(c!=null&&c.name||c!=null&&c.assetNumber),generatePrintContent:(c,d)=>{const y=c.name||"Asset",A=c.assetNumber||"TBD",H=c.location||"No Location",b=new Date().toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"});return` + + + + Asset QR Label - ${y} + + + +
+
+ Asset QR Code +
+
+
${y}
+
ID: ${A}
+
${H}
+
${b}
+
+
+ + + `}}}const fo={class:"asset-qr-generator"},go={class:"flex items-center justify-between mb-4"},vo={class:"flex space-x-2"},po={key:0,class:"mb-4 p-4 bg-red-50 border border-red-200 rounded-lg"},ho={class:"text-sm text-red-600"},yo={class:"bg-white p-6 rounded-lg border-2 border-gray-200 text-center"},wo={key:0,class:"py-8"},Co={key:1,class:"space-y-4"},Ao={class:"flex justify-center"},bo=["src"],Io={class:"text-left bg-gray-50 p-4 rounded border"},Eo={class:"grid grid-cols-2 gap-2 text-sm"},Mo={key:2,class:"py-8 text-gray-500"},So={class:"flex min-h-full items-center justify-center p-4"},No={class:"p-6"},ko={id:"qr-print-content",class:"border p-4 bg-white text-center"},To={class:"mb-3"},xo=["src"],_o={class:"text-xs space-y-1"},Ro={class:"font-bold"},Do={class:"mt-4 flex justify-end space-x-3"},Po={__name:"AssetQRGenerator",props:{assetData:{type:Object,required:!0},autoGenerate:{type:Boolean,default:!0}},emits:["qr-generated"],setup(e,{emit:t}){const i=e,s=t,{qrCode:n,generating:o,error:u,generateQRCode:c,canGenerateQRCode:d,generatePrintContent:y}=mo(),A=D(!1),H=async()=>{if(d(i.assetData))try{const N=await c(i.assetData);s("qr-generated",N)}catch(N){console.error("QR generation failed:",N.message)}},b=()=>{H()},P=()=>{A.value=!0},V=()=>{A.value=!1},z=()=>{const N=y(i.assetData,n.value),w=window.open("","_blank");w.document.write(N),w.document.close(),w.print(),w.close(),V()},Y=N=>N?new Date(N).toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"}):"Not set";return i.autoGenerate&&Fn(()=>{H()}),(N,w)=>(k(),R("div",fo,[r("div",go,[w[3]||(w[3]=r("div",null,[r("h4",{class:"text-lg font-medium text-gray-900"},"Asset QR Code"),r("p",{class:"text-sm text-gray-600"},"Automatically generated QR code with asset details")],-1)),r("div",vo,[x(C(J),{variant:"outline",size:"sm",onClick:b,loading:C(o)},{default:B(()=>w[1]||(w[1]=[r("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),q(" Regenerate ",-1)])),_:1,__:[1]},8,["loading"]),x(C(J),{variant:"primary",size:"sm",onClick:P,disabled:!C(n)},{default:B(()=>w[2]||(w[2]=[r("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M17 17h2a2 2 0 002-2v-4a2 2 0 00-2-2H9.414a1 1 0 01-.707-.293l-1.414-1.414A1 1 0 006.586 7H4a2 2 0 00-2 2v6a2 2 0 002 2h2m5 5v-5a1.5 1.5 0 011.5-1.5h9A1.5 1.5 0 0122 15.5v5a1.5 1.5 0 01-1.5 1.5h-9A1.5 1.5 0 0111 20.5z"})],-1),q(" Print QR Label ",-1)])),_:1,__:[2]},8,["disabled"])])]),C(u)?(k(),R("div",po,[r("p",ho,$(C(u)),1)])):W("",!0),r("div",yo,[C(o)?(k(),R("div",wo,w[4]||(w[4]=[r("div",{class:"animate-spin rounded-full h-12 w-12 border-b-2 border-primary-600 mx-auto"},null,-1),r("p",{class:"text-sm text-gray-600 mt-2"},"Generating QR code...",-1)]))):C(n)?(k(),R("div",Co,[r("div",Ao,[r("img",{src:C(n),alt:"Asset QR Code",class:"max-w-xs"},null,8,bo)]),r("div",Io,[w[13]||(w[13]=r("h5",{class:"font-medium text-gray-900 mb-2"},"QR Code Contains:",-1)),r("div",Eo,[r("div",null,[w[5]||(w[5]=r("strong",null,"Asset ID:",-1)),q(" "+$(e.assetData.assetNumber||"Auto-generated"),1)]),r("div",null,[w[6]||(w[6]=r("strong",null,"Name:",-1)),q(" "+$(e.assetData.name||"Unnamed Asset"),1)]),r("div",null,[w[7]||(w[7]=r("strong",null,"Category:",-1)),q(" "+$(e.assetData.category||"Unspecified"),1)]),r("div",null,[w[8]||(w[8]=r("strong",null,"Location:",-1)),q(" "+$(e.assetData.location||"No location"),1)]),r("div",null,[w[9]||(w[9]=r("strong",null,"Status:",-1)),q(" "+$(e.assetData.status||"Unknown"),1)]),r("div",null,[w[10]||(w[10]=r("strong",null,"Criticality:",-1)),q(" "+$(e.assetData.criticality||"Not set"),1)]),r("div",null,[w[11]||(w[11]=r("strong",null,"Last Maintenance:",-1)),q(" "+$(Y(e.assetData.lastMaintenance)),1)]),r("div",null,[w[12]||(w[12]=r("strong",null,"Next Maintenance:",-1)),q(" "+$(Y(e.assetData.nextMaintenance)),1)])])])])):(k(),R("div",Mo,w[14]||(w[14]=[r("svg",{class:"w-16 h-16 mx-auto mb-2 text-gray-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"1",d:"M12 4v1m6 11h2m-6 0h-2v4m0-11v3m0 0h.01M12 12h4.01M16 16h4m-4 0v4m-4-4h4"})],-1),r("p",null,"QR code will be generated automatically",-1)])))]),A.value?(k(),R("div",{key:1,class:"fixed inset-0 z-50 overflow-y-auto",onClick:V},[r("div",So,[w[19]||(w[19]=r("div",{class:"fixed inset-0 bg-black bg-opacity-50"},null,-1)),r("div",{class:"relative bg-white rounded-lg shadow-xl max-w-md w-full",onClick:w[0]||(w[0]=De(()=>{},["stop"]))},[r("div",No,[r("div",{class:"flex items-center justify-between mb-4"},[w[16]||(w[16]=r("h3",{class:"text-lg font-medium text-gray-900"},"Print QR Label",-1)),r("button",{onClick:V,class:"text-gray-400 hover:text-gray-600"},w[15]||(w[15]=[r("svg",{class:"w-6 h-6",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})],-1)]))]),r("div",ko,[r("div",To,[r("img",{src:C(n),alt:"Asset QR Code",class:"w-32 h-32 mx-auto"},null,8,xo)]),r("div",_o,[r("div",Ro,$(e.assetData.name||"Asset"),1),r("div",null,"ID: "+$(e.assetData.assetNumber||"TBD"),1),r("div",null,$(e.assetData.location||"No Location"),1),r("div",null,$(Y(new Date)),1)])]),r("div",Do,[x(C(J),{variant:"secondary",onClick:V},{default:B(()=>w[17]||(w[17]=[q("Cancel",-1)])),_:1,__:[17]}),x(C(J),{variant:"primary",onClick:z},{default:B(()=>w[18]||(w[18]=[q("Print Label",-1)])),_:1,__:[18]})])])])])])):W("",!0)]))}},Oo=rt(Po,[["__scopeId","data-v-f7f02383"]]),Lo={key:0},Fo={key:0},Bo={class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},Vo={key:0,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 6h16M4 10h16M4 14h16M4 18h16"},Uo={key:1,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 6a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2H6a2 2 0 01-2-2V6zM14 6a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2V6zM4 16a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2H6a2 2 0 01-2-2v-2zM14 16a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2v-2z"},zo={key:0},Ho={key:1},$o={class:"p-6"},jo={key:0,class:"mb-4 p-3 bg-yellow-50 border border-yellow-200 rounded-lg flex items-center"},Yo={class:"text-yellow-800"},Go={class:"flex items-center"},qo={class:"font-medium text-gray-900"},Qo={class:"text-sm text-gray-600"},Wo={class:"flex items-center"},Jo={class:"w-12 h-2 bg-gray-200 rounded-full mr-2"},Ko={key:0,class:"w-3 h-3 mr-1",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},Xo={key:1,class:"w-3 h-3 mr-1",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},Zo={key:2,class:"w-3 h-3 mr-1",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},es={key:0,class:"text-sm text-gray-900"},ts={key:1,class:"text-sm text-gray-400"},ns={key:1,class:"text-sm text-gray-400"},as={class:"text-sm font-medium text-gray-900"},os={class:"flex items-center space-x-2"},ss={key:0},rs={key:0},is={key:0},ls={key:0},cs={key:2,class:"space-y-4"},us={key:0,class:"flex items-center justify-center py-12"},ds={key:1,class:"text-center py-12"},ms={key:2},fs=["onClick"],gs={class:"flex items-start justify-between mb-3"},vs={class:"flex items-center flex-1 min-w-0"},ps={class:"flex-1 min-w-0"},hs={class:"text-lg font-medium text-gray-900 truncate"},ys={class:"text-sm text-gray-600 truncate"},ws={class:"flex flex-col items-end space-y-2 ml-4"},Cs={class:"mb-3"},As={class:"flex items-center justify-between mb-1"},bs={class:"w-full h-2 bg-gray-200 rounded-full"},Is={class:"grid grid-cols-2 gap-4 text-sm"},Es={class:"font-medium text-gray-900 mt-1"},Ms={class:"mt-1"},Ss={key:0,class:"text-gray-900"},Ns={key:1,class:"text-gray-400"},ks={class:"mt-1"},Ts={key:1,class:"text-gray-400"},xs={class:"mt-1"},_s={class:"flex items-center justify-between mt-4 pt-3 border-t border-gray-100"},Rs={class:"text-sm text-gray-500"},Ds={class:"flex space-x-2"},Ps={key:0,class:"mb-4 p-4 bg-blue-50 border border-blue-200 rounded-lg"},Os={class:"flex items-center justify-between"},Ls={class:"text-sm text-blue-700 mt-1"},Fs={class:"flex space-x-2"},Bs={class:"border-b border-gray-200 mb-6"},Vs={key:1,class:"space-y-6"},Us={class:"col-span-full"},zs={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},Hs={key:0,class:"mt-1 text-sm text-red-600"},$s={key:2,class:"space-y-4"},js={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},Ys={key:3,class:"space-y-4"},Gs={key:4,class:"space-y-4"},qs={key:5,class:"space-y-6"},Qs={class:"border-2 border-dashed border-gray-300 rounded-lg p-6 text-center hover:border-gray-400 transition-colors"},Ws={class:"mt-4"},Js={class:"cursor-pointer"},Ks={key:0,class:"mt-4 space-y-2"},Xs={class:"flex items-center"},Zs={class:"text-sm font-medium text-gray-900"},er={class:"text-xs text-gray-500"},tr={class:"mt-2 text-xs text-gray-500"},nr={class:"mt-2"},ar={key:6,class:"space-y-4"},or={class:"flex items-center justify-between"},sr={class:"flex items-center space-x-4"},rr={key:0,class:"flex items-center text-sm text-gray-500"},ir={key:0,class:"w-4 h-4 mr-2 text-amber-500 animate-pulse",fill:"currentColor",viewBox:"0 0 20 20"},lr={key:1,class:"w-4 h-4 mr-2 text-green-500",fill:"currentColor",viewBox:"0 0 20 20"},cr={key:2},ur={key:3},dr={class:"flex space-x-3"},mr={key:0,class:"space-y-6"},fr={class:"bg-gray-50 rounded-lg p-4"},gr={class:"grid grid-cols-2 md:grid-cols-4 gap-4"},vr={class:"text-center"},pr={class:"text-center"},hr={class:"text-2xl font-bold text-blue-600"},yr={class:"text-center"},wr={class:"text-2xl font-bold text-green-600"},Cr={class:"text-center"},Ar={key:0},br={class:"space-y-2"},Ir={class:"text-blue-800"},ve="atlas_asset_form_data",Er={__name:"AssetsListView",setup(e){const t=Vn(),i=Bn(),s=$n(),n=Qn(),{calculateHealthScore:o,assessRisk:u}=sa(),{analyzePerformance:c}=oa(),{loadAssetHierarchy:d}=Wn(),{isOnline:y,syncStatus:A,syncPendingActions:H}=ra(),{isMobile:b,layoutClass:P,optimizeTableForMobile:V}=Xn(),{complianceScore:z,activeViolations:Y,upcomingRenewals:N}=ia(),w=D(!1),T=D(!1),_=D(!1),F=D(null),M=D("all"),S=D(!1),E=D("create"),G=D(null),v=D("basic"),l=D(!1),m=D({}),g=D(!1),O=D(null),U=D(!1),j=D(null),K=D(!1),re=D(!1),L=D(0),h=D({name:"",assetNumber:"",description:"",category:"",status:"",criticality:"",location:"",purchasePrice:0,currentValue:0,purchaseDate:null,installationDate:null,vendor:"",model:"",lastMaintenance:null,nextMaintenance:null,warranty:{isWarrantyActive:!1,warrantyStartDate:null,warrantyEndDate:null,warrantyProvider:"",status:"NOT_APPLICABLE"},customFields:{},image:null,files:[],qrCode:null,qrData:null}),Q=D({search:"",status:"",category:"",location:"",criticality:""}),Z=D(new Map),ie=D({currentPage:1,pageSize:10,total:0}),ee=X(()=>s.assets),Ne=X(()=>s.loading),en=X(()=>[{key:"all",label:"All Assets",badge:ee.value.length},{key:"operational",label:"Operational",badge:ee.value.filter(f=>f.status===me.OPERATIONAL).length},{key:"maintenance",label:"Maintenance",badge:ee.value.filter(f=>f.status===me.MAINTENANCE).length},{key:"down",label:"Down",badge:ee.value.filter(f=>f.status===me.DOWN).length},{key:"critical_violations",label:"Compliance Issues",badge:Y.value.length}]),tn=X(()=>V([{key:"name",label:"Asset",sortable:!0,essential:!0,priority:"high"},{key:"status",label:"Status",sortable:!0,essential:!0,priority:"high"},{key:"healthScore",label:"Health",sortable:!0,priority:"high"},{key:"location",label:"Location",sortable:!0,priority:"medium"},{key:"criticality",label:"Criticality",sortable:!0,priority:"high"},{key:"lastMaintenance",label:"Last Maintenance",sortable:!0,priority:"medium"},{key:"nextMaintenance",label:"Next Maintenance",sortable:!0,priority:"medium"},{key:"complianceStatus",label:"Compliance",sortable:!0,priority:"low"},{key:"value",label:"Value",sortable:!0,priority:"low"}])),mt=X(()=>Object.entries(jn).map(([f,a])=>({title:a.label,value:f}))),nn=X(()=>(n.locations.value||{content:[]}).content.map(a=>({title:a.name,value:a.id}))),ft=X(()=>Object.entries(Yn).map(([f,a])=>({title:a.label,value:f}))),an=X(()=>{const f=ee.value.length,a=ee.value.filter(I=>I.status===me.OPERATIONAL).length;ee.value.filter(I=>I.criticality===Gn.CRITICAL).length,ee.value.reduce((I,te)=>I+(te.value||0),0);const p=f>0?Math.round(ee.value.reduce((I,te)=>I+o(te),0)/f):0;return[{name:"Total Assets",value:f,subtitle:y.value?"Live data":"Offline mode",icon:"building",iconBg:"bg-blue-100",iconColor:"text-blue-600",change:8},{name:"Operational",value:a,subtitle:`${f>0?Math.round(a/f*100):0}% uptime`,icon:"check-circle",iconBg:"bg-green-100",iconColor:"text-green-600",change:5},{name:"Health Score",value:`${p}%`,subtitle:"Average asset health",icon:"heart",iconBg:p>=80?"bg-green-100":p>=60?"bg-yellow-100":"bg-red-100",iconColor:p>=80?"text-green-600":p>=60?"text-yellow-600":"text-red-600",change:3},{name:"Compliance",value:`${z.value}%`,subtitle:Y.value.length>0?`${Y.value.length} violations`:"All compliant",icon:"shield-check",iconBg:z.value>=90?"bg-green-100":z.value>=70?"bg-yellow-100":"bg-red-100",iconColor:z.value>=90?"text-green-600":z.value>=70?"text-yellow-600":"text-red-600",change:-2}]}),Ue=X(()=>{let f=ee.value;if(M.value!=="all"){const a={operational:me.OPERATIONAL,maintenance:me.MAINTENANCE,down:me.DOWN,critical_violations:null};if(M.value==="critical_violations"){const p=Y.value.map(I=>I.assetId);f=f.filter(I=>p.includes(I.id))}else f=f.filter(p=>p.status===a[M.value])}if(Q.value.search){const a=Q.value.search.toLowerCase();f=f.filter(p=>{var I,te,fe,xt;return p.name.toLowerCase().includes(a)||((I=p.model)==null?void 0:I.toLowerCase().includes(a))||((te=p.location)==null?void 0:te.toLowerCase().includes(a))||((fe=p.serialNumber)==null?void 0:fe.toLowerCase().includes(a))||((xt=p.assetNumber)==null?void 0:xt.toLowerCase().includes(a))})}return Q.value.category&&(f=f.filter(a=>a.category===Q.value.category)),Q.value.location&&(f=f.filter(a=>a.location===Q.value.location)),Q.value.criticality&&(f=f.filter(a=>a.criticality===Q.value.criticality)),f.map(a=>({...a,healthScore:o(a),riskLevel:u(a),complianceStatus:vn(a.id)}))}),on=X(()=>{const f=E.value==="create"?"Create New Asset":"Edit Asset";return U.value?`${f} (Unsaved Changes)`:f}),sn=X(()=>{if(!j.value)return"";const f=new Date,a=new Date(j.value),p=f-a,I=Math.floor(p/(60*1e3));return I<1?"just now":I===1?"1 minute ago":I<60?`${I} minutes ago`:a.toLocaleTimeString()}),Ce=[{key:"basic",label:"Basic Information"},{key:"financial",label:"Financial Information"},{key:"warranty",label:"Warranty"},{key:"custom",label:"Custom Fields"},{key:"attachments",label:"Attachments"},{key:"qr",label:"QR Code"}],rn=X(()=>Object.entries(qn).map(([f,a])=>({title:a.label,value:f}))),ze=async()=>{w.value=!0;try{await Promise.all([s.loadAssets(),n.refreshLocations(),d(),H()])}catch(f){console.error("Failed to refresh data:",f)}finally{w.value=!1}},ln=()=>{console.log("Exporting assets...")},cn=()=>{_.value=!_.value},un=f=>{ke(f.id)},dn=()=>{E.value="create",G.value=null,v.value="basic",On(),qe()||(Ye(),Tt()),S.value=!0},He=f=>{const a=ee.value.find(p=>p.id===f);a&&(E.value="edit",G.value=f,v.value="basic",Object.assign(h.value,a),setTimeout(()=>{K.value=!1},100),S.value=!0)},ke=f=>{t.push(`/assets/${f}`)},gt=f=>{t.push(`/work-orders?create=true&assetId=${f}`)},mn=async f=>{try{if(w.value=!0,Z.value.has(f))F.value=Z.value.get(f);else{const a=ee.value.find(te=>te.id===f),I={...await c(f,[]),healthScore:o(a),riskLevel:u(a),recommendations:["Schedule preventive maintenance within 2 weeks","Monitor temperature sensors more frequently","Consider component replacement for optimal performance","Update maintenance procedures based on usage patterns"]};Z.value.set(f,I),F.value=I}T.value=!0}catch(a){console.error("Failed to analyze asset:",a)}finally{w.value=!1}},fn=()=>{T.value=!1,F.value=null},gn=()=>{console.log("Generating detailed report for asset:",F.value)},vn=f=>{const a=Y.value.filter(I=>I.assetId===f),p=N.value.filter(I=>I.assetId===f);return a.length>0?"NON_COMPLIANT":p.length>0?"EXPIRING_SOON":"COMPLIANT"},pn=f=>{M.value=f},hn=()=>{},$e=()=>{},yn=({column:f,direction:a})=>{console.log("Sort:",f,a)},wn=f=>{ie.value.currentPage=f},Cn=({row:f})=>{ke(f.id)},vt=f=>({OPERATIONAL:"success",MAINTENANCE:"warning",DOWN:"error",DECOMMISSIONED:"secondary"})[f]||"default",pt=f=>({LOW:"secondary",MEDIUM:"info",HIGH:"warning",CRITICAL:"error"})[f]||"default",ht=f=>f.toLowerCase().replace(/\b\w/g,a=>a.toUpperCase()),yt=f=>f.toLowerCase().replace(/\b\w/g,a=>a.toUpperCase()),Te=f=>new Date(f).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}),wt=f=>new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:0}).format(f),Ct=f=>{const a=new Date(f),I=Math.ceil((a-new Date)/(1e3*60*60*24));return I<0?"text-red-600":I<=7?"text-orange-600":"text-gray-900"},At=f=>f>=80?"bg-green-500":f>=60?"bg-yellow-500":"bg-red-500",je=f=>f>=80?"text-green-600":f>=60?"text-yellow-600":"text-red-600",bt=f=>({COMPLIANT:"success",NON_COMPLIANT:"error",EXPIRING_SOON:"warning"})[f]||"secondary",It=f=>({COMPLIANT:"Compliant",NON_COMPLIANT:"Issues",EXPIRING_SOON:"Expiring"})[f]||f,An=f=>f==="HIGH"?"text-red-600":f==="MEDIUM"?"text-yellow-600":"text-green-600",Ye=()=>{h.value={name:"",assetNumber:"",description:"",category:"",status:"OPERATIONAL",criticality:"MEDIUM",location:"",purchasePrice:0,currentValue:0,purchaseDate:null,installationDate:null,vendor:"",model:"",warranty:{isWarrantyActive:!1,warrantyStartDate:null,warrantyEndDate:null,warrantyProvider:"",status:"NOT_APPLICABLE"},customFields:{}},m.value={},K.value=!1,U.value=!1},Et=f=>{const a=Ce.findIndex(p=>p.key===v.value);f==="next"&&a0&&(v.value=Ce[a-1].key)},bn=async f=>{console.log("Primary image uploaded:",f)},In=async f=>{console.log("Additional files uploaded:",f)},En=f=>{const a=Array.from(f.target.files);if(!a.length)return;const p=a.map(I=>({...I,id:Date.now()+Math.random(),uploadedAt:new Date().toISOString(),uploadedBy:null}));h.files||(h.files=[]),h.files.push(...p),f.target.value=""},Mn=f=>{h.files&&h.files[f]&&h.files.splice(f,1)},Sn=f=>{if(!f)return"0 B";const a=["B","KB","MB","GB"],p=Math.floor(Math.log(f)/Math.log(1024));return`${Math.round(f/Math.pow(1024,p)*100)/100} ${a[p]}`},Nn=f=>{if(!f)return"just now";const a=new Date(f),I=new Date-a,te=Math.floor(I/(1e3*60));if(te<1)return"just now";if(te<60)return`${te}m ago`;const fe=Math.floor(te/60);return fe<24?`${fe}h ago`:a.toLocaleDateString()},kn=f=>{v.value=f,le()},Tn=()=>{var f;return m.value={},(f=h.value.name)!=null&&f.trim()||(m.value.name="Asset name is required"),h.value.category||(m.value.category="Category is required"),h.value.status||(m.value.status="Status is required"),h.value.criticality||(m.value.criticality="Criticality is required"),Object.keys(m.value).length===0},xn=f=>{console.log("Warranty validation:",f)},_n=f=>{console.log("Custom fields validation:",f)},Rn=f=>{h.value.qrCode=f.qrCode,h.value.qrData=f.data,console.log("✅ QR Code generated and stored:",f)},Ge=()=>{xe(),S.value=!1,Ye(),g.value=!1},Mt=async()=>{if(Tn())try{l.value=!0,E.value==="create"?await s.createAsset(h.value):await s.updateAsset(G.value,h.value),xe(),Ge(),await ze()}catch(f){console.error("Failed to save asset:",f)}finally{l.value=!1}};tt(()=>{const{qrCode:f,qrData:a,...p}=h.value;return p},()=>{K.value&&le()},{deep:!0}),Ee(async()=>{await ze(),b.value&&(_.value=!0);const f=i.query.edit;f&&setTimeout(()=>{He(parseInt(f)),t.replace({path:"/assets"})},500);try{await Promise.all([...ee.value.map(a=>Promise.resolve())])}catch(a){console.error("Failed to load compliance data:",a)}});const qe=()=>{try{return localStorage.getItem(ve)!==null}catch{return!1}},St=()=>{try{const f=localStorage.getItem(ve);if(!f)return null;const a=JSON.parse(f);return{timestamp:a.timestamp,formData:a.formData}}catch{return null}},Dn=()=>{if(console.log("💾 saveAssetFormData called, userInteracted:",K.value),!K.value){console.log("❌ Not saving - user has not interacted");return}try{const f={timestamp:new Date().toISOString(),formData:{...h.value}};delete f.formData.image,delete f.formData.files,console.log("📝 Saving to localStorage:",ve,f),localStorage.setItem(ve,JSON.stringify(f)),j.value=f.timestamp,U.value=!1,console.log("✅ Asset form auto-saved successfully at",f.timestamp)}catch(f){console.warn("❌ Failed to save asset form:",f)}},Pn=()=>{try{const f=localStorage.getItem(ve);if(!f)return!1;const a=JSON.parse(f);return Object.assign(h.value,a.formData),j.value=a.timestamp,console.log("Asset form data restored"),!0}catch(f){return console.warn("Failed to restore asset form:",f),!1}},xe=()=>{try{localStorage.removeItem(ve),j.value=null,U.value=!1,console.log("Asset saved data cleared")}catch(f){console.warn("Failed to clear asset saved data:",f)}},le=()=>{console.log("🔥 User interaction detected!"),K.value=!0,U.value=!0,setTimeout(()=>{U.value&&K.value&&(console.log("💾 Triggering auto-save..."),Dn())},3e3)},On=()=>{console.log("=== Checking for asset saved data ==="),console.log("Modal mode:",E.value),console.log("Has saved data:",qe()),console.log("Saved data info:",St()),E.value==="create"&&qe()?(O.value=St(),g.value=!0,console.log("✅ Found saved asset data, showing restore notification"),console.log("Notification visible:",g.value)):console.log("❌ No saved data or not in create mode")},Nt=()=>{Pn()&&(g.value=!1,console.log("Asset form data restored successfully"))},kt=()=>{g.value=!1,xe(),Ye(),Tt(),console.log("Asset auto-saved data dismissed")},Tt=()=>{h.value.status||(h.value.status="OPERATIONAL"),h.value.files||(h.value.files=[]),h.value.customFields||(h.value.customFields={})};return Un(()=>{xe()}),(f,a)=>(k(),Ae(Zn,null,{header:B(()=>[x(ea,{title:"Assets",description:"Manage and track all facility assets and equipment",breadcrumbs:[{text:"Assets",to:null}]},{actions:B(()=>[x(C(J),{variant:"outline",size:"sm",onClick:ln},{default:B(()=>[(k(),R("svg",{class:ne(["w-4 h-4",C(b)?"":"mr-2"]),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},a[27]||(a[27]=[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"},null,-1)]),2)),C(b)?W("",!0):(k(),R("span",Lo,"Export"))]),_:1}),x(C(J),{variant:"outline",size:"sm",onClick:ze},{default:B(()=>[(k(),R("svg",{class:ne(["w-4 h-4",C(b)?"":"mr-2"]),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},a[28]||(a[28]=[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"},null,-1)]),2)),C(b)?W("",!0):(k(),R("span",Fo,"Refresh"))]),_:1}),C(b)?(k(),Ae(C(J),{key:0,variant:"outline",size:"sm",onClick:cn},{default:B(()=>[(k(),R("svg",Bo,[_.value?(k(),R("path",Vo)):(k(),R("path",Uo))]))]),_:1})):W("",!0),x(C(J),{variant:"primary",size:"sm",onClick:dn},{default:B(()=>[(k(),R("svg",{class:ne(["w-4 h-4",C(b)?"":"mr-2"]),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},a[29]||(a[29]=[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"},null,-1)]),2)),C(b)?(k(),R("span",Ho,"Add")):(k(),R("span",zo,"Add Asset"))]),_:1})]),stats:B(()=>[x(C(ta),{stats:an.value},null,8,["stats"])]),tabs:B(()=>[x(C(Dt),{modelValue:M.value,"onUpdate:modelValue":a[0]||(a[0]=p=>M.value=p),tabs:en.value,onTabChange:pn},null,8,["modelValue","tabs"])]),_:1})]),default:B(()=>[r("div",$o,[r("div",{class:ne(["mb-6 grid gap-4",C(b)?"grid-cols-1":"grid-cols-1 md:grid-cols-4"])},[x(C(oe),{modelValue:Q.value.search,"onUpdate:modelValue":a[1]||(a[1]=p=>Q.value.search=p),placeholder:"Search assets...",onInput:hn},{prepend:B(()=>a[30]||(a[30]=[r("svg",{class:"w-4 h-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1)])),_:1},8,["modelValue"]),x(C(ce),{modelValue:Q.value.category,"onUpdate:modelValue":[a[2]||(a[2]=p=>Q.value.category=p),$e],placeholder:"Filter by Category",options:mt.value},null,8,["modelValue","options"]),x(C(ce),{modelValue:Q.value.location,"onUpdate:modelValue":[a[3]||(a[3]=p=>Q.value.location=p),$e],placeholder:"Filter by Location",options:nn.value},null,8,["modelValue","options"]),x(C(ce),{modelValue:Q.value.criticality,"onUpdate:modelValue":[a[4]||(a[4]=p=>Q.value.criticality=p),$e],placeholder:"Filter by Criticality",options:ft.value},null,8,["modelValue","options"])],2),C(y)?W("",!0):(k(),R("div",jo,[a[31]||(a[31]=r("svg",{class:"w-5 h-5 text-yellow-600 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.728-.833-2.498 0L4.316 16.5c-.77.833.192 2.5 1.732 2.5z"})],-1)),r("span",Yo,"Working offline - "+$(C(A))+" mode active",1)])),!C(b)||!_.value?(k(),R("div",{key:1,class:ne(C(P))},[x(C(na),{columns:tn.value,data:Ue.value,loading:Ne.value,pagination:ie.value,"empty-message":"No assets found",onSortChange:yn,onPageChange:wn,onRowClick:Cn},{"column-name":B(({row:p})=>[r("div",Go,[a[32]||(a[32]=r("div",{class:"w-10 h-10 rounded bg-primary-100 flex items-center justify-center mr-3"},[r("svg",{class:"w-5 h-5 text-primary-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M13 10V3L4 14h7v7l9-11h-7z"})])],-1)),r("div",null,[r("h4",qo,$(p.name),1),r("p",Qo,$(p.model||"No model specified"),1)])])]),"column-status":B(({row:p})=>[x(C(ge),{variant:vt(p.status)},{default:B(()=>[q($(ht(p.status)),1)]),_:2},1032,["variant"])]),"column-healthScore":B(({row:p})=>[r("div",Wo,[r("div",Jo,[r("div",{class:ne(["h-2 rounded-full transition-all duration-300",At(p.healthScore)]),style:_t({width:`${p.healthScore}%`})},null,6)]),r("span",{class:ne(["text-sm font-medium",je(p.healthScore)])},$(p.healthScore)+"% ",3)])]),"column-criticality":B(({row:p})=>[x(C(ge),{variant:pt(p.criticality)},{default:B(()=>[q($(yt(p.criticality)),1)]),_:2},1032,["variant"])]),"column-complianceStatus":B(({row:p})=>[x(C(ge),{variant:bt(p.complianceStatus)},{default:B(()=>[p.complianceStatus==="NON_COMPLIANT"?(k(),R("svg",Ko,a[33]||(a[33]=[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.728-.833-2.498 0L4.316 16.5c-.77.833.192 2.5 1.732 2.5z"},null,-1)]))):p.complianceStatus==="EXPIRING_SOON"?(k(),R("svg",Xo,a[34]||(a[34]=[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"},null,-1)]))):(k(),R("svg",Zo,a[35]||(a[35]=[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"},null,-1)]))),q(" "+$(It(p.complianceStatus)),1)]),_:2},1032,["variant"])]),"column-lastMaintenance":B(({row:p})=>[p.lastMaintenance?(k(),R("div",es,$(Te(p.lastMaintenance)),1)):(k(),R("span",ts,"Never"))]),"column-nextMaintenance":B(({row:p})=>[p.nextMaintenance?(k(),R("div",{key:0,class:ne(["text-sm",Ct(p.nextMaintenance)])},$(Te(p.nextMaintenance)),3)):(k(),R("span",ns,"Not scheduled"))]),"column-value":B(({row:p})=>[r("div",as,$(wt(p.value)),1)]),"row-actions":B(({row:p})=>[r("div",os,[x(C(J),{variant:"ghost",size:"sm",onClick:I=>ke(p.id),title:"View Details"},{default:B(()=>[a[36]||(a[36]=r("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"}),r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"})],-1)),C(b)?W("",!0):(k(),R("span",ss,"View"))]),_:2,__:[36]},1032,["onClick"]),x(C(J),{variant:"ghost",size:"sm",onClick:I=>He(p.id),title:"Edit Asset"},{default:B(()=>[a[37]||(a[37]=r("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1)),C(b)?W("",!0):(k(),R("span",rs,"Edit"))]),_:2,__:[37]},1032,["onClick"]),x(C(J),{variant:"ghost",size:"sm",onClick:I=>gt(p.id),title:"Create Work Order"},{default:B(()=>[a[38]||(a[38]=r("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 6v6m0 0v6m0-6h6m-6 0H6"})],-1)),C(b)?W("",!0):(k(),R("span",is,"Work Order"))]),_:2,__:[38]},1032,["onClick"]),p.riskLevel==="HIGH"?(k(),Ae(C(J),{key:0,variant:"ghost",size:"sm",onClick:I=>mn(p.id),title:"AI Analysis",class:"text-orange-600 hover:text-orange-700"},{default:B(()=>[a[39]||(a[39]=r("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"})],-1)),C(b)?W("",!0):(k(),R("span",ls,"Analyze"))]),_:2,__:[39]},1032,["onClick"])):W("",!0)])]),_:1},8,["columns","data","loading","pagination"])],2)):C(b)&&_.value?(k(),R("div",cs,[Ne.value?(k(),R("div",us,a[40]||(a[40]=[r("div",{class:"flex items-center space-x-2 text-gray-500"},[r("svg",{class:"w-6 h-6 animate-spin",fill:"none",viewBox:"0 0 24 24"},[r("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"}),r("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]),r("span",null,"Loading assets...")],-1)]))):Ue.value.length===0?(k(),R("div",ds,a[41]||(a[41]=[r("div",{class:"text-gray-500"},[r("svg",{class:"w-12 h-12 mx-auto mb-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M13 10V3L4 14h7v7l9-11h-7z"})]),r("p",{class:"text-lg font-medium"},"No assets found"),r("p",{class:"text-sm mt-1"},"Try adjusting your filters or create a new asset")],-1)]))):(k(),R("div",ms,[(k(!0),R(Qe,null,We(Ue.value,p=>(k(),R("div",{key:p.id,class:"bg-white rounded-lg shadow border border-gray-200 p-4 touch-manipulation",onClick:I=>un(p)},[r("div",gs,[r("div",vs,[a[42]||(a[42]=r("div",{class:"w-12 h-12 rounded bg-primary-100 flex items-center justify-center mr-3 flex-shrink-0"},[r("svg",{class:"w-6 h-6 text-primary-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M13 10V3L4 14h7v7l9-11h-7z"})])],-1)),r("div",ps,[r("h3",hs,$(p.name),1),r("p",ys,$(p.model||"No model specified"),1)])]),r("div",ws,[x(C(ge),{variant:vt(p.status)},{default:B(()=>[q($(ht(p.status)),1)]),_:2},1032,["variant"]),x(C(ge),{variant:pt(p.criticality)},{default:B(()=>[q($(yt(p.criticality)),1)]),_:2},1032,["variant"])])]),r("div",Cs,[r("div",As,[a[43]||(a[43]=r("span",{class:"text-sm text-gray-500"},"Health Score",-1)),r("span",{class:ne(["text-sm font-medium",je(p.healthScore)])},$(p.healthScore)+"% ",3)]),r("div",bs,[r("div",{class:ne(["h-2 rounded-full transition-all duration-300",At(p.healthScore)]),style:_t({width:`${p.healthScore}%`})},null,6)])]),r("div",Is,[r("div",null,[a[44]||(a[44]=r("span",{class:"text-gray-500"},"Value:",-1)),r("div",Es,$(wt(p.value)),1)]),r("div",null,[a[45]||(a[45]=r("span",{class:"text-gray-500"},"Last Maintenance:",-1)),r("div",Ms,[p.lastMaintenance?(k(),R("span",Ss,$(Te(p.lastMaintenance)),1)):(k(),R("span",Ns,"Never"))])]),r("div",null,[a[46]||(a[46]=r("span",{class:"text-gray-500"},"Next Maintenance:",-1)),r("div",ks,[p.nextMaintenance?(k(),R("span",{key:0,class:ne(Ct(p.nextMaintenance))},$(Te(p.nextMaintenance)),3)):(k(),R("span",Ts,"Not scheduled"))])]),r("div",null,[a[47]||(a[47]=r("span",{class:"text-gray-500"},"Compliance:",-1)),r("div",xs,[x(C(ge),{variant:bt(p.complianceStatus),size:"xs"},{default:B(()=>[q($(It(p.complianceStatus)),1)]),_:2},1032,["variant"])])])]),r("div",_s,[r("div",Rs," ID: "+$(p.id),1),r("div",Ds,[x(C(J),{variant:"ghost",size:"xs",onClick:De(I=>He(p.id),["stop"])},{default:B(()=>a[48]||(a[48]=[q(" Edit ",-1)])),_:2,__:[48]},1032,["onClick"]),x(C(J),{variant:"ghost",size:"xs",onClick:De(I=>ke(p.id),["stop"])},{default:B(()=>a[49]||(a[49]=[q(" View ",-1)])),_:2,__:[49]},1032,["onClick"]),x(C(J),{variant:"ghost",size:"xs",onClick:De(I=>gt(p.id),["stop"])},{default:B(()=>a[50]||(a[50]=[q(" WO ",-1)])),_:2,__:[50]},1032,["onClick"])])])],8,fs))),128))]))])):W("",!0)]),x(C(Rt),{modelValue:S.value,"onUpdate:modelValue":a[25]||(a[25]=p=>S.value=p),title:on.value,size:C(b)?"full":"xl",onConfirm:Mt,onCancel:Ge},{footer:B(()=>[r("div",or,[r("div",sr,[U.value||j.value?(k(),R("div",rr,[U.value?(k(),R("svg",ir,a[65]||(a[65]=[r("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z","clip-rule":"evenodd"},null,-1)]))):(k(),R("svg",lr,a[66]||(a[66]=[r("path",{"fill-rule":"evenodd",d:"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z","clip-rule":"evenodd"},null,-1)]))),U.value?(k(),R("span",cr,"Auto-saving...")):j.value?(k(),R("span",ur,"Last saved "+$(sn.value),1)):W("",!0)])):W("",!0),v.value!=="basic"?(k(),Ae(C(J),{key:1,variant:"outline",size:"sm",onClick:a[23]||(a[23]=p=>Et("previous"))},{default:B(()=>a[67]||(a[67]=[q(" ← Previous ",-1)])),_:1,__:[67]})):W("",!0)]),r("div",dr,[x(C(J),{variant:"secondary",onClick:Ge},{default:B(()=>a[68]||(a[68]=[q(" Cancel ",-1)])),_:1,__:[68]}),v.value!=="qr"?(k(),Ae(C(J),{key:0,variant:"outline",onClick:a[24]||(a[24]=p=>Et("next"))},{default:B(()=>a[69]||(a[69]=[q(" Next → ",-1)])),_:1,__:[69]})):W("",!0),x(C(J),{variant:"primary",loading:l.value,onClick:Mt},{default:B(()=>[q($(E.value==="create"?"Create Asset":"Update Asset"),1)]),_:1},8,["loading"])])])]),default:B(()=>{var p;return[g.value?(k(),R("div",Ps,[r("div",Os,[r("div",null,[a[51]||(a[51]=r("h4",{class:"text-sm font-medium text-blue-900"},"Restore Previous Data",-1)),r("p",Ls," You have unsaved changes from "+$(new Date((p=O.value)==null?void 0:p.timestamp).toLocaleString())+". Would you like to restore them? ",1)]),r("div",Fs,[x(C(J),{size:"sm",variant:"primary",onClick:Nt},{default:B(()=>a[52]||(a[52]=[q(" Restore ",-1)])),_:1,__:[52]}),x(C(J),{size:"sm",variant:"secondary",onClick:kt},{default:B(()=>a[53]||(a[53]=[q(" Dismiss ",-1)])),_:1,__:[53]})])])])):W("",!0),x(C(aa),{visible:g.value,"saved-data-info":O.value,onRestore:Nt,onDismiss:kt},null,8,["visible","saved-data-info"]),r("div",Bs,[x(C(Dt),{modelValue:v.value,"onUpdate:modelValue":a[5]||(a[5]=I=>v.value=I),tabs:Ce,onTabChange:kn},null,8,["modelValue"])]),v.value==="basic"?(k(),R("div",Vs,[r("div",Us,[x(Ia,{modelValue:h.value.assetNumber,"onUpdate:modelValue":a[6]||(a[6]=I=>h.value.assetNumber=I),error:m.value.assetNumber},null,8,["modelValue","error"])]),r("div",zs,[x(C(oe),{modelValue:h.value.name,"onUpdate:modelValue":a[7]||(a[7]=I=>h.value.name=I),label:"Asset Name",placeholder:"Enter asset name",required:"",error:m.value.name,onInput:le},null,8,["modelValue","error"]),x(C(ce),{modelValue:h.value.category,"onUpdate:modelValue":a[8]||(a[8]=I=>h.value.category=I),label:"Category",placeholder:"Select category",options:mt.value,required:"",error:m.value.category,onChange:le},null,8,["modelValue","options","error"]),x(C(ce),{modelValue:h.value.status,"onUpdate:modelValue":a[9]||(a[9]=I=>h.value.status=I),label:"Status",placeholder:"Select status",options:rn.value,required:"",error:m.value.status,onChange:le},null,8,["modelValue","options","error"]),x(C(ce),{modelValue:h.value.criticality,"onUpdate:modelValue":a[10]||(a[10]=I=>h.value.criticality=I),label:"Criticality",placeholder:"Select criticality",options:ft.value,required:"",error:m.value.criticality,onChange:le},null,8,["modelValue","options","error"]),x(C(oe),{modelValue:h.value.location,"onUpdate:modelValue":a[11]||(a[11]=I=>h.value.location=I),label:"Location",placeholder:"Enter location",error:m.value.location,onInput:le},null,8,["modelValue","error"])]),r("div",null,[a[54]||(a[54]=r("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Description",-1)),zn(r("textarea",{"onUpdate:modelValue":a[12]||(a[12]=I=>h.value.description=I),class:ne(["w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",{"border-red-300":m.value.description}]),placeholder:"Describe the asset's purpose and characteristics",rows:"3",onInput:le},null,34),[[Hn,h.value.description]]),m.value.description?(k(),R("p",Hs,$(m.value.description),1)):W("",!0)])])):W("",!0),v.value==="financial"?(k(),R("div",$s,[r("div",js,[x(C(oe),{modelValue:h.value.purchasePrice,"onUpdate:modelValue":a[13]||(a[13]=I=>h.value.purchasePrice=I),modelModifiers:{number:!0},type:"number",label:"Purchase Price",placeholder:"0.00",step:"0.01",min:"0",error:m.value.purchasePrice},null,8,["modelValue","error"]),x(C(oe),{modelValue:h.value.currentValue,"onUpdate:modelValue":a[14]||(a[14]=I=>h.value.currentValue=I),modelModifiers:{number:!0},type:"number",label:"Current Value",placeholder:"0.00",step:"0.01",min:"0",error:m.value.currentValue},null,8,["modelValue","error"]),x(C(oe),{modelValue:h.value.purchaseDate,"onUpdate:modelValue":a[15]||(a[15]=I=>h.value.purchaseDate=I),type:"date",label:"Purchase Date",error:m.value.purchaseDate},null,8,["modelValue","error"]),x(C(oe),{modelValue:h.value.installationDate,"onUpdate:modelValue":a[16]||(a[16]=I=>h.value.installationDate=I),type:"date",label:"Installation Date",error:m.value.installationDate},null,8,["modelValue","error"]),x(C(oe),{modelValue:h.value.vendor,"onUpdate:modelValue":a[17]||(a[17]=I=>h.value.vendor=I),label:"Vendor/Supplier",placeholder:"Enter vendor name",error:m.value.vendor},null,8,["modelValue","error"]),x(C(oe),{modelValue:h.value.model,"onUpdate:modelValue":a[18]||(a[18]=I=>h.value.model=I),label:"Model/Part Number",placeholder:"Enter model number",error:m.value.model},null,8,["modelValue","error"])])])):W("",!0),v.value==="warranty"?(k(),R("div",Ys,[x(Jn,{modelValue:h.value.warranty,"onUpdate:modelValue":a[19]||(a[19]=I=>h.value.warranty=I),onValidationChange:xn},null,8,["modelValue"])])):W("",!0),v.value==="custom"?(k(),R("div",Gs,[x(Kn,{modelValue:h.value.customFields,"onUpdate:modelValue":a[20]||(a[20]=I=>h.value.customFields=I),onValidationChange:_n},null,8,["modelValue"])])):W("",!0),v.value==="attachments"?(k(),R("div",qs,[r("div",null,[a[55]||(a[55]=r("label",{class:"block text-sm font-medium text-gray-700 mb-2"}," Primary Image ",-1)),a[56]||(a[56]=r("p",{class:"text-sm text-gray-500 mb-3"}," Upload a main image that represents this asset (equipment photos, identification images, etc.) ",-1)),x(C(Pt),{modelValue:h.value.image,"onUpdate:modelValue":a[21]||(a[21]=I=>h.value.image=I),accept:"image/*",multiple:!1,uploading:re.value,"upload-progress":L.value,onFilesAdded:bn},null,8,["modelValue","uploading","upload-progress"])]),r("div",null,[a[63]||(a[63]=r("label",{class:"block text-sm font-medium text-gray-700 mb-2"}," Additional Files ",-1)),a[64]||(a[64]=r("p",{class:"text-sm text-gray-500 mb-3"}," Upload manuals, documentation, additional photos, or other relevant files ",-1)),r("div",Qs,[a[58]||(a[58]=r("svg",{class:"mx-auto h-12 w-12 text-gray-400",stroke:"currentColor",fill:"none",viewBox:"0 0 48 48"},[r("path",{d:"M28 8H12a4 4 0 00-4 4v20m32-12v8m0 0v8a4 4 0 01-4 4H12a4 4 0 01-4-4v-4m32-4l-3.172-3.172a4 4 0 00-5.656 0L28 28M8 32l9.172-9.172a4 4 0 015.656 0L28 28m0 0l4 4m4-24h8m-4-4v8m-12 4h.02","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})],-1)),r("div",Ws,[r("label",Js,[a[57]||(a[57]=r("span",{class:"mt-2 block text-sm font-medium text-gray-900"}," Drop files here or click to upload ",-1)),r("input",{type:"file",class:"sr-only",multiple:"",accept:"image/*,application/pdf,.doc,.docx,.txt",onChange:En},null,32)])]),a[59]||(a[59]=r("p",{class:"mt-2 text-xs text-gray-500"}," PNG, JPG, PDF, DOC, TXT up to 10MB each (max 10 files) ",-1))]),h.value.files&&h.value.files.length>0?(k(),R("div",Ks,[(k(!0),R(Qe,null,We(h.value.files,(I,te)=>(k(),R("div",{key:te,class:"flex items-center justify-between p-3 bg-gray-50 rounded-lg border"},[r("div",Xs,[a[60]||(a[60]=r("svg",{class:"w-5 h-5 text-gray-400 mr-3",fill:"currentColor",viewBox:"0 0 20 20"},[r("path",{"fill-rule":"evenodd",d:"M4 4a2 2 0 012-2h4.586A2 2 0 0112 2.586L15.414 6A2 2 0 0116 7.414V16a2 2 0 01-2 2H6a2 2 0 01-2-2V4zm2 6a1 1 0 011-1h6a1 1 0 110 2H7a1 1 0 01-1-1zm1 3a1 1 0 100 2h6a1 1 0 100-2H7z","clip-rule":"evenodd"})],-1)),r("div",null,[r("span",Zs,$(I.name||"Untitled File"),1),r("div",er,$(Sn(I.size||0))+" • Uploaded "+$(Nn(I.uploadedAt)),1)])]),x(C(J),{variant:"ghost",size:"sm",onClick:fe=>Mn(te),class:"text-red-600 hover:text-red-800"},{default:B(()=>a[61]||(a[61]=[r("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1)])),_:2,__:[61]},1032,["onClick"])]))),128))])):W("",!0),r("div",tr,[r("details",null,[a[62]||(a[62]=r("summary",{class:"cursor-pointer hover:text-gray-700"},"Alternative Upload Method",-1)),r("div",nr,[x(C(Pt),{modelValue:h.value.files,"onUpdate:modelValue":a[22]||(a[22]=I=>h.value.files=I),accept:"image/*,application/pdf,.doc,.docx,.txt",multiple:!0,"max-files":10,uploading:re.value,"upload-progress":L.value,onFilesAdded:In},null,8,["modelValue","uploading","upload-progress"])])])])])])):W("",!0),v.value==="qr"?(k(),R("div",ar,[x(Oo,{"asset-data":h.value,"auto-generate":!0,onQrGenerated:Rn},null,8,["asset-data"])])):W("",!0)]}),_:1},8,["modelValue","title","size"]),x(C(Rt),{modelValue:T.value,"onUpdate:modelValue":a[26]||(a[26]=p=>T.value=p),title:"Asset AI Analysis",size:C(b)?"full":"xl"},{content:B(()=>[F.value?(k(),R("div",mr,[r("div",fr,[a[74]||(a[74]=r("h3",{class:"text-lg font-medium text-gray-900 mb-3"},"Health Assessment",-1)),r("div",gr,[r("div",vr,[r("div",{class:ne(["text-2xl font-bold",je(F.value.healthScore)])},$(F.value.healthScore)+"% ",3),a[70]||(a[70]=r("div",{class:"text-sm text-gray-600"},"Overall Health",-1))]),r("div",pr,[r("div",hr,$(F.value.efficiency||"N/A")+"% ",1),a[71]||(a[71]=r("div",{class:"text-sm text-gray-600"},"Efficiency",-1))]),r("div",yr,[r("div",wr,$(F.value.reliability||"N/A")+"% ",1),a[72]||(a[72]=r("div",{class:"text-sm text-gray-600"},"Reliability",-1))]),r("div",Cr,[r("div",{class:ne(["text-2xl font-bold",An(F.value.riskLevel)])},$(F.value.riskLevel),3),a[73]||(a[73]=r("div",{class:"text-sm text-gray-600"},"Risk Level",-1))])])]),F.value.recommendations?(k(),R("div",Ar,[a[76]||(a[76]=r("h3",{class:"text-lg font-medium text-gray-900 mb-3"},"AI Recommendations",-1)),r("div",br,[(k(!0),R(Qe,null,We(F.value.recommendations,(p,I)=>(k(),R("div",{key:I,class:"flex items-start p-3 bg-blue-50 rounded-lg"},[a[75]||(a[75]=r("svg",{class:"w-5 h-5 text-blue-600 mt-0.5 mr-2 flex-shrink-0",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"})],-1)),r("span",Ir,$(p),1)]))),128))])])):W("",!0)])):W("",!0)]),actions:B(()=>[x(C(J),{variant:"secondary",onClick:fn},{default:B(()=>a[77]||(a[77]=[q(" Close ",-1)])),_:1,__:[77]}),x(C(J),{onClick:gn},{default:B(()=>a[78]||(a[78]=[q(" Generate Full Report ",-1)])),_:1,__:[78]})]),_:1},8,["modelValue","size"])]),_:1}))}},Hr=rt(Er,[["__scopeId","data-v-14f305af"]]);export{Hr as default}; diff --git a/frontend/dist/assets/AssetsListView-CX_TFbT7.js b/frontend/dist/assets/AssetsListView-CX_TFbT7.js deleted file mode 100644 index 3890c2e2..00000000 --- a/frontend/dist/assets/AssetsListView-CX_TFbT7.js +++ /dev/null @@ -1,61 +0,0 @@ -import{r as k,c as Q,o as Me,b4 as Ot,_ as dt,m as st,a as j,g as $,b as u,j as Z,t as q,d as _,w as H,k as W,e as T,F as ee,ac as Dn,h as Pn,s as On,v as _n,ad as Ln,i as Ue,n as pe,Q as Fn,ae as Bn,aU as Vn,af as Mt,aQ as Tt}from"./index-BUdRbiwj.js";import{u as Un,A as he,C as zn,a as Hn,b as $n,S as Yn}from"./assets-eZiqmOvX.js";import{u as jn}from"./locations-IQR_pcEX.js";import{u as Gn,W as qn,C as Qn}from"./CustomFieldsForm-BQBEtYs0.js";import{F as Wn,a as Jn}from"./FPPageHeader-CTG2L28r.js";import{F as re}from"./FPInput-CzR_dWoe.js";import{F as ue}from"./FPSelect-C7p47Ma2.js";import{F as Kn}from"./FPStats-BGfZcDZc.js";import{F as Xn}from"./FPTable-CU8C_NYc.js";import{F as Nt}from"./FPModal-DWGF1LV8.js";import{F as et}from"./FPBadge-BKY5dPnL.js";import{F as xt}from"./FPTabs-R71V25QN.js";import{F as kt}from"./FPFileUpload-D2coSbjN.js";import{_ as Zn}from"./FormRestoreNotification-DYBlXhOP.js";import"./FPCheckbox-Bu8jNAEW.js";import"./FPCard-qHzcEQAE.js";function ea(){const e=k({}),t=k([]),o=k([]),r=k([]),n=k([]),a=k([]),c=k(!1),l=k(null),d=Q(()=>{if(!e.value.healthMetrics)return 0;const p=e.value.healthMetrics,s={availability:.3,reliability:.25,performance:.2,quality:.15,safety:.1};let m=0;return Object.entries(s).forEach(([v,D])=>{m+=(p[v]||0)*D}),Math.round(m)}),h=Q(()=>t.value.filter(p=>p.healthScore<60||p.downtime>20)),w=Q(()=>t.value.filter(p=>p.healthScore>=90).sort((p,s)=>s.healthScore-p.healthScore).slice(0,10)),V=Q(()=>{if(!n.value.length)return{};const p=n.value[n.value.length-1],s=n.value[n.value.length-2];if(!s)return{trend:"stable",change:0};const m=(p.total-s.total)/s.total*100;return{trend:m>5?"increasing":m<-5?"decreasing":"stable",change:Math.round(m*100)/100,current:p.total,previous:s.total}}),E=[{id:"availability",name:"Asset Availability",description:"Percentage of time asset is operational",unit:"%",target:95,formula:"(Uptime / Total Time) × 100"},{id:"reliability",name:"Asset Reliability",description:"Mean time between failures",unit:"hours",target:1e3,formula:"Operating Time / Number of Failures"},{id:"performance",name:"Performance Efficiency",description:"Actual vs designed performance",unit:"%",target:90,formula:"(Actual Output / Designed Output) × 100"},{id:"oee",name:"Overall Equipment Effectiveness",description:"Combined availability, performance, and quality",unit:"%",target:85,formula:"Availability × Performance × Quality"},{id:"mtbf",name:"Mean Time Between Failures",description:"Average time between breakdowns",unit:"hours",target:2e3,formula:"Total Operating Time / Number of Failures"},{id:"mttr",name:"Mean Time To Repair",description:"Average time to restore after failure",unit:"hours",target:4,formula:"Total Repair Time / Number of Repairs"}],P=[{id:"asset_performance",name:"Asset Performance Report",description:"Comprehensive performance analysis",frequency:["DAILY","WEEKLY","MONTHLY","QUARTERLY"],metrics:["availability","reliability","performance","oee"]},{id:"maintenance_summary",name:"Maintenance Summary",description:"Maintenance activities and costs",frequency:["WEEKLY","MONTHLY","QUARTERLY"],metrics:["maintenance_cost","work_orders","compliance"]},{id:"cost_analysis",name:"Cost Analysis Report",description:"Financial analysis of asset operations",frequency:["MONTHLY","QUARTERLY","ANNUAL"],metrics:["total_cost","maintenance_cost","parts_cost","labor_cost"]},{id:"compliance_audit",name:"Compliance Audit",description:"Regulatory compliance status",frequency:["MONTHLY","QUARTERLY","ANNUAL"],metrics:["inspections","certifications","violations"]},{id:"lifecycle_analysis",name:"Asset Lifecycle Analysis",description:"Asset age, depreciation, and replacement planning",frequency:["QUARTERLY","ANNUAL"],metrics:["age","depreciation","replacement_cost","eol_prediction"]}],O=async(p,s="30d")=>{try{c.value=!0,l.value=null;const[m,v,D,F,Y]=await Promise.all([analyticsRepository.getAssetAnalytics(p,s),analyticsRepository.getPerformanceMetrics(p,s),analyticsRepository.getTrendData(p,s),analyticsRepository.getComplianceData(p,s),analyticsRepository.getCostAnalysis(p,s)]);e.value=m.data||m,t.value=v.data||v,o.value=D.data||D,r.value=F.data||F,n.value=Y.data||Y}catch(m){l.value=m.message||"Failed to load asset analytics",console.error("Error loading asset analytics:",m)}finally{c.value=!1}},L=async(p,s,m,v={})=>{try{c.value=!0;const D={templateId:p,assetIds:Array.isArray(s)?s:[s],startDate:m.start,endDate:m.end,parameters:v,format:"JSON",generatedAt:new Date().toISOString()},F=await reportRepository.generate(D),Y=F.data||F;return a.value.push(Y),Y}catch(D){throw l.value=D.message||"Failed to generate report",D}finally{c.value=!1}},G=(p,s)=>{var Y,K;const m=E.find(z=>z.id===p);if(!m||!s)return null;let v=0;switch(p){case"availability":v=s.uptime&&s.totalTime?s.uptime/s.totalTime*100:0;break;case"reliability":v=s.operatingTime&&s.failures?s.operatingTime/s.failures:0;break;case"performance":v=s.actualOutput&&s.designedOutput?s.actualOutput/s.designedOutput*100:0;break;case"oee":const z=((Y=G("availability",s))==null?void 0:Y.value)||0,f=((K=G("performance",s))==null?void 0:K.value)||0,b=s.qualityRate||100;v=z/100*(f/100)*(b/100)*100;break;case"mtbf":v=s.operatingTime&&s.failures?s.operatingTime/s.failures:0;break;case"mttr":v=s.repairTime&&s.repairs?s.repairTime/s.repairs:0;break;default:v=s[p]||0}const D=m.target,F=(v-D)/D*100;return{value:Math.round(v*100)/100,target:D,variance:Math.round(F*100)/100,status:Math.abs(F)<=5?"on_target":F>0?"above_target":"below_target",trend:N(p,s)}},N=(p,s)=>{if(!s.historical||s.historical.length<2)return"stable";const v=s.historical.slice(-3).map(Y=>Y[p]||0),D=v[v.length-1]-v[0],F=v[0]*.05;return Math.abs(D)<=F?"stable":D>0?"improving":"declining"},y=p=>{const s=[];return p.availability<90&&s.push({type:"warning",category:"availability",message:"Asset availability is below target",recommendation:"Review maintenance schedule and identify recurring issues",priority:"high"}),p.mtbf<500&&s.push({type:"alert",category:"reliability",message:"Mean time between failures is critically low",recommendation:"Investigate root causes and consider preventive maintenance",priority:"critical"}),p.maintenanceCost>p.replacementThreshold*.7&&s.push({type:"info",category:"cost",message:"Maintenance costs approaching replacement threshold",recommendation:"Evaluate asset lifecycle and replacement options",priority:"medium"}),p.performance<80&&s.push({type:"warning",category:"performance",message:"Asset performance is declining",recommendation:"Schedule performance assessment and calibration",priority:"high"}),s.sort((m,v)=>{const D={critical:4,high:3,medium:2,low:1};return D[v.priority]-D[m.priority]})},R=p=>{const s={age:p.age||0,utilization:p.utilizationRate||0,maintenanceCompliance:p.maintenanceCompliance||100,performance:p.performance||100,failures:p.recentFailures||0},m={age:.2,utilization:.2,maintenanceCompliance:.3,performance:.2,failures:.1};let v=0;v+=Math.min(s.age/20,1)*m.age*100;const D=s.utilization>90||s.utilization<10?1:0;v+=D*m.utilization*100,v+=(100-s.maintenanceCompliance)*m.maintenanceCompliance,v+=(100-s.performance)*m.performance,v+=Math.min(s.failures*10,100)*m.failures;const F=Math.min(v,100);return{riskScore:Math.round(F),riskLevel:F>=80?"high":F>=60?"medium":"low",timeToFailure:F>=80?"1-3 months":F>=60?"3-6 months":"6+ months",confidence:M(s),factors:Object.entries(s).map(([Y,K])=>({name:Y,value:K,impact:m[Y]*100}))}},M=p=>{const s=Object.values(p).filter(m=>m!=null).length/Object.keys(p).length;return Math.round(s*100)},U=(p,s)=>{if(!p.length)return[];const v=[...p.map(F=>F[s]||0)].sort((F,Y)=>Y-F),D={p90:v[Math.floor(v.length*.1)],p75:v[Math.floor(v.length*.25)],p50:v[Math.floor(v.length*.5)],p25:v[Math.floor(v.length*.75)],p10:v[Math.floor(v.length*.9)]};return p.map(F=>{const Y=F[s]||0;let K="bottom";return Y>=D.p90?K="top":Y>=D.p75?K="high":Y>=D.p50?K="medium":Y>=D.p25&&(K="low"),{...F,benchmark:{value:Y,ranking:K,percentile:x(Y,v)}}})},x=(p,s)=>{const m=s.findIndex(v=>v<=p);return m===-1?100:Math.round(m/s.length*100)},S=(p,s="csv")=>{switch(s.toLowerCase()){case"csv":return C(p);case"json":return JSON.stringify(p,null,2);case"excel":return B(p);default:return JSON.stringify(p,null,2)}},C=p=>{if(!Array.isArray(p)||p.length===0)return"";const s=Object.keys(p[0]);return[s.join(","),...p.map(v=>s.map(D=>`"${v[D]||""}"`).join(","))].join(` -`)},B=p=>C(p);return{analyticsData:e,performanceMetrics:t,trendData:o,complianceData:r,costAnalysis:n,reports:a,loading:c,error:l,assetHealthScore:d,criticalAssets:h,topPerformers:w,costTrends:V,kpiDefinitions:E,reportTemplates:P,loadAssetAnalytics:O,generateReport:L,calculateKPI:G,calculateTrend:N,getAssetHealthInsights:y,predictAssetFailure:R,calculatePredictionConfidence:M,benchmarkAssets:U,calculatePercentile:x,exportReportData:S,exportToCSV:C,exportToExcel:B}}function ta(){const e=k(!1),t=k({}),o=k([]),r=k([]),n=k([]),a=k([]),c=k(null),l={FAILURE_PREDICTION:"failure_prediction",MAINTENANCE_OPTIMIZATION:"maintenance_optimization",COST_FORECASTING:"cost_forecasting",PERFORMANCE_ANALYSIS:"performance_analysis",ANOMALY_DETECTION:"anomaly_detection"},d=Q(()=>o.value.length>0),h=Q(()=>r.value.filter(x=>x.severity==="CRITICAL")),w=Q(()=>n.value.filter(x=>x.priority==="HIGH")),V=async(x,S=30)=>{try{e.value=!0,await new Promise(p=>setTimeout(p,2e3));const C={assetId:x,failureProbability:Math.random()*.3+.1,predictedFailureDate:new Date(Date.now()+Math.random()*30*24*60*60*1e3),confidence:Math.random()*.3+.7,riskFactors:[{factor:"Operating hours exceeding recommended limits",weight:.3},{factor:"Temperature anomalies detected",weight:.25},{factor:"Vibration patterns indicate wear",weight:.2},{factor:"Maintenance intervals exceeded",weight:.15},{factor:"Historical failure patterns",weight:.1}],recommendedActions:["Schedule immediate inspection","Replace critical components","Increase monitoring frequency"],timeframe:S,generatedAt:new Date},B=o.value.findIndex(p=>p.assetId===x);return B>=0?o.value[B]=C:o.value.push(C),C}catch(C){throw console.error("Failed to predict asset failure:",C),c.value="Failed to generate failure prediction",C}finally{e.value=!1}},E=async x=>{try{e.value=!0,await new Promise(C=>setTimeout(C,1500));const S=x.map(C=>({assetId:C.id,currentInterval:C.maintenanceInterval||90,optimizedInterval:Math.floor(Math.random()*30)+75,potentialSavings:Math.floor(Math.random()*5e3)+1e3,riskReduction:Math.random()*.2+.1,reasoning:["Historical performance data analysis","Similar asset benchmarking","Operating condition factors","Cost-benefit optimization"],implementationDate:new Date(Date.now()+7*24*60*60*1e3)}));return n.value.push({id:`maintenance_opt_${Date.now()}`,type:"MAINTENANCE_OPTIMIZATION",title:"Optimized Maintenance Schedules",description:"AI-recommended maintenance schedule adjustments",optimizations:S,totalSavings:S.reduce((C,B)=>C+B.potentialSavings,0),priority:"MEDIUM",confidence:.85,generatedAt:new Date}),S}catch(S){throw console.error("Failed to optimize maintenance schedule:",S),c.value="Failed to optimize maintenance schedule",S}finally{e.value=!1}},P=async x=>{try{e.value=!0,await new Promise(C=>setTimeout(C,1e3));const S=[{id:`anomaly_${Date.now()}_1`,assetId:x.id,type:"PERFORMANCE",severity:"HIGH",metric:"Operating Temperature",normalRange:"18-22°C",currentValue:"26°C",deviation:.18,detectedAt:new Date,description:"Operating temperature significantly above normal range",potentialCauses:["Cooling system malfunction","Blocked air filters","Refrigerant leak"],recommendedActions:["Inspect cooling system immediately","Check and replace air filters","Schedule refrigerant level check"]},{id:`anomaly_${Date.now()}_2`,assetId:x.id,type:"VIBRATION",severity:"MEDIUM",metric:"Vibration Level",normalRange:"0.1-0.3 mm/s",currentValue:"0.45 mm/s",deviation:.12,detectedAt:new Date,description:"Vibration levels elevated above normal operating range",potentialCauses:["Bearing wear","Misalignment","Imbalanced components"],recommendedActions:["Schedule vibration analysis","Inspect bearings and alignment","Plan preventive maintenance"]}];return r.value.push(...S),S}catch(S){throw console.error("Failed to detect anomalies:",S),c.value="Failed to detect anomalies",S}finally{e.value=!1}},O=async(x,S=365)=>{try{e.value=!0,await new Promise(p=>setTimeout(p,1500));const C=Math.random()*1e4+5e3;return{assetId:x,timeframe:S,totalForecast:C,breakdown:{maintenance:C*.6,repairs:C*.25,replacements:C*.1,energy:C*.05},monthlyTrend:Array.from({length:12},(p,s)=>({month:s+1,projected:C/12*(1+Math.random()*.2-.1),confidence:Math.random()*.2+.8})),riskFactors:[{factor:"Asset age",impact:.15},{factor:"Operating conditions",impact:.1},{factor:"Historical patterns",impact:.2},{factor:"Market trends",impact:.05}],generatedAt:new Date}}catch(C){throw console.error("Failed to forecast costs:",C),c.value="Failed to forecast costs",C}finally{e.value=!1}},L=async(x,S=[])=>{try{e.value=!0,await new Promise(p=>setTimeout(p,1200));const C={assetId:x,overallScore:Math.random()*30+70,metrics:{efficiency:Math.random()*20+80,reliability:Math.random()*25+75,availability:Math.random()*15+85,performance:Math.random()*20+80},trends:{last30Days:Math.random()*10-5,last90Days:Math.random()*15-7.5,last365Days:Math.random()*20-10},benchmarking:{industryAverage:Math.random()*20+75,peerAssets:Math.random()*25+70,bestInClass:Math.random()*15+85},insights:["Performance consistently above industry average","Slight degradation in efficiency over last quarter","Reliability metrics excellent compared to similar assets","Opportunity for improvement in energy efficiency"],recommendations:["Continue current maintenance strategy","Investigate efficiency degradation causes","Consider energy optimization upgrades","Monitor performance trends closely"],generatedAt:new Date},B=a.value.findIndex(p=>p.assetId===x);return B>=0?a.value[B]=C:a.value.push(C),C}catch(C){throw console.error("Failed to analyze performance:",C),c.value="Failed to analyze performance",C}finally{e.value=!1}},G=async x=>{try{e.value=!0,await new Promise(C=>setTimeout(C,1e3));const S=[{id:`rec_${Date.now()}_1`,type:"ENERGY_OPTIMIZATION",title:"Energy Efficiency Improvement",description:"Upgrade HVAC controls to reduce energy consumption by 15%",priority:"HIGH",estimatedSavings:12e3,implementationCost:25e3,paybackPeriod:24,affectedAssets:x.filter(C=>C.category==="HVAC").map(C=>C.id),confidence:.87,actions:["Install smart thermostats","Upgrade building automation system","Implement demand-response controls"],timeline:"3-6 months",generatedAt:new Date},{id:`rec_${Date.now()}_2`,type:"PREDICTIVE_MAINTENANCE",title:"Implement Condition-Based Monitoring",description:"Deploy IoT sensors for real-time asset monitoring",priority:"MEDIUM",estimatedSavings:8e3,implementationCost:15e3,paybackPeriod:18,affectedAssets:x.filter(C=>C.criticality==="HIGH").map(C=>C.id),confidence:.92,actions:["Install vibration sensors","Deploy temperature monitoring","Set up data analytics platform"],timeline:"2-4 months",generatedAt:new Date}];return n.value.push(...S),S}catch(S){throw console.error("Failed to generate recommendations:",S),c.value="Failed to generate recommendations",S}finally{e.value=!1}},N=x=>{let S=100;const C=x.age||0;if(S-=Math.min(C*2,20),x.lastMaintenance){const s=Math.floor((new Date-new Date(x.lastMaintenance))/864e5);S-=Math.min(s*.1,15)}return S-={OPERATIONAL:0,MAINTENANCE:10,DOWN:30,DECOMMISSIONED:100}[x.status]||0,S*={LOW:1,MEDIUM:1.1,HIGH:1.2,CRITICAL:1.3}[x.criticality]||1,Math.max(0,Math.min(100,Math.round(S)))},y=x=>{const S=N(x),C=x.age||0,B=x.criticality||"LOW";let p=0;S<50?p+=40:S<70?p+=25:S<85&&(p+=10),C>15?p+=30:C>10?p+=20:C>5&&(p+=10),p*={CRITICAL:1.5,HIGH:1.3,MEDIUM:1.1,LOW:1}[B];const m=Math.min(100,Math.round(p));return m>=70?"HIGH":m>=40?"MEDIUM":"LOW"},R=(x,S,C,B)=>{t.value[x]={accuracy:S,precision:C,recall:B,f1Score:2*(C*B)/(C+B),lastUpdated:new Date}},M=()=>{o.value=[],r.value=[],n.value=[],a.value=[],c.value=null},U=()=>({predictions:o.value,anomalies:r.value,recommendations:n.value,performanceInsights:a.value,modelMetrics:t.value,exportedAt:new Date().toISOString()});return Me(()=>{R(l.FAILURE_PREDICTION,.87,.85,.89),R(l.MAINTENANCE_OPTIMIZATION,.92,.9,.94),R(l.ANOMALY_DETECTION,.84,.88,.82),R(l.COST_FORECASTING,.79,.81,.78),R(l.PERFORMANCE_ANALYSIS,.91,.89,.93)}),{isProcessing:e,modelMetrics:t,predictions:o,anomalies:r,recommendations:n,performanceInsights:a,error:c,hasActivePredictions:d,criticalAnomalies:h,highPriorityRecommendations:w,AI_MODELS:l,predictAssetFailure:V,optimizeMaintenanceSchedule:E,detectAnomalies:P,forecastCosts:O,analyzePerformance:L,generateRecommendations:G,calculateHealthScore:N,assessRisk:y,updateModelMetrics:R,clearAnalytics:M,exportAnalytics:U}}function na(){const e=k(navigator.onLine),t=k([]),o=k(new Map),r=k(!1),n=k(null),a=k(null),c=Q(()=>t.value.length>0),l=Q(()=>r.value?"syncing":e.value?c.value?"pending":"synced":"offline"),d=Q(()=>e.value&&!r.value),h={CACHED_ASSETS:"cmms_cached_assets",PENDING_ACTIONS:"cmms_pending_actions",LAST_SYNC:"cmms_last_sync",APP_VERSION:"cmms_app_version"},w={CREATE_ASSET:"CREATE_ASSET",UPDATE_ASSET:"UPDATE_ASSET",DELETE_ASSET:"DELETE_ASSET",CREATE_WORK_ORDER:"CREATE_WORK_ORDER",UPDATE_MAINTENANCE:"UPDATE_MAINTENANCE",CONSUME_PART:"CONSUME_PART",UPDATE_VENDOR:"UPDATE_VENDOR"},V=()=>{try{const f=localStorage.getItem(h.PENDING_ACTIONS);f&&(t.value=JSON.parse(f));const b=localStorage.getItem(h.LAST_SYNC);b&&(n.value=new Date(b));const J=localStorage.getItem(h.CACHED_ASSETS);if(J){const X=JSON.parse(J);o.value=new Map(Object.entries(X))}}catch(f){console.error("Failed to initialize offline storage:",f),a.value="Failed to initialize offline storage"}},E=()=>{try{localStorage.setItem(h.PENDING_ACTIONS,JSON.stringify(t.value));const f=Object.fromEntries(o.value);localStorage.setItem(h.CACHED_ASSETS,JSON.stringify(f)),n.value&&localStorage.setItem(h.LAST_SYNC,n.value.toISOString())}catch(f){console.error("Failed to save to storage:",f),a.value="Failed to save offline data"}},P=(f,b)=>{o.value.set(`asset_${f}`,{data:b,timestamp:new Date().toISOString(),type:"asset"}),E()},O=f=>{const b=o.value.get(`asset_${f}`);if(!b)return null;const J=new Date(b.timestamp);return(new Date-J)/(1e3*60*60)>24?(o.value.delete(`asset_${f}`),E(),null):b.data},L=(f,b,J="normal")=>{const X={id:G(),type:f,data:b,timestamp:new Date().toISOString(),priority:J,retryCount:0,maxRetries:3};return J==="high"?t.value.unshift(X):t.value.push(X),E(),X.id},G=()=>`action_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,N=async()=>{if(!d.value||t.value.length===0)return{success:!0,processed:0,failed:0};r.value=!0;let f=0,b=0;try{const J=[...t.value];for(const X of J)try{await y(X);const te=t.value.findIndex(ie=>ie.id===X.id);te!==-1&&t.value.splice(te,1),f++}catch(te){if(console.error("Failed to process action:",X,te),X.retryCount++,X.retryCount>=X.maxRetries){const ie=t.value.findIndex(ae=>ae.id===X.id);ie!==-1&&t.value.splice(ie,1)}b++}n.value=new Date,E()}catch(J){console.error("Sync error:",J),a.value="Sync failed"}finally{r.value=!1}return{success:!0,processed:f,failed:b}},y=async f=>{switch(f.type){case w.CREATE_ASSET:return await R(f.data);case w.UPDATE_ASSET:return await M(f.data);case w.DELETE_ASSET:return await U(f.data);case w.CREATE_WORK_ORDER:return await x(f.data);case w.UPDATE_MAINTENANCE:return await S(f.data);case w.CONSUME_PART:return await C(f.data);case w.UPDATE_VENDOR:return await B(f.data);default:throw new Error(`Unknown action type: ${f.type}`)}},R=async f=>(await new Promise(b=>setTimeout(b,1e3)),{success:!0,id:Date.now()}),M=async f=>(await new Promise(b=>setTimeout(b,1e3)),{success:!0}),U=async f=>(await new Promise(b=>setTimeout(b,1e3)),{success:!0}),x=async f=>(await new Promise(b=>setTimeout(b,1e3)),{success:!0,id:Date.now()}),S=async f=>(await new Promise(b=>setTimeout(b,1e3)),{success:!0}),C=async f=>(await new Promise(b=>setTimeout(b,1e3)),{success:!0}),B=async f=>(await new Promise(b=>setTimeout(b,1e3)),{success:!0}),p=()=>{t.value=[],E()},s=f=>{const b=t.value.findIndex(J=>J.id===f);b!==-1&&(t.value.splice(b,1),E())},m=()=>{try{let f=0;return Object.values(h).forEach(b=>{const J=localStorage.getItem(b);J&&(f+=new Blob([J]).size)}),{used:f,usedMB:(f/(1024*1024)).toFixed(2),maxSize:5*1024*1024,percentage:(f/(5*1024*1024)*100).toFixed(1)}}catch{return{used:0,usedMB:"0",maxSize:0,percentage:"0"}}},v=()=>{o.value.clear(),Object.values(h).forEach(f=>{localStorage.removeItem(f)})},D=()=>({pendingActions:t.value,cachedData:Object.fromEntries(o.value),lastSyncTime:n.value,exportedAt:new Date().toISOString()}),F=f=>{try{return f.pendingActions&&(t.value=f.pendingActions),f.cachedData&&(o.value=new Map(Object.entries(f.cachedData))),f.lastSyncTime&&(n.value=new Date(f.lastSyncTime)),E(),!0}catch(b){return console.error("Failed to import offline data:",b),!1}},Y=()=>{e.value=!0,c.value&&setTimeout(()=>{N()},1e3)},K=()=>{e.value=!1},z=f=>{"serviceWorker"in navigator&&"sync"in window.ServiceWorkerRegistration.prototype&&navigator.serviceWorker.ready.then(b=>b.sync.register(f)).catch(b=>{console.error("Background sync registration failed:",b)})};return Me(()=>{V(),window.addEventListener("online",Y),window.addEventListener("offline",K)}),Ot(()=>{window.removeEventListener("online",Y),window.removeEventListener("offline",K)}),{isOnline:e,pendingActions:t,cachedData:o,syncInProgress:r,lastSyncTime:n,error:a,hasPendingActions:c,syncStatus:l,canSync:d,ACTION_TYPES:w,initializeOfflineStorage:V,cacheAssetData:P,getCachedAssetData:O,queueAction:L,syncPendingActions:N,clearPendingActions:p,removeAction:s,getStorageUsage:m,clearCache:v,exportOfflineData:D,importOfflineData:F,requestBackgroundSync:z}}function aa(){const e=k(!1),t=k(!1),o=k({width:0,height:0}),r=k("portrait"),n=k("desktop"),a=k(!1),c=k(null),l=k(!1),d=Q(()=>o.value.width<768),h=Q(()=>o.value.width>=768&&o.value.width<1024),w=Q(()=>o.value.width>=1024),V=Q(()=>d.value?"layout-mobile":h.value?"layout-tablet":"layout-desktop"),E=Q(()=>d.value?"grid-cols-1":h.value?"grid-cols-2":"grid-cols-3"),P=Q(()=>d.value?5:h.value?10:20),O={xs:320,sm:640,md:768,lg:1024,xl:1280,"2xl":1536},L=()=>{o.value={width:window.innerWidth,height:window.innerHeight},e.value=o.value.width=O.md&&o.value.widtho.value.height?"landscape":"portrait"},G=()=>{a.value="ontouchstart"in window||navigator.maxTouchPoints>0},N=()=>{L()},y=()=>{setTimeout(L,100)},R=z=>{z.preventDefault(),c.value=z},M=async()=>{if(!c.value)return!1;try{const z=await c.value.prompt();return console.log("Install prompt result:",z),z.outcome==="accepted"?(c.value=null,l.value=!0,!0):!1}catch(z){return console.error("Failed to install app:",z),!1}},U=()=>{l.value=window.matchMedia("(display-mode: standalone)").matches||window.navigator.standalone===!0},x=(z,f={})=>{if(!a.value)return;let b=0,J=0,X=0;const te=ae=>{const fe=ae.touches[0];b=fe.clientX,J=fe.clientY,X=Date.now()},ie=ae=>{var Le,we,Fe,Be,Te,Ne;const fe=ae.changedTouches[0],Pe=fe.clientX,We=fe.clientY,Oe=Date.now(),ge=Pe-b,ve=We-J,ye=Oe-X,_e=50,le=300;Math.abs(ge)>Math.abs(ve)&&Math.abs(ge)>_e&&ye0?(Le=f.onSwipeRight)==null||Le.call(f,ae):(we=f.onSwipeLeft)==null||we.call(f,ae):Math.abs(ve)>_e&&ye0?(Fe=f.onSwipeDown)==null||Fe.call(f,ae):(Be=f.onSwipeUp)==null||Be.call(f,ae)),Math.abs(ge)<10&&Math.abs(ve)<10&&ye<300&&((Te=f.onTap)==null||Te.call(f,ae)),ye>500&&Math.abs(ge)<10&&Math.abs(ve)<10&&((Ne=f.onLongPress)==null||Ne.call(f,ae))};return z.addEventListener("touchstart",te,{passive:!0}),z.addEventListener("touchend",ie,{passive:!0}),()=>{z.removeEventListener("touchstart",te),z.removeEventListener("touchend",ie)}},S=z=>{if(!e.value)return z;const f=z.filter(b=>b.priority==="high"||b.essential);return f.length===0?z.slice(0,3):f},C=z=>({items:z,collapsed:!0,toggle(){this.collapsed=!this.collapsed},close(){this.collapsed=!0}}),B=()=>{e.value&&(document.documentElement.style.setProperty("--animation-duration","0.2s"),document.body.classList.add("mobile-optimized"),a.value&&document.body.classList.add("touch-device"))},p=(z,f="medium")=>{const J={small:e.value?"_mobile":"_small",medium:e.value?"_mobile":"_medium",large:e.value?"_tablet":"_large"}[f]||"_medium",[X,te]=z.split(".");return`${X}${J}.${te}`},s=(z="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no")=>{let f=document.querySelector("meta[name=viewport]");f||(f=document.createElement("meta"),f.name="viewport",document.head.appendChild(f)),f.content=z},m=()=>{const z=getComputedStyle(document.documentElement);return{top:z.getPropertyValue("--safe-area-inset-top")||"0px",right:z.getPropertyValue("--safe-area-inset-right")||"0px",bottom:z.getPropertyValue("--safe-area-inset-bottom")||"0px",left:z.getPropertyValue("--safe-area-inset-left")||"0px"}},v=(z=100)=>{"vibrate"in navigator&&navigator.vibrate(z)},D=async()=>{if("wakeLock"in navigator)try{const z=await navigator.wakeLock.request("screen");return console.log("Screen wake lock acquired"),z}catch(z){console.error("Failed to acquire wake lock:",z)}return null},F=z=>{if(!e.value)return;z.querySelectorAll("input, select, textarea").forEach(b=>{(b.type==="text"||b.type==="email"||b.type==="password")&&(b.style.fontSize="16px"),b.name==="email"&&b.setAttribute("autocomplete","email"),b.type==="number"&&b.setAttribute("inputmode","numeric"),b.type==="tel"&&b.setAttribute("inputmode","tel")})},Y=()=>({cardSpacing:e.value?"space-y-3":"space-y-4",padding:e.value?"p-4":"p-6",margin:e.value?"m-2":"m-4",fontSize:e.value?"text-sm":"text-base",buttonSize:e.value?"sm":"md",modalSize:e.value?"full":"lg"}),K=()=>{var z,f;if("performance"in window){const b=performance.getEntriesByType("navigation")[0],J=performance.getEntriesByType("paint");return{loadTime:b.loadEventEnd-b.loadEventStart,domContentLoaded:b.domContentLoadedEventEnd-b.domContentLoadedEventStart,firstPaint:(z=J.find(X=>X.name==="first-paint"))==null?void 0:z.startTime,firstContentfulPaint:(f=J.find(X=>X.name==="first-contentful-paint"))==null?void 0:f.startTime}}return null};return Me(()=>{L(),G(),U(),B(),s(),window.addEventListener("resize",N),window.addEventListener("orientationchange",y),window.addEventListener("beforeinstallprompt",R),window.matchMedia("(display-mode: standalone)").addListener(f=>{l.value=f.matches})}),Ot(()=>{window.removeEventListener("resize",N),window.removeEventListener("orientationchange",y),window.removeEventListener("beforeinstallprompt",R)}),{isMobile:e,isTablet:t,screenSize:o,orientation:r,deviceType:n,touchSupport:a,installPrompt:c,isInstalled:l,isSmallScreen:d,isMediumScreen:h,isLargeScreen:w,layoutClass:V,cardGridCols:E,tablePageSize:P,breakpoints:O,updateScreenInfo:L,installApp:M,setupTouchGestures:x,optimizeTableForMobile:S,createMobileMenu:C,getResponsiveImageSrc:p,getSafeAreaInsets:m,vibrate:v,requestWakeLock:D,optimizeFormForMobile:F,getMobileLayoutConfig:Y,measurePerformance:K}}function oa(){const e=k(!1),t=k([]),o=k([]),r=k([]),n=k([]),a=k([]),c=k([]),l=k(null),d={SAFETY:"SAFETY",ENVIRONMENTAL:"ENVIRONMENTAL",ENERGY:"ENERGY",FIRE:"FIRE",ACCESSIBILITY:"ACCESSIBILITY",BUILDING_CODE:"BUILDING_CODE",INSURANCE:"INSURANCE",ISO:"ISO",OSHA:"OSHA",EPA:"EPA"},h={COMPLIANT:"COMPLIANT",NON_COMPLIANT:"NON_COMPLIANT",PENDING:"PENDING",EXPIRED:"EXPIRED",EXPIRING_SOON:"EXPIRING_SOON"},w=Q(()=>a.value.filter(s=>s.status==="OPEN")),V=Q(()=>{const s=new Date;return s.setDate(s.getDate()+30),o.value.filter(m=>new Date(m.expiryDate)<=s&&m.status==="ACTIVE")}),E=Q(()=>{if(t.value.length===0)return 0;const s=t.value.filter(m=>m.status===h.COMPLIANT).length;return Math.round(s/t.value.length*100)}),P=Q(()=>c.value.filter(s=>s.priority==="CRITICAL"&&!s.dismissed)),O=async(s=null)=>{try{e.value=!0,await new Promise(v=>setTimeout(v,1e3));const m=[{id:1,assetId:s||1,category:d.FIRE,requirement:"Fire Safety Inspection",description:"Annual fire safety system inspection and certification",status:h.COMPLIANT,lastInspection:"2024-01-15",nextInspection:"2025-01-15",inspector:"City Fire Department",certificateNumber:"FS-2024-001",notes:"All systems operational, minor recommendations implemented"},{id:2,assetId:s||1,category:d.ELEVATOR,requirement:"Elevator Safety Inspection",description:"State-mandated elevator safety inspection",status:h.EXPIRING_SOON,lastInspection:"2024-02-20",nextInspection:"2024-08-20",inspector:"State Elevator Inspector",certificateNumber:"EL-2024-045",notes:"Certificate expires soon, schedule renewal inspection"},{id:3,assetId:s||1,category:d.ENVIRONMENTAL,requirement:"EPA Refrigerant Compliance",description:"EPA Section 608 refrigerant handling compliance",status:h.NON_COMPLIANT,lastInspection:"2023-06-10",nextInspection:"2024-06-10",inspector:"EPA Certified Technician",certificateNumber:"EPA-608-2023",notes:"Refrigerant leak detected, repair required for compliance"}];t.value=s?m.filter(v=>v.assetId===s):m}catch(m){console.error("Failed to load compliance data:",m),l.value="Failed to load compliance data"}finally{e.value=!1}},L=async(s=null)=>{try{const m=[{id:1,assetId:s||1,name:"HVAC Certification",issuingBody:"ASHRAE",certificateNumber:"ASHRAE-2024-HVAC-001",issueDate:"2024-01-15",expiryDate:"2025-01-15",status:"ACTIVE",renewalRequired:!0,renewalNotificationDays:60,cost:2500,attachments:["certificate.pdf","inspection_report.pdf"]},{id:2,assetId:s||2,name:"Elevator Operating License",issuingBody:"State Department of Labor",certificateNumber:"DOL-EL-2024-789",issueDate:"2024-02-20",expiryDate:"2024-08-20",status:"EXPIRING_SOON",renewalRequired:!0,renewalNotificationDays:30,cost:1200,attachments:["license.pdf"]}];o.value=s?m.filter(v=>v.assetId===s):m}catch(m){console.error("Failed to load certifications:",m),l.value="Failed to load certifications"}},G=async(s,m)=>{try{e.value=!0,await new Promise(D=>setTimeout(D,1e3));const v=t.value.find(D=>D.id===s);return v&&(v.nextInspection=m,v.status=h.PENDING,U({type:"INSPECTION",message:`${v.requirement} scheduled for ${m}`,dueDate:m,priority:"HIGH",assetId:v.assetId})),!0}catch(v){return console.error("Failed to schedule inspection:",v),l.value="Failed to schedule inspection",!1}finally{e.value=!1}},N=async(s,m)=>{try{e.value=!0;const v=t.value.find(D=>D.id===s);return v&&(v.lastInspection=m.inspectionDate,v.status=m.passed?h.COMPLIANT:h.NON_COMPLIANT,v.inspector=m.inspector,v.notes=m.notes,m.nextInspectionDate&&(v.nextInspection=m.nextInspectionDate),m.certificateNumber&&(v.certificateNumber=m.certificateNumber),m.passed||a.value.push({id:Date.now(),complianceRecordId:s,assetId:v.assetId,category:v.category,violation:m.violations||["Inspection failed"],severity:m.severity||"MEDIUM",status:"OPEN",discoveredDate:m.inspectionDate,description:m.notes,correctiveActions:m.correctiveActions||[]})),!0}catch(v){return console.error("Failed to record inspection result:",v),l.value="Failed to record inspection result",!1}finally{e.value=!1}},y=async(s,m)=>{try{e.value=!0;const v=o.value.find(D=>D.id===s);return v&&(v.issueDate=m.issueDate,v.expiryDate=m.expiryDate,v.certificateNumber=m.certificateNumber||v.certificateNumber,v.status="ACTIVE",v.cost=m.cost||v.cost,m.attachments&&v.attachments.push(...m.attachments),c.value=c.value.filter(D=>!(D.type==="CERTIFICATION_RENEWAL"&&D.certificationId===s))),!0}catch(v){return console.error("Failed to renew certification:",v),l.value="Failed to renew certification",!1}finally{e.value=!1}},R=s=>{const m={id:Date.now(),assetId:s.assetId,category:s.category,violation:s.violation,severity:s.severity||"MEDIUM",status:"OPEN",discoveredDate:new Date().toISOString(),description:s.description||"",correctiveActions:s.correctiveActions||[],dueDate:s.dueDate,assignedTo:s.assignedTo,estimatedCost:s.estimatedCost||0};return a.value.push(m),(m.severity==="HIGH"||m.severity==="CRITICAL")&&U({type:"VIOLATION",message:`Critical compliance violation: ${m.violation}`,dueDate:m.dueDate,priority:"CRITICAL",assetId:m.assetId,violationId:m.id}),m},M=async(s,m)=>{try{const v=a.value.find(D=>D.id===s);return v&&(v.status="RESOLVED",v.resolvedDate=new Date().toISOString(),v.resolution=m.resolution,v.resolvedBy=m.resolvedBy,v.actualCost=m.actualCost,c.value=c.value.filter(D=>D.violationId!==s)),!0}catch(v){return console.error("Failed to resolve violation:",v),l.value="Failed to resolve violation",!1}},U=s=>{const m={id:Date.now(),type:s.type,message:s.message,dueDate:s.dueDate,priority:s.priority||"MEDIUM",assetId:s.assetId,dismissed:!1,createdAt:new Date().toISOString(),...s};return c.value.push(m),m},x=s=>{const m=c.value.find(v=>v.id===s);m&&(m.dismissed=!0,m.dismissedAt=new Date().toISOString())},S=async(s=[],m=null)=>{try{e.value=!0,await new Promise(F=>setTimeout(F,1500));const v=s.length>0?t.value.filter(F=>s.includes(F.assetId)):t.value,D={generatedAt:new Date().toISOString(),dateRange:m,summary:{totalRecords:v.length,compliant:v.filter(F=>F.status===h.COMPLIANT).length,nonCompliant:v.filter(F=>F.status===h.NON_COMPLIANT).length,pending:v.filter(F=>F.status===h.PENDING).length,expiring:v.filter(F=>F.status===h.EXPIRING_SOON).length},complianceScore:E.value,byCategory:{},violations:w.value,upcomingRenewals:V.value,recommendations:["Schedule immediate inspection for expired certifications","Implement preventive maintenance for critical assets","Review compliance procedures quarterly","Train staff on regulatory requirements"]};return Object.values(d).forEach(F=>{const Y=v.filter(K=>K.category===F);Y.length>0&&(D.byCategory[F]={total:Y.length,compliant:Y.filter(K=>K.status===h.COMPLIANT).length,nonCompliant:Y.filter(K=>K.status===h.NON_COMPLIANT).length,score:Math.round(Y.filter(K=>K.status===h.COMPLIANT).length/Y.length*100)})}),D}catch(v){return console.error("Failed to generate compliance report:",v),l.value="Failed to generate compliance report",null}finally{e.value=!1}},C=async()=>{try{await new Promise(m=>setTimeout(m,1e3));const s=[{regulation:"OSHA Safety Standards",category:d.SAFETY,effectiveDate:"2024-07-01",description:"Updated workplace safety requirements for industrial equipment",impact:"MEDIUM",actionRequired:"Review safety procedures and update documentation"},{regulation:"EPA Refrigerant Regulations",category:d.ENVIRONMENTAL,effectiveDate:"2024-09-01",description:"New reporting requirements for refrigerant usage",impact:"LOW",actionRequired:"Update reporting procedures"}];return n.value.push(...s),s.forEach(m=>{(m.impact==="HIGH"||m.impact==="CRITICAL")&&U({type:"REGULATORY_UPDATE",message:`New regulation: ${m.regulation}`,dueDate:m.effectiveDate,priority:m.impact==="CRITICAL"?"CRITICAL":"HIGH",regulation:m.regulation})}),s}catch(s){return console.error("Failed to check regulatory updates:",s),l.value="Failed to check regulatory updates",[]}},B=()=>({complianceRecords:t.value,certifications:o.value,violations:a.value,reminders:c.value,complianceScore:E.value,exportedAt:new Date().toISOString()}),p=()=>{const s=new Date;o.value.forEach(m=>{const v=new Date(m.expiryDate),D=Math.ceil((v-s)/(1e3*60*60*24));D<=m.renewalNotificationDays&&m.status==="ACTIVE"&&(m.status="EXPIRING_SOON",c.value.find(Y=>Y.type==="CERTIFICATION_RENEWAL"&&Y.certificationId===m.id)||U({type:"CERTIFICATION_RENEWAL",message:`${m.name} expires in ${D} days`,dueDate:m.expiryDate,priority:D<=7?"CRITICAL":"HIGH",assetId:m.assetId,certificationId:m.id}))}),t.value.forEach(m=>{m.nextInspection&&new Date(m.nextInspection){p(),setInterval(p,60*60*1e3)}),{loading:e,complianceRecords:t,certifications:o,audits:r,regulations:n,violations:a,reminders:c,error:l,activeViolations:w,upcomingRenewals:V,complianceScore:E,criticalReminders:P,COMPLIANCE_CATEGORIES:d,COMPLIANCE_STATUS:h,loadComplianceData:O,loadCertifications:L,scheduleInspection:G,recordInspectionResult:N,renewCertification:y,createViolation:R,resolveViolation:M,createReminder:U,dismissReminder:x,generateComplianceReport:S,checkRegulatoryUpdates:C,exportComplianceData:B,performComplianceCheck:p}}const ra={class:"asset-id-generator"},sa={class:"mb-4 p-4 bg-green-50 border border-green-200 rounded-lg"},ia={class:"flex items-center justify-between"},la={class:"text-lg font-bold text-green-900 font-mono"},ca={class:"flex items-center space-x-2"},ua={key:0,class:"mb-4 p-4 bg-yellow-50 border border-yellow-200 rounded-lg"},da={class:"flex items-center space-x-3"},ma={key:1,class:"mb-4 p-4 bg-gray-50 border border-gray-200 rounded-lg"},fa={class:"grid grid-cols-1 md:grid-cols-3 gap-4"},ga={class:"mt-3 flex items-center justify-between"},va={class:"text-xs text-gray-500"},pa={class:"font-mono font-bold"},ha={class:"flex space-x-2"},ya={key:2,class:"mt-2 text-sm text-red-600"},wa={__name:"AssetIdGenerator",props:{modelValue:{type:String,default:""},disabled:{type:Boolean,default:!1},error:{type:String,default:null}},emits:["update:modelValue"],setup(e,{expose:t,emit:o}){const r=e,n=o,a=k(""),c=k(""),l=k(!1),d=k(!1),h=k(!1),w=k("AST"),V=k("TIMESTAMP"),E=k(3),P=[{value:"TIMESTAMP",label:"Timestamp"},{value:"YYYYMMDD",label:"YYYY-MM-DD"},{value:"YYMMDD",label:"YY-MM-DD"},{value:"YYYY",label:"Year Only"}],O=[{value:2,label:"2 chars"},{value:3,label:"3 chars"},{value:4,label:"4 chars"},{value:5,label:"5 chars"}],L=Q(()=>!h.value),G=Q(()=>N(w.value,V.value,E.value)),N=(p,s,m)=>{let v="";const D=new Date;switch(s){case"TIMESTAMP":v=Date.now().toString().slice(-6);break;case"YYYYMMDD":v=D.toISOString().slice(0,10).replace(/-/g,"");break;case"YYMMDD":v=D.toISOString().slice(2,10).replace(/-/g,"");break;case"YYYY":v=D.getFullYear().toString();break}const F=Math.random().toString(36).substring(2,2+m).toUpperCase();return`${p}-${v}-${F}`},y=()=>{const p=N(w.value,V.value,E.value);a.value=p,h.value=!1,n("update:modelValue",p)},R=()=>{h.value||y()},M=()=>{d.value=!d.value,d.value||(l.value=!1)},U=()=>{c.value.trim()&&(a.value=c.value.trim(),h.value=!0,l.value=!1,d.value=!1,n("update:modelValue",c.value.trim()))},x=()=>{c.value="",l.value=!1},S=()=>{},C=()=>{y(),d.value=!1},B=()=>{w.value="AST",V.value="TIMESTAMP",E.value=3};return st(()=>d.value,p=>{p&&(l.value=!0)}),st(()=>r.modelValue,p=>{p!==a.value&&(a.value=p)}),Me(()=>{r.modelValue?(a.value=r.modelValue,h.value=!0):y()}),t({generateId:y,regenerateId:R}),(p,s)=>($(),j("div",ra,[u("div",sa,[u("div",ia,[u("div",null,[s[4]||(s[4]=u("h4",{class:"text-sm font-medium text-green-900"},"Asset ID",-1)),u("p",la,q(a.value||"Auto-generated"),1)]),u("div",ca,[_(T(ee),{variant:"outline",size:"sm",onClick:R,disabled:e.disabled||!L.value},{default:H(()=>s[5]||(s[5]=[u("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[u("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),W(" Regenerate ",-1)])),_:1,__:[5]},8,["disabled"]),_(T(ee),{variant:"ghost",size:"sm",onClick:M},{default:H(()=>s[6]||(s[6]=[u("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[u("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"}),u("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"})],-1),W(" Customize ",-1)])),_:1,__:[6]})])])]),l.value?($(),j("div",ua,[s[9]||(s[9]=u("h4",{class:"text-sm font-medium text-yellow-900 mb-2"},"Manual ID Entry",-1)),u("div",da,[_(T(re),{modelValue:c.value,"onUpdate:modelValue":s[0]||(s[0]=m=>c.value=m),placeholder:"Enter custom asset ID...",disabled:e.disabled,class:"flex-1"},null,8,["modelValue","disabled"]),_(T(ee),{onClick:U,disabled:!c.value||e.disabled},{default:H(()=>s[7]||(s[7]=[W(" Use ID ",-1)])),_:1,__:[7]},8,["disabled"]),_(T(ee),{variant:"ghost",onClick:x},{default:H(()=>s[8]||(s[8]=[W(" Cancel ",-1)])),_:1,__:[8]})]),s[10]||(s[10]=u("p",{class:"text-xs text-yellow-700 mt-2"}," Enter a custom asset ID according to your company's asset register format ",-1))])):Z("",!0),d.value?($(),j("div",ma,[s[17]||(s[17]=u("h4",{class:"text-sm font-medium text-gray-700 mb-3"},"ID Format Customization",-1)),u("div",fa,[u("div",null,[s[11]||(s[11]=u("label",{class:"block text-xs font-medium text-gray-600 mb-1"},"Prefix",-1)),_(T(re),{modelValue:w.value,"onUpdate:modelValue":s[1]||(s[1]=m=>w.value=m),placeholder:"AST",disabled:e.disabled,onInput:S},null,8,["modelValue","disabled"])]),u("div",null,[s[12]||(s[12]=u("label",{class:"block text-xs font-medium text-gray-600 mb-1"},"Date Format",-1)),_(T(ue),{modelValue:V.value,"onUpdate:modelValue":s[2]||(s[2]=m=>V.value=m),options:P,disabled:e.disabled,onChange:S},null,8,["modelValue","disabled"])]),u("div",null,[s[13]||(s[13]=u("label",{class:"block text-xs font-medium text-gray-600 mb-1"},"Suffix Length",-1)),_(T(ue),{modelValue:E.value,"onUpdate:modelValue":s[3]||(s[3]=m=>E.value=m),options:O,disabled:e.disabled,onChange:S},null,8,["modelValue","disabled"])])]),u("div",ga,[u("p",va,[s[14]||(s[14]=W(" Preview: ",-1)),u("span",pa,q(G.value),1)]),u("div",ha,[_(T(ee),{size:"sm",onClick:C},{default:H(()=>s[15]||(s[15]=[W("Apply",-1)])),_:1,__:[15]}),_(T(ee),{size:"sm",variant:"ghost",onClick:B},{default:H(()=>s[16]||(s[16]=[W("Reset",-1)])),_:1,__:[16]})])])])):Z("",!0),e.error?($(),j("div",ya,q(e.error),1)):Z("",!0)]))}},Aa=dt(wa,[["__scopeId","data-v-11fdeccb"]]);var Re={},Ca=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then},_t={},oe={};let mt;const ba=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];oe.getSymbolSize=function(t){if(!t)throw new Error('"version" cannot be null or undefined');if(t<1||t>40)throw new Error('"version" should be in range from 1 to 40');return t*4+17};oe.getSymbolTotalCodewords=function(t){return ba[t]};oe.getBCHDigit=function(e){let t=0;for(;e!==0;)t++,e>>>=1;return t};oe.setToSJISFunction=function(t){if(typeof t!="function")throw new Error('"toSJISFunc" is not a valid function.');mt=t};oe.isKanjiModeEnabled=function(){return typeof mt<"u"};oe.toSJIS=function(t){return mt(t)};var je={};(function(e){e.L={bit:1},e.M={bit:0},e.Q={bit:3},e.H={bit:2};function t(o){if(typeof o!="string")throw new Error("Param is not a string");switch(o.toLowerCase()){case"l":case"low":return e.L;case"m":case"medium":return e.M;case"q":case"quartile":return e.Q;case"h":case"high":return e.H;default:throw new Error("Unknown EC Level: "+o)}}e.isValid=function(r){return r&&typeof r.bit<"u"&&r.bit>=0&&r.bit<4},e.from=function(r,n){if(e.isValid(r))return r;try{return t(r)}catch{return n}}})(je);function Lt(){this.buffer=[],this.length=0}Lt.prototype={get:function(e){const t=Math.floor(e/8);return(this.buffer[t]>>>7-e%8&1)===1},put:function(e,t){for(let o=0;o>>t-o-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(e){const t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}};var Ia=Lt;function De(e){if(!e||e<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}De.prototype.set=function(e,t,o,r){const n=e*this.size+t;this.data[n]=o,r&&(this.reservedBit[n]=!0)};De.prototype.get=function(e,t){return this.data[e*this.size+t]};De.prototype.xor=function(e,t,o){this.data[e*this.size+t]^=o};De.prototype.isReserved=function(e,t){return this.reservedBit[e*this.size+t]};var Ea=De,Ft={};(function(e){const t=oe.getSymbolSize;e.getRowColCoords=function(r){if(r===1)return[];const n=Math.floor(r/7)+2,a=t(r),c=a===145?26:Math.ceil((a-13)/(2*n-2))*2,l=[a-7];for(let d=1;d=0&&n<=7},e.from=function(n){return e.isValid(n)?parseInt(n,10):void 0},e.getPenaltyN1=function(n){const a=n.size;let c=0,l=0,d=0,h=null,w=null;for(let V=0;V=5&&(c+=t.N1+(l-5)),h=P,l=1),P=n.get(E,V),P===w?d++:(d>=5&&(c+=t.N1+(d-5)),w=P,d=1)}l>=5&&(c+=t.N1+(l-5)),d>=5&&(c+=t.N1+(d-5))}return c},e.getPenaltyN2=function(n){const a=n.size;let c=0;for(let l=0;l=10&&(l===1488||l===93)&&c++,d=d<<1&2047|n.get(w,h),w>=10&&(d===1488||d===93)&&c++}return c*t.N3},e.getPenaltyN4=function(n){let a=0;const c=n.data.length;for(let d=0;d=0;){const c=a[0];for(let d=0;d0){const a=new Uint8Array(this.degree);return a.set(r,n),a}return r};var Ma=ft,Ht={},me={},gt={};gt.isValid=function(t){return!isNaN(t)&&t>=1&&t<=40};var se={};const $t="[0-9]+",Ta="[A-Z $%*+\\-./:]+";let ke="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";ke=ke.replace(/u/g,"\\u");const Na="(?:(?![A-Z0-9 $%*+\\-./:]|"+ke+`)(?:.|[\r -]))+`;se.KANJI=new RegExp(ke,"g");se.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g");se.BYTE=new RegExp(Na,"g");se.NUMERIC=new RegExp($t,"g");se.ALPHANUMERIC=new RegExp(Ta,"g");const xa=new RegExp("^"+ke+"$"),ka=new RegExp("^"+$t+"$"),Ra=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");se.testKanji=function(t){return xa.test(t)};se.testNumeric=function(t){return ka.test(t)};se.testAlphanumeric=function(t){return Ra.test(t)};(function(e){const t=gt,o=se;e.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]},e.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]},e.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]},e.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]},e.MIXED={bit:-1},e.getCharCountIndicator=function(a,c){if(!a.ccBits)throw new Error("Invalid mode: "+a);if(!t.isValid(c))throw new Error("Invalid version: "+c);return c>=1&&c<10?a.ccBits[0]:c<27?a.ccBits[1]:a.ccBits[2]},e.getBestModeForData=function(a){return o.testNumeric(a)?e.NUMERIC:o.testAlphanumeric(a)?e.ALPHANUMERIC:o.testKanji(a)?e.KANJI:e.BYTE},e.toString=function(a){if(a&&a.id)return a.id;throw new Error("Invalid mode")},e.isValid=function(a){return a&&a.bit&&a.ccBits};function r(n){if(typeof n!="string")throw new Error("Param is not a string");switch(n.toLowerCase()){case"numeric":return e.NUMERIC;case"alphanumeric":return e.ALPHANUMERIC;case"kanji":return e.KANJI;case"byte":return e.BYTE;default:throw new Error("Unknown mode: "+n)}}e.from=function(a,c){if(e.isValid(a))return a;try{return r(a)}catch{return c}}})(me);(function(e){const t=oe,o=Ge,r=je,n=me,a=gt,c=7973,l=t.getBCHDigit(c);function d(E,P,O){for(let L=1;L<=40;L++)if(P<=e.getCapacity(L,O,E))return L}function h(E,P){return n.getCharCountIndicator(E,P)+4}function w(E,P){let O=0;return E.forEach(function(L){const G=h(L.mode,P);O+=G+L.getBitsLength()}),O}function V(E,P){for(let O=1;O<=40;O++)if(w(E,O)<=e.getCapacity(O,P,n.MIXED))return O}e.from=function(P,O){return a.isValid(P)?parseInt(P,10):O},e.getCapacity=function(P,O,L){if(!a.isValid(P))throw new Error("Invalid QR Code version");typeof L>"u"&&(L=n.BYTE);const G=t.getSymbolTotalCodewords(P),N=o.getTotalCodewordsCount(P,O),y=(G-N)*8;if(L===n.MIXED)return y;const R=y-h(L,P);switch(L){case n.NUMERIC:return Math.floor(R/10*3);case n.ALPHANUMERIC:return Math.floor(R/11*2);case n.KANJI:return Math.floor(R/13);case n.BYTE:default:return Math.floor(R/8)}},e.getBestVersionForData=function(P,O){let L;const G=r.from(O,r.M);if(Array.isArray(P)){if(P.length>1)return V(P,G);if(P.length===0)return 1;L=P[0]}else L=P;return d(L.mode,L.getLength(),G)},e.getEncodedBits=function(P){if(!a.isValid(P)||P<7)throw new Error("Invalid QR Code version");let O=P<<12;for(;t.getBCHDigit(O)-l>=0;)O^=c<=0;)n^=jt<0&&(r=this.data.substr(o),n=parseInt(r,10),t.put(n,a*3+1))};var Oa=be;const _a=me,tt=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function Ie(e){this.mode=_a.ALPHANUMERIC,this.data=e}Ie.getBitsLength=function(t){return 11*Math.floor(t/2)+6*(t%2)};Ie.prototype.getLength=function(){return this.data.length};Ie.prototype.getBitsLength=function(){return Ie.getBitsLength(this.data.length)};Ie.prototype.write=function(t){let o;for(o=0;o+2<=this.data.length;o+=2){let r=tt.indexOf(this.data[o])*45;r+=tt.indexOf(this.data[o+1]),t.put(r,11)}this.data.length%2&&t.put(tt.indexOf(this.data[o]),6)};var La=Ie;const Fa=me;function Ee(e){this.mode=Fa.BYTE,typeof e=="string"?this.data=new TextEncoder().encode(e):this.data=new Uint8Array(e)}Ee.getBitsLength=function(t){return t*8};Ee.prototype.getLength=function(){return this.data.length};Ee.prototype.getBitsLength=function(){return Ee.getBitsLength(this.data.length)};Ee.prototype.write=function(e){for(let t=0,o=this.data.length;t=33088&&o<=40956)o-=33088;else if(o>=57408&&o<=60351)o-=49472;else throw new Error("Invalid SJIS character: "+this.data[t]+` -Make sure your charset is UTF-8`);o=(o>>>8&255)*192+(o&255),e.put(o,13)}};var za=Se,qt={exports:{}};(function(e){var t={single_source_shortest_paths:function(o,r,n){var a={},c={};c[r]=0;var l=t.PriorityQueue.make();l.push(r,0);for(var d,h,w,V,E,P,O,L,G;!l.empty();){d=l.pop(),h=d.value,V=d.cost,E=o[h]||{};for(w in E)E.hasOwnProperty(w)&&(P=E[w],O=V+P,L=c[w],G=typeof c[w]>"u",(G||L>O)&&(c[w]=O,l.push(w,O),a[w]=h))}if(typeof n<"u"&&typeof c[n]>"u"){var N=["Could not find a path from ",r," to ",n,"."].join("");throw new Error(N)}return a},extract_shortest_path_from_predecessor_list:function(o,r){for(var n=[],a=r;a;)n.push(a),o[a],a=o[a];return n.reverse(),n},find_path:function(o,r,n){var a=t.single_source_shortest_paths(o,r,n);return t.extract_shortest_path_from_predecessor_list(a,n)},PriorityQueue:{make:function(o){var r=t.PriorityQueue,n={},a;o=o||{};for(a in r)r.hasOwnProperty(a)&&(n[a]=r[a]);return n.queue=[],n.sorter=o.sorter||r.default_sorter,n},default_sorter:function(o,r){return o.cost-r.cost},push:function(o,r){var n={value:o,cost:r};this.queue.push(n),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};e.exports=t})(qt);var Ha=qt.exports;(function(e){const t=me,o=Oa,r=La,n=Ba,a=za,c=se,l=oe,d=Ha;function h(N){return unescape(encodeURIComponent(N)).length}function w(N,y,R){const M=[];let U;for(;(U=N.exec(R))!==null;)M.push({data:U[0],index:U.index,mode:y,length:U[0].length});return M}function V(N){const y=w(c.NUMERIC,t.NUMERIC,N),R=w(c.ALPHANUMERIC,t.ALPHANUMERIC,N);let M,U;return l.isKanjiModeEnabled()?(M=w(c.BYTE,t.BYTE,N),U=w(c.KANJI,t.KANJI,N)):(M=w(c.BYTE_KANJI,t.BYTE,N),U=[]),y.concat(R,M,U).sort(function(S,C){return S.index-C.index}).map(function(S){return{data:S.data,mode:S.mode,length:S.length}})}function E(N,y){switch(y){case t.NUMERIC:return o.getBitsLength(N);case t.ALPHANUMERIC:return r.getBitsLength(N);case t.KANJI:return a.getBitsLength(N);case t.BYTE:return n.getBitsLength(N)}}function P(N){return N.reduce(function(y,R){const M=y.length-1>=0?y[y.length-1]:null;return M&&M.mode===R.mode?(y[y.length-1].data+=R.data,y):(y.push(R),y)},[])}function O(N){const y=[];for(let R=0;R=0&&l<=6&&(d===0||d===6)||d>=0&&d<=6&&(l===0||l===6)||l>=2&&l<=4&&d>=2&&d<=4?e.set(a+l,c+d,!0,!0):e.set(a+l,c+d,!1,!0))}}function Ka(e){const t=e.size;for(let o=8;o>l&1)===1,e.set(n,a,c,!0),e.set(a,n,c,!0)}function ot(e,t,o){const r=e.size,n=Qa.getEncodedBits(t,o);let a,c;for(a=0;a<15;a++)c=(n>>a&1)===1,a<6?e.set(a,8,c,!0):a<8?e.set(a+1,8,c,!0):e.set(r-15+a,8,c,!0),a<8?e.set(8,r-a-1,c,!0):a<9?e.set(8,15-a-1+1,c,!0):e.set(8,15-a-1,c,!0);e.set(r-8,8,1,!0)}function eo(e,t){const o=e.size;let r=-1,n=o-1,a=7,c=0;for(let l=o-1;l>0;l-=2)for(l===6&&l--;;){for(let d=0;d<2;d++)if(!e.isReserved(n,l-d)){let h=!1;c>>a&1)===1),e.set(n,l-d,h),a--,a===-1&&(c++,a=7)}if(n+=r,n<0||o<=n){n-=r,r=-r;break}}}function to(e,t,o){const r=new $a;o.forEach(function(d){r.put(d.mode.bit,4),r.put(d.getLength(),Wa.getCharCountIndicator(d.mode,e)),d.write(r)});const n=Qe.getSymbolTotalCodewords(e),a=ct.getTotalCodewordsCount(e,t),c=(n-a)*8;for(r.getLengthInBits()+4<=c&&r.put(0,4);r.getLengthInBits()%8!==0;)r.putBit(0);const l=(c-r.getLengthInBits())/8;for(let d=0;d=7&&Za(d,t),eo(d,c),isNaN(r)&&(r=lt.getBestMask(d,ot.bind(null,d,o))),lt.applyMask(r,d),ot(d,o,r),{modules:d,version:t,errorCorrectionLevel:o,maskPattern:r,segments:n}}_t.create=function(t,o){if(typeof t>"u"||t==="")throw new Error("No input text");let r=nt.M,n,a;return typeof o<"u"&&(r=nt.from(o.errorCorrectionLevel,nt.M),n=Ye.from(o.version),a=lt.from(o.maskPattern),o.toSJISFunc&&Qe.setToSJISFunction(o.toSJISFunc)),ao(t,n,r,a)};var Qt={},vt={};(function(e){function t(o){if(typeof o=="number"&&(o=o.toString()),typeof o!="string")throw new Error("Color should be defined as hex string");let r=o.slice().replace("#","").split("");if(r.length<3||r.length===5||r.length>8)throw new Error("Invalid hex color: "+o);(r.length===3||r.length===4)&&(r=Array.prototype.concat.apply([],r.map(function(a){return[a,a]}))),r.length===6&&r.push("F","F");const n=parseInt(r.join(""),16);return{r:n>>24&255,g:n>>16&255,b:n>>8&255,a:n&255,hex:"#"+r.slice(0,6).join("")}}e.getOptions=function(r){r||(r={}),r.color||(r.color={});const n=typeof r.margin>"u"||r.margin===null||r.margin<0?4:r.margin,a=r.width&&r.width>=21?r.width:void 0,c=r.scale||4;return{width:a,scale:a?4:c,margin:n,color:{dark:t(r.color.dark||"#000000ff"),light:t(r.color.light||"#ffffffff")},type:r.type,rendererOpts:r.rendererOpts||{}}},e.getScale=function(r,n){return n.width&&n.width>=r+n.margin*2?n.width/(r+n.margin*2):n.scale},e.getImageWidth=function(r,n){const a=e.getScale(r,n);return Math.floor((r+n.margin*2)*a)},e.qrToImageData=function(r,n,a){const c=n.modules.size,l=n.modules.data,d=e.getScale(c,a),h=Math.floor((c+a.margin*2)*d),w=a.margin*d,V=[a.color.light,a.color.dark];for(let E=0;E=w&&P>=w&&E"u"&&(!c||!c.getContext)&&(d=c,c=void 0),c||(h=r()),d=t.getOptions(d);const w=t.getImageWidth(a.modules.size,d),V=h.getContext("2d"),E=V.createImageData(w,w);return t.qrToImageData(E.data,a,d),o(V,h,w),V.putImageData(E,0,0),h},e.renderToDataURL=function(a,c,l){let d=l;typeof d>"u"&&(!c||!c.getContext)&&(d=c,c=void 0),d||(d={});const h=e.render(a,c,d),w=d.type||"image/png",V=d.rendererOpts||{};return h.toDataURL(w,V.quality)}})(Qt);var Wt={};const oo=vt;function Pt(e,t){const o=e.a/255,r=t+'="'+e.hex+'"';return o<1?r+" "+t+'-opacity="'+o.toFixed(2).slice(1)+'"':r}function rt(e,t,o){let r=e+t;return typeof o<"u"&&(r+=" "+o),r}function ro(e,t,o){let r="",n=0,a=!1,c=0;for(let l=0;l0&&d>0&&e[l-1]||(r+=a?rt("M",d+o,.5+h+o):rt("m",n,0),n=0,a=!1),d+1':"",h="',w='viewBox="0 0 '+l+" "+l+'"',E=''+d+h+` -`;return typeof r=="function"&&r(null,E),E};const so=Ca,ut=_t,Jt=Qt,io=Wt;function pt(e,t,o,r,n){const a=[].slice.call(arguments,1),c=a.length,l=typeof a[c-1]=="function";if(!l&&!so())throw new Error("Callback required as last argument");if(l){if(c<2)throw new Error("Too few arguments provided");c===2?(n=o,o=t,t=r=void 0):c===3&&(t.getContext&&typeof n>"u"?(n=r,r=void 0):(n=r,r=o,o=t,t=void 0))}else{if(c<1)throw new Error("Too few arguments provided");return c===1?(o=t,t=r=void 0):c===2&&!t.getContext&&(r=o,o=t,t=void 0),new Promise(function(d,h){try{const w=ut.create(o,r);d(e(w,t,r))}catch(w){h(w)}})}try{const d=ut.create(o,r);n(null,e(d,t,r))}catch(d){n(d)}}Re.create=ut.create;Re.toCanvas=pt.bind(null,Jt.render);Re.toDataURL=pt.bind(null,Jt.renderToDataURL);Re.toString=pt.bind(null,function(e,t,o){return io.render(e,o)});function lo(){const e=k(""),t=k(!1),o=k(null);return{qrCode:e,generating:t,error:o,generateQRCode:async l=>{if(!(l!=null&&l.name)&&!(l!=null&&l.assetNumber))throw new Error("Asset must have a name or asset number to generate QR code");t.value=!0,o.value=null;try{const d={id:l.assetNumber||`ASSET-${Date.now()}`,name:l.name||"Unnamed Asset",category:l.category||"Unspecified",location:l.location||"No location",status:l.status||"Unknown",criticality:l.criticality||"Not set",purchaseDate:l.purchaseDate||null,value:l.currentValue||l.purchasePrice||null,vendor:l.vendor||null,lastMaintenance:l.lastMaintenance||null,nextMaintenance:l.nextMaintenance||null,generatedAt:new Date().toISOString(),system:"Atlas CMMS",url:`${window.location.origin}/assets/${l.assetNumber||"new"}`},h=JSON.stringify(d),w=await Re.toDataURL(h,{width:300,margin:2,color:{dark:"#000000",light:"#FFFFFF"},errorCorrectionLevel:"H"});e.value=w;const V={qrCode:w,data:d};return console.log("✅ QR Code generated with data:",d),V}catch(d){throw o.value=d.message,console.error("❌ Failed to generate QR code:",d),d}finally{t.value=!1}},clearQRCode:()=>{e.value="",o.value=null},canGenerateQRCode:l=>!!(l!=null&&l.name||l!=null&&l.assetNumber),generatePrintContent:(l,d)=>{const h=l.name||"Asset",w=l.assetNumber||"TBD",V=l.location||"No Location",E=new Date().toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"});return` - - - - Asset QR Label - ${h} - - - -
-
- Asset QR Code -
-
-
${h}
-
ID: ${w}
-
${V}
-
${E}
-
-
- - - `}}}const co={class:"asset-qr-generator"},uo={class:"flex items-center justify-between mb-4"},mo={class:"flex space-x-2"},fo={key:0,class:"mb-4 p-4 bg-red-50 border border-red-200 rounded-lg"},go={class:"text-sm text-red-600"},vo={class:"bg-white p-6 rounded-lg border-2 border-gray-200 text-center"},po={key:0,class:"py-8"},ho={key:1,class:"space-y-4"},yo={class:"flex justify-center"},wo=["src"],Ao={class:"text-left bg-gray-50 p-4 rounded border"},Co={class:"grid grid-cols-2 gap-2 text-sm"},bo={key:2,class:"py-8 text-gray-500"},Io={class:"flex min-h-full items-center justify-center p-4"},Eo={class:"p-6"},So={id:"qr-print-content",class:"border p-4 bg-white text-center"},Mo={class:"mb-3"},To=["src"],No={class:"text-xs space-y-1"},xo={class:"font-bold"},ko={class:"mt-4 flex justify-end space-x-3"},Ro={__name:"AssetQRGenerator",props:{assetData:{type:Object,required:!0},autoGenerate:{type:Boolean,default:!0}},emits:["qr-generated"],setup(e,{emit:t}){const o=e,r=t,{qrCode:n,generating:a,error:c,generateQRCode:l,canGenerateQRCode:d,generatePrintContent:h}=lo(),w=k(!1),V=async()=>{if(d(o.assetData))try{const N=await l(o.assetData);r("qr-generated",N)}catch(N){console.error("QR generation failed:",N.message)}},E=()=>{V()},P=()=>{w.value=!0},O=()=>{w.value=!1},L=()=>{const N=h(o.assetData,n.value),y=window.open("","_blank");y.document.write(N),y.document.close(),y.print(),y.close(),O()},G=N=>N?new Date(N).toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"}):"Not set";return o.autoGenerate&&Dn(()=>{V()}),(N,y)=>($(),j("div",co,[u("div",uo,[y[3]||(y[3]=u("div",null,[u("h4",{class:"text-lg font-medium text-gray-900"},"Asset QR Code"),u("p",{class:"text-sm text-gray-600"},"Automatically generated QR code with asset details")],-1)),u("div",mo,[_(T(ee),{variant:"outline",size:"sm",onClick:E,loading:T(a)},{default:H(()=>y[1]||(y[1]=[u("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[u("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),W(" Regenerate ",-1)])),_:1,__:[1]},8,["loading"]),_(T(ee),{variant:"primary",size:"sm",onClick:P,disabled:!T(n)},{default:H(()=>y[2]||(y[2]=[u("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[u("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M17 17h2a2 2 0 002-2v-4a2 2 0 00-2-2H9.414a1 1 0 01-.707-.293l-1.414-1.414A1 1 0 006.586 7H4a2 2 0 00-2 2v6a2 2 0 002 2h2m5 5v-5a1.5 1.5 0 011.5-1.5h9A1.5 1.5 0 0122 15.5v5a1.5 1.5 0 01-1.5 1.5h-9A1.5 1.5 0 0111 20.5z"})],-1),W(" Print QR Label ",-1)])),_:1,__:[2]},8,["disabled"])])]),T(c)?($(),j("div",fo,[u("p",go,q(T(c)),1)])):Z("",!0),u("div",vo,[T(a)?($(),j("div",po,y[4]||(y[4]=[u("div",{class:"animate-spin rounded-full h-12 w-12 border-b-2 border-primary-600 mx-auto"},null,-1),u("p",{class:"text-sm text-gray-600 mt-2"},"Generating QR code...",-1)]))):T(n)?($(),j("div",ho,[u("div",yo,[u("img",{src:T(n),alt:"Asset QR Code",class:"max-w-xs"},null,8,wo)]),u("div",Ao,[y[13]||(y[13]=u("h5",{class:"font-medium text-gray-900 mb-2"},"QR Code Contains:",-1)),u("div",Co,[u("div",null,[y[5]||(y[5]=u("strong",null,"Asset ID:",-1)),W(" "+q(e.assetData.assetNumber||"Auto-generated"),1)]),u("div",null,[y[6]||(y[6]=u("strong",null,"Name:",-1)),W(" "+q(e.assetData.name||"Unnamed Asset"),1)]),u("div",null,[y[7]||(y[7]=u("strong",null,"Category:",-1)),W(" "+q(e.assetData.category||"Unspecified"),1)]),u("div",null,[y[8]||(y[8]=u("strong",null,"Location:",-1)),W(" "+q(e.assetData.location||"No location"),1)]),u("div",null,[y[9]||(y[9]=u("strong",null,"Status:",-1)),W(" "+q(e.assetData.status||"Unknown"),1)]),u("div",null,[y[10]||(y[10]=u("strong",null,"Criticality:",-1)),W(" "+q(e.assetData.criticality||"Not set"),1)]),u("div",null,[y[11]||(y[11]=u("strong",null,"Last Maintenance:",-1)),W(" "+q(G(e.assetData.lastMaintenance)),1)]),u("div",null,[y[12]||(y[12]=u("strong",null,"Next Maintenance:",-1)),W(" "+q(G(e.assetData.nextMaintenance)),1)])])])])):($(),j("div",bo,y[14]||(y[14]=[u("svg",{class:"w-16 h-16 mx-auto mb-2 text-gray-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[u("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"1",d:"M12 4v1m6 11h2m-6 0h-2v4m0-11v3m0 0h.01M12 12h4.01M16 16h4m-4 0v4m-4-4h4"})],-1),u("p",null,"QR code will be generated automatically",-1)])))]),w.value?($(),j("div",{key:1,class:"fixed inset-0 z-50 overflow-y-auto",onClick:O},[u("div",Io,[y[19]||(y[19]=u("div",{class:"fixed inset-0 bg-black bg-opacity-50"},null,-1)),u("div",{class:"relative bg-white rounded-lg shadow-xl max-w-md w-full",onClick:y[0]||(y[0]=Pn(()=>{},["stop"]))},[u("div",Eo,[u("div",{class:"flex items-center justify-between mb-4"},[y[16]||(y[16]=u("h3",{class:"text-lg font-medium text-gray-900"},"Print QR Label",-1)),u("button",{onClick:O,class:"text-gray-400 hover:text-gray-600"},y[15]||(y[15]=[u("svg",{class:"w-6 h-6",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[u("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})],-1)]))]),u("div",So,[u("div",Mo,[u("img",{src:T(n),alt:"Asset QR Code",class:"w-32 h-32 mx-auto"},null,8,To)]),u("div",No,[u("div",xo,q(e.assetData.name||"Asset"),1),u("div",null,"ID: "+q(e.assetData.assetNumber||"TBD"),1),u("div",null,q(e.assetData.location||"No Location"),1),u("div",null,q(G(new Date)),1)])]),u("div",ko,[_(T(ee),{variant:"secondary",onClick:O},{default:H(()=>y[17]||(y[17]=[W("Cancel",-1)])),_:1,__:[17]}),_(T(ee),{variant:"primary",onClick:L},{default:H(()=>y[18]||(y[18]=[W("Print Label",-1)])),_:1,__:[18]})])])])])])):Z("",!0)]))}},Do=dt(Ro,[["__scopeId","data-v-f7f02383"]]),Po={class:"p-6"},Oo={class:"mb-6 grid grid-cols-1 md:grid-cols-4 gap-4"},_o={key:0,class:"mb-4 p-3 bg-yellow-50 border border-yellow-200 rounded-lg flex items-center"},Lo={class:"text-yellow-800"},Fo={class:"flex items-center"},Bo={class:"font-medium text-gray-900"},Vo={class:"text-sm text-gray-600"},Uo={class:"flex items-center"},zo={class:"w-12 h-2 bg-gray-200 rounded-full mr-2"},Ho={key:0,class:"w-3 h-3 mr-1",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},$o={key:1,class:"w-3 h-3 mr-1",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},Yo={key:2,class:"w-3 h-3 mr-1",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},jo={key:0,class:"text-sm text-gray-900"},Go={key:1,class:"text-sm text-gray-400"},qo={key:1,class:"text-sm text-gray-400"},Qo={class:"text-sm font-medium text-gray-900"},Wo={class:"flex items-center space-x-2"},Jo={key:0},Ko={key:0},Xo={key:0},Zo={key:0},er={key:0,class:"mb-4 p-4 bg-blue-50 border border-blue-200 rounded-lg"},tr={class:"flex items-center justify-between"},nr={class:"text-sm text-blue-700 mt-1"},ar={class:"flex space-x-2"},or={class:"border-b border-gray-200 mb-6"},rr={key:1,class:"space-y-6"},sr={class:"col-span-full"},ir={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},lr={key:0,class:"mt-1 text-sm text-red-600"},cr={key:2,class:"space-y-4"},ur={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},dr={key:3,class:"space-y-4"},mr={key:4,class:"space-y-4"},fr={key:5,class:"space-y-6"},gr={class:"border-2 border-dashed border-gray-300 rounded-lg p-6 text-center hover:border-gray-400 transition-colors"},vr={class:"mt-4"},pr={class:"cursor-pointer"},hr={key:0,class:"mt-4 space-y-2"},yr={class:"flex items-center"},wr={class:"text-sm font-medium text-gray-900"},Ar={class:"text-xs text-gray-500"},Cr={class:"mt-2 text-xs text-gray-500"},br={class:"mt-2"},Ir={key:6,class:"space-y-4"},Er={class:"flex items-center justify-between"},Sr={class:"flex items-center space-x-4"},Mr={key:0,class:"flex items-center text-sm text-gray-500"},Tr={key:0,class:"w-4 h-4 mr-2 text-amber-500 animate-pulse",fill:"currentColor",viewBox:"0 0 20 20"},Nr={key:1,class:"w-4 h-4 mr-2 text-green-500",fill:"currentColor",viewBox:"0 0 20 20"},xr={key:2},kr={key:3},Rr={class:"flex space-x-3"},Dr={key:0,class:"space-y-6"},Pr={class:"bg-gray-50 rounded-lg p-4"},Or={class:"grid grid-cols-2 md:grid-cols-4 gap-4"},_r={class:"text-center"},Lr={class:"text-center"},Fr={class:"text-2xl font-bold text-blue-600"},Br={class:"text-center"},Vr={class:"text-2xl font-bold text-green-600"},Ur={class:"text-center"},zr={key:0},Hr={class:"space-y-2"},$r={class:"text-blue-800"},Ce="atlas_asset_form_data",Yr={__name:"AssetsListView",setup(e){const t=_n(),o=On(),r=Un(),n=jn(),{calculateHealthScore:a,assessRisk:c}=ta(),{analyzePerformance:l}=ea(),{loadAssetHierarchy:d}=Gn(),{isOnline:h,syncStatus:w,syncPendingActions:V}=na(),{isMobile:E,layoutClass:P,optimizeTableForMobile:O}=aa(),{complianceScore:L,activeViolations:G,upcomingRenewals:N}=oa(),y=k(!1),R=k(!1),M=k(null),U=k("all"),x=k(!1),S=k("create"),C=k(null),B=k("basic"),p=k(!1),s=k({}),m=k(!1),v=k(null),D=k(!1),F=k(null),Y=k(!1),K=k(!1),z=k(0),f=k({name:"",assetNumber:"",description:"",category:"",status:"",criticality:"",location:"",purchasePrice:0,currentValue:0,purchaseDate:null,installationDate:null,vendor:"",model:"",lastMaintenance:null,nextMaintenance:null,warranty:{isWarrantyActive:!1,warrantyStartDate:null,warrantyEndDate:null,warrantyProvider:"",status:"NOT_APPLICABLE"},customFields:{},image:null,files:[],qrCode:null,qrData:null}),b=k({search:"",status:"",category:"",location:"",criticality:""}),J=k(new Map),X=k({currentPage:1,pageSize:10,total:0}),te=Q(()=>r.assets),ie=Q(()=>r.loading),ae=Q(()=>[{key:"all",label:"All Assets",badge:te.value.length},{key:"operational",label:"Operational",badge:te.value.filter(g=>g.status===he.OPERATIONAL).length},{key:"maintenance",label:"Maintenance",badge:te.value.filter(g=>g.status===he.MAINTENANCE).length},{key:"down",label:"Down",badge:te.value.filter(g=>g.status===he.DOWN).length},{key:"critical_violations",label:"Compliance Issues",badge:G.value.length}]),fe=Q(()=>O([{key:"name",label:"Asset",sortable:!0,essential:!0,priority:"high"},{key:"status",label:"Status",sortable:!0,essential:!0,priority:"high"},{key:"healthScore",label:"Health",sortable:!0,priority:"high"},{key:"location",label:"Location",sortable:!0,priority:"medium"},{key:"criticality",label:"Criticality",sortable:!0,priority:"high"},{key:"lastMaintenance",label:"Last Maintenance",sortable:!0,priority:"medium"},{key:"nextMaintenance",label:"Next Maintenance",sortable:!0,priority:"medium"},{key:"complianceStatus",label:"Compliance",sortable:!0,priority:"low"},{key:"value",label:"Value",sortable:!0,priority:"low"}])),Pe=Q(()=>Object.entries(zn).map(([g,i])=>({title:i.label,value:g}))),We=Q(()=>(n.locations.value||{content:[]}).content.map(i=>({title:i.name,value:i.id}))),Oe=Q(()=>Object.entries(Hn).map(([g,i])=>({title:i.label,value:g}))),ge=Q(()=>{const g=te.value.length,i=te.value.filter(I=>I.status===he.OPERATIONAL).length;te.value.filter(I=>I.criticality===$n.CRITICAL).length,te.value.reduce((I,ne)=>I+(ne.value||0),0);const A=g>0?Math.round(te.value.reduce((I,ne)=>I+a(ne),0)/g):0;return[{name:"Total Assets",value:g,subtitle:h.value?"Live data":"Offline mode",icon:"building",iconBg:"bg-blue-100",iconColor:"text-blue-600",change:8},{name:"Operational",value:i,subtitle:`${g>0?Math.round(i/g*100):0}% uptime`,icon:"check-circle",iconBg:"bg-green-100",iconColor:"text-green-600",change:5},{name:"Health Score",value:`${A}%`,subtitle:"Average asset health",icon:"heart",iconBg:A>=80?"bg-green-100":A>=60?"bg-yellow-100":"bg-red-100",iconColor:A>=80?"text-green-600":A>=60?"text-yellow-600":"text-red-600",change:3},{name:"Compliance",value:`${L.value}%`,subtitle:G.value.length>0?`${G.value.length} violations`:"All compliant",icon:"shield-check",iconBg:L.value>=90?"bg-green-100":L.value>=70?"bg-yellow-100":"bg-red-100",iconColor:L.value>=90?"text-green-600":L.value>=70?"text-yellow-600":"text-red-600",change:-2}]}),ve=Q(()=>{let g=te.value;if(U.value!=="all"){const i={operational:he.OPERATIONAL,maintenance:he.MAINTENANCE,down:he.DOWN,critical_violations:null};if(U.value==="critical_violations"){const A=G.value.map(I=>I.assetId);g=g.filter(I=>A.includes(I.id))}else g=g.filter(A=>A.status===i[U.value])}if(b.value.search){const i=b.value.search.toLowerCase();g=g.filter(A=>{var I,ne,Ae,St;return A.name.toLowerCase().includes(i)||((I=A.model)==null?void 0:I.toLowerCase().includes(i))||((ne=A.location)==null?void 0:ne.toLowerCase().includes(i))||((Ae=A.serialNumber)==null?void 0:Ae.toLowerCase().includes(i))||((St=A.assetNumber)==null?void 0:St.toLowerCase().includes(i))})}return b.value.category&&(g=g.filter(i=>i.category===b.value.category)),b.value.location&&(g=g.filter(i=>i.location===b.value.location)),b.value.criticality&&(g=g.filter(i=>i.criticality===b.value.criticality)),g.map(i=>({...i,healthScore:a(i),riskLevel:c(i),complianceStatus:tn(i.id)}))}),ye=Q(()=>{const g=S.value==="create"?"Create New Asset":"Edit Asset";return D.value?`${g} (Unsaved Changes)`:g}),_e=Q(()=>{if(!F.value)return"";const g=new Date,i=new Date(F.value),A=g-i,I=Math.floor(A/(60*1e3));return I<1?"just now":I===1?"1 minute ago":I<60?`${I} minutes ago`:i.toLocaleTimeString()}),le=[{key:"basic",label:"Basic Information"},{key:"financial",label:"Financial Information"},{key:"warranty",label:"Warranty"},{key:"custom",label:"Custom Fields"},{key:"attachments",label:"Attachments"},{key:"qr",label:"QR Code"}],Le=Q(()=>Object.entries(Yn).map(([g,i])=>({title:i.label,value:g}))),we=async()=>{y.value=!0;try{await Promise.all([r.loadAssets(),n.refreshLocations(),d(),V()])}catch(g){console.error("Failed to refresh data:",g)}finally{y.value=!1}},Fe=()=>{console.log("Exporting assets...")},Be=()=>{S.value="create",C.value=null,B.value="basic",Rn(),Ze()||(Ke(),Et()),x.value=!0},Te=g=>{const i=te.value.find(A=>A.id===g);i&&(S.value="edit",C.value=g,B.value="basic",Object.assign(f.value,i),setTimeout(()=>{Y.value=!1},100),x.value=!0)},Ne=g=>{t.push(`/assets/${g}`)},Kt=g=>{t.push(`/work-orders?create=true&assetId=${g}`)},Xt=async g=>{try{if(y.value=!0,J.value.has(g))M.value=J.value.get(g);else{const i=te.value.find(ne=>ne.id===g),I={...await l(g,[]),healthScore:a(i),riskLevel:c(i),recommendations:["Schedule preventive maintenance within 2 weeks","Monitor temperature sensors more frequently","Consider component replacement for optimal performance","Update maintenance procedures based on usage patterns"]};J.value.set(g,I),M.value=I}R.value=!0}catch(i){console.error("Failed to analyze asset:",i)}finally{y.value=!1}},Zt=()=>{R.value=!1,M.value=null},en=()=>{console.log("Generating detailed report for asset:",M.value)},tn=g=>{const i=G.value.filter(I=>I.assetId===g),A=N.value.filter(I=>I.assetId===g);return i.length>0?"NON_COMPLIANT":A.length>0?"EXPIRING_SOON":"COMPLIANT"},nn=g=>{U.value=g},an=()=>{},Je=()=>{},on=({column:g,direction:i})=>{console.log("Sort:",g,i)},rn=g=>{X.value.currentPage=g},sn=({row:g})=>{Ne(g.id)},ln=g=>({OPERATIONAL:"success",MAINTENANCE:"warning",DOWN:"error",DECOMMISSIONED:"secondary"})[g]||"default",cn=g=>({LOW:"secondary",MEDIUM:"info",HIGH:"warning",CRITICAL:"error"})[g]||"default",un=g=>g.toLowerCase().replace(/\b\w/g,i=>i.toUpperCase()),dn=g=>g.toLowerCase().replace(/\b\w/g,i=>i.toUpperCase()),ht=g=>new Date(g).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}),mn=g=>new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:0}).format(g),fn=g=>{const i=new Date(g),I=Math.ceil((i-new Date)/(1e3*60*60*24));return I<0?"text-red-600":I<=7?"text-orange-600":"text-gray-900"},gn=g=>g>=80?"bg-green-500":g>=60?"bg-yellow-500":"bg-red-500",yt=g=>g>=80?"text-green-600":g>=60?"text-yellow-600":"text-red-600",vn=g=>({COMPLIANT:"success",NON_COMPLIANT:"error",EXPIRING_SOON:"warning"})[g]||"secondary",pn=g=>({COMPLIANT:"Compliant",NON_COMPLIANT:"Issues",EXPIRING_SOON:"Expiring"})[g]||g,hn=g=>g==="HIGH"?"text-red-600":g==="MEDIUM"?"text-yellow-600":"text-green-600",Ke=()=>{f.value={name:"",assetNumber:"",description:"",category:"",status:"OPERATIONAL",criticality:"MEDIUM",location:"",purchasePrice:0,currentValue:0,purchaseDate:null,installationDate:null,vendor:"",model:"",warranty:{isWarrantyActive:!1,warrantyStartDate:null,warrantyEndDate:null,warrantyProvider:"",status:"NOT_APPLICABLE"},customFields:{}},s.value={},Y.value=!1,D.value=!1},wt=g=>{const i=le.findIndex(A=>A.key===B.value);g==="next"&&i0&&(B.value=le[i-1].key)},yn=async g=>{console.log("Primary image uploaded:",g)},wn=async g=>{console.log("Additional files uploaded:",g)},An=g=>{const i=Array.from(g.target.files);if(!i.length)return;const A=i.map(I=>({...I,id:Date.now()+Math.random(),uploadedAt:new Date().toISOString(),uploadedBy:null}));f.files||(f.files=[]),f.files.push(...A),g.target.value=""},Cn=g=>{f.files&&f.files[g]&&f.files.splice(g,1)},bn=g=>{if(!g)return"0 B";const i=["B","KB","MB","GB"],A=Math.floor(Math.log(g)/Math.log(1024));return`${Math.round(g/Math.pow(1024,A)*100)/100} ${i[A]}`},In=g=>{if(!g)return"just now";const i=new Date(g),I=new Date-i,ne=Math.floor(I/(1e3*60));if(ne<1)return"just now";if(ne<60)return`${ne}m ago`;const Ae=Math.floor(ne/60);return Ae<24?`${Ae}h ago`:i.toLocaleDateString()},En=g=>{B.value=g,ce()},Sn=()=>{var g;return s.value={},(g=f.value.name)!=null&&g.trim()||(s.value.name="Asset name is required"),f.value.category||(s.value.category="Category is required"),f.value.status||(s.value.status="Status is required"),f.value.criticality||(s.value.criticality="Criticality is required"),Object.keys(s.value).length===0},Mn=g=>{console.log("Warranty validation:",g)},Tn=g=>{console.log("Custom fields validation:",g)},Nn=g=>{f.value.qrCode=g.qrCode,f.value.qrData=g.data,console.log("✅ QR Code generated and stored:",g)},Xe=()=>{Ve(),x.value=!1,Ke(),m.value=!1},At=async()=>{if(Sn())try{p.value=!0,S.value==="create"?await r.createAsset(f.value):await r.updateAsset(C.value,f.value),Ve(),Xe(),await we()}catch(g){console.error("Failed to save asset:",g)}finally{p.value=!1}};st(()=>{const{qrCode:g,qrData:i,...A}=f.value;return A},()=>{Y.value&&ce()},{deep:!0}),Me(async()=>{await we();const g=o.query.edit;g&&setTimeout(()=>{Te(parseInt(g)),t.replace({path:"/assets"})},500);try{await Promise.all([...te.value.map(i=>Promise.resolve())])}catch(i){console.error("Failed to load compliance data:",i)}});const Ze=()=>{try{return localStorage.getItem(Ce)!==null}catch{return!1}},Ct=()=>{try{const g=localStorage.getItem(Ce);if(!g)return null;const i=JSON.parse(g);return{timestamp:i.timestamp,formData:i.formData}}catch{return null}},xn=()=>{if(console.log("💾 saveAssetFormData called, userInteracted:",Y.value),!Y.value){console.log("❌ Not saving - user has not interacted");return}try{const g={timestamp:new Date().toISOString(),formData:{...f.value}};delete g.formData.image,delete g.formData.files,console.log("📝 Saving to localStorage:",Ce,g),localStorage.setItem(Ce,JSON.stringify(g)),F.value=g.timestamp,D.value=!1,console.log("✅ Asset form auto-saved successfully at",g.timestamp)}catch(g){console.warn("❌ Failed to save asset form:",g)}},kn=()=>{try{const g=localStorage.getItem(Ce);if(!g)return!1;const i=JSON.parse(g);return Object.assign(f.value,i.formData),F.value=i.timestamp,console.log("Asset form data restored"),!0}catch(g){return console.warn("Failed to restore asset form:",g),!1}},Ve=()=>{try{localStorage.removeItem(Ce),F.value=null,D.value=!1,console.log("Asset saved data cleared")}catch(g){console.warn("Failed to clear asset saved data:",g)}},ce=()=>{console.log("🔥 User interaction detected!"),Y.value=!0,D.value=!0,setTimeout(()=>{D.value&&Y.value&&(console.log("💾 Triggering auto-save..."),xn())},3e3)},Rn=()=>{console.log("=== Checking for asset saved data ==="),console.log("Modal mode:",S.value),console.log("Has saved data:",Ze()),console.log("Saved data info:",Ct()),S.value==="create"&&Ze()?(v.value=Ct(),m.value=!0,console.log("✅ Found saved asset data, showing restore notification"),console.log("Notification visible:",m.value)):console.log("❌ No saved data or not in create mode")},bt=()=>{kn()&&(m.value=!1,console.log("Asset form data restored successfully"))},It=()=>{m.value=!1,Ve(),Ke(),Et(),console.log("Asset auto-saved data dismissed")},Et=()=>{f.value.status||(f.value.status="OPERATIONAL"),f.value.files||(f.value.files=[]),f.value.customFields||(f.value.customFields={})};return Ln(()=>{Ve()}),(g,i)=>($(),Ue(Wn,null,{header:H(()=>[_(Jn,{title:"Assets",description:"Manage and track all facility assets and equipment",breadcrumbs:[{text:"Assets",to:null}]},{actions:H(()=>[_(T(ee),{variant:"outline",size:"sm",onClick:Fe},{default:H(()=>i[27]||(i[27]=[u("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[u("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1),W(" Export ",-1)])),_:1,__:[27]}),_(T(ee),{variant:"outline",size:"sm",onClick:we},{default:H(()=>i[28]||(i[28]=[u("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[u("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),W(" Refresh ",-1)])),_:1,__:[28]}),_(T(ee),{variant:"primary",size:"sm",onClick:Be},{default:H(()=>i[29]||(i[29]=[u("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[u("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),W(" Add Asset ",-1)])),_:1,__:[29]})]),stats:H(()=>[_(T(Kn),{stats:ge.value},null,8,["stats"])]),tabs:H(()=>[_(T(xt),{modelValue:U.value,"onUpdate:modelValue":i[0]||(i[0]=A=>U.value=A),tabs:ae.value,onTabChange:nn},null,8,["modelValue","tabs"])]),_:1})]),default:H(()=>[u("div",Po,[u("div",Oo,[_(T(re),{modelValue:b.value.search,"onUpdate:modelValue":i[1]||(i[1]=A=>b.value.search=A),placeholder:"Search assets...",onInput:an},{prepend:H(()=>i[30]||(i[30]=[u("svg",{class:"w-4 h-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[u("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1)])),_:1},8,["modelValue"]),_(T(ue),{modelValue:b.value.category,"onUpdate:modelValue":[i[2]||(i[2]=A=>b.value.category=A),Je],placeholder:"Filter by Category",options:Pe.value},null,8,["modelValue","options"]),_(T(ue),{modelValue:b.value.location,"onUpdate:modelValue":[i[3]||(i[3]=A=>b.value.location=A),Je],placeholder:"Filter by Location",options:We.value},null,8,["modelValue","options"]),_(T(ue),{modelValue:b.value.criticality,"onUpdate:modelValue":[i[4]||(i[4]=A=>b.value.criticality=A),Je],placeholder:"Filter by Criticality",options:Oe.value},null,8,["modelValue","options"])]),T(h)?Z("",!0):($(),j("div",_o,[i[31]||(i[31]=u("svg",{class:"w-5 h-5 text-yellow-600 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[u("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.728-.833-2.498 0L4.316 16.5c-.77.833.192 2.5 1.732 2.5z"})],-1)),u("span",Lo,"Working offline - "+q(T(w))+" mode active",1)])),u("div",{class:pe(T(P))},[_(T(Xn),{columns:fe.value,data:ve.value,loading:ie.value,pagination:X.value,"empty-message":"No assets found",onSortChange:on,onPageChange:rn,onRowClick:sn},{"column-name":H(({row:A})=>[u("div",Fo,[i[32]||(i[32]=u("div",{class:"w-10 h-10 rounded bg-primary-100 flex items-center justify-center mr-3"},[u("svg",{class:"w-5 h-5 text-primary-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[u("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M13 10V3L4 14h7v7l9-11h-7z"})])],-1)),u("div",null,[u("h4",Bo,q(A.name),1),u("p",Vo,q(A.model||"No model specified"),1)])])]),"column-status":H(({row:A})=>[_(T(et),{variant:ln(A.status)},{default:H(()=>[W(q(un(A.status)),1)]),_:2},1032,["variant"])]),"column-healthScore":H(({row:A})=>[u("div",Uo,[u("div",zo,[u("div",{class:pe(["h-2 rounded-full transition-all duration-300",gn(A.healthScore)]),style:Fn({width:`${A.healthScore}%`})},null,6)]),u("span",{class:pe(["text-sm font-medium",yt(A.healthScore)])},q(A.healthScore)+"% ",3)])]),"column-criticality":H(({row:A})=>[_(T(et),{variant:cn(A.criticality)},{default:H(()=>[W(q(dn(A.criticality)),1)]),_:2},1032,["variant"])]),"column-complianceStatus":H(({row:A})=>[_(T(et),{variant:vn(A.complianceStatus)},{default:H(()=>[A.complianceStatus==="NON_COMPLIANT"?($(),j("svg",Ho,i[33]||(i[33]=[u("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.728-.833-2.498 0L4.316 16.5c-.77.833.192 2.5 1.732 2.5z"},null,-1)]))):A.complianceStatus==="EXPIRING_SOON"?($(),j("svg",$o,i[34]||(i[34]=[u("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"},null,-1)]))):($(),j("svg",Yo,i[35]||(i[35]=[u("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"},null,-1)]))),W(" "+q(pn(A.complianceStatus)),1)]),_:2},1032,["variant"])]),"column-lastMaintenance":H(({row:A})=>[A.lastMaintenance?($(),j("div",jo,q(ht(A.lastMaintenance)),1)):($(),j("span",Go,"Never"))]),"column-nextMaintenance":H(({row:A})=>[A.nextMaintenance?($(),j("div",{key:0,class:pe(["text-sm",fn(A.nextMaintenance)])},q(ht(A.nextMaintenance)),3)):($(),j("span",qo,"Not scheduled"))]),"column-value":H(({row:A})=>[u("div",Qo,q(mn(A.value)),1)]),"row-actions":H(({row:A})=>[u("div",Wo,[_(T(ee),{variant:"ghost",size:"sm",onClick:I=>Ne(A.id),title:"View Details"},{default:H(()=>[i[36]||(i[36]=u("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[u("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"}),u("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"})],-1)),T(E)?Z("",!0):($(),j("span",Jo,"View"))]),_:2,__:[36]},1032,["onClick"]),_(T(ee),{variant:"ghost",size:"sm",onClick:I=>Te(A.id),title:"Edit Asset"},{default:H(()=>[i[37]||(i[37]=u("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[u("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1)),T(E)?Z("",!0):($(),j("span",Ko,"Edit"))]),_:2,__:[37]},1032,["onClick"]),_(T(ee),{variant:"ghost",size:"sm",onClick:I=>Kt(A.id),title:"Create Work Order"},{default:H(()=>[i[38]||(i[38]=u("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[u("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 6v6m0 0v6m0-6h6m-6 0H6"})],-1)),T(E)?Z("",!0):($(),j("span",Xo,"Work Order"))]),_:2,__:[38]},1032,["onClick"]),A.riskLevel==="HIGH"?($(),Ue(T(ee),{key:0,variant:"ghost",size:"sm",onClick:I=>Xt(A.id),title:"AI Analysis",class:"text-orange-600 hover:text-orange-700"},{default:H(()=>[i[39]||(i[39]=u("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[u("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"})],-1)),T(E)?Z("",!0):($(),j("span",Zo,"Analyze"))]),_:2,__:[39]},1032,["onClick"])):Z("",!0)])]),_:1},8,["columns","data","loading","pagination"])],2)]),_(T(Nt),{modelValue:x.value,"onUpdate:modelValue":i[25]||(i[25]=A=>x.value=A),title:ye.value,size:"xl",onConfirm:At,onCancel:Xe},{footer:H(()=>[u("div",Er,[u("div",Sr,[D.value||F.value?($(),j("div",Mr,[D.value?($(),j("svg",Tr,i[54]||(i[54]=[u("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z","clip-rule":"evenodd"},null,-1)]))):($(),j("svg",Nr,i[55]||(i[55]=[u("path",{"fill-rule":"evenodd",d:"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z","clip-rule":"evenodd"},null,-1)]))),D.value?($(),j("span",xr,"Auto-saving...")):F.value?($(),j("span",kr,"Last saved "+q(_e.value),1)):Z("",!0)])):Z("",!0),B.value!=="basic"?($(),Ue(T(ee),{key:1,variant:"outline",size:"sm",onClick:i[23]||(i[23]=A=>wt("previous"))},{default:H(()=>i[56]||(i[56]=[W(" ← Previous ",-1)])),_:1,__:[56]})):Z("",!0)]),u("div",Rr,[_(T(ee),{variant:"secondary",onClick:Xe},{default:H(()=>i[57]||(i[57]=[W(" Cancel ",-1)])),_:1,__:[57]}),B.value!=="qr"?($(),Ue(T(ee),{key:0,variant:"outline",onClick:i[24]||(i[24]=A=>wt("next"))},{default:H(()=>i[58]||(i[58]=[W(" Next → ",-1)])),_:1,__:[58]})):Z("",!0),_(T(ee),{variant:"primary",loading:p.value,onClick:At},{default:H(()=>[W(q(S.value==="create"?"Create Asset":"Update Asset"),1)]),_:1},8,["loading"])])])]),default:H(()=>{var A;return[m.value?($(),j("div",er,[u("div",tr,[u("div",null,[i[40]||(i[40]=u("h4",{class:"text-sm font-medium text-blue-900"},"Restore Previous Data",-1)),u("p",nr," You have unsaved changes from "+q(new Date((A=v.value)==null?void 0:A.timestamp).toLocaleString())+". Would you like to restore them? ",1)]),u("div",ar,[_(T(ee),{size:"sm",variant:"primary",onClick:bt},{default:H(()=>i[41]||(i[41]=[W(" Restore ",-1)])),_:1,__:[41]}),_(T(ee),{size:"sm",variant:"secondary",onClick:It},{default:H(()=>i[42]||(i[42]=[W(" Dismiss ",-1)])),_:1,__:[42]})])])])):Z("",!0),_(T(Zn),{visible:m.value,"saved-data-info":v.value,onRestore:bt,onDismiss:It},null,8,["visible","saved-data-info"]),u("div",or,[_(T(xt),{modelValue:B.value,"onUpdate:modelValue":i[5]||(i[5]=I=>B.value=I),tabs:le,onTabChange:En},null,8,["modelValue"])]),B.value==="basic"?($(),j("div",rr,[u("div",sr,[_(Aa,{modelValue:f.value.assetNumber,"onUpdate:modelValue":i[6]||(i[6]=I=>f.value.assetNumber=I),error:s.value.assetNumber},null,8,["modelValue","error"])]),u("div",ir,[_(T(re),{modelValue:f.value.name,"onUpdate:modelValue":i[7]||(i[7]=I=>f.value.name=I),label:"Asset Name",placeholder:"Enter asset name",required:"",error:s.value.name,onInput:ce},null,8,["modelValue","error"]),_(T(ue),{modelValue:f.value.category,"onUpdate:modelValue":i[8]||(i[8]=I=>f.value.category=I),label:"Category",placeholder:"Select category",options:Pe.value,required:"",error:s.value.category,onChange:ce},null,8,["modelValue","options","error"]),_(T(ue),{modelValue:f.value.status,"onUpdate:modelValue":i[9]||(i[9]=I=>f.value.status=I),label:"Status",placeholder:"Select status",options:Le.value,required:"",error:s.value.status,onChange:ce},null,8,["modelValue","options","error"]),_(T(ue),{modelValue:f.value.criticality,"onUpdate:modelValue":i[10]||(i[10]=I=>f.value.criticality=I),label:"Criticality",placeholder:"Select criticality",options:Oe.value,required:"",error:s.value.criticality,onChange:ce},null,8,["modelValue","options","error"]),_(T(re),{modelValue:f.value.location,"onUpdate:modelValue":i[11]||(i[11]=I=>f.value.location=I),label:"Location",placeholder:"Enter location",error:s.value.location,onInput:ce},null,8,["modelValue","error"])]),u("div",null,[i[43]||(i[43]=u("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Description",-1)),Bn(u("textarea",{"onUpdate:modelValue":i[12]||(i[12]=I=>f.value.description=I),class:pe(["w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",{"border-red-300":s.value.description}]),placeholder:"Describe the asset's purpose and characteristics",rows:"3",onInput:ce},null,34),[[Vn,f.value.description]]),s.value.description?($(),j("p",lr,q(s.value.description),1)):Z("",!0)])])):Z("",!0),B.value==="financial"?($(),j("div",cr,[u("div",ur,[_(T(re),{modelValue:f.value.purchasePrice,"onUpdate:modelValue":i[13]||(i[13]=I=>f.value.purchasePrice=I),modelModifiers:{number:!0},type:"number",label:"Purchase Price",placeholder:"0.00",step:"0.01",min:"0",error:s.value.purchasePrice},null,8,["modelValue","error"]),_(T(re),{modelValue:f.value.currentValue,"onUpdate:modelValue":i[14]||(i[14]=I=>f.value.currentValue=I),modelModifiers:{number:!0},type:"number",label:"Current Value",placeholder:"0.00",step:"0.01",min:"0",error:s.value.currentValue},null,8,["modelValue","error"]),_(T(re),{modelValue:f.value.purchaseDate,"onUpdate:modelValue":i[15]||(i[15]=I=>f.value.purchaseDate=I),type:"date",label:"Purchase Date",error:s.value.purchaseDate},null,8,["modelValue","error"]),_(T(re),{modelValue:f.value.installationDate,"onUpdate:modelValue":i[16]||(i[16]=I=>f.value.installationDate=I),type:"date",label:"Installation Date",error:s.value.installationDate},null,8,["modelValue","error"]),_(T(re),{modelValue:f.value.vendor,"onUpdate:modelValue":i[17]||(i[17]=I=>f.value.vendor=I),label:"Vendor/Supplier",placeholder:"Enter vendor name",error:s.value.vendor},null,8,["modelValue","error"]),_(T(re),{modelValue:f.value.model,"onUpdate:modelValue":i[18]||(i[18]=I=>f.value.model=I),label:"Model/Part Number",placeholder:"Enter model number",error:s.value.model},null,8,["modelValue","error"])])])):Z("",!0),B.value==="warranty"?($(),j("div",dr,[_(qn,{modelValue:f.value.warranty,"onUpdate:modelValue":i[19]||(i[19]=I=>f.value.warranty=I),onValidationChange:Mn},null,8,["modelValue"])])):Z("",!0),B.value==="custom"?($(),j("div",mr,[_(Qn,{modelValue:f.value.customFields,"onUpdate:modelValue":i[20]||(i[20]=I=>f.value.customFields=I),onValidationChange:Tn},null,8,["modelValue"])])):Z("",!0),B.value==="attachments"?($(),j("div",fr,[u("div",null,[i[44]||(i[44]=u("label",{class:"block text-sm font-medium text-gray-700 mb-2"}," Primary Image ",-1)),i[45]||(i[45]=u("p",{class:"text-sm text-gray-500 mb-3"}," Upload a main image that represents this asset (equipment photos, identification images, etc.) ",-1)),_(T(kt),{modelValue:f.value.image,"onUpdate:modelValue":i[21]||(i[21]=I=>f.value.image=I),accept:"image/*",multiple:!1,uploading:K.value,"upload-progress":z.value,onFilesAdded:yn},null,8,["modelValue","uploading","upload-progress"])]),u("div",null,[i[52]||(i[52]=u("label",{class:"block text-sm font-medium text-gray-700 mb-2"}," Additional Files ",-1)),i[53]||(i[53]=u("p",{class:"text-sm text-gray-500 mb-3"}," Upload manuals, documentation, additional photos, or other relevant files ",-1)),u("div",gr,[i[47]||(i[47]=u("svg",{class:"mx-auto h-12 w-12 text-gray-400",stroke:"currentColor",fill:"none",viewBox:"0 0 48 48"},[u("path",{d:"M28 8H12a4 4 0 00-4 4v20m32-12v8m0 0v8a4 4 0 01-4 4H12a4 4 0 01-4-4v-4m32-4l-3.172-3.172a4 4 0 00-5.656 0L28 28M8 32l9.172-9.172a4 4 0 015.656 0L28 28m0 0l4 4m4-24h8m-4-4v8m-12 4h.02","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})],-1)),u("div",vr,[u("label",pr,[i[46]||(i[46]=u("span",{class:"mt-2 block text-sm font-medium text-gray-900"}," Drop files here or click to upload ",-1)),u("input",{type:"file",class:"sr-only",multiple:"",accept:"image/*,application/pdf,.doc,.docx,.txt",onChange:An},null,32)])]),i[48]||(i[48]=u("p",{class:"mt-2 text-xs text-gray-500"}," PNG, JPG, PDF, DOC, TXT up to 10MB each (max 10 files) ",-1))]),f.value.files&&f.value.files.length>0?($(),j("div",hr,[($(!0),j(Mt,null,Tt(f.value.files,(I,ne)=>($(),j("div",{key:ne,class:"flex items-center justify-between p-3 bg-gray-50 rounded-lg border"},[u("div",yr,[i[49]||(i[49]=u("svg",{class:"w-5 h-5 text-gray-400 mr-3",fill:"currentColor",viewBox:"0 0 20 20"},[u("path",{"fill-rule":"evenodd",d:"M4 4a2 2 0 012-2h4.586A2 2 0 0112 2.586L15.414 6A2 2 0 0116 7.414V16a2 2 0 01-2 2H6a2 2 0 01-2-2V4zm2 6a1 1 0 011-1h6a1 1 0 110 2H7a1 1 0 01-1-1zm1 3a1 1 0 100 2h6a1 1 0 100-2H7z","clip-rule":"evenodd"})],-1)),u("div",null,[u("span",wr,q(I.name||"Untitled File"),1),u("div",Ar,q(bn(I.size||0))+" • Uploaded "+q(In(I.uploadedAt)),1)])]),_(T(ee),{variant:"ghost",size:"sm",onClick:Ae=>Cn(ne),class:"text-red-600 hover:text-red-800"},{default:H(()=>i[50]||(i[50]=[u("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[u("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1)])),_:2,__:[50]},1032,["onClick"])]))),128))])):Z("",!0),u("div",Cr,[u("details",null,[i[51]||(i[51]=u("summary",{class:"cursor-pointer hover:text-gray-700"},"Alternative Upload Method",-1)),u("div",br,[_(T(kt),{modelValue:f.value.files,"onUpdate:modelValue":i[22]||(i[22]=I=>f.value.files=I),accept:"image/*,application/pdf,.doc,.docx,.txt",multiple:!0,"max-files":10,uploading:K.value,"upload-progress":z.value,onFilesAdded:wn},null,8,["modelValue","uploading","upload-progress"])])])])])])):Z("",!0),B.value==="qr"?($(),j("div",Ir,[_(Do,{"asset-data":f.value,"auto-generate":!0,onQrGenerated:Nn},null,8,["asset-data"])])):Z("",!0)]}),_:1},8,["modelValue","title"]),_(T(Nt),{modelValue:R.value,"onUpdate:modelValue":i[26]||(i[26]=A=>R.value=A),title:"Asset AI Analysis",size:"xl"},{content:H(()=>[M.value?($(),j("div",Dr,[u("div",Pr,[i[63]||(i[63]=u("h3",{class:"text-lg font-medium text-gray-900 mb-3"},"Health Assessment",-1)),u("div",Or,[u("div",_r,[u("div",{class:pe(["text-2xl font-bold",yt(M.value.healthScore)])},q(M.value.healthScore)+"% ",3),i[59]||(i[59]=u("div",{class:"text-sm text-gray-600"},"Overall Health",-1))]),u("div",Lr,[u("div",Fr,q(M.value.efficiency||"N/A")+"% ",1),i[60]||(i[60]=u("div",{class:"text-sm text-gray-600"},"Efficiency",-1))]),u("div",Br,[u("div",Vr,q(M.value.reliability||"N/A")+"% ",1),i[61]||(i[61]=u("div",{class:"text-sm text-gray-600"},"Reliability",-1))]),u("div",Ur,[u("div",{class:pe(["text-2xl font-bold",hn(M.value.riskLevel)])},q(M.value.riskLevel),3),i[62]||(i[62]=u("div",{class:"text-sm text-gray-600"},"Risk Level",-1))])])]),M.value.recommendations?($(),j("div",zr,[i[65]||(i[65]=u("h3",{class:"text-lg font-medium text-gray-900 mb-3"},"AI Recommendations",-1)),u("div",Hr,[($(!0),j(Mt,null,Tt(M.value.recommendations,(A,I)=>($(),j("div",{key:I,class:"flex items-start p-3 bg-blue-50 rounded-lg"},[i[64]||(i[64]=u("svg",{class:"w-5 h-5 text-blue-600 mt-0.5 mr-2 flex-shrink-0",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[u("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"})],-1)),u("span",$r,q(A),1)]))),128))])])):Z("",!0)])):Z("",!0)]),actions:H(()=>[_(T(ee),{variant:"secondary",onClick:Zt},{default:H(()=>i[66]||(i[66]=[W(" Close ",-1)])),_:1,__:[66]}),_(T(ee),{onClick:en},{default:H(()=>i[67]||(i[67]=[W(" Generate Full Report ",-1)])),_:1,__:[67]})]),_:1},8,["modelValue"])]),_:1}))}},is=dt(Yr,[["__scopeId","data-v-188477a9"]]);export{is as default}; diff --git a/frontend/dist/assets/AssetsView-Dxw39KQD.js b/frontend/dist/assets/AssetsView-B4-po3PV.js similarity index 75% rename from frontend/dist/assets/AssetsView-Dxw39KQD.js rename to frontend/dist/assets/AssetsView-B4-po3PV.js index c2903ccf..c81ca398 100644 --- a/frontend/dist/assets/AssetsView-Dxw39KQD.js +++ b/frontend/dist/assets/AssetsView-B4-po3PV.js @@ -1 +1 @@ -import{_ as s,a as t,d as o,f as a,g as _}from"./index-BUdRbiwj.js";const c={class:"assets-view"},r={__name:"AssetsView",setup(n){return(p,i)=>{const e=a("router-view");return _(),t("div",c,[o(e)])}}},m=s(r,[["__scopeId","data-v-b5ae2e46"]]);export{m as default}; +import{_ as s,a as t,d as o,f as a,g as _}from"./index-QAlcqU00.js";const c={class:"assets-view"},r={__name:"AssetsView",setup(n){return(p,i)=>{const e=a("router-view");return _(),t("div",c,[o(e)])}}},m=s(r,[["__scopeId","data-v-b5ae2e46"]]);export{m as default}; diff --git a/frontend/dist/assets/AudioRecorder-CcKMXbWt.js b/frontend/dist/assets/AudioRecorder-BzlZ8cXI.js similarity index 98% rename from frontend/dist/assets/AudioRecorder-CcKMXbWt.js rename to frontend/dist/assets/AudioRecorder-BzlZ8cXI.js index 1c447fbf..b9a77d90 100644 --- a/frontend/dist/assets/AudioRecorder-CcKMXbWt.js +++ b/frontend/dist/assets/AudioRecorder-BzlZ8cXI.js @@ -1 +1 @@ -import{_ as Ee,r as A,c as F,m as ue,a as g,g as u,b as e,j as $,d as Q,w as J,k as se,e as v,F as ne,af as _e,aQ as Ce,t as w,Q as He,n as ce,i as ve,b5 as Ae,ac as We,o as ze,b6 as Ke,aO as Ge,b7 as P,b3 as Je,b4 as Xe,aV as Re,ae as Ye,aT as Ze,aS as Pe}from"./index-BUdRbiwj.js";import{F as me}from"./FPInput-CzR_dWoe.js";import{F as et}from"./FPCheckbox-Bu8jNAEW.js";import{F as tt}from"./FPSelect-C7p47Ma2.js";import{F as Me}from"./FPBadge-BKY5dPnL.js";const ot={class:"task-manager"},at={class:"flex items-center justify-between mb-4"},rt={key:0,class:"space-y-3"},st={class:"flex items-start space-x-3"},nt={class:"flex-1 min-w-0"},it={class:"mb-2"},lt=["onClick"],dt={key:0,class:"mb-2"},ct={class:"flex items-center space-x-4 text-xs text-gray-500"},ut={key:0},vt={key:1},mt={key:2},gt={key:1,class:"flex items-center space-x-2 mt-2"},pt=["onClick"],ft=["onClick"],yt=["onClick"],ht=["onMousedown"],wt={key:1,class:"text-center py-8 text-gray-500"},xt={key:2,class:"mt-6 p-4 bg-gray-50 rounded-lg"},bt={class:"flex items-center justify-between mb-2"},kt={class:"text-sm text-gray-600"},Rt={class:"w-full bg-gray-200 rounded-full h-2"},_t={class:"text-xs text-gray-500 mt-1"},Ct={key:3,class:"mt-4 border-t pt-4"},St={class:"flex flex-wrap gap-2"},$t=["onClick"],Tt={__name:"TaskManager",props:{modelValue:{type:Array,default:()=>[]},disabled:{type:Boolean,default:!1},showTemplates:{type:Boolean,default:!0}},emits:["update:modelValue"],setup(p,{emit:_}){const x=p,X=_,l=A([...x.modelValue]),y=A(null),R=[{name:"Safety Check",description:"Verify all safety protocols and equipment"},{name:"Visual Inspection",description:"Perform visual inspection of equipment"},{name:"Clean Equipment",description:"Clean and sanitize equipment"},{name:"Test Function",description:"Test equipment functionality"},{name:"Document Results",description:"Document findings and results"},{name:"Parts Check",description:"Check parts inventory and condition"}],j=F(()=>l.value.filter(n=>n.completed).length),U=F(()=>l.value.length===0?0:Math.round(j.value/l.value.length*100)),D=()=>{const n={id:Date.now()+Math.random(),name:"",description:"",completed:!1,assignedTo:"",dueDate:null,estimatedTime:null,order:l.value.length,editing:!0};l.value.push(n),m(),We(()=>{const a=y.value;if(a&&a.length>0){const d=a[a.length-1];d==null||d.focus()}})},W=n=>{const a={id:Date.now()+Math.random(),name:n.name,description:n.description,completed:!1,assignedTo:"",dueDate:null,estimatedTime:null,order:l.value.length,editing:!1};l.value.push(a),m()},ae=n=>{l.value.splice(n,1),m()},f=n=>{const a=l.value[n],d={...a,id:Date.now()+Math.random(),name:`${a.name} (Copy)`,completed:!1,editing:!1};l.value.splice(n+1,0,d),m()},N=(n,a,d)=>{l.value[n]&&(l.value[n][a]=d,m())},I=n=>{x.disabled||(l.value[n].editing=!0)},q=n=>{l.value[n].editing=!1,m()},B=(n,a)=>{console.log("Drag started for task:",n)},V=n=>n?new Date(n).toLocaleDateString("en-US",{month:"short",day:"numeric"}):"",m=()=>{X("update:modelValue",l.value)};return ue(()=>x.modelValue,n=>{l.value=[...n]},{deep:!0}),(n,a)=>(u(),g("div",ot,[e("div",at,[a[1]||(a[1]=e("h3",{class:"text-lg font-medium text-gray-900"},"Tasks & Checklist",-1)),Q(v(ne),{variant:"outline",size:"sm",onClick:D,disabled:p.disabled},{default:J(()=>a[0]||(a[0]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),se(" Add Task ",-1)])),_:1,__:[0]},8,["disabled"])]),l.value.length>0?(u(),g("div",rt,[(u(!0),g(_e,null,Ce(l.value,(d,C)=>(u(),g("div",{key:d.id||C,class:ce(["task-item border border-gray-200 rounded-lg p-4 transition-all duration-200",{"bg-green-50 border-green-200":d.completed,"bg-white":!d.completed}])},[e("div",st,[Q(v(et),{modelValue:d.completed,"onUpdate:modelValue":[S=>d.completed=S,S=>N(C,"completed",S)],disabled:p.disabled,class:"mt-1"},null,8,["modelValue","onUpdate:modelValue","disabled"]),e("div",nt,[e("div",it,[d.editing?(u(),ve(v(me),{key:0,modelValue:d.name,"onUpdate:modelValue":S=>d.name=S,placeholder:"Enter task name",onBlur:S=>q(C),onKeyup:Ae(S=>q(C),["enter"]),class:"mb-2",ref_for:!0,ref_key:"taskNameInput",ref:y},null,8,["modelValue","onUpdate:modelValue","onBlur","onKeyup"])):(u(),g("h4",{key:1,class:ce(["font-medium text-gray-900 cursor-pointer hover:text-primary-600",{"line-through text-gray-500":d.completed}]),onClick:S=>I(C)},w(d.name||"Untitled Task"),11,lt))]),d.description||d.editing?(u(),g("div",dt,[d.editing?(u(),ve(v(me),{key:0,modelValue:d.description,"onUpdate:modelValue":S=>d.description=S,placeholder:"Enter task description (optional)",type:"textarea",rows:"2",onBlur:S=>q(C)},null,8,["modelValue","onUpdate:modelValue","onBlur"])):d.description?(u(),g("p",{key:1,class:ce(["text-sm text-gray-600",{"line-through":d.completed}])},w(d.description),3)):$("",!0)])):$("",!0),e("div",ct,[d.assignedTo?(u(),g("span",ut," Assigned to: "+w(d.assignedTo),1)):$("",!0),d.dueDate?(u(),g("span",vt," Due: "+w(V(d.dueDate)),1)):$("",!0),d.estimatedTime?(u(),g("span",mt," Est: "+w(d.estimatedTime)+"h ",1)):$("",!0)]),p.disabled?$("",!0):(u(),g("div",gt,[e("button",{onClick:S=>I(C),class:"text-xs text-primary-600 hover:text-primary-700"}," Edit ",8,pt),e("button",{onClick:S=>f(C),class:"text-xs text-gray-600 hover:text-gray-700"}," Duplicate ",8,ft),e("button",{onClick:S=>ae(C),class:"text-xs text-red-600 hover:text-red-700"}," Delete ",8,yt)]))]),p.disabled?$("",!0):(u(),g("div",{key:0,class:"drag-handle cursor-move text-gray-400 hover:text-gray-600 p-1",onMousedown:S=>B(C)},a[2]||(a[2]=[e("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 6h16M4 12h16M4 18h16"})],-1)]),40,ht))])],2))),128))])):(u(),g("div",wt,a[3]||(a[3]=[e("svg",{class:"w-12 h-12 mx-auto mb-4 text-gray-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5H7a2 2 0 00-2 2v10a2 2 0 002 2h8a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"})],-1),e("p",{class:"text-sm"},"No tasks added yet",-1),e("p",{class:"text-xs text-gray-400 mt-1"},'Click "Add Task" to create your first task',-1)]))),l.value.length>0?(u(),g("div",xt,[e("div",bt,[a[4]||(a[4]=e("span",{class:"text-sm font-medium text-gray-700"},"Progress",-1)),e("span",kt,w(j.value)+"/"+w(l.value.length)+" completed",1)]),e("div",Rt,[e("div",{class:"bg-green-500 h-2 rounded-full transition-all duration-300",style:He({width:`${U.value}%`})},null,4)]),e("p",_t,w(U.value)+"% complete",1)])):$("",!0),!p.disabled&&p.showTemplates?(u(),g("div",Ct,[a[5]||(a[5]=e("h4",{class:"text-sm font-medium text-gray-700 mb-2"},"Quick Templates",-1)),e("div",St,[(u(),g(_e,null,Ce(R,d=>e("button",{key:d.name,onClick:C=>W(d),class:"px-3 py-1 text-xs bg-blue-50 text-blue-700 rounded-full hover:bg-blue-100 transition-colors"},w(d.name),9,$t)),64))])])):$("",!0)]))}},ra=Ee(Tt,[["__scopeId","data-v-6486dd79"]]),Dt={class:"parts-manager"},Mt={class:"flex items-center justify-between mb-4"},At={key:0,class:"space-y-3"},Et={class:"grid grid-cols-12 gap-4 items-center"},zt={class:"col-span-5"},Vt={key:1,class:"flex items-center"},Ft={class:"flex-1"},Ut={class:"font-medium text-gray-900"},Bt={key:0,class:"text-sm text-gray-600"},Pt={class:"text-xs text-gray-500"},Lt={class:"col-span-2"},Nt={class:"col-span-2 text-center"},jt={class:"col-span-2 text-center"},qt={class:"text-sm font-medium text-gray-900"},Ot={class:"col-span-1 flex justify-end"},Qt={class:"flex items-center space-x-1"},It=["onClick"],Ht=["onClick"],Wt=["onClick"],Kt={key:0,class:"mt-3 p-2 bg-red-100 border border-red-200 rounded"},Gt={class:"flex items-center"},Jt={class:"text-sm text-red-700"},Xt={key:1,class:"text-center py-8 text-gray-500"},Yt={key:2,class:"mt-6 p-4 bg-gray-50 rounded-lg"},Zt={class:"flex items-center justify-between mb-2"},eo={class:"text-sm text-gray-600"},to={class:"grid grid-cols-2 gap-4 text-sm"},oo={class:"ml-2 font-medium text-gray-900"},ao={__name:"PartsManager",props:{modelValue:{type:Array,default:()=>[]},disabled:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(p,{emit:_}){const x=p,X=_,l=A([...x.modelValue]),y=A([]),R=A(!1),j=F(()=>y.value.map(m=>{var n;return{value:m.id,title:`${m.partNumber} - ${m.name}`,subtitle:`Stock: ${m.quantity} | Cost: $${((n=m.unitCost)==null?void 0:n.toFixed(2))||"0.00"}`,data:m}})),U=F(()=>l.value.reduce((m,n)=>m+n.quantity*(n.unitCost||0),0)),D=F(()=>l.value.filter(m=>m.quantity>m.availableQuantity).length),W=async()=>{try{R.value=!0;const m=await Ke.getAll();y.value=m}catch(m){console.error("Failed to load parts:",m)}finally{R.value=!1}},ae=()=>{const m={id:Date.now()+Math.random(),partId:null,partNumber:"",name:"",description:"",location:"",quantity:1,availableQuantity:0,unitCost:0,editing:!0};l.value.push(m),V()},f=m=>{l.value.splice(m,1),V()},N=(m,n,a)=>{l.value[m]&&(l.value[m][n]=a,V())},I=(m,n)=>{var d;const a=y.value.find(C=>C.id===n);a&&l.value[m]&&(l.value[m]={...l.value[m],partId:a.id,partNumber:a.partNumber,name:a.name,description:a.description,location:((d=a.location)==null?void 0:d.name)||"Unknown",availableQuantity:a.quantity||0,unitCost:a.unitCost||0},V())},q=m=>{x.disabled||(l.value[m].editing=!0)},B=m=>{l.value[m].editing=!1,V()},V=()=>{X("update:modelValue",l.value)};return ue(()=>x.modelValue,m=>{l.value=[...m]},{deep:!0}),ze(()=>{W()}),(m,n)=>(u(),g("div",Dt,[e("div",Mt,[n[1]||(n[1]=e("h3",{class:"text-lg font-medium text-gray-900"},"Parts & Inventory",-1)),Q(v(ne),{variant:"outline",size:"sm",onClick:ae,disabled:p.disabled},{default:J(()=>n[0]||(n[0]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),se(" Add Part ",-1)])),_:1,__:[0]},8,["disabled"])]),l.value.length>0?(u(),g("div",At,[(u(!0),g(_e,null,Ce(l.value,(a,d)=>(u(),g("div",{key:a.id||d,class:ce(["part-item border border-gray-200 rounded-lg p-4 transition-all duration-200",{"border-red-200 bg-red-50":a.quantity>a.availableQuantity,"bg-white":a.quantity<=a.availableQuantity}])},[e("div",Et,[e("div",zt,[a.editing?(u(),ve(v(tt),{key:0,modelValue:a.partId,"onUpdate:modelValue":[C=>a.partId=C,C=>I(d,C)],placeholder:"Search for part...",options:j.value,loading:R.value,searchable:"",required:""},null,8,["modelValue","onUpdate:modelValue","options","loading"])):(u(),g("div",Vt,[e("div",Ft,[e("h4",Ut,w(a.partNumber)+" - "+w(a.name),1),a.description?(u(),g("p",Bt,w(a.description),1)):$("",!0),e("p",Pt," Location: "+w(a.location||"Not specified"),1)])]))]),e("div",Lt,[Q(v(me),{modelValue:a.quantity,"onUpdate:modelValue":[C=>a.quantity=C,C=>N(d,"quantity",C)],modelModifiers:{number:!0},type:"number",min:"1",max:a.availableQuantity,placeholder:"Qty",disabled:p.disabled,error:a.quantity>a.availableQuantity},null,8,["modelValue","onUpdate:modelValue","max","disabled","error"])]),e("div",Nt,[e("span",{class:ce(["text-sm font-medium",{"text-red-600":a.availableQuantity<5,"text-yellow-600":a.availableQuantity>=5&&a.availableQuantity<20,"text-green-600":a.availableQuantity>=20}])},w(a.availableQuantity||0)+" available ",3),n[2]||(n[2]=e("p",{class:"text-xs text-gray-500"},"in stock",-1))]),e("div",jt,[e("span",qt," $"+w((a.unitCost||0).toFixed(2)),1),n[3]||(n[3]=e("p",{class:"text-xs text-gray-500"},"per unit",-1))]),e("div",Ot,[e("div",Qt,[!a.editing&&!p.disabled?(u(),g("button",{key:0,onClick:C=>q(d),class:"p-1 text-gray-400 hover:text-gray-600 rounded",title:"Edit part"},n[4]||(n[4]=[e("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1)]),8,It)):$("",!0),a.editing?(u(),g("button",{key:1,onClick:C=>B(d),class:"p-1 text-green-500 hover:text-green-600 rounded",title:"Save changes"},n[5]||(n[5]=[e("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M5 13l4 4L19 7"})],-1)]),8,Ht)):$("",!0),p.disabled?$("",!0):(u(),g("button",{key:2,onClick:C=>f(d),class:"p-1 text-red-400 hover:text-red-600 rounded",title:"Remove part"},n[6]||(n[6]=[e("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1)]),8,Wt))])])]),a.quantity>a.availableQuantity?(u(),g("div",Kt,[e("div",Gt,[n[7]||(n[7]=e("svg",{class:"w-4 h-4 text-red-500 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.854-.833-2.598 0L3.732 16.5c-.77.833.192 2.5 1.732 2.5z"})],-1)),e("span",Jt," Insufficient stock! Requested "+w(a.quantity)+", only "+w(a.availableQuantity)+" available. ",1)])])):$("",!0)],2))),128))])):(u(),g("div",Xt,n[8]||(n[8]=[e("svg",{class:"w-12 h-12 mx-auto mb-4 text-gray-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4"})],-1),e("p",{class:"text-sm"},"No parts added yet",-1),e("p",{class:"text-xs text-gray-400 mt-1"},'Click "Add Part" to include inventory items',-1)]))),l.value.length>0?(u(),g("div",Yt,[e("div",Zt,[n[9]||(n[9]=e("span",{class:"text-sm font-medium text-gray-700"},"Parts Summary",-1)),e("span",eo,w(l.value.length)+" part(s)",1)]),e("div",to,[e("div",null,[n[10]||(n[10]=e("span",{class:"text-gray-600"},"Total Estimated Cost:",-1)),e("span",oo,"$"+w(U.value.toFixed(2)),1)]),e("div",null,[n[11]||(n[11]=e("span",{class:"text-gray-600"},"Stock Issues:",-1)),e("span",{class:ce(["ml-2 font-medium",D.value>0?"text-red-600":"text-green-600"])},w(D.value>0?`${D.value} item(s)`:"None"),3)])])])):$("",!0)]))}},sa=Ee(ao,[["__scopeId","data-v-86dbbb2a"]]),ro=Ge("audioRecording",()=>{const p=A(new Map),_=A(new Map),x=A(new Map),X=A([]),l=A({}),y=A(!1),R=A(null),j=A(!1),U=A(0),D=A(new Map),W=A(new Map),ae=F(()=>r=>p.value.get(r)||[]),f=F(()=>r=>_.value.get(r)),N=F(()=>r=>_.value.has(r)),I=F(()=>r=>x.value.get(r)),q=F(()=>r=>(p.value.get(r)||[]).reduce((c,h)=>c+(h.duration||0),0)),B=F(()=>r=>(p.value.get(r)||[]).reduce((c,h)=>c+(h.size||0),0)),V=F(()=>r=>(p.value.get(r)||[]).filter(c=>c.transcription).length),m=F(()=>r=>D.value.get(r)),n=F(()=>r=>W.value.get(r)),a=async r=>{try{y.value=!0,R.value=null;const s=await P.getByWorkOrderId(r);return p.value.set(r,s),s}catch(s){throw R.value=s.message||"Failed to load recordings",s}finally{y.value=!1}},d=async(r,s)=>{try{y.value=!0,R.value=null;const c=await P.upload({...s,workOrderId:r}),h=p.value.get(r)||[];return p.value.set(r,[c,...h]),c}catch(c){throw R.value=c.message||"Failed to upload recording",c}finally{y.value=!1}},C=async(r,s,c)=>{try{y.value=!0,R.value=null;const h=await P.update(s,c),z=p.value.get(r)||[],oe=z.findIndex(de=>de.id===s);return oe!==-1&&(z[oe]=h,p.value.set(r,[...z])),h}catch(h){throw R.value=h.message||"Failed to update recording",h}finally{y.value=!1}},S=async(r,s)=>{try{y.value=!0,R.value=null,await P.delete(s);const h=(p.value.get(r)||[]).filter(z=>z.id!==s);return p.value.set(r,h),D.value.delete(s),W.value.delete(s),x.value.delete(s),!0}catch(c){throw R.value=c.message||"Failed to delete recording",c}finally{y.value=!1}},ee=async(r,s,c={})=>{try{if(y.value=!0,R.value=null,_.value.has(r))throw new Error("User already has an active recording session");const h=await P.startRecordingSession({userId:r,workOrderId:s,...c});return _.value.set(r,{...h,workOrderId:s,startTime:new Date,localDuration:0}),U.value=_.value.size,j.value=U.value>0,h}catch(h){throw R.value=h.message||"Failed to start recording session",h}finally{y.value=!1}},te=async(r,s)=>{try{y.value=!0,R.value=null;const c=_.value.get(r);if(!c)throw new Error("No active recording session found for user");const h=await P.stopRecordingSession(c.id,s),z=c.workOrderId,oe=p.value.get(z)||[];return p.value.set(z,[h,...oe]),_.value.delete(r),U.value=_.value.size,j.value=U.value>0,h}catch(c){throw R.value=c.message||"Failed to stop recording session",c}finally{y.value=!1}},ie=(r,s)=>{const c=_.value.get(r);c&&(c.localDuration=s,_.value.set(r,{...c}))},K=async(r,s={})=>{try{y.value=!0,R.value=null;const c=await P.transcribe(r,s);return x.value.set(r,{...c,status:"pending",startedAt:new Date().toISOString()}),O(r),c}catch(c){throw R.value=c.message||"Failed to start transcription",c}finally{y.value=!1}},O=async r=>{try{const s=await P.getTranscriptionStatus(r);x.value.set(r,s),s.status==="completed"?re(r,s.transcription):s.status==="processing"?setTimeout(()=>O(r),5e3):s.status==="failed"&&console.error("Transcription failed:",s.error)}catch(s){console.error("Failed to poll transcription status:",s)}},re=(r,s)=>{for(const[c,h]of p.value.entries()){const z=h.findIndex(oe=>oe.id===r);if(z!==-1){h[z]={...h[z],transcription:s.text,transcriptionConfidence:s.confidence,transcriptionLanguage:s.language,transcriptionUpdatedAt:new Date().toISOString()},p.value.set(c,[...h]);break}}};return{recordings:p,activeRecordingSessions:_,transcriptionJobs:x,audioFormats:X,transcriptionConfig:l,loading:y,error:R,globalRecordingActive:j,activeRecordingCount:U,waveformData:D,analysisData:W,getRecordingsForWorkOrder:ae,getActiveRecordingSession:f,hasActiveRecording:N,getTranscriptionStatus:I,getTotalDurationForWorkOrder:q,getTotalSizeForWorkOrder:B,getTranscribedCount:V,getWaveformData:m,getAnalysisData:n,loadRecordings:a,uploadRecording:d,updateRecording:C,deleteRecording:S,startRecordingSession:ee,stopRecordingSession:te,updateSessionDuration:ie,transcribeRecording:K,generateWaveform:async r=>{try{const s=await P.generateWaveform(r);return D.value.set(r,s),s}catch(s){return console.error("Failed to generate waveform:",s),null}},getAudioAnalysis:async r=>{try{const s=await P.getAudioAnalysis(r);return W.value.set(r,s),s}catch(s){return console.error("Failed to get audio analysis:",s),null}},convertAudioFormat:async(r,s)=>{try{y.value=!0,R.value=null;const c=await P.convertFormat(r,s),h=URL.createObjectURL(c),z=document.createElement("a");return z.href=h,z.download=`recording-${r}.${s}`,document.body.appendChild(z),z.click(),document.body.removeChild(z),URL.revokeObjectURL(h),!0}catch(c){throw R.value=c.message||"Failed to convert audio format",c}finally{y.value=!1}},searchRecordings:async(r,s={})=>{try{return y.value=!0,R.value=null,await P.searchByContent(r,s)}catch(c){throw R.value=c.message||"Failed to search recordings",c}finally{y.value=!1}},loadActiveSessions:async r=>{try{const s=await P.getActiveSessions(r);return s.forEach(c=>{_.value.set(c.userId,{...c,startTime:new Date(c.startTime),localDuration:0})}),U.value=_.value.size,j.value=U.value>0,s}catch(s){return console.error("Failed to load active recording sessions:",s),[]}},loadSupportedFormats:async()=>{try{const r=await P.getSupportedFormats();return X.value=r,r}catch(r){console.error("Failed to load supported audio formats:",r);const s=[{mimeType:"audio/webm",extension:"webm",maxSize:10485760},{mimeType:"audio/mp4",extension:"mp4",maxSize:10485760},{mimeType:"audio/ogg",extension:"ogg",maxSize:10485760}];return X.value=s,s}},loadTranscriptionConfig:async()=>{try{const r=await P.getTranscriptionConfig();return l.value=r,r}catch(r){console.error("Failed to load transcription config:",r);const s={enabled:!1,supportedLanguages:["en","es","fr"],maxFileSize:10485760,timeout:3e4};return l.value=s,s}},getStatistics:async r=>{try{return await P.getStatistics(r)}catch(s){throw R.value=s.message||"Failed to get recording statistics",s}},validateAudioFile:async r=>{try{return await P.validateAudioFile(r)}catch(s){throw R.value=s.message||"Failed to validate audio file",s}},bulkOperation:async(r,s,c={})=>{try{y.value=!0,R.value=null;const h=await P.bulkOperation(r,s,c);return s==="delete"&&r.forEach(z=>{for(const[oe,de]of p.value.entries()){const ke=de.filter(Se=>Se.id!==z);ke.length!==de.length&&p.value.set(oe,ke)}}),h}catch(h){throw R.value=h.message||"Failed to perform bulk operation",h}finally{y.value=!1}},clearWorkOrderData:r=>{p.value.delete(r)},clearUserSession:r=>{_.value.delete(r),U.value=_.value.size,j.value=U.value>0},clearError:()=>{R.value=null}}});function so(p={}){const{workOrderId:_=null,currentUser:x=null,autoTranscribe:X=!1,maxDuration:l=300,audioQuality:y="medium",enableVisualization:R=!0,enableServerSession:j=!1,autoSave:U=!1}=p,D=ro(),{loading:W,error:ae}=Je(D),f=A([]),N=A(!1),I=A(!1),q=A(!1),B=A(0),V=A(null),m=A(y),n=A(null);let a=null,d=[],C=null,S=null,ee=null,te=null,ie=null,K=null;const O=new Map,re={low:{sampleRate:8e3,bitRate:32e3},medium:{sampleRate:16e3,bitRate:64e3},high:{sampleRate:44100,bitRate:128e3}},ge=F(()=>f.value.reduce((t,o)=>t+(o.duration||0),0)),pe=F(()=>f.value.reduce((t,o)=>t+(o.size||0),0)),fe=F(()=>f.value.filter(t=>t.transcription).length),ye=F(()=>I.value&&!q.value),he=F(()=>x?D.hasActiveRecording(x.id):!1),we=F(()=>Ue(B.value)),xe=()=>{I.value=!!(navigator.mediaDevices&&navigator.mediaDevices.getUserMedia&&window.MediaRecorder&&MediaRecorder.isTypeSupported("audio/webm")||MediaRecorder.isTypeSupported("audio/mp4"))},be=async()=>{try{const t=await navigator.mediaDevices.getUserMedia({audio:{sampleRate:M(),echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0}});return q.value=!1,t}catch(t){throw console.error("Error requesting microphone permission:",t),q.value=!0,t.name==="NotAllowedError"?new Error("Microphone permission denied. Please allow access and try again."):t.name==="NotFoundError"?new Error("No microphone found. Please connect a microphone and try again."):new Error("Failed to access microphone: "+t.message)}},M=()=>(re[m.value]||re.medium).sampleRate,i=()=>["audio/webm","audio/mp4","audio/ogg"].find(o=>MediaRecorder.isTypeSupported(o))||"audio/webm",b=async()=>{if(!(!I.value||N.value))try{const t=await be();if(!t)return;const o=i(),k={mimeType:o},T=re[m.value];T.bitRate&&MediaRecorder.isTypeSupported(`${o};codecs=opus`)&&(k.audioBitsPerSecond=T.bitRate),a=new MediaRecorder(t,k),d=[],a.ondataavailable=E=>{E.data.size>0&&d.push(E.data)},a.onstop=async()=>{try{const E=new Blob(d,{type:a.mimeType});await h(E)}catch(E){throw console.error("Error saving recording:",E),E}finally{t.getTracks().forEach(E=>E.stop()),c()}},a.onerror=E=>{throw console.error("MediaRecorder error:",E.error),L(),new Error("Recording failed: "+E.error.message)},R&&s(t),a.start(1e3),N.value=!0,C=Date.now(),S=setInterval(()=>{B.value=Math.floor((Date.now()-C)/1e3),B.value>=l&&L()},1e3),j&&x&&_&&await D.startRecordingSession(x.id,_,{quality:m.value,maxDuration:l})}catch(t){throw console.error("Error starting recording:",t),N.value=!1,B.value=0,t}},L=async()=>{if(!(!N.value||!a))try{N.value=!1,S&&(clearInterval(S),S=null),K&&(cancelAnimationFrame(K),K=null),a.state==="recording"&&a.stop(),j&&x&&await D.stopRecordingSession(x.id,{duration:B.value,quality:m.value})}catch(t){throw console.error("Error stopping recording:",t),t}finally{B.value=0}},H=()=>{a&&a.state==="recording"&&a.pause(),S&&(clearInterval(S),S=null)},r=()=>{a&&a.state==="paused"&&(a.resume(),S=setInterval(()=>{B.value=Math.floor((Date.now()-C)/1e3),B.value>=l&&L()},1e3))},s=t=>{if(n.value)try{ee=new(window.AudioContext||window.webkitAudioContext),te=ee.createAnalyser(),ie=ee.createMediaStreamSource(t),te.fftSize=256;const o=te.frequencyBinCount,k=new Uint8Array(o);ie.connect(te);const T=n.value,E=T.getContext("2d"),G=()=>{if(!N.value)return;K=requestAnimationFrame(G),te.getByteFrequencyData(k),E.fillStyle="rgb(249, 250, 251)",E.fillRect(0,0,T.width,T.height);const Y=T.width/o*2.5;let le,Z=0;for(let Te=0;Te{ee&&(ee.close(),ee=null),te=null,ie=null},h=async t=>{try{const o=URL.createObjectURL(t),k=B.value,T=new Audio(o);return new Promise((E,G)=>{T.onloadedmetadata=async()=>{try{const Y=T.duration||k,le={audioUrl:o,audioBlob:t,duration:Y,size:t.size,title:"",description:"",createdAt:new Date().toISOString(),user:x,mimeType:t.type,volume:1,transcription:null,transcriptionConfidence:0,waveformData:null,quality:m.value,sampleRate:M()};let Z;_?Z=await D.uploadRecording(_,{audioBlob:t,filename:`recording-${Date.now()}.${t.type.split("/")[1]||"webm"}`,...le}):Z={id:Date.now()+Math.random(),...le},f.value=[Z,...f.value],X&&Z.id&&Fe(Z.id),Z.id&&R&&D.generateWaveform(Z.id),E(Z)}catch(Y){G(Y)}},T.onerror=()=>{G(new Error("Failed to load audio metadata"))}})}catch(o){throw console.error("Error saving recording:",o),o}},z=async t=>{var E;if(console.log("deleteRecording called with index:",t,"recordings length:",(E=f.value)==null?void 0:E.length),!Re(f)||!Array.isArray(f.value))return console.error("Invalid recordings state"),!1;if(t<0||t>=f.value.length)return console.error("Index out of bounds:",t,"length:",f.value.length),!1;const o=f.value[t];if(!o)return console.error("No recording found at index:",t),!1;const k=o.title||`Recording ${t+1}`;if(!confirm(`Are you sure you want to delete "${k}"?`))return console.log("Delete cancelled by user"),!1;try{if(console.log("Deleting recording:",o.id,o.title),V.value===o.id&&Ve(o.id),o.id&&_)try{await D.deleteRecording(_,o.id),console.log("Deleted from server successfully")}catch(G){console.warn("Server delete failed, continuing with local delete:",G)}return o.audioUrl&&URL.revokeObjectURL(o.audioUrl),o.id&&O.delete(o.id),f.value.splice(t,1),console.log("Recording deleted successfully. New length:",f.value.length),!0}catch(G){return console.error("Error deleting recording:",G),alert("Failed to delete recording: "+G.message),!1}},oe=t=>{if(console.log("editRecording called with index:",t),!Re(f)){console.error("recordings is not a valid ref");return}if(!Array.isArray(f.value)){console.error("recordings.value is not an array:",f.value);return}if(t<0||t>=f.value.length){console.error("Index out of bounds:",t,"length:",f.value.length);return}const o=f.value[t];if(!o){console.error("No recording found at index:",t);return}console.log("Setting edit mode for recording:",o.id,o.title);try{o.editing=!0,o.editTitle=o.title||"",o.editDescription=o.description||"",console.log("Edit mode set, recording.editing:",o.editing)}catch(k){console.error("Error setting edit mode:",k)}},de=async t=>{if(console.log("saveRecordingEdit called with index:",t),!Re(f)||!Array.isArray(f.value)){console.error("Invalid recordings state");return}if(t<0||t>=f.value.length){console.error("Index out of bounds:",t,"length:",f.value.length);return}const o=f.value[t];if(!o){console.error("No recording found at index:",t);return}try{const k={title:o.editTitle||"",description:o.editDescription||""};if(console.log("Saving recording edit:",k),o.id&&_)try{await D.updateRecording(_,o.id,k),console.log("Updated on server successfully")}catch(T){console.warn("Server update failed, continuing with local update:",T)}o.title=k.title,o.description=k.description,o.editing=!1,delete o.editTitle,delete o.editDescription,console.log("Recording edit saved successfully")}catch(k){console.error("Error saving recording edit:",k),alert("Failed to save changes: "+k.message)}},ke=t=>{if(console.log("cancelRecordingEdit called with index:",t),!Re(f)||!Array.isArray(f.value)){console.error("Invalid recordings state");return}if(t<0||t>=f.value.length){console.error("Index out of bounds:",t,"length:",f.value.length);return}const o=f.value[t];if(!o){console.error("No recording found at index:",t);return}try{o.editing=!1,delete o.editTitle,delete o.editDescription,console.log("Edit cancelled for recording")}catch(k){console.error("Error cancelling recording edit:",k)}},Se=async t=>{V.value===t.id?Ve(t.id):await Le(t)},Le=async t=>{try{O.forEach((k,T)=>{T!==t.id&&(k.pause(),k.currentTime=0)});let o=O.get(t.id);o||(o=new Audio(t.audioUrl),o.volume=t.volume||1,o.onended=()=>{V.value=null},o.onerror=()=>{console.error("Error playing audio"),V.value=null},O.set(t.id,o)),V.value=t.id,await o.play()}catch(o){throw console.error("Error starting playback:",o),V.value=null,o}},Ve=t=>{const o=O.get(t);o&&(o.pause(),o.currentTime=0),V.value=null},Ne=(t,o)=>{t.volume=parseFloat(o);const k=O.get(t.id);k&&(k.volume=t.volume)},je=(t,o)=>{const T=t.target.getBoundingClientRect(),G=(t.clientX-T.left)/T.width,Y=O.get(o.id);Y&&Y.duration&&(Y.currentTime=G*Y.duration)},Fe=async t=>{try{if(!t)return;await D.transcribeRecording(t,{language:"auto",enablePunctuation:!0,enableWordTimestamps:!1})}catch(o){throw console.error("Error starting transcription:",o),o}},qe=t=>{var k,T;if(!t.audioUrl)return;const o=document.createElement("a");o.href=t.audioUrl,o.download=`${t.title||"recording"}-${((k=t.createdAt)==null?void 0:k.split("T")[0])||"unknown"}.${((T=t.mimeType)==null?void 0:T.split("/")[1])||"webm"}`,document.body.appendChild(o),o.click(),document.body.removeChild(o)},Ue=t=>{if(!t||t<0)return"0:00";const o=Math.floor(t/60),k=Math.floor(t%60);return`${o}:${k.toString().padStart(2,"0")}`},Oe=t=>{if(!t)return"0 B";const o=["B","KB","MB","GB"],k=Math.floor(Math.log(t)/Math.log(1024));return`${Math.round(t/Math.pow(1024,k)*100)/100} ${o[k]}`},Qe=t=>t?new Date(t).toLocaleString("en-US",{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",hour12:!0}):"Unknown",$e=async()=>{if(!_)return[];try{const t=await D.loadRecordings(_);return f.value=t.map(o=>({...o,editing:!1})),f.value}catch(t){throw console.error("Error loading recordings:",t),t}},Ie=()=>{if(_)return $e()};ue(n,t=>{},{immediate:!0});const Be=()=>{N.value&&L(),S&&(clearInterval(S),S=null),K&&(cancelAnimationFrame(K),K=null),c(),O.forEach(t=>{t.pause()}),O.clear(),f.value.forEach(t=>{t.audioUrl&&URL.revokeObjectURL(t.audioUrl)})};return ze(()=>{xe(),_&&$e(),D.loadSupportedFormats(),D.loadTranscriptionConfig()}),Xe(Be),{recordings:f,isRecording:N,isSupported:I,needsPermission:q,recordingDuration:B,playingId:V,currentAudioQuality:m,waveformCanvas:n,loading:W,error:ae,totalDuration:ge,totalSize:pe,transcribedCount:fe,canRecord:ye,hasActiveRecording:he,currentDurationFormatted:we,startRecording:b,stopRecording:L,pauseRecording:H,resumeRecording:r,deleteRecording:z,editRecording:oe,saveRecordingEdit:de,cancelRecordingEdit:ke,downloadRecording:qe,togglePlayback:Se,updateVolume:Ne,seekToPosition:je,transcribeRecording:Fe,loadRecordings:$e,refreshRecordings:Ie,formatDuration:Ue,formatFileSize:Oe,formatDateTime:Qe,cleanup:Be}}const no={class:"audio-recorder"},io={class:"flex items-center justify-between mb-4"},lo={key:0,class:"text-sm text-gray-500"},co={class:"mb-6 p-4 border border-gray-200 rounded-lg"},uo={class:"flex items-center justify-between mb-4"},vo={class:"flex items-center space-x-4"},mo={key:0,class:"w-6 h-6",fill:"currentColor",viewBox:"0 0 24 24"},go={key:1,class:"w-6 h-6 bg-current rounded-full animate-pulse"},po={class:"ml-2"},fo={key:2,class:"absolute -top-1 -right-1 w-3 h-3 bg-red-500 rounded-full animate-ping"},yo={key:0,class:"flex items-center text-lg font-mono text-red-600"},ho={key:0,class:"flex items-center space-x-2"},wo=["disabled"],xo={key:0,class:"mb-4"},bo={key:1,class:"p-3 bg-red-50 border border-red-200 rounded"},ko={key:2,class:"p-3 bg-yellow-50 border border-yellow-200 rounded"},Ro={key:0,class:"space-y-3"},_o={class:"flex items-center justify-between"},Co={class:"flex items-center space-x-4 flex-1"},So={key:0,class:"w-4 h-4",fill:"currentColor",viewBox:"0 0 24 24"},$o={key:1,class:"w-4 h-4",fill:"currentColor",viewBox:"0 0 24 24"},To={class:"flex-1"},Do={class:"flex items-center space-x-2"},Mo={class:"font-medium text-gray-900"},Ao={class:"flex items-center space-x-4 mt-1 text-sm text-gray-500"},Eo={key:0,class:"text-blue-600"},zo={key:1,class:"flex items-center"},Vo={key:0,class:"mt-2"},Fo=["onClick"],Uo={key:1,class:"mt-2 p-2 bg-gray-50 rounded text-sm"},Bo={class:"flex items-center justify-between mb-1"},Po={class:"text-gray-700"},Lo={key:2,class:"mt-2"},No={class:"flex space-x-2 mt-2"},jo={key:3,class:"mt-2 text-sm text-gray-600"},qo={class:"flex items-center space-x-2"},Oo={class:"flex items-center space-x-1"},Qo=["value","onInput"],Io={key:1,class:"text-center py-8 text-gray-500"},Ho={key:2,class:"mt-6 p-4 bg-gray-50 rounded-lg"},Wo={class:"grid grid-cols-2 md:grid-cols-4 gap-4 text-sm"},Ko={class:"font-medium text-gray-900"},Go={class:"font-medium text-gray-900"},Jo={class:"font-medium text-gray-900"},Xo={class:"font-medium text-gray-900"},Yo={__name:"AudioRecorder",props:{modelValue:{type:Array,default:()=>[]},currentUser:{type:Object,default:null},disabled:{type:Boolean,default:!1},autoTranscribe:{type:Boolean,default:!1},maxDuration:{type:Number,default:300},workOrderId:{type:[String,Number],default:null},audioQuality:{type:String,default:"medium"},enableVisualization:{type:Boolean,default:!0},enableServerSession:{type:Boolean,default:!1},autoSave:{type:Boolean,default:!1}},emits:["update:modelValue","recording-saved"],setup(p,{emit:_}){const x=p,X=_,{recordings:l,isRecording:y,isSupported:R,needsPermission:j,playingId:U,currentAudioQuality:D,waveformCanvas:W,totalDuration:ae,totalSize:f,transcribedCount:N,canRecord:I,currentDurationFormatted:q,startRecording:B,stopRecording:V,deleteRecording:m,editRecording:n,saveRecordingEdit:a,cancelRecordingEdit:d,downloadRecording:C,togglePlayback:S,updateVolume:ee,seekToPosition:te,formatDuration:ie,formatFileSize:K,formatDateTime:O}=so({workOrderId:x.workOrderId,currentUser:x.currentUser,autoTranscribe:x.autoTranscribe,maxDuration:x.maxDuration,audioQuality:x.audioQuality,enableVisualization:x.enableVisualization,enableServerSession:x.enableServerSession,autoSave:x.autoSave}),re=A(x.audioQuality),ge=async()=>{try{y.value?await V():await B()}catch(M){console.error("Error toggling recording:",M)}},pe=()=>{D.value=re.value},fe=M=>{try{console.log("handleEditRecording called with index:",M),typeof n=="function"?n(M):console.error("editRecording function not available")}catch(i){console.error("Error in handleEditRecording:",i)}},ye=async M=>{try{console.log("handleDeleteRecording called with index:",M),typeof m=="function"?await m(M):console.error("deleteRecording function not available")}catch(i){console.error("Error in handleDeleteRecording:",i)}},he=async M=>{try{console.log("handleSaveRecordingEdit called with index:",M),typeof a=="function"?await a(M):console.error("saveRecordingEdit function not available")}catch(i){console.error("Error in handleSaveRecordingEdit:",i)}},we=M=>{try{console.log("handleCancelRecordingEdit called with index:",M),typeof d=="function"?d(M):console.error("cancelRecordingEdit function not available")}catch(i){console.error("Error in handleCancelRecordingEdit:",i)}},xe=()=>{X("update:modelValue",l.value)},be=()=>{x.modelValue&&x.modelValue.length>0&&(console.log("Initializing recordings from modelValue:",x.modelValue.length),l.value=[...x.modelValue])};return ue(()=>x.modelValue,M=>{M&&Array.isArray(M)&&(M.length!==l.value.length||M.some((b,L)=>{const H=l.value[L];return!H||b.id!==H.id}))&&(console.log("External modelValue change detected, updating recordings:",M.length),l.value=[...M])},{immediate:!1}),ue(l,()=>{console.log("Recordings changed internally, emitting update:",l.value.length),xe()},{deep:!0}),ze(()=>{be()}),(M,i)=>(u(),g("div",no,[e("div",io,[i[1]||(i[1]=e("div",null,[e("h3",{class:"text-lg font-medium text-gray-900"},"Audio Notes"),e("p",{class:"text-sm text-gray-600"},"Record voice notes for work order documentation")],-1)),v(l).length>0?(u(),g("div",lo,w(v(l).length)+" recording"+w(v(l).length!==1?"s":""),1)):$("",!0)]),e("div",co,[e("div",uo,[e("div",vo,[Q(v(ne),{variant:v(y)?"danger":"primary",size:"lg",onClick:ge,disabled:p.disabled||!v(I),class:"relative"},{default:J(()=>[v(y)?(u(),g("div",go)):(u(),g("svg",mo,i[2]||(i[2]=[e("path",{d:"M12 14c1.66 0 2.99-1.34 2.99-3L15 5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3zm5.3-3c0 3-2.54 5.1-5.3 5.1S6.7 14 6.7 11H5c0 3.41 2.72 6.23 6 6.72V21h2v-3.28c3.28-.48 6-3.3 6-6.72h-1.7z"},null,-1)]))),e("span",po,w(v(y)?"Stop Recording":"Start Recording"),1),v(y)?(u(),g("div",fo)):$("",!0)]),_:1},8,["variant","disabled"]),v(y)?(u(),g("div",yo,[i[3]||(i[3]=e("svg",{class:"w-4 h-4 mr-2",fill:"currentColor",viewBox:"0 0 24 24"},[e("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"})],-1)),se(" "+w(v(q)),1)])):$("",!0)]),v(y)?$("",!0):(u(),g("div",ho,[i[5]||(i[5]=e("label",{class:"text-sm text-gray-600"},"Quality:",-1)),Ye(e("select",{"onUpdate:modelValue":i[0]||(i[0]=b=>re.value=b),class:"text-sm border border-gray-300 rounded px-2 py-1",disabled:v(y),onChange:pe},i[4]||(i[4]=[e("option",{value:"low"},"Low (8kHz)",-1),e("option",{value:"medium"},"Medium (16kHz)",-1),e("option",{value:"high"},"High (44kHz)",-1)]),40,wo),[[Ze,re.value]])]))]),v(y)?(u(),g("div",xo,[e("canvas",{ref_key:"waveformCanvas",ref:W,class:"w-full h-16 border border-gray-300 rounded bg-gray-50",width:"600",height:"64"},null,512),i[6]||(i[6]=e("div",{class:"text-xs text-gray-500 text-center mt-1"}," Live audio visualization ",-1))])):$("",!0),v(R)?$("",!0):(u(),g("div",bo,i[7]||(i[7]=[Pe('

Audio recording is not supported in your browser. Please use a modern browser with MediaRecorder API support.

',1)]))),v(j)?(u(),g("div",ko,i[8]||(i[8]=[Pe('

Microphone access is required for audio recording. Please allow microphone permissions when prompted.

',1)]))):$("",!0)]),v(l).length>0?(u(),g("div",Ro,[i[19]||(i[19]=e("h4",{class:"text-sm font-medium text-gray-900"},"Recorded Audio Notes",-1)),(u(!0),g(_e,null,Ce(v(l),(b,L)=>(u(),g("div",{key:b.id||L,class:"recording-item border border-gray-200 rounded-lg p-4 transition-all duration-200 hover:border-gray-300"},[e("div",_o,[e("div",Co,[Q(v(ne),{variant:v(U)===b.id?"primary":"outline",size:"sm",onClick:()=>v(S)(b),disabled:p.disabled},{default:J(()=>[v(U)!==b.id?(u(),g("svg",So,i[9]||(i[9]=[e("path",{d:"M8 5v14l11-7z"},null,-1)]))):(u(),g("svg",$o,i[10]||(i[10]=[e("path",{d:"M6 19h4V5H6v14zm8-14v14h4V5h-4z"},null,-1)])))]),_:2},1032,["variant","onClick","disabled"]),e("div",To,[e("div",Do,[e("h5",Mo,w(b.title||`Recording ${L+1}`),1),Q(v(Me),{variant:"secondary",size:"sm"},{default:J(()=>[se(w(v(K)(b.size||0)),1)]),_:2},1024),Q(v(Me),{variant:"info",size:"sm"},{default:J(()=>[se(w(v(ie)(b.duration||0)),1)]),_:2},1024)]),e("div",Ao,[e("span",null,w(v(O)(b.createdAt)),1),b.transcription?(u(),g("span",Eo,"Transcribed")):$("",!0),b.user?(u(),g("span",zo,[i[11]||(i[11]=e("svg",{class:"w-3 h-3 mr-1",fill:"currentColor",viewBox:"0 0 24 24"},[e("path",{d:"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"})],-1)),se(" "+w(b.user.firstName)+" "+w(b.user.lastName),1)])):$("",!0)]),b.waveformData?(u(),g("div",Vo,[e("canvas",{ref_for:!0,ref:`waveform-${b.id}`,class:"w-full h-8 cursor-pointer",width:"400",height:"32",onClick:H=>v(te)(H,b)},null,8,Fo)])):$("",!0),b.transcription?(u(),g("div",Uo,[e("div",Bo,[i[12]||(i[12]=e("span",{class:"text-xs font-medium text-gray-600"},"TRANSCRIPTION",-1)),Q(v(Me),{variant:b.transcriptionConfidence>.8?"success":"warning",size:"sm"},{default:J(()=>[se(w(Math.round(b.transcriptionConfidence*100))+"% confidence ",1)]),_:2},1032,["variant"])]),e("p",Po,w(b.transcription),1)])):$("",!0),b.editing?(u(),g("div",Lo,[Q(v(me),{modelValue:b.editTitle,"onUpdate:modelValue":H=>b.editTitle=H,placeholder:"Recording title...",size:"sm",onKeyup:[Ae(()=>v(a)(L),["enter"]),Ae(()=>v(d)(L),["escape"])]},null,8,["modelValue","onUpdate:modelValue","onKeyup"]),Q(v(me),{modelValue:b.editDescription,"onUpdate:modelValue":H=>b.editDescription=H,type:"textarea",rows:"2",placeholder:"Add description...",class:"mt-2",size:"sm"},null,8,["modelValue","onUpdate:modelValue"]),e("div",No,[Q(v(ne),{variant:"primary",size:"sm",onClick:()=>he(L)},{default:J(()=>i[13]||(i[13]=[se(" Save ",-1)])),_:2,__:[13]},1032,["onClick"]),Q(v(ne),{variant:"outline",size:"sm",onClick:()=>we(L)},{default:J(()=>i[14]||(i[14]=[se(" Cancel ",-1)])),_:2,__:[14]},1032,["onClick"])])])):b.description?(u(),g("div",jo,w(b.description),1)):$("",!0)])]),e("div",qo,[e("div",Oo,[i[15]||(i[15]=e("svg",{class:"w-4 h-4 text-gray-400",fill:"currentColor",viewBox:"0 0 24 24"},[e("path",{d:"M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z"})],-1)),e("input",{type:"range",min:"0",max:"1",step:"0.1",value:b.volume||1,onInput:H=>v(ee)(b,H.target.value),class:"w-16 h-1"},null,40,Qo)]),p.disabled?$("",!0):(u(),ve(v(ne),{key:0,variant:"ghost",size:"sm",onClick:()=>fe(L),title:"Edit recording details"},{default:J(()=>i[16]||(i[16]=[e("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1)])),_:2,__:[16]},1032,["onClick"])),Q(v(ne),{variant:"ghost",size:"sm",onClick:()=>v(C)(b),title:"Download recording"},{default:J(()=>i[17]||(i[17]=[e("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1)])),_:2,__:[17]},1032,["onClick"]),p.disabled?$("",!0):(u(),ve(v(ne),{key:1,variant:"ghost",size:"sm",onClick:()=>ye(L),title:"Delete recording",class:"text-red-600 hover:text-red-800"},{default:J(()=>i[18]||(i[18]=[e("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1)])),_:2,__:[18]},1032,["onClick"]))])])]))),128))])):(u(),g("div",Io,i[20]||(i[20]=[e("svg",{class:"w-12 h-12 mx-auto mb-4 text-gray-300",fill:"currentColor",viewBox:"0 0 24 24"},[e("path",{d:"M12 14c1.66 0 2.99-1.34 2.99-3L15 5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3zm5.3-3c0 3-2.54 5.1-5.3 5.1S6.7 14 6.7 11H5c0 3.41 2.72 6.23 6 6.72V21h2v-3.28c3.28-.48 6-3.3 6-6.72h-1.7z"})],-1),e("p",{class:"text-sm"},"No audio recordings",-1),e("p",{class:"text-xs text-gray-400 mt-1"},'Click "Start Recording" to add voice notes',-1)]))),v(l).length>0?(u(),g("div",Ho,[i[25]||(i[25]=e("h4",{class:"text-sm font-medium text-gray-900 mb-3"},"Recording Summary",-1)),e("div",Wo,[e("div",null,[e("div",Ko,w(v(l).length),1),i[21]||(i[21]=e("div",{class:"text-gray-500"},"Total Recordings",-1))]),e("div",null,[e("div",Go,w(v(ie)(v(ae))),1),i[22]||(i[22]=e("div",{class:"text-gray-500"},"Total Duration",-1))]),e("div",null,[e("div",Jo,w(v(K)(v(f))),1),i[23]||(i[23]=e("div",{class:"text-gray-500"},"Total Size",-1))]),e("div",null,[e("div",Xo,w(v(N)),1),i[24]||(i[24]=e("div",{class:"text-gray-500"},"Transcribed",-1))])])])):$("",!0)]))}},na=Ee(Yo,[["__scopeId","data-v-d8ad1d92"]]);export{na as A,sa as P,ra as T}; +import{_ as Ee,r as A,c as F,m as ue,a as g,g as u,b as e,j as $,d as Q,w as J,k as se,e as v,F as ne,af as _e,aR as Ce,t as w,Q as He,n as ce,i as ve,b5 as Ae,ac as We,o as ze,b6 as Ke,aP as Ge,b7 as P,b4 as Je,aO as Xe,aW as Re,ae as Ye,aU as Ze,aT as Pe}from"./index-QAlcqU00.js";import{F as me}from"./FPInput-D5RURom0.js";import{F as et}from"./FPCheckbox-DcRYwN3n.js";import{F as tt}from"./FPSelect-j7n_x8eB.js";import{F as Me}from"./FPBadge-DvOitM1C.js";const ot={class:"task-manager"},at={class:"flex items-center justify-between mb-4"},rt={key:0,class:"space-y-3"},st={class:"flex items-start space-x-3"},nt={class:"flex-1 min-w-0"},it={class:"mb-2"},lt=["onClick"],dt={key:0,class:"mb-2"},ct={class:"flex items-center space-x-4 text-xs text-gray-500"},ut={key:0},vt={key:1},mt={key:2},gt={key:1,class:"flex items-center space-x-2 mt-2"},pt=["onClick"],ft=["onClick"],yt=["onClick"],ht=["onMousedown"],wt={key:1,class:"text-center py-8 text-gray-500"},xt={key:2,class:"mt-6 p-4 bg-gray-50 rounded-lg"},bt={class:"flex items-center justify-between mb-2"},kt={class:"text-sm text-gray-600"},Rt={class:"w-full bg-gray-200 rounded-full h-2"},_t={class:"text-xs text-gray-500 mt-1"},Ct={key:3,class:"mt-4 border-t pt-4"},St={class:"flex flex-wrap gap-2"},$t=["onClick"],Tt={__name:"TaskManager",props:{modelValue:{type:Array,default:()=>[]},disabled:{type:Boolean,default:!1},showTemplates:{type:Boolean,default:!0}},emits:["update:modelValue"],setup(p,{emit:_}){const x=p,X=_,l=A([...x.modelValue]),y=A(null),R=[{name:"Safety Check",description:"Verify all safety protocols and equipment"},{name:"Visual Inspection",description:"Perform visual inspection of equipment"},{name:"Clean Equipment",description:"Clean and sanitize equipment"},{name:"Test Function",description:"Test equipment functionality"},{name:"Document Results",description:"Document findings and results"},{name:"Parts Check",description:"Check parts inventory and condition"}],j=F(()=>l.value.filter(n=>n.completed).length),U=F(()=>l.value.length===0?0:Math.round(j.value/l.value.length*100)),D=()=>{const n={id:Date.now()+Math.random(),name:"",description:"",completed:!1,assignedTo:"",dueDate:null,estimatedTime:null,order:l.value.length,editing:!0};l.value.push(n),m(),We(()=>{const a=y.value;if(a&&a.length>0){const d=a[a.length-1];d==null||d.focus()}})},W=n=>{const a={id:Date.now()+Math.random(),name:n.name,description:n.description,completed:!1,assignedTo:"",dueDate:null,estimatedTime:null,order:l.value.length,editing:!1};l.value.push(a),m()},ae=n=>{l.value.splice(n,1),m()},f=n=>{const a=l.value[n],d={...a,id:Date.now()+Math.random(),name:`${a.name} (Copy)`,completed:!1,editing:!1};l.value.splice(n+1,0,d),m()},N=(n,a,d)=>{l.value[n]&&(l.value[n][a]=d,m())},I=n=>{x.disabled||(l.value[n].editing=!0)},q=n=>{l.value[n].editing=!1,m()},B=(n,a)=>{console.log("Drag started for task:",n)},V=n=>n?new Date(n).toLocaleDateString("en-US",{month:"short",day:"numeric"}):"",m=()=>{X("update:modelValue",l.value)};return ue(()=>x.modelValue,n=>{l.value=[...n]},{deep:!0}),(n,a)=>(u(),g("div",ot,[e("div",at,[a[1]||(a[1]=e("h3",{class:"text-lg font-medium text-gray-900"},"Tasks & Checklist",-1)),Q(v(ne),{variant:"outline",size:"sm",onClick:D,disabled:p.disabled},{default:J(()=>a[0]||(a[0]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),se(" Add Task ",-1)])),_:1,__:[0]},8,["disabled"])]),l.value.length>0?(u(),g("div",rt,[(u(!0),g(_e,null,Ce(l.value,(d,C)=>(u(),g("div",{key:d.id||C,class:ce(["task-item border border-gray-200 rounded-lg p-4 transition-all duration-200",{"bg-green-50 border-green-200":d.completed,"bg-white":!d.completed}])},[e("div",st,[Q(v(et),{modelValue:d.completed,"onUpdate:modelValue":[S=>d.completed=S,S=>N(C,"completed",S)],disabled:p.disabled,class:"mt-1"},null,8,["modelValue","onUpdate:modelValue","disabled"]),e("div",nt,[e("div",it,[d.editing?(u(),ve(v(me),{key:0,modelValue:d.name,"onUpdate:modelValue":S=>d.name=S,placeholder:"Enter task name",onBlur:S=>q(C),onKeyup:Ae(S=>q(C),["enter"]),class:"mb-2",ref_for:!0,ref_key:"taskNameInput",ref:y},null,8,["modelValue","onUpdate:modelValue","onBlur","onKeyup"])):(u(),g("h4",{key:1,class:ce(["font-medium text-gray-900 cursor-pointer hover:text-primary-600",{"line-through text-gray-500":d.completed}]),onClick:S=>I(C)},w(d.name||"Untitled Task"),11,lt))]),d.description||d.editing?(u(),g("div",dt,[d.editing?(u(),ve(v(me),{key:0,modelValue:d.description,"onUpdate:modelValue":S=>d.description=S,placeholder:"Enter task description (optional)",type:"textarea",rows:"2",onBlur:S=>q(C)},null,8,["modelValue","onUpdate:modelValue","onBlur"])):d.description?(u(),g("p",{key:1,class:ce(["text-sm text-gray-600",{"line-through":d.completed}])},w(d.description),3)):$("",!0)])):$("",!0),e("div",ct,[d.assignedTo?(u(),g("span",ut," Assigned to: "+w(d.assignedTo),1)):$("",!0),d.dueDate?(u(),g("span",vt," Due: "+w(V(d.dueDate)),1)):$("",!0),d.estimatedTime?(u(),g("span",mt," Est: "+w(d.estimatedTime)+"h ",1)):$("",!0)]),p.disabled?$("",!0):(u(),g("div",gt,[e("button",{onClick:S=>I(C),class:"text-xs text-primary-600 hover:text-primary-700"}," Edit ",8,pt),e("button",{onClick:S=>f(C),class:"text-xs text-gray-600 hover:text-gray-700"}," Duplicate ",8,ft),e("button",{onClick:S=>ae(C),class:"text-xs text-red-600 hover:text-red-700"}," Delete ",8,yt)]))]),p.disabled?$("",!0):(u(),g("div",{key:0,class:"drag-handle cursor-move text-gray-400 hover:text-gray-600 p-1",onMousedown:S=>B(C)},a[2]||(a[2]=[e("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 6h16M4 12h16M4 18h16"})],-1)]),40,ht))])],2))),128))])):(u(),g("div",wt,a[3]||(a[3]=[e("svg",{class:"w-12 h-12 mx-auto mb-4 text-gray-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5H7a2 2 0 00-2 2v10a2 2 0 002 2h8a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"})],-1),e("p",{class:"text-sm"},"No tasks added yet",-1),e("p",{class:"text-xs text-gray-400 mt-1"},'Click "Add Task" to create your first task',-1)]))),l.value.length>0?(u(),g("div",xt,[e("div",bt,[a[4]||(a[4]=e("span",{class:"text-sm font-medium text-gray-700"},"Progress",-1)),e("span",kt,w(j.value)+"/"+w(l.value.length)+" completed",1)]),e("div",Rt,[e("div",{class:"bg-green-500 h-2 rounded-full transition-all duration-300",style:He({width:`${U.value}%`})},null,4)]),e("p",_t,w(U.value)+"% complete",1)])):$("",!0),!p.disabled&&p.showTemplates?(u(),g("div",Ct,[a[5]||(a[5]=e("h4",{class:"text-sm font-medium text-gray-700 mb-2"},"Quick Templates",-1)),e("div",St,[(u(),g(_e,null,Ce(R,d=>e("button",{key:d.name,onClick:C=>W(d),class:"px-3 py-1 text-xs bg-blue-50 text-blue-700 rounded-full hover:bg-blue-100 transition-colors"},w(d.name),9,$t)),64))])])):$("",!0)]))}},ra=Ee(Tt,[["__scopeId","data-v-6486dd79"]]),Dt={class:"parts-manager"},Mt={class:"flex items-center justify-between mb-4"},At={key:0,class:"space-y-3"},Et={class:"grid grid-cols-12 gap-4 items-center"},zt={class:"col-span-5"},Vt={key:1,class:"flex items-center"},Ft={class:"flex-1"},Ut={class:"font-medium text-gray-900"},Bt={key:0,class:"text-sm text-gray-600"},Pt={class:"text-xs text-gray-500"},Lt={class:"col-span-2"},Nt={class:"col-span-2 text-center"},jt={class:"col-span-2 text-center"},qt={class:"text-sm font-medium text-gray-900"},Ot={class:"col-span-1 flex justify-end"},Qt={class:"flex items-center space-x-1"},It=["onClick"],Ht=["onClick"],Wt=["onClick"],Kt={key:0,class:"mt-3 p-2 bg-red-100 border border-red-200 rounded"},Gt={class:"flex items-center"},Jt={class:"text-sm text-red-700"},Xt={key:1,class:"text-center py-8 text-gray-500"},Yt={key:2,class:"mt-6 p-4 bg-gray-50 rounded-lg"},Zt={class:"flex items-center justify-between mb-2"},eo={class:"text-sm text-gray-600"},to={class:"grid grid-cols-2 gap-4 text-sm"},oo={class:"ml-2 font-medium text-gray-900"},ao={__name:"PartsManager",props:{modelValue:{type:Array,default:()=>[]},disabled:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(p,{emit:_}){const x=p,X=_,l=A([...x.modelValue]),y=A([]),R=A(!1),j=F(()=>y.value.map(m=>{var n;return{value:m.id,title:`${m.partNumber} - ${m.name}`,subtitle:`Stock: ${m.quantity} | Cost: $${((n=m.unitCost)==null?void 0:n.toFixed(2))||"0.00"}`,data:m}})),U=F(()=>l.value.reduce((m,n)=>m+n.quantity*(n.unitCost||0),0)),D=F(()=>l.value.filter(m=>m.quantity>m.availableQuantity).length),W=async()=>{try{R.value=!0;const m=await Ke.getAll();y.value=m}catch(m){console.error("Failed to load parts:",m)}finally{R.value=!1}},ae=()=>{const m={id:Date.now()+Math.random(),partId:null,partNumber:"",name:"",description:"",location:"",quantity:1,availableQuantity:0,unitCost:0,editing:!0};l.value.push(m),V()},f=m=>{l.value.splice(m,1),V()},N=(m,n,a)=>{l.value[m]&&(l.value[m][n]=a,V())},I=(m,n)=>{var d;const a=y.value.find(C=>C.id===n);a&&l.value[m]&&(l.value[m]={...l.value[m],partId:a.id,partNumber:a.partNumber,name:a.name,description:a.description,location:((d=a.location)==null?void 0:d.name)||"Unknown",availableQuantity:a.quantity||0,unitCost:a.unitCost||0},V())},q=m=>{x.disabled||(l.value[m].editing=!0)},B=m=>{l.value[m].editing=!1,V()},V=()=>{X("update:modelValue",l.value)};return ue(()=>x.modelValue,m=>{l.value=[...m]},{deep:!0}),ze(()=>{W()}),(m,n)=>(u(),g("div",Dt,[e("div",Mt,[n[1]||(n[1]=e("h3",{class:"text-lg font-medium text-gray-900"},"Parts & Inventory",-1)),Q(v(ne),{variant:"outline",size:"sm",onClick:ae,disabled:p.disabled},{default:J(()=>n[0]||(n[0]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),se(" Add Part ",-1)])),_:1,__:[0]},8,["disabled"])]),l.value.length>0?(u(),g("div",At,[(u(!0),g(_e,null,Ce(l.value,(a,d)=>(u(),g("div",{key:a.id||d,class:ce(["part-item border border-gray-200 rounded-lg p-4 transition-all duration-200",{"border-red-200 bg-red-50":a.quantity>a.availableQuantity,"bg-white":a.quantity<=a.availableQuantity}])},[e("div",Et,[e("div",zt,[a.editing?(u(),ve(v(tt),{key:0,modelValue:a.partId,"onUpdate:modelValue":[C=>a.partId=C,C=>I(d,C)],placeholder:"Search for part...",options:j.value,loading:R.value,searchable:"",required:""},null,8,["modelValue","onUpdate:modelValue","options","loading"])):(u(),g("div",Vt,[e("div",Ft,[e("h4",Ut,w(a.partNumber)+" - "+w(a.name),1),a.description?(u(),g("p",Bt,w(a.description),1)):$("",!0),e("p",Pt," Location: "+w(a.location||"Not specified"),1)])]))]),e("div",Lt,[Q(v(me),{modelValue:a.quantity,"onUpdate:modelValue":[C=>a.quantity=C,C=>N(d,"quantity",C)],modelModifiers:{number:!0},type:"number",min:"1",max:a.availableQuantity,placeholder:"Qty",disabled:p.disabled,error:a.quantity>a.availableQuantity},null,8,["modelValue","onUpdate:modelValue","max","disabled","error"])]),e("div",Nt,[e("span",{class:ce(["text-sm font-medium",{"text-red-600":a.availableQuantity<5,"text-yellow-600":a.availableQuantity>=5&&a.availableQuantity<20,"text-green-600":a.availableQuantity>=20}])},w(a.availableQuantity||0)+" available ",3),n[2]||(n[2]=e("p",{class:"text-xs text-gray-500"},"in stock",-1))]),e("div",jt,[e("span",qt," $"+w((a.unitCost||0).toFixed(2)),1),n[3]||(n[3]=e("p",{class:"text-xs text-gray-500"},"per unit",-1))]),e("div",Ot,[e("div",Qt,[!a.editing&&!p.disabled?(u(),g("button",{key:0,onClick:C=>q(d),class:"p-1 text-gray-400 hover:text-gray-600 rounded",title:"Edit part"},n[4]||(n[4]=[e("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1)]),8,It)):$("",!0),a.editing?(u(),g("button",{key:1,onClick:C=>B(d),class:"p-1 text-green-500 hover:text-green-600 rounded",title:"Save changes"},n[5]||(n[5]=[e("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M5 13l4 4L19 7"})],-1)]),8,Ht)):$("",!0),p.disabled?$("",!0):(u(),g("button",{key:2,onClick:C=>f(d),class:"p-1 text-red-400 hover:text-red-600 rounded",title:"Remove part"},n[6]||(n[6]=[e("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1)]),8,Wt))])])]),a.quantity>a.availableQuantity?(u(),g("div",Kt,[e("div",Gt,[n[7]||(n[7]=e("svg",{class:"w-4 h-4 text-red-500 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.854-.833-2.598 0L3.732 16.5c-.77.833.192 2.5 1.732 2.5z"})],-1)),e("span",Jt," Insufficient stock! Requested "+w(a.quantity)+", only "+w(a.availableQuantity)+" available. ",1)])])):$("",!0)],2))),128))])):(u(),g("div",Xt,n[8]||(n[8]=[e("svg",{class:"w-12 h-12 mx-auto mb-4 text-gray-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4"})],-1),e("p",{class:"text-sm"},"No parts added yet",-1),e("p",{class:"text-xs text-gray-400 mt-1"},'Click "Add Part" to include inventory items',-1)]))),l.value.length>0?(u(),g("div",Yt,[e("div",Zt,[n[9]||(n[9]=e("span",{class:"text-sm font-medium text-gray-700"},"Parts Summary",-1)),e("span",eo,w(l.value.length)+" part(s)",1)]),e("div",to,[e("div",null,[n[10]||(n[10]=e("span",{class:"text-gray-600"},"Total Estimated Cost:",-1)),e("span",oo,"$"+w(U.value.toFixed(2)),1)]),e("div",null,[n[11]||(n[11]=e("span",{class:"text-gray-600"},"Stock Issues:",-1)),e("span",{class:ce(["ml-2 font-medium",D.value>0?"text-red-600":"text-green-600"])},w(D.value>0?`${D.value} item(s)`:"None"),3)])])])):$("",!0)]))}},sa=Ee(ao,[["__scopeId","data-v-86dbbb2a"]]),ro=Ge("audioRecording",()=>{const p=A(new Map),_=A(new Map),x=A(new Map),X=A([]),l=A({}),y=A(!1),R=A(null),j=A(!1),U=A(0),D=A(new Map),W=A(new Map),ae=F(()=>r=>p.value.get(r)||[]),f=F(()=>r=>_.value.get(r)),N=F(()=>r=>_.value.has(r)),I=F(()=>r=>x.value.get(r)),q=F(()=>r=>(p.value.get(r)||[]).reduce((c,h)=>c+(h.duration||0),0)),B=F(()=>r=>(p.value.get(r)||[]).reduce((c,h)=>c+(h.size||0),0)),V=F(()=>r=>(p.value.get(r)||[]).filter(c=>c.transcription).length),m=F(()=>r=>D.value.get(r)),n=F(()=>r=>W.value.get(r)),a=async r=>{try{y.value=!0,R.value=null;const s=await P.getByWorkOrderId(r);return p.value.set(r,s),s}catch(s){throw R.value=s.message||"Failed to load recordings",s}finally{y.value=!1}},d=async(r,s)=>{try{y.value=!0,R.value=null;const c=await P.upload({...s,workOrderId:r}),h=p.value.get(r)||[];return p.value.set(r,[c,...h]),c}catch(c){throw R.value=c.message||"Failed to upload recording",c}finally{y.value=!1}},C=async(r,s,c)=>{try{y.value=!0,R.value=null;const h=await P.update(s,c),z=p.value.get(r)||[],oe=z.findIndex(de=>de.id===s);return oe!==-1&&(z[oe]=h,p.value.set(r,[...z])),h}catch(h){throw R.value=h.message||"Failed to update recording",h}finally{y.value=!1}},S=async(r,s)=>{try{y.value=!0,R.value=null,await P.delete(s);const h=(p.value.get(r)||[]).filter(z=>z.id!==s);return p.value.set(r,h),D.value.delete(s),W.value.delete(s),x.value.delete(s),!0}catch(c){throw R.value=c.message||"Failed to delete recording",c}finally{y.value=!1}},ee=async(r,s,c={})=>{try{if(y.value=!0,R.value=null,_.value.has(r))throw new Error("User already has an active recording session");const h=await P.startRecordingSession({userId:r,workOrderId:s,...c});return _.value.set(r,{...h,workOrderId:s,startTime:new Date,localDuration:0}),U.value=_.value.size,j.value=U.value>0,h}catch(h){throw R.value=h.message||"Failed to start recording session",h}finally{y.value=!1}},te=async(r,s)=>{try{y.value=!0,R.value=null;const c=_.value.get(r);if(!c)throw new Error("No active recording session found for user");const h=await P.stopRecordingSession(c.id,s),z=c.workOrderId,oe=p.value.get(z)||[];return p.value.set(z,[h,...oe]),_.value.delete(r),U.value=_.value.size,j.value=U.value>0,h}catch(c){throw R.value=c.message||"Failed to stop recording session",c}finally{y.value=!1}},ie=(r,s)=>{const c=_.value.get(r);c&&(c.localDuration=s,_.value.set(r,{...c}))},K=async(r,s={})=>{try{y.value=!0,R.value=null;const c=await P.transcribe(r,s);return x.value.set(r,{...c,status:"pending",startedAt:new Date().toISOString()}),O(r),c}catch(c){throw R.value=c.message||"Failed to start transcription",c}finally{y.value=!1}},O=async r=>{try{const s=await P.getTranscriptionStatus(r);x.value.set(r,s),s.status==="completed"?re(r,s.transcription):s.status==="processing"?setTimeout(()=>O(r),5e3):s.status==="failed"&&console.error("Transcription failed:",s.error)}catch(s){console.error("Failed to poll transcription status:",s)}},re=(r,s)=>{for(const[c,h]of p.value.entries()){const z=h.findIndex(oe=>oe.id===r);if(z!==-1){h[z]={...h[z],transcription:s.text,transcriptionConfidence:s.confidence,transcriptionLanguage:s.language,transcriptionUpdatedAt:new Date().toISOString()},p.value.set(c,[...h]);break}}};return{recordings:p,activeRecordingSessions:_,transcriptionJobs:x,audioFormats:X,transcriptionConfig:l,loading:y,error:R,globalRecordingActive:j,activeRecordingCount:U,waveformData:D,analysisData:W,getRecordingsForWorkOrder:ae,getActiveRecordingSession:f,hasActiveRecording:N,getTranscriptionStatus:I,getTotalDurationForWorkOrder:q,getTotalSizeForWorkOrder:B,getTranscribedCount:V,getWaveformData:m,getAnalysisData:n,loadRecordings:a,uploadRecording:d,updateRecording:C,deleteRecording:S,startRecordingSession:ee,stopRecordingSession:te,updateSessionDuration:ie,transcribeRecording:K,generateWaveform:async r=>{try{const s=await P.generateWaveform(r);return D.value.set(r,s),s}catch(s){return console.error("Failed to generate waveform:",s),null}},getAudioAnalysis:async r=>{try{const s=await P.getAudioAnalysis(r);return W.value.set(r,s),s}catch(s){return console.error("Failed to get audio analysis:",s),null}},convertAudioFormat:async(r,s)=>{try{y.value=!0,R.value=null;const c=await P.convertFormat(r,s),h=URL.createObjectURL(c),z=document.createElement("a");return z.href=h,z.download=`recording-${r}.${s}`,document.body.appendChild(z),z.click(),document.body.removeChild(z),URL.revokeObjectURL(h),!0}catch(c){throw R.value=c.message||"Failed to convert audio format",c}finally{y.value=!1}},searchRecordings:async(r,s={})=>{try{return y.value=!0,R.value=null,await P.searchByContent(r,s)}catch(c){throw R.value=c.message||"Failed to search recordings",c}finally{y.value=!1}},loadActiveSessions:async r=>{try{const s=await P.getActiveSessions(r);return s.forEach(c=>{_.value.set(c.userId,{...c,startTime:new Date(c.startTime),localDuration:0})}),U.value=_.value.size,j.value=U.value>0,s}catch(s){return console.error("Failed to load active recording sessions:",s),[]}},loadSupportedFormats:async()=>{try{const r=await P.getSupportedFormats();return X.value=r,r}catch(r){console.error("Failed to load supported audio formats:",r);const s=[{mimeType:"audio/webm",extension:"webm",maxSize:10485760},{mimeType:"audio/mp4",extension:"mp4",maxSize:10485760},{mimeType:"audio/ogg",extension:"ogg",maxSize:10485760}];return X.value=s,s}},loadTranscriptionConfig:async()=>{try{const r=await P.getTranscriptionConfig();return l.value=r,r}catch(r){console.error("Failed to load transcription config:",r);const s={enabled:!1,supportedLanguages:["en","es","fr"],maxFileSize:10485760,timeout:3e4};return l.value=s,s}},getStatistics:async r=>{try{return await P.getStatistics(r)}catch(s){throw R.value=s.message||"Failed to get recording statistics",s}},validateAudioFile:async r=>{try{return await P.validateAudioFile(r)}catch(s){throw R.value=s.message||"Failed to validate audio file",s}},bulkOperation:async(r,s,c={})=>{try{y.value=!0,R.value=null;const h=await P.bulkOperation(r,s,c);return s==="delete"&&r.forEach(z=>{for(const[oe,de]of p.value.entries()){const ke=de.filter(Se=>Se.id!==z);ke.length!==de.length&&p.value.set(oe,ke)}}),h}catch(h){throw R.value=h.message||"Failed to perform bulk operation",h}finally{y.value=!1}},clearWorkOrderData:r=>{p.value.delete(r)},clearUserSession:r=>{_.value.delete(r),U.value=_.value.size,j.value=U.value>0},clearError:()=>{R.value=null}}});function so(p={}){const{workOrderId:_=null,currentUser:x=null,autoTranscribe:X=!1,maxDuration:l=300,audioQuality:y="medium",enableVisualization:R=!0,enableServerSession:j=!1,autoSave:U=!1}=p,D=ro(),{loading:W,error:ae}=Je(D),f=A([]),N=A(!1),I=A(!1),q=A(!1),B=A(0),V=A(null),m=A(y),n=A(null);let a=null,d=[],C=null,S=null,ee=null,te=null,ie=null,K=null;const O=new Map,re={low:{sampleRate:8e3,bitRate:32e3},medium:{sampleRate:16e3,bitRate:64e3},high:{sampleRate:44100,bitRate:128e3}},ge=F(()=>f.value.reduce((t,o)=>t+(o.duration||0),0)),pe=F(()=>f.value.reduce((t,o)=>t+(o.size||0),0)),fe=F(()=>f.value.filter(t=>t.transcription).length),ye=F(()=>I.value&&!q.value),he=F(()=>x?D.hasActiveRecording(x.id):!1),we=F(()=>Ue(B.value)),xe=()=>{I.value=!!(navigator.mediaDevices&&navigator.mediaDevices.getUserMedia&&window.MediaRecorder&&MediaRecorder.isTypeSupported("audio/webm")||MediaRecorder.isTypeSupported("audio/mp4"))},be=async()=>{try{const t=await navigator.mediaDevices.getUserMedia({audio:{sampleRate:M(),echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0}});return q.value=!1,t}catch(t){throw console.error("Error requesting microphone permission:",t),q.value=!0,t.name==="NotAllowedError"?new Error("Microphone permission denied. Please allow access and try again."):t.name==="NotFoundError"?new Error("No microphone found. Please connect a microphone and try again."):new Error("Failed to access microphone: "+t.message)}},M=()=>(re[m.value]||re.medium).sampleRate,i=()=>["audio/webm","audio/mp4","audio/ogg"].find(o=>MediaRecorder.isTypeSupported(o))||"audio/webm",b=async()=>{if(!(!I.value||N.value))try{const t=await be();if(!t)return;const o=i(),k={mimeType:o},T=re[m.value];T.bitRate&&MediaRecorder.isTypeSupported(`${o};codecs=opus`)&&(k.audioBitsPerSecond=T.bitRate),a=new MediaRecorder(t,k),d=[],a.ondataavailable=E=>{E.data.size>0&&d.push(E.data)},a.onstop=async()=>{try{const E=new Blob(d,{type:a.mimeType});await h(E)}catch(E){throw console.error("Error saving recording:",E),E}finally{t.getTracks().forEach(E=>E.stop()),c()}},a.onerror=E=>{throw console.error("MediaRecorder error:",E.error),L(),new Error("Recording failed: "+E.error.message)},R&&s(t),a.start(1e3),N.value=!0,C=Date.now(),S=setInterval(()=>{B.value=Math.floor((Date.now()-C)/1e3),B.value>=l&&L()},1e3),j&&x&&_&&await D.startRecordingSession(x.id,_,{quality:m.value,maxDuration:l})}catch(t){throw console.error("Error starting recording:",t),N.value=!1,B.value=0,t}},L=async()=>{if(!(!N.value||!a))try{N.value=!1,S&&(clearInterval(S),S=null),K&&(cancelAnimationFrame(K),K=null),a.state==="recording"&&a.stop(),j&&x&&await D.stopRecordingSession(x.id,{duration:B.value,quality:m.value})}catch(t){throw console.error("Error stopping recording:",t),t}finally{B.value=0}},H=()=>{a&&a.state==="recording"&&a.pause(),S&&(clearInterval(S),S=null)},r=()=>{a&&a.state==="paused"&&(a.resume(),S=setInterval(()=>{B.value=Math.floor((Date.now()-C)/1e3),B.value>=l&&L()},1e3))},s=t=>{if(n.value)try{ee=new(window.AudioContext||window.webkitAudioContext),te=ee.createAnalyser(),ie=ee.createMediaStreamSource(t),te.fftSize=256;const o=te.frequencyBinCount,k=new Uint8Array(o);ie.connect(te);const T=n.value,E=T.getContext("2d"),G=()=>{if(!N.value)return;K=requestAnimationFrame(G),te.getByteFrequencyData(k),E.fillStyle="rgb(249, 250, 251)",E.fillRect(0,0,T.width,T.height);const Y=T.width/o*2.5;let le,Z=0;for(let Te=0;Te{ee&&(ee.close(),ee=null),te=null,ie=null},h=async t=>{try{const o=URL.createObjectURL(t),k=B.value,T=new Audio(o);return new Promise((E,G)=>{T.onloadedmetadata=async()=>{try{const Y=T.duration||k,le={audioUrl:o,audioBlob:t,duration:Y,size:t.size,title:"",description:"",createdAt:new Date().toISOString(),user:x,mimeType:t.type,volume:1,transcription:null,transcriptionConfidence:0,waveformData:null,quality:m.value,sampleRate:M()};let Z;_?Z=await D.uploadRecording(_,{audioBlob:t,filename:`recording-${Date.now()}.${t.type.split("/")[1]||"webm"}`,...le}):Z={id:Date.now()+Math.random(),...le},f.value=[Z,...f.value],X&&Z.id&&Fe(Z.id),Z.id&&R&&D.generateWaveform(Z.id),E(Z)}catch(Y){G(Y)}},T.onerror=()=>{G(new Error("Failed to load audio metadata"))}})}catch(o){throw console.error("Error saving recording:",o),o}},z=async t=>{var E;if(console.log("deleteRecording called with index:",t,"recordings length:",(E=f.value)==null?void 0:E.length),!Re(f)||!Array.isArray(f.value))return console.error("Invalid recordings state"),!1;if(t<0||t>=f.value.length)return console.error("Index out of bounds:",t,"length:",f.value.length),!1;const o=f.value[t];if(!o)return console.error("No recording found at index:",t),!1;const k=o.title||`Recording ${t+1}`;if(!confirm(`Are you sure you want to delete "${k}"?`))return console.log("Delete cancelled by user"),!1;try{if(console.log("Deleting recording:",o.id,o.title),V.value===o.id&&Ve(o.id),o.id&&_)try{await D.deleteRecording(_,o.id),console.log("Deleted from server successfully")}catch(G){console.warn("Server delete failed, continuing with local delete:",G)}return o.audioUrl&&URL.revokeObjectURL(o.audioUrl),o.id&&O.delete(o.id),f.value.splice(t,1),console.log("Recording deleted successfully. New length:",f.value.length),!0}catch(G){return console.error("Error deleting recording:",G),alert("Failed to delete recording: "+G.message),!1}},oe=t=>{if(console.log("editRecording called with index:",t),!Re(f)){console.error("recordings is not a valid ref");return}if(!Array.isArray(f.value)){console.error("recordings.value is not an array:",f.value);return}if(t<0||t>=f.value.length){console.error("Index out of bounds:",t,"length:",f.value.length);return}const o=f.value[t];if(!o){console.error("No recording found at index:",t);return}console.log("Setting edit mode for recording:",o.id,o.title);try{o.editing=!0,o.editTitle=o.title||"",o.editDescription=o.description||"",console.log("Edit mode set, recording.editing:",o.editing)}catch(k){console.error("Error setting edit mode:",k)}},de=async t=>{if(console.log("saveRecordingEdit called with index:",t),!Re(f)||!Array.isArray(f.value)){console.error("Invalid recordings state");return}if(t<0||t>=f.value.length){console.error("Index out of bounds:",t,"length:",f.value.length);return}const o=f.value[t];if(!o){console.error("No recording found at index:",t);return}try{const k={title:o.editTitle||"",description:o.editDescription||""};if(console.log("Saving recording edit:",k),o.id&&_)try{await D.updateRecording(_,o.id,k),console.log("Updated on server successfully")}catch(T){console.warn("Server update failed, continuing with local update:",T)}o.title=k.title,o.description=k.description,o.editing=!1,delete o.editTitle,delete o.editDescription,console.log("Recording edit saved successfully")}catch(k){console.error("Error saving recording edit:",k),alert("Failed to save changes: "+k.message)}},ke=t=>{if(console.log("cancelRecordingEdit called with index:",t),!Re(f)||!Array.isArray(f.value)){console.error("Invalid recordings state");return}if(t<0||t>=f.value.length){console.error("Index out of bounds:",t,"length:",f.value.length);return}const o=f.value[t];if(!o){console.error("No recording found at index:",t);return}try{o.editing=!1,delete o.editTitle,delete o.editDescription,console.log("Edit cancelled for recording")}catch(k){console.error("Error cancelling recording edit:",k)}},Se=async t=>{V.value===t.id?Ve(t.id):await Le(t)},Le=async t=>{try{O.forEach((k,T)=>{T!==t.id&&(k.pause(),k.currentTime=0)});let o=O.get(t.id);o||(o=new Audio(t.audioUrl),o.volume=t.volume||1,o.onended=()=>{V.value=null},o.onerror=()=>{console.error("Error playing audio"),V.value=null},O.set(t.id,o)),V.value=t.id,await o.play()}catch(o){throw console.error("Error starting playback:",o),V.value=null,o}},Ve=t=>{const o=O.get(t);o&&(o.pause(),o.currentTime=0),V.value=null},Ne=(t,o)=>{t.volume=parseFloat(o);const k=O.get(t.id);k&&(k.volume=t.volume)},je=(t,o)=>{const T=t.target.getBoundingClientRect(),G=(t.clientX-T.left)/T.width,Y=O.get(o.id);Y&&Y.duration&&(Y.currentTime=G*Y.duration)},Fe=async t=>{try{if(!t)return;await D.transcribeRecording(t,{language:"auto",enablePunctuation:!0,enableWordTimestamps:!1})}catch(o){throw console.error("Error starting transcription:",o),o}},qe=t=>{var k,T;if(!t.audioUrl)return;const o=document.createElement("a");o.href=t.audioUrl,o.download=`${t.title||"recording"}-${((k=t.createdAt)==null?void 0:k.split("T")[0])||"unknown"}.${((T=t.mimeType)==null?void 0:T.split("/")[1])||"webm"}`,document.body.appendChild(o),o.click(),document.body.removeChild(o)},Ue=t=>{if(!t||t<0)return"0:00";const o=Math.floor(t/60),k=Math.floor(t%60);return`${o}:${k.toString().padStart(2,"0")}`},Oe=t=>{if(!t)return"0 B";const o=["B","KB","MB","GB"],k=Math.floor(Math.log(t)/Math.log(1024));return`${Math.round(t/Math.pow(1024,k)*100)/100} ${o[k]}`},Qe=t=>t?new Date(t).toLocaleString("en-US",{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",hour12:!0}):"Unknown",$e=async()=>{if(!_)return[];try{const t=await D.loadRecordings(_);return f.value=t.map(o=>({...o,editing:!1})),f.value}catch(t){throw console.error("Error loading recordings:",t),t}},Ie=()=>{if(_)return $e()};ue(n,t=>{},{immediate:!0});const Be=()=>{N.value&&L(),S&&(clearInterval(S),S=null),K&&(cancelAnimationFrame(K),K=null),c(),O.forEach(t=>{t.pause()}),O.clear(),f.value.forEach(t=>{t.audioUrl&&URL.revokeObjectURL(t.audioUrl)})};return ze(()=>{xe(),_&&$e(),D.loadSupportedFormats(),D.loadTranscriptionConfig()}),Xe(Be),{recordings:f,isRecording:N,isSupported:I,needsPermission:q,recordingDuration:B,playingId:V,currentAudioQuality:m,waveformCanvas:n,loading:W,error:ae,totalDuration:ge,totalSize:pe,transcribedCount:fe,canRecord:ye,hasActiveRecording:he,currentDurationFormatted:we,startRecording:b,stopRecording:L,pauseRecording:H,resumeRecording:r,deleteRecording:z,editRecording:oe,saveRecordingEdit:de,cancelRecordingEdit:ke,downloadRecording:qe,togglePlayback:Se,updateVolume:Ne,seekToPosition:je,transcribeRecording:Fe,loadRecordings:$e,refreshRecordings:Ie,formatDuration:Ue,formatFileSize:Oe,formatDateTime:Qe,cleanup:Be}}const no={class:"audio-recorder"},io={class:"flex items-center justify-between mb-4"},lo={key:0,class:"text-sm text-gray-500"},co={class:"mb-6 p-4 border border-gray-200 rounded-lg"},uo={class:"flex items-center justify-between mb-4"},vo={class:"flex items-center space-x-4"},mo={key:0,class:"w-6 h-6",fill:"currentColor",viewBox:"0 0 24 24"},go={key:1,class:"w-6 h-6 bg-current rounded-full animate-pulse"},po={class:"ml-2"},fo={key:2,class:"absolute -top-1 -right-1 w-3 h-3 bg-red-500 rounded-full animate-ping"},yo={key:0,class:"flex items-center text-lg font-mono text-red-600"},ho={key:0,class:"flex items-center space-x-2"},wo=["disabled"],xo={key:0,class:"mb-4"},bo={key:1,class:"p-3 bg-red-50 border border-red-200 rounded"},ko={key:2,class:"p-3 bg-yellow-50 border border-yellow-200 rounded"},Ro={key:0,class:"space-y-3"},_o={class:"flex items-center justify-between"},Co={class:"flex items-center space-x-4 flex-1"},So={key:0,class:"w-4 h-4",fill:"currentColor",viewBox:"0 0 24 24"},$o={key:1,class:"w-4 h-4",fill:"currentColor",viewBox:"0 0 24 24"},To={class:"flex-1"},Do={class:"flex items-center space-x-2"},Mo={class:"font-medium text-gray-900"},Ao={class:"flex items-center space-x-4 mt-1 text-sm text-gray-500"},Eo={key:0,class:"text-blue-600"},zo={key:1,class:"flex items-center"},Vo={key:0,class:"mt-2"},Fo=["onClick"],Uo={key:1,class:"mt-2 p-2 bg-gray-50 rounded text-sm"},Bo={class:"flex items-center justify-between mb-1"},Po={class:"text-gray-700"},Lo={key:2,class:"mt-2"},No={class:"flex space-x-2 mt-2"},jo={key:3,class:"mt-2 text-sm text-gray-600"},qo={class:"flex items-center space-x-2"},Oo={class:"flex items-center space-x-1"},Qo=["value","onInput"],Io={key:1,class:"text-center py-8 text-gray-500"},Ho={key:2,class:"mt-6 p-4 bg-gray-50 rounded-lg"},Wo={class:"grid grid-cols-2 md:grid-cols-4 gap-4 text-sm"},Ko={class:"font-medium text-gray-900"},Go={class:"font-medium text-gray-900"},Jo={class:"font-medium text-gray-900"},Xo={class:"font-medium text-gray-900"},Yo={__name:"AudioRecorder",props:{modelValue:{type:Array,default:()=>[]},currentUser:{type:Object,default:null},disabled:{type:Boolean,default:!1},autoTranscribe:{type:Boolean,default:!1},maxDuration:{type:Number,default:300},workOrderId:{type:[String,Number],default:null},audioQuality:{type:String,default:"medium"},enableVisualization:{type:Boolean,default:!0},enableServerSession:{type:Boolean,default:!1},autoSave:{type:Boolean,default:!1}},emits:["update:modelValue","recording-saved"],setup(p,{emit:_}){const x=p,X=_,{recordings:l,isRecording:y,isSupported:R,needsPermission:j,playingId:U,currentAudioQuality:D,waveformCanvas:W,totalDuration:ae,totalSize:f,transcribedCount:N,canRecord:I,currentDurationFormatted:q,startRecording:B,stopRecording:V,deleteRecording:m,editRecording:n,saveRecordingEdit:a,cancelRecordingEdit:d,downloadRecording:C,togglePlayback:S,updateVolume:ee,seekToPosition:te,formatDuration:ie,formatFileSize:K,formatDateTime:O}=so({workOrderId:x.workOrderId,currentUser:x.currentUser,autoTranscribe:x.autoTranscribe,maxDuration:x.maxDuration,audioQuality:x.audioQuality,enableVisualization:x.enableVisualization,enableServerSession:x.enableServerSession,autoSave:x.autoSave}),re=A(x.audioQuality),ge=async()=>{try{y.value?await V():await B()}catch(M){console.error("Error toggling recording:",M)}},pe=()=>{D.value=re.value},fe=M=>{try{console.log("handleEditRecording called with index:",M),typeof n=="function"?n(M):console.error("editRecording function not available")}catch(i){console.error("Error in handleEditRecording:",i)}},ye=async M=>{try{console.log("handleDeleteRecording called with index:",M),typeof m=="function"?await m(M):console.error("deleteRecording function not available")}catch(i){console.error("Error in handleDeleteRecording:",i)}},he=async M=>{try{console.log("handleSaveRecordingEdit called with index:",M),typeof a=="function"?await a(M):console.error("saveRecordingEdit function not available")}catch(i){console.error("Error in handleSaveRecordingEdit:",i)}},we=M=>{try{console.log("handleCancelRecordingEdit called with index:",M),typeof d=="function"?d(M):console.error("cancelRecordingEdit function not available")}catch(i){console.error("Error in handleCancelRecordingEdit:",i)}},xe=()=>{X("update:modelValue",l.value)},be=()=>{x.modelValue&&x.modelValue.length>0&&(console.log("Initializing recordings from modelValue:",x.modelValue.length),l.value=[...x.modelValue])};return ue(()=>x.modelValue,M=>{M&&Array.isArray(M)&&(M.length!==l.value.length||M.some((b,L)=>{const H=l.value[L];return!H||b.id!==H.id}))&&(console.log("External modelValue change detected, updating recordings:",M.length),l.value=[...M])},{immediate:!1}),ue(l,()=>{console.log("Recordings changed internally, emitting update:",l.value.length),xe()},{deep:!0}),ze(()=>{be()}),(M,i)=>(u(),g("div",no,[e("div",io,[i[1]||(i[1]=e("div",null,[e("h3",{class:"text-lg font-medium text-gray-900"},"Audio Notes"),e("p",{class:"text-sm text-gray-600"},"Record voice notes for work order documentation")],-1)),v(l).length>0?(u(),g("div",lo,w(v(l).length)+" recording"+w(v(l).length!==1?"s":""),1)):$("",!0)]),e("div",co,[e("div",uo,[e("div",vo,[Q(v(ne),{variant:v(y)?"danger":"primary",size:"lg",onClick:ge,disabled:p.disabled||!v(I),class:"relative"},{default:J(()=>[v(y)?(u(),g("div",go)):(u(),g("svg",mo,i[2]||(i[2]=[e("path",{d:"M12 14c1.66 0 2.99-1.34 2.99-3L15 5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3zm5.3-3c0 3-2.54 5.1-5.3 5.1S6.7 14 6.7 11H5c0 3.41 2.72 6.23 6 6.72V21h2v-3.28c3.28-.48 6-3.3 6-6.72h-1.7z"},null,-1)]))),e("span",po,w(v(y)?"Stop Recording":"Start Recording"),1),v(y)?(u(),g("div",fo)):$("",!0)]),_:1},8,["variant","disabled"]),v(y)?(u(),g("div",yo,[i[3]||(i[3]=e("svg",{class:"w-4 h-4 mr-2",fill:"currentColor",viewBox:"0 0 24 24"},[e("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"})],-1)),se(" "+w(v(q)),1)])):$("",!0)]),v(y)?$("",!0):(u(),g("div",ho,[i[5]||(i[5]=e("label",{class:"text-sm text-gray-600"},"Quality:",-1)),Ye(e("select",{"onUpdate:modelValue":i[0]||(i[0]=b=>re.value=b),class:"text-sm border border-gray-300 rounded px-2 py-1",disabled:v(y),onChange:pe},i[4]||(i[4]=[e("option",{value:"low"},"Low (8kHz)",-1),e("option",{value:"medium"},"Medium (16kHz)",-1),e("option",{value:"high"},"High (44kHz)",-1)]),40,wo),[[Ze,re.value]])]))]),v(y)?(u(),g("div",xo,[e("canvas",{ref_key:"waveformCanvas",ref:W,class:"w-full h-16 border border-gray-300 rounded bg-gray-50",width:"600",height:"64"},null,512),i[6]||(i[6]=e("div",{class:"text-xs text-gray-500 text-center mt-1"}," Live audio visualization ",-1))])):$("",!0),v(R)?$("",!0):(u(),g("div",bo,i[7]||(i[7]=[Pe('

Audio recording is not supported in your browser. Please use a modern browser with MediaRecorder API support.

',1)]))),v(j)?(u(),g("div",ko,i[8]||(i[8]=[Pe('

Microphone access is required for audio recording. Please allow microphone permissions when prompted.

',1)]))):$("",!0)]),v(l).length>0?(u(),g("div",Ro,[i[19]||(i[19]=e("h4",{class:"text-sm font-medium text-gray-900"},"Recorded Audio Notes",-1)),(u(!0),g(_e,null,Ce(v(l),(b,L)=>(u(),g("div",{key:b.id||L,class:"recording-item border border-gray-200 rounded-lg p-4 transition-all duration-200 hover:border-gray-300"},[e("div",_o,[e("div",Co,[Q(v(ne),{variant:v(U)===b.id?"primary":"outline",size:"sm",onClick:()=>v(S)(b),disabled:p.disabled},{default:J(()=>[v(U)!==b.id?(u(),g("svg",So,i[9]||(i[9]=[e("path",{d:"M8 5v14l11-7z"},null,-1)]))):(u(),g("svg",$o,i[10]||(i[10]=[e("path",{d:"M6 19h4V5H6v14zm8-14v14h4V5h-4z"},null,-1)])))]),_:2},1032,["variant","onClick","disabled"]),e("div",To,[e("div",Do,[e("h5",Mo,w(b.title||`Recording ${L+1}`),1),Q(v(Me),{variant:"secondary",size:"sm"},{default:J(()=>[se(w(v(K)(b.size||0)),1)]),_:2},1024),Q(v(Me),{variant:"info",size:"sm"},{default:J(()=>[se(w(v(ie)(b.duration||0)),1)]),_:2},1024)]),e("div",Ao,[e("span",null,w(v(O)(b.createdAt)),1),b.transcription?(u(),g("span",Eo,"Transcribed")):$("",!0),b.user?(u(),g("span",zo,[i[11]||(i[11]=e("svg",{class:"w-3 h-3 mr-1",fill:"currentColor",viewBox:"0 0 24 24"},[e("path",{d:"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"})],-1)),se(" "+w(b.user.firstName)+" "+w(b.user.lastName),1)])):$("",!0)]),b.waveformData?(u(),g("div",Vo,[e("canvas",{ref_for:!0,ref:`waveform-${b.id}`,class:"w-full h-8 cursor-pointer",width:"400",height:"32",onClick:H=>v(te)(H,b)},null,8,Fo)])):$("",!0),b.transcription?(u(),g("div",Uo,[e("div",Bo,[i[12]||(i[12]=e("span",{class:"text-xs font-medium text-gray-600"},"TRANSCRIPTION",-1)),Q(v(Me),{variant:b.transcriptionConfidence>.8?"success":"warning",size:"sm"},{default:J(()=>[se(w(Math.round(b.transcriptionConfidence*100))+"% confidence ",1)]),_:2},1032,["variant"])]),e("p",Po,w(b.transcription),1)])):$("",!0),b.editing?(u(),g("div",Lo,[Q(v(me),{modelValue:b.editTitle,"onUpdate:modelValue":H=>b.editTitle=H,placeholder:"Recording title...",size:"sm",onKeyup:[Ae(()=>v(a)(L),["enter"]),Ae(()=>v(d)(L),["escape"])]},null,8,["modelValue","onUpdate:modelValue","onKeyup"]),Q(v(me),{modelValue:b.editDescription,"onUpdate:modelValue":H=>b.editDescription=H,type:"textarea",rows:"2",placeholder:"Add description...",class:"mt-2",size:"sm"},null,8,["modelValue","onUpdate:modelValue"]),e("div",No,[Q(v(ne),{variant:"primary",size:"sm",onClick:()=>he(L)},{default:J(()=>i[13]||(i[13]=[se(" Save ",-1)])),_:2,__:[13]},1032,["onClick"]),Q(v(ne),{variant:"outline",size:"sm",onClick:()=>we(L)},{default:J(()=>i[14]||(i[14]=[se(" Cancel ",-1)])),_:2,__:[14]},1032,["onClick"])])])):b.description?(u(),g("div",jo,w(b.description),1)):$("",!0)])]),e("div",qo,[e("div",Oo,[i[15]||(i[15]=e("svg",{class:"w-4 h-4 text-gray-400",fill:"currentColor",viewBox:"0 0 24 24"},[e("path",{d:"M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z"})],-1)),e("input",{type:"range",min:"0",max:"1",step:"0.1",value:b.volume||1,onInput:H=>v(ee)(b,H.target.value),class:"w-16 h-1"},null,40,Qo)]),p.disabled?$("",!0):(u(),ve(v(ne),{key:0,variant:"ghost",size:"sm",onClick:()=>fe(L),title:"Edit recording details"},{default:J(()=>i[16]||(i[16]=[e("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1)])),_:2,__:[16]},1032,["onClick"])),Q(v(ne),{variant:"ghost",size:"sm",onClick:()=>v(C)(b),title:"Download recording"},{default:J(()=>i[17]||(i[17]=[e("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1)])),_:2,__:[17]},1032,["onClick"]),p.disabled?$("",!0):(u(),ve(v(ne),{key:1,variant:"ghost",size:"sm",onClick:()=>ye(L),title:"Delete recording",class:"text-red-600 hover:text-red-800"},{default:J(()=>i[18]||(i[18]=[e("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1)])),_:2,__:[18]},1032,["onClick"]))])])]))),128))])):(u(),g("div",Io,i[20]||(i[20]=[e("svg",{class:"w-12 h-12 mx-auto mb-4 text-gray-300",fill:"currentColor",viewBox:"0 0 24 24"},[e("path",{d:"M12 14c1.66 0 2.99-1.34 2.99-3L15 5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3zm5.3-3c0 3-2.54 5.1-5.3 5.1S6.7 14 6.7 11H5c0 3.41 2.72 6.23 6 6.72V21h2v-3.28c3.28-.48 6-3.3 6-6.72h-1.7z"})],-1),e("p",{class:"text-sm"},"No audio recordings",-1),e("p",{class:"text-xs text-gray-400 mt-1"},'Click "Start Recording" to add voice notes',-1)]))),v(l).length>0?(u(),g("div",Ho,[i[25]||(i[25]=e("h4",{class:"text-sm font-medium text-gray-900 mb-3"},"Recording Summary",-1)),e("div",Wo,[e("div",null,[e("div",Ko,w(v(l).length),1),i[21]||(i[21]=e("div",{class:"text-gray-500"},"Total Recordings",-1))]),e("div",null,[e("div",Go,w(v(ie)(v(ae))),1),i[22]||(i[22]=e("div",{class:"text-gray-500"},"Total Duration",-1))]),e("div",null,[e("div",Jo,w(v(K)(v(f))),1),i[23]||(i[23]=e("div",{class:"text-gray-500"},"Total Size",-1))]),e("div",null,[e("div",Xo,w(v(N)),1),i[24]||(i[24]=e("div",{class:"text-gray-500"},"Transcribed",-1))])])])):$("",!0)]))}},na=Ee(Yo,[["__scopeId","data-v-d8ad1d92"]]);export{na as A,sa as P,ra as T}; diff --git a/frontend/dist/assets/BasicTest-BWCbZv-Z.js b/frontend/dist/assets/BasicTest-TErwUzKT.js similarity index 95% rename from frontend/dist/assets/BasicTest-BWCbZv-Z.js rename to frontend/dist/assets/BasicTest-TErwUzKT.js index 7f201e10..239eae7e 100644 --- a/frontend/dist/assets/BasicTest-BWCbZv-Z.js +++ b/frontend/dist/assets/BasicTest-TErwUzKT.js @@ -1 +1 @@ -import{r as o,a,b as t,aS as i,t as l,g as r}from"./index-BUdRbiwj.js";const d={class:"min-h-screen bg-gray-50 py-8"},c={class:"max-w-4xl mx-auto px-4"},p={class:"bg-white p-6 rounded-lg shadow mb-6"},x={class:"text-gray-600 mb-4"},m={__name:"BasicTest",setup(u){const s=o(0);return console.log("BasicTest component loaded successfully"),console.log("Vue ref working:",s.value),(b,e)=>(r(),a("div",d,[t("div",c,[e[3]||(e[3]=i('

Basic Setup Test

✅ TailwindCSS Test

If you can see this styled content, TailwindCSS is working correctly.

100
300
500
700
900
',2)),t("div",p,[e[2]||(e[2]=t("h2",{class:"text-xl font-semibold text-gray-800 mb-4"},"✅ Vue 3 Reactivity Test",-1)),t("p",x,"Counter: "+l(s.value),1),t("button",{onClick:e[0]||(e[0]=n=>s.value++),class:"bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded mr-2"}," Increment "),t("button",{onClick:e[1]||(e[1]=n=>s.value=0),class:"bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded"}," Reset ")]),e[4]||(e[4]=i('

📦 Import Status

Vue:✅ Working
TailwindCSS:✅ Working
Theme Colors:✅ Working

🚀 Next Steps

Basic setup is working! Now we can gradually add Frappe UI components.

1. ✅ Vue 3 + Vite setup

2. ✅ TailwindCSS configuration

3. ✅ Custom color theme

4. 🔄 Add Frappe UI components (next)

',2))])]))}};export{m as default}; +import{r as o,a,b as t,aT as i,t as l,g as r}from"./index-QAlcqU00.js";const d={class:"min-h-screen bg-gray-50 py-8"},c={class:"max-w-4xl mx-auto px-4"},p={class:"bg-white p-6 rounded-lg shadow mb-6"},x={class:"text-gray-600 mb-4"},m={__name:"BasicTest",setup(u){const s=o(0);return console.log("BasicTest component loaded successfully"),console.log("Vue ref working:",s.value),(b,e)=>(r(),a("div",d,[t("div",c,[e[3]||(e[3]=i('

Basic Setup Test

✅ TailwindCSS Test

If you can see this styled content, TailwindCSS is working correctly.

100
300
500
700
900
',2)),t("div",p,[e[2]||(e[2]=t("h2",{class:"text-xl font-semibold text-gray-800 mb-4"},"✅ Vue 3 Reactivity Test",-1)),t("p",x,"Counter: "+l(s.value),1),t("button",{onClick:e[0]||(e[0]=n=>s.value++),class:"bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded mr-2"}," Increment "),t("button",{onClick:e[1]||(e[1]=n=>s.value=0),class:"bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded"}," Reset ")]),e[4]||(e[4]=i('

📦 Import Status

Vue:✅ Working
TailwindCSS:✅ Working
Theme Colors:✅ Working

🚀 Next Steps

Basic setup is working! Now we can gradually add Frappe UI components.

1. ✅ Vue 3 + Vite setup

2. ✅ TailwindCSS configuration

3. ✅ Custom color theme

4. 🔄 Add Frappe UI components (next)

',2))])]))}};export{m as default}; diff --git a/frontend/dist/assets/CategoriesIndexView-DYtaWxTm.js b/frontend/dist/assets/CategoriesIndexView-CjHjTbKf.js similarity index 91% rename from frontend/dist/assets/CategoriesIndexView-DYtaWxTm.js rename to frontend/dist/assets/CategoriesIndexView-CjHjTbKf.js index 995670b2..f7063c27 100644 --- a/frontend/dist/assets/CategoriesIndexView-DYtaWxTm.js +++ b/frontend/dist/assets/CategoriesIndexView-CjHjTbKf.js @@ -1 +1 @@ -import{u as F,C as n,a as c,b as s,c as T}from"./useCategoryDisplay-DheH2kkf.js";import{r as w,c as j,o as H,i as L,w as d,f as z,g as h,b as e,a as x,af as I,aQ as V,d as v,Q as N,t as p,e as k,F as E,k as R,l as U}from"./index-BUdRbiwj.js";import{F as Y,a as W}from"./FPPageHeader-CTG2L28r.js";const G={class:"p-6"},K={class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6"},Q={class:"bg-white rounded-lg shadow-sm border border-gray-200 hover:shadow-md hover:border-primary-300 transition-all duration-200 cursor-pointer"},$={class:"p-6"},J={class:"flex items-center mb-4"},q={class:"w-6 h-6",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},X=["d"],Z={class:"text-lg font-semibold text-gray-900"},ee={class:"text-sm text-gray-500"},te={key:0,class:"grid grid-cols-3 gap-4 mt-4 pt-4 border-t border-gray-100"},se={class:"text-center"},oe={class:"text-lg font-semibold text-gray-900"},ae={class:"text-center"},ie={class:"text-lg font-semibold text-green-600"},re={class:"text-center"},le={class:"text-lg font-semibold text-gray-400"},ne={key:1,class:"grid grid-cols-3 gap-4 mt-4 pt-4 border-t border-gray-100"},ce={class:"mt-8 bg-white rounded-lg shadow-sm border border-gray-200 p-6"},de={class:"grid grid-cols-1 md:grid-cols-3 gap-4"},ve={__name:"CategoriesIndexView",setup(me){const m=F(),{getCategoryStats:S}=T(),{addNotification:r}=U(),_=w(!1),y=w(!1),C=w(!1),g=[{type:s.WORK_ORDER,label:c[s.WORK_ORDER],description:n[s.WORK_ORDER],to:"/categories/work-order-categories",color:"#3B82F6",iconPath:"M9 5H7a2 2 0 00-2 2v10a2 2 0 002 2h8a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01"},{type:s.ASSET,label:c[s.ASSET],description:n[s.ASSET],to:"/categories/asset-categories",color:"#10B981",iconPath:"M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4"},{type:s.PART,label:c[s.PART],description:n[s.PART],to:"/categories/part-categories",color:"#F59E0B",iconPath:"M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4"},{type:s.COST,label:c[s.COST],description:n[s.COST],to:"/categories/cost-categories",color:"#EF4444",iconPath:"M12 8c-1.657 0-3 .895-3 2s1.343 2 3 2 3 .895 3 2-1.343 2-3 2m0-8c1.11 0 2.08.402 2.599 1M12 8V7m0 1v8m0 0v1m0-1c-1.11 0-2.08-.402-2.599-1"},{type:s.METER,label:c[s.METER],description:n[s.METER],to:"/categories/meter-categories",color:"#8B5CF6",iconPath:"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"},{type:s.PURCHASE_ORDER,label:c[s.PURCHASE_ORDER],description:n[s.PURCHASE_ORDER],to:"/categories/purchase-order-categories",color:"#06B6D4",iconPath:"M3 3h2l.4 2M7 13h10l4-8H5.4m1.6 8L5 3H3m4 10v6a1 1 0 001 1h8a1 1 0 001-1v-6m-9 0h10"}],f=j(()=>{const o={};return g.forEach(t=>{const l=m.getCategoriesByType(t.type);o[t.type]=S(l)}),o}),M=async()=>{_.value=!0;try{const o=g.map(t=>m.initializeWithDefaults(t.type));await Promise.allSettled(o),r({type:"success",title:"Default Categories Initialized",message:"Default categories have been created for all category types"})}catch(o){r({type:"error",title:"Initialization Failed",message:o.message||"Failed to initialize default categories"})}finally{_.value=!1}},O=async()=>{y.value=!0;try{const o=g.map(t=>m.refreshCategories(t.type));await Promise.allSettled(o),r({type:"info",title:"Categories Refreshed",message:"All categories have been refreshed from the server"})}catch(o){r({type:"error",title:"Refresh Failed",message:o.message||"Failed to refresh categories"})}finally{y.value=!1}},P=async()=>{C.value=!0;try{const o={};g.forEach(b=>{const B=m.getCategoriesByType(b.type);o[b.label]=B.map(i=>({Name:i.name,Description:i.description||"",Type:b.label,Color:i.color,Icon:i.icon,Status:i.isActive?"Active":"Inactive","Sort Order":i.sortOrder,"Created At":new Date(i.createdAt).toLocaleDateString(),"Updated At":new Date(i.updatedAt).toLocaleDateString()}))});const l=`all_categories_${new Date().toISOString().split("T")[0]}.json`,a=JSON.stringify(o,null,2),D=new Blob([a],{type:"application/json"}),A=window.URL.createObjectURL(D),u=document.createElement("a");u.href=A,u.download=l,document.body.appendChild(u),u.click(),document.body.removeChild(u),window.URL.revokeObjectURL(A),r({type:"success",title:"Export Complete",message:`All categories exported as ${l}`})}catch(o){r({type:"error",title:"Export Failed",message:o.message||"Failed to export categories"})}finally{C.value=!1}};return H(async()=>{await m.fetchAllCategories()}),(o,t)=>{const l=z("router-link");return h(),L(Y,null,{header:d(()=>[v(W,{title:"Categories Management",description:"Organize and manage different types of categories for your CMMS system",breadcrumbs:[{text:"Settings",to:"/settings"},{text:"Categories",to:null}]})]),default:d(()=>[e("div",G,[e("div",K,[(h(),x(I,null,V(g,a=>v(l,{key:a.type,to:a.to,class:"block"},{default:d(()=>[e("div",Q,[e("div",$,[e("div",J,[e("div",{class:"w-12 h-12 rounded-lg flex items-center justify-center text-white mr-4",style:N({backgroundColor:a.color})},[(h(),x("svg",q,[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:a.iconPath},null,8,X)]))],4),e("div",null,[e("h3",Z,p(a.label),1),e("p",ee,p(a.description),1)])]),f.value[a.type]?(h(),x("div",te,[e("div",se,[e("div",oe,p(f.value[a.type].total),1),t[0]||(t[0]=e("div",{class:"text-xs text-gray-500"},"Total",-1))]),e("div",ae,[e("div",ie,p(f.value[a.type].active),1),t[1]||(t[1]=e("div",{class:"text-xs text-gray-500"},"Active",-1))]),e("div",re,[e("div",le,p(f.value[a.type].inactive),1),t[2]||(t[2]=e("div",{class:"text-xs text-gray-500"},"Inactive",-1))])])):(h(),x("div",ne,t[3]||(t[3]=[e("div",{class:"text-center"},[e("div",{class:"w-8 h-6 bg-gray-200 rounded animate-pulse mx-auto"}),e("div",{class:"text-xs text-gray-500 mt-1"},"Total")],-1),e("div",{class:"text-center"},[e("div",{class:"w-8 h-6 bg-gray-200 rounded animate-pulse mx-auto"}),e("div",{class:"text-xs text-gray-500 mt-1"},"Active")],-1),e("div",{class:"text-center"},[e("div",{class:"w-8 h-6 bg-gray-200 rounded animate-pulse mx-auto"}),e("div",{class:"text-xs text-gray-500 mt-1"},"Inactive")],-1)])))])])]),_:2},1032,["to"])),64))]),e("div",ce,[t[7]||(t[7]=e("h3",{class:"text-lg font-semibold text-gray-900 mb-4"},"Quick Actions",-1)),e("div",de,[v(k(E),{variant:"outline",onClick:M,loading:_.value,class:"justify-center"},{default:d(()=>t[4]||(t[4]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4-4m0 0L8 8m4-4v12"})],-1),R(" Initialize All Defaults ",-1)])),_:1,__:[4]},8,["loading"]),v(k(E),{variant:"outline",onClick:O,loading:y.value,class:"justify-center"},{default:d(()=>t[5]||(t[5]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),R(" Refresh All Categories ",-1)])),_:1,__:[5]},8,["loading"]),v(k(E),{variant:"outline",onClick:P,loading:C.value,class:"justify-center"},{default:d(()=>t[6]||(t[6]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1),R(" Export All Categories ",-1)])),_:1,__:[6]},8,["loading"])])])])]),_:1})}}};export{ve as default}; +import{u as F,C as n,a as c,b as s,c as T}from"./useCategoryDisplay-DtoUGbrc.js";import{r as w,c as j,o as H,i as L,w as d,f as z,g as h,b as e,a as x,af as I,aR as V,d as v,Q as N,t as p,e as R,F as k,k as E,l as U}from"./index-QAlcqU00.js";import{F as Y,a as W}from"./FPPageHeader-CFIwZZgQ.js";const G={class:"p-6"},K={class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6"},Q={class:"bg-white rounded-lg shadow-sm border border-gray-200 hover:shadow-md hover:border-primary-300 transition-all duration-200 cursor-pointer"},$={class:"p-6"},J={class:"flex items-center mb-4"},q={class:"w-6 h-6",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},X=["d"],Z={class:"text-lg font-semibold text-gray-900"},ee={class:"text-sm text-gray-500"},te={key:0,class:"grid grid-cols-3 gap-4 mt-4 pt-4 border-t border-gray-100"},se={class:"text-center"},oe={class:"text-lg font-semibold text-gray-900"},ae={class:"text-center"},ie={class:"text-lg font-semibold text-green-600"},re={class:"text-center"},le={class:"text-lg font-semibold text-gray-400"},ne={key:1,class:"grid grid-cols-3 gap-4 mt-4 pt-4 border-t border-gray-100"},ce={class:"mt-8 bg-white rounded-lg shadow-sm border border-gray-200 p-6"},de={class:"grid grid-cols-1 md:grid-cols-3 gap-4"},ve={__name:"CategoriesIndexView",setup(me){const m=F(),{getCategoryStats:S}=T(),{addNotification:r}=U(),_=w(!1),y=w(!1),C=w(!1),g=[{type:s.WORK_ORDER,label:c[s.WORK_ORDER],description:n[s.WORK_ORDER],to:"/categories/work-order-categories",color:"#3B82F6",iconPath:"M9 5H7a2 2 0 00-2 2v10a2 2 0 002 2h8a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01"},{type:s.ASSET,label:c[s.ASSET],description:n[s.ASSET],to:"/categories/asset-categories",color:"#10B981",iconPath:"M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4"},{type:s.PART,label:c[s.PART],description:n[s.PART],to:"/categories/part-categories",color:"#F59E0B",iconPath:"M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4"},{type:s.COST,label:c[s.COST],description:n[s.COST],to:"/categories/cost-categories",color:"#EF4444",iconPath:"M12 8c-1.657 0-3 .895-3 2s1.343 2 3 2 3 .895 3 2-1.343 2-3 2m0-8c1.11 0 2.08.402 2.599 1M12 8V7m0 1v8m0 0v1m0-1c-1.11 0-2.08-.402-2.599-1"},{type:s.METER,label:c[s.METER],description:n[s.METER],to:"/categories/meter-categories",color:"#8B5CF6",iconPath:"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"},{type:s.PURCHASE_ORDER,label:c[s.PURCHASE_ORDER],description:n[s.PURCHASE_ORDER],to:"/categories/purchase-order-categories",color:"#06B6D4",iconPath:"M3 3h2l.4 2M7 13h10l4-8H5.4m1.6 8L5 3H3m4 10v6a1 1 0 001 1h8a1 1 0 001-1v-6m-9 0h10"}],f=j(()=>{const o={};return g.forEach(t=>{const l=m.getCategoriesByType(t.type);o[t.type]=S(l)}),o}),M=async()=>{_.value=!0;try{const o=g.map(t=>m.initializeWithDefaults(t.type));await Promise.allSettled(o),r({type:"success",title:"Default Categories Initialized",message:"Default categories have been created for all category types"})}catch(o){r({type:"error",title:"Initialization Failed",message:o.message||"Failed to initialize default categories"})}finally{_.value=!1}},O=async()=>{y.value=!0;try{const o=g.map(t=>m.refreshCategories(t.type));await Promise.allSettled(o),r({type:"info",title:"Categories Refreshed",message:"All categories have been refreshed from the server"})}catch(o){r({type:"error",title:"Refresh Failed",message:o.message||"Failed to refresh categories"})}finally{y.value=!1}},P=async()=>{C.value=!0;try{const o={};g.forEach(b=>{const B=m.getCategoriesByType(b.type);o[b.label]=B.map(i=>({Name:i.name,Description:i.description||"",Type:b.label,Color:i.color,Icon:i.icon,Status:i.isActive?"Active":"Inactive","Sort Order":i.sortOrder,"Created At":new Date(i.createdAt).toLocaleDateString(),"Updated At":new Date(i.updatedAt).toLocaleDateString()}))});const l=`all_categories_${new Date().toISOString().split("T")[0]}.json`,a=JSON.stringify(o,null,2),D=new Blob([a],{type:"application/json"}),A=window.URL.createObjectURL(D),u=document.createElement("a");u.href=A,u.download=l,document.body.appendChild(u),u.click(),document.body.removeChild(u),window.URL.revokeObjectURL(A),r({type:"success",title:"Export Complete",message:`All categories exported as ${l}`})}catch(o){r({type:"error",title:"Export Failed",message:o.message||"Failed to export categories"})}finally{C.value=!1}};return H(async()=>{await m.fetchAllCategories()}),(o,t)=>{const l=z("router-link");return h(),L(Y,null,{header:d(()=>[v(W,{title:"Categories Management",description:"Organize and manage different types of categories for your CMMS system",breadcrumbs:[{text:"Settings",to:"/settings"},{text:"Categories",to:null}]})]),default:d(()=>[e("div",G,[e("div",K,[(h(),x(I,null,V(g,a=>v(l,{key:a.type,to:a.to,class:"block"},{default:d(()=>[e("div",Q,[e("div",$,[e("div",J,[e("div",{class:"w-12 h-12 rounded-lg flex items-center justify-center text-white mr-4",style:N({backgroundColor:a.color})},[(h(),x("svg",q,[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:a.iconPath},null,8,X)]))],4),e("div",null,[e("h3",Z,p(a.label),1),e("p",ee,p(a.description),1)])]),f.value[a.type]?(h(),x("div",te,[e("div",se,[e("div",oe,p(f.value[a.type].total),1),t[0]||(t[0]=e("div",{class:"text-xs text-gray-500"},"Total",-1))]),e("div",ae,[e("div",ie,p(f.value[a.type].active),1),t[1]||(t[1]=e("div",{class:"text-xs text-gray-500"},"Active",-1))]),e("div",re,[e("div",le,p(f.value[a.type].inactive),1),t[2]||(t[2]=e("div",{class:"text-xs text-gray-500"},"Inactive",-1))])])):(h(),x("div",ne,t[3]||(t[3]=[e("div",{class:"text-center"},[e("div",{class:"w-8 h-6 bg-gray-200 rounded animate-pulse mx-auto"}),e("div",{class:"text-xs text-gray-500 mt-1"},"Total")],-1),e("div",{class:"text-center"},[e("div",{class:"w-8 h-6 bg-gray-200 rounded animate-pulse mx-auto"}),e("div",{class:"text-xs text-gray-500 mt-1"},"Active")],-1),e("div",{class:"text-center"},[e("div",{class:"w-8 h-6 bg-gray-200 rounded animate-pulse mx-auto"}),e("div",{class:"text-xs text-gray-500 mt-1"},"Inactive")],-1)])))])])]),_:2},1032,["to"])),64))]),e("div",ce,[t[7]||(t[7]=e("h3",{class:"text-lg font-semibold text-gray-900 mb-4"},"Quick Actions",-1)),e("div",de,[v(R(k),{variant:"outline",onClick:M,loading:_.value,class:"justify-center"},{default:d(()=>t[4]||(t[4]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4-4m0 0L8 8m4-4v12"})],-1),E(" Initialize All Defaults ",-1)])),_:1,__:[4]},8,["loading"]),v(R(k),{variant:"outline",onClick:O,loading:y.value,class:"justify-center"},{default:d(()=>t[5]||(t[5]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),E(" Refresh All Categories ",-1)])),_:1,__:[5]},8,["loading"]),v(R(k),{variant:"outline",onClick:P,loading:C.value,class:"justify-center"},{default:d(()=>t[6]||(t[6]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1),E(" Export All Categories ",-1)])),_:1,__:[6]},8,["loading"])])])])]),_:1})}}};export{ve as default}; diff --git a/frontend/dist/assets/CategoriesListView-BP98cpP_.js b/frontend/dist/assets/CategoriesListView-BrLbxiBd.js similarity index 92% rename from frontend/dist/assets/CategoriesListView-BP98cpP_.js rename to frontend/dist/assets/CategoriesListView-BrLbxiBd.js index 2ee88c29..c016a72e 100644 --- a/frontend/dist/assets/CategoriesListView-BP98cpP_.js +++ b/frontend/dist/assets/CategoriesListView-BrLbxiBd.js @@ -1,2 +1,2 @@ -import{r as _,c as x,l as gt,o as pt,m as yt,i as ve,w as y,s as ft,v as ht,g as w,b as r,d as h,e as t,F as B,k as S,h as Ve,t as D,Q as oe,a as F,j as M,aV as Ct,ae as bt,n as Ie,aU as xt,af as wt,aQ as kt}from"./index-BUdRbiwj.js";import{d as Ft,e as _t,f as ge,b as ye,u as fe,g as z,a as St,c as Ot}from"./useCategoryDisplay-DheH2kkf.js";import{u as Vt}from"./useFormAutoSave-Jaawgo91.js";import{l as It}from"./lodash-RqMXHFU9.js";import{F as Dt,a as Lt}from"./FPPageHeader-CTG2L28r.js";import{F as le}from"./FPInput-CzR_dWoe.js";import{F as pe}from"./FPSelect-C7p47Ma2.js";import{F as At}from"./FPStats-BGfZcDZc.js";import{F as Bt}from"./FPTable-CU8C_NYc.js";import{F as De}from"./FPModal-DWGF1LV8.js";import{F as zt}from"./FPBadge-BKY5dPnL.js";import{F as Le}from"./FPTabs-R71V25QN.js";import{_ as Et}from"./FormRestoreNotification-DYBlXhOP.js";import"./_commonjsHelpers-NT8qMgGI.js";import"./FPCard-qHzcEQAE.js";function Tt(){const l=_({...ge}),m=_({}),o=_("basic"),n=[{key:"basic",label:"Basic Information",icon:"info"},{key:"appearance",label:"Appearance",icon:"palette"},{key:"settings",label:"Settings",icon:"cog"}],f=x(()=>Ft.map(a=>({label:a,value:a,color:a}))),O=x(()=>_t.map(a=>({label:a.charAt(0).toUpperCase()+a.slice(1).replace(/-/g," "),value:a,icon:a}))),$=[{label:"Active",value:!0},{label:"Inactive",value:!1}],E=x(()=>Object.keys(m.value).length===0&&l.value.name&&l.value.name.trim().length>0),R=x(()=>n.findIndex(g=>g.key===o.value)===0),j=x(()=>n.findIndex(g=>g.key===o.value)===n.length-1),P=x(()=>n.findIndex(a=>a.key===o.value)),N=()=>{const a={};if(!l.value.name||l.value.name.trim().length===0?a.name="Category name is required":l.value.name.trim().length<2?a.name="Category name must be at least 2 characters":l.value.name.trim().length>100?a.name="Category name must be less than 100 characters":/^[a-zA-Z0-9\s\-_()]+$/.test(l.value.name.trim())||(a.name="Category name contains invalid characters"),l.value.description&&l.value.description.length>500&&(a.description="Description must be less than 500 characters"),l.value.color&&!/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/.test(l.value.color)&&(a.color="Invalid color format"),l.value.sortOrder!==void 0&&l.value.sortOrder!==null){const g=Number(l.value.sortOrder);(isNaN(g)||g<0||g>9999)&&(a.sortOrder="Sort order must be between 0 and 9999")}return m.value=a,Object.keys(a).length===0},A=a=>{if(m.value[a]){const g={...m.value};delete g[a],m.value=g}},H=()=>{l.value={...ge},m.value={},o.value="basic"},q=a=>{l.value={...ge,...a},m.value={},o.value="basic"},i=()=>({...l.value}),d=()=>{const a=n.findIndex(g=>g.key===o.value);a{const a=n.findIndex(g=>g.key===o.value);a>0&&(o.value=n[a-1].key)},c=a=>{n.some(k=>k.key===a)&&(o.value=a)},v=(a,g)=>{l.value[a]=g,A(a)},L=a=>{v("color",a)},V=a=>{v("icon",a)},C=()=>{v("isActive",!l.value.isActive)},b=x(()=>({backgroundColor:l.value.color||"#6B7280",color:T(l.value.color||"#6B7280")})),T=a=>{const g=parseInt(a.slice(1,3),16),k=parseInt(a.slice(3,5),16),ne=parseInt(a.slice(5,7),16);return(.299*g+.587*k+.114*ne)/255>.5?"#000000":"#FFFFFF"};return{formData:l,errors:m,activeTab:o,formTabs:n,colorOptions:f,iconOptions:O,statusOptions:$,isValid:E,isFirstTab:R,isLastTab:j,currentTabIndex:P,getPreviewStyle:b,validateForm:N,clearFieldError:A,resetForm:H,populateForm:q,getFormData:i,nextTab:d,previousTab:u,goToTab:c,setField:v,setColor:L,setIcon:V,toggleActive:C,handleFieldChange:(a,g)=>{if(v(a,g),a==="name"&&g){const k=g.trim();k.length>=2&&k.length<=100&&/^[a-zA-Z0-9\s\-_()]+$/.test(k)&&A("name")}if(a==="description"&&g&&g.length<=500&&A("description"),a==="color"&&g&&/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/.test(g)&&A("color"),a==="sortOrder"&&g!==void 0){const k=Number(g);!isNaN(k)&&k>=0&&k<=9999&&A("sortOrder")}}}}function Ut(l){if(!l||!Object.values(ye).includes(l))throw new Error(`Invalid category type: ${l}`);const m=fe(),o=_(null),n=_(!1),f=i=>{if(o.value=null,!i.name||typeof i.name!="string")return o.value="Category name is required",!1;const d=i.name.trim();if(d.lengthz.name.maxLength)return o.value=`Category name must be less than ${z.name.maxLength} characters`,!1;if(!z.name.pattern.test(d))return o.value="Category name contains invalid characters",!1;if(i.description&&i.description.length>z.description.maxLength)return o.value=`Description must be less than ${z.description.maxLength} characters`,!1;if(i.color&&!z.color.pattern.test(i.color))return o.value="Invalid color format. Use hex colors like #FF5733",!1;if(i.sortOrder!==void 0){const u=Number(i.sortOrder);if(isNaN(u)||uz.sortOrder.max)return o.value=`Sort order must be between ${z.sortOrder.min} and ${z.sortOrder.max}`,!1}return!0},O=i=>{var d,u;return{name:(d=i.name)==null?void 0:d.trim(),description:((u=i.description)==null?void 0:u.trim())||"",type:l,color:i.color||"#6B7280",icon:i.icon||"folder",isActive:i.isActive!==void 0?!!i.isActive:!0,sortOrder:i.sortOrder!==void 0?Number(i.sortOrder):0}},$=(i,d=null)=>{const u=m.getCategoriesByType(l),c=i.trim().toLowerCase();return!u.some(v=>v.name.toLowerCase()===c&&v.id!==d)},E=(i,d=null)=>(o.value=null,$(i.name,d)?(i.isActive,!0):(o.value="A category with this name already exists",!1)),R=async i=>{n.value=!0,o.value=null;try{if(!f(i))throw new Error(o.value);const d=O(i);if(!E(d))throw new Error(o.value);return{success:!0,data:await m.createCategory(l,d)}}catch(d){return o.value=d.message,console.error("Failed to create category:",d),{success:!1,error:d.message}}finally{n.value=!1}},j=async(i,d)=>{n.value=!0,o.value=null;try{if(!f(d))throw new Error(o.value);const u=O(d);if(!E(u,i))throw new Error(o.value);return{success:!0,data:await m.updateCategory(l,i,u)}}catch(u){return o.value=u.message,console.error("Failed to update category:",u),{success:!1,error:u.message}}finally{n.value=!1}},P=async i=>{n.value=!0,o.value=null;try{return await m.deleteCategory(l,i),{success:!0}}catch(d){return o.value=d.message,console.error("Failed to delete category:",d),{success:!1,error:d.message}}finally{n.value=!1}},N=async()=>{n.value=!0,o.value=null;try{await m.initializeWithDefaults(l)}catch(i){o.value=i.message,console.error("Failed to initialize categories:",i)}finally{n.value=!1}},A=async()=>{n.value=!0,o.value=null;try{await m.refreshCategories(l)}catch(i){o.value=i.message,console.error("Failed to refresh categories:",i)}finally{n.value=!1}},H=async(i={})=>{n.value=!0,o.value=null;try{await m.searchCategories(l,i)}catch(d){o.value=d.message,console.error("Failed to search categories:",d)}finally{n.value=!1}},q=async i=>{n.value=!0,o.value=null;try{return await m.bulkUpdateSortOrder(l,i),{success:!0}}catch(d){return o.value=d.message,console.error("Failed to update sort orders:",d),{success:!1,error:d.message}}finally{n.value=!1}};return{error:x(()=>o.value),processing:x(()=>n.value),validateCategory:f,validateCategoryBusinessRules:E,processCategoryData:O,isCategoryNameUnique:$,createCategory:R,updateCategory:j,deleteCategory:P,initializeCategories:N,refreshCategories:A,searchCategories:H,bulkUpdateSortOrder:q}}function $t(l){if(!l||!Object.values(ye).includes(l))throw new Error(`Invalid category type: ${l}`);const m=fe(),{addNotification:o}=gt(),n=_(!1),f=_(null),O=x(()=>St[l]||l),$=async u=>{const{validateForm:c,validateBusinessRules:v,getFormData:L,processCategoryData:V}=u;n.value=!0,f.value=null;try{if(!c())throw new Error("Please correct the form errors");const C=L(),b=V(C);if(!v(b))throw new Error("Business validation failed");const T=await m.createCategory(l,b);return o({type:"success",title:"Category Created",message:`${b.name} has been created successfully`}),{success:!0,data:T}}catch(C){return f.value=C.message,o({type:"error",title:"Creation Failed",message:C.message||"Failed to create category"}),{success:!1,error:C.message}}finally{n.value=!1}},E=async u=>{const{categoryId:c,validateForm:v,validateBusinessRules:L,getFormData:V,processCategoryData:C}=u;n.value=!0,f.value=null;try{if(!v())throw new Error("Please correct the form errors");const b=V(),T=C(b);if(!L(T,c))throw new Error("Business validation failed");const K=await m.updateCategory(l,c,T);return o({type:"success",title:"Category Updated",message:`${T.name} has been updated successfully`}),{success:!0,data:K}}catch(b){return f.value=b.message,o({type:"error",title:"Update Failed",message:b.message||"Failed to update category"}),{success:!1,error:b.message}}finally{n.value=!1}},R=async(u,c="Category")=>{n.value=!0,f.value=null;try{return await m.deleteCategory(l,u),o({type:"success",title:"Category Deleted",message:`${c} has been deleted successfully`}),{success:!0}}catch(v){return f.value=v.message,o({type:"error",title:"Deletion Failed",message:v.message||`Failed to delete ${c}`}),{success:!1,error:v.message}}finally{n.value=!1}},j=async()=>{n.value=!0,f.value=null;try{await m.refreshCategories(l),o({type:"info",title:"Categories Refreshed",message:`${O.value} have been refreshed`})}catch(u){f.value=u.message,o({type:"error",title:"Refresh Failed",message:u.message||`Failed to refresh ${O.value.toLowerCase()}`})}finally{n.value=!1}},P=async(u,c={})=>{n.value=!0,f.value=null;try{const v={search:u,...c};await m.searchCategories(l,v)}catch(v){f.value=v.message,console.error("Category search failed:",v)}finally{n.value=!1}},N=async(u={},c="csv")=>{n.value=!0,f.value=null;try{const v=m.getCategoriesByType(l);if(v.length===0)throw new Error("No categories to export");const L=v.map(b=>({Name:b.name,Description:b.description||"",Color:b.color,Icon:b.icon,Status:b.isActive?"Active":"Inactive","Sort Order":b.sortOrder,"Created At":new Date(b.createdAt).toLocaleDateString(),"Updated At":new Date(b.updatedAt).toLocaleDateString()})),V=new Date().toISOString().split("T")[0],C=`${l.replace(/-/g,"_")}_${V}.${c}`;c==="csv"?q(L,C):c==="json"&&i(v,C),o({type:"success",title:"Export Complete",message:`${O.value} exported as ${C}`})}catch(v){f.value=v.message,o({type:"error",title:"Export Failed",message:v.message||`Failed to export ${O.value.toLowerCase()}`})}finally{n.value=!1}},A=async u=>{n.value=!0,f.value=null;try{return await m.bulkUpdateSortOrder(l,u),o({type:"success",title:"Sort Order Updated",message:`${O.value} sort order has been updated`}),{success:!0}}catch(c){return f.value=c.message,o({type:"error",title:"Sort Update Failed",message:c.message||"Failed to update sort order"}),{success:!1,error:c.message}}finally{n.value=!1}},H=async u=>{n.value=!0,f.value=null;try{await m.fetchCategories(l);const c=m.getCategoryById(l,u);if(!c)throw new Error("Category not found");return c}catch(c){throw f.value=c.message,o({type:"error",title:"Load Failed",message:c.message||"Failed to load category"}),c}finally{n.value=!1}},q=(u,c)=>{const v=Object.keys(u[0]),L=[v.join(","),...u.map(V=>v.map(C=>`"${V[C]||""}"`).join(","))].join(` -`);d(L,c,"text/csv")},i=(u,c)=>{const v=JSON.stringify(u,null,2);d(v,c,"application/json")},d=(u,c,v)=>{const L=new Blob([u],{type:v}),V=window.URL.createObjectURL(L),C=document.createElement("a");C.href=V,C.download=c,document.body.appendChild(C),C.click(),document.body.removeChild(C),window.URL.revokeObjectURL(V)};return{isProcessing:x(()=>n.value),operationError:x(()=>f.value),categoryTypeLabel:O,submitCategory:$,updateCategory:E,handleCategoryDeletion:R,handleCategoriesRefresh:j,handleCategorySearch:P,handleCategoryExport:N,handleBulkSortUpdate:A,handleCategoryLoad:H}}const Mt={class:"p-6"},Rt={class:"mb-6 grid grid-cols-1 md:grid-cols-3 gap-4"},jt={class:"flex space-x-2"},Pt={class:"bg-white shadow rounded-lg overflow-hidden"},Nt={class:"flex items-center space-x-3"},Ht={key:0,class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},qt=["d"],Yt={key:1},Gt={class:"font-medium text-gray-900"},Qt={key:0,class:"text-sm text-gray-500 truncate max-w-xs"},Wt={class:"text-sm text-gray-900"},Jt={class:"flex items-center space-x-2"},Zt=["title"],Kt={class:"text-sm text-gray-600"},Xt={class:"text-sm font-medium text-gray-900"},ea={class:"flex items-center space-x-2"},ta={class:"border-b border-gray-200 mb-6"},aa={key:0,class:"space-y-6"},sa={class:"grid grid-cols-1 gap-6"},ra={key:0,class:"mt-1 text-sm text-red-600"},oa={key:1,class:"space-y-6"},la={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},na={class:"grid grid-cols-6 gap-2"},ia=["onClick","title"],ua={class:"mt-3"},ca={class:"border rounded-lg p-4"},da={class:"flex items-center space-x-3"},ma={key:0,class:"w-6 h-6",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},va=["d"],ga={key:1},pa={class:"font-medium text-gray-900"},ya={class:"text-sm text-gray-500"},fa={key:2,class:"space-y-6"},ha={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},Ca={class:"flex items-center justify-between"},ba={class:"flex items-center space-x-4"},xa={key:0,class:"flex items-center text-sm text-gray-500"},wa={key:0,class:"w-4 h-4 mr-2 text-amber-500 animate-pulse",fill:"currentColor",viewBox:"0 0 20 20"},ka={key:1,class:"w-4 h-4 mr-2 text-green-500",fill:"currentColor",viewBox:"0 0 20 20"},Fa={key:2},_a={key:3},Sa={class:"flex space-x-3"},Oa={class:"space-y-4"},Va={class:"text-gray-600"},Ia={class:"text-gray-900"},Da={key:0,class:"bg-yellow-50 border border-yellow-200 rounded-md p-3"},La={class:"flex justify-end space-x-3"},Ga={__name:"CategoriesListView",props:{categoryType:{type:String,required:!0,validator:l=>Object.values(ye).includes(l)}},setup(l){const m=l,o=ht(),n=ft(),f=fe(),{validateCategoryBusinessRules:O,processCategoryData:$}=Ut(m.categoryType),{formatCategoryStatus:E,formatCategoryColor:R,formatCategoryIcon:j,getCategoryStatusVariant:P,getCategoryStyles:N,getCategoryStats:A,formatCategoryStatsForDisplay:H,getCategoryTableColumns:q,getCategoryStatusTabs:i,getCategorySortOptions:d}=Ot(),{isProcessing:u,categoryTypeLabel:c,submitCategory:v,updateCategory:L,handleCategoryDeletion:V,handleCategoriesRefresh:C,handleCategoryExport:b,handleCategoryLoad:T,handleCategorySearch:K}=$t(m.categoryType),{formData:a,errors:g,activeTab:k,formTabs:ne,colorOptions:he,iconOptions:Ae,statusOptions:Be,isLastTab:ze,validateForm:Ee,resetForm:Ce,getFormData:Te,populateForm:Ue,nextTab:$e,getPreviewStyle:Me}=Tt(),{hasUnsavedChanges:ie,lastSaveTime:X,restoreFormData:Re,clearSavedData:be,hasSavedData:xe,getSavedDataInfo:je,markUserInteraction:Pe,finishInitialization:Ne}=Vt(a,{storageKey:`atlas_category_form_data_${m.categoryType}`,saveInterval:3e3,excludeFields:[]}),Q=_(!1),we=_(null),Y=_("all"),I=_({search:"",sortBy:"",status:""}),W=_(!1),ee=_("create"),te=_(null),J=_(!1),G=_(null),ue=_(!1),He=x(()=>f.isLoading(m.categoryType)),ke=x(()=>f.getCategoriesByType(m.categoryType)),Fe=x(()=>A(ke.value)),ae=x(()=>ee.value==="edit"),qe=x(()=>H(Fe.value,c.value)),Ye=x(()=>X.value?new Date(X.value).toLocaleTimeString():""),Ge=x(()=>i(Fe.value)),Qe=x(()=>q(!1)),We=x(()=>d()),Je=x(()=>{let p=[...ke.value];if(Y.value==="active"?p=p.filter(e=>e.isActive):Y.value==="inactive"&&(p=p.filter(e=>!e.isActive)),I.value.search){const e=I.value.search.toLowerCase();p=p.filter(s=>s.name.toLowerCase().includes(e)||s.description&&s.description.toLowerCase().includes(e))}if(I.value.sortBy){const[e,s]=I.value.sortBy.split("_");p.sort((Z,vt)=>{let se=Z[e],re=vt[e];return e==="name"&&(se=se.toLowerCase(),re=re.toLowerCase()),s==="desc"?sere?1:-1})}else p.sort((e,s)=>e.sortOrder!==s.sortOrder?e.sortOrder-s.sortOrder:e.name.localeCompare(s.name));return p}),Ze=It.debounce(p=>{K(p,{status:I.value.status})},300),Ke=()=>{},Xe=()=>{I.value.search="",I.value.sortBy="",I.value.status="",Y.value="all"},et=p=>{Y.value=p},tt=p=>{const{key:e,direction:s}=p;I.value.sortBy=`${e}_${s}`},at=p=>{de(p)},ce=async()=>{await C()},_e=()=>{te.value=null,ee.value="create",st(),xe()||(Ce(),a.value.type=m.categoryType),W.value=!0},st=()=>{ee.value==="create"&&xe()&&(we.value=je(),Q.value=!0)},de=p=>{te.value=p,ee.value="edit",Ue(p),Ne(),W.value=!0},rt=p=>{G.value=p,J.value=!0},ot=async()=>{try{await V(G.value.id,G.value.name),J.value=!1,G.value=null,await ce()}catch{}},me=()=>{W.value=!1,te.value=null,Q.value=!1},lt=async()=>{var p;ue.value=!0;try{const e=ae.value?L:v,s={validateForm:Ee,validateBusinessRules:O,getFormData:Te,processCategoryData:$};ae.value&&(s.categoryId=(p=te.value)==null?void 0:p.id),(await e(s)).success&&(be(),me(),await ce())}finally{ue.value=!1}},nt=p=>{U(),$e()},it=()=>{Re(),Q.value=!1},ut=()=>{be(),Q.value=!1,Ce(),a.value.type=m.categoryType},ct=async()=>{await b(I.value)},dt=async()=>{await f.initializeWithDefaults(m.categoryType)},U=()=>{Pe()},mt=p=>{k.value=p,U()},Se=p=>{const e={folder:"M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z","folder-open":"M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z",tag:"M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A1.994 1.994 0 013 12V7a4 4 0 014-4z",bookmark:"M5 5a2 2 0 012-2h10a2 2 0 012 2v16l-7-3.5L5 21V5z",star:"M11.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 00.95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 00-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 00-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 00-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 00.951-.69l1.519-4.674z",cog:"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"};return e[p]||e.folder},Oe=()=>{const p=n.query.edit,e=n.query.create==="true";try{p?setTimeout(async()=>{try{const s=await T(p);de(s),o.replace({path:n.path})}catch{o.replace({path:n.path})}},500):e&&setTimeout(()=>{_e(),o.replace({path:n.path})},500)}catch{o.replace({path:n.path})}};return pt(async()=>{await f.fetchCategories(m.categoryType),Oe()}),yt(()=>n.query,Oe),(p,e)=>(w(),ve(Dt,null,{header:y(()=>[h(Lt,{title:t(c),description:`Manage ${t(c).toLowerCase()} for better organization`,breadcrumbs:[{text:"Settings",to:"/settings"},{text:t(c),to:null}]},{actions:y(()=>[h(t(B),{variant:"outline",size:"sm",onClick:ct},{default:y(()=>e[14]||(e[14]=[r("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1),S(" Export ",-1)])),_:1,__:[14]}),h(t(B),{variant:"outline",size:"sm",onClick:ce},{default:y(()=>e[15]||(e[15]=[r("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),S(" Refresh ",-1)])),_:1,__:[15]}),h(t(B),{variant:"primary",size:"sm",onClick:_e},{default:y(()=>e[16]||(e[16]=[r("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),S(" Add Category ",-1)])),_:1,__:[16]})]),stats:y(()=>[h(t(At),{stats:qe.value},null,8,["stats"])]),tabs:y(()=>[h(t(Le),{modelValue:Y.value,"onUpdate:modelValue":e[0]||(e[0]=s=>Y.value=s),tabs:Ge.value,onTabChange:et},null,8,["modelValue","tabs"])]),_:1},8,["title","description","breadcrumbs"])]),default:y(()=>[r("div",Mt,[r("div",Rt,[h(t(le),{modelValue:I.value.search,"onUpdate:modelValue":e[1]||(e[1]=s=>I.value.search=s),placeholder:"Search categories...",onInput:t(Ze)},{prepend:y(()=>e[17]||(e[17]=[r("svg",{class:"w-4 h-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1)])),_:1},8,["modelValue","onInput"]),h(t(pe),{modelValue:I.value.sortBy,"onUpdate:modelValue":[e[2]||(e[2]=s=>I.value.sortBy=s),Ke],placeholder:"Sort by",options:We.value},null,8,["modelValue","options"]),r("div",jt,[h(t(B),{variant:"outline",size:"sm",onClick:dt,loading:t(u),title:"Initialize with default categories"},{default:y(()=>e[18]||(e[18]=[S(" Initialize Defaults ",-1)])),_:1,__:[18]},8,["loading"]),h(t(B),{variant:"outline",size:"sm",onClick:Xe,title:"Clear all filters"},{default:y(()=>e[19]||(e[19]=[S(" Clear Filters ",-1)])),_:1,__:[19]})])]),r("div",Pt,[h(t(Bt),{columns:Qe.value,data:Je.value,loading:He.value,"empty-message":"No categories found",onSortChange:tt,onRowClick:at},{"column-name":y(({row:s})=>[r("div",Nt,[r("div",{class:"w-8 h-8 rounded-lg flex items-center justify-center text-sm font-medium",style:oe(t(N)(s))},[s.icon?(w(),F("svg",Ht,[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:Se(s.icon)},null,8,qt)])):(w(),F("span",Yt,D(s.name.charAt(0).toUpperCase()),1))],4),r("div",null,[r("h4",Gt,D(s.name),1),s.description?(w(),F("p",Qt,D(s.description),1)):M("",!0)])])]),"column-description":y(({row:s})=>[r("div",Wt,D(s.description||"No description"),1)]),"column-appearance":y(({row:s})=>[r("div",Jt,[r("div",{class:"w-6 h-6 rounded border",style:oe({backgroundColor:t(R)(s.color)}),title:s.color},null,12,Zt),r("span",Kt,D(t(j)(s.icon)),1)])]),"column-status":y(({row:s})=>[h(t(zt),{variant:t(P)(s.isActive)},{default:y(()=>[S(D(t(E)(s.isActive)),1)]),_:2},1032,["variant"])]),"column-sortOrder":y(({row:s})=>[r("div",Xt,D(s.sortOrder),1)]),"column-actions":y(({row:s})=>[r("div",ea,[h(t(B),{variant:"ghost",size:"xs",onClick:Ve(Z=>de(s),["stop"]),title:"Edit Category"},{default:y(()=>e[20]||(e[20]=[r("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1)])),_:2,__:[20]},1032,["onClick"]),h(t(B),{variant:"ghost",size:"xs",onClick:Ve(Z=>rt(s),["stop"]),title:"Delete Category",class:"text-red-600 hover:text-red-700"},{default:y(()=>e[21]||(e[21]=[r("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1)])),_:2,__:[21]},1032,["onClick"])])]),_:1},8,["columns","data","loading"])]),h(t(De),{modelValue:W.value,"onUpdate:modelValue":e[11]||(e[11]=s=>W.value=s),title:ae.value?"Edit Category":"Create Category",size:"lg",onCancel:me},{footer:y(()=>[r("div",Ca,[r("div",ba,[t(ie)||t(X)?(w(),F("div",xa,[t(ie)?(w(),F("svg",wa,e[28]||(e[28]=[r("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z","clip-rule":"evenodd"},null,-1)]))):(w(),F("svg",ka,e[29]||(e[29]=[r("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z","clip-rule":"evenodd"},null,-1)]))),t(ie)?(w(),F("span",Fa,"Auto-saving...")):t(X)?(w(),F("span",_a,"Last saved "+D(Ye.value),1)):M("",!0)])):M("",!0)]),r("div",Sa,[h(t(B),{variant:"secondary",onClick:me},{default:y(()=>e[30]||(e[30]=[S(" Cancel ",-1)])),_:1,__:[30]}),t(ze)?(w(),ve(t(B),{key:1,variant:"primary",loading:ue.value,onClick:lt},{default:y(()=>[S(D(ae.value?"Update Category":"Create Category"),1)]),_:1},8,["loading"])):(w(),ve(t(B),{key:0,variant:"primary",onClick:e[10]||(e[10]=s=>nt("next"))},{default:y(()=>e[31]||(e[31]=[S(" Next ",-1)])),_:1,__:[31]}))])])]),default:y(()=>[h(t(Et),{visible:Q.value,"saved-data-info":we.value,onRestore:it,onDismiss:ut},null,8,["visible","saved-data-info"]),r("div",ta,[h(t(Le),{modelValue:t(k),"onUpdate:modelValue":e[3]||(e[3]=s=>Ct(k)?k.value=s:null),tabs:t(ne),onTabChange:mt},null,8,["modelValue","tabs"])]),t(k)==="basic"?(w(),F("div",aa,[r("div",sa,[h(t(le),{modelValue:t(a).name,"onUpdate:modelValue":e[4]||(e[4]=s=>t(a).name=s),label:"Category Name",placeholder:"Enter category name",required:"",error:t(g).name,onInput:U},null,8,["modelValue","error"]),r("div",null,[e[22]||(e[22]=r("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Description",-1)),bt(r("textarea",{"onUpdate:modelValue":e[5]||(e[5]=s=>t(a).description=s),class:Ie(["w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",{"border-red-300":t(g).description}]),placeholder:"Describe this category...",rows:"3",onInput:U},null,34),[[xt,t(a).description]]),t(g).description?(w(),F("p",ra,D(t(g).description),1)):M("",!0)])])])):M("",!0),t(k)==="appearance"?(w(),F("div",oa,[r("div",la,[r("div",null,[e[23]||(e[23]=r("label",{class:"block text-sm font-medium text-gray-700 mb-3"},"Category Color",-1)),r("div",na,[(w(!0),F(wt,null,kt(t(he),s=>(w(),F("button",{key:s.value,type:"button",class:Ie(["w-10 h-10 rounded-lg border-2 transition-all duration-200 hover:scale-105",t(a).color===s.value?"border-gray-800 ring-2 ring-primary-500":"border-gray-300"]),style:oe({backgroundColor:s.value}),onClick:Z=>{t(a).color=s.value,U()},title:s.value},null,14,ia))),128))]),r("div",ua,[h(t(le),{modelValue:t(a).color,"onUpdate:modelValue":e[6]||(e[6]=s=>t(a).color=s),label:"Custom Color (Hex)",placeholder:"#6B7280",error:t(g).color,onInput:U},null,8,["modelValue","error"])])]),r("div",null,[e[24]||(e[24]=r("label",{class:"block text-sm font-medium text-gray-700 mb-3"},"Category Icon",-1)),h(t(pe),{modelValue:t(a).icon,"onUpdate:modelValue":e[7]||(e[7]=s=>t(a).icon=s),placeholder:"Select an icon",options:t(Ae),error:t(g).icon,onChange:U},null,8,["modelValue","options","error"])])]),r("div",ca,[e[25]||(e[25]=r("label",{class:"block text-sm font-medium text-gray-700 mb-3"},"Preview",-1)),r("div",da,[r("div",{class:"w-12 h-12 rounded-lg flex items-center justify-center text-lg font-medium",style:oe(t(Me))},[t(a).icon?(w(),F("svg",ma,[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:Se(t(a).icon)},null,8,va)])):(w(),F("span",ga,D((t(a).name||"Category").charAt(0).toUpperCase()),1))],4),r("div",null,[r("h4",pa,D(t(a).name||"Category Name"),1),r("p",ya,D(t(a).description||"Category description"),1)])])])])):M("",!0),t(k)==="settings"?(w(),F("div",fa,[r("div",ha,[h(t(le),{modelValue:t(a).sortOrder,"onUpdate:modelValue":e[8]||(e[8]=s=>t(a).sortOrder=s),label:"Sort Order",placeholder:"0",type:"number",min:"0",max:"9999",error:t(g).sortOrder,onInput:U},null,8,["modelValue","error"]),r("div",null,[e[26]||(e[26]=r("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Status",-1)),h(t(pe),{modelValue:t(a).isActive,"onUpdate:modelValue":e[9]||(e[9]=s=>t(a).isActive=s),options:t(Be),onChange:U},null,8,["modelValue","options"])])]),e[27]||(e[27]=r("div",{class:"bg-gray-50 rounded-lg p-4"},[r("h4",{class:"font-medium text-gray-900 mb-2"},"Category Settings"),r("div",{class:"space-y-2 text-sm text-gray-600"},[r("p",null,[r("strong",null,"Sort Order:"),S(" Determines the order in which categories appear in lists and dropdowns.")]),r("p",null,[r("strong",null,"Status:"),S(" Inactive categories are hidden from most views but can still be accessed for reporting.")])])],-1))])):M("",!0)]),_:1},8,["modelValue","title"]),h(t(De),{modelValue:J.value,"onUpdate:modelValue":e[13]||(e[13]=s=>J.value=s),title:"Delete Category",size:"md"},{footer:y(()=>[r("div",La,[h(t(B),{variant:"secondary",onClick:e[12]||(e[12]=s=>J.value=!1)},{default:y(()=>e[35]||(e[35]=[S(" Cancel ",-1)])),_:1,__:[35]}),h(t(B),{variant:"danger",onClick:ot,loading:t(u)},{default:y(()=>e[36]||(e[36]=[S(" Delete Category ",-1)])),_:1,__:[36]},8,["loading"])])]),default:y(()=>{var s;return[r("div",Oa,[r("p",Va,[e[32]||(e[32]=S(" Are you sure you want to delete ",-1)),r("strong",Ia,"'"+D((s=G.value)==null?void 0:s.name)+"'",1),e[33]||(e[33]=S("? This action cannot be undone. ",-1))]),G.value?(w(),F("div",Da,e[34]||(e[34]=[r("div",{class:"flex"},[r("svg",{class:"w-5 h-5 text-yellow-400 mr-2 mt-0.5",fill:"currentColor",viewBox:"0 0 20 20"},[r("path",{"fill-rule":"evenodd",d:"M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z","clip-rule":"evenodd"})]),r("div",{class:"text-sm"},[r("p",{class:"font-medium text-yellow-800"},"Warning"),r("p",{class:"text-yellow-700"},"Make sure this category is not being used by any items before deleting.")])],-1)]))):M("",!0)])]}),_:1},8,["modelValue"])])]),_:1}))}};export{Ga as default}; +import{r as _,c as x,l as gt,o as pt,m as yt,i as ve,w as y,s as ft,v as ht,g as w,b as r,d as h,e as t,F as B,k as S,h as Ve,t as D,Q as oe,a as F,j as M,aW as Ct,ae as bt,n as Ie,aV as xt,af as wt,aR as kt}from"./index-QAlcqU00.js";import{d as Ft,e as _t,f as ge,b as ye,u as fe,g as z,a as St,c as Ot}from"./useCategoryDisplay-DtoUGbrc.js";import{u as Vt}from"./useFormAutoSave-BrW9Wl2Q.js";import{l as It}from"./lodash-RqMXHFU9.js";import{F as Dt,a as Lt}from"./FPPageHeader-CFIwZZgQ.js";import{F as le}from"./FPInput-D5RURom0.js";import{F as pe}from"./FPSelect-j7n_x8eB.js";import{F as At}from"./FPStats-DOY0PQQF.js";import{F as Bt}from"./FPTable-CWvngIYd.js";import{F as De}from"./FPModal-DMoPysvU.js";import{F as zt}from"./FPBadge-DvOitM1C.js";import{F as Le}from"./FPTabs-qq-Tmb7J.js";import{_ as Et}from"./FormRestoreNotification-2Wflg1mH.js";import"./_commonjsHelpers-NT8qMgGI.js";import"./FPCard-AB6NRXg5.js";function Tt(){const l=_({...ge}),m=_({}),o=_("basic"),n=[{key:"basic",label:"Basic Information",icon:"info"},{key:"appearance",label:"Appearance",icon:"palette"},{key:"settings",label:"Settings",icon:"cog"}],f=x(()=>Ft.map(a=>({label:a,value:a,color:a}))),O=x(()=>_t.map(a=>({label:a.charAt(0).toUpperCase()+a.slice(1).replace(/-/g," "),value:a,icon:a}))),$=[{label:"Active",value:!0},{label:"Inactive",value:!1}],E=x(()=>Object.keys(m.value).length===0&&l.value.name&&l.value.name.trim().length>0),R=x(()=>n.findIndex(g=>g.key===o.value)===0),j=x(()=>n.findIndex(g=>g.key===o.value)===n.length-1),P=x(()=>n.findIndex(a=>a.key===o.value)),N=()=>{const a={};if(!l.value.name||l.value.name.trim().length===0?a.name="Category name is required":l.value.name.trim().length<2?a.name="Category name must be at least 2 characters":l.value.name.trim().length>100?a.name="Category name must be less than 100 characters":/^[a-zA-Z0-9\s\-_()]+$/.test(l.value.name.trim())||(a.name="Category name contains invalid characters"),l.value.description&&l.value.description.length>500&&(a.description="Description must be less than 500 characters"),l.value.color&&!/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/.test(l.value.color)&&(a.color="Invalid color format"),l.value.sortOrder!==void 0&&l.value.sortOrder!==null){const g=Number(l.value.sortOrder);(isNaN(g)||g<0||g>9999)&&(a.sortOrder="Sort order must be between 0 and 9999")}return m.value=a,Object.keys(a).length===0},A=a=>{if(m.value[a]){const g={...m.value};delete g[a],m.value=g}},H=()=>{l.value={...ge},m.value={},o.value="basic"},q=a=>{l.value={...ge,...a},m.value={},o.value="basic"},i=()=>({...l.value}),d=()=>{const a=n.findIndex(g=>g.key===o.value);a{const a=n.findIndex(g=>g.key===o.value);a>0&&(o.value=n[a-1].key)},c=a=>{n.some(k=>k.key===a)&&(o.value=a)},v=(a,g)=>{l.value[a]=g,A(a)},L=a=>{v("color",a)},V=a=>{v("icon",a)},C=()=>{v("isActive",!l.value.isActive)},b=x(()=>({backgroundColor:l.value.color||"#6B7280",color:T(l.value.color||"#6B7280")})),T=a=>{const g=parseInt(a.slice(1,3),16),k=parseInt(a.slice(3,5),16),ne=parseInt(a.slice(5,7),16);return(.299*g+.587*k+.114*ne)/255>.5?"#000000":"#FFFFFF"};return{formData:l,errors:m,activeTab:o,formTabs:n,colorOptions:f,iconOptions:O,statusOptions:$,isValid:E,isFirstTab:R,isLastTab:j,currentTabIndex:P,getPreviewStyle:b,validateForm:N,clearFieldError:A,resetForm:H,populateForm:q,getFormData:i,nextTab:d,previousTab:u,goToTab:c,setField:v,setColor:L,setIcon:V,toggleActive:C,handleFieldChange:(a,g)=>{if(v(a,g),a==="name"&&g){const k=g.trim();k.length>=2&&k.length<=100&&/^[a-zA-Z0-9\s\-_()]+$/.test(k)&&A("name")}if(a==="description"&&g&&g.length<=500&&A("description"),a==="color"&&g&&/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/.test(g)&&A("color"),a==="sortOrder"&&g!==void 0){const k=Number(g);!isNaN(k)&&k>=0&&k<=9999&&A("sortOrder")}}}}function Ut(l){if(!l||!Object.values(ye).includes(l))throw new Error(`Invalid category type: ${l}`);const m=fe(),o=_(null),n=_(!1),f=i=>{if(o.value=null,!i.name||typeof i.name!="string")return o.value="Category name is required",!1;const d=i.name.trim();if(d.lengthz.name.maxLength)return o.value=`Category name must be less than ${z.name.maxLength} characters`,!1;if(!z.name.pattern.test(d))return o.value="Category name contains invalid characters",!1;if(i.description&&i.description.length>z.description.maxLength)return o.value=`Description must be less than ${z.description.maxLength} characters`,!1;if(i.color&&!z.color.pattern.test(i.color))return o.value="Invalid color format. Use hex colors like #FF5733",!1;if(i.sortOrder!==void 0){const u=Number(i.sortOrder);if(isNaN(u)||uz.sortOrder.max)return o.value=`Sort order must be between ${z.sortOrder.min} and ${z.sortOrder.max}`,!1}return!0},O=i=>{var d,u;return{name:(d=i.name)==null?void 0:d.trim(),description:((u=i.description)==null?void 0:u.trim())||"",type:l,color:i.color||"#6B7280",icon:i.icon||"folder",isActive:i.isActive!==void 0?!!i.isActive:!0,sortOrder:i.sortOrder!==void 0?Number(i.sortOrder):0}},$=(i,d=null)=>{const u=m.getCategoriesByType(l),c=i.trim().toLowerCase();return!u.some(v=>v.name.toLowerCase()===c&&v.id!==d)},E=(i,d=null)=>(o.value=null,$(i.name,d)?(i.isActive,!0):(o.value="A category with this name already exists",!1)),R=async i=>{n.value=!0,o.value=null;try{if(!f(i))throw new Error(o.value);const d=O(i);if(!E(d))throw new Error(o.value);return{success:!0,data:await m.createCategory(l,d)}}catch(d){return o.value=d.message,console.error("Failed to create category:",d),{success:!1,error:d.message}}finally{n.value=!1}},j=async(i,d)=>{n.value=!0,o.value=null;try{if(!f(d))throw new Error(o.value);const u=O(d);if(!E(u,i))throw new Error(o.value);return{success:!0,data:await m.updateCategory(l,i,u)}}catch(u){return o.value=u.message,console.error("Failed to update category:",u),{success:!1,error:u.message}}finally{n.value=!1}},P=async i=>{n.value=!0,o.value=null;try{return await m.deleteCategory(l,i),{success:!0}}catch(d){return o.value=d.message,console.error("Failed to delete category:",d),{success:!1,error:d.message}}finally{n.value=!1}},N=async()=>{n.value=!0,o.value=null;try{await m.initializeWithDefaults(l)}catch(i){o.value=i.message,console.error("Failed to initialize categories:",i)}finally{n.value=!1}},A=async()=>{n.value=!0,o.value=null;try{await m.refreshCategories(l)}catch(i){o.value=i.message,console.error("Failed to refresh categories:",i)}finally{n.value=!1}},H=async(i={})=>{n.value=!0,o.value=null;try{await m.searchCategories(l,i)}catch(d){o.value=d.message,console.error("Failed to search categories:",d)}finally{n.value=!1}},q=async i=>{n.value=!0,o.value=null;try{return await m.bulkUpdateSortOrder(l,i),{success:!0}}catch(d){return o.value=d.message,console.error("Failed to update sort orders:",d),{success:!1,error:d.message}}finally{n.value=!1}};return{error:x(()=>o.value),processing:x(()=>n.value),validateCategory:f,validateCategoryBusinessRules:E,processCategoryData:O,isCategoryNameUnique:$,createCategory:R,updateCategory:j,deleteCategory:P,initializeCategories:N,refreshCategories:A,searchCategories:H,bulkUpdateSortOrder:q}}function $t(l){if(!l||!Object.values(ye).includes(l))throw new Error(`Invalid category type: ${l}`);const m=fe(),{addNotification:o}=gt(),n=_(!1),f=_(null),O=x(()=>St[l]||l),$=async u=>{const{validateForm:c,validateBusinessRules:v,getFormData:L,processCategoryData:V}=u;n.value=!0,f.value=null;try{if(!c())throw new Error("Please correct the form errors");const C=L(),b=V(C);if(!v(b))throw new Error("Business validation failed");const T=await m.createCategory(l,b);return o({type:"success",title:"Category Created",message:`${b.name} has been created successfully`}),{success:!0,data:T}}catch(C){return f.value=C.message,o({type:"error",title:"Creation Failed",message:C.message||"Failed to create category"}),{success:!1,error:C.message}}finally{n.value=!1}},E=async u=>{const{categoryId:c,validateForm:v,validateBusinessRules:L,getFormData:V,processCategoryData:C}=u;n.value=!0,f.value=null;try{if(!v())throw new Error("Please correct the form errors");const b=V(),T=C(b);if(!L(T,c))throw new Error("Business validation failed");const K=await m.updateCategory(l,c,T);return o({type:"success",title:"Category Updated",message:`${T.name} has been updated successfully`}),{success:!0,data:K}}catch(b){return f.value=b.message,o({type:"error",title:"Update Failed",message:b.message||"Failed to update category"}),{success:!1,error:b.message}}finally{n.value=!1}},R=async(u,c="Category")=>{n.value=!0,f.value=null;try{return await m.deleteCategory(l,u),o({type:"success",title:"Category Deleted",message:`${c} has been deleted successfully`}),{success:!0}}catch(v){return f.value=v.message,o({type:"error",title:"Deletion Failed",message:v.message||`Failed to delete ${c}`}),{success:!1,error:v.message}}finally{n.value=!1}},j=async()=>{n.value=!0,f.value=null;try{await m.refreshCategories(l),o({type:"info",title:"Categories Refreshed",message:`${O.value} have been refreshed`})}catch(u){f.value=u.message,o({type:"error",title:"Refresh Failed",message:u.message||`Failed to refresh ${O.value.toLowerCase()}`})}finally{n.value=!1}},P=async(u,c={})=>{n.value=!0,f.value=null;try{const v={search:u,...c};await m.searchCategories(l,v)}catch(v){f.value=v.message,console.error("Category search failed:",v)}finally{n.value=!1}},N=async(u={},c="csv")=>{n.value=!0,f.value=null;try{const v=m.getCategoriesByType(l);if(v.length===0)throw new Error("No categories to export");const L=v.map(b=>({Name:b.name,Description:b.description||"",Color:b.color,Icon:b.icon,Status:b.isActive?"Active":"Inactive","Sort Order":b.sortOrder,"Created At":new Date(b.createdAt).toLocaleDateString(),"Updated At":new Date(b.updatedAt).toLocaleDateString()})),V=new Date().toISOString().split("T")[0],C=`${l.replace(/-/g,"_")}_${V}.${c}`;c==="csv"?q(L,C):c==="json"&&i(v,C),o({type:"success",title:"Export Complete",message:`${O.value} exported as ${C}`})}catch(v){f.value=v.message,o({type:"error",title:"Export Failed",message:v.message||`Failed to export ${O.value.toLowerCase()}`})}finally{n.value=!1}},A=async u=>{n.value=!0,f.value=null;try{return await m.bulkUpdateSortOrder(l,u),o({type:"success",title:"Sort Order Updated",message:`${O.value} sort order has been updated`}),{success:!0}}catch(c){return f.value=c.message,o({type:"error",title:"Sort Update Failed",message:c.message||"Failed to update sort order"}),{success:!1,error:c.message}}finally{n.value=!1}},H=async u=>{n.value=!0,f.value=null;try{await m.fetchCategories(l);const c=m.getCategoryById(l,u);if(!c)throw new Error("Category not found");return c}catch(c){throw f.value=c.message,o({type:"error",title:"Load Failed",message:c.message||"Failed to load category"}),c}finally{n.value=!1}},q=(u,c)=>{const v=Object.keys(u[0]),L=[v.join(","),...u.map(V=>v.map(C=>`"${V[C]||""}"`).join(","))].join(` +`);d(L,c,"text/csv")},i=(u,c)=>{const v=JSON.stringify(u,null,2);d(v,c,"application/json")},d=(u,c,v)=>{const L=new Blob([u],{type:v}),V=window.URL.createObjectURL(L),C=document.createElement("a");C.href=V,C.download=c,document.body.appendChild(C),C.click(),document.body.removeChild(C),window.URL.revokeObjectURL(V)};return{isProcessing:x(()=>n.value),operationError:x(()=>f.value),categoryTypeLabel:O,submitCategory:$,updateCategory:E,handleCategoryDeletion:R,handleCategoriesRefresh:j,handleCategorySearch:P,handleCategoryExport:N,handleBulkSortUpdate:A,handleCategoryLoad:H}}const Mt={class:"p-6"},Rt={class:"mb-6 grid grid-cols-1 md:grid-cols-3 gap-4"},jt={class:"flex space-x-2"},Pt={class:"bg-white shadow rounded-lg overflow-hidden"},Nt={class:"flex items-center space-x-3"},Ht={key:0,class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},qt=["d"],Yt={key:1},Gt={class:"font-medium text-gray-900"},Wt={key:0,class:"text-sm text-gray-500 truncate max-w-xs"},Jt={class:"text-sm text-gray-900"},Qt={class:"flex items-center space-x-2"},Zt=["title"],Kt={class:"text-sm text-gray-600"},Xt={class:"text-sm font-medium text-gray-900"},ea={class:"flex items-center space-x-2"},ta={class:"border-b border-gray-200 mb-6"},aa={key:0,class:"space-y-6"},sa={class:"grid grid-cols-1 gap-6"},ra={key:0,class:"mt-1 text-sm text-red-600"},oa={key:1,class:"space-y-6"},la={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},na={class:"grid grid-cols-6 gap-2"},ia=["onClick","title"],ua={class:"mt-3"},ca={class:"border rounded-lg p-4"},da={class:"flex items-center space-x-3"},ma={key:0,class:"w-6 h-6",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},va=["d"],ga={key:1},pa={class:"font-medium text-gray-900"},ya={class:"text-sm text-gray-500"},fa={key:2,class:"space-y-6"},ha={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},Ca={class:"flex items-center justify-between"},ba={class:"flex items-center space-x-4"},xa={key:0,class:"flex items-center text-sm text-gray-500"},wa={key:0,class:"w-4 h-4 mr-2 text-amber-500 animate-pulse",fill:"currentColor",viewBox:"0 0 20 20"},ka={key:1,class:"w-4 h-4 mr-2 text-green-500",fill:"currentColor",viewBox:"0 0 20 20"},Fa={key:2},_a={key:3},Sa={class:"flex space-x-3"},Oa={class:"space-y-4"},Va={class:"text-gray-600"},Ia={class:"text-gray-900"},Da={key:0,class:"bg-yellow-50 border border-yellow-200 rounded-md p-3"},La={class:"flex justify-end space-x-3"},Ga={__name:"CategoriesListView",props:{categoryType:{type:String,required:!0,validator:l=>Object.values(ye).includes(l)}},setup(l){const m=l,o=ht(),n=ft(),f=fe(),{validateCategoryBusinessRules:O,processCategoryData:$}=Ut(m.categoryType),{formatCategoryStatus:E,formatCategoryColor:R,formatCategoryIcon:j,getCategoryStatusVariant:P,getCategoryStyles:N,getCategoryStats:A,formatCategoryStatsForDisplay:H,getCategoryTableColumns:q,getCategoryStatusTabs:i,getCategorySortOptions:d}=Ot(),{isProcessing:u,categoryTypeLabel:c,submitCategory:v,updateCategory:L,handleCategoryDeletion:V,handleCategoriesRefresh:C,handleCategoryExport:b,handleCategoryLoad:T,handleCategorySearch:K}=$t(m.categoryType),{formData:a,errors:g,activeTab:k,formTabs:ne,colorOptions:he,iconOptions:Ae,statusOptions:Be,isLastTab:ze,validateForm:Ee,resetForm:Ce,getFormData:Te,populateForm:Ue,nextTab:$e,getPreviewStyle:Me}=Tt(),{hasUnsavedChanges:ie,lastSaveTime:X,restoreFormData:Re,clearSavedData:be,hasSavedData:xe,getSavedDataInfo:je,markUserInteraction:Pe,finishInitialization:Ne}=Vt(a,{storageKey:`atlas_category_form_data_${m.categoryType}`,saveInterval:3e3,excludeFields:[]}),W=_(!1),we=_(null),Y=_("all"),I=_({search:"",sortBy:"",status:""}),J=_(!1),ee=_("create"),te=_(null),Q=_(!1),G=_(null),ue=_(!1),He=x(()=>f.isLoading(m.categoryType)),ke=x(()=>f.getCategoriesByType(m.categoryType)),Fe=x(()=>A(ke.value)),ae=x(()=>ee.value==="edit"),qe=x(()=>H(Fe.value,c.value)),Ye=x(()=>X.value?new Date(X.value).toLocaleTimeString():""),Ge=x(()=>i(Fe.value)),We=x(()=>q(!1)),Je=x(()=>d()),Qe=x(()=>{let p=[...ke.value];if(Y.value==="active"?p=p.filter(e=>e.isActive):Y.value==="inactive"&&(p=p.filter(e=>!e.isActive)),I.value.search){const e=I.value.search.toLowerCase();p=p.filter(s=>s.name.toLowerCase().includes(e)||s.description&&s.description.toLowerCase().includes(e))}if(I.value.sortBy){const[e,s]=I.value.sortBy.split("_");p.sort((Z,vt)=>{let se=Z[e],re=vt[e];return e==="name"&&(se=se.toLowerCase(),re=re.toLowerCase()),s==="desc"?sere?1:-1})}else p.sort((e,s)=>e.sortOrder!==s.sortOrder?e.sortOrder-s.sortOrder:e.name.localeCompare(s.name));return p}),Ze=It.debounce(p=>{K(p,{status:I.value.status})},300),Ke=()=>{},Xe=()=>{I.value.search="",I.value.sortBy="",I.value.status="",Y.value="all"},et=p=>{Y.value=p},tt=p=>{const{key:e,direction:s}=p;I.value.sortBy=`${e}_${s}`},at=p=>{de(p)},ce=async()=>{await C()},_e=()=>{te.value=null,ee.value="create",st(),xe()||(Ce(),a.value.type=m.categoryType),J.value=!0},st=()=>{ee.value==="create"&&xe()&&(we.value=je(),W.value=!0)},de=p=>{te.value=p,ee.value="edit",Ue(p),Ne(),J.value=!0},rt=p=>{G.value=p,Q.value=!0},ot=async()=>{try{await V(G.value.id,G.value.name),Q.value=!1,G.value=null,await ce()}catch{}},me=()=>{J.value=!1,te.value=null,W.value=!1},lt=async()=>{var p;ue.value=!0;try{const e=ae.value?L:v,s={validateForm:Ee,validateBusinessRules:O,getFormData:Te,processCategoryData:$};ae.value&&(s.categoryId=(p=te.value)==null?void 0:p.id),(await e(s)).success&&(be(),me(),await ce())}finally{ue.value=!1}},nt=p=>{U(),$e()},it=()=>{Re(),W.value=!1},ut=()=>{be(),W.value=!1,Ce(),a.value.type=m.categoryType},ct=async()=>{await b(I.value)},dt=async()=>{await f.initializeWithDefaults(m.categoryType)},U=()=>{Pe()},mt=p=>{k.value=p,U()},Se=p=>{const e={folder:"M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z","folder-open":"M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z",tag:"M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A1.994 1.994 0 013 12V7a4 4 0 014-4z",bookmark:"M5 5a2 2 0 012-2h10a2 2 0 012 2v16l-7-3.5L5 21V5z",star:"M11.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 00.95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 00-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 00-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 00-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 00.951-.69l1.519-4.674z",cog:"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"};return e[p]||e.folder},Oe=()=>{const p=n.query.edit,e=n.query.create==="true";try{p?setTimeout(async()=>{try{const s=await T(p);de(s),o.replace({path:n.path})}catch{o.replace({path:n.path})}},500):e&&setTimeout(()=>{_e(),o.replace({path:n.path})},500)}catch{o.replace({path:n.path})}};return pt(async()=>{await f.fetchCategories(m.categoryType),Oe()}),yt(()=>n.query,Oe),(p,e)=>(w(),ve(Dt,null,{header:y(()=>[h(Lt,{title:t(c),description:`Manage ${t(c).toLowerCase()} for better organization`,breadcrumbs:[{text:"Settings",to:"/settings"},{text:t(c),to:null}]},{actions:y(()=>[h(t(B),{variant:"outline",size:"sm",onClick:ct},{default:y(()=>e[14]||(e[14]=[r("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1),S(" Export ",-1)])),_:1,__:[14]}),h(t(B),{variant:"outline",size:"sm",onClick:ce},{default:y(()=>e[15]||(e[15]=[r("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),S(" Refresh ",-1)])),_:1,__:[15]}),h(t(B),{variant:"primary",size:"sm",onClick:_e},{default:y(()=>e[16]||(e[16]=[r("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),S(" Add Category ",-1)])),_:1,__:[16]})]),stats:y(()=>[h(t(At),{stats:qe.value},null,8,["stats"])]),tabs:y(()=>[h(t(Le),{modelValue:Y.value,"onUpdate:modelValue":e[0]||(e[0]=s=>Y.value=s),tabs:Ge.value,onTabChange:et},null,8,["modelValue","tabs"])]),_:1},8,["title","description","breadcrumbs"])]),default:y(()=>[r("div",Mt,[r("div",Rt,[h(t(le),{modelValue:I.value.search,"onUpdate:modelValue":e[1]||(e[1]=s=>I.value.search=s),placeholder:"Search categories...",onInput:t(Ze)},{prepend:y(()=>e[17]||(e[17]=[r("svg",{class:"w-4 h-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1)])),_:1},8,["modelValue","onInput"]),h(t(pe),{modelValue:I.value.sortBy,"onUpdate:modelValue":[e[2]||(e[2]=s=>I.value.sortBy=s),Ke],placeholder:"Sort by",options:Je.value},null,8,["modelValue","options"]),r("div",jt,[h(t(B),{variant:"outline",size:"sm",onClick:dt,loading:t(u),title:"Initialize with default categories"},{default:y(()=>e[18]||(e[18]=[S(" Initialize Defaults ",-1)])),_:1,__:[18]},8,["loading"]),h(t(B),{variant:"outline",size:"sm",onClick:Xe,title:"Clear all filters"},{default:y(()=>e[19]||(e[19]=[S(" Clear Filters ",-1)])),_:1,__:[19]})])]),r("div",Pt,[h(t(Bt),{columns:We.value,data:Qe.value,loading:He.value,"empty-message":"No categories found",onSortChange:tt,onRowClick:at},{"column-name":y(({row:s})=>[r("div",Nt,[r("div",{class:"w-8 h-8 rounded-lg flex items-center justify-center text-sm font-medium",style:oe(t(N)(s))},[s.icon?(w(),F("svg",Ht,[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:Se(s.icon)},null,8,qt)])):(w(),F("span",Yt,D(s.name.charAt(0).toUpperCase()),1))],4),r("div",null,[r("h4",Gt,D(s.name),1),s.description?(w(),F("p",Wt,D(s.description),1)):M("",!0)])])]),"column-description":y(({row:s})=>[r("div",Jt,D(s.description||"No description"),1)]),"column-appearance":y(({row:s})=>[r("div",Qt,[r("div",{class:"w-6 h-6 rounded border",style:oe({backgroundColor:t(R)(s.color)}),title:s.color},null,12,Zt),r("span",Kt,D(t(j)(s.icon)),1)])]),"column-status":y(({row:s})=>[h(t(zt),{variant:t(P)(s.isActive)},{default:y(()=>[S(D(t(E)(s.isActive)),1)]),_:2},1032,["variant"])]),"column-sortOrder":y(({row:s})=>[r("div",Xt,D(s.sortOrder),1)]),"column-actions":y(({row:s})=>[r("div",ea,[h(t(B),{variant:"ghost",size:"xs",onClick:Ve(Z=>de(s),["stop"]),title:"Edit Category"},{default:y(()=>e[20]||(e[20]=[r("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1)])),_:2,__:[20]},1032,["onClick"]),h(t(B),{variant:"ghost",size:"xs",onClick:Ve(Z=>rt(s),["stop"]),title:"Delete Category",class:"text-red-600 hover:text-red-700"},{default:y(()=>e[21]||(e[21]=[r("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1)])),_:2,__:[21]},1032,["onClick"])])]),_:1},8,["columns","data","loading"])]),h(t(De),{modelValue:J.value,"onUpdate:modelValue":e[11]||(e[11]=s=>J.value=s),title:ae.value?"Edit Category":"Create Category",size:"lg",onCancel:me},{footer:y(()=>[r("div",Ca,[r("div",ba,[t(ie)||t(X)?(w(),F("div",xa,[t(ie)?(w(),F("svg",wa,e[28]||(e[28]=[r("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z","clip-rule":"evenodd"},null,-1)]))):(w(),F("svg",ka,e[29]||(e[29]=[r("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z","clip-rule":"evenodd"},null,-1)]))),t(ie)?(w(),F("span",Fa,"Auto-saving...")):t(X)?(w(),F("span",_a,"Last saved "+D(Ye.value),1)):M("",!0)])):M("",!0)]),r("div",Sa,[h(t(B),{variant:"secondary",onClick:me},{default:y(()=>e[30]||(e[30]=[S(" Cancel ",-1)])),_:1,__:[30]}),t(ze)?(w(),ve(t(B),{key:1,variant:"primary",loading:ue.value,onClick:lt},{default:y(()=>[S(D(ae.value?"Update Category":"Create Category"),1)]),_:1},8,["loading"])):(w(),ve(t(B),{key:0,variant:"primary",onClick:e[10]||(e[10]=s=>nt("next"))},{default:y(()=>e[31]||(e[31]=[S(" Next ",-1)])),_:1,__:[31]}))])])]),default:y(()=>[h(t(Et),{visible:W.value,"saved-data-info":we.value,onRestore:it,onDismiss:ut},null,8,["visible","saved-data-info"]),r("div",ta,[h(t(Le),{modelValue:t(k),"onUpdate:modelValue":e[3]||(e[3]=s=>Ct(k)?k.value=s:null),tabs:t(ne),onTabChange:mt},null,8,["modelValue","tabs"])]),t(k)==="basic"?(w(),F("div",aa,[r("div",sa,[h(t(le),{modelValue:t(a).name,"onUpdate:modelValue":e[4]||(e[4]=s=>t(a).name=s),label:"Category Name",placeholder:"Enter category name",required:"",error:t(g).name,onInput:U},null,8,["modelValue","error"]),r("div",null,[e[22]||(e[22]=r("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Description",-1)),bt(r("textarea",{"onUpdate:modelValue":e[5]||(e[5]=s=>t(a).description=s),class:Ie(["w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",{"border-red-300":t(g).description}]),placeholder:"Describe this category...",rows:"3",onInput:U},null,34),[[xt,t(a).description]]),t(g).description?(w(),F("p",ra,D(t(g).description),1)):M("",!0)])])])):M("",!0),t(k)==="appearance"?(w(),F("div",oa,[r("div",la,[r("div",null,[e[23]||(e[23]=r("label",{class:"block text-sm font-medium text-gray-700 mb-3"},"Category Color",-1)),r("div",na,[(w(!0),F(wt,null,kt(t(he),s=>(w(),F("button",{key:s.value,type:"button",class:Ie(["w-10 h-10 rounded-lg border-2 transition-all duration-200 hover:scale-105",t(a).color===s.value?"border-gray-800 ring-2 ring-primary-500":"border-gray-300"]),style:oe({backgroundColor:s.value}),onClick:Z=>{t(a).color=s.value,U()},title:s.value},null,14,ia))),128))]),r("div",ua,[h(t(le),{modelValue:t(a).color,"onUpdate:modelValue":e[6]||(e[6]=s=>t(a).color=s),label:"Custom Color (Hex)",placeholder:"#6B7280",error:t(g).color,onInput:U},null,8,["modelValue","error"])])]),r("div",null,[e[24]||(e[24]=r("label",{class:"block text-sm font-medium text-gray-700 mb-3"},"Category Icon",-1)),h(t(pe),{modelValue:t(a).icon,"onUpdate:modelValue":e[7]||(e[7]=s=>t(a).icon=s),placeholder:"Select an icon",options:t(Ae),error:t(g).icon,onChange:U},null,8,["modelValue","options","error"])])]),r("div",ca,[e[25]||(e[25]=r("label",{class:"block text-sm font-medium text-gray-700 mb-3"},"Preview",-1)),r("div",da,[r("div",{class:"w-12 h-12 rounded-lg flex items-center justify-center text-lg font-medium",style:oe(t(Me))},[t(a).icon?(w(),F("svg",ma,[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:Se(t(a).icon)},null,8,va)])):(w(),F("span",ga,D((t(a).name||"Category").charAt(0).toUpperCase()),1))],4),r("div",null,[r("h4",pa,D(t(a).name||"Category Name"),1),r("p",ya,D(t(a).description||"Category description"),1)])])])])):M("",!0),t(k)==="settings"?(w(),F("div",fa,[r("div",ha,[h(t(le),{modelValue:t(a).sortOrder,"onUpdate:modelValue":e[8]||(e[8]=s=>t(a).sortOrder=s),label:"Sort Order",placeholder:"0",type:"number",min:"0",max:"9999",error:t(g).sortOrder,onInput:U},null,8,["modelValue","error"]),r("div",null,[e[26]||(e[26]=r("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Status",-1)),h(t(pe),{modelValue:t(a).isActive,"onUpdate:modelValue":e[9]||(e[9]=s=>t(a).isActive=s),options:t(Be),onChange:U},null,8,["modelValue","options"])])]),e[27]||(e[27]=r("div",{class:"bg-gray-50 rounded-lg p-4"},[r("h4",{class:"font-medium text-gray-900 mb-2"},"Category Settings"),r("div",{class:"space-y-2 text-sm text-gray-600"},[r("p",null,[r("strong",null,"Sort Order:"),S(" Determines the order in which categories appear in lists and dropdowns.")]),r("p",null,[r("strong",null,"Status:"),S(" Inactive categories are hidden from most views but can still be accessed for reporting.")])])],-1))])):M("",!0)]),_:1},8,["modelValue","title"]),h(t(De),{modelValue:Q.value,"onUpdate:modelValue":e[13]||(e[13]=s=>Q.value=s),title:"Delete Category",size:"md"},{footer:y(()=>[r("div",La,[h(t(B),{variant:"secondary",onClick:e[12]||(e[12]=s=>Q.value=!1)},{default:y(()=>e[35]||(e[35]=[S(" Cancel ",-1)])),_:1,__:[35]}),h(t(B),{variant:"danger",onClick:ot,loading:t(u)},{default:y(()=>e[36]||(e[36]=[S(" Delete Category ",-1)])),_:1,__:[36]},8,["loading"])])]),default:y(()=>{var s;return[r("div",Oa,[r("p",Va,[e[32]||(e[32]=S(" Are you sure you want to delete ",-1)),r("strong",Ia,"'"+D((s=G.value)==null?void 0:s.name)+"'",1),e[33]||(e[33]=S("? This action cannot be undone. ",-1))]),G.value?(w(),F("div",Da,e[34]||(e[34]=[r("div",{class:"flex"},[r("svg",{class:"w-5 h-5 text-yellow-400 mr-2 mt-0.5",fill:"currentColor",viewBox:"0 0 20 20"},[r("path",{"fill-rule":"evenodd",d:"M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z","clip-rule":"evenodd"})]),r("div",{class:"text-sm"},[r("p",{class:"font-medium text-yellow-800"},"Warning"),r("p",{class:"text-yellow-700"},"Make sure this category is not being used by any items before deleting.")])],-1)]))):M("",!0)])]}),_:1},8,["modelValue"])])]),_:1}))}};export{Ga as default}; diff --git a/frontend/dist/assets/CategoriesView-CaAkUQbP.js b/frontend/dist/assets/CategoriesView-DZHjzlZD.js similarity index 63% rename from frontend/dist/assets/CategoriesView-CaAkUQbP.js rename to frontend/dist/assets/CategoriesView-DZHjzlZD.js index 8c8ede70..aa5ab8da 100644 --- a/frontend/dist/assets/CategoriesView-CaAkUQbP.js +++ b/frontend/dist/assets/CategoriesView-DZHjzlZD.js @@ -1 +1 @@ -import{i as o,f as r,g as t}from"./index-BUdRbiwj.js";const c={__name:"CategoriesView",setup(n){return(s,_)=>{const e=r("router-view");return t(),o(e)}}};export{c as default}; +import{i as o,f as r,g as t}from"./index-QAlcqU00.js";const c={__name:"CategoriesView",setup(n){return(s,_)=>{const e=r("router-view");return t(),o(e)}}};export{c as default}; diff --git a/frontend/dist/assets/ContractDetailView-ClB2gGkj.js b/frontend/dist/assets/ContractDetailView-ClB2gGkj.js new file mode 100644 index 00000000..ff2f2d92 --- /dev/null +++ b/frontend/dist/assets/ContractDetailView-ClB2gGkj.js @@ -0,0 +1 @@ +import{r as m,c as j,o as tt,s as et,v as st,i as ot,w as i,g as a,b as t,a as r,d as c,e as v,k as d,t as o,af as f,aR as h,n as L,j as p,F as u,b9 as nt}from"./index-QAlcqU00.js";import{u as at,e as rt,g as N,h as H}from"./useContractManagement-OiJwK-RO.js";import{F as lt,a as it}from"./FPPageHeader-CFIwZZgQ.js";import{F as y}from"./FPBadge-DvOitM1C.js";const dt={class:"px-6 py-8"},ct={key:0,class:"flex items-center justify-center py-12"},ut={key:1,class:"space-y-6"},mt={class:"bg-white shadow rounded-lg p-6"},vt={class:"flex items-start space-x-4"},xt={class:"flex items-center space-x-4 mb-2"},gt={class:"text-sm text-gray-500"},pt={class:"text-gray-600"},yt={class:"grid grid-cols-1 md:grid-cols-4 gap-6"},ft={class:"bg-white shadow rounded-lg p-6"},ht={class:"flex items-center"},kt={class:"ml-4"},_t={class:"text-2xl font-bold text-gray-900"},wt={class:"bg-white shadow rounded-lg p-6"},bt={class:"flex items-center"},Ct={class:"ml-4"},Dt={class:"text-lg font-semibold text-gray-900"},jt={class:"bg-white shadow rounded-lg p-6"},Mt={class:"flex items-center"},Vt={class:"ml-4"},zt={class:"text-lg font-semibold text-gray-900"},Bt={class:"bg-white shadow rounded-lg p-6"},At={class:"flex items-center"},Lt={class:"ml-4"},Nt={class:"text-lg font-semibold text-gray-900"},Ht={class:"bg-white shadow rounded-lg"},St={class:"border-b border-gray-200"},Et={class:"-mb-px flex space-x-8 px-6","aria-label":"Tabs"},$t=["onClick"],Tt={class:"p-6"},Ft={key:0},Rt={class:"grid grid-cols-1 lg:grid-cols-2 gap-6"},Pt={class:"space-y-3"},It={class:"flex justify-between"},Ut={class:"text-sm text-gray-900 capitalize"},Ot={class:"flex justify-between"},Wt={class:"text-sm text-gray-900"},Yt={class:"flex justify-between"},qt={class:"text-sm text-gray-900 capitalize"},Gt={class:"flex justify-between"},Jt={class:"text-sm text-gray-900"},Kt={class:"flex justify-between"},Qt={class:"text-sm text-gray-900"},Xt={class:"space-y-3"},Zt={class:"flex justify-between"},te={class:"text-sm text-gray-900"},ee={class:"flex justify-between"},se={class:"text-sm text-gray-900"},oe={class:"flex justify-between"},ne={class:"flex justify-between"},ae={class:"text-sm text-gray-900"},re={key:1},le={class:"mb-4 flex justify-between items-center"},ie={key:0,class:"text-center py-8"},de={key:1,class:"space-y-3"},ce={class:"flex items-center space-x-3"},ue={class:"text-sm font-medium text-gray-900"},me={class:"text-xs text-gray-500"},ve={class:"flex items-center space-x-2"},xe={key:2,class:"text-center py-8 text-gray-500"},ge={key:2},pe={class:"mb-4 flex justify-between items-center"},ye={key:0,class:"text-center py-8"},fe={key:1,class:"grid grid-cols-1 md:grid-cols-2 gap-4"},he={class:"flex items-center justify-between mb-2"},ke={class:"text-sm font-medium text-gray-900 capitalize"},_e={class:"text-2xl font-bold text-gray-900"},we={class:"text-sm text-gray-600 mt-1"},be={key:2,class:"text-center py-8 text-gray-500"},Ce={key:3},De={class:"mb-4 flex justify-between items-center"},je={key:0,class:"text-center py-8"},Me={key:1,class:"space-y-4"},Ve={class:"flex items-center justify-between mb-2"},ze={class:"text-sm font-medium text-gray-900"},Be={class:"text-sm text-gray-600 mb-3"},Ae={class:"flex items-center justify-between text-sm"},Le={class:"text-gray-500"},Ne={key:0,class:"space-x-2"},He={key:2,class:"text-center py-8 text-gray-500"},Se={key:2,class:"text-center py-12"},Ee={class:"text-red-600"},$e={class:"text-gray-600 mb-4"},Te={key:3,class:"text-center py-12"},Fe={class:"text-gray-400"},We={__name:"ContractDetailView",setup(Re){const S=et(),k=st(),{loadContractById:E,formatContractValue:$,calculateContractDuration:T,isContractExpiringSoon:F,error:M}=at(),s=m(null),V=m(!0),_=m([]),w=m([]),b=m([]),R=m(!1),P=m(!1),I=m(!1),x=m("overview"),U=[{id:"overview",label:"Overview"},{id:"documents",label:"Documents"},{id:"slas",label:"SLAs"},{id:"milestones",label:"Milestones"}],z=j(()=>s.value?T(s.value):{days:0,months:0,years:0}),C=j(()=>{var l;return(l=s.value)!=null&&l.endDate?rt(s.value.endDate):0}),B=j(()=>s.value?F(s.value):!1),g=l=>l?new Date(l).toLocaleDateString():"N/A",O=l=>l<=0?"text-red-600":l<=30?"text-yellow-600":"text-green-600",W=l=>({pending:"default",in_progress:"info",completed:"success",overdue:"error",cancelled:"default"})[l]||"default",Y=()=>{k.push(`/contracts?edit=${s.value.id}`)},q=()=>{k.push(`/work-orders?create=true&contractId=${s.value.id}`)},G=()=>{console.log("Upload document functionality coming soon")},J=l=>{console.log("Download document:",l.name)},K=l=>{console.log("Delete document:",l.name)},Q=()=>{console.log("Create SLA functionality coming soon")},X=()=>{console.log("Create milestone functionality coming soon")},Z=l=>{console.log("Complete milestone:",l.title)};return tt(async()=>{const l=S.params.id;if(!l){k.push("/contracts");return}try{s.value=await E(parseInt(l))}catch(e){console.error("Failed to load contract:",e)}finally{V.value=!1}}),(l,e)=>(a(),ot(lt,null,{header:i(()=>[c(it,{title:s.value?s.value.title:"Contract Details",description:s.value?s.value.description||"Contract information and details":"Loading contract details...",breadcrumbs:[{text:"Contracts",to:"/contracts"},{text:s.value?s.value.title:"Loading...",to:null}]},nt({_:2},[s.value?{name:"actions",fn:i(()=>[c(u,{variant:"secondary",size:"sm",onClick:Y},{default:i(()=>e[2]||(e[2]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1),d(" Edit Contract ",-1)])),_:1,__:[2]}),c(u,{variant:"primary",size:"sm",onClick:q},{default:i(()=>e[3]||(e[3]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 6v6m0 0v6m0-6h6m-6 0H6"})],-1),d(" Create Work Order ",-1)])),_:1,__:[3]})]),key:"0"}:void 0]),1032,["title","description","breadcrumbs"])]),default:i(()=>{var A;return[t("div",dt,[V.value?(a(),r("div",ct,e[4]||(e[4]=[t("div",{class:"flex items-center space-x-2 text-gray-500"},[t("svg",{class:"w-8 h-8 animate-spin",fill:"none",viewBox:"0 0 24 24"},[t("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"}),t("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]),t("span",null,"Loading contract details...")],-1)]))):s.value?(a(),r("div",ut,[t("div",mt,[t("div",vt,[e[5]||(e[5]=t("div",{class:"w-16 h-16 bg-blue-100 rounded-lg flex items-center justify-center"},[t("svg",{class:"w-8 h-8 text-blue-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})])],-1)),t("div",null,[t("div",xt,[c(y,{variant:v(N)(s.value.status).color},{default:i(()=>[d(o(v(N)(s.value.status).label),1)]),_:1},8,["variant"]),c(y,{variant:v(H)(s.value.priority).color},{default:i(()=>[d(o(v(H)(s.value.priority).label),1)]),_:1},8,["variant"]),t("span",gt,o(s.value.contractNumber),1)]),t("p",pt,o(s.value.description||"No description available"),1)])])]),t("div",yt,[t("div",ft,[t("div",ht,[e[7]||(e[7]=t("div",{class:"flex-shrink-0"},[t("svg",{class:"w-8 h-8 text-green-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8c-1.657 0-3 .895-3 2s1.343 2 3 2 3 .895 3 2-1.343 2-3 2m0-8c1.11 0 2.08.402 2.599 1M12 8V7m0 1v8m0 0v1m0-1c-1.11 0-2.08-.402-2.599-1"})])],-1)),t("div",kt,[e[6]||(e[6]=t("p",{class:"text-sm font-medium text-gray-500"},"Contract Value",-1)),t("p",_t,o(v($)(s.value.contractValue,s.value.currency)),1)])])]),t("div",wt,[t("div",bt,[e[9]||(e[9]=t("div",{class:"flex-shrink-0"},[t("svg",{class:"w-8 h-8 text-blue-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"})])],-1)),t("div",Ct,[e[8]||(e[8]=t("p",{class:"text-sm font-medium text-gray-500"},"Start Date",-1)),t("p",Dt,o(g(s.value.startDate)),1)])])]),t("div",jt,[t("div",Mt,[e[11]||(e[11]=t("div",{class:"flex-shrink-0"},[t("svg",{class:"w-8 h-8 text-red-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"})])],-1)),t("div",Vt,[e[10]||(e[10]=t("p",{class:"text-sm font-medium text-gray-500"},"End Date",-1)),t("p",zt,o(g(s.value.endDate)),1)])])]),t("div",Bt,[t("div",At,[e[13]||(e[13]=t("div",{class:"flex-shrink-0"},[t("svg",{class:"w-8 h-8 text-yellow-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})])],-1)),t("div",Lt,[e[12]||(e[12]=t("p",{class:"text-sm font-medium text-gray-500"},"Duration",-1)),t("p",Nt,o(z.value.years)+" year"+o(z.value.years!==1?"s":""),1)])])])]),t("div",Ht,[t("div",St,[t("nav",Et,[(a(),r(f,null,h(U,n=>t("button",{key:n.id,onClick:D=>x.value=n.id,class:L(["py-4 px-1 border-b-2 font-medium text-sm",x.value===n.id?"border-blue-500 text-blue-600":"border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300"])},o(n.label),11,$t)),64))])]),t("div",Tt,[x.value==="overview"?(a(),r("div",Ft,[t("div",Rt,[t("div",null,[e[19]||(e[19]=t("h3",{class:"text-lg font-medium text-gray-900 mb-4"},"Basic Information",-1)),t("dl",Pt,[t("div",It,[e[14]||(e[14]=t("dt",{class:"text-sm font-medium text-gray-500"},"Contract Type",-1)),t("dd",Ut,o(s.value.contractType.replace("_"," ")),1)]),t("div",Ot,[e[15]||(e[15]=t("dt",{class:"text-sm font-medium text-gray-500"},"Vendor",-1)),t("dd",Wt,o(s.value.vendorName||"N/A"),1)]),t("div",Yt,[e[16]||(e[16]=t("dt",{class:"text-sm font-medium text-gray-500"},"Payment Terms",-1)),t("dd",qt,o(((A=s.value.paymentTerms)==null?void 0:A.replace("_"," "))||"N/A"),1)]),t("div",Gt,[e[17]||(e[17]=t("dt",{class:"text-sm font-medium text-gray-500"},"Auto Renew",-1)),t("dd",Jt,o(s.value.autoRenew?"Yes":"No"),1)]),t("div",Kt,[e[18]||(e[18]=t("dt",{class:"text-sm font-medium text-gray-500"},"Renewal Notice Days",-1)),t("dd",Qt,o(s.value.renewalNotificationDays||30)+" days",1)])])]),t("div",null,[e[24]||(e[24]=t("h3",{class:"text-lg font-medium text-gray-900 mb-4"},"Contract Dates",-1)),t("dl",Xt,[t("div",Zt,[e[20]||(e[20]=t("dt",{class:"text-sm font-medium text-gray-500"},"Created Date",-1)),t("dd",te,o(g(s.value.createdAt)),1)]),t("div",ee,[e[21]||(e[21]=t("dt",{class:"text-sm font-medium text-gray-500"},"Updated Date",-1)),t("dd",se,o(g(s.value.updatedAt)),1)]),t("div",oe,[e[22]||(e[22]=t("dt",{class:"text-sm font-medium text-gray-500"},"Days Remaining",-1)),t("dd",{class:L(["text-sm text-gray-900",O(C.value)])},o(C.value>0?`${C.value} days`:"Expired"),3)]),t("div",ne,[e[23]||(e[23]=t("dt",{class:"text-sm font-medium text-gray-500"},"Expiring Soon",-1)),t("dd",ae,[c(y,{variant:B.value?"warning":"success"},{default:i(()=>[d(o(B.value?"Yes":"No"),1)]),_:1},8,["variant"])])])])])])])):p("",!0),x.value==="documents"?(a(),r("div",re,[t("div",le,[e[26]||(e[26]=t("h3",{class:"text-lg font-medium text-gray-900"},"Contract Documents",-1)),c(u,{size:"sm",onClick:G},{default:i(()=>e[25]||(e[25]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12"})],-1),d(" Upload Document ",-1)])),_:1,__:[25]})]),R.value?(a(),r("div",ie,e[27]||(e[27]=[t("div",{class:"inline-flex items-center text-gray-500"},[t("svg",{class:"animate-spin h-5 w-5 mr-2",fill:"none",viewBox:"0 0 24 24"},[t("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"}),t("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]),d(" Loading documents... ")],-1)]))):_.value&&_.value.length>0?(a(),r("div",de,[(a(!0),r(f,null,h(_.value,n=>(a(),r("div",{key:n.id,class:"flex items-center justify-between p-3 border border-gray-200 rounded-lg"},[t("div",ce,[e[28]||(e[28]=t("div",{class:"flex-shrink-0"},[t("svg",{class:"w-8 h-8 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})])],-1)),t("div",null,[t("p",ue,o(n.name),1),t("p",me,o(n.type)+" • "+o(g(n.createdAt)),1)])]),t("div",ve,[c(u,{variant:"outline",size:"xs",onClick:D=>J(n)},{default:i(()=>e[29]||(e[29]=[d(" Download ",-1)])),_:2,__:[29]},1032,["onClick"]),c(u,{variant:"outline",size:"xs",onClick:D=>K(n)},{default:i(()=>e[30]||(e[30]=[d(" Delete ",-1)])),_:2,__:[30]},1032,["onClick"])])]))),128))])):(a(),r("div",xe,e[31]||(e[31]=[t("svg",{class:"w-12 h-12 mx-auto mb-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1),t("p",null,"No documents uploaded yet",-1),t("p",{class:"text-sm"},"Upload contract documents to get started",-1)])))])):p("",!0),x.value==="slas"?(a(),r("div",ge,[t("div",pe,[e[33]||(e[33]=t("h3",{class:"text-lg font-medium text-gray-900"},"Service Level Agreements",-1)),c(u,{size:"sm",onClick:Q},{default:i(()=>e[32]||(e[32]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 6v6m0 0v6m0-6h6m-6 0H6"})],-1),d(" Add SLA ",-1)])),_:1,__:[32]})]),P.value?(a(),r("div",ye,e[34]||(e[34]=[t("div",{class:"inline-flex items-center text-gray-500"},[t("svg",{class:"animate-spin h-5 w-5 mr-2",fill:"none",viewBox:"0 0 24 24"},[t("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"}),t("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]),d(" Loading SLAs... ")],-1)]))):w.value&&w.value.length>0?(a(),r("div",fe,[(a(!0),r(f,null,h(w.value,n=>(a(),r("div",{key:n.id,class:"bg-gray-50 border border-gray-200 rounded-lg p-4"},[t("div",he,[t("h4",ke,o(n.metric.replace("_"," ")),1),c(y,{variant:"info"},{default:i(()=>e[35]||(e[35]=[d("Active",-1)])),_:1,__:[35]})]),t("p",_e,o(n.target)+" "+o(n.unit),1),t("p",we,o(n.measurement||"No measurement defined"),1)]))),128))])):(a(),r("div",be,e[36]||(e[36]=[t("svg",{class:"w-12 h-12 mx-auto mb-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"})],-1),t("p",null,"No SLAs defined",-1),t("p",{class:"text-sm"},"Add service level agreements to track performance",-1)])))])):p("",!0),x.value==="milestones"?(a(),r("div",Ce,[t("div",De,[e[38]||(e[38]=t("h3",{class:"text-lg font-medium text-gray-900"},"Contract Milestones",-1)),c(u,{size:"sm",onClick:X},{default:i(()=>e[37]||(e[37]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 6v6m0 0v6m0-6h6m-6 0H6"})],-1),d(" Add Milestone ",-1)])),_:1,__:[37]})]),I.value?(a(),r("div",je,e[39]||(e[39]=[t("div",{class:"inline-flex items-center text-gray-500"},[t("svg",{class:"animate-spin h-5 w-5 mr-2",fill:"none",viewBox:"0 0 24 24"},[t("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"}),t("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]),d(" Loading milestones... ")],-1)]))):b.value&&b.value.length>0?(a(),r("div",Me,[(a(!0),r(f,null,h(b.value,n=>(a(),r("div",{key:n.id,class:"border border-gray-200 rounded-lg p-4"},[t("div",Ve,[t("h4",ze,o(n.title),1),c(y,{variant:W(n.status)},{default:i(()=>[d(o(n.status.replace("_"," ")),1)]),_:2},1032,["variant"])]),t("p",Be,o(n.description||"No description"),1),t("div",Ae,[t("span",Le,"Due: "+o(g(n.dueDate)),1),n.status==="pending"?(a(),r("div",Ne,[c(u,{variant:"outline",size:"xs",onClick:D=>Z(n)},{default:i(()=>e[40]||(e[40]=[d(" Complete ",-1)])),_:2,__:[40]},1032,["onClick"])])):p("",!0)])]))),128))])):(a(),r("div",He,e[41]||(e[41]=[t("svg",{class:"w-12 h-12 mx-auto mb-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5H7a2 2 0 00-2 2v10a2 2 0 002 2h8a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"})],-1),t("p",null,"No milestones defined",-1),t("p",{class:"text-sm"},"Add contract milestones to track progress",-1)])))])):p("",!0)])])])):v(M)?(a(),r("div",Se,[t("div",Ee,[e[43]||(e[43]=t("svg",{class:"w-12 h-12 mx-auto mb-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L3.732 16.5c-.77.833.192 2.5 1.732 2.5z"})],-1)),e[44]||(e[44]=t("h3",{class:"text-lg font-medium text-gray-900 mb-2"},"Error loading contract",-1)),t("p",$e,o(v(M)),1),c(u,{onClick:e[0]||(e[0]=n=>l.$router.push("/contracts"))},{default:i(()=>e[42]||(e[42]=[d(" Back to Contracts ",-1)])),_:1,__:[42]})])])):(a(),r("div",Te,[t("div",Fe,[e[46]||(e[46]=t("svg",{class:"w-12 h-12 mx-auto mb-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1)),e[47]||(e[47]=t("h3",{class:"text-lg font-medium text-gray-900 mb-2"},"Contract not found",-1)),e[48]||(e[48]=t("p",{class:"text-gray-600 mb-4"},"The contract you're looking for doesn't exist or has been deleted.",-1)),c(u,{onClick:e[1]||(e[1]=n=>l.$router.push("/contracts"))},{default:i(()=>e[45]||(e[45]=[d(" Back to Contracts ",-1)])),_:1,__:[45]})])]))])]}),_:1}))}};export{We as default}; diff --git a/frontend/dist/assets/ContractsListView-Cj14_kTl.js b/frontend/dist/assets/ContractsListView-Cj14_kTl.js new file mode 100644 index 00000000..bf63e260 --- /dev/null +++ b/frontend/dist/assets/ContractsListView-Cj14_kTl.js @@ -0,0 +1 @@ +import{_ as bt,F as ft,i as x,w as i,f as T,r as u,c as R,o as Ct,s as gt,v as yt,g as m,b as r,d as l,k as C,j as D,a as h,n as pt,t as g}from"./index-QAlcqU00.js";import{u as Ft,C as v,a as Vt,f as be,b as fe,c as _,d as Ce}from"./useContractManagement-OiJwK-RO.js";import{u as wt}from"./useFormAutoSave-BrW9Wl2Q.js";import{a as Tt,F as ht}from"./FPPageHeader-CFIwZZgQ.js";import{F as kt}from"./FPInput-D5RURom0.js";import{F as Dt}from"./FPCheckbox-DcRYwN3n.js";import{F as It}from"./FPSelect-j7n_x8eB.js";import{F as Ut}from"./FPStats-DOY0PQQF.js";import{F as xt}from"./FPTable-CWvngIYd.js";import{F as St}from"./FPModal-DMoPysvU.js";import{F as Pt}from"./FPBadge-DvOitM1C.js";import{F as Rt}from"./FPTabs-qq-Tmb7J.js";import{_ as _t}from"./FormRestoreNotification-2Wflg1mH.js";import"./FPCard-AB6NRXg5.js";const Nt={name:"ContractsListView",components:{FPLayout:ht,FPPageHeader:Tt,FPTable:xt,FPModal:St,FPButton:ft,FPInput:kt,FPSelect:It,FPCheckbox:Dt,FPBadge:Pt,FPStats:Ut,FPTabs:Rt,FormRestoreNotification:_t},setup(){const O=gt(),a=yt(),{contracts:N,loading:e,error:Q,contractStats:Z,loadContracts:y,saveContract:M,removeContract:B,renewContract:X,terminateContract:d,formatContractValue:F,isContractExpiringSoon:E,clearError:W}=Ft(),k=u("all"),V=u(!1),w=u("create"),I=u(null),o=u({}),c=u("basic"),{hasUnsavedChanges:b,lastSaveTime:Y,restoreFormData:ge,clearSavedData:$,hasSavedData:ye,getSavedDataInfo:pe,markUserInteraction:ee,finishInitialization:te}=wt(o,{storageKey:"atlas_contract_form_data",saveInterval:3e3,excludeFields:[]}),L=u(!1),ae=u(null),f=u({search:"",contractType:null,priority:null,vendor:null,startDate:null}),K=u(!1),z=u(null),q=u({}),J=u(!1),j=u(null),H=u({}),oe=u({page:1,size:10,total:0}),Fe=R(()=>w.value==="create"?"Create Contract":"Edit Contract"),Ve=R({get:()=>V.value&&w.value==="create",set:t=>{t||(V.value=!1)}}),we=R({get:()=>V.value&&w.value==="edit",set:t=>{t||(V.value=!1)}}),Te=R(()=>{let t=[...N.value];if(k.value!=="all"&&(t=t.filter(n=>n.status===k.value)),f.value.search){const n=f.value.search.toLowerCase();t=t.filter(s=>{var p,G,ue,ve;return((p=s.title)==null?void 0:p.toLowerCase().includes(n))||((G=s.contractNumber)==null?void 0:G.toLowerCase().includes(n))||((ue=s.vendorName)==null?void 0:ue.toLowerCase().includes(n))||((ve=s.description)==null?void 0:ve.toLowerCase().includes(n))})}return f.value.contractType&&(t=t.filter(n=>n.contractType===f.value.contractType)),f.value.priority&&(t=t.filter(n=>n.priority===f.value.priority)),f.value.vendor&&(t=t.filter(n=>n.vendorId===f.value.vendor)),t}),he=R(()=>{const t=Z.value;return[{label:"Total Contracts",value:t.total,color:"blue"},{label:"Active",value:t.active,color:"green"},{label:"Pending Approval",value:t.pendingApproval,color:"yellow"},{label:"Expired",value:t.expired,color:"red"},{label:"Total Value",value:me(t.totalValue),color:"purple"}]}),ke=[{key:"all",label:"All Contracts",count:N.value.length},{key:v.ACTIVE,label:"Active",count:0},{key:v.PENDING_APPROVAL,label:"Pending",count:0},{key:v.EXPIRED,label:"Expired",count:0},{key:v.TERMINATED,label:"Terminated",count:0}],S=[{key:"basic",label:"Basic Information",icon:"info"},{key:"details",label:"Details",icon:"document"}],De=Object.values(Vt).map(t=>({value:t,label:be(t)})),Ie=Object.values(v).map(t=>({value:t,label:fe(t)})),Ue=Object.values(_).map(t=>({value:t,label:Ce(t)})),xe=[{value:"USD",label:"USD - US Dollar"},{value:"EUR",label:"EUR - Euro"},{value:"GBP",label:"GBP - British Pound"},{value:"CAD",label:"CAD - Canadian Dollar"}],Se=[{value:"pending",label:"Pending Review"},{value:"approved",label:"Approved"},{value:"rejected",label:"Rejected"}],Pe=[{value:"budget",label:"Budget Constraints"},{value:"performance",label:"Performance Issues"},{value:"scope_change",label:"Scope Change"},{value:"vendor_request",label:"Vendor Request"},{value:"completion",label:"Project Completion"},{value:"other",label:"Other"}],Re=u([{value:1,label:"ACME Services"},{value:2,label:"TechCorp Solutions"},{value:3,label:"Global Maintenance Inc."}]),_e=[{key:"title",label:"Contract",sortable:!0},{key:"contractType",label:"Type",sortable:!0},{key:"status",label:"Status",sortable:!0},{key:"priority",label:"Priority",sortable:!0},{key:"vendor",label:"Vendor",sortable:!0},{key:"contractValue",label:"Value",sortable:!0},{key:"endDate",label:"End Date",sortable:!0},{key:"actions",label:"Actions",width:"200px"}],U=async()=>{try{await y()}catch(t){console.error("Failed to refresh contracts:",t)}},ne=()=>{w.value="create",I.value=null,o.value={currency:"USD",status:v.DRAFT,priority:_.MEDIUM,autoRenew:!1,renewalNotificationDays:30},c.value="basic",V.value=!0,$e(),setTimeout(()=>{te()},100)},le=t=>{w.value="edit",I.value=t,o.value={...t},c.value="basic",V.value=!0,setTimeout(()=>{te()},100)},A=()=>{V.value=!1,I.value=null,o.value={},c.value="basic",$()},Ne=A,Me=A,Ee=async()=>{var t;try{const n={...o.value},s=w.value==="edit"?(t=I.value)==null?void 0:t.id:null;await M(n,s)&&(A(),await U())}catch(n){console.error("Failed to save contract:",n)}},Ae=async t=>{try{const n=await M(t);return n&&(V.value=!1,await U()),n}catch(n){throw console.error("Failed to create contract:",n),n}},Oe=async()=>{var t;try{const n={...o.value},s=await M(n,(t=I.value)==null?void 0:t.id);return s&&(A(),await U()),s}catch(n){throw console.error("Failed to update contract:",n),n}},Be=async t=>{if(confirm(`Are you sure you want to delete contract ${t.contractNumber}?`))try{await B(t.id),await U()}catch(n){console.error("Failed to delete contract:",n)}},re=t=>{a.push(`/contracts/${t}`)},Le=t=>{w.value="create",I.value=null,o.value={...t,id:void 0,contractNumber:"",title:`Copy of ${t.title}`,status:v.DRAFT},c.value="basic",V.value=!0},ze=t=>{z.value=t,q.value={startDate:t.endDate,endDate:"",contractValue:t.contractValue,notes:""},K.value=!0},ie=()=>{K.value=!1,z.value=null,q.value={}},qe=async()=>{try{await se(z.value,q.value),ie(),await U()}catch(t){console.error("Failed to renew contract:",t)}},se=async(t,n)=>{try{return await X(t.id,n)}catch(s){throw console.error("Failed to renew contract:",s),s}},je=t=>{j.value=t,H.value={terminationDate:new Date().toISOString().split("T")[0],reason:"",notes:""},J.value=!0},de=()=>{J.value=!1,j.value=null,H.value={}},He=async()=>{try{await ce(j.value,H.value),de(),await U()}catch(t){console.error("Failed to terminate contract:",t)}},ce=async(t,n)=>{try{return await d(t.id,n)}catch(s){throw console.error("Failed to terminate contract:",s),s}},Ge=t=>{k.value=t,P()},P=async()=>{const t={search:f.value.search,filters:{status:k.value!=="all"?k.value:void 0,contractType:f.value.contractType,priority:f.value.priority,vendorId:f.value.vendor}};Object.keys(t.filters).forEach(n=>{t.filters[n]===void 0&&delete t.filters[n]});try{await y(t)}catch(n){console.error("Failed to apply filters:",n)}},Xe=async t=>{k.value=t,await P()},We=async t=>{f.value.search=t,await P()},Ye=()=>{f.value={search:"",contractType:null,priority:null,vendor:null,startDate:null},k.value="all",P()},Ke=(t,n)=>{console.log("Sort:",t,n)},Je=t=>{oe.value.page=t,P()},Qe=t=>{re(t.id)},Ze=t=>{c.value=t},$e=()=>{ye()&&(ae.value=pe(),L.value=!0)},et=()=>{ge()&&(L.value=!1,ee())},tt=()=>{L.value=!1,$()},at=R(()=>{if(!Y.value)return"";const t=new Date,n=Y.value,s=Math.floor((t-n)/(1e3*60));if(s<1)return"just now";if(s===1)return"1 minute ago";if(s<60)return`${s} minutes ago`;const p=Math.floor(s/60);return p===1?"1 hour ago":p<24?`${p} hours ago`:n.toLocaleDateString()}),ot=()=>{const t=S.findIndex(n=>n.key===c.value);t{const t=S.findIndex(n=>n.key===c.value);t>0&&(c.value=S[t-1].key)},lt=t=>[v.ACTIVE,v.EXPIRED].includes(t.status),rt=t=>[v.ACTIVE,v.PENDING_APPROVAL].includes(t.status),it=t=>E(t,30),st=(t,n="USD")=>F(t,n),dt=t=>t?new Date(t).toLocaleDateString():"N/A",me=t=>t?new Intl.NumberFormat("en-US",{style:"currency",currency:"USD"}).format(t):"$0",ct=(t,n)=>!t||t.length<=n?t:t.substring(0,n)+"...",mt=t=>({[v.ACTIVE]:"success",[v.EXPIRED]:"danger",[v.PENDING_APPROVAL]:"warning",[v.TERMINATED]:"danger",[v.DRAFT]:"neutral",[v.RENEWED]:"info"})[t]||"neutral",ut=t=>({[_.CRITICAL]:"danger",[_.HIGH]:"warning",[_.MEDIUM]:"info",[_.LOW]:"neutral"})[t]||"neutral",vt=t=>{if(!t)return"text-gray-500";const n=new Date(t),p=Math.ceil((n-new Date)/(1e3*60*60*24));return p<0?"text-red-600":p<=30?"text-orange-600":"text-gray-900"};return Ct(async()=>{try{await U();const{edit:t,create:n,vendorId:s}=O.query;t?setTimeout(()=>{const p=N.value.find(G=>G.id===parseInt(t));p&&le(p),a.replace({path:"/contracts"})},500):n==="true"&&setTimeout(()=>{s&&(o.value.vendorId=parseInt(s)),ne(),a.replace({path:"/contracts"})},500)}catch(t){console.error("Failed to initialize contracts view:",t)}}),{contracts:N,loading:e,error:Q,activeTab:k,showModal:V,showCreateModal:Ve,showEditModal:we,modalMode:w,modalTitle:Fe,editingContract:I,contractForm:o,activeFormTab:c,filters:f,pagination:oe,showRestoreNotification:L,showRenewalModalDialog:K,renewingContract:z,renewalForm:q,showTerminationModalDialog:J,terminatingContract:j,terminationForm:H,filteredContracts:Te,contractStatsForDisplay:he,statusTabs:ke,formTabs:S,contractTypeOptions:De,statusOptions:Ie,priorityOptions:Ue,currencyOptions:xe,renewalStatusOptions:Se,terminationReasonOptions:Pe,vendorOptions:Re,tableColumns:_e,refreshContracts:U,createContractAction:ne,editContract:le,closeModal:A,closeCreateModal:Ne,closeEditModal:Me,handleModalConfirm:Ee,handleCreateContract:Ae,handleEditContract:Oe,deleteContract:Be,viewContract:re,duplicateContract:Le,showRenewalModal:ze,closeRenewalModal:ie,handleRenewalConfirm:qe,renewContract:se,showTerminationModal:je,closeTerminationModal:de,handleTerminationConfirm:He,terminateContract:ce,handleTabChange:Ge,applySearchFilters:P,updateStatusFilter:Xe,updateSearch:We,clearFilters:Ye,handleSort:Ke,handlePageChange:Je,handleRowClick:Qe,handleFormTabChange:Ze,restoreFormData:et,dismissRestoreNotification:tt,markContractUserInteraction:ee,contractHasUnsavedChanges:b,contractSavedDataInfo:ae,contractLastSaveTime:Y,formatContractLastSaveTime:at,nextFormTab:ot,previousFormTab:nt,canRenewContract:lt,canTerminateContract:rt,isExpiringSoon:it,formatContractValue:st,formatDate:dt,formatCurrency:me,truncateText:ct,getStatusBadge:mt,getPriorityBadge:ut,getEndDateColor:vt,clearError:W,formatContractType:be,formatStatus:fe,formatPriority:Ce}}},Mt={class:"p-6"},Et={class:"mb-6 grid grid-cols-1 md:grid-cols-3 lg:grid-cols-6 gap-4"},At={class:"font-medium text-gray-900"},Ot={class:"text-sm text-gray-600 mt-1"},Bt={key:0,class:"text-sm text-gray-500 mt-1"},Lt={class:"text-sm text-gray-900"},zt={class:"text-sm text-gray-900"},qt={key:0,class:"text-xs text-orange-600 font-medium"},jt={key:1,class:"text-sm text-gray-400"},Ht={class:"flex items-center space-x-1"},Gt={class:"border-b border-gray-200 mb-6"},Xt={key:0,class:"space-y-6"},Wt={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},Yt={key:1,class:"space-y-6"},Kt={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},Jt={class:"space-y-4"},Qt={class:"flex items-center justify-between"},Zt={class:"flex items-center space-x-4"},$t={key:0,class:"flex items-center text-sm text-gray-500"},ea={key:0,class:"w-4 h-4 mr-2 text-amber-500 animate-pulse",fill:"currentColor",viewBox:"0 0 20 20"},ta={key:1,class:"w-4 h-4 mr-2 text-green-500",fill:"currentColor",viewBox:"0 0 20 20"},aa={key:2},oa={key:3},na={class:"flex space-x-3"},la={class:"space-y-6"},ra={class:"bg-blue-50 p-4 rounded-lg"},ia={class:"text-sm font-medium text-blue-900"},sa={class:"text-sm text-blue-700"},da={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},ca={class:"space-y-6"},ma={class:"bg-red-50 p-4 rounded-lg"},ua={class:"text-sm font-medium text-red-900"},va={class:"text-sm text-red-700"},ba={class:"grid grid-cols-1 gap-6"};function fa(O,a,N,e,Q,Z){const y=T("FPButton"),M=T("FPStats"),B=T("FPTabs"),X=T("FPPageHeader"),d=T("FPInput"),F=T("FPSelect"),E=T("FPBadge"),W=T("FPTable"),k=T("FormRestoreNotification"),V=T("FPCheckbox"),w=T("FPModal"),I=T("FPLayout");return m(),x(I,null,{header:i(()=>[l(X,{title:"Contracts",description:"Manage and track service contracts, warranties, and vendor agreements",breadcrumbs:[{text:"Contracts",to:null}]},{actions:i(()=>[l(y,{variant:"outline",size:"sm",onClick:e.refreshContracts,"data-testid":"refresh-btn"},{default:i(()=>a[34]||(a[34]=[r("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),C(" Refresh ",-1)])),_:1,__:[34]},8,["onClick"]),l(y,{variant:"primary",size:"sm",onClick:e.createContractAction,"data-testid":"create-contract-btn"},{default:i(()=>a[35]||(a[35]=[r("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),C(" Create Contract ",-1)])),_:1,__:[35]},8,["onClick"])]),stats:i(()=>[l(M,{stats:e.contractStatsForDisplay},null,8,["stats"])]),tabs:i(()=>[l(B,{modelValue:e.activeTab,"onUpdate:modelValue":a[0]||(a[0]=o=>e.activeTab=o),tabs:e.statusTabs,onTabChange:e.handleTabChange},null,8,["modelValue","tabs","onTabChange"])]),_:1})]),default:i(()=>[r("div",Mt,[r("div",Et,[l(d,{modelValue:e.filters.search,"onUpdate:modelValue":a[1]||(a[1]=o=>e.filters.search=o),placeholder:"Search contracts...",onInput:e.applySearchFilters},{prepend:i(()=>a[36]||(a[36]=[r("svg",{class:"w-4 h-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1)])),_:1},8,["modelValue","onInput"]),l(F,{modelValue:e.filters.contractType,"onUpdate:modelValue":[a[2]||(a[2]=o=>e.filters.contractType=o),e.applySearchFilters],placeholder:"Filter by Type",options:e.contractTypeOptions},null,8,["modelValue","options","onUpdate:modelValue"]),l(F,{modelValue:e.filters.priority,"onUpdate:modelValue":[a[3]||(a[3]=o=>e.filters.priority=o),e.applySearchFilters],placeholder:"Filter by Priority",options:e.priorityOptions},null,8,["modelValue","options","onUpdate:modelValue"]),l(F,{modelValue:e.filters.vendor,"onUpdate:modelValue":[a[4]||(a[4]=o=>e.filters.vendor=o),e.applySearchFilters],placeholder:"Filter by Vendor",options:e.vendorOptions},null,8,["modelValue","options","onUpdate:modelValue"]),l(d,{modelValue:e.filters.startDate,"onUpdate:modelValue":a[5]||(a[5]=o=>e.filters.startDate=o),type:"date",placeholder:"Start Date",onInput:e.applySearchFilters},null,8,["modelValue","onInput"]),l(y,{variant:"outline",size:"sm",onClick:e.clearFilters},{default:i(()=>a[37]||(a[37]=[C(" Clear Filters ",-1)])),_:1,__:[37]},8,["onClick"])]),l(W,{columns:e.tableColumns,data:e.filteredContracts,loading:e.loading,pagination:e.pagination,"empty-message":"No contracts found",onSortChange:e.handleSort,onPageChange:e.handlePageChange,onRowClick:e.handleRowClick},{"column-title":i(({row:o})=>[r("div",null,[r("h4",At,g(o.title),1),r("p",Ot,g(o.contractNumber),1),o.description?(m(),h("p",Bt,g(e.truncateText(o.description,60)),1)):D("",!0)])]),"column-status":i(({row:o})=>[l(E,{variant:e.getStatusBadge(o.status)},{default:i(()=>[C(g(e.formatStatus(o.status)),1)]),_:2},1032,["variant"])]),"column-contractType":i(({row:o})=>[l(E,{variant:"neutral"},{default:i(()=>[C(g(e.formatContractType(o.contractType)),1)]),_:2},1024)]),"column-priority":i(({row:o})=>[l(E,{variant:e.getPriorityBadge(o.priority)},{default:i(()=>[C(g(e.formatPriority(o.priority)),1)]),_:2},1032,["variant"])]),"column-vendor":i(({row:o})=>[r("div",Lt,g(o.vendorName||"N/A"),1)]),"column-contractValue":i(({row:o})=>[r("div",zt,g(e.formatContractValue(o.contractValue,o.currency)),1)]),"column-endDate":i(({row:o})=>[o.endDate?(m(),h("div",{key:0,class:pt(["text-sm",e.getEndDateColor(o.endDate)])},[C(g(e.formatDate(o.endDate))+" ",1),e.isExpiringSoon(o)?(m(),h("div",qt," Expires soon ")):D("",!0)],2)):(m(),h("span",jt,"No end date"))]),"row-actions":i(({row:o})=>[r("div",Ht,[l(y,{variant:"ghost",size:"sm",onClick:c=>e.viewContract(o.id)},{default:i(()=>a[38]||(a[38]=[C(" View ",-1)])),_:2,__:[38]},1032,["onClick"]),l(y,{variant:"ghost",size:"sm",onClick:c=>e.editContract(o)},{default:i(()=>a[39]||(a[39]=[C(" Edit ",-1)])),_:2,__:[39]},1032,["onClick"]),e.canRenewContract(o)?(m(),x(y,{key:0,variant:"ghost",size:"sm",onClick:c=>e.showRenewalModal(o)},{default:i(()=>a[40]||(a[40]=[C(" Renew ",-1)])),_:2,__:[40]},1032,["onClick"])):D("",!0),l(y,{variant:"ghost",size:"sm",onClick:c=>e.deleteContract(o),class:"text-red-600"},{default:i(()=>a[41]||(a[41]=[C(" Delete ",-1)])),_:2,__:[41]},1032,["onClick"])])]),_:1},8,["columns","data","loading","pagination","onSortChange","onPageChange","onRowClick"])]),l(w,{modelValue:e.showModal,"onUpdate:modelValue":a[24]||(a[24]=o=>e.showModal=o),title:e.modalTitle,size:"xl",persistent:"",onConfirm:e.handleModalConfirm,onCancel:e.closeModal},{footer:i(()=>[r("div",Qt,[r("div",Zt,[e.contractHasUnsavedChanges||e.contractLastSaveTime?(m(),h("div",$t,[e.contractHasUnsavedChanges?(m(),h("svg",ea,a[44]||(a[44]=[r("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z","clip-rule":"evenodd"},null,-1)]))):(m(),h("svg",ta,a[45]||(a[45]=[r("path",{"fill-rule":"evenodd",d:"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z","clip-rule":"evenodd"},null,-1)]))),e.contractHasUnsavedChanges?(m(),h("span",aa,"Auto-saving...")):e.contractLastSaveTime?(m(),h("span",oa,"Last saved "+g(e.formatContractLastSaveTime),1)):D("",!0)])):D("",!0),e.activeFormTab!=="basic"?(m(),x(y,{key:1,variant:"outline",size:"sm",onClick:e.previousFormTab},{default:i(()=>a[46]||(a[46]=[C(" ← Previous ",-1)])),_:1,__:[46]},8,["onClick"])):D("",!0)]),r("div",na,[l(y,{variant:"secondary",onClick:e.closeModal},{default:i(()=>a[47]||(a[47]=[C(" Cancel ",-1)])),_:1,__:[47]},8,["onClick"]),e.activeFormTab!=="details"?(m(),x(y,{key:0,variant:"primary",onClick:e.nextFormTab},{default:i(()=>a[48]||(a[48]=[C(" Next → ",-1)])),_:1,__:[48]},8,["onClick"])):(m(),x(y,{key:1,variant:"primary",loading:e.loading,onClick:O.handleSubmitContract},{default:i(()=>[C(g(e.modalMode==="create"?"Create Contract":"Update Contract"),1)]),_:1},8,["loading","onClick"]))])])]),default:i(()=>[r("div",Gt,[l(B,{modelValue:e.activeFormTab,"onUpdate:modelValue":a[6]||(a[6]=o=>e.activeFormTab=o),tabs:e.formTabs,onTabChange:e.handleFormTabChange},null,8,["modelValue","tabs","onTabChange"])]),l(k,{visible:e.showRestoreNotification,"saved-data-info":e.contractSavedDataInfo,onRestore:e.restoreFormData,onDismiss:e.dismissRestoreNotification},null,8,["visible","saved-data-info","onRestore","onDismiss"]),e.activeFormTab==="basic"?(m(),h("div",Xt,[r("div",Wt,[l(d,{modelValue:e.contractForm.contractNumber,"onUpdate:modelValue":a[7]||(a[7]=o=>e.contractForm.contractNumber=o),label:"Contract Number",placeholder:"e.g. CONT-001",required:"",disabled:e.loading,onInput:e.markContractUserInteraction},null,8,["modelValue","disabled","onInput"]),l(d,{modelValue:e.contractForm.title,"onUpdate:modelValue":a[8]||(a[8]=o=>e.contractForm.title=o),label:"Contract Title",placeholder:"e.g. Annual Maintenance Agreement",required:"",disabled:e.loading,onInput:e.markContractUserInteraction},null,8,["modelValue","disabled","onInput"]),l(F,{modelValue:e.contractForm.contractType,"onUpdate:modelValue":[a[9]||(a[9]=o=>e.contractForm.contractType=o),e.markContractUserInteraction],label:"Contract Type",options:e.contractTypeOptions,required:"",disabled:e.loading},null,8,["modelValue","options","disabled","onUpdate:modelValue"]),l(F,{modelValue:e.contractForm.status,"onUpdate:modelValue":[a[10]||(a[10]=o=>e.contractForm.status=o),e.markContractUserInteraction],label:"Status",options:e.statusOptions,required:"",disabled:e.loading},null,8,["modelValue","options","disabled","onUpdate:modelValue"]),l(F,{modelValue:e.contractForm.priority,"onUpdate:modelValue":[a[11]||(a[11]=o=>e.contractForm.priority=o),e.markContractUserInteraction],label:"Priority",options:e.priorityOptions,required:"",disabled:e.loading},null,8,["modelValue","options","disabled","onUpdate:modelValue"]),l(F,{modelValue:e.contractForm.vendorId,"onUpdate:modelValue":[a[12]||(a[12]=o=>e.contractForm.vendorId=o),e.markContractUserInteraction],label:"Vendor",options:e.vendorOptions,required:"",disabled:e.loading},null,8,["modelValue","options","disabled","onUpdate:modelValue"]),l(d,{modelValue:e.contractForm.startDate,"onUpdate:modelValue":a[13]||(a[13]=o=>e.contractForm.startDate=o),label:"Start Date",type:"date",required:"",disabled:e.loading,onInput:e.markContractUserInteraction},null,8,["modelValue","disabled","onInput"]),l(d,{modelValue:e.contractForm.endDate,"onUpdate:modelValue":a[14]||(a[14]=o=>e.contractForm.endDate=o),label:"End Date",type:"date",required:"",disabled:e.loading,onInput:e.markContractUserInteraction},null,8,["modelValue","disabled","onInput"]),l(d,{modelValue:e.contractForm.contractValue,"onUpdate:modelValue":a[15]||(a[15]=o=>e.contractForm.contractValue=o),label:"Contract Value",type:"number",min:"0",step:"0.01",placeholder:"0.00",disabled:e.loading,onInput:e.markContractUserInteraction},null,8,["modelValue","disabled","onInput"]),l(F,{modelValue:e.contractForm.currency,"onUpdate:modelValue":[a[16]||(a[16]=o=>e.contractForm.currency=o),e.markContractUserInteraction],label:"Currency",options:e.currencyOptions,disabled:e.loading},null,8,["modelValue","options","disabled","onUpdate:modelValue"])]),l(d,{modelValue:e.contractForm.description,"onUpdate:modelValue":a[17]||(a[17]=o=>e.contractForm.description=o),label:"Description",placeholder:"Brief description of the contract...",rows:"4",disabled:e.loading,onInput:O.saveFormToStorage},null,8,["modelValue","disabled","onInput"]),a[42]||(a[42]=r("div",{class:"bg-blue-50 p-4 rounded-lg"},[r("h4",{class:"text-sm font-medium text-blue-900 mb-2"},"Contract Information"),r("ul",{class:"text-sm text-blue-800 space-y-1"},[r("li",null,"• Contract number should be unique and follow your organization's numbering system"),r("li",null,"• Start and end dates define the active period of the contract"),r("li",null,"• Priority helps with contract management and renewal planning"),r("li",null,"• Contract value is used for financial reporting and budget tracking")])],-1))])):D("",!0),e.activeFormTab==="details"?(m(),h("div",Yt,[r("div",Kt,[l(d,{modelValue:e.contractForm.paymentTerms,"onUpdate:modelValue":a[18]||(a[18]=o=>e.contractForm.paymentTerms=o),label:"Payment Terms",placeholder:"Describe payment terms and conditions...",rows:"3",disabled:e.loading,onInput:e.markContractUserInteraction},null,8,["modelValue","disabled","onInput"]),l(d,{modelValue:e.contractForm.deliverables,"onUpdate:modelValue":a[19]||(a[19]=o=>e.contractForm.deliverables=o),label:"Deliverables",placeholder:"List expected deliverables and outcomes...",rows:"3",disabled:e.loading,onInput:e.markContractUserInteraction},null,8,["modelValue","disabled","onInput"]),r("div",Jt,[a[43]||(a[43]=r("label",{class:"block text-sm font-medium text-gray-700"},"Renewal Settings",-1)),l(V,{modelValue:e.contractForm.autoRenew,"onUpdate:modelValue":[a[20]||(a[20]=o=>e.contractForm.autoRenew=o),e.markContractUserInteraction],label:"Auto-renew this contract",disabled:e.loading},null,8,["modelValue","disabled","onUpdate:modelValue"]),e.contractForm.autoRenew?(m(),x(d,{key:0,modelValue:e.contractForm.renewalNotificationDays,"onUpdate:modelValue":a[21]||(a[21]=o=>e.contractForm.renewalNotificationDays=o),label:"Renewal Notification (days before expiry)",type:"number",min:"1",max:"365",disabled:e.loading,onInput:e.markContractUserInteraction},null,8,["modelValue","disabled","onInput"])):D("",!0),e.contractForm.autoRenew?(m(),x(F,{key:1,modelValue:e.contractForm.renewalStatus,"onUpdate:modelValue":[a[22]||(a[22]=o=>e.contractForm.renewalStatus=o),e.markContractUserInteraction],label:"Renewal Status",options:e.renewalStatusOptions,disabled:e.loading},null,8,["modelValue","options","disabled","onUpdate:modelValue"])):D("",!0)]),l(d,{modelValue:e.contractForm.notes,"onUpdate:modelValue":a[23]||(a[23]=o=>e.contractForm.notes=o),label:"Additional Notes",placeholder:"Any additional notes or comments...",rows:"4",disabled:e.loading,onInput:e.markContractUserInteraction},null,8,["modelValue","disabled","onInput"])])])):D("",!0)]),_:1},8,["modelValue","title","onConfirm","onCancel"]),l(w,{modelValue:e.showRenewalModalDialog,"onUpdate:modelValue":a[29]||(a[29]=o=>e.showRenewalModalDialog=o),title:"Renew Contract",size:"lg",onConfirm:e.handleRenewalConfirm,onCancel:e.closeRenewalModal},{default:i(()=>{var o,c;return[r("div",la,[r("div",ra,[r("h4",ia,"Renewing: "+g((o=e.renewingContract)==null?void 0:o.title),1),r("p",sa,"Contract "+g((c=e.renewingContract)==null?void 0:c.contractNumber),1)]),r("div",da,[l(d,{modelValue:e.renewalForm.startDate,"onUpdate:modelValue":a[25]||(a[25]=b=>e.renewalForm.startDate=b),label:"New Start Date",type:"date",required:"",disabled:e.loading},null,8,["modelValue","disabled"]),l(d,{modelValue:e.renewalForm.endDate,"onUpdate:modelValue":a[26]||(a[26]=b=>e.renewalForm.endDate=b),label:"New End Date",type:"date",required:"",disabled:e.loading},null,8,["modelValue","disabled"]),l(d,{modelValue:e.renewalForm.contractValue,"onUpdate:modelValue":a[27]||(a[27]=b=>e.renewalForm.contractValue=b),label:"New Contract Value",type:"number",min:"0",step:"0.01",disabled:e.loading},null,8,["modelValue","disabled"])]),l(d,{modelValue:e.renewalForm.notes,"onUpdate:modelValue":a[28]||(a[28]=b=>e.renewalForm.notes=b),label:"Renewal Notes",placeholder:"Notes about this renewal...",rows:"3",disabled:e.loading},null,8,["modelValue","disabled"])])]}),_:1},8,["modelValue","onConfirm","onCancel"]),l(w,{modelValue:e.showTerminationModalDialog,"onUpdate:modelValue":a[33]||(a[33]=o=>e.showTerminationModalDialog=o),title:"Terminate Contract",size:"lg",onConfirm:e.handleTerminationConfirm,onCancel:e.closeTerminationModal},{default:i(()=>{var o,c;return[r("div",ca,[r("div",ma,[r("h4",ua,"Terminating: "+g((o=e.terminatingContract)==null?void 0:o.title),1),r("p",va,"Contract "+g((c=e.terminatingContract)==null?void 0:c.contractNumber),1)]),r("div",ba,[l(d,{modelValue:e.terminationForm.terminationDate,"onUpdate:modelValue":a[30]||(a[30]=b=>e.terminationForm.terminationDate=b),label:"Termination Date",type:"date",required:"",disabled:e.loading},null,8,["modelValue","disabled"]),l(F,{modelValue:e.terminationForm.reason,"onUpdate:modelValue":a[31]||(a[31]=b=>e.terminationForm.reason=b),label:"Termination Reason",options:e.terminationReasonOptions,required:"",disabled:e.loading},null,8,["modelValue","options","disabled"]),l(d,{modelValue:e.terminationForm.notes,"onUpdate:modelValue":a[32]||(a[32]=b=>e.terminationForm.notes=b),label:"Termination Notes",placeholder:"Explain the reason for termination...",rows:"4",required:"",disabled:e.loading},null,8,["modelValue","disabled"])])])]}),_:1},8,["modelValue","onConfirm","onCancel"])]),_:1})}const Sa=bt(Nt,[["render",fa],["__scopeId","data-v-cbd6c5af"]]);export{Sa as default}; diff --git a/frontend/dist/assets/ContractsView-C2LjMx7v.js b/frontend/dist/assets/ContractsView-C2LjMx7v.js new file mode 100644 index 00000000..2db85aee --- /dev/null +++ b/frontend/dist/assets/ContractsView-C2LjMx7v.js @@ -0,0 +1 @@ +import{i as o,f as t,g as r}from"./index-QAlcqU00.js";const a={__name:"ContractsView",setup(n){return(c,s)=>{const e=t("router-view");return r(),o(e)}}};export{a as default}; diff --git a/frontend/dist/assets/CreateAssetView-COgGs-cL.js b/frontend/dist/assets/CreateAssetView-WCmUfURR.js similarity index 71% rename from frontend/dist/assets/CreateAssetView-COgGs-cL.js rename to frontend/dist/assets/CreateAssetView-WCmUfURR.js index 7f2af974..006c945f 100644 --- a/frontend/dist/assets/CreateAssetView-COgGs-cL.js +++ b/frontend/dist/assets/CreateAssetView-WCmUfURR.js @@ -1,4 +1,4 @@ -import{_ as ie,r as k,c as M,o as re,m as fe,a as v,g as i,b as e,j as I,d as u,n as Z,i as J,aW as de,t as x,w as b,e as s,F as w,af as ve,aQ as me,Q as ge,h as ye,b4 as ne,aS as ue,k as y,b5 as xe,v as he,ae as we,aU as ke}from"./index-BUdRbiwj.js";import{C as q,c as ae,u as Ce,S as ce,a as Ve,A as Se,b as $e,d as Ae,e as _e}from"./assets-eZiqmOvX.js";import{u as Me}from"./locations-IQR_pcEX.js";import{F as T}from"./FPInput-CzR_dWoe.js";import{F as Ie}from"./FPCard-qHzcEQAE.js";import{F as le}from"./FPSelect-C7p47Ma2.js";import{F as De}from"./FPModal-DWGF1LV8.js";import{u as Be,W as je,C as Ee}from"./CustomFieldsForm-BQBEtYs0.js";import"./FPCheckbox-Bu8jNAEW.js";const Fe={class:"asset-parent-selector"},Ue={key:0,class:"mb-3 p-3 bg-blue-50 border border-blue-200 rounded-lg"},Te={class:"flex items-center justify-between"},Pe={class:"flex items-center space-x-2"},Oe={class:"font-medium text-gray-900 text-sm"},Re={class:"text-xs text-gray-500"},Le={class:"border border-gray-200 rounded-lg max-h-80 overflow-y-auto"},Ne={key:0,class:"p-4 text-center text-gray-500"},He={key:1,class:"p-4 text-center text-red-600"},ze={class:"text-sm"},qe={key:2,class:"py-1"},We=["onClick","disabled"],Qe=["onClick"],Ye={key:1,class:"w-4 h-4"},Ge={class:"flex-1 min-w-0"},Ke={class:"text-sm font-medium text-gray-900 truncate"},Ze={class:"text-xs text-gray-500"},Xe={key:2,class:"flex-shrink-0"},Je={key:3,class:"p-4 text-center text-gray-500"},et={class:"text-sm"},tt={class:"mt-3 flex items-center justify-between text-xs text-gray-500"},at={class:"flex items-center space-x-4"},st={key:0},lt={__name:"AssetParentSelector",props:{modelValue:{type:[String,Number],default:null},currentAssetId:{type:[String,Number],default:null},disabled:{type:Boolean,default:!1},required:{type:Boolean,default:!1},excludeDescendants:{type:Boolean,default:!0}},emits:["update:modelValue","change"],setup(j,{emit:H}){const D=j,f=H,{hierarchyOptions:l,flatAssetsList:p,expandedNodes:$,loading:g,error:h,loadAssetHierarchy:S,expandAll:_,collapseAll:E,expandNode:W,collapseNode:O,searchInHierarchy:Q,getHierarchyStats:G,getAssetDescendants:Y}=Be(),P=k(""),R=k(null),B=M(()=>D.modelValue?p.value.find(a=>a.id===D.modelValue):null),F=M(()=>B.value?q[B.value.category]||q[ae.OTHER]:q[ae.OTHER]),A=M(()=>B.value&&{WindIcon:"svg",ArrowUpIcon:"svg",ShieldCheckIcon:"svg",BoltIcon:"svg",WrenchIcon:"svg",CogIcon:"svg",BuildingIcon:"svg",ComputerDesktopIcon:"svg",ExclamationTriangleIcon:"svg",CubeIcon:"svg"}[F.value.icon]||"svg"),z=M(()=>({blue:"text-blue-600",green:"text-green-600",red:"text-red-600",yellow:"text-yellow-600",gray:"text-gray-600",purple:"text-purple-600",orange:"text-orange-600",brown:"text-amber-600"})[F.value.color]||"text-gray-600"),U=M(()=>({blue:"bg-blue-100",green:"bg-green-100",red:"bg-red-100",yellow:"bg-yellow-100",gray:"bg-gray-100",purple:"bg-purple-100",orange:"bg-orange-100",brown:"bg-amber-100"})[F.value.color]||"bg-gray-100"),L=M(()=>{let a=l.value;if(D.currentAssetId&&D.excludeDescendants){const d=Y(D.currentAssetId),c=new Set([D.currentAssetId,...d.map(N=>N.id)]);a=a.filter(N=>!c.has(N.value)).map(N=>({...N,disabled:c.has(N.value)}))}return a}),K=M(()=>G()),ee=a=>{a.disabled||(f("update:modelValue",a.value),f("change",{id:a.value,name:a.title.trim(),category:a.subtitle}))},X=()=>{f("update:modelValue",null),f("change",null)},te=a=>{$.value.has(a)?O(a):W(a)},r=()=>{R.value&&clearTimeout(R.value),R.value=setTimeout(()=>{P.value?Q(P.value):S()},300)},m=a=>{const d=q[a.subtitle]||q[ae.OTHER];return{WindIcon:"svg",ArrowUpIcon:"svg",ShieldCheckIcon:"svg",BoltIcon:"svg",WrenchIcon:"svg",CogIcon:"svg",BuildingIcon:"svg",ComputerDesktopIcon:"svg",ExclamationTriangleIcon:"svg",CubeIcon:"svg"}[d.icon]||"svg"},V=a=>{const d=q[a.subtitle]||q[ae.OTHER];return{blue:"text-blue-600",green:"text-green-600",red:"text-red-600",yellow:"text-yellow-600",gray:"text-gray-600",purple:"text-purple-600",orange:"text-orange-600",brown:"text-amber-600"}[d.color]||"text-gray-600"},C=a=>{const d=q[a.subtitle]||q[ae.OTHER];return{blue:"bg-blue-100",green:"bg-green-100",red:"bg-red-100",yellow:"bg-yellow-100",gray:"bg-gray-100",purple:"bg-purple-100",orange:"bg-orange-100",brown:"bg-amber-100"}[d.color]||"bg-gray-100"};return re(()=>{S()}),fe(()=>L.value,a=>{}),(a,d)=>(i(),v("div",Fe,[d[10]||(d[10]=e("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Parent Asset",-1)),B.value?(i(),v("div",Ue,[e("div",Te,[e("div",Pe,[e("div",{class:Z(["w-6 h-6 rounded flex items-center justify-center",U.value])},[(i(),J(de(A.value),{class:Z(["w-3 h-3",z.value])},null,8,["class"]))],2),e("div",null,[e("p",Oe,x(B.value.name),1),e("p",Re,x(B.value.path||F.value.label),1)])]),u(s(w),{variant:"ghost",size:"sm",onClick:X},{default:b(()=>d[3]||(d[3]=[e("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})],-1)])),_:1,__:[3]})])])):I("",!0),u(s(T),{modelValue:P.value,"onUpdate:modelValue":d[0]||(d[0]=c=>P.value=c),placeholder:"Search for parent asset...",onInput:r,class:"mb-3"},{prepend:b(()=>d[4]||(d[4]=[e("svg",{class:"w-4 h-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1)])),_:1},8,["modelValue"]),e("div",Le,[s(g)?(i(),v("div",Ne,d[5]||(d[5]=[e("svg",{class:"w-5 h-5 animate-spin mx-auto mb-2",fill:"none",viewBox:"0 0 24 24"},[e("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"}),e("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})],-1),e("span",{class:"text-sm"},"Loading assets...",-1)]))):s(h)?(i(),v("div",He,[d[6]||(d[6]=e("svg",{class:"w-5 h-5 mx-auto mb-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),e("span",ze,x(s(h)),1)])):s(l).length?(i(),v("div",qe,[(i(!0),v(ve,null,me(s(l),c=>(i(),v("button",{key:c.value,onClick:N=>ee(c),disabled:c.disabled,class:Z(["w-full px-3 py-2 text-left hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed flex items-center space-x-2",{"bg-blue-50 border-l-2 border-blue-500":j.modelValue===c.value,"text-gray-400":c.disabled}])},[e("div",{style:ge({width:`${c.depth*16}px`}),class:"flex-shrink-0"},null,4),c.hasChildren?(i(),v("button",{key:0,onClick:ye(N=>te(c.value),["stop"]),class:Z(["w-4 h-4 flex items-center justify-center text-gray-400 hover:text-gray-600",{"rotate-90":s($).has(c.value)}])},d[7]||(d[7]=[e("svg",{class:"w-3 h-3 transition-transform",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5l7 7-7 7"})],-1)]),10,Qe)):(i(),v("div",Ye)),e("div",{class:Z(["w-5 h-5 rounded flex items-center justify-center flex-shrink-0",C(c)])},[(i(),J(de(m(c)),{class:Z(["w-3 h-3",V(c)])},null,8,["class"]))],2),e("div",Ge,[e("p",Ke,x(c.title.trim()),1),e("p",Ze,x(c.subtitle),1)]),j.modelValue===c.value?(i(),v("div",Xe,d[8]||(d[8]=[e("svg",{class:"w-4 h-4 text-blue-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M5 13l4 4L19 7"})],-1)]))):I("",!0)],10,We))),128))])):(i(),v("div",Je,[d[9]||(d[9]=e("svg",{class:"w-8 h-8 mx-auto mb-2 text-gray-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10"})],-1)),e("p",et,x(P.value?"No assets found matching your search":"No assets available"),1)]))]),e("div",tt,[e("div",at,[e("button",{onClick:d[1]||(d[1]=(...c)=>s(_)&&s(_)(...c)),class:"hover:text-gray-700"},"Expand All"),e("button",{onClick:d[2]||(d[2]=(...c)=>s(E)&&s(E)(...c)),class:"hover:text-gray-700"},"Collapse All")]),K.value?(i(),v("div",st,x(K.value.totalAssets)+" assets available ",1)):I("",!0)])]))}},ot=ie(lt,[["__scopeId","data-v-1c5c2d80"]]);function rt(){const j=k(!1),H=k(!1),D=k("prompt"),f=k(null),l=k(null),p=k(null),$=k(null),g=k([]),h=k(null),S=k(!1);let _=null,E=null;const W=M(()=>H.value&&D.value==="granted"),O=M(()=>["CODE128","CODE39","CODE93","EAN8","EAN13","UPC_A","UPC_E","CODABAR","ITF","QR_CODE","DATA_MATRIX","AZTEC","PDF417"]),Q=async()=>{try{if(!navigator.mediaDevices||!navigator.mediaDevices.getUserMedia)throw new Error("Camera not supported");return H.value=!0,!0}catch{return H.value=!1,$.value="Camera not supported by this device",!1}},G=async()=>{try{S.value=!0;const r=await navigator.mediaDevices.getUserMedia({video:{facingMode:"environment",width:{ideal:1280},height:{ideal:720}}});return D.value="granted",r.getTracks().forEach(m=>m.stop()),!0}catch{return D.value="denied",$.value="Camera permission denied",!1}finally{S.value=!1}},Y=async()=>{try{const r=await navigator.mediaDevices.enumerateDevices();g.value=r.filter(V=>V.kind==="videoinput");const m=g.value.find(V=>V.label.toLowerCase().includes("back")||V.label.toLowerCase().includes("rear"));return h.value=m||g.value[0]||null,g.value}catch{return $.value="Failed to get camera devices",[]}},P=async(r=null)=>{try{if(j.value||(S.value=!0,$.value=null,D.value!=="granted"&&!await G()))return;if(await Y(),!h.value)throw new Error("No camera devices available");const m={video:{deviceId:h.value.deviceId,width:{ideal:1280},height:{ideal:720},facingMode:"environment"}};l.value=await navigator.mediaDevices.getUserMedia(m),r&&(f.value=r),f.value&&(f.value.srcObject=l.value,await f.value.play()),await B(),j.value=!0,F()}catch(m){$.value=m.message||"Failed to start scanning",console.error("Scanner error:",m)}finally{S.value=!1}},R=()=>{j.value=!1,l.value&&(l.value.getTracks().forEach(r=>r.stop()),l.value=null),f.value&&(f.value.srcObject=null),E&&(cancelAnimationFrame(E),E=null),_&&(_=null),$.value=null},B=async()=>(_={decode:r=>null},_),F=()=>{if(!j.value||!f.value)return;const r=()=>{if(j.value)try{const m=document.createElement("canvas"),V=m.getContext("2d");m.width=f.value.videoWidth,m.height=f.value.videoHeight,V.drawImage(f.value,0,0,m.width,m.height);const C=V.getImageData(0,0,m.width,m.height),a=_==null?void 0:_.decode(C);a?A(a):E=requestAnimationFrame(r)}catch(m){console.error("Scan loop error:",m),E=requestAnimationFrame(r)}};E=requestAnimationFrame(r)},A=r=>{p.value={text:r.text,format:r.format,timestamp:new Date().toISOString(),confidence:r.confidence||100},R()},z=async r=>{const m=j.value;m&&R(),h.value=g.value.find(V=>V.deviceId===r)||h.value,m&&await P()},U=(r,m="CODE128")=>` +import{_ as ie,r as k,c as M,o as re,m as be,a as v,g as i,b as e,j as I,d as u,n as X,i as J,aX as de,t as x,w as f,e as s,F as w,af as ve,aR as me,Q as ge,h as ye,aO as ne,aT as ue,k as y,b5 as xe,v as he,ae as we,aV as ke}from"./index-QAlcqU00.js";import{C as q,c as ae,u as Ce,S as ce,a as Ve,A as $e,b as Se,d as Ae,e as _e}from"./assets-CvfPiugk.js";import{u as Me}from"./locations-ElrWcwNd.js";import{F as U}from"./FPInput-D5RURom0.js";import{F as Ie}from"./FPCard-AB6NRXg5.js";import{F as le}from"./FPSelect-j7n_x8eB.js";import{F as De}from"./FPModal-DMoPysvU.js";import{u as Be,W as je,C as Ee}from"./CustomFieldsForm-BwcGiCuE.js";import"./FPCheckbox-DcRYwN3n.js";const Fe={class:"asset-parent-selector"},Te={key:0,class:"mb-3 p-3 bg-blue-50 border border-blue-200 rounded-lg"},Ue={class:"flex items-center justify-between"},Pe={class:"flex items-center space-x-2"},Oe={class:"font-medium text-gray-900 text-sm"},Re={class:"text-xs text-gray-500"},Le={class:"border border-gray-200 rounded-lg max-h-80 overflow-y-auto"},Ne={key:0,class:"p-4 text-center text-gray-500"},He={key:1,class:"p-4 text-center text-red-600"},ze={class:"text-sm"},qe={key:2,class:"py-1"},We=["onClick","disabled"],Ye=["onClick"],Qe={key:1,class:"w-4 h-4"},Ge={class:"flex-1 min-w-0"},Ke={class:"text-sm font-medium text-gray-900 truncate"},Xe={class:"text-xs text-gray-500"},Ze={key:2,class:"flex-shrink-0"},Je={key:3,class:"p-4 text-center text-gray-500"},et={class:"text-sm"},tt={class:"mt-3 flex items-center justify-between text-xs text-gray-500"},at={class:"flex items-center space-x-4"},st={key:0},lt={__name:"AssetParentSelector",props:{modelValue:{type:[String,Number],default:null},currentAssetId:{type:[String,Number],default:null},disabled:{type:Boolean,default:!1},required:{type:Boolean,default:!1},excludeDescendants:{type:Boolean,default:!0}},emits:["update:modelValue","change"],setup(j,{emit:H}){const D=j,b=H,{hierarchyOptions:l,flatAssetsList:p,expandedNodes:S,loading:g,error:h,loadAssetHierarchy:$,expandAll:_,collapseAll:E,expandNode:W,collapseNode:O,searchInHierarchy:Y,getHierarchyStats:G,getAssetDescendants:Q}=Be(),P=k(""),R=k(null),B=M(()=>D.modelValue?p.value.find(a=>a.id===D.modelValue):null),F=M(()=>B.value?q[B.value.category]||q[ae.OTHER]:q[ae.OTHER]),A=M(()=>B.value&&{WindIcon:"svg",ArrowUpIcon:"svg",ShieldCheckIcon:"svg",BoltIcon:"svg",WrenchIcon:"svg",CogIcon:"svg",BuildingIcon:"svg",ComputerDesktopIcon:"svg",ExclamationTriangleIcon:"svg",CubeIcon:"svg"}[F.value.icon]||"svg"),z=M(()=>({blue:"text-blue-600",green:"text-green-600",red:"text-red-600",yellow:"text-yellow-600",gray:"text-gray-600",purple:"text-purple-600",orange:"text-orange-600",brown:"text-amber-600"})[F.value.color]||"text-gray-600"),T=M(()=>({blue:"bg-blue-100",green:"bg-green-100",red:"bg-red-100",yellow:"bg-yellow-100",gray:"bg-gray-100",purple:"bg-purple-100",orange:"bg-orange-100",brown:"bg-amber-100"})[F.value.color]||"bg-gray-100"),L=M(()=>{let a=l.value;if(D.currentAssetId&&D.excludeDescendants){const d=Q(D.currentAssetId),c=new Set([D.currentAssetId,...d.map(N=>N.id)]);a=a.filter(N=>!c.has(N.value)).map(N=>({...N,disabled:c.has(N.value)}))}return a}),K=M(()=>G()),ee=a=>{a.disabled||(b("update:modelValue",a.value),b("change",{id:a.value,name:a.title.trim(),category:a.subtitle}))},Z=()=>{b("update:modelValue",null),b("change",null)},te=a=>{S.value.has(a)?O(a):W(a)},r=()=>{R.value&&clearTimeout(R.value),R.value=setTimeout(()=>{P.value?Y(P.value):$()},300)},m=a=>{const d=q[a.subtitle]||q[ae.OTHER];return{WindIcon:"svg",ArrowUpIcon:"svg",ShieldCheckIcon:"svg",BoltIcon:"svg",WrenchIcon:"svg",CogIcon:"svg",BuildingIcon:"svg",ComputerDesktopIcon:"svg",ExclamationTriangleIcon:"svg",CubeIcon:"svg"}[d.icon]||"svg"},V=a=>{const d=q[a.subtitle]||q[ae.OTHER];return{blue:"text-blue-600",green:"text-green-600",red:"text-red-600",yellow:"text-yellow-600",gray:"text-gray-600",purple:"text-purple-600",orange:"text-orange-600",brown:"text-amber-600"}[d.color]||"text-gray-600"},C=a=>{const d=q[a.subtitle]||q[ae.OTHER];return{blue:"bg-blue-100",green:"bg-green-100",red:"bg-red-100",yellow:"bg-yellow-100",gray:"bg-gray-100",purple:"bg-purple-100",orange:"bg-orange-100",brown:"bg-amber-100"}[d.color]||"bg-gray-100"};return re(()=>{$()}),be(()=>L.value,a=>{}),(a,d)=>(i(),v("div",Fe,[d[10]||(d[10]=e("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Parent Asset",-1)),B.value?(i(),v("div",Te,[e("div",Ue,[e("div",Pe,[e("div",{class:X(["w-6 h-6 rounded flex items-center justify-center",T.value])},[(i(),J(de(A.value),{class:X(["w-3 h-3",z.value])},null,8,["class"]))],2),e("div",null,[e("p",Oe,x(B.value.name),1),e("p",Re,x(B.value.path||F.value.label),1)])]),u(s(w),{variant:"ghost",size:"sm",onClick:Z},{default:f(()=>d[3]||(d[3]=[e("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})],-1)])),_:1,__:[3]})])])):I("",!0),u(s(U),{modelValue:P.value,"onUpdate:modelValue":d[0]||(d[0]=c=>P.value=c),placeholder:"Search for parent asset...",onInput:r,class:"mb-3"},{prepend:f(()=>d[4]||(d[4]=[e("svg",{class:"w-4 h-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1)])),_:1},8,["modelValue"]),e("div",Le,[s(g)?(i(),v("div",Ne,d[5]||(d[5]=[e("svg",{class:"w-5 h-5 animate-spin mx-auto mb-2",fill:"none",viewBox:"0 0 24 24"},[e("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"}),e("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})],-1),e("span",{class:"text-sm"},"Loading assets...",-1)]))):s(h)?(i(),v("div",He,[d[6]||(d[6]=e("svg",{class:"w-5 h-5 mx-auto mb-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),e("span",ze,x(s(h)),1)])):s(l).length?(i(),v("div",qe,[(i(!0),v(ve,null,me(s(l),c=>(i(),v("button",{key:c.value,onClick:N=>ee(c),disabled:c.disabled,class:X(["w-full px-3 py-2 text-left hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed flex items-center space-x-2",{"bg-blue-50 border-l-2 border-blue-500":j.modelValue===c.value,"text-gray-400":c.disabled}])},[e("div",{style:ge({width:`${c.depth*16}px`}),class:"flex-shrink-0"},null,4),c.hasChildren?(i(),v("button",{key:0,onClick:ye(N=>te(c.value),["stop"]),class:X(["w-4 h-4 flex items-center justify-center text-gray-400 hover:text-gray-600",{"rotate-90":s(S).has(c.value)}])},d[7]||(d[7]=[e("svg",{class:"w-3 h-3 transition-transform",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5l7 7-7 7"})],-1)]),10,Ye)):(i(),v("div",Qe)),e("div",{class:X(["w-5 h-5 rounded flex items-center justify-center flex-shrink-0",C(c)])},[(i(),J(de(m(c)),{class:X(["w-3 h-3",V(c)])},null,8,["class"]))],2),e("div",Ge,[e("p",Ke,x(c.title.trim()),1),e("p",Xe,x(c.subtitle),1)]),j.modelValue===c.value?(i(),v("div",Ze,d[8]||(d[8]=[e("svg",{class:"w-4 h-4 text-blue-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M5 13l4 4L19 7"})],-1)]))):I("",!0)],10,We))),128))])):(i(),v("div",Je,[d[9]||(d[9]=e("svg",{class:"w-8 h-8 mx-auto mb-2 text-gray-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10"})],-1)),e("p",et,x(P.value?"No assets found matching your search":"No assets available"),1)]))]),e("div",tt,[e("div",at,[e("button",{onClick:d[1]||(d[1]=(...c)=>s(_)&&s(_)(...c)),class:"hover:text-gray-700"},"Expand All"),e("button",{onClick:d[2]||(d[2]=(...c)=>s(E)&&s(E)(...c)),class:"hover:text-gray-700"},"Collapse All")]),K.value?(i(),v("div",st,x(K.value.totalAssets)+" assets available ",1)):I("",!0)])]))}},ot=ie(lt,[["__scopeId","data-v-1c5c2d80"]]);function rt(){const j=k(!1),H=k(!1),D=k("prompt"),b=k(null),l=k(null),p=k(null),S=k(null),g=k([]),h=k(null),$=k(!1);let _=null,E=null;const W=M(()=>H.value&&D.value==="granted"),O=M(()=>["CODE128","CODE39","CODE93","EAN8","EAN13","UPC_A","UPC_E","CODABAR","ITF","QR_CODE","DATA_MATRIX","AZTEC","PDF417"]),Y=async()=>{try{if(!navigator.mediaDevices||!navigator.mediaDevices.getUserMedia)throw new Error("Camera not supported");return H.value=!0,!0}catch{return H.value=!1,S.value="Camera not supported by this device",!1}},G=async()=>{try{$.value=!0;const r=await navigator.mediaDevices.getUserMedia({video:{facingMode:"environment",width:{ideal:1280},height:{ideal:720}}});return D.value="granted",r.getTracks().forEach(m=>m.stop()),!0}catch{return D.value="denied",S.value="Camera permission denied",!1}finally{$.value=!1}},Q=async()=>{try{const r=await navigator.mediaDevices.enumerateDevices();g.value=r.filter(V=>V.kind==="videoinput");const m=g.value.find(V=>V.label.toLowerCase().includes("back")||V.label.toLowerCase().includes("rear"));return h.value=m||g.value[0]||null,g.value}catch{return S.value="Failed to get camera devices",[]}},P=async(r=null)=>{try{if(j.value||($.value=!0,S.value=null,D.value!=="granted"&&!await G()))return;if(await Q(),!h.value)throw new Error("No camera devices available");const m={video:{deviceId:h.value.deviceId,width:{ideal:1280},height:{ideal:720},facingMode:"environment"}};l.value=await navigator.mediaDevices.getUserMedia(m),r&&(b.value=r),b.value&&(b.value.srcObject=l.value,await b.value.play()),await B(),j.value=!0,F()}catch(m){S.value=m.message||"Failed to start scanning",console.error("Scanner error:",m)}finally{$.value=!1}},R=()=>{j.value=!1,l.value&&(l.value.getTracks().forEach(r=>r.stop()),l.value=null),b.value&&(b.value.srcObject=null),E&&(cancelAnimationFrame(E),E=null),_&&(_=null),S.value=null},B=async()=>(_={decode:r=>null},_),F=()=>{if(!j.value||!b.value)return;const r=()=>{if(j.value)try{const m=document.createElement("canvas"),V=m.getContext("2d");m.width=b.value.videoWidth,m.height=b.value.videoHeight,V.drawImage(b.value,0,0,m.width,m.height);const C=V.getImageData(0,0,m.width,m.height),a=_==null?void 0:_.decode(C);a?A(a):E=requestAnimationFrame(r)}catch(m){console.error("Scan loop error:",m),E=requestAnimationFrame(r)}};E=requestAnimationFrame(r)},A=r=>{p.value={text:r.text,format:r.format,timestamp:new Date().toISOString(),confidence:r.confidence||100},R()},z=async r=>{const m=j.value;m&&R(),h.value=g.value.find(V=>V.deviceId===r)||h.value,m&&await P()},T=(r,m="CODE128")=>` ${r.split("").map((d,c)=>{const N=c*200/r.length,oe=200/r.length;return``}).join("")} @@ -10,4 +10,4 @@ import{_ as ie,r as k,c as M,o as re,m as fe,a as v,g as i,b as e,j as I,d as u, ${C.join("")} - `},K=(r,m)=>{const C={CODE128:a=>/^[\x00-\x7F]+$/.test(a),CODE39:a=>/^[A-Z0-9\-. $\/+%*]+$/.test(a),EAN13:a=>/^\d{13}$/.test(a),EAN8:a=>/^\d{8}$/.test(a),UPC_A:a=>/^\d{12}$/.test(a),UPC_E:a=>/^\d{8}$/.test(a),QR_CODE:()=>!0}[m];return C?C(r):!0},ee=r=>r?{...r,isValid:K(r.text,r.format),displayText:r.text,scanTime:new Date(r.timestamp).toLocaleString()}:null,X=()=>{p.value=null,$.value=null},te=async()=>{if(!f.value)return null;const r=document.createElement("canvas"),m=r.getContext("2d");return r.width=f.value.videoWidth,r.height=f.value.videoHeight,m.drawImage(f.value,0,0,r.width,r.height),r.toDataURL("image/jpeg",.8)};return re(()=>{Q()}),ne(()=>{R()}),{isScanning:j,hasCamera:H,cameraPermission:D,videoElement:f,scanResult:p,error:$,devices:g,selectedDevice:h,loading:S,canScan:W,supportedFormats:O,checkCameraSupport:Q,requestCameraPermission:G,getAvailableDevices:Y,startScanning:P,stopScanning:R,switchCamera:z,generateBarcode:U,generateQRCode:L,validateBarcode:K,formatScanResult:ee,clearResult:X,takePhoto:te}}const nt={class:"barcode-scanner"},it={class:"flex items-center justify-between mb-4"},dt={class:"text-lg font-medium text-gray-900"},ut={class:"text-sm text-gray-500"},ct={class:"flex items-center space-x-2"},vt={key:0,class:"mb-4 p-3 bg-gray-50 rounded-lg"},mt={key:1,class:"text-center py-8"},gt={key:2,class:"text-center py-8"},pt={key:3,class:"text-center py-8"},bt={key:4,class:"text-center py-8"},ft={key:5,class:"p-4 bg-red-50 border border-red-200 rounded-lg text-red-700"},yt={class:"flex items-center"},xt={class:"mt-3 flex space-x-2"},ht={key:6,class:"space-y-4"},wt={class:"p-4 bg-green-50 border border-green-200 rounded-lg"},kt={class:"flex items-start justify-between"},Ct={class:"flex items-start space-x-3"},Vt={class:"flex-1"},St={class:"mt-2 space-y-1 text-sm text-green-700"},$t={class:"font-mono bg-white px-2 py-1 rounded border"},At={class:"flex items-center space-x-4 text-xs"},_t={key:0},Mt={class:"flex space-x-2"},It={key:7,class:"space-y-4"},Dt={class:"relative bg-black rounded-lg overflow-hidden"},Bt={key:0,class:"absolute inset-0 pointer-events-none"},jt={class:"flex items-center justify-center space-x-4"},Et={class:"text-center"},Ft={class:"text-xs text-gray-500"},Ut={key:0},Tt={key:8,class:"mt-6 p-4 bg-gray-50 rounded-lg border-t"},Pt={class:"space-y-3"},Ot={class:"flex space-x-2"},Rt={__name:"BarcodeScanner",props:{title:{type:String,default:"Barcode Scanner"},description:{type:String,default:"Scan barcodes or QR codes to identify assets"},acceptedFormats:{type:Array,default:()=>[]},autoStart:{type:Boolean,default:!1}},emits:["scan-result","close","error"],setup(j,{emit:H}){const D=j,f=H,{isScanning:l,hasCamera:p,cameraPermission:$,videoElement:g,scanResult:h,error:S,devices:_,selectedDevice:E,loading:W,canScan:O,supportedFormats:Q,requestCameraPermission:G,startScanning:Y,stopScanning:P,switchCamera:R,formatScanResult:B,clearResult:F}=rt(),A=k(null),z=k(!1),U=k(!1),L=k(""),K=M(()=>_.value.map(C=>({value:C.deviceId,label:C.label||`Camera ${C.deviceId.slice(0,8)}...`}))),ee=async C=>{await R(C),z.value=!1},X=()=>{h.value&&(f("scan-result",B(h.value)),F())},te=()=>{F(),Y(A.value)},r=()=>{if(L.value.trim()){const C={text:L.value.trim(),format:"MANUAL",timestamp:new Date().toISOString(),confidence:100};f("scan-result",B(C)),L.value="",U.value=!1}},m=()=>{h.value&&D.autoStart&&X()},V=()=>{S.value&&f("error",S.value)};return re(()=>{g.value=A.value,D.autoStart&&O.value&&Y(A.value);const C=watch(()=>h.value,m),a=watch(()=>S.value,V);ne(()=>{C(),a()})}),ne(()=>{P()}),(C,a)=>{var d;return i(),v("div",nt,[e("div",it,[e("div",null,[e("h3",dt,x(j.title),1),e("p",ut,x(j.description),1)]),e("div",ct,[s(_).length>1?(i(),J(s(w),{key:0,variant:"ghost",size:"sm",onClick:a[0]||(a[0]=c=>z.value=!z.value)},{default:b(()=>a[8]||(a[8]=[e("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M3 9a2 2 0 012-2h.93a2 2 0 001.664-.89l.812-1.22A2 2 0 0110.07 4h3.86a2 2 0 011.664.89l.812 1.22A2 2 0 0018.07 7H19a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V9z"}),e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 13a3 3 0 11-6 0 3 3 0 016 0z"})],-1)])),_:1,__:[8]})):I("",!0),u(s(w),{variant:"ghost",size:"sm",onClick:a[1]||(a[1]=c=>C.$emit("close"))},{default:b(()=>a[9]||(a[9]=[e("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})],-1)])),_:1,__:[9]})])]),z.value&&s(_).length>1?(i(),v("div",vt,[a[10]||(a[10]=e("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Select Camera",-1)),u(s(le),{modelValue:(d=s(E))==null?void 0:d.deviceId,options:K.value,"onUpdate:modelValue":ee,class:"w-full"},null,8,["modelValue","options"])])):I("",!0),s($)==="prompt"?(i(),v("div",mt,[a[12]||(a[12]=ue('

Camera Access Required

Allow camera access to scan barcodes and QR codes

',3)),u(s(w),{onClick:s(G),loading:s(W)},{default:b(()=>a[11]||(a[11]=[y(" Grant Camera Access ",-1)])),_:1,__:[11]},8,["onClick","loading"])])):s($)==="denied"?(i(),v("div",gt,[a[14]||(a[14]=e("svg",{class:"w-16 h-16 mx-auto mb-4 text-red-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M18.364 18.364A9 9 0 005.636 5.636m12.728 12.728L5.636 5.636m12.728 12.728L18.364 5.636M5.636 18.364l12.728-12.728"})],-1)),a[15]||(a[15]=e("h4",{class:"text-lg font-medium text-red-900 mb-2"},"Camera Access Denied",-1)),a[16]||(a[16]=e("p",{class:"text-red-600 mb-4"},"Please enable camera access in your browser settings and refresh the page",-1)),u(s(w),{variant:"secondary",onClick:s(G)},{default:b(()=>a[13]||(a[13]=[y(" Try Again ",-1)])),_:1,__:[13]},8,["onClick"])])):s(p)?s(W)?(i(),v("div",bt,a[21]||(a[21]=[e("div",{class:"flex items-center justify-center space-x-2 text-gray-500"},[e("svg",{class:"w-8 h-8 animate-spin",fill:"none",viewBox:"0 0 24 24"},[e("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"}),e("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]),e("span",null,"Starting camera...")],-1)]))):s(S)?(i(),v("div",ft,[e("div",yt,[a[22]||(a[22]=e("svg",{class:"w-5 h-5 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),y(" "+x(s(S)),1)]),e("div",xt,[u(s(w),{variant:"secondary",size:"sm",onClick:s(F)},{default:b(()=>a[23]||(a[23]=[y(" Clear Error ",-1)])),_:1,__:[23]},8,["onClick"]),u(s(w),{variant:"secondary",size:"sm",onClick:a[3]||(a[3]=c=>U.value=!U.value)},{default:b(()=>a[24]||(a[24]=[y(" Enter Manually ",-1)])),_:1,__:[24]})])])):s(h)?(i(),v("div",ht,[e("div",wt,[e("div",kt,[e("div",Ct,[a[26]||(a[26]=e("svg",{class:"w-6 h-6 text-green-500 mt-0.5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),e("div",Vt,[a[25]||(a[25]=e("h4",{class:"font-medium text-green-800"},"Code Scanned Successfully",-1)),e("div",St,[e("div",$t,x(s(B)(s(h)).displayText),1),e("div",At,[e("span",null,"Format: "+x(s(h).format),1),e("span",null,"Time: "+x(s(B)(s(h)).scanTime),1),s(h).confidence?(i(),v("span",_t,"Confidence: "+x(Math.round(s(h).confidence))+"%",1)):I("",!0)])])])]),u(s(w),{variant:"ghost",size:"sm",onClick:s(F)},{default:b(()=>a[27]||(a[27]=[e("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})],-1)])),_:1,__:[27]},8,["onClick"])])]),e("div",Mt,[u(s(w),{onClick:X,class:"flex-1"},{default:b(()=>a[28]||(a[28]=[y(" Use This Code ",-1)])),_:1,__:[28]}),u(s(w),{variant:"secondary",onClick:te,class:"flex-1"},{default:b(()=>a[29]||(a[29]=[y(" Scan Again ",-1)])),_:1,__:[29]})])])):s(O)?(i(),v("div",It,[e("div",Dt,[e("video",{ref_key:"videoRef",ref:A,class:"w-full h-64 md:h-80 object-cover",autoplay:"",muted:"",playsinline:""},null,512),s(l)?(i(),v("div",Bt,a[30]||(a[30]=[ue('
Position barcode or QR code within the frame
',3)]))):I("",!0)]),e("div",jt,[s(l)?(i(),J(s(w),{key:1,onClick:s(P),variant:"secondary",class:"flex-1"},{default:b(()=>a[32]||(a[32]=[e("svg",{class:"w-5 h-5 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})],-1),y(" Stop Scanning ",-1)])),_:1,__:[32]},8,["onClick"])):(i(),J(s(w),{key:0,onClick:a[4]||(a[4]=c=>s(Y)(A.value)),loading:s(W),class:"flex-1"},{default:b(()=>a[31]||(a[31]=[e("svg",{class:"w-5 h-5 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),y(" Start Scanning ",-1)])),_:1,__:[31]},8,["loading"])),u(s(w),{variant:"ghost",onClick:a[5]||(a[5]=c=>U.value=!U.value)},{default:b(()=>a[33]||(a[33]=[e("svg",{class:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1)])),_:1,__:[33]})]),e("div",Et,[e("p",Ft,[y(" Supports: "+x(s(Q).slice(0,5).join(", "))+" ",1),s(Q).length>5?(i(),v("span",Ut,"and "+x(s(Q).length-5)+" more",1)):I("",!0)])])])):I("",!0):(i(),v("div",pt,[a[18]||(a[18]=e("svg",{class:"w-16 h-16 mx-auto mb-4 text-gray-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),a[19]||(a[19]=e("h4",{class:"text-lg font-medium text-gray-900 mb-2"},"Camera Not Supported",-1)),a[20]||(a[20]=e("p",{class:"text-gray-500 mb-4"},"Your device doesn't support camera access for barcode scanning",-1)),u(s(w),{variant:"secondary",onClick:a[2]||(a[2]=c=>U.value=!U.value)},{default:b(()=>a[17]||(a[17]=[y(" Enter Code Manually ",-1)])),_:1,__:[17]})])),U.value?(i(),v("div",Tt,[a[36]||(a[36]=e("h4",{class:"font-medium text-gray-900 mb-3"},"Enter Code Manually",-1)),e("div",Pt,[u(s(T),{modelValue:L.value,"onUpdate:modelValue":a[6]||(a[6]=c=>L.value=c),placeholder:"Enter barcode or QR code",onKeyup:xe(r,["enter"])},null,8,["modelValue"]),e("div",Ot,[u(s(w),{onClick:r,disabled:!L.value.trim(),class:"flex-1"},{default:b(()=>a[34]||(a[34]=[y(" Use This Code ",-1)])),_:1,__:[34]},8,["disabled"]),u(s(w),{variant:"secondary",onClick:a[7]||(a[7]=c=>U.value=!1)},{default:b(()=>a[35]||(a[35]=[y(" Cancel ",-1)])),_:1,__:[35]})])])])):I("",!0)])}}},Lt=ie(Rt,[["__scopeId","data-v-8cee4ab0"]]),Nt={class:"create-asset-view"},Ht={class:"flex items-center justify-between mb-6"},zt={class:"flex items-center space-x-3"},qt={class:"mb-8"},Wt={class:"flex items-center justify-between text-sm text-gray-500 mb-2"},Qt={class:"w-full bg-gray-200 rounded-full h-2"},Yt={class:"flex items-center justify-center mb-8"},Gt={class:"flex space-x-8","aria-label":"Progress"},Kt=["onClick"],Zt={key:0,class:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},Xt={key:1},Jt={class:"max-w-4xl mx-auto"},ea={key:0,class:"space-y-6"},ta={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},aa={class:"md:col-span-2"},sa={key:0,class:"mt-1 text-sm text-red-600"},la={class:"border-t pt-6"},oa={class:"flex items-center justify-between mb-4"},ra={key:0,class:"mt-4"},na={key:1,class:"space-y-6"},ia={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},da={class:"border-t pt-6"},ua={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},ca={key:2,class:"space-y-6"},va={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},ma={key:3,class:"space-y-6"},ga={key:4,class:"space-y-6"},pa={class:"flex items-center justify-between pt-6 border-t"},ba={key:1},fa={class:"flex items-center space-x-3"},ya={class:"space-y-4"},xa={class:"bg-gray-50 rounded-lg p-4 space-y-2 text-sm"},ha={key:0},wa={__name:"CreateAssetView",setup(j){const H=he(),D=Ce(),f=Me(),l=k({..._e}),p=k({}),$=k(!1),g=k(1),h=k(!1),S=k(!1),_=k({isValid:!0,errors:{}}),E=k({isValid:!0,errors:{}}),W=k([{id:"basic",title:"Basic Info",required:!0},{id:"physical",title:"Physical Details",required:!1},{id:"financial",title:"Financial",required:!1},{id:"warranty",title:"Warranty",required:!1},{id:"custom",title:"Custom Fields",required:!1}]),O=M(()=>W.value.length),Q=M(()=>Object.entries(q).map(([n,t])=>({value:n,label:t.label}))),G=M(()=>Object.entries(ce).map(([n,t])=>({value:n,label:t.label}))),Y=M(()=>Object.entries(Ve).map(([n,t])=>({value:n,label:t.label}))),P=M(()=>f.locations.map(n=>({value:n.id,label:n.name}))),R=M(()=>"Parent Asset Name"),B=M(()=>{switch(g.value){case 1:return z();case 2:return U();case 3:return L();case 4:return _.value.isValid;case 5:return E.value.isValid;default:return!0}}),F=M(()=>z()&&_.value.isValid&&E.value.isValid),A=n=>{const t=Ae[n];if(!t)return;const o=l.value[n];if(t.required&&(!o||o.toString().trim()==="")){p.value[n]=`${n} is required`;return}if(t.minLength&&o&&o.lengtht.maxLength){p.value[n]=`Maximum ${t.maxLength} characters allowed`;return}delete p.value[n]},z=()=>(A("name"),A("category"),A("status"),A("criticality"),!["name","category","status","criticality"].some(t=>p.value[t])),U=()=>!0,L=()=>!0,K=()=>{const n=Date.now().toString().slice(-6),t=l.value.category?l.value.category.slice(0,3).toUpperCase():"AST";l.value.assetNumber=`${t}-${n}`},ee=n=>nn{(n<=g.value||n===g.value+1&&B.value)&&(g.value=n)},r=()=>{B.value&&g.value{g.value>1&&g.value--},V=n=>{l.value.barcode=n.text,S.value=!1},C=n=>{l.value.parentAsset=n?{id:n.id}:null},a=n=>{_.value=n},d=n=>{E.value=n},c=n=>{var t;return((t=q[n])==null?void 0:t.label)||n},N=n=>{var t;return((t=ce[n])==null?void 0:t.label)||n},oe=()=>{F.value&&(h.value=!0)},pe=async()=>{try{$.value=!0;const n=await D.createAsset(l.value);h.value=!1,H.push({name:"AssetDetail",params:{id:n.id}})}catch(n){console.error("Failed to create asset:",n)}finally{$.value=!1}},be=()=>{H.push({name:"AssetsList"})};return re(()=>{f.locations.length===0&&f.loadLocations(),l.value.status=Se.OPERATIONAL,l.value.criticality=$e.MEDIUM,l.value.category=ae.OTHER}),(n,t)=>(i(),v("div",Nt,[e("div",Ht,[t[32]||(t[32]=e("div",null,[e("h1",{class:"text-2xl font-bold text-gray-900"},"Create New Asset"),e("p",{class:"text-gray-600 mt-1"},"Add a new asset to your inventory with comprehensive details")],-1)),e("div",zt,[u(s(w),{variant:"ghost",onClick:be},{default:b(()=>t[30]||(t[30]=[y(" Cancel ",-1)])),_:1,__:[30]}),u(s(w),{onClick:oe,loading:$.value,disabled:!F.value},{default:b(()=>t[31]||(t[31]=[y(" Create Asset ",-1)])),_:1,__:[31]},8,["loading","disabled"])])]),e("div",qt,[e("div",Wt,[e("span",null,"Step "+x(g.value)+" of "+x(O.value),1),e("span",null,x(Math.round(g.value/O.value*100))+"% Complete",1)]),e("div",Qt,[e("div",{class:"bg-blue-600 h-2 rounded-full transition-all duration-300",style:ge({width:`${g.value/O.value*100}%`})},null,4)])]),e("div",Yt,[e("nav",Gt,[(i(!0),v(ve,null,me(W.value,(o,se)=>(i(),v("button",{key:o.id,onClick:ka=>te(se+1),class:Z(["flex items-center text-sm font-medium",ee(se+1)])},[e("span",{class:Z(["flex items-center justify-center w-8 h-8 rounded-full border-2 mr-3",X(se+1)])},[se+1[g.value===1?(i(),v("div",ea,[t[38]||(t[38]=e("div",{class:"border-b pb-4 mb-6"},[e("h2",{class:"text-xl font-semibold text-gray-900"},"Basic Information"),e("p",{class:"text-gray-600 mt-1"},"Essential details about the asset")],-1)),e("div",ta,[u(s(T),{modelValue:l.value.name,"onUpdate:modelValue":t[0]||(t[0]=o=>l.value.name=o),label:"Asset Name",placeholder:"Enter asset name",required:!0,error:p.value.name,onBlur:t[1]||(t[1]=o=>A("name"))},null,8,["modelValue","error"]),u(s(T),{modelValue:l.value.assetNumber,"onUpdate:modelValue":t[2]||(t[2]=o=>l.value.assetNumber=o),label:"Asset Number",placeholder:"Unique identifier (auto-generated if empty)",error:p.value.assetNumber,onBlur:t[3]||(t[3]=o=>A("assetNumber"))},{append:b(()=>[u(s(w),{variant:"ghost",size:"sm",onClick:K},{default:b(()=>t[34]||(t[34]=[y(" Generate ",-1)])),_:1,__:[34]})]),_:1},8,["modelValue","error"]),e("div",aa,[t[35]||(t[35]=e("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Description",-1)),we(e("textarea",{"onUpdate:modelValue":t[4]||(t[4]=o=>l.value.description=o),class:Z(["w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",{"border-red-300":p.value.description}]),placeholder:"Describe the asset's purpose and characteristics",rows:"3",onBlur:t[5]||(t[5]=o=>A("description"))},null,34),[[ke,l.value.description]]),p.value.description?(i(),v("p",sa,x(p.value.description),1)):I("",!0)]),u(s(le),{modelValue:l.value.category,"onUpdate:modelValue":t[6]||(t[6]=o=>l.value.category=o),label:"Category",placeholder:"Select asset category",options:Q.value,required:!0,error:p.value.category,onChange:t[7]||(t[7]=o=>A("category"))},null,8,["modelValue","options","error"]),u(s(T),{modelValue:l.value.subcategory,"onUpdate:modelValue":t[8]||(t[8]=o=>l.value.subcategory=o),label:"Subcategory",placeholder:"Specific type within category",error:p.value.subcategory},null,8,["modelValue","error"]),u(s(le),{modelValue:l.value.status,"onUpdate:modelValue":t[9]||(t[9]=o=>l.value.status=o),label:"Status",placeholder:"Select current status",options:G.value,required:!0,error:p.value.status,onChange:t[10]||(t[10]=o=>A("status"))},null,8,["modelValue","options","error"]),u(s(le),{modelValue:l.value.criticality,"onUpdate:modelValue":t[11]||(t[11]=o=>l.value.criticality=o),label:"Criticality",placeholder:"Select criticality level",options:Y.value,required:!0,error:p.value.criticality,onChange:t[12]||(t[12]=o=>A("criticality"))},null,8,["modelValue","options","error"])]),e("div",la,[e("div",oa,[t[37]||(t[37]=e("div",null,[e("h3",{class:"text-lg font-medium text-gray-900"},"Barcode/QR Code"),e("p",{class:"text-gray-600 text-sm"},"Scan or enter barcode for quick identification")],-1)),u(s(w),{variant:"secondary",onClick:t[13]||(t[13]=o=>S.value=!S.value)},{default:b(()=>[t[36]||(t[36]=e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M3 9a2 2 0 012-2h.93a2 2 0 001.664-.89l.812-1.22A2 2 0 0110.07 4h3.86a2 2 0 011.664.89l.812 1.22A2 2 0 0018.07 7H19a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V9z"}),e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 13a3 3 0 11-6 0 3 3 0 016 0z"})],-1)),y(" "+x(S.value?"Hide":"Scan")+" Barcode ",1)]),_:1,__:[36]})]),u(s(T),{modelValue:l.value.barcode,"onUpdate:modelValue":t[14]||(t[14]=o=>l.value.barcode=o),label:"Barcode/QR Code",placeholder:"Enter or scan barcode",error:p.value.barcode},null,8,["modelValue","error"]),S.value?(i(),v("div",ra,[u(Lt,{title:"Scan Asset Barcode",description:"Position the barcode within the frame",onScanResult:V,onClose:t[15]||(t[15]=o=>S.value=!1)})])):I("",!0)])])):I("",!0),g.value===2?(i(),v("div",na,[t[41]||(t[41]=e("div",{class:"border-b pb-4 mb-6"},[e("h2",{class:"text-xl font-semibold text-gray-900"},"Physical Details"),e("p",{class:"text-gray-600 mt-1"},"Manufacturer information and specifications")],-1)),e("div",ia,[u(s(T),{modelValue:l.value.manufacturer,"onUpdate:modelValue":t[16]||(t[16]=o=>l.value.manufacturer=o),label:"Manufacturer",placeholder:"Asset manufacturer",error:p.value.manufacturer},null,8,["modelValue","error"]),u(s(T),{modelValue:l.value.model,"onUpdate:modelValue":t[17]||(t[17]=o=>l.value.model=o),label:"Model",placeholder:"Model number or name",error:p.value.model},null,8,["modelValue","error"]),u(s(T),{modelValue:l.value.serialNumber,"onUpdate:modelValue":t[18]||(t[18]=o=>l.value.serialNumber=o),label:"Serial Number",placeholder:"Unique serial number",error:p.value.serialNumber},null,8,["modelValue","error"]),u(s(T),{modelValue:l.value.modelYear,"onUpdate:modelValue":t[19]||(t[19]=o=>l.value.modelYear=o),modelModifiers:{number:!0},type:"number",label:"Model Year",placeholder:"Year of manufacture",min:1900,max:new Date().getFullYear()+1,error:p.value.modelYear},null,8,["modelValue","max","error"])]),e("div",da,[t[40]||(t[40]=e("h3",{class:"text-lg font-medium text-gray-900 mb-4"},"Location & Hierarchy",-1)),e("div",ua,[u(s(le),{modelValue:l.value.location,"onUpdate:modelValue":t[20]||(t[20]=o=>l.value.location=o),label:"Location",placeholder:"Select asset location",options:P.value,error:p.value.location},null,8,["modelValue","options","error"]),e("div",null,[t[39]||(t[39]=e("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Parent Asset",-1)),u(ot,{modelValue:l.value.parentAsset,"onUpdate:modelValue":t[21]||(t[21]=o=>l.value.parentAsset=o),disabled:!1,onChange:C},null,8,["modelValue"])])])])])):I("",!0),g.value===3?(i(),v("div",ca,[t[42]||(t[42]=e("div",{class:"border-b pb-4 mb-6"},[e("h2",{class:"text-xl font-semibold text-gray-900"},"Financial Information"),e("p",{class:"text-gray-600 mt-1"},"Purchase details and financial tracking")],-1)),e("div",va,[u(s(T),{modelValue:l.value.purchasePrice,"onUpdate:modelValue":t[22]||(t[22]=o=>l.value.purchasePrice=o),modelModifiers:{number:!0},type:"number",label:"Purchase Price",placeholder:"0.00",step:"0.01",min:"0",error:p.value.purchasePrice},null,8,["modelValue","error"]),u(s(T),{modelValue:l.value.currentValue,"onUpdate:modelValue":t[23]||(t[23]=o=>l.value.currentValue=o),modelModifiers:{number:!0},type:"number",label:"Current Value",placeholder:"0.00",step:"0.01",min:"0",error:p.value.currentValue},null,8,["modelValue","error"]),u(s(T),{modelValue:l.value.purchaseDate,"onUpdate:modelValue":t[24]||(t[24]=o=>l.value.purchaseDate=o),type:"date",label:"Purchase Date",error:p.value.purchaseDate},null,8,["modelValue","error"]),u(s(T),{modelValue:l.value.installationDate,"onUpdate:modelValue":t[25]||(t[25]=o=>l.value.installationDate=o),type:"date",label:"Installation Date",error:p.value.installationDate},null,8,["modelValue","error"])])])):I("",!0),g.value===4?(i(),v("div",ma,[t[43]||(t[43]=e("div",{class:"border-b pb-4 mb-6"},[e("h2",{class:"text-xl font-semibold text-gray-900"},"Warranty Information"),e("p",{class:"text-gray-600 mt-1"},"Warranty coverage and provider details")],-1)),u(je,{modelValue:l.value.warranty,"onUpdate:modelValue":t[26]||(t[26]=o=>l.value.warranty=o),onValidationChange:a},null,8,["modelValue"])])):I("",!0),g.value===5?(i(),v("div",ga,[t[44]||(t[44]=e("div",{class:"border-b pb-4 mb-6"},[e("h2",{class:"text-xl font-semibold text-gray-900"},"Additional Properties"),e("p",{class:"text-gray-600 mt-1"},"Custom fields and extended information")],-1)),u(Ee,{modelValue:l.value.customFields,"onUpdate:modelValue":t[27]||(t[27]=o=>l.value.customFields=o),onValidationChange:d},null,8,["modelValue"])])):I("",!0),e("div",pa,[g.value>1?(i(),J(s(w),{key:0,variant:"secondary",onClick:m},{default:b(()=>t[45]||(t[45]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 19l-7-7 7-7"})],-1),y(" Previous ",-1)])),_:1,__:[45]})):(i(),v("div",ba)),e("div",fa,[g.valuet[46]||(t[46]=[y(" Next ",-1),e("svg",{class:"w-4 h-4 ml-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5l7 7-7 7"})],-1)])),_:1,__:[46]},8,["disabled"])):(i(),J(s(w),{key:1,onClick:oe,loading:$.value,disabled:!F.value},{default:b(()=>t[47]||(t[47]=[y(" Create Asset ",-1)])),_:1,__:[47]},8,["loading","disabled"]))])])]),_:1})]),u(s(De),{modelValue:h.value,"onUpdate:modelValue":t[29]||(t[29]=o=>h.value=o),title:"Confirm Asset Creation"},{content:b(()=>[e("div",ya,[t[52]||(t[52]=e("p",{class:"text-gray-600"}," Are you sure you want to create this asset with the following details? ",-1)),e("div",xa,[e("div",null,[t[48]||(t[48]=e("strong",null,"Name:",-1)),y(" "+x(l.value.name),1)]),e("div",null,[t[49]||(t[49]=e("strong",null,"Category:",-1)),y(" "+x(c(l.value.category)),1)]),e("div",null,[t[50]||(t[50]=e("strong",null,"Status:",-1)),y(" "+x(N(l.value.status)),1)]),l.value.parentAsset?(i(),v("div",ha,[t[51]||(t[51]=e("strong",null,"Parent:",-1)),y(" "+x(R.value),1)])):I("",!0)])])]),actions:b(()=>[u(s(w),{variant:"secondary",onClick:t[28]||(t[28]=o=>h.value=!1)},{default:b(()=>t[53]||(t[53]=[y(" Cancel ",-1)])),_:1,__:[53]}),u(s(w),{onClick:pe,loading:$.value},{default:b(()=>t[54]||(t[54]=[y(" Create Asset ",-1)])),_:1,__:[54]},8,["loading"])]),_:1},8,["modelValue"])]))}},Ba=ie(wa,[["__scopeId","data-v-82f99eaf"]]);export{Ba as default}; + `},K=(r,m)=>{const C={CODE128:a=>/^[\x00-\x7F]+$/.test(a),CODE39:a=>/^[A-Z0-9\-. $\/+%*]+$/.test(a),EAN13:a=>/^\d{13}$/.test(a),EAN8:a=>/^\d{8}$/.test(a),UPC_A:a=>/^\d{12}$/.test(a),UPC_E:a=>/^\d{8}$/.test(a),QR_CODE:()=>!0}[m];return C?C(r):!0},ee=r=>r?{...r,isValid:K(r.text,r.format),displayText:r.text,scanTime:new Date(r.timestamp).toLocaleString()}:null,Z=()=>{p.value=null,S.value=null},te=async()=>{if(!b.value)return null;const r=document.createElement("canvas"),m=r.getContext("2d");return r.width=b.value.videoWidth,r.height=b.value.videoHeight,m.drawImage(b.value,0,0,r.width,r.height),r.toDataURL("image/jpeg",.8)};return re(()=>{Y()}),ne(()=>{R()}),{isScanning:j,hasCamera:H,cameraPermission:D,videoElement:b,scanResult:p,error:S,devices:g,selectedDevice:h,loading:$,canScan:W,supportedFormats:O,checkCameraSupport:Y,requestCameraPermission:G,getAvailableDevices:Q,startScanning:P,stopScanning:R,switchCamera:z,generateBarcode:T,generateQRCode:L,validateBarcode:K,formatScanResult:ee,clearResult:Z,takePhoto:te}}const nt={class:"barcode-scanner"},it={class:"flex items-center justify-between mb-4"},dt={class:"text-lg font-medium text-gray-900"},ut={class:"text-sm text-gray-500"},ct={class:"flex items-center space-x-2"},vt={key:0,class:"mb-4 p-3 bg-gray-50 rounded-lg"},mt={key:1,class:"text-center py-8"},gt={key:2,class:"text-center py-8"},pt={key:3,class:"text-center py-8"},ft={key:4,class:"text-center py-8"},bt={key:5,class:"p-4 bg-red-50 border border-red-200 rounded-lg text-red-700"},yt={class:"flex items-center"},xt={class:"mt-3 flex space-x-2"},ht={key:6,class:"space-y-4"},wt={class:"p-4 bg-green-50 border border-green-200 rounded-lg"},kt={class:"flex items-start justify-between"},Ct={class:"flex items-start space-x-3"},Vt={class:"flex-1"},$t={class:"mt-2 space-y-1 text-sm text-green-700"},St={class:"font-mono bg-white px-2 py-1 rounded border"},At={class:"flex items-center space-x-4 text-xs"},_t={key:0},Mt={class:"flex space-x-2"},It={key:7,class:"space-y-4"},Dt={class:"relative bg-black rounded-lg overflow-hidden"},Bt={key:0,class:"absolute inset-0 pointer-events-none"},jt={class:"flex items-center justify-center space-x-4"},Et={class:"text-center"},Ft={class:"text-xs text-gray-500"},Tt={key:0},Ut={key:8,class:"mt-6 p-4 bg-gray-50 rounded-lg border-t"},Pt={class:"space-y-3"},Ot={class:"flex space-x-2"},Rt={__name:"BarcodeScanner",props:{title:{type:String,default:"Barcode Scanner"},description:{type:String,default:"Scan barcodes or QR codes to identify assets"},acceptedFormats:{type:Array,default:()=>[]},autoStart:{type:Boolean,default:!1}},emits:["scan-result","close","error"],setup(j,{emit:H}){const D=j,b=H,{isScanning:l,hasCamera:p,cameraPermission:S,videoElement:g,scanResult:h,error:$,devices:_,selectedDevice:E,loading:W,canScan:O,supportedFormats:Y,requestCameraPermission:G,startScanning:Q,stopScanning:P,switchCamera:R,formatScanResult:B,clearResult:F}=rt(),A=k(null),z=k(!1),T=k(!1),L=k(""),K=M(()=>_.value.map(C=>({value:C.deviceId,label:C.label||`Camera ${C.deviceId.slice(0,8)}...`}))),ee=async C=>{await R(C),z.value=!1},Z=()=>{h.value&&(b("scan-result",B(h.value)),F())},te=()=>{F(),Q(A.value)},r=()=>{if(L.value.trim()){const C={text:L.value.trim(),format:"MANUAL",timestamp:new Date().toISOString(),confidence:100};b("scan-result",B(C)),L.value="",T.value=!1}},m=()=>{h.value&&D.autoStart&&Z()},V=()=>{$.value&&b("error",$.value)};return re(()=>{g.value=A.value,D.autoStart&&O.value&&Q(A.value);const C=watch(()=>h.value,m),a=watch(()=>$.value,V);ne(()=>{C(),a()})}),ne(()=>{P()}),(C,a)=>{var d;return i(),v("div",nt,[e("div",it,[e("div",null,[e("h3",dt,x(j.title),1),e("p",ut,x(j.description),1)]),e("div",ct,[s(_).length>1?(i(),J(s(w),{key:0,variant:"ghost",size:"sm",onClick:a[0]||(a[0]=c=>z.value=!z.value)},{default:f(()=>a[8]||(a[8]=[e("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M3 9a2 2 0 012-2h.93a2 2 0 001.664-.89l.812-1.22A2 2 0 0110.07 4h3.86a2 2 0 011.664.89l.812 1.22A2 2 0 0018.07 7H19a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V9z"}),e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 13a3 3 0 11-6 0 3 3 0 016 0z"})],-1)])),_:1,__:[8]})):I("",!0),u(s(w),{variant:"ghost",size:"sm",onClick:a[1]||(a[1]=c=>C.$emit("close"))},{default:f(()=>a[9]||(a[9]=[e("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})],-1)])),_:1,__:[9]})])]),z.value&&s(_).length>1?(i(),v("div",vt,[a[10]||(a[10]=e("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Select Camera",-1)),u(s(le),{modelValue:(d=s(E))==null?void 0:d.deviceId,options:K.value,"onUpdate:modelValue":ee,class:"w-full"},null,8,["modelValue","options"])])):I("",!0),s(S)==="prompt"?(i(),v("div",mt,[a[12]||(a[12]=ue('

Camera Access Required

Allow camera access to scan barcodes and QR codes

',3)),u(s(w),{onClick:s(G),loading:s(W)},{default:f(()=>a[11]||(a[11]=[y(" Grant Camera Access ",-1)])),_:1,__:[11]},8,["onClick","loading"])])):s(S)==="denied"?(i(),v("div",gt,[a[14]||(a[14]=e("svg",{class:"w-16 h-16 mx-auto mb-4 text-red-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M18.364 18.364A9 9 0 005.636 5.636m12.728 12.728L5.636 5.636m12.728 12.728L18.364 5.636M5.636 18.364l12.728-12.728"})],-1)),a[15]||(a[15]=e("h4",{class:"text-lg font-medium text-red-900 mb-2"},"Camera Access Denied",-1)),a[16]||(a[16]=e("p",{class:"text-red-600 mb-4"},"Please enable camera access in your browser settings and refresh the page",-1)),u(s(w),{variant:"secondary",onClick:s(G)},{default:f(()=>a[13]||(a[13]=[y(" Try Again ",-1)])),_:1,__:[13]},8,["onClick"])])):s(p)?s(W)?(i(),v("div",ft,a[21]||(a[21]=[e("div",{class:"flex items-center justify-center space-x-2 text-gray-500"},[e("svg",{class:"w-8 h-8 animate-spin",fill:"none",viewBox:"0 0 24 24"},[e("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"}),e("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]),e("span",null,"Starting camera...")],-1)]))):s($)?(i(),v("div",bt,[e("div",yt,[a[22]||(a[22]=e("svg",{class:"w-5 h-5 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),y(" "+x(s($)),1)]),e("div",xt,[u(s(w),{variant:"secondary",size:"sm",onClick:s(F)},{default:f(()=>a[23]||(a[23]=[y(" Clear Error ",-1)])),_:1,__:[23]},8,["onClick"]),u(s(w),{variant:"secondary",size:"sm",onClick:a[3]||(a[3]=c=>T.value=!T.value)},{default:f(()=>a[24]||(a[24]=[y(" Enter Manually ",-1)])),_:1,__:[24]})])])):s(h)?(i(),v("div",ht,[e("div",wt,[e("div",kt,[e("div",Ct,[a[26]||(a[26]=e("svg",{class:"w-6 h-6 text-green-500 mt-0.5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),e("div",Vt,[a[25]||(a[25]=e("h4",{class:"font-medium text-green-800"},"Code Scanned Successfully",-1)),e("div",$t,[e("div",St,x(s(B)(s(h)).displayText),1),e("div",At,[e("span",null,"Format: "+x(s(h).format),1),e("span",null,"Time: "+x(s(B)(s(h)).scanTime),1),s(h).confidence?(i(),v("span",_t,"Confidence: "+x(Math.round(s(h).confidence))+"%",1)):I("",!0)])])])]),u(s(w),{variant:"ghost",size:"sm",onClick:s(F)},{default:f(()=>a[27]||(a[27]=[e("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})],-1)])),_:1,__:[27]},8,["onClick"])])]),e("div",Mt,[u(s(w),{onClick:Z,class:"flex-1"},{default:f(()=>a[28]||(a[28]=[y(" Use This Code ",-1)])),_:1,__:[28]}),u(s(w),{variant:"secondary",onClick:te,class:"flex-1"},{default:f(()=>a[29]||(a[29]=[y(" Scan Again ",-1)])),_:1,__:[29]})])])):s(O)?(i(),v("div",It,[e("div",Dt,[e("video",{ref_key:"videoRef",ref:A,class:"w-full h-64 md:h-80 object-cover",autoplay:"",muted:"",playsinline:""},null,512),s(l)?(i(),v("div",Bt,a[30]||(a[30]=[ue('
Position barcode or QR code within the frame
',3)]))):I("",!0)]),e("div",jt,[s(l)?(i(),J(s(w),{key:1,onClick:s(P),variant:"secondary",class:"flex-1"},{default:f(()=>a[32]||(a[32]=[e("svg",{class:"w-5 h-5 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})],-1),y(" Stop Scanning ",-1)])),_:1,__:[32]},8,["onClick"])):(i(),J(s(w),{key:0,onClick:a[4]||(a[4]=c=>s(Q)(A.value)),loading:s(W),class:"flex-1"},{default:f(()=>a[31]||(a[31]=[e("svg",{class:"w-5 h-5 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),y(" Start Scanning ",-1)])),_:1,__:[31]},8,["loading"])),u(s(w),{variant:"ghost",onClick:a[5]||(a[5]=c=>T.value=!T.value)},{default:f(()=>a[33]||(a[33]=[e("svg",{class:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1)])),_:1,__:[33]})]),e("div",Et,[e("p",Ft,[y(" Supports: "+x(s(Y).slice(0,5).join(", "))+" ",1),s(Y).length>5?(i(),v("span",Tt,"and "+x(s(Y).length-5)+" more",1)):I("",!0)])])])):I("",!0):(i(),v("div",pt,[a[18]||(a[18]=e("svg",{class:"w-16 h-16 mx-auto mb-4 text-gray-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),a[19]||(a[19]=e("h4",{class:"text-lg font-medium text-gray-900 mb-2"},"Camera Not Supported",-1)),a[20]||(a[20]=e("p",{class:"text-gray-500 mb-4"},"Your device doesn't support camera access for barcode scanning",-1)),u(s(w),{variant:"secondary",onClick:a[2]||(a[2]=c=>T.value=!T.value)},{default:f(()=>a[17]||(a[17]=[y(" Enter Code Manually ",-1)])),_:1,__:[17]})])),T.value?(i(),v("div",Ut,[a[36]||(a[36]=e("h4",{class:"font-medium text-gray-900 mb-3"},"Enter Code Manually",-1)),e("div",Pt,[u(s(U),{modelValue:L.value,"onUpdate:modelValue":a[6]||(a[6]=c=>L.value=c),placeholder:"Enter barcode or QR code",onKeyup:xe(r,["enter"])},null,8,["modelValue"]),e("div",Ot,[u(s(w),{onClick:r,disabled:!L.value.trim(),class:"flex-1"},{default:f(()=>a[34]||(a[34]=[y(" Use This Code ",-1)])),_:1,__:[34]},8,["disabled"]),u(s(w),{variant:"secondary",onClick:a[7]||(a[7]=c=>T.value=!1)},{default:f(()=>a[35]||(a[35]=[y(" Cancel ",-1)])),_:1,__:[35]})])])])):I("",!0)])}}},Lt=ie(Rt,[["__scopeId","data-v-8cee4ab0"]]),Nt={class:"create-asset-view"},Ht={class:"flex items-center justify-between mb-6"},zt={class:"flex items-center space-x-3"},qt={class:"mb-8"},Wt={class:"flex items-center justify-between text-sm text-gray-500 mb-2"},Yt={class:"w-full bg-gray-200 rounded-full h-2"},Qt={class:"flex items-center justify-center mb-8"},Gt={class:"flex space-x-8","aria-label":"Progress"},Kt=["onClick"],Xt={key:0,class:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},Zt={key:1},Jt={class:"max-w-4xl mx-auto"},ea={key:0,class:"space-y-6"},ta={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},aa={class:"md:col-span-2"},sa={key:0,class:"mt-1 text-sm text-red-600"},la={class:"border-t pt-6"},oa={class:"flex items-center justify-between mb-4"},ra={key:0,class:"mt-4"},na={key:1,class:"space-y-6"},ia={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},da={class:"border-t pt-6"},ua={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},ca={key:2,class:"space-y-6"},va={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},ma={key:3,class:"space-y-6"},ga={key:4,class:"space-y-6"},pa={class:"flex items-center justify-between pt-6 border-t"},fa={key:1},ba={class:"flex items-center space-x-3"},ya={class:"space-y-4"},xa={class:"bg-gray-50 rounded-lg p-4 space-y-2 text-sm"},ha={key:0},wa={__name:"CreateAssetView",setup(j){const H=he(),D=Ce(),b=Me(),l=k({..._e}),p=k({}),S=k(!1),g=k(1),h=k(!1),$=k(!1),_=k({isValid:!0,errors:{}}),E=k({isValid:!0,errors:{}}),W=k([{id:"basic",title:"Basic Info",required:!0},{id:"physical",title:"Physical Details",required:!1},{id:"financial",title:"Financial",required:!1},{id:"warranty",title:"Warranty",required:!1},{id:"custom",title:"Custom Fields",required:!1}]),O=M(()=>W.value.length),Y=M(()=>Object.entries(q).map(([n,t])=>({value:n,label:t.label}))),G=M(()=>Object.entries(ce).map(([n,t])=>({value:n,label:t.label}))),Q=M(()=>Object.entries(Ve).map(([n,t])=>({value:n,label:t.label}))),P=M(()=>b.locations.map(n=>({value:n.id,label:n.name}))),R=M(()=>"Parent Asset Name"),B=M(()=>{switch(g.value){case 1:return z();case 2:return T();case 3:return L();case 4:return _.value.isValid;case 5:return E.value.isValid;default:return!0}}),F=M(()=>z()&&_.value.isValid&&E.value.isValid),A=n=>{const t=Ae[n];if(!t)return;const o=l.value[n];if(t.required&&(!o||o.toString().trim()==="")){p.value[n]=`${n} is required`;return}if(t.minLength&&o&&o.lengtht.maxLength){p.value[n]=`Maximum ${t.maxLength} characters allowed`;return}delete p.value[n]},z=()=>(A("name"),A("category"),A("status"),A("criticality"),!["name","category","status","criticality"].some(t=>p.value[t])),T=()=>!0,L=()=>!0,K=()=>{const n=Date.now().toString().slice(-6),t=l.value.category?l.value.category.slice(0,3).toUpperCase():"AST";l.value.assetNumber=`${t}-${n}`},ee=n=>nn{(n<=g.value||n===g.value+1&&B.value)&&(g.value=n)},r=()=>{B.value&&g.value{g.value>1&&g.value--},V=n=>{l.value.barcode=n.text,$.value=!1},C=n=>{l.value.parentAsset=n?{id:n.id}:null},a=n=>{_.value=n},d=n=>{E.value=n},c=n=>{var t;return((t=q[n])==null?void 0:t.label)||n},N=n=>{var t;return((t=ce[n])==null?void 0:t.label)||n},oe=()=>{F.value&&(h.value=!0)},pe=async()=>{try{S.value=!0;const n=await D.createAsset(l.value);h.value=!1,H.push({name:"AssetDetail",params:{id:n.id}})}catch(n){console.error("Failed to create asset:",n)}finally{S.value=!1}},fe=()=>{H.push({name:"AssetsList"})};return re(()=>{b.locations.length===0&&b.loadLocations(),l.value.status=$e.OPERATIONAL,l.value.criticality=Se.MEDIUM,l.value.category=ae.OTHER}),(n,t)=>(i(),v("div",Nt,[e("div",Ht,[t[32]||(t[32]=e("div",null,[e("h1",{class:"text-2xl font-bold text-gray-900"},"Create New Asset"),e("p",{class:"text-gray-600 mt-1"},"Add a new asset to your inventory with comprehensive details")],-1)),e("div",zt,[u(s(w),{variant:"ghost",onClick:fe},{default:f(()=>t[30]||(t[30]=[y(" Cancel ",-1)])),_:1,__:[30]}),u(s(w),{onClick:oe,loading:S.value,disabled:!F.value},{default:f(()=>t[31]||(t[31]=[y(" Create Asset ",-1)])),_:1,__:[31]},8,["loading","disabled"])])]),e("div",qt,[e("div",Wt,[e("span",null,"Step "+x(g.value)+" of "+x(O.value),1),e("span",null,x(Math.round(g.value/O.value*100))+"% Complete",1)]),e("div",Yt,[e("div",{class:"bg-blue-600 h-2 rounded-full transition-all duration-300",style:ge({width:`${g.value/O.value*100}%`})},null,4)])]),e("div",Qt,[e("nav",Gt,[(i(!0),v(ve,null,me(W.value,(o,se)=>(i(),v("button",{key:o.id,onClick:ka=>te(se+1),class:X(["flex items-center text-sm font-medium",ee(se+1)])},[e("span",{class:X(["flex items-center justify-center w-8 h-8 rounded-full border-2 mr-3",Z(se+1)])},[se+1[g.value===1?(i(),v("div",ea,[t[38]||(t[38]=e("div",{class:"border-b pb-4 mb-6"},[e("h2",{class:"text-xl font-semibold text-gray-900"},"Basic Information"),e("p",{class:"text-gray-600 mt-1"},"Essential details about the asset")],-1)),e("div",ta,[u(s(U),{modelValue:l.value.name,"onUpdate:modelValue":t[0]||(t[0]=o=>l.value.name=o),label:"Asset Name",placeholder:"Enter asset name",required:!0,error:p.value.name,onBlur:t[1]||(t[1]=o=>A("name"))},null,8,["modelValue","error"]),u(s(U),{modelValue:l.value.assetNumber,"onUpdate:modelValue":t[2]||(t[2]=o=>l.value.assetNumber=o),label:"Asset Number",placeholder:"Unique identifier (auto-generated if empty)",error:p.value.assetNumber,onBlur:t[3]||(t[3]=o=>A("assetNumber"))},{append:f(()=>[u(s(w),{variant:"ghost",size:"sm",onClick:K},{default:f(()=>t[34]||(t[34]=[y(" Generate ",-1)])),_:1,__:[34]})]),_:1},8,["modelValue","error"]),e("div",aa,[t[35]||(t[35]=e("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Description",-1)),we(e("textarea",{"onUpdate:modelValue":t[4]||(t[4]=o=>l.value.description=o),class:X(["w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",{"border-red-300":p.value.description}]),placeholder:"Describe the asset's purpose and characteristics",rows:"3",onBlur:t[5]||(t[5]=o=>A("description"))},null,34),[[ke,l.value.description]]),p.value.description?(i(),v("p",sa,x(p.value.description),1)):I("",!0)]),u(s(le),{modelValue:l.value.category,"onUpdate:modelValue":t[6]||(t[6]=o=>l.value.category=o),label:"Category",placeholder:"Select asset category",options:Y.value,required:!0,error:p.value.category,onChange:t[7]||(t[7]=o=>A("category"))},null,8,["modelValue","options","error"]),u(s(U),{modelValue:l.value.subcategory,"onUpdate:modelValue":t[8]||(t[8]=o=>l.value.subcategory=o),label:"Subcategory",placeholder:"Specific type within category",error:p.value.subcategory},null,8,["modelValue","error"]),u(s(le),{modelValue:l.value.status,"onUpdate:modelValue":t[9]||(t[9]=o=>l.value.status=o),label:"Status",placeholder:"Select current status",options:G.value,required:!0,error:p.value.status,onChange:t[10]||(t[10]=o=>A("status"))},null,8,["modelValue","options","error"]),u(s(le),{modelValue:l.value.criticality,"onUpdate:modelValue":t[11]||(t[11]=o=>l.value.criticality=o),label:"Criticality",placeholder:"Select criticality level",options:Q.value,required:!0,error:p.value.criticality,onChange:t[12]||(t[12]=o=>A("criticality"))},null,8,["modelValue","options","error"])]),e("div",la,[e("div",oa,[t[37]||(t[37]=e("div",null,[e("h3",{class:"text-lg font-medium text-gray-900"},"Barcode/QR Code"),e("p",{class:"text-gray-600 text-sm"},"Scan or enter barcode for quick identification")],-1)),u(s(w),{variant:"secondary",onClick:t[13]||(t[13]=o=>$.value=!$.value)},{default:f(()=>[t[36]||(t[36]=e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M3 9a2 2 0 012-2h.93a2 2 0 001.664-.89l.812-1.22A2 2 0 0110.07 4h3.86a2 2 0 011.664.89l.812 1.22A2 2 0 0018.07 7H19a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V9z"}),e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 13a3 3 0 11-6 0 3 3 0 016 0z"})],-1)),y(" "+x($.value?"Hide":"Scan")+" Barcode ",1)]),_:1,__:[36]})]),u(s(U),{modelValue:l.value.barcode,"onUpdate:modelValue":t[14]||(t[14]=o=>l.value.barcode=o),label:"Barcode/QR Code",placeholder:"Enter or scan barcode",error:p.value.barcode},null,8,["modelValue","error"]),$.value?(i(),v("div",ra,[u(Lt,{title:"Scan Asset Barcode",description:"Position the barcode within the frame",onScanResult:V,onClose:t[15]||(t[15]=o=>$.value=!1)})])):I("",!0)])])):I("",!0),g.value===2?(i(),v("div",na,[t[41]||(t[41]=e("div",{class:"border-b pb-4 mb-6"},[e("h2",{class:"text-xl font-semibold text-gray-900"},"Physical Details"),e("p",{class:"text-gray-600 mt-1"},"Manufacturer information and specifications")],-1)),e("div",ia,[u(s(U),{modelValue:l.value.manufacturer,"onUpdate:modelValue":t[16]||(t[16]=o=>l.value.manufacturer=o),label:"Manufacturer",placeholder:"Asset manufacturer",error:p.value.manufacturer},null,8,["modelValue","error"]),u(s(U),{modelValue:l.value.model,"onUpdate:modelValue":t[17]||(t[17]=o=>l.value.model=o),label:"Model",placeholder:"Model number or name",error:p.value.model},null,8,["modelValue","error"]),u(s(U),{modelValue:l.value.serialNumber,"onUpdate:modelValue":t[18]||(t[18]=o=>l.value.serialNumber=o),label:"Serial Number",placeholder:"Unique serial number",error:p.value.serialNumber},null,8,["modelValue","error"]),u(s(U),{modelValue:l.value.modelYear,"onUpdate:modelValue":t[19]||(t[19]=o=>l.value.modelYear=o),modelModifiers:{number:!0},type:"number",label:"Model Year",placeholder:"Year of manufacture",min:1900,max:new Date().getFullYear()+1,error:p.value.modelYear},null,8,["modelValue","max","error"])]),e("div",da,[t[40]||(t[40]=e("h3",{class:"text-lg font-medium text-gray-900 mb-4"},"Location & Hierarchy",-1)),e("div",ua,[u(s(le),{modelValue:l.value.location,"onUpdate:modelValue":t[20]||(t[20]=o=>l.value.location=o),label:"Location",placeholder:"Select asset location",options:P.value,error:p.value.location},null,8,["modelValue","options","error"]),e("div",null,[t[39]||(t[39]=e("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Parent Asset",-1)),u(ot,{modelValue:l.value.parentAsset,"onUpdate:modelValue":t[21]||(t[21]=o=>l.value.parentAsset=o),disabled:!1,onChange:C},null,8,["modelValue"])])])])])):I("",!0),g.value===3?(i(),v("div",ca,[t[42]||(t[42]=e("div",{class:"border-b pb-4 mb-6"},[e("h2",{class:"text-xl font-semibold text-gray-900"},"Financial Information"),e("p",{class:"text-gray-600 mt-1"},"Purchase details and financial tracking")],-1)),e("div",va,[u(s(U),{modelValue:l.value.purchasePrice,"onUpdate:modelValue":t[22]||(t[22]=o=>l.value.purchasePrice=o),modelModifiers:{number:!0},type:"number",label:"Purchase Price",placeholder:"0.00",step:"0.01",min:"0",error:p.value.purchasePrice},null,8,["modelValue","error"]),u(s(U),{modelValue:l.value.currentValue,"onUpdate:modelValue":t[23]||(t[23]=o=>l.value.currentValue=o),modelModifiers:{number:!0},type:"number",label:"Current Value",placeholder:"0.00",step:"0.01",min:"0",error:p.value.currentValue},null,8,["modelValue","error"]),u(s(U),{modelValue:l.value.purchaseDate,"onUpdate:modelValue":t[24]||(t[24]=o=>l.value.purchaseDate=o),type:"date",label:"Purchase Date",error:p.value.purchaseDate},null,8,["modelValue","error"]),u(s(U),{modelValue:l.value.installationDate,"onUpdate:modelValue":t[25]||(t[25]=o=>l.value.installationDate=o),type:"date",label:"Installation Date",error:p.value.installationDate},null,8,["modelValue","error"])])])):I("",!0),g.value===4?(i(),v("div",ma,[t[43]||(t[43]=e("div",{class:"border-b pb-4 mb-6"},[e("h2",{class:"text-xl font-semibold text-gray-900"},"Warranty Information"),e("p",{class:"text-gray-600 mt-1"},"Warranty coverage and provider details")],-1)),u(je,{modelValue:l.value.warranty,"onUpdate:modelValue":t[26]||(t[26]=o=>l.value.warranty=o),onValidationChange:a},null,8,["modelValue"])])):I("",!0),g.value===5?(i(),v("div",ga,[t[44]||(t[44]=e("div",{class:"border-b pb-4 mb-6"},[e("h2",{class:"text-xl font-semibold text-gray-900"},"Additional Properties"),e("p",{class:"text-gray-600 mt-1"},"Custom fields and extended information")],-1)),u(Ee,{modelValue:l.value.customFields,"onUpdate:modelValue":t[27]||(t[27]=o=>l.value.customFields=o),onValidationChange:d},null,8,["modelValue"])])):I("",!0),e("div",pa,[g.value>1?(i(),J(s(w),{key:0,variant:"secondary",onClick:m},{default:f(()=>t[45]||(t[45]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 19l-7-7 7-7"})],-1),y(" Previous ",-1)])),_:1,__:[45]})):(i(),v("div",fa)),e("div",ba,[g.valuet[46]||(t[46]=[y(" Next ",-1),e("svg",{class:"w-4 h-4 ml-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5l7 7-7 7"})],-1)])),_:1,__:[46]},8,["disabled"])):(i(),J(s(w),{key:1,onClick:oe,loading:S.value,disabled:!F.value},{default:f(()=>t[47]||(t[47]=[y(" Create Asset ",-1)])),_:1,__:[47]},8,["loading","disabled"]))])])]),_:1})]),u(s(De),{modelValue:h.value,"onUpdate:modelValue":t[29]||(t[29]=o=>h.value=o),title:"Confirm Asset Creation"},{content:f(()=>[e("div",ya,[t[52]||(t[52]=e("p",{class:"text-gray-600"}," Are you sure you want to create this asset with the following details? ",-1)),e("div",xa,[e("div",null,[t[48]||(t[48]=e("strong",null,"Name:",-1)),y(" "+x(l.value.name),1)]),e("div",null,[t[49]||(t[49]=e("strong",null,"Category:",-1)),y(" "+x(c(l.value.category)),1)]),e("div",null,[t[50]||(t[50]=e("strong",null,"Status:",-1)),y(" "+x(N(l.value.status)),1)]),l.value.parentAsset?(i(),v("div",ha,[t[51]||(t[51]=e("strong",null,"Parent:",-1)),y(" "+x(R.value),1)])):I("",!0)])])]),actions:f(()=>[u(s(w),{variant:"secondary",onClick:t[28]||(t[28]=o=>h.value=!1)},{default:f(()=>t[53]||(t[53]=[y(" Cancel ",-1)])),_:1,__:[53]}),u(s(w),{onClick:pe,loading:S.value},{default:f(()=>t[54]||(t[54]=[y(" Create Asset ",-1)])),_:1,__:[54]},8,["loading"])]),_:1},8,["modelValue"])]))}},Ba=ie(wa,[["__scopeId","data-v-82f99eaf"]]);export{Ba as default}; diff --git a/frontend/dist/assets/CreateWorkOrderView-Cry3C_bU.js b/frontend/dist/assets/CreateWorkOrderView-CTlG1l1H.js similarity index 93% rename from frontend/dist/assets/CreateWorkOrderView-Cry3C_bU.js rename to frontend/dist/assets/CreateWorkOrderView-CTlG1l1H.js index 3e74537c..b507fcac 100644 --- a/frontend/dist/assets/CreateWorkOrderView-Cry3C_bU.js +++ b/frontend/dist/assets/CreateWorkOrderView-CTlG1l1H.js @@ -1 +1 @@ -import{_,q as F,r as m,c as T,o as W,a as d,b as l,d as o,w as p,f as L,e as i,F as b,h as R,j as z,af as E,aQ as H,v as N,g as n,k as y,t as V}from"./index-BUdRbiwj.js";import{F as f}from"./FPInput-CzR_dWoe.js";import{F as g}from"./FPSelect-C7p47Ma2.js";import{W as $}from"./WorkOrderIdGenerator-BPGN0soM.js";import{T as q,P as j,A as G}from"./AudioRecorder-CcKMXbWt.js";import"./FPCheckbox-Bu8jNAEW.js";import"./FPBadge-BKY5dPnL.js";const J={class:"create-work-order"},K={class:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8"},Q={class:"mb-8"},X={class:"flex","aria-label":"Breadcrumb"},Y={class:"flex items-center space-x-4"},Z={class:"mt-2 flex items-center justify-between"},ee={class:"flex space-x-2"},le={key:0},te={key:1},ae={class:"bg-white shadow rounded-lg p-6"},re={class:"grid grid-cols-1 gap-6 sm:grid-cols-2"},oe={class:"sm:col-span-2"},se={class:"sm:col-span-2"},ie={class:"sm:col-span-2"},de={class:"bg-white shadow rounded-lg p-6"},ne={class:"grid grid-cols-1 gap-6 sm:grid-cols-2"},ue={class:"bg-white shadow rounded-lg p-6"},me={class:"grid grid-cols-1 gap-6 sm:grid-cols-3"},ve={class:"grid grid-cols-1 lg:grid-cols-2 gap-8"},pe={class:"bg-white shadow rounded-lg p-6"},ge={class:"bg-white shadow rounded-lg p-6"},ce={class:"bg-white shadow rounded-lg p-6"},be={class:"mb-8"},fe={class:"border-2 border-dashed border-gray-300 rounded-lg p-8 text-center"},ye={class:"mt-4"},xe={class:"cursor-pointer"},ke={key:0,class:"mt-4 space-y-2"},we={class:"flex items-center"},Ve={class:"text-sm text-gray-900"},he={class:"text-xs text-gray-500 ml-2"},Ie={class:"flex justify-end space-x-4 pt-6 border-t border-gray-200"},Ce={key:0},Me={key:1},De={__name:"CreateWorkOrderView",setup(Oe){const h=N(),I=F(),v=m(!1),s=m({}),t=m({workOrderId:"",title:"",description:"",priority:"MEDIUM",dueDate:"",startDate:"",estimatedDuration:null,primaryUserId:null,assignedToIds:[],assetId:null,locationId:null,categoryId:null,tasks:[],parts:[],audioRecordings:[],files:[]}),C=[{value:"LOW",label:"Low"},{value:"MEDIUM",label:"Medium"},{value:"HIGH",label:"High"},{value:"CRITICAL",label:"Critical"}],x=m([{value:1,label:"John Smith"},{value:2,label:"Jane Doe"},{value:3,label:"Mike Johnson"},{value:4,label:"Sarah Wilson"},{value:5,label:"Tom Brown"}]),M=m([{value:1,label:"Conveyor Belt System A1"},{value:2,label:"Hydraulic Press B2"},{value:3,label:"CNC Machine C3"},{value:4,label:"Packaging Line D4"},{value:5,label:"Air Compressor E5"}]),D=m([{value:1,label:"Production Floor A"},{value:2,label:"Warehouse B"},{value:3,label:"Maintenance Shop"},{value:4,label:"Office Building"},{value:5,label:"Loading Dock"}]),O=m([{value:1,label:"Mechanical Repair"},{value:2,label:"Electrical Maintenance"},{value:3,label:"Preventive Maintenance"},{value:4,label:"Emergency Repair"},{value:5,label:"Inspection"}]),c=T(()=>I.user),U=()=>{var e,u;s.value={};let r=!0;return(e=t.value.title)!=null&&e.trim()||(s.value.title="Title is required",r=!1),t.value.priority||(s.value.priority="Priority is required",r=!1),(u=t.value.workOrderId)!=null&&u.trim()||(s.value.workOrderId="Work Order ID is required",r=!1),r},k=async()=>{if(U())try{v.value=!0,await new Promise(e=>setTimeout(e,2e3));const r={...t.value,id:Math.floor(Math.random()*1e3)+1,status:"OPEN",createdAt:new Date().toISOString(),createdBy:c.value};console.log("Creating work order:",r),h.push(`/work-orders/${r.id}`)}catch(r){s.value.general=r.message||"Failed to create work order"}finally{v.value=!1}},S=r=>{console.log("Recording saved:",r)},B=r=>{const e=Array.from(r.target.files);t.value.files.push(...e)},P=r=>{t.value.files.splice(r,1)},A=r=>{if(!r)return"0 B";const e=["B","KB","MB","GB"],u=Math.floor(Math.log(r)/Math.log(1024));return`${Math.round(r/Math.pow(1024,u)*100)/100} ${e[u]}`};return W(()=>{c.value&&(t.value.primaryUserId=c.value.id);const r=new Date;r.setMinutes(r.getMinutes()-r.getTimezoneOffset()),t.value.startDate=r.toISOString().slice(0,16)}),(r,e)=>{const u=L("router-link");return n(),d("div",J,[l("div",K,[l("div",Q,[l("nav",X,[l("ol",Y,[l("li",null,[o(u,{to:"/work-orders",class:"text-gray-400 hover:text-gray-500"},{default:p(()=>e[17]||(e[17]=[y(" Work Orders ",-1)])),_:1,__:[17]})]),e[18]||(e[18]=l("li",null,[l("svg",{class:"flex-shrink-0 h-5 w-5 text-gray-300",fill:"currentColor",viewBox:"0 0 20 20"},[l("path",{"fill-rule":"evenodd",d:"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z","clip-rule":"evenodd"})])],-1)),e[19]||(e[19]=l("li",{class:"text-gray-500"},"Create New",-1))])]),l("div",Z,[e[21]||(e[21]=l("div",null,[l("h1",{class:"text-2xl font-bold text-gray-900"},"Create Work Order"),l("p",{class:"text-gray-600"},"Create a new work order for maintenance tasks")],-1)),l("div",ee,[o(i(b),{variant:"outline",onClick:e[0]||(e[0]=a=>r.$router.push("/work-orders"))},{default:p(()=>e[20]||(e[20]=[y(" Cancel ",-1)])),_:1,__:[20]}),o(i(b),{variant:"primary",onClick:k,disabled:v.value},{default:p(()=>[v.value?(n(),d("span",le,"Creating...")):(n(),d("span",te,"Create Work Order"))]),_:1},8,["disabled"])])])]),l("form",{onSubmit:R(k,["prevent"]),class:"space-y-8"},[l("div",ae,[e[22]||(e[22]=l("h2",{class:"text-lg font-medium text-gray-900 mb-6"},"Basic Information",-1)),l("div",re,[l("div",oe,[o($,{modelValue:t.value.workOrderId,"onUpdate:modelValue":e[1]||(e[1]=a=>t.value.workOrderId=a),error:s.value.workOrderId},null,8,["modelValue","error"])]),l("div",se,[o(i(f),{modelValue:t.value.title,"onUpdate:modelValue":e[2]||(e[2]=a=>t.value.title=a),label:"Title",placeholder:"Enter work order title",required:"",error:s.value.title},null,8,["modelValue","error"])]),l("div",ie,[o(i(f),{modelValue:t.value.description,"onUpdate:modelValue":e[3]||(e[3]=a=>t.value.description=a),label:"Description",type:"textarea",rows:"4",placeholder:"Enter detailed description of the work to be performed",error:s.value.description},null,8,["modelValue","error"])]),l("div",null,[o(i(g),{modelValue:t.value.priority,"onUpdate:modelValue":e[4]||(e[4]=a=>t.value.priority=a),label:"Priority",options:C,required:"",error:s.value.priority},null,8,["modelValue","error"])]),l("div",null,[o(i(f),{modelValue:t.value.dueDate,"onUpdate:modelValue":e[5]||(e[5]=a=>t.value.dueDate=a),label:"Due Date",type:"datetime-local",error:s.value.dueDate},null,8,["modelValue","error"])]),l("div",null,[o(i(f),{modelValue:t.value.estimatedDuration,"onUpdate:modelValue":e[6]||(e[6]=a=>t.value.estimatedDuration=a),label:"Estimated Duration (hours)",type:"number",step:"0.5",min:"0",placeholder:"0",error:s.value.estimatedDuration},null,8,["modelValue","error"])]),l("div",null,[o(i(f),{modelValue:t.value.startDate,"onUpdate:modelValue":e[7]||(e[7]=a=>t.value.startDate=a),label:"Planned Start Date",type:"datetime-local",error:s.value.startDate},null,8,["modelValue","error"])])])]),l("div",de,[e[23]||(e[23]=l("h2",{class:"text-lg font-medium text-gray-900 mb-6"},"Assignment",-1)),l("div",ne,[l("div",null,[o(i(g),{modelValue:t.value.primaryUserId,"onUpdate:modelValue":e[8]||(e[8]=a=>t.value.primaryUserId=a),label:"Primary Assignee",options:x.value,searchable:"",placeholder:"Select primary assignee",error:s.value.primaryUserId},null,8,["modelValue","options","error"])]),l("div",null,[o(i(g),{modelValue:t.value.assignedToIds,"onUpdate:modelValue":e[9]||(e[9]=a=>t.value.assignedToIds=a),label:"Team Members",options:x.value,multiple:"",searchable:"",placeholder:"Select team members",error:s.value.assignedToIds},null,8,["modelValue","options","error"])])])]),l("div",ue,[e[24]||(e[24]=l("h2",{class:"text-lg font-medium text-gray-900 mb-6"},"Asset & Location",-1)),l("div",me,[l("div",null,[o(i(g),{modelValue:t.value.assetId,"onUpdate:modelValue":e[10]||(e[10]=a=>t.value.assetId=a),label:"Asset",options:M.value,searchable:"",clearable:"",placeholder:"Select asset",error:s.value.assetId},null,8,["modelValue","options","error"])]),l("div",null,[o(i(g),{modelValue:t.value.locationId,"onUpdate:modelValue":e[11]||(e[11]=a=>t.value.locationId=a),label:"Location",options:D.value,searchable:"",clearable:"",placeholder:"Select location",error:s.value.locationId},null,8,["modelValue","options","error"])]),l("div",null,[o(i(g),{modelValue:t.value.categoryId,"onUpdate:modelValue":e[12]||(e[12]=a=>t.value.categoryId=a),label:"Category",options:O.value,searchable:"",clearable:"",placeholder:"Select category",error:s.value.categoryId},null,8,["modelValue","options","error"])])])]),l("div",ve,[l("div",pe,[e[25]||(e[25]=l("h2",{class:"text-lg font-medium text-gray-900 mb-6"},"Tasks & Checklist",-1)),e[26]||(e[26]=l("p",{class:"text-sm text-gray-600 mb-4"},"Define the tasks required to complete this work order",-1)),o(q,{modelValue:t.value.tasks,"onUpdate:modelValue":e[13]||(e[13]=a=>t.value.tasks=a),"current-user":c.value,"allow-edit":!0},null,8,["modelValue","current-user"])]),l("div",ge,[e[27]||(e[27]=l("h2",{class:"text-lg font-medium text-gray-900 mb-6"},"Parts & Materials",-1)),e[28]||(e[28]=l("p",{class:"text-sm text-gray-600 mb-4"},"Plan the parts and materials needed for this work order",-1)),o(j,{modelValue:t.value.parts,"onUpdate:modelValue":e[14]||(e[14]=a=>t.value.parts=a),"allow-add":!0,"allow-edit":!0},null,8,["modelValue"])])]),l("div",ce,[e[36]||(e[36]=l("h2",{class:"text-lg font-medium text-gray-900 mb-6"},"Initial Documentation",-1)),e[37]||(e[37]=l("p",{class:"text-sm text-gray-600 mb-4"},"Add any initial notes, photos, or documentation for this work order",-1)),l("div",be,[e[29]||(e[29]=l("h3",{class:"text-md font-medium text-gray-900 mb-4"},"Audio Notes",-1)),o(G,{modelValue:t.value.audioRecordings,"onUpdate:modelValue":e[15]||(e[15]=a=>t.value.audioRecordings=a),"current-user":c.value,"auto-transcribe":!0,"enable-visualization":!0,onRecordingSaved:S},null,8,["modelValue","current-user"])]),l("div",null,[e[35]||(e[35]=l("h3",{class:"text-md font-medium text-gray-900 mb-4"},"File Attachments",-1)),l("div",fe,[e[31]||(e[31]=l("svg",{class:"mx-auto h-12 w-12 text-gray-400",stroke:"currentColor",fill:"none",viewBox:"0 0 48 48"},[l("path",{d:"M28 8H12a4 4 0 00-4 4v20m32-12v8m0 0v8a4 4 0 01-4 4H12a4 4 0 01-4-4v-4m32-4l-3.172-3.172a4 4 0 00-5.656 0L28 28M8 32l9.172-9.172a4 4 0 015.656 0L28 28m0 0l4 4m4-24h8m-4-4v8m-12 4h.02","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})],-1)),l("div",ye,[l("label",xe,[e[30]||(e[30]=l("span",{class:"mt-2 block text-sm font-medium text-gray-900"}," Drop files here or click to upload ",-1)),l("input",{type:"file",class:"sr-only",multiple:"",onChange:B},null,32)])]),e[32]||(e[32]=l("p",{class:"mt-2 text-xs text-gray-500"}," PNG, JPG, PDF up to 10MB each ",-1))]),t.value.files.length>0?(n(),d("div",ke,[(n(!0),d(E,null,H(t.value.files,(a,w)=>(n(),d("div",{key:w,class:"flex items-center justify-between p-3 bg-gray-50 rounded-lg"},[l("div",we,[e[33]||(e[33]=l("svg",{class:"w-5 h-5 text-gray-400 mr-3",fill:"currentColor",viewBox:"0 0 20 20"},[l("path",{"fill-rule":"evenodd",d:"M4 4a2 2 0 012-2h4.586A2 2 0 0112 2.586L15.414 6A2 2 0 0116 7.414V16a2 2 0 01-2 2H6a2 2 0 01-2-2V4zm2 6a1 1 0 011-1h6a1 1 0 110 2H7a1 1 0 01-1-1zm1 3a1 1 0 100 2h6a1 1 0 100-2H7z","clip-rule":"evenodd"})],-1)),l("span",Ve,V(a.name),1),l("span",he,"("+V(A(a.size))+")",1)]),o(i(b),{variant:"ghost",size:"sm",onClick:Ue=>P(w),class:"text-red-600 hover:text-red-800"},{default:p(()=>e[34]||(e[34]=[y(" Remove ",-1)])),_:2,__:[34]},1032,["onClick"])]))),128))])):z("",!0)])]),l("div",Ie,[o(i(b),{type:"button",variant:"outline",onClick:e[16]||(e[16]=a=>r.$router.push("/work-orders"))},{default:p(()=>e[38]||(e[38]=[y(" Cancel ",-1)])),_:1,__:[38]}),o(i(b),{type:"submit",variant:"primary",disabled:v.value},{default:p(()=>[v.value?(n(),d("span",Ce,"Creating...")):(n(),d("span",Me,"Create Work Order"))]),_:1},8,["disabled"])])],32)])])}}},We=_(De,[["__scopeId","data-v-d8064b6b"]]);export{We as default}; +import{_,q as F,r as m,c as T,o as R,a as d,b as l,d as o,w as p,f as W,e as i,F as b,h as L,j as z,af as E,aR as H,v as N,g as n,k as y,t as V}from"./index-QAlcqU00.js";import{F as f}from"./FPInput-D5RURom0.js";import{F as g}from"./FPSelect-j7n_x8eB.js";import{W as $}from"./WorkOrderIdGenerator-2pnsJNJL.js";import{T as q,P as j,A as G}from"./AudioRecorder-BzlZ8cXI.js";import"./FPCheckbox-DcRYwN3n.js";import"./FPBadge-DvOitM1C.js";const J={class:"create-work-order"},K={class:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8"},Q={class:"mb-8"},X={class:"flex","aria-label":"Breadcrumb"},Y={class:"flex items-center space-x-4"},Z={class:"mt-2 flex items-center justify-between"},ee={class:"flex space-x-2"},le={key:0},te={key:1},ae={class:"bg-white shadow rounded-lg p-6"},re={class:"grid grid-cols-1 gap-6 sm:grid-cols-2"},oe={class:"sm:col-span-2"},se={class:"sm:col-span-2"},ie={class:"sm:col-span-2"},de={class:"bg-white shadow rounded-lg p-6"},ne={class:"grid grid-cols-1 gap-6 sm:grid-cols-2"},ue={class:"bg-white shadow rounded-lg p-6"},me={class:"grid grid-cols-1 gap-6 sm:grid-cols-3"},ve={class:"grid grid-cols-1 lg:grid-cols-2 gap-8"},pe={class:"bg-white shadow rounded-lg p-6"},ge={class:"bg-white shadow rounded-lg p-6"},ce={class:"bg-white shadow rounded-lg p-6"},be={class:"mb-8"},fe={class:"border-2 border-dashed border-gray-300 rounded-lg p-8 text-center"},ye={class:"mt-4"},xe={class:"cursor-pointer"},ke={key:0,class:"mt-4 space-y-2"},we={class:"flex items-center"},Ve={class:"text-sm text-gray-900"},he={class:"text-xs text-gray-500 ml-2"},Ie={class:"flex justify-end space-x-4 pt-6 border-t border-gray-200"},Ce={key:0},Me={key:1},De={__name:"CreateWorkOrderView",setup(Oe){const h=N(),I=F(),v=m(!1),s=m({}),t=m({workOrderId:"",title:"",description:"",priority:"MEDIUM",dueDate:"",startDate:"",estimatedDuration:null,primaryUserId:null,assignedToIds:[],assetId:null,locationId:null,categoryId:null,tasks:[],parts:[],audioRecordings:[],files:[]}),C=[{value:"LOW",label:"Low"},{value:"MEDIUM",label:"Medium"},{value:"HIGH",label:"High"},{value:"CRITICAL",label:"Critical"}],x=m([{value:1,label:"John Smith"},{value:2,label:"Jane Doe"},{value:3,label:"Mike Johnson"},{value:4,label:"Sarah Wilson"},{value:5,label:"Tom Brown"}]),M=m([{value:1,label:"Conveyor Belt System A1"},{value:2,label:"Hydraulic Press B2"},{value:3,label:"CNC Machine C3"},{value:4,label:"Packaging Line D4"},{value:5,label:"Air Compressor E5"}]),D=m([{value:1,label:"Production Floor A"},{value:2,label:"Warehouse B"},{value:3,label:"Maintenance Shop"},{value:4,label:"Office Building"},{value:5,label:"Loading Dock"}]),O=m([{value:1,label:"Mechanical Repair"},{value:2,label:"Electrical Maintenance"},{value:3,label:"Preventive Maintenance"},{value:4,label:"Emergency Repair"},{value:5,label:"Inspection"}]),c=T(()=>I.user),U=()=>{var e,u;s.value={};let r=!0;return(e=t.value.title)!=null&&e.trim()||(s.value.title="Title is required",r=!1),t.value.priority||(s.value.priority="Priority is required",r=!1),(u=t.value.workOrderId)!=null&&u.trim()||(s.value.workOrderId="Work Order ID is required",r=!1),r},k=async()=>{if(U())try{v.value=!0,await new Promise(e=>setTimeout(e,2e3));const r={...t.value,id:Math.floor(Math.random()*1e3)+1,status:"OPEN",createdAt:new Date().toISOString(),createdBy:c.value};console.log("Creating work order:",r),h.push(`/work-orders/${r.id}`)}catch(r){s.value.general=r.message||"Failed to create work order"}finally{v.value=!1}},S=r=>{console.log("Recording saved:",r)},B=r=>{const e=Array.from(r.target.files);t.value.files.push(...e)},P=r=>{t.value.files.splice(r,1)},A=r=>{if(!r)return"0 B";const e=["B","KB","MB","GB"],u=Math.floor(Math.log(r)/Math.log(1024));return`${Math.round(r/Math.pow(1024,u)*100)/100} ${e[u]}`};return R(()=>{c.value&&(t.value.primaryUserId=c.value.id);const r=new Date;r.setMinutes(r.getMinutes()-r.getTimezoneOffset()),t.value.startDate=r.toISOString().slice(0,16)}),(r,e)=>{const u=W("router-link");return n(),d("div",J,[l("div",K,[l("div",Q,[l("nav",X,[l("ol",Y,[l("li",null,[o(u,{to:"/work-orders",class:"text-gray-400 hover:text-gray-500"},{default:p(()=>e[17]||(e[17]=[y(" Work Orders ",-1)])),_:1,__:[17]})]),e[18]||(e[18]=l("li",null,[l("svg",{class:"flex-shrink-0 h-5 w-5 text-gray-300",fill:"currentColor",viewBox:"0 0 20 20"},[l("path",{"fill-rule":"evenodd",d:"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z","clip-rule":"evenodd"})])],-1)),e[19]||(e[19]=l("li",{class:"text-gray-500"},"Create New",-1))])]),l("div",Z,[e[21]||(e[21]=l("div",null,[l("h1",{class:"text-2xl font-bold text-gray-900"},"Create Work Order"),l("p",{class:"text-gray-600"},"Create a new work order for maintenance tasks")],-1)),l("div",ee,[o(i(b),{variant:"outline",onClick:e[0]||(e[0]=a=>r.$router.push("/work-orders"))},{default:p(()=>e[20]||(e[20]=[y(" Cancel ",-1)])),_:1,__:[20]}),o(i(b),{variant:"primary",onClick:k,disabled:v.value},{default:p(()=>[v.value?(n(),d("span",le,"Creating...")):(n(),d("span",te,"Create Work Order"))]),_:1},8,["disabled"])])])]),l("form",{onSubmit:L(k,["prevent"]),class:"space-y-8"},[l("div",ae,[e[22]||(e[22]=l("h2",{class:"text-lg font-medium text-gray-900 mb-6"},"Basic Information",-1)),l("div",re,[l("div",oe,[o($,{modelValue:t.value.workOrderId,"onUpdate:modelValue":e[1]||(e[1]=a=>t.value.workOrderId=a),error:s.value.workOrderId},null,8,["modelValue","error"])]),l("div",se,[o(i(f),{modelValue:t.value.title,"onUpdate:modelValue":e[2]||(e[2]=a=>t.value.title=a),label:"Title",placeholder:"Enter work order title",required:"",error:s.value.title},null,8,["modelValue","error"])]),l("div",ie,[o(i(f),{modelValue:t.value.description,"onUpdate:modelValue":e[3]||(e[3]=a=>t.value.description=a),label:"Description",type:"textarea",rows:"4",placeholder:"Enter detailed description of the work to be performed",error:s.value.description},null,8,["modelValue","error"])]),l("div",null,[o(i(g),{modelValue:t.value.priority,"onUpdate:modelValue":e[4]||(e[4]=a=>t.value.priority=a),label:"Priority",options:C,required:"",error:s.value.priority},null,8,["modelValue","error"])]),l("div",null,[o(i(f),{modelValue:t.value.dueDate,"onUpdate:modelValue":e[5]||(e[5]=a=>t.value.dueDate=a),label:"Due Date",type:"datetime-local",error:s.value.dueDate},null,8,["modelValue","error"])]),l("div",null,[o(i(f),{modelValue:t.value.estimatedDuration,"onUpdate:modelValue":e[6]||(e[6]=a=>t.value.estimatedDuration=a),label:"Estimated Duration (hours)",type:"number",step:"0.5",min:"0",placeholder:"0",error:s.value.estimatedDuration},null,8,["modelValue","error"])]),l("div",null,[o(i(f),{modelValue:t.value.startDate,"onUpdate:modelValue":e[7]||(e[7]=a=>t.value.startDate=a),label:"Planned Start Date",type:"datetime-local",error:s.value.startDate},null,8,["modelValue","error"])])])]),l("div",de,[e[23]||(e[23]=l("h2",{class:"text-lg font-medium text-gray-900 mb-6"},"Assignment",-1)),l("div",ne,[l("div",null,[o(i(g),{modelValue:t.value.primaryUserId,"onUpdate:modelValue":e[8]||(e[8]=a=>t.value.primaryUserId=a),label:"Primary Assignee",options:x.value,searchable:"",placeholder:"Select primary assignee",error:s.value.primaryUserId},null,8,["modelValue","options","error"])]),l("div",null,[o(i(g),{modelValue:t.value.assignedToIds,"onUpdate:modelValue":e[9]||(e[9]=a=>t.value.assignedToIds=a),label:"Team Members",options:x.value,multiple:"",searchable:"",placeholder:"Select team members",error:s.value.assignedToIds},null,8,["modelValue","options","error"])])])]),l("div",ue,[e[24]||(e[24]=l("h2",{class:"text-lg font-medium text-gray-900 mb-6"},"Asset & Location",-1)),l("div",me,[l("div",null,[o(i(g),{modelValue:t.value.assetId,"onUpdate:modelValue":e[10]||(e[10]=a=>t.value.assetId=a),label:"Asset",options:M.value,searchable:"",clearable:"",placeholder:"Select asset",error:s.value.assetId},null,8,["modelValue","options","error"])]),l("div",null,[o(i(g),{modelValue:t.value.locationId,"onUpdate:modelValue":e[11]||(e[11]=a=>t.value.locationId=a),label:"Location",options:D.value,searchable:"",clearable:"",placeholder:"Select location",error:s.value.locationId},null,8,["modelValue","options","error"])]),l("div",null,[o(i(g),{modelValue:t.value.categoryId,"onUpdate:modelValue":e[12]||(e[12]=a=>t.value.categoryId=a),label:"Category",options:O.value,searchable:"",clearable:"",placeholder:"Select category",error:s.value.categoryId},null,8,["modelValue","options","error"])])])]),l("div",ve,[l("div",pe,[e[25]||(e[25]=l("h2",{class:"text-lg font-medium text-gray-900 mb-6"},"Tasks & Checklist",-1)),e[26]||(e[26]=l("p",{class:"text-sm text-gray-600 mb-4"},"Define the tasks required to complete this work order",-1)),o(q,{modelValue:t.value.tasks,"onUpdate:modelValue":e[13]||(e[13]=a=>t.value.tasks=a),"current-user":c.value,"allow-edit":!0},null,8,["modelValue","current-user"])]),l("div",ge,[e[27]||(e[27]=l("h2",{class:"text-lg font-medium text-gray-900 mb-6"},"Parts & Materials",-1)),e[28]||(e[28]=l("p",{class:"text-sm text-gray-600 mb-4"},"Plan the parts and materials needed for this work order",-1)),o(j,{modelValue:t.value.parts,"onUpdate:modelValue":e[14]||(e[14]=a=>t.value.parts=a),"allow-add":!0,"allow-edit":!0},null,8,["modelValue"])])]),l("div",ce,[e[36]||(e[36]=l("h2",{class:"text-lg font-medium text-gray-900 mb-6"},"Initial Documentation",-1)),e[37]||(e[37]=l("p",{class:"text-sm text-gray-600 mb-4"},"Add any initial notes, photos, or documentation for this work order",-1)),l("div",be,[e[29]||(e[29]=l("h3",{class:"text-md font-medium text-gray-900 mb-4"},"Audio Notes",-1)),o(G,{modelValue:t.value.audioRecordings,"onUpdate:modelValue":e[15]||(e[15]=a=>t.value.audioRecordings=a),"current-user":c.value,"auto-transcribe":!0,"enable-visualization":!0,onRecordingSaved:S},null,8,["modelValue","current-user"])]),l("div",null,[e[35]||(e[35]=l("h3",{class:"text-md font-medium text-gray-900 mb-4"},"File Attachments",-1)),l("div",fe,[e[31]||(e[31]=l("svg",{class:"mx-auto h-12 w-12 text-gray-400",stroke:"currentColor",fill:"none",viewBox:"0 0 48 48"},[l("path",{d:"M28 8H12a4 4 0 00-4 4v20m32-12v8m0 0v8a4 4 0 01-4 4H12a4 4 0 01-4-4v-4m32-4l-3.172-3.172a4 4 0 00-5.656 0L28 28M8 32l9.172-9.172a4 4 0 015.656 0L28 28m0 0l4 4m4-24h8m-4-4v8m-12 4h.02","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})],-1)),l("div",ye,[l("label",xe,[e[30]||(e[30]=l("span",{class:"mt-2 block text-sm font-medium text-gray-900"}," Drop files here or click to upload ",-1)),l("input",{type:"file",class:"sr-only",multiple:"",onChange:B},null,32)])]),e[32]||(e[32]=l("p",{class:"mt-2 text-xs text-gray-500"}," PNG, JPG, PDF up to 10MB each ",-1))]),t.value.files.length>0?(n(),d("div",ke,[(n(!0),d(E,null,H(t.value.files,(a,w)=>(n(),d("div",{key:w,class:"flex items-center justify-between p-3 bg-gray-50 rounded-lg"},[l("div",we,[e[33]||(e[33]=l("svg",{class:"w-5 h-5 text-gray-400 mr-3",fill:"currentColor",viewBox:"0 0 20 20"},[l("path",{"fill-rule":"evenodd",d:"M4 4a2 2 0 012-2h4.586A2 2 0 0112 2.586L15.414 6A2 2 0 0116 7.414V16a2 2 0 01-2 2H6a2 2 0 01-2-2V4zm2 6a1 1 0 011-1h6a1 1 0 110 2H7a1 1 0 01-1-1zm1 3a1 1 0 100 2h6a1 1 0 100-2H7z","clip-rule":"evenodd"})],-1)),l("span",Ve,V(a.name),1),l("span",he,"("+V(A(a.size))+")",1)]),o(i(b),{variant:"ghost",size:"sm",onClick:Ue=>P(w),class:"text-red-600 hover:text-red-800"},{default:p(()=>e[34]||(e[34]=[y(" Remove ",-1)])),_:2,__:[34]},1032,["onClick"])]))),128))])):z("",!0)])]),l("div",Ie,[o(i(b),{type:"button",variant:"outline",onClick:e[16]||(e[16]=a=>r.$router.push("/work-orders"))},{default:p(()=>e[38]||(e[38]=[y(" Cancel ",-1)])),_:1,__:[38]}),o(i(b),{type:"submit",variant:"primary",disabled:v.value},{default:p(()=>[v.value?(n(),d("span",Ce,"Creating...")):(n(),d("span",Me,"Create Work Order"))]),_:1},8,["disabled"])])],32)])])}}},Re=_(De,[["__scopeId","data-v-d8064b6b"]]);export{Re as default}; diff --git a/frontend/dist/assets/CustomFieldsForm-BQBEtYs0.js b/frontend/dist/assets/CustomFieldsForm-BwcGiCuE.js similarity index 96% rename from frontend/dist/assets/CustomFieldsForm-BQBEtYs0.js rename to frontend/dist/assets/CustomFieldsForm-BwcGiCuE.js index b2378302..199dedd6 100644 --- a/frontend/dist/assets/CustomFieldsForm-BQBEtYs0.js +++ b/frontend/dist/assets/CustomFieldsForm-BwcGiCuE.js @@ -1 +1 @@ -import{r as $,c as A,b8 as fe,_ as ye,m as ae,o as me,a as f,g as p,b as r,d as j,e as k,j as M,n as z,i as K,aW as ue,t as C,Q as be,ae as se,aU as de,af as Z,aQ as ee,k as ce,w as te,F as we,ai as xe,b9 as ne,aT as De}from"./index-BUdRbiwj.js";import{W}from"./assets-eZiqmOvX.js";import{F as H}from"./FPInput-CzR_dWoe.js";import{F as le}from"./FPCheckbox-Bu8jNAEW.js";import{F as oe}from"./FPSelect-C7p47Ma2.js";const ve=new fe;function qt(){const x=$([]),g=$([]),D=$(new Set),V=$(null),_=$(!1),O=$(null),N=A(()=>g.value.filter(l=>!l.parentAsset)),P=A(()=>{const l={};return g.value.forEach(o=>{var c;const y=((c=o.parentAsset)==null?void 0:c.id)||"root";l[y]||(l[y]=[]),l[y].push(o)}),l}),B=A(()=>{const l=(o,y=0)=>o.reduce((c,T)=>{const I=P.value[T.id]||[],Y=I.length>0;return c.push({value:T.id,title:`${" ".repeat(y)}${T.name}`,subtitle:T.category,disabled:!1,depth:y,hasChildren:Y}),Y&&D.value.has(T.id)&&c.push(...l(I,y+1)),c},[]);return l(N.value)}),G=async()=>{try{_.value=!0,O.value=null;const l=await ve.getAll();g.value=l.data||l,U()}catch(l){O.value=null,g.value=[],console.warn("Asset hierarchy API not available, using fallback:",l.message)}finally{_.value=!1}},U=()=>{const l=(o,y=0)=>{var T;const c=P.value[o.id]||[];return{id:o.id,name:o.name,category:o.category,status:o.status,criticality:o.criticality,parentId:((T=o.parentAsset)==null?void 0:T.id)||null,children:c.map(I=>l(I,y+1)),depth:y,path:X(o),isExpanded:D.value.has(o.id),hasChildren:c.length>0,isLoading:!1,asset:o}};x.value=N.value.map(o=>l(o))},X=l=>{const o=[];let y=l;for(;y;)o.unshift(y.name),y=g.value.find(c=>{var T;return c.id===((T=y.parentAsset)==null?void 0:T.id)});return o.join(" > ")},q=l=>{D.value.add(l),U()},b=l=>{D.value.delete(l),U()},E=l=>{D.value.has(l)?b(l):q(l)},d=()=>{g.value.forEach(l=>{const o=P.value[l.id];o&&o.length>0&&D.value.add(l.id)}),U()},w=()=>{D.value.clear(),U()},L=l=>{V.value=g.value.find(o=>o.id===l)},R=l=>P.value[l]||[],F=l=>{const o=g.value.find(y=>y.id===l);return o==null?void 0:o.parentAsset},s=l=>{const o=[];let y=g.value.find(c=>c.id===l);for(;y!=null&&y.parentAsset;){const c=g.value.find(T=>T.id===y.parentAsset.id);if(c)o.unshift(c),y=c;else break}return o},v=l=>{const o=[],y=c=>{(P.value[c]||[]).forEach(I=>{o.push(I),y(I.id)})};return y(l),o},t=(l,o)=>l===o?!1:!v(l).some(c=>c.id===o),e=async(l,o)=>{try{if(!t(l,o))throw new Error("Cannot move asset: would create circular reference");_.value=!0,await ve.update(l,{parentAsset:o?{id:o}:null}),await G()}catch(y){throw O.value=y.message||"Failed to move asset",y}finally{_.value=!1}},a=(l,o=x.value)=>{for(const y of o){if(y.id===l)return y;if(y.children.length>0){const c=a(l,y.children);if(c)return c}}return null},i=l=>g.value.find(y=>y.id===l)?s(l).length:0,m=()=>Math.max(...g.value.map(l=>i(l.id)));return{hierarchyTree:x,flatAssetsList:g,expandedNodes:D,selectedAsset:V,loading:_,error:O,rootAssets:N,assetsByParent:P,hierarchyOptions:B,loadAssetHierarchy:G,buildHierarchyTree:U,expandNode:q,collapseNode:b,toggleNode:E,expandAll:d,collapseAll:w,selectAsset:L,getAssetChildren:R,getAssetParent:F,getAssetAncestors:s,getAssetDescendants:v,canMoveAsset:t,moveAsset:e,findAssetInTree:a,getHierarchyDepth:i,getMaxDepth:m,searchInHierarchy:l=>{if(!l)return x.value;const o=l.toLowerCase();return g.value.filter(c=>{var T,I,Y;return c.name.toLowerCase().includes(o)||((T=c.description)==null?void 0:T.toLowerCase().includes(o))||((I=c.model)==null?void 0:I.toLowerCase().includes(o))||((Y=c.serialNumber)==null?void 0:Y.toLowerCase().includes(o))}).forEach(c=>{s(c.id).forEach(I=>D.value.add(I.id))}),U(),x.value},validateHierarchy:()=>{const l=[];return g.value.forEach(o=>{s(o.id).some(c=>c.id===o.id)&&l.push({type:"circular_reference",assetId:o.id,assetName:o.name,message:"Circular reference detected in hierarchy"}),o.parentAsset&&(g.value.find(T=>T.id===o.parentAsset.id)||l.push({type:"orphaned_reference",assetId:o.id,assetName:o.name,parentId:o.parentAsset.id,message:"Parent asset not found"}))}),l},getHierarchyStats:()=>({totalAssets:g.value.length,rootAssets:N.value.length,maxDepth:m(),assetsWithChildren:Object.keys(P.value).length-1,leafAssets:g.value.filter(o=>{var y;return!((y=P.value[o.id])!=null&&y.length)}).length}),generateAssetPath:X}}function Ee(){const x=$([]),g=$(!1),D=$(null),V=A(()=>x.value.filter(s=>s.status===W.ACTIVE)),_=A(()=>x.value.filter(s=>s.status===W.EXPIRING_SOON)),O=A(()=>x.value.filter(s=>s.status===W.EXPIRED)),N=A(()=>({total:x.value.length,active:V.value.length,expiring:_.value.length,expired:O.value.length,notApplicable:x.value.filter(s=>s.status===W.NOT_APPLICABLE).length})),P=s=>{if(!s.isWarrantyActive||!s.warrantyEndDate)return W.NOT_APPLICABLE;const v=new Date,t=new Date(s.warrantyEndDate),e=Math.ceil((t-v)/(1e3*60*60*24));return e<0?W.EXPIRED:e<=30?W.EXPIRING_SOON:W.ACTIVE},B=s=>{if(!s.warrantyEndDate)return null;const v=new Date,t=new Date(s.warrantyEndDate);return Math.ceil((t-v)/(1e3*60*60*24))};return{warranties:x,loading:g,error:D,activeWarranties:V,expiringWarranties:_,expiredWarranties:O,warrantyStats:N,calculateWarrantyStatus:P,getDaysUntilExpiry:B,getWarrantyDuration:s=>{if(!s.warrantyStartDate||!s.warrantyEndDate)return null;const v=new Date(s.warrantyStartDate),e=new Date(s.warrantyEndDate)-v,a=Math.ceil(e/(1e3*60*60*24));if(a>=365){const i=Math.floor(a/365),m=a%365,n=Math.floor(m/30);return n>0?`${i} year${i>1?"s":""}, ${n} month${n>1?"s":""}`:`${i} year${i>1?"s":""}`}else if(a>=30){const i=Math.floor(a/30);return`${i} month${i>1?"s":""}`}else return`${a} day${a>1?"s":""}`},getWarrantyProgress:s=>{if(!s.warrantyStartDate||!s.warrantyEndDate)return 0;const v=new Date,t=new Date(s.warrantyStartDate),e=new Date(s.warrantyEndDate);if(v<=t)return 0;if(v>=e)return 100;const a=e-t,i=v-t;return Math.round(i/a*100)},formatWarrantyPeriod:s=>{if(!s.warrantyStartDate||!s.warrantyEndDate)return"N/A";const v=new Date(s.warrantyStartDate).toLocaleDateString(),t=new Date(s.warrantyEndDate).toLocaleDateString();return`${v} - ${t}`},validateWarrantyDates:s=>{const v=[];if(s.isWarrantyActive&&(s.warrantyStartDate||v.push("Warranty start date is required"),s.warrantyEndDate||v.push("Warranty end date is required"),s.warrantyStartDate&&s.warrantyEndDate)){const t=new Date(s.warrantyStartDate),e=new Date(s.warrantyEndDate);t>=e&&v.push("Warranty end date must be after start date")}return v},getWarrantyTypeOptions:()=>[{value:"Full",label:"Full Warranty"},{value:"Limited",label:"Limited Warranty"},{value:"Extended",label:"Extended Warranty"},{value:"Manufacturer",label:"Manufacturer Warranty"},{value:"Third Party",label:"Third Party Warranty"},{value:"Service",label:"Service Warranty"},{value:"Parts",label:"Parts Warranty"},{value:"Labor",label:"Labor Warranty"}],createWarrantyTemplate:(s="Full")=>({isWarrantyActive:!1,warrantyStartDate:null,warrantyEndDate:null,warrantyProvider:"",warrantyType:s,warrantyTerms:"",status:W.NOT_APPLICABLE,warrantyNumber:"",contactInfo:"",claimHistory:[],renewalDate:null,cost:0,currency:"USD"}),updateWarrantyStatus:s=>{const v=P(s);return{...s,status:v}},getWarrantyAlerts:s=>{const v=[],t=B(s);return s.status===W.EXPIRED?v.push({type:"error",message:"Warranty has expired",action:"Consider renewal or replacement"}):s.status===W.EXPIRING_SOON&&v.push({type:"warning",message:`Warranty expires in ${t} days`,action:"Contact provider for renewal options"}),s.renewalDate&&new Date(s.renewalDate)<=new Date&&v.push({type:"info",message:"Warranty renewal date has passed",action:"Check if renewal is still available"}),v},generateWarrantyReport:s=>{const v={generatedAt:new Date().toISOString(),totalAssets:s.length,summary:{active:0,expiring:0,expired:0,notApplicable:0},byProvider:{},byType:{},expiringIn30Days:[],expiringIn90Days:[],totalValue:0};return s.forEach(t=>{v.summary[t.status.toLowerCase()]=(v.summary[t.status.toLowerCase()]||0)+1,t.warrantyProvider&&(v.byProvider[t.warrantyProvider]=(v.byProvider[t.warrantyProvider]||0)+1),v.byType[t.warrantyType]=(v.byType[t.warrantyType]||0)+1;const e=B(t);e!==null&&e>0&&(e<=30?v.expiringIn30Days.push(t):e<=90&&v.expiringIn90Days.push(t)),t.cost&&(v.totalValue+=t.cost)}),v},getWarrantyStatusConfig:s=>{const v={[W.ACTIVE]:{label:"Active",color:"green",badge:"success",icon:"CheckCircleIcon"},[W.EXPIRING_SOON]:{label:"Expiring Soon",color:"yellow",badge:"warning",icon:"ClockIcon"},[W.EXPIRED]:{label:"Expired",color:"red",badge:"error",icon:"XCircleIcon"},[W.NOT_APPLICABLE]:{label:"N/A",color:"gray",badge:"secondary",icon:"MinusCircleIcon"}};return v[s]||v[W.NOT_APPLICABLE]},scheduleWarrantyReminders:s=>{const v=[];if(s.warrantyEndDate){const t=new Date(s.warrantyEndDate),e=new Date,a=new Date(t);a.setDate(a.getDate()-90),a>e&&v.push({date:a,type:"info",message:"Warranty expires in 90 days"});const i=new Date(t);i.setDate(i.getDate()-30),i>e&&v.push({date:i,type:"warning",message:"Warranty expires in 30 days"});const m=new Date(t);m.setDate(m.getDate()-7),m>e&&v.push({date:m,type:"urgent",message:"Warranty expires in 7 days"})}return v}}}const Ce={class:"warranty-form"},Ae={class:"flex items-start space-x-3 mb-6"},ke={key:0,class:"space-y-6"},Ve={class:"flex items-center justify-between"},Te={class:"flex items-center space-x-3"},Se={class:"flex-shrink-0"},We={key:0,class:"text-right"},_e={class:"w-20 h-2 bg-gray-200 rounded-full mt-1"},$e={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},Pe={class:"space-y-4"},Fe={class:"space-y-4"},Ie={key:0,class:"p-3 bg-blue-50 rounded-lg"},Me={class:"flex items-center justify-between text-sm"},Ne={class:"text-blue-600"},Le={key:0,class:"flex items-center justify-between text-sm mt-1"},Oe={class:"text-blue-700 font-medium"},Ue={class:"text-blue-600"},Be={class:"space-y-4"},qe={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},Re={class:"flex space-x-2"},je={key:0,class:"mt-1 text-sm text-red-600"},ze={class:"space-y-4"},Xe={class:"flex items-start space-x-3"},He={key:0,class:"ml-6 space-y-4"},Ge={key:1,class:"space-y-2"},Je={class:"flex items-start"},Qe={class:"flex-1"},Ye={class:"font-medium text-sm"},Ke={key:0,class:"text-sm opacity-75 mt-1"},Ze={key:2,class:"p-4 bg-red-50 border border-red-200 rounded-lg"},et={class:"flex items-start"},tt={class:"text-sm text-red-700 space-y-1"},at={key:1,class:"text-center py-8 text-gray-500"},rt={__name:"WarrantyForm",props:{modelValue:{type:Object,default:()=>({isWarrantyActive:!1,warrantyStartDate:null,warrantyEndDate:null,warrantyProvider:"",warrantyType:"Full",warrantyTerms:"",status:W.NOT_APPLICABLE})},disabled:{type:Boolean,default:!1}},emits:["update:modelValue","validation-change"],setup(x,{expose:g,emit:D}){const V=x,_=D,{calculateWarrantyStatus:O,getDaysUntilExpiry:N,getWarrantyDuration:P,getWarrantyProgress:B,validateWarrantyDates:G,getWarrantyTypeOptions:U,createWarrantyTemplate:X,updateWarrantyStatus:q,getWarrantyAlerts:b,getWarrantyStatusConfig:E}=Ee(),d=$({...V.modelValue}),w=$({}),L=$(!1),R=A(()=>d.value.isWarrantyActive?O(d.value):null),F=A(()=>R.value?E(R.value):null),s=A(()=>d.value.isWarrantyActive?N(d.value):null),v=A(()=>d.value.isWarrantyActive?P(d.value):null),t=A(()=>d.value.isWarrantyActive?B(d.value):null),e=A(()=>d.value.isWarrantyActive?b(d.value):[]),a=A(()=>{if(!R.value)return"";switch(R.value){case W.ACTIVE:return s.value?`Expires in ${s.value} days`:"Coverage active";case W.EXPIRING_SOON:return`Expires in ${s.value} days`;case W.EXPIRED:return`Expired ${Math.abs(s.value)} days ago`;default:return"No warranty coverage"}}),i=A(()=>F.value?`border-l-4 ${{green:"bg-green-50 border-green-400",yellow:"bg-yellow-50 border-yellow-400",red:"bg-red-50 border-red-400",gray:"bg-gray-50 border-gray-400"}[F.value.color]}`:""),m=A(()=>F.value?{green:"text-green-800",yellow:"text-yellow-800",red:"text-red-800",gray:"text-gray-800"}[F.value.color]:""),n=A(()=>F.value?{green:"text-green-600",yellow:"text-yellow-600",red:"text-red-600",gray:"text-gray-600"}[F.value.color]:""),J=A(()=>F.value?{green:"text-green-500",yellow:"text-yellow-500",red:"text-red-500",gray:"text-gray-500"}[F.value.color]:""),Q=A(()=>F.value?{green:"bg-green-500",yellow:"bg-yellow-500",red:"bg-red-500",gray:"bg-gray-500"}[F.value.color]:""),l=A(()=>U()),o=[{value:"USD",label:"USD"},{value:"EUR",label:"EUR"},{value:"GBP",label:"GBP"},{value:"CAD",label:"CAD"},{value:"AUD",label:"AUD"}],y=A(()=>Object.keys(w.value).length===0),c=()=>{d.value.isWarrantyActive?(d.value={...X(),isWarrantyActive:!0},I()):(d.value={...X(),isWarrantyActive:!1},w.value={}),ie()},T=()=>{},I=()=>{var S;return w.value={},d.value.isWarrantyActive&&((S=d.value.warrantyProvider)!=null&&S.trim()||(w.value.warrantyProvider="Warranty provider is required"),d.value.warrantyType||(w.value.warrantyType="Warranty type is required"),G(d.value).forEach(h=>{h.includes("start")?w.value.warrantyStartDate=h:h.includes("end")&&(w.value.warrantyEndDate=h)})),_("validation-change",{isValid:y.value,errors:{...w.value}}),y.value},Y=S=>({warrantyProvider:"Warranty Provider",warrantyType:"Warranty Type",warrantyStartDate:"Start Date",warrantyEndDate:"End Date",warrantyNumber:"Warranty Number",contactInfo:"Contact Information",cost:"Warranty Cost",warrantyTerms:"Terms & Conditions",renewalDate:"Renewal Deadline"})[S]||S,pe=S=>{const u={error:"bg-red-50 border-red-400",warning:"bg-yellow-50 border-yellow-400",info:"bg-blue-50 border-blue-400"};return u[S]||u.info},ge=S=>({error:"XCircleIcon",warning:"ExclamationTriangleIcon",info:"InformationCircleIcon"})[S]||"InformationCircleIcon",he=S=>{const u={error:"text-red-500",warning:"text-yellow-500",info:"text-blue-500"};return u[S]||u.info},ie=()=>{d.value.isWarrantyActive&&(d.value=q(d.value)),_("update:modelValue",{...d.value})};return ae(()=>d.value,()=>{I(),ie()},{deep:!0}),ae(()=>V.modelValue,S=>{d.value={...S},L.value=!!S.renewalDate},{deep:!0}),me(()=>{I()}),g({validateForm:I,isValid:y}),(S,u)=>(p(),f("div",Ce,[r("div",Ae,[j(k(le),{id:"warranty-active",modelValue:d.value.isWarrantyActive,"onUpdate:modelValue":u[0]||(u[0]=h=>d.value.isWarrantyActive=h),onChange:c},null,8,["modelValue"]),u[13]||(u[13]=r("div",{class:"flex-1"},[r("label",{for:"warranty-active",class:"text-base font-medium"}," This asset has warranty coverage "),r("p",{class:"text-sm text-gray-500 mt-1"}," Enable to track warranty information, expiration alerts, and coverage details ")],-1))]),d.value.isWarrantyActive?(p(),f("div",ke,[R.value?(p(),f("div",{key:0,class:z(["p-4 rounded-lg border",i.value])},[r("div",Ve,[r("div",Te,[r("div",Se,[(p(),K(ue(F.value.icon),{class:z(["w-5 h-5",J.value])},null,8,["class"]))]),r("div",null,[r("h4",{class:z(["font-medium",m.value])},C(F.value.label),3),r("p",{class:z(["text-sm",n.value])},C(a.value),3)])]),t.value!==null?(p(),f("div",We,[r("div",{class:z(["text-sm font-medium",m.value])},C(t.value)+"%",3),r("div",_e,[r("div",{class:z(["h-2 rounded-full transition-all",Q.value]),style:be({width:`${t.value}%`})},null,6)])])):M("",!0)])],2)):M("",!0),r("div",$e,[r("div",Pe,[u[14]||(u[14]=r("h4",{class:"text-lg font-medium text-gray-900 mb-4"},"Basic Information",-1)),j(k(H),{modelValue:d.value.warrantyProvider,"onUpdate:modelValue":u[1]||(u[1]=h=>d.value.warrantyProvider=h),label:"Warranty Provider",placeholder:"Enter provider name",required:!0,error:w.value.warrantyProvider},null,8,["modelValue","error"]),j(k(oe),{modelValue:d.value.warrantyType,"onUpdate:modelValue":u[2]||(u[2]=h=>d.value.warrantyType=h),label:"Warranty Type",placeholder:"Select warranty type",options:l.value,required:!0,error:w.value.warrantyType},null,8,["modelValue","options","error"]),j(k(H),{modelValue:d.value.warrantyNumber,"onUpdate:modelValue":u[3]||(u[3]=h=>d.value.warrantyNumber=h),label:"Warranty Number",placeholder:"Enter warranty number/ID",error:w.value.warrantyNumber},null,8,["modelValue","error"])]),r("div",Fe,[u[16]||(u[16]=r("h4",{class:"text-lg font-medium text-gray-900 mb-4"},"Coverage Period",-1)),j(k(H),{modelValue:d.value.warrantyStartDate,"onUpdate:modelValue":u[4]||(u[4]=h=>d.value.warrantyStartDate=h),type:"date",label:"Start Date",required:!0,error:w.value.warrantyStartDate,onChange:T},null,8,["modelValue","error"]),j(k(H),{modelValue:d.value.warrantyEndDate,"onUpdate:modelValue":u[5]||(u[5]=h=>d.value.warrantyEndDate=h),type:"date",label:"End Date",required:!0,min:d.value.warrantyStartDate,error:w.value.warrantyEndDate,onChange:k(q)},null,8,["modelValue","min","error","onChange"]),v.value?(p(),f("div",Ie,[r("div",Me,[u[15]||(u[15]=r("span",{class:"text-blue-700 font-medium"},"Duration:",-1)),r("span",Ne,C(v.value),1)]),s.value!==null?(p(),f("div",Le,[r("span",Oe,C(s.value>0?"Days remaining:":"Days overdue:"),1),r("span",Ue,C(Math.abs(s.value)),1)])):M("",!0)])):M("",!0)])]),r("div",Be,[u[18]||(u[18]=r("h4",{class:"text-lg font-medium text-gray-900"},"Additional Details",-1)),r("div",qe,[j(k(H),{modelValue:d.value.contactInfo,"onUpdate:modelValue":u[6]||(u[6]=h=>d.value.contactInfo=h),label:"Contact Information",placeholder:"Phone, email, or website",error:w.value.contactInfo},null,8,["modelValue","error"]),r("div",Re,[j(k(H),{modelValue:d.value.cost,"onUpdate:modelValue":u[7]||(u[7]=h=>d.value.cost=h),modelModifiers:{number:!0},type:"number",label:"Warranty Cost",placeholder:"0.00",step:"0.01",min:"0",error:w.value.cost,class:"flex-1"},null,8,["modelValue","error"]),j(k(oe),{modelValue:d.value.currency,"onUpdate:modelValue":u[8]||(u[8]=h=>d.value.currency=h),label:"Currency",options:o,class:"w-24"},null,8,["modelValue"])])]),r("div",null,[u[17]||(u[17]=r("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Terms & Conditions",-1)),se(r("textarea",{"onUpdate:modelValue":u[9]||(u[9]=h=>d.value.warrantyTerms=h),class:z(["w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",{"border-red-300":w.value.warrantyTerms}]),placeholder:"Describe warranty coverage, limitations, and terms...",rows:"4"},null,2),[[de,d.value.warrantyTerms]]),w.value.warrantyTerms?(p(),f("p",je,C(w.value.warrantyTerms),1)):M("",!0)])]),r("div",ze,[r("div",Xe,[j(k(le),{id:"has-renewal",modelValue:L.value,"onUpdate:modelValue":u[10]||(u[10]=h=>L.value=h)},null,8,["modelValue"]),u[19]||(u[19]=r("div",{class:"flex-1"},[r("label",{for:"has-renewal",class:"text-base font-medium"}," Renewal Option Available "),r("p",{class:"text-sm text-gray-500 mt-1"}," Check if this warranty can be renewed or extended ")],-1))]),L.value?(p(),f("div",He,[j(k(H),{modelValue:d.value.renewalDate,"onUpdate:modelValue":u[11]||(u[11]=h=>d.value.renewalDate=h),type:"date",label:"Renewal Deadline",placeholder:"When must renewal be completed",error:w.value.renewalDate},null,8,["modelValue","error"]),r("div",null,[u[20]||(u[20]=r("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Renewal Notes",-1)),se(r("textarea",{"onUpdate:modelValue":u[12]||(u[12]=h=>d.value.renewalNotes=h),class:"w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",placeholder:"Instructions for renewal, contact information, etc.",rows:"3"},null,512),[[de,d.value.renewalNotes]])])])):M("",!0)]),e.value.length?(p(),f("div",Ge,[u[21]||(u[21]=r("h4",{class:"text-lg font-medium text-gray-900"},"Alerts",-1)),(p(!0),f(Z,null,ee(e.value,(h,re)=>(p(),f("div",{key:re,class:z(["p-3 rounded-lg border-l-4",pe(h.type)])},[r("div",Je,[(p(),K(ue(ge(h.type)),{class:z(["w-5 h-5 mr-2 mt-0.5 flex-shrink-0",he(h.type)])},null,8,["class"])),r("div",Qe,[r("p",Ye,C(h.message),1),h.action?(p(),f("p",Ke,C(h.action),1)):M("",!0)])])],2))),128))])):M("",!0),Object.keys(w.value).length?(p(),f("div",Ze,[r("div",et,[u[23]||(u[23]=r("svg",{class:"w-5 h-5 text-red-400 mt-0.5 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),r("div",null,[u[22]||(u[22]=r("h4",{class:"text-sm font-medium text-red-800 mb-1"},"Please fix the following errors:",-1)),r("ul",tt,[(p(!0),f(Z,null,ee(w.value,(h,re)=>(p(),f("li",{key:re}," • "+C(Y(re))+": "+C(h),1))),128))])])])])):M("",!0)])):(p(),f("div",at,u[24]||(u[24]=[r("svg",{class:"w-12 h-12 mx-auto mb-4 text-gray-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.031 9-11.622 0-1.042-.133-2.052-.382-3.016z"})],-1),r("p",{class:"text-lg font-medium mb-2"},"No warranty coverage",-1),r("p",{class:"text-sm"},"Enable warranty tracking to monitor coverage and expiration dates",-1)])))]))}},Rt=ye(rt,[["__scopeId","data-v-1fcbff7b"]]);function nt(){const x=$([]),g=$([]),D=$(!1),V=$(null),_=A(()=>{const t={};return g.value.forEach(e=>{const a=e.category||"General";t[a]||(t[a]=[]),t[a].push(e)}),Object.keys(t).forEach(e=>{t[e].sort((a,i)=>a.order-i.order)}),t}),O=A(()=>g.value.filter(t=>t.required)),N={TEXT:{component:"FPInput",validate:(t,e)=>{var a,i,m;return(a=e.validation)!=null&&a.minLength&&(t==null?void 0:t.length)e.validation.maxLength?`Maximum ${e.validation.maxLength} characters allowed`:(m=e.validation)!=null&&m.pattern&&!new RegExp(e.validation.pattern).test(t)?"Invalid format":null}},NUMBER:{component:"FPInput",validate:(t,e)=>{var i,m;const a=parseFloat(t);return isNaN(a)?"Must be a valid number":((i=e.validation)==null?void 0:i.min)!==null&&ae.validation.max?`Maximum value is ${e.validation.max}`:null}},DATE:{component:"FPDatePicker",validate:(t,e)=>{var i,m;if(!t)return null;const a=new Date(t);return isNaN(a.getTime())?"Invalid date":(i=e.validation)!=null&&i.min&&anew Date(e.validation.max)?`Date must be before ${new Date(e.validation.max).toLocaleDateString()}`:null}},BOOLEAN:{component:"FPCheckbox",validate:()=>null},SELECT:{component:"FPSelect",validate:(t,e)=>{var a;return t&&!((a=e.options)!=null&&a.some(i=>i.value===t))?"Invalid selection":null}},MULTISELECT:{component:"FPMultiSelect",validate:(t,e)=>{if(Array.isArray(t)&&e.options){const a=e.options.map(m=>m.value);if(t.filter(m=>!a.includes(m)).length>0)return"Invalid selections detected"}return null}}},P=async()=>{try{D.value=!0,V.value=null,await new Promise(t=>setTimeout(t,500)),g.value=[{id:"1",label:"Serial Number",type:"TEXT",category:"Equipment Details",required:!0,placeholder:"Enter serial number",description:"Manufacturer serial number for warranty and identification"},{id:"2",label:"Manufacture Date",type:"DATE",category:"Equipment Details",required:!1,description:"Original manufacturing date"},{id:"3",label:"Operating Temperature Range",type:"TEXT",category:"Technical Specifications",required:!1,placeholder:"e.g., -10°C to 50°C",description:"Acceptable operating temperature range"},{id:"4",label:"Power Rating (kW)",type:"NUMBER",category:"Technical Specifications",required:!1,validation:{min:0,max:1e3,step:.1},description:"Electrical power consumption rating"},{id:"5",label:"Safety Certified",type:"BOOLEAN",category:"Compliance",required:!1,description:"Has current safety certification"},{id:"6",label:"Certification Type",type:"SELECT",category:"Compliance",required:!1,options:[{value:"CE",label:"CE Marking"},{value:"UL",label:"UL Listed"},{value:"CSA",label:"CSA Approved"},{value:"ISO",label:"ISO Certified"}],description:"Type of safety/quality certification"},{id:"7",label:"Maintenance Notes",type:"TEXT",category:"Maintenance",required:!1,placeholder:"Special maintenance considerations...",description:"Any special maintenance requirements or notes"}]}catch(t){V.value=t.message||"Failed to load custom field definitions",console.error("Error loading field definitions:",t)}finally{D.value=!1}},B=async t=>{try{D.value=!0,await new Promise(a=>setTimeout(a,1e3));const e={...t,id:Date.now().toString(),createdAt:new Date().toISOString()};return g.value.push(e),e}catch(e){throw V.value=e.message||"Failed to create field definition",e}finally{D.value=!1}},G=async(t,e)=>{try{D.value=!0,await new Promise(m=>setTimeout(m,1e3));const a={...e,id:t,updatedAt:new Date().toISOString()},i=g.value.findIndex(m=>m.id===t);return i!==-1&&(g.value[i]=a),a}catch(a){throw V.value=a.message||"Failed to update field definition",a}finally{D.value=!1}},U=async t=>{try{D.value=!0,V.value=null,await new Promise(e=>setTimeout(e,500)),g.value=g.value.filter(e=>e.id!==t)}catch(e){throw V.value=e.message||"Failed to delete field definition",e}finally{D.value=!1}},X=(t,e)=>{const a=g.value.find(m=>m.id===t);if(!a)return null;if(a.required&&(e==null||e===""))return`${a.label} is required`;if(!a.required&&(e==null||e===""))return null;const i=N[a.type];return i!=null&&i.validate?i.validate(e,a):null},q=t=>{const e={};return g.value.forEach(a=>{const i=t[a.id],m=X(a.id,i);m&&(e[a.id]=m)}),e},b=t=>{var e;return((e=N[t])==null?void 0:e.component)||"FPInput"},E=t=>{if(t.defaultValue!==null&&t.defaultValue!==void 0)return t.defaultValue;switch(t.type){case"TEXT":case"SELECT":return"";case"NUMBER":return null;case"DATE":return null;case"BOOLEAN":return!1;case"MULTISELECT":return[];default:return null}};return{customFields:x,fieldDefinitions:g,loading:D,error:V,fieldsByCategory:_,requiredFields:O,loadFieldDefinitions:P,createFieldDefinition:B,updateFieldDefinition:G,deleteFieldDefinition:U,validateFieldValue:X,validateAllFields:q,getFieldComponent:b,getDefaultValue:E,initializeFieldValues:(t={})=>{const e={...t};return g.value.forEach(a=>{a.id in e||(e[a.id]=E(a))}),e},formatFieldValue:(t,e)=>{var a;if(e==null)return"";switch(t.type){case"DATE":return new Date(e).toLocaleDateString();case"BOOLEAN":return e?"Yes":"No";case"MULTISELECT":return Array.isArray(e)?e.map(n=>{var Q;const J=(Q=t.options)==null?void 0:Q.find(l=>l.value===n);return(J==null?void 0:J.label)||n}).join(", "):e;case"SELECT":const i=(a=t.options)==null?void 0:a.find(m=>m.value===e);return(i==null?void 0:i.label)||e;case"NUMBER":return parseFloat(e).toLocaleString();default:return e}},serializeFieldValues:t=>Object.entries(t).map(([e,a])=>({fieldId:parseInt(e),value:a})),deserializeFieldValues:t=>{const e={};return Array.isArray(t)&&t.forEach(a=>{e[a.fieldId]=a.value}),e},reorderFields:async(t,e)=>{try{D.value=!0;const a=t.map((i,m)=>({id:i.id,order:e[m]}));await Promise.all(a.map(i=>Promise.resolve())),await P()}catch(a){throw V.value=a.message||"Failed to reorder fields",a}finally{D.value=!1}},duplicateField:async t=>{try{const e=g.value.find(i=>i.id===t);if(!e)throw new Error("Field not found");const a={...e,id:null,name:`${e.name}_copy`,label:`${e.label} (Copy)`,order:Math.max(...g.value.map(i=>i.order))+1};return await B(a)}catch(e){throw V.value=e.message||"Failed to duplicate field",e}},getFieldUsageStats:async t=>{try{return{fieldId:t,totalAssets:0,assetsWithValue:0,assetsWithoutValue:0,usagePercentage:0,commonValues:[]}}catch(e){return console.error("Error getting field usage stats:",e),null}},fieldTypeConfig:N}}const st={class:"custom-fields-form"},lt={key:0,class:"flex items-center justify-center py-8"},ot={key:1,class:"p-4 bg-red-50 border border-red-200 rounded-lg text-red-700"},it={class:"flex items-center"},ut={key:2,class:"space-y-6"},dt={class:"flex items-center justify-between mb-4"},ct={class:"text-lg font-medium text-gray-900"},vt={class:"relative group"},yt={class:"absolute bottom-6 left-1/2 transform -translate-x-1/2 bg-gray-900 text-white text-xs px-2 py-1 rounded opacity-0 group-hover:opacity-100 transition-opacity z-10 whitespace-nowrap"},mt={class:"relative group"},pt={class:"absolute bottom-6 left-1/2 transform -translate-x-1/2 bg-gray-900 text-white text-xs px-2 py-1 rounded opacity-0 group-hover:opacity-100 transition-opacity z-10 whitespace-nowrap"},gt={class:"relative group"},ht={class:"absolute bottom-6 left-1/2 transform -translate-x-1/2 bg-gray-900 text-white text-xs px-2 py-1 rounded opacity-0 group-hover:opacity-100 transition-opacity z-10 whitespace-nowrap"},ft={key:3,class:"flex items-start space-x-3"},bt={class:"flex-1"},wt=["for","required"],xt={key:0,class:"text-sm text-gray-500 mt-1"},Dt={key:1,class:"text-sm text-red-600 mt-1"},Et={class:"relative group"},Ct={class:"absolute bottom-6 left-1/2 transform -translate-x-1/2 bg-gray-900 text-white text-xs px-2 py-1 rounded opacity-0 group-hover:opacity-100 transition-opacity z-10 whitespace-nowrap"},At={key:5},kt=["for"],Vt={key:0,class:"text-red-500"},Tt=["id","onUpdate:modelValue","disabled","onChange"],St=["value"],Wt={key:0,class:"text-sm text-gray-500 mt-1"},_t={key:1,class:"text-sm text-red-600 mt-1"},$t={key:3,class:"text-center py-8 text-gray-500"},Pt={key:4,class:"mt-6 p-4 bg-red-50 border border-red-200 rounded-lg"},Ft={class:"flex items-start"},It={class:"text-sm text-red-700 space-y-1"},Mt={__name:"CustomFieldsForm",props:{modelValue:{type:Object,default:()=>({})},disabled:{type:Boolean,default:!1},collapsible:{type:Boolean,default:!0},singleColumn:{type:Boolean,default:!1},showValidationSummary:{type:Boolean,default:!0},validateOnMount:{type:Boolean,default:!1}},emits:["update:modelValue","validation-change"],setup(x,{expose:g,emit:D}){const V=x,_=D,{fieldsByCategory:O,fieldDefinitions:N,loading:P,error:B,loadFieldDefinitions:G,validateFieldValue:U,validateAllFields:X,initializeFieldValues:q}=nt(),b=$({}),E=$({}),d=$(new Set),w=A(()=>Object.keys(E.value).length===0),L=e=>{const a=U(e,b.value[e]);a?E.value[e]=a:delete E.value[e],_("validation-change",{isValid:w.value,errors:{...E.value}})},R=()=>{const e=X(b.value);return E.value=e,_("validation-change",{isValid:Object.keys(e).length===0,errors:{...e}}),Object.keys(e).length===0},F=e=>{const a=N.value.find(i=>i.id==e);return(a==null?void 0:a.label)||`Field ${e}`},s=e=>{d.value.has(e)?d.value.delete(e):d.value.add(e)},v=()=>{b.value=q(),E.value={},_("update:modelValue",b.value)},t=e=>{b.value=q(e),E.value={},_("update:modelValue",b.value)};return ae(()=>b.value,e=>{_("update:modelValue",e)},{deep:!0}),ae(()=>V.modelValue,e=>{JSON.stringify(e)!==JSON.stringify(b.value)&&(b.value=q(e))},{deep:!0}),ae(()=>N.value,()=>{N.value.length>0&&(b.value=q(V.modelValue),V.validateOnMount&&R())}),me(async()=>{await G()}),g({validateAllCustomFields:R,resetForm:v,setFieldValues:t,isValid:w}),(e,a)=>(p(),f("div",st,[k(P)?(p(),f("div",lt,a[0]||(a[0]=[r("div",{class:"flex items-center space-x-2 text-gray-500"},[r("svg",{class:"w-5 h-5 animate-spin",fill:"none",viewBox:"0 0 24 24"},[r("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"}),r("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]),r("span",null,"Loading custom fields...")],-1)]))):k(B)?(p(),f("div",ot,[r("div",it,[a[1]||(a[1]=r("svg",{class:"w-5 h-5 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),ce(" "+C(k(B)),1)])])):Object.keys(k(O)).length?(p(),f("div",ut,[(p(!0),f(Z,null,ee(k(O),(i,m)=>(p(),f("div",{key:m,class:"custom-field-category"},[r("div",dt,[r("h4",ct,C(m),1),x.collapsible?(p(),K(k(we),{key:0,variant:"ghost",size:"sm",onClick:n=>s(m)},{default:te(()=>[(p(),f("svg",{class:z(["w-4 h-4 transition-transform",{"rotate-180":!d.value.has(m)}]),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},a[2]||(a[2]=[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 9l-7 7-7-7"},null,-1)]),2))]),_:2},1032,["onClick"])):M("",!0)]),se(r("div",{class:z(["grid grid-cols-1 md:grid-cols-2 gap-4",{"md:grid-cols-1":x.singleColumn}])},[(p(!0),f(Z,null,ee(i,n=>{var J,Q,l,o,y;return p(),f("div",{key:n.id,class:"custom-field-wrapper"},[n.type==="TEXT"?(p(),K(k(H),{key:0,id:`field-${n.id}`,modelValue:b.value[n.id],"onUpdate:modelValue":c=>b.value[n.id]=c,label:n.label,placeholder:n.placeholder,required:n.required,disabled:x.disabled,error:E.value[n.id],onBlur:c=>L(n.id)},ne({_:2},[n.description?{name:"append",fn:te(()=>[r("div",vt,[a[3]||(a[3]=r("svg",{class:"w-4 h-4 text-gray-400 cursor-help",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),r("div",yt,C(n.description),1)])]),key:"0"}:void 0]),1032,["id","modelValue","onUpdate:modelValue","label","placeholder","required","disabled","error","onBlur"])):n.type==="NUMBER"?(p(),K(k(H),{key:1,id:`field-${n.id}`,modelValue:b.value[n.id],"onUpdate:modelValue":c=>b.value[n.id]=c,modelModifiers:{number:!0},type:"number",label:n.label,placeholder:n.placeholder,required:n.required,disabled:x.disabled,error:E.value[n.id],min:(J=n.validation)==null?void 0:J.min,max:(Q=n.validation)==null?void 0:Q.max,step:((l=n.validation)==null?void 0:l.step)||1,onBlur:c=>L(n.id)},ne({_:2},[n.description?{name:"append",fn:te(()=>[r("div",mt,[a[4]||(a[4]=r("svg",{class:"w-4 h-4 text-gray-400 cursor-help",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),r("div",pt,C(n.description),1)])]),key:"0"}:void 0]),1032,["id","modelValue","onUpdate:modelValue","label","placeholder","required","disabled","error","min","max","step","onBlur"])):n.type==="DATE"?(p(),K(k(H),{key:2,id:`field-${n.id}`,modelValue:b.value[n.id],"onUpdate:modelValue":c=>b.value[n.id]=c,type:"date",label:n.label,required:n.required,disabled:x.disabled,error:E.value[n.id],min:(o=n.validation)==null?void 0:o.min,max:(y=n.validation)==null?void 0:y.max,onChange:c=>L(n.id)},ne({_:2},[n.description?{name:"append",fn:te(()=>[r("div",gt,[a[5]||(a[5]=r("svg",{class:"w-4 h-4 text-gray-400 cursor-help",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),r("div",ht,C(n.description),1)])]),key:"0"}:void 0]),1032,["id","modelValue","onUpdate:modelValue","label","required","disabled","error","min","max","onChange"])):n.type==="BOOLEAN"?(p(),f("div",ft,[j(k(le),{id:`field-${n.id}`,modelValue:b.value[n.id],"onUpdate:modelValue":c=>b.value[n.id]=c,disabled:x.disabled,onChange:c=>L(n.id)},null,8,["id","modelValue","onUpdate:modelValue","disabled","onChange"]),r("div",bt,[r("label",{class:"block text-sm font-medium text-gray-700",for:`field-${n.id}`,required:n.required},C(n.label),9,wt),n.description?(p(),f("p",xt,C(n.description),1)):M("",!0),E.value[n.id]?(p(),f("p",Dt,C(E.value[n.id]),1)):M("",!0)])])):n.type==="SELECT"?(p(),K(k(oe),{key:4,id:`field-${n.id}`,modelValue:b.value[n.id],"onUpdate:modelValue":c=>b.value[n.id]=c,label:n.label,placeholder:n.placeholder||"Select an option",required:n.required,disabled:x.disabled,error:E.value[n.id],options:n.options||[],onChange:c=>L(n.id)},ne({_:2},[n.description?{name:"append",fn:te(()=>[r("div",Et,[a[6]||(a[6]=r("svg",{class:"w-4 h-4 text-gray-400 cursor-help",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),r("div",Ct,C(n.description),1)])]),key:"0"}:void 0]),1032,["id","modelValue","onUpdate:modelValue","label","placeholder","required","disabled","error","options","onChange"])):n.type==="MULTISELECT"?(p(),f("div",At,[r("label",{class:"block text-sm font-medium text-gray-700 mb-1",for:`field-${n.id}`},[ce(C(n.label)+" ",1),n.required?(p(),f("span",Vt,"*")):M("",!0)],8,kt),se(r("select",{id:`field-${n.id}`,"onUpdate:modelValue":c=>b.value[n.id]=c,multiple:"",disabled:x.disabled,class:z([{"border-red-300":E.value[n.id]},"w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500"]),onChange:c=>L(n.id)},[(p(!0),f(Z,null,ee(n.options||[],c=>(p(),f("option",{key:c.value,value:c.value},C(c.label),9,St))),128))],42,Tt),[[De,b.value[n.id]]]),n.description?(p(),f("p",Wt,C(n.description),1)):M("",!0),E.value[n.id]?(p(),f("p",_t,C(E.value[n.id]),1)):M("",!0)])):M("",!0)])}),128))],2),[[xe,!d.value.has(m)]])]))),128))])):(p(),f("div",$t,a[7]||(a[7]=[r("svg",{class:"w-12 h-12 mx-auto mb-4 text-gray-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1),r("p",{class:"text-lg font-medium mb-2"},"No custom fields configured",-1),r("p",{class:"text-sm"},"Custom fields will appear here when they're added to the system",-1)]))),x.showValidationSummary&&Object.keys(E.value).length?(p(),f("div",Pt,[r("div",Ft,[a[9]||(a[9]=r("svg",{class:"w-5 h-5 text-red-400 mt-0.5 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),r("div",null,[a[8]||(a[8]=r("h4",{class:"text-sm font-medium text-red-800 mb-1"},"Please fix the following errors:",-1)),r("ul",It,[(p(!0),f(Z,null,ee(E.value,(i,m)=>(p(),f("li",{key:m}," • "+C(F(m))+": "+C(i),1))),128))])])])])):M("",!0)]))}},jt=ye(Mt,[["__scopeId","data-v-329d3630"]]);export{jt as C,Rt as W,qt as u}; +import{r as $,c as A,b8 as fe,_ as ye,m as ae,o as me,a as f,g as p,b as r,d as j,e as k,j as M,n as z,i as K,aX as ue,t as C,Q as be,ae as se,aV as de,af as Z,aR as ee,k as ce,w as te,F as we,ai as xe,b9 as ne,aU as De}from"./index-QAlcqU00.js";import{W}from"./assets-CvfPiugk.js";import{F as H}from"./FPInput-D5RURom0.js";import{F as le}from"./FPCheckbox-DcRYwN3n.js";import{F as oe}from"./FPSelect-j7n_x8eB.js";const ve=new fe;function qt(){const x=$([]),g=$([]),D=$(new Set),V=$(null),_=$(!1),O=$(null),N=A(()=>g.value.filter(l=>!l.parentAsset)),P=A(()=>{const l={};return g.value.forEach(o=>{var c;const y=((c=o.parentAsset)==null?void 0:c.id)||"root";l[y]||(l[y]=[]),l[y].push(o)}),l}),B=A(()=>{const l=(o,y=0)=>o.reduce((c,T)=>{const I=P.value[T.id]||[],Q=I.length>0;return c.push({value:T.id,title:`${" ".repeat(y)}${T.name}`,subtitle:T.category,disabled:!1,depth:y,hasChildren:Q}),Q&&D.value.has(T.id)&&c.push(...l(I,y+1)),c},[]);return l(N.value)}),G=async()=>{try{_.value=!0,O.value=null;const l=await ve.getAll();g.value=l.data||l,U()}catch(l){O.value=null,g.value=[],console.warn("Asset hierarchy API not available, using fallback:",l.message)}finally{_.value=!1}},U=()=>{const l=(o,y=0)=>{var T;const c=P.value[o.id]||[];return{id:o.id,name:o.name,category:o.category,status:o.status,criticality:o.criticality,parentId:((T=o.parentAsset)==null?void 0:T.id)||null,children:c.map(I=>l(I,y+1)),depth:y,path:X(o),isExpanded:D.value.has(o.id),hasChildren:c.length>0,isLoading:!1,asset:o}};x.value=N.value.map(o=>l(o))},X=l=>{const o=[];let y=l;for(;y;)o.unshift(y.name),y=g.value.find(c=>{var T;return c.id===((T=y.parentAsset)==null?void 0:T.id)});return o.join(" > ")},q=l=>{D.value.add(l),U()},b=l=>{D.value.delete(l),U()},E=l=>{D.value.has(l)?b(l):q(l)},d=()=>{g.value.forEach(l=>{const o=P.value[l.id];o&&o.length>0&&D.value.add(l.id)}),U()},w=()=>{D.value.clear(),U()},L=l=>{V.value=g.value.find(o=>o.id===l)},R=l=>P.value[l]||[],F=l=>{const o=g.value.find(y=>y.id===l);return o==null?void 0:o.parentAsset},s=l=>{const o=[];let y=g.value.find(c=>c.id===l);for(;y!=null&&y.parentAsset;){const c=g.value.find(T=>T.id===y.parentAsset.id);if(c)o.unshift(c),y=c;else break}return o},v=l=>{const o=[],y=c=>{(P.value[c]||[]).forEach(I=>{o.push(I),y(I.id)})};return y(l),o},t=(l,o)=>l===o?!1:!v(l).some(c=>c.id===o),e=async(l,o)=>{try{if(!t(l,o))throw new Error("Cannot move asset: would create circular reference");_.value=!0,await ve.update(l,{parentAsset:o?{id:o}:null}),await G()}catch(y){throw O.value=y.message||"Failed to move asset",y}finally{_.value=!1}},a=(l,o=x.value)=>{for(const y of o){if(y.id===l)return y;if(y.children.length>0){const c=a(l,y.children);if(c)return c}}return null},i=l=>g.value.find(y=>y.id===l)?s(l).length:0,m=()=>Math.max(...g.value.map(l=>i(l.id)));return{hierarchyTree:x,flatAssetsList:g,expandedNodes:D,selectedAsset:V,loading:_,error:O,rootAssets:N,assetsByParent:P,hierarchyOptions:B,loadAssetHierarchy:G,buildHierarchyTree:U,expandNode:q,collapseNode:b,toggleNode:E,expandAll:d,collapseAll:w,selectAsset:L,getAssetChildren:R,getAssetParent:F,getAssetAncestors:s,getAssetDescendants:v,canMoveAsset:t,moveAsset:e,findAssetInTree:a,getHierarchyDepth:i,getMaxDepth:m,searchInHierarchy:l=>{if(!l)return x.value;const o=l.toLowerCase();return g.value.filter(c=>{var T,I,Q;return c.name.toLowerCase().includes(o)||((T=c.description)==null?void 0:T.toLowerCase().includes(o))||((I=c.model)==null?void 0:I.toLowerCase().includes(o))||((Q=c.serialNumber)==null?void 0:Q.toLowerCase().includes(o))}).forEach(c=>{s(c.id).forEach(I=>D.value.add(I.id))}),U(),x.value},validateHierarchy:()=>{const l=[];return g.value.forEach(o=>{s(o.id).some(c=>c.id===o.id)&&l.push({type:"circular_reference",assetId:o.id,assetName:o.name,message:"Circular reference detected in hierarchy"}),o.parentAsset&&(g.value.find(T=>T.id===o.parentAsset.id)||l.push({type:"orphaned_reference",assetId:o.id,assetName:o.name,parentId:o.parentAsset.id,message:"Parent asset not found"}))}),l},getHierarchyStats:()=>({totalAssets:g.value.length,rootAssets:N.value.length,maxDepth:m(),assetsWithChildren:Object.keys(P.value).length-1,leafAssets:g.value.filter(o=>{var y;return!((y=P.value[o.id])!=null&&y.length)}).length}),generateAssetPath:X}}function Ee(){const x=$([]),g=$(!1),D=$(null),V=A(()=>x.value.filter(s=>s.status===W.ACTIVE)),_=A(()=>x.value.filter(s=>s.status===W.EXPIRING_SOON)),O=A(()=>x.value.filter(s=>s.status===W.EXPIRED)),N=A(()=>({total:x.value.length,active:V.value.length,expiring:_.value.length,expired:O.value.length,notApplicable:x.value.filter(s=>s.status===W.NOT_APPLICABLE).length})),P=s=>{if(!s.isWarrantyActive||!s.warrantyEndDate)return W.NOT_APPLICABLE;const v=new Date,t=new Date(s.warrantyEndDate),e=Math.ceil((t-v)/(1e3*60*60*24));return e<0?W.EXPIRED:e<=30?W.EXPIRING_SOON:W.ACTIVE},B=s=>{if(!s.warrantyEndDate)return null;const v=new Date,t=new Date(s.warrantyEndDate);return Math.ceil((t-v)/(1e3*60*60*24))};return{warranties:x,loading:g,error:D,activeWarranties:V,expiringWarranties:_,expiredWarranties:O,warrantyStats:N,calculateWarrantyStatus:P,getDaysUntilExpiry:B,getWarrantyDuration:s=>{if(!s.warrantyStartDate||!s.warrantyEndDate)return null;const v=new Date(s.warrantyStartDate),e=new Date(s.warrantyEndDate)-v,a=Math.ceil(e/(1e3*60*60*24));if(a>=365){const i=Math.floor(a/365),m=a%365,n=Math.floor(m/30);return n>0?`${i} year${i>1?"s":""}, ${n} month${n>1?"s":""}`:`${i} year${i>1?"s":""}`}else if(a>=30){const i=Math.floor(a/30);return`${i} month${i>1?"s":""}`}else return`${a} day${a>1?"s":""}`},getWarrantyProgress:s=>{if(!s.warrantyStartDate||!s.warrantyEndDate)return 0;const v=new Date,t=new Date(s.warrantyStartDate),e=new Date(s.warrantyEndDate);if(v<=t)return 0;if(v>=e)return 100;const a=e-t,i=v-t;return Math.round(i/a*100)},formatWarrantyPeriod:s=>{if(!s.warrantyStartDate||!s.warrantyEndDate)return"N/A";const v=new Date(s.warrantyStartDate).toLocaleDateString(),t=new Date(s.warrantyEndDate).toLocaleDateString();return`${v} - ${t}`},validateWarrantyDates:s=>{const v=[];if(s.isWarrantyActive&&(s.warrantyStartDate||v.push("Warranty start date is required"),s.warrantyEndDate||v.push("Warranty end date is required"),s.warrantyStartDate&&s.warrantyEndDate)){const t=new Date(s.warrantyStartDate),e=new Date(s.warrantyEndDate);t>=e&&v.push("Warranty end date must be after start date")}return v},getWarrantyTypeOptions:()=>[{value:"Full",label:"Full Warranty"},{value:"Limited",label:"Limited Warranty"},{value:"Extended",label:"Extended Warranty"},{value:"Manufacturer",label:"Manufacturer Warranty"},{value:"Third Party",label:"Third Party Warranty"},{value:"Service",label:"Service Warranty"},{value:"Parts",label:"Parts Warranty"},{value:"Labor",label:"Labor Warranty"}],createWarrantyTemplate:(s="Full")=>({isWarrantyActive:!1,warrantyStartDate:null,warrantyEndDate:null,warrantyProvider:"",warrantyType:s,warrantyTerms:"",status:W.NOT_APPLICABLE,warrantyNumber:"",contactInfo:"",claimHistory:[],renewalDate:null,cost:0,currency:"USD"}),updateWarrantyStatus:s=>{const v=P(s);return{...s,status:v}},getWarrantyAlerts:s=>{const v=[],t=B(s);return s.status===W.EXPIRED?v.push({type:"error",message:"Warranty has expired",action:"Consider renewal or replacement"}):s.status===W.EXPIRING_SOON&&v.push({type:"warning",message:`Warranty expires in ${t} days`,action:"Contact provider for renewal options"}),s.renewalDate&&new Date(s.renewalDate)<=new Date&&v.push({type:"info",message:"Warranty renewal date has passed",action:"Check if renewal is still available"}),v},generateWarrantyReport:s=>{const v={generatedAt:new Date().toISOString(),totalAssets:s.length,summary:{active:0,expiring:0,expired:0,notApplicable:0},byProvider:{},byType:{},expiringIn30Days:[],expiringIn90Days:[],totalValue:0};return s.forEach(t=>{v.summary[t.status.toLowerCase()]=(v.summary[t.status.toLowerCase()]||0)+1,t.warrantyProvider&&(v.byProvider[t.warrantyProvider]=(v.byProvider[t.warrantyProvider]||0)+1),v.byType[t.warrantyType]=(v.byType[t.warrantyType]||0)+1;const e=B(t);e!==null&&e>0&&(e<=30?v.expiringIn30Days.push(t):e<=90&&v.expiringIn90Days.push(t)),t.cost&&(v.totalValue+=t.cost)}),v},getWarrantyStatusConfig:s=>{const v={[W.ACTIVE]:{label:"Active",color:"green",badge:"success",icon:"CheckCircleIcon"},[W.EXPIRING_SOON]:{label:"Expiring Soon",color:"yellow",badge:"warning",icon:"ClockIcon"},[W.EXPIRED]:{label:"Expired",color:"red",badge:"error",icon:"XCircleIcon"},[W.NOT_APPLICABLE]:{label:"N/A",color:"gray",badge:"secondary",icon:"MinusCircleIcon"}};return v[s]||v[W.NOT_APPLICABLE]},scheduleWarrantyReminders:s=>{const v=[];if(s.warrantyEndDate){const t=new Date(s.warrantyEndDate),e=new Date,a=new Date(t);a.setDate(a.getDate()-90),a>e&&v.push({date:a,type:"info",message:"Warranty expires in 90 days"});const i=new Date(t);i.setDate(i.getDate()-30),i>e&&v.push({date:i,type:"warning",message:"Warranty expires in 30 days"});const m=new Date(t);m.setDate(m.getDate()-7),m>e&&v.push({date:m,type:"urgent",message:"Warranty expires in 7 days"})}return v}}}const Ce={class:"warranty-form"},Ae={class:"flex items-start space-x-3 mb-6"},ke={key:0,class:"space-y-6"},Ve={class:"flex items-center justify-between"},Te={class:"flex items-center space-x-3"},Se={class:"flex-shrink-0"},We={key:0,class:"text-right"},_e={class:"w-20 h-2 bg-gray-200 rounded-full mt-1"},$e={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},Pe={class:"space-y-4"},Fe={class:"space-y-4"},Ie={key:0,class:"p-3 bg-blue-50 rounded-lg"},Me={class:"flex items-center justify-between text-sm"},Ne={class:"text-blue-600"},Le={key:0,class:"flex items-center justify-between text-sm mt-1"},Oe={class:"text-blue-700 font-medium"},Ue={class:"text-blue-600"},Be={class:"space-y-4"},qe={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},Re={class:"flex space-x-2"},je={key:0,class:"mt-1 text-sm text-red-600"},ze={class:"space-y-4"},Xe={class:"flex items-start space-x-3"},He={key:0,class:"ml-6 space-y-4"},Ge={key:1,class:"space-y-2"},Je={class:"flex items-start"},Ye={class:"flex-1"},Qe={class:"font-medium text-sm"},Ke={key:0,class:"text-sm opacity-75 mt-1"},Ze={key:2,class:"p-4 bg-red-50 border border-red-200 rounded-lg"},et={class:"flex items-start"},tt={class:"text-sm text-red-700 space-y-1"},at={key:1,class:"text-center py-8 text-gray-500"},rt={__name:"WarrantyForm",props:{modelValue:{type:Object,default:()=>({isWarrantyActive:!1,warrantyStartDate:null,warrantyEndDate:null,warrantyProvider:"",warrantyType:"Full",warrantyTerms:"",status:W.NOT_APPLICABLE})},disabled:{type:Boolean,default:!1}},emits:["update:modelValue","validation-change"],setup(x,{expose:g,emit:D}){const V=x,_=D,{calculateWarrantyStatus:O,getDaysUntilExpiry:N,getWarrantyDuration:P,getWarrantyProgress:B,validateWarrantyDates:G,getWarrantyTypeOptions:U,createWarrantyTemplate:X,updateWarrantyStatus:q,getWarrantyAlerts:b,getWarrantyStatusConfig:E}=Ee(),d=$({...V.modelValue}),w=$({}),L=$(!1),R=A(()=>d.value.isWarrantyActive?O(d.value):null),F=A(()=>R.value?E(R.value):null),s=A(()=>d.value.isWarrantyActive?N(d.value):null),v=A(()=>d.value.isWarrantyActive?P(d.value):null),t=A(()=>d.value.isWarrantyActive?B(d.value):null),e=A(()=>d.value.isWarrantyActive?b(d.value):[]),a=A(()=>{if(!R.value)return"";switch(R.value){case W.ACTIVE:return s.value?`Expires in ${s.value} days`:"Coverage active";case W.EXPIRING_SOON:return`Expires in ${s.value} days`;case W.EXPIRED:return`Expired ${Math.abs(s.value)} days ago`;default:return"No warranty coverage"}}),i=A(()=>F.value?`border-l-4 ${{green:"bg-green-50 border-green-400",yellow:"bg-yellow-50 border-yellow-400",red:"bg-red-50 border-red-400",gray:"bg-gray-50 border-gray-400"}[F.value.color]}`:""),m=A(()=>F.value?{green:"text-green-800",yellow:"text-yellow-800",red:"text-red-800",gray:"text-gray-800"}[F.value.color]:""),n=A(()=>F.value?{green:"text-green-600",yellow:"text-yellow-600",red:"text-red-600",gray:"text-gray-600"}[F.value.color]:""),J=A(()=>F.value?{green:"text-green-500",yellow:"text-yellow-500",red:"text-red-500",gray:"text-gray-500"}[F.value.color]:""),Y=A(()=>F.value?{green:"bg-green-500",yellow:"bg-yellow-500",red:"bg-red-500",gray:"bg-gray-500"}[F.value.color]:""),l=A(()=>U()),o=[{value:"USD",label:"USD"},{value:"EUR",label:"EUR"},{value:"GBP",label:"GBP"},{value:"CAD",label:"CAD"},{value:"AUD",label:"AUD"}],y=A(()=>Object.keys(w.value).length===0),c=()=>{d.value.isWarrantyActive?(d.value={...X(),isWarrantyActive:!0},I()):(d.value={...X(),isWarrantyActive:!1},w.value={}),ie()},T=()=>{},I=()=>{var S;return w.value={},d.value.isWarrantyActive&&((S=d.value.warrantyProvider)!=null&&S.trim()||(w.value.warrantyProvider="Warranty provider is required"),d.value.warrantyType||(w.value.warrantyType="Warranty type is required"),G(d.value).forEach(h=>{h.includes("start")?w.value.warrantyStartDate=h:h.includes("end")&&(w.value.warrantyEndDate=h)})),_("validation-change",{isValid:y.value,errors:{...w.value}}),y.value},Q=S=>({warrantyProvider:"Warranty Provider",warrantyType:"Warranty Type",warrantyStartDate:"Start Date",warrantyEndDate:"End Date",warrantyNumber:"Warranty Number",contactInfo:"Contact Information",cost:"Warranty Cost",warrantyTerms:"Terms & Conditions",renewalDate:"Renewal Deadline"})[S]||S,pe=S=>{const u={error:"bg-red-50 border-red-400",warning:"bg-yellow-50 border-yellow-400",info:"bg-blue-50 border-blue-400"};return u[S]||u.info},ge=S=>({error:"XCircleIcon",warning:"ExclamationTriangleIcon",info:"InformationCircleIcon"})[S]||"InformationCircleIcon",he=S=>{const u={error:"text-red-500",warning:"text-yellow-500",info:"text-blue-500"};return u[S]||u.info},ie=()=>{d.value.isWarrantyActive&&(d.value=q(d.value)),_("update:modelValue",{...d.value})};return ae(()=>d.value,()=>{I(),ie()},{deep:!0}),ae(()=>V.modelValue,S=>{d.value={...S},L.value=!!S.renewalDate},{deep:!0}),me(()=>{I()}),g({validateForm:I,isValid:y}),(S,u)=>(p(),f("div",Ce,[r("div",Ae,[j(k(le),{id:"warranty-active",modelValue:d.value.isWarrantyActive,"onUpdate:modelValue":u[0]||(u[0]=h=>d.value.isWarrantyActive=h),onChange:c},null,8,["modelValue"]),u[13]||(u[13]=r("div",{class:"flex-1"},[r("label",{for:"warranty-active",class:"text-base font-medium"}," This asset has warranty coverage "),r("p",{class:"text-sm text-gray-500 mt-1"}," Enable to track warranty information, expiration alerts, and coverage details ")],-1))]),d.value.isWarrantyActive?(p(),f("div",ke,[R.value?(p(),f("div",{key:0,class:z(["p-4 rounded-lg border",i.value])},[r("div",Ve,[r("div",Te,[r("div",Se,[(p(),K(ue(F.value.icon),{class:z(["w-5 h-5",J.value])},null,8,["class"]))]),r("div",null,[r("h4",{class:z(["font-medium",m.value])},C(F.value.label),3),r("p",{class:z(["text-sm",n.value])},C(a.value),3)])]),t.value!==null?(p(),f("div",We,[r("div",{class:z(["text-sm font-medium",m.value])},C(t.value)+"%",3),r("div",_e,[r("div",{class:z(["h-2 rounded-full transition-all",Y.value]),style:be({width:`${t.value}%`})},null,6)])])):M("",!0)])],2)):M("",!0),r("div",$e,[r("div",Pe,[u[14]||(u[14]=r("h4",{class:"text-lg font-medium text-gray-900 mb-4"},"Basic Information",-1)),j(k(H),{modelValue:d.value.warrantyProvider,"onUpdate:modelValue":u[1]||(u[1]=h=>d.value.warrantyProvider=h),label:"Warranty Provider",placeholder:"Enter provider name",required:!0,error:w.value.warrantyProvider},null,8,["modelValue","error"]),j(k(oe),{modelValue:d.value.warrantyType,"onUpdate:modelValue":u[2]||(u[2]=h=>d.value.warrantyType=h),label:"Warranty Type",placeholder:"Select warranty type",options:l.value,required:!0,error:w.value.warrantyType},null,8,["modelValue","options","error"]),j(k(H),{modelValue:d.value.warrantyNumber,"onUpdate:modelValue":u[3]||(u[3]=h=>d.value.warrantyNumber=h),label:"Warranty Number",placeholder:"Enter warranty number/ID",error:w.value.warrantyNumber},null,8,["modelValue","error"])]),r("div",Fe,[u[16]||(u[16]=r("h4",{class:"text-lg font-medium text-gray-900 mb-4"},"Coverage Period",-1)),j(k(H),{modelValue:d.value.warrantyStartDate,"onUpdate:modelValue":u[4]||(u[4]=h=>d.value.warrantyStartDate=h),type:"date",label:"Start Date",required:!0,error:w.value.warrantyStartDate,onChange:T},null,8,["modelValue","error"]),j(k(H),{modelValue:d.value.warrantyEndDate,"onUpdate:modelValue":u[5]||(u[5]=h=>d.value.warrantyEndDate=h),type:"date",label:"End Date",required:!0,min:d.value.warrantyStartDate,error:w.value.warrantyEndDate,onChange:k(q)},null,8,["modelValue","min","error","onChange"]),v.value?(p(),f("div",Ie,[r("div",Me,[u[15]||(u[15]=r("span",{class:"text-blue-700 font-medium"},"Duration:",-1)),r("span",Ne,C(v.value),1)]),s.value!==null?(p(),f("div",Le,[r("span",Oe,C(s.value>0?"Days remaining:":"Days overdue:"),1),r("span",Ue,C(Math.abs(s.value)),1)])):M("",!0)])):M("",!0)])]),r("div",Be,[u[18]||(u[18]=r("h4",{class:"text-lg font-medium text-gray-900"},"Additional Details",-1)),r("div",qe,[j(k(H),{modelValue:d.value.contactInfo,"onUpdate:modelValue":u[6]||(u[6]=h=>d.value.contactInfo=h),label:"Contact Information",placeholder:"Phone, email, or website",error:w.value.contactInfo},null,8,["modelValue","error"]),r("div",Re,[j(k(H),{modelValue:d.value.cost,"onUpdate:modelValue":u[7]||(u[7]=h=>d.value.cost=h),modelModifiers:{number:!0},type:"number",label:"Warranty Cost",placeholder:"0.00",step:"0.01",min:"0",error:w.value.cost,class:"flex-1"},null,8,["modelValue","error"]),j(k(oe),{modelValue:d.value.currency,"onUpdate:modelValue":u[8]||(u[8]=h=>d.value.currency=h),label:"Currency",options:o,class:"w-24"},null,8,["modelValue"])])]),r("div",null,[u[17]||(u[17]=r("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Terms & Conditions",-1)),se(r("textarea",{"onUpdate:modelValue":u[9]||(u[9]=h=>d.value.warrantyTerms=h),class:z(["w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",{"border-red-300":w.value.warrantyTerms}]),placeholder:"Describe warranty coverage, limitations, and terms...",rows:"4"},null,2),[[de,d.value.warrantyTerms]]),w.value.warrantyTerms?(p(),f("p",je,C(w.value.warrantyTerms),1)):M("",!0)])]),r("div",ze,[r("div",Xe,[j(k(le),{id:"has-renewal",modelValue:L.value,"onUpdate:modelValue":u[10]||(u[10]=h=>L.value=h)},null,8,["modelValue"]),u[19]||(u[19]=r("div",{class:"flex-1"},[r("label",{for:"has-renewal",class:"text-base font-medium"}," Renewal Option Available "),r("p",{class:"text-sm text-gray-500 mt-1"}," Check if this warranty can be renewed or extended ")],-1))]),L.value?(p(),f("div",He,[j(k(H),{modelValue:d.value.renewalDate,"onUpdate:modelValue":u[11]||(u[11]=h=>d.value.renewalDate=h),type:"date",label:"Renewal Deadline",placeholder:"When must renewal be completed",error:w.value.renewalDate},null,8,["modelValue","error"]),r("div",null,[u[20]||(u[20]=r("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Renewal Notes",-1)),se(r("textarea",{"onUpdate:modelValue":u[12]||(u[12]=h=>d.value.renewalNotes=h),class:"w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",placeholder:"Instructions for renewal, contact information, etc.",rows:"3"},null,512),[[de,d.value.renewalNotes]])])])):M("",!0)]),e.value.length?(p(),f("div",Ge,[u[21]||(u[21]=r("h4",{class:"text-lg font-medium text-gray-900"},"Alerts",-1)),(p(!0),f(Z,null,ee(e.value,(h,re)=>(p(),f("div",{key:re,class:z(["p-3 rounded-lg border-l-4",pe(h.type)])},[r("div",Je,[(p(),K(ue(ge(h.type)),{class:z(["w-5 h-5 mr-2 mt-0.5 flex-shrink-0",he(h.type)])},null,8,["class"])),r("div",Ye,[r("p",Qe,C(h.message),1),h.action?(p(),f("p",Ke,C(h.action),1)):M("",!0)])])],2))),128))])):M("",!0),Object.keys(w.value).length?(p(),f("div",Ze,[r("div",et,[u[23]||(u[23]=r("svg",{class:"w-5 h-5 text-red-400 mt-0.5 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),r("div",null,[u[22]||(u[22]=r("h4",{class:"text-sm font-medium text-red-800 mb-1"},"Please fix the following errors:",-1)),r("ul",tt,[(p(!0),f(Z,null,ee(w.value,(h,re)=>(p(),f("li",{key:re}," • "+C(Q(re))+": "+C(h),1))),128))])])])])):M("",!0)])):(p(),f("div",at,u[24]||(u[24]=[r("svg",{class:"w-12 h-12 mx-auto mb-4 text-gray-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.031 9-11.622 0-1.042-.133-2.052-.382-3.016z"})],-1),r("p",{class:"text-lg font-medium mb-2"},"No warranty coverage",-1),r("p",{class:"text-sm"},"Enable warranty tracking to monitor coverage and expiration dates",-1)])))]))}},Rt=ye(rt,[["__scopeId","data-v-1fcbff7b"]]);function nt(){const x=$([]),g=$([]),D=$(!1),V=$(null),_=A(()=>{const t={};return g.value.forEach(e=>{const a=e.category||"General";t[a]||(t[a]=[]),t[a].push(e)}),Object.keys(t).forEach(e=>{t[e].sort((a,i)=>a.order-i.order)}),t}),O=A(()=>g.value.filter(t=>t.required)),N={TEXT:{component:"FPInput",validate:(t,e)=>{var a,i,m;return(a=e.validation)!=null&&a.minLength&&(t==null?void 0:t.length)e.validation.maxLength?`Maximum ${e.validation.maxLength} characters allowed`:(m=e.validation)!=null&&m.pattern&&!new RegExp(e.validation.pattern).test(t)?"Invalid format":null}},NUMBER:{component:"FPInput",validate:(t,e)=>{var i,m;const a=parseFloat(t);return isNaN(a)?"Must be a valid number":((i=e.validation)==null?void 0:i.min)!==null&&ae.validation.max?`Maximum value is ${e.validation.max}`:null}},DATE:{component:"FPDatePicker",validate:(t,e)=>{var i,m;if(!t)return null;const a=new Date(t);return isNaN(a.getTime())?"Invalid date":(i=e.validation)!=null&&i.min&&anew Date(e.validation.max)?`Date must be before ${new Date(e.validation.max).toLocaleDateString()}`:null}},BOOLEAN:{component:"FPCheckbox",validate:()=>null},SELECT:{component:"FPSelect",validate:(t,e)=>{var a;return t&&!((a=e.options)!=null&&a.some(i=>i.value===t))?"Invalid selection":null}},MULTISELECT:{component:"FPMultiSelect",validate:(t,e)=>{if(Array.isArray(t)&&e.options){const a=e.options.map(m=>m.value);if(t.filter(m=>!a.includes(m)).length>0)return"Invalid selections detected"}return null}}},P=async()=>{try{D.value=!0,V.value=null,await new Promise(t=>setTimeout(t,500)),g.value=[{id:"1",label:"Serial Number",type:"TEXT",category:"Equipment Details",required:!0,placeholder:"Enter serial number",description:"Manufacturer serial number for warranty and identification"},{id:"2",label:"Manufacture Date",type:"DATE",category:"Equipment Details",required:!1,description:"Original manufacturing date"},{id:"3",label:"Operating Temperature Range",type:"TEXT",category:"Technical Specifications",required:!1,placeholder:"e.g., -10°C to 50°C",description:"Acceptable operating temperature range"},{id:"4",label:"Power Rating (kW)",type:"NUMBER",category:"Technical Specifications",required:!1,validation:{min:0,max:1e3,step:.1},description:"Electrical power consumption rating"},{id:"5",label:"Safety Certified",type:"BOOLEAN",category:"Compliance",required:!1,description:"Has current safety certification"},{id:"6",label:"Certification Type",type:"SELECT",category:"Compliance",required:!1,options:[{value:"CE",label:"CE Marking"},{value:"UL",label:"UL Listed"},{value:"CSA",label:"CSA Approved"},{value:"ISO",label:"ISO Certified"}],description:"Type of safety/quality certification"},{id:"7",label:"Maintenance Notes",type:"TEXT",category:"Maintenance",required:!1,placeholder:"Special maintenance considerations...",description:"Any special maintenance requirements or notes"}]}catch(t){V.value=t.message||"Failed to load custom field definitions",console.error("Error loading field definitions:",t)}finally{D.value=!1}},B=async t=>{try{D.value=!0,await new Promise(a=>setTimeout(a,1e3));const e={...t,id:Date.now().toString(),createdAt:new Date().toISOString()};return g.value.push(e),e}catch(e){throw V.value=e.message||"Failed to create field definition",e}finally{D.value=!1}},G=async(t,e)=>{try{D.value=!0,await new Promise(m=>setTimeout(m,1e3));const a={...e,id:t,updatedAt:new Date().toISOString()},i=g.value.findIndex(m=>m.id===t);return i!==-1&&(g.value[i]=a),a}catch(a){throw V.value=a.message||"Failed to update field definition",a}finally{D.value=!1}},U=async t=>{try{D.value=!0,V.value=null,await new Promise(e=>setTimeout(e,500)),g.value=g.value.filter(e=>e.id!==t)}catch(e){throw V.value=e.message||"Failed to delete field definition",e}finally{D.value=!1}},X=(t,e)=>{const a=g.value.find(m=>m.id===t);if(!a)return null;if(a.required&&(e==null||e===""))return`${a.label} is required`;if(!a.required&&(e==null||e===""))return null;const i=N[a.type];return i!=null&&i.validate?i.validate(e,a):null},q=t=>{const e={};return g.value.forEach(a=>{const i=t[a.id],m=X(a.id,i);m&&(e[a.id]=m)}),e},b=t=>{var e;return((e=N[t])==null?void 0:e.component)||"FPInput"},E=t=>{if(t.defaultValue!==null&&t.defaultValue!==void 0)return t.defaultValue;switch(t.type){case"TEXT":case"SELECT":return"";case"NUMBER":return null;case"DATE":return null;case"BOOLEAN":return!1;case"MULTISELECT":return[];default:return null}};return{customFields:x,fieldDefinitions:g,loading:D,error:V,fieldsByCategory:_,requiredFields:O,loadFieldDefinitions:P,createFieldDefinition:B,updateFieldDefinition:G,deleteFieldDefinition:U,validateFieldValue:X,validateAllFields:q,getFieldComponent:b,getDefaultValue:E,initializeFieldValues:(t={})=>{const e={...t};return g.value.forEach(a=>{a.id in e||(e[a.id]=E(a))}),e},formatFieldValue:(t,e)=>{var a;if(e==null)return"";switch(t.type){case"DATE":return new Date(e).toLocaleDateString();case"BOOLEAN":return e?"Yes":"No";case"MULTISELECT":return Array.isArray(e)?e.map(n=>{var Y;const J=(Y=t.options)==null?void 0:Y.find(l=>l.value===n);return(J==null?void 0:J.label)||n}).join(", "):e;case"SELECT":const i=(a=t.options)==null?void 0:a.find(m=>m.value===e);return(i==null?void 0:i.label)||e;case"NUMBER":return parseFloat(e).toLocaleString();default:return e}},serializeFieldValues:t=>Object.entries(t).map(([e,a])=>({fieldId:parseInt(e),value:a})),deserializeFieldValues:t=>{const e={};return Array.isArray(t)&&t.forEach(a=>{e[a.fieldId]=a.value}),e},reorderFields:async(t,e)=>{try{D.value=!0;const a=t.map((i,m)=>({id:i.id,order:e[m]}));await Promise.all(a.map(i=>Promise.resolve())),await P()}catch(a){throw V.value=a.message||"Failed to reorder fields",a}finally{D.value=!1}},duplicateField:async t=>{try{const e=g.value.find(i=>i.id===t);if(!e)throw new Error("Field not found");const a={...e,id:null,name:`${e.name}_copy`,label:`${e.label} (Copy)`,order:Math.max(...g.value.map(i=>i.order))+1};return await B(a)}catch(e){throw V.value=e.message||"Failed to duplicate field",e}},getFieldUsageStats:async t=>{try{return{fieldId:t,totalAssets:0,assetsWithValue:0,assetsWithoutValue:0,usagePercentage:0,commonValues:[]}}catch(e){return console.error("Error getting field usage stats:",e),null}},fieldTypeConfig:N}}const st={class:"custom-fields-form"},lt={key:0,class:"flex items-center justify-center py-8"},ot={key:1,class:"p-4 bg-red-50 border border-red-200 rounded-lg text-red-700"},it={class:"flex items-center"},ut={key:2,class:"space-y-6"},dt={class:"flex items-center justify-between mb-4"},ct={class:"text-lg font-medium text-gray-900"},vt={class:"relative group"},yt={class:"absolute bottom-6 left-1/2 transform -translate-x-1/2 bg-gray-900 text-white text-xs px-2 py-1 rounded opacity-0 group-hover:opacity-100 transition-opacity z-10 whitespace-nowrap"},mt={class:"relative group"},pt={class:"absolute bottom-6 left-1/2 transform -translate-x-1/2 bg-gray-900 text-white text-xs px-2 py-1 rounded opacity-0 group-hover:opacity-100 transition-opacity z-10 whitespace-nowrap"},gt={class:"relative group"},ht={class:"absolute bottom-6 left-1/2 transform -translate-x-1/2 bg-gray-900 text-white text-xs px-2 py-1 rounded opacity-0 group-hover:opacity-100 transition-opacity z-10 whitespace-nowrap"},ft={key:3,class:"flex items-start space-x-3"},bt={class:"flex-1"},wt=["for","required"],xt={key:0,class:"text-sm text-gray-500 mt-1"},Dt={key:1,class:"text-sm text-red-600 mt-1"},Et={class:"relative group"},Ct={class:"absolute bottom-6 left-1/2 transform -translate-x-1/2 bg-gray-900 text-white text-xs px-2 py-1 rounded opacity-0 group-hover:opacity-100 transition-opacity z-10 whitespace-nowrap"},At={key:5},kt=["for"],Vt={key:0,class:"text-red-500"},Tt=["id","onUpdate:modelValue","disabled","onChange"],St=["value"],Wt={key:0,class:"text-sm text-gray-500 mt-1"},_t={key:1,class:"text-sm text-red-600 mt-1"},$t={key:3,class:"text-center py-8 text-gray-500"},Pt={key:4,class:"mt-6 p-4 bg-red-50 border border-red-200 rounded-lg"},Ft={class:"flex items-start"},It={class:"text-sm text-red-700 space-y-1"},Mt={__name:"CustomFieldsForm",props:{modelValue:{type:Object,default:()=>({})},disabled:{type:Boolean,default:!1},collapsible:{type:Boolean,default:!0},singleColumn:{type:Boolean,default:!1},showValidationSummary:{type:Boolean,default:!0},validateOnMount:{type:Boolean,default:!1}},emits:["update:modelValue","validation-change"],setup(x,{expose:g,emit:D}){const V=x,_=D,{fieldsByCategory:O,fieldDefinitions:N,loading:P,error:B,loadFieldDefinitions:G,validateFieldValue:U,validateAllFields:X,initializeFieldValues:q}=nt(),b=$({}),E=$({}),d=$(new Set),w=A(()=>Object.keys(E.value).length===0),L=e=>{const a=U(e,b.value[e]);a?E.value[e]=a:delete E.value[e],_("validation-change",{isValid:w.value,errors:{...E.value}})},R=()=>{const e=X(b.value);return E.value=e,_("validation-change",{isValid:Object.keys(e).length===0,errors:{...e}}),Object.keys(e).length===0},F=e=>{const a=N.value.find(i=>i.id==e);return(a==null?void 0:a.label)||`Field ${e}`},s=e=>{d.value.has(e)?d.value.delete(e):d.value.add(e)},v=()=>{b.value=q(),E.value={},_("update:modelValue",b.value)},t=e=>{b.value=q(e),E.value={},_("update:modelValue",b.value)};return ae(()=>b.value,e=>{_("update:modelValue",e)},{deep:!0}),ae(()=>V.modelValue,e=>{JSON.stringify(e)!==JSON.stringify(b.value)&&(b.value=q(e))},{deep:!0}),ae(()=>N.value,()=>{N.value.length>0&&(b.value=q(V.modelValue),V.validateOnMount&&R())}),me(async()=>{await G()}),g({validateAllCustomFields:R,resetForm:v,setFieldValues:t,isValid:w}),(e,a)=>(p(),f("div",st,[k(P)?(p(),f("div",lt,a[0]||(a[0]=[r("div",{class:"flex items-center space-x-2 text-gray-500"},[r("svg",{class:"w-5 h-5 animate-spin",fill:"none",viewBox:"0 0 24 24"},[r("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"}),r("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]),r("span",null,"Loading custom fields...")],-1)]))):k(B)?(p(),f("div",ot,[r("div",it,[a[1]||(a[1]=r("svg",{class:"w-5 h-5 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),ce(" "+C(k(B)),1)])])):Object.keys(k(O)).length?(p(),f("div",ut,[(p(!0),f(Z,null,ee(k(O),(i,m)=>(p(),f("div",{key:m,class:"custom-field-category"},[r("div",dt,[r("h4",ct,C(m),1),x.collapsible?(p(),K(k(we),{key:0,variant:"ghost",size:"sm",onClick:n=>s(m)},{default:te(()=>[(p(),f("svg",{class:z(["w-4 h-4 transition-transform",{"rotate-180":!d.value.has(m)}]),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},a[2]||(a[2]=[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 9l-7 7-7-7"},null,-1)]),2))]),_:2},1032,["onClick"])):M("",!0)]),se(r("div",{class:z(["grid grid-cols-1 md:grid-cols-2 gap-4",{"md:grid-cols-1":x.singleColumn}])},[(p(!0),f(Z,null,ee(i,n=>{var J,Y,l,o,y;return p(),f("div",{key:n.id,class:"custom-field-wrapper"},[n.type==="TEXT"?(p(),K(k(H),{key:0,id:`field-${n.id}`,modelValue:b.value[n.id],"onUpdate:modelValue":c=>b.value[n.id]=c,label:n.label,placeholder:n.placeholder,required:n.required,disabled:x.disabled,error:E.value[n.id],onBlur:c=>L(n.id)},ne({_:2},[n.description?{name:"append",fn:te(()=>[r("div",vt,[a[3]||(a[3]=r("svg",{class:"w-4 h-4 text-gray-400 cursor-help",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),r("div",yt,C(n.description),1)])]),key:"0"}:void 0]),1032,["id","modelValue","onUpdate:modelValue","label","placeholder","required","disabled","error","onBlur"])):n.type==="NUMBER"?(p(),K(k(H),{key:1,id:`field-${n.id}`,modelValue:b.value[n.id],"onUpdate:modelValue":c=>b.value[n.id]=c,modelModifiers:{number:!0},type:"number",label:n.label,placeholder:n.placeholder,required:n.required,disabled:x.disabled,error:E.value[n.id],min:(J=n.validation)==null?void 0:J.min,max:(Y=n.validation)==null?void 0:Y.max,step:((l=n.validation)==null?void 0:l.step)||1,onBlur:c=>L(n.id)},ne({_:2},[n.description?{name:"append",fn:te(()=>[r("div",mt,[a[4]||(a[4]=r("svg",{class:"w-4 h-4 text-gray-400 cursor-help",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),r("div",pt,C(n.description),1)])]),key:"0"}:void 0]),1032,["id","modelValue","onUpdate:modelValue","label","placeholder","required","disabled","error","min","max","step","onBlur"])):n.type==="DATE"?(p(),K(k(H),{key:2,id:`field-${n.id}`,modelValue:b.value[n.id],"onUpdate:modelValue":c=>b.value[n.id]=c,type:"date",label:n.label,required:n.required,disabled:x.disabled,error:E.value[n.id],min:(o=n.validation)==null?void 0:o.min,max:(y=n.validation)==null?void 0:y.max,onChange:c=>L(n.id)},ne({_:2},[n.description?{name:"append",fn:te(()=>[r("div",gt,[a[5]||(a[5]=r("svg",{class:"w-4 h-4 text-gray-400 cursor-help",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),r("div",ht,C(n.description),1)])]),key:"0"}:void 0]),1032,["id","modelValue","onUpdate:modelValue","label","required","disabled","error","min","max","onChange"])):n.type==="BOOLEAN"?(p(),f("div",ft,[j(k(le),{id:`field-${n.id}`,modelValue:b.value[n.id],"onUpdate:modelValue":c=>b.value[n.id]=c,disabled:x.disabled,onChange:c=>L(n.id)},null,8,["id","modelValue","onUpdate:modelValue","disabled","onChange"]),r("div",bt,[r("label",{class:"block text-sm font-medium text-gray-700",for:`field-${n.id}`,required:n.required},C(n.label),9,wt),n.description?(p(),f("p",xt,C(n.description),1)):M("",!0),E.value[n.id]?(p(),f("p",Dt,C(E.value[n.id]),1)):M("",!0)])])):n.type==="SELECT"?(p(),K(k(oe),{key:4,id:`field-${n.id}`,modelValue:b.value[n.id],"onUpdate:modelValue":c=>b.value[n.id]=c,label:n.label,placeholder:n.placeholder||"Select an option",required:n.required,disabled:x.disabled,error:E.value[n.id],options:n.options||[],onChange:c=>L(n.id)},ne({_:2},[n.description?{name:"append",fn:te(()=>[r("div",Et,[a[6]||(a[6]=r("svg",{class:"w-4 h-4 text-gray-400 cursor-help",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),r("div",Ct,C(n.description),1)])]),key:"0"}:void 0]),1032,["id","modelValue","onUpdate:modelValue","label","placeholder","required","disabled","error","options","onChange"])):n.type==="MULTISELECT"?(p(),f("div",At,[r("label",{class:"block text-sm font-medium text-gray-700 mb-1",for:`field-${n.id}`},[ce(C(n.label)+" ",1),n.required?(p(),f("span",Vt,"*")):M("",!0)],8,kt),se(r("select",{id:`field-${n.id}`,"onUpdate:modelValue":c=>b.value[n.id]=c,multiple:"",disabled:x.disabled,class:z([{"border-red-300":E.value[n.id]},"w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500"]),onChange:c=>L(n.id)},[(p(!0),f(Z,null,ee(n.options||[],c=>(p(),f("option",{key:c.value,value:c.value},C(c.label),9,St))),128))],42,Tt),[[De,b.value[n.id]]]),n.description?(p(),f("p",Wt,C(n.description),1)):M("",!0),E.value[n.id]?(p(),f("p",_t,C(E.value[n.id]),1)):M("",!0)])):M("",!0)])}),128))],2),[[xe,!d.value.has(m)]])]))),128))])):(p(),f("div",$t,a[7]||(a[7]=[r("svg",{class:"w-12 h-12 mx-auto mb-4 text-gray-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1),r("p",{class:"text-lg font-medium mb-2"},"No custom fields configured",-1),r("p",{class:"text-sm"},"Custom fields will appear here when they're added to the system",-1)]))),x.showValidationSummary&&Object.keys(E.value).length?(p(),f("div",Pt,[r("div",Ft,[a[9]||(a[9]=r("svg",{class:"w-5 h-5 text-red-400 mt-0.5 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),r("div",null,[a[8]||(a[8]=r("h4",{class:"text-sm font-medium text-red-800 mb-1"},"Please fix the following errors:",-1)),r("ul",It,[(p(!0),f(Z,null,ee(E.value,(i,m)=>(p(),f("li",{key:m}," • "+C(F(m))+": "+C(i),1))),128))])])])])):M("",!0)]))}},jt=ye(Mt,[["__scopeId","data-v-329d3630"]]);export{jt as C,Rt as W,qt as u}; diff --git a/frontend/dist/assets/CustomerDetailView-B1CXIshh.js b/frontend/dist/assets/CustomerDetailView-D2R4iIWj.js similarity index 89% rename from frontend/dist/assets/CustomerDetailView-B1CXIshh.js rename to frontend/dist/assets/CustomerDetailView-D2R4iIWj.js index 2c6bdac3..c8ab8975 100644 --- a/frontend/dist/assets/CustomerDetailView-B1CXIshh.js +++ b/frontend/dist/assets/CustomerDetailView-D2R4iIWj.js @@ -1 +1 @@ -import{r as _,c as P,s as E,o as W,i as k,w as d,v as O,g as a,b as t,a as i,j as m,d as u,t as o,e as r,F as S,k as x,af as Z,aQ as U}from"./index-BUdRbiwj.js";import{u as q}from"./customers-BwQm3paR.js";import{F as Q,a as G}from"./FPPageHeader-CTG2L28r.js";import{F as c}from"./FPCard-qHzcEQAE.js";import{F as h}from"./FPCheckbox-Bu8jNAEW.js";import{F as C}from"./FPBadge-BKY5dPnL.js";import{F as J}from"./FPTabs-R71V25QN.js";const K={class:"px-6 py-8"},X={key:0,class:"flex items-center justify-center py-12"},Y={key:1,class:"text-center py-12"},tt={class:"text-gray-600 mb-4"},et={key:2,class:"space-y-8"},st={class:"grid grid-cols-1 md:grid-cols-4 gap-6"},ot={class:"p-6"},lt={class:"flex items-center"},at={class:"flex-shrink-0"},it={class:"ml-4"},rt={class:"text-lg font-semibold text-gray-900"},nt={class:"p-6"},dt={class:"flex items-center"},ut={class:"flex-shrink-0"},mt={class:"ml-4"},ct={class:"text-lg font-semibold text-gray-900"},vt={class:"p-6"},xt={class:"flex items-center"},yt={class:"ml-4"},pt={class:"text-lg font-semibold text-gray-900"},ft={class:"p-6"},gt={class:"flex items-center"},bt={class:"ml-4"},_t={class:"text-lg font-semibold text-gray-900"},kt={class:"p-6"},ht={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},Ct={class:"text-sm text-gray-900"},wt={class:"text-sm text-gray-900 font-mono"},Nt=["href"],St=["href"],At={class:"text-sm text-gray-900"},Ft={key:0,class:"mt-6"},Pt={class:"text-sm text-gray-900"},Tt={class:"p-6"},Vt={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},Bt={class:"text-sm text-gray-900"},Lt={class:"text-sm text-gray-900"},zt={class:"text-sm text-gray-900"},jt={key:0,class:"mt-6"},Dt={class:"grid grid-cols-2 md:grid-cols-4 gap-3"},Mt={class:"flex items-center"},$t={class:"flex items-center"},It={class:"flex items-center"},Rt={class:"flex items-center"},Ht={key:1,class:"mt-6"},Et={class:"text-sm text-gray-900"},Wt={class:"p-6"},Ot={class:"space-y-6"},Zt={key:0},Ut={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},qt={class:"text-sm text-gray-900"},Qt={class:"text-sm text-gray-900"},Gt=["href"],Jt={key:1,class:"text-sm text-gray-900"},Kt=["href"],Xt={key:1,class:"text-sm text-gray-900"},Yt={key:1},te={class:"text-sm text-gray-900"},ee={key:0},se={key:0},oe={key:1},le={key:2},ae={key:2},ie={class:"text-sm text-gray-900"},re={class:"p-6"},ne={class:"space-y-4"},de={class:"flex-1"},ue={class:"text-sm text-gray-900"},me={class:"text-xs text-gray-500"},ce={key:0,class:"text-center py-8 text-gray-500"},ke={__name:"CustomerDetailView",setup(ve){const T=E(),A=O(),V=q(),y=_(!1),p=_(null),s=_(null),v=_("basic"),w=_([]),N=P(()=>parseInt(T.params.id)),B=[{key:"basic",label:"Basic Information",icon:"info"},{key:"service",label:"SLA & Service",icon:"clock"},{key:"contact",label:"Contact & Location",icon:"map"},{key:"activity",label:"Recent Activity",icon:"activity"}],L=P(()=>{var e;if(!((e=s.value)!=null&&e.address))return!1;const l=s.value.address;return l.street||l.city||l.state||l.zipCode}),z=async()=>{y.value=!0,p.value=null;try{const l=await V.getCustomer(N.value);l?s.value=l:p.value="Customer not found"}catch(l){console.error("Failed to load customer:",l),p.value="Failed to load customer details"}finally{y.value=!1}},j=async()=>{try{w.value=[{id:1,description:"Work order WO-2024-001 completed",createdAt:"2024-01-15T10:30:00Z"},{id:2,description:"Customer information updated",createdAt:"2024-01-14T15:45:00Z"},{id:3,description:"New service request submitted",createdAt:"2024-01-12T09:15:00Z"}]}catch(l){console.error("Failed to load activity:",l)}},D=()=>{A.push(`/customers?edit=${N.value}`)},M=()=>{A.push(`/work-orders?create=true&customerId=${N.value}`)},$=l=>({active:"green",inactive:"gray",suspended:"red"})[l]||"gray",F=l=>({high:"red",medium:"yellow",low:"green"})[l]||"gray",I=l=>({internal:"blue",external:"green",partner:"purple",government:"gray"})[l]||"gray",R=l=>l?new Date(l).toLocaleDateString():"Never",H=l=>l?new Date(l).toLocaleString():"Unknown";return W(async()=>{await z(),v.value==="activity"&&await j()}),(l,e)=>(a(),k(Q,null,{header:d(()=>{var n,f,g;return[u(G,{title:((n=s.value)==null?void 0:n.name)||"Customer Details",description:((f=s.value)==null?void 0:f.description)||"Customer information and service details",breadcrumbs:[{text:"Customers",to:"/customers"},{text:((g=s.value)==null?void 0:g.name)||"Loading...",to:null}]},{actions:d(()=>{var b;return[u(r(S),{variant:"outline",size:"sm",onClick:D,disabled:y.value},{default:d(()=>e[2]||(e[2]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1),x(" Edit Customer ",-1)])),_:1,__:[2]},8,["disabled"]),u(r(S),{variant:"primary",size:"sm",onClick:M,disabled:y.value||((b=s.value)==null?void 0:b.status)!=="active"},{default:d(()=>e[3]||(e[3]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),x(" Create Work Order ",-1)])),_:1,__:[3]},8,["disabled"])]}),_:1},8,["title","description","breadcrumbs"])]}),default:d(()=>[t("div",K,[y.value?(a(),i("div",X,e[4]||(e[4]=[t("svg",{class:"animate-spin -ml-1 mr-3 h-8 w-8 text-blue-600",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},[t("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"}),t("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})],-1),t("span",{class:"text-gray-600"},"Loading customer details...",-1)]))):p.value?(a(),i("div",Y,[e[6]||(e[6]=t("div",{class:"text-red-500 mb-4"},[t("svg",{class:"w-12 h-12 mx-auto",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})])],-1)),e[7]||(e[7]=t("h3",{class:"text-lg font-medium text-gray-900 mb-2"},"Customer Not Found",-1)),t("p",tt,o(p.value),1),u(r(S),{onClick:e[0]||(e[0]=n=>l.$router.push("/customers"))},{default:d(()=>e[5]||(e[5]=[x(" Back to Customers ",-1)])),_:1,__:[5]})])):s.value?(a(),i("div",et,[t("div",st,[u(r(c),null,{default:d(()=>[t("div",ot,[t("div",lt,[t("div",at,[u(r(C),{variant:$(s.value.status),size:"lg"},{default:d(()=>[x(o(s.value.status),1)]),_:1},8,["variant"])]),t("div",it,[e[8]||(e[8]=t("p",{class:"text-sm font-medium text-gray-500"},"Status",-1)),t("p",rt,o(s.value.status==="active"?"Active":"Inactive"),1)])])])]),_:1}),u(r(c),null,{default:d(()=>[t("div",nt,[t("div",dt,[t("div",ut,[u(r(C),{variant:F(s.value.priority),size:"lg"},{default:d(()=>[x(o(s.value.priority),1)]),_:1},8,["variant"])]),t("div",mt,[e[9]||(e[9]=t("p",{class:"text-sm font-medium text-gray-500"},"Priority",-1)),t("p",ct,o(s.value.priority||"Not Set"),1)])])])]),_:1}),u(r(c),null,{default:d(()=>{var n;return[t("div",vt,[t("div",xt,[e[11]||(e[11]=t("div",{class:"flex-shrink-0"},[t("div",{class:"w-10 h-10 bg-blue-100 rounded-lg flex items-center justify-center"},[t("svg",{class:"w-6 h-6 text-blue-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})])])],-1)),t("div",yt,[e[10]||(e[10]=t("p",{class:"text-sm font-medium text-gray-500"},"Response SLA",-1)),t("p",pt,o(((n=s.value.sla)==null?void 0:n.responseTime)||"Not Set"),1)])])])]}),_:1}),u(r(c),null,{default:d(()=>[t("div",ft,[t("div",gt,[e[13]||(e[13]=t("div",{class:"flex-shrink-0"},[t("div",{class:"w-10 h-10 bg-green-100 rounded-lg flex items-center justify-center"},[t("svg",{class:"w-6 h-6 text-green-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})])])],-1)),t("div",bt,[e[12]||(e[12]=t("p",{class:"text-sm font-medium text-gray-500"},"Last Contact",-1)),t("p",_t,o(R(s.value.lastContactDate)),1)])])])]),_:1})]),u(r(J),{modelValue:v.value,"onUpdate:modelValue":e[1]||(e[1]=n=>v.value=n),tabs:B,class:"mb-6"},null,8,["modelValue"]),v.value==="basic"?(a(),k(r(c),{key:0},{default:d(()=>[t("div",kt,[e[21]||(e[21]=t("h3",{class:"text-lg font-medium text-gray-900 mb-6"},"Basic Information",-1)),t("div",ht,[t("div",null,[e[14]||(e[14]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Customer Name",-1)),t("p",Ct,o(s.value.name),1)]),t("div",null,[e[15]||(e[15]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Customer Code",-1)),t("p",wt,o(s.value.customerCode),1)]),t("div",null,[e[16]||(e[16]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Email Address",-1)),t("a",{href:`mailto:${s.value.email}`,class:"text-sm text-blue-600 hover:text-blue-800"},o(s.value.email),9,Nt)]),t("div",null,[e[17]||(e[17]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Phone Number",-1)),t("a",{href:`tel:${s.value.phone}`,class:"text-sm text-blue-600 hover:text-blue-800"},o(s.value.phone||"Not provided"),9,St)]),t("div",null,[e[18]||(e[18]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Customer Type",-1)),u(r(C),{variant:I(s.value.type)},{default:d(()=>[x(o(s.value.type),1)]),_:1},8,["variant"])]),t("div",null,[e[19]||(e[19]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Service Hours",-1)),t("p",At,o(s.value.serviceHours||"24x7"),1)])]),s.value.description?(a(),i("div",Ft,[e[20]||(e[20]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Description",-1)),t("p",Pt,o(s.value.description),1)])):m("",!0)])]),_:1})):m("",!0),v.value==="service"?(a(),k(r(c),{key:1},{default:d(()=>{var n,f,g,b;return[t("div",Tt,[e[28]||(e[28]=t("h3",{class:"text-lg font-medium text-gray-900 mb-6"},"SLA & Service Information",-1)),t("div",Vt,[t("div",null,[e[22]||(e[22]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Response Time SLA",-1)),t("p",Bt,o(((n=s.value.sla)==null?void 0:n.responseTime)||"Not defined"),1)]),t("div",null,[e[23]||(e[23]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Resolution Time SLA",-1)),t("p",Lt,o(((f=s.value.sla)==null?void 0:f.resolutionTime)||"Not defined"),1)]),t("div",null,[e[24]||(e[24]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Availability Target",-1)),t("p",zt,o((g=s.value.sla)!=null&&g.availability?`${s.value.sla.availability}%`:"Not defined"),1)]),t("div",null,[e[25]||(e[25]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Service Priority",-1)),u(r(C),{variant:F(s.value.priority)},{default:d(()=>[x(o(s.value.priority||"Standard"),1)]),_:1},8,["variant"])])]),s.value.notifications?(a(),i("div",jt,[e[26]||(e[26]=t("label",{class:"block text-sm font-medium text-gray-700 mb-3"},"Notification Preferences",-1)),t("div",Dt,[t("div",Mt,[u(r(h),{modelValue:s.value.notifications.email,disabled:"",label:"Email"},null,8,["modelValue"])]),t("div",$t,[u(r(h),{modelValue:s.value.notifications.sms,disabled:"",label:"SMS"},null,8,["modelValue"])]),t("div",It,[u(r(h),{modelValue:s.value.notifications.phone,disabled:"",label:"Phone"},null,8,["modelValue"])]),t("div",Rt,[u(r(h),{modelValue:s.value.notifications.portal,disabled:"",label:"Portal"},null,8,["modelValue"])])])])):m("",!0),(b=s.value.sla)!=null&&b.notes?(a(),i("div",Ht,[e[27]||(e[27]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"SLA Notes",-1)),t("p",Et,o(s.value.sla.notes),1)])):m("",!0)])]}),_:1})):m("",!0),v.value==="contact"?(a(),k(r(c),{key:2},{default:d(()=>{var n;return[t("div",Wt,[e[36]||(e[36]=t("h3",{class:"text-lg font-medium text-gray-900 mb-6"},"Contact & Location Information",-1)),t("div",Ot,[(n=s.value.primaryContact)!=null&&n.name?(a(),i("div",Zt,[e[33]||(e[33]=t("h4",{class:"text-base font-medium text-gray-900 mb-4"},"Primary Contact",-1)),t("div",Ut,[t("div",null,[e[29]||(e[29]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Name",-1)),t("p",qt,o(s.value.primaryContact.name),1)]),t("div",null,[e[30]||(e[30]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Title",-1)),t("p",Qt,o(s.value.primaryContact.title||"Not provided"),1)]),t("div",null,[e[31]||(e[31]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Email",-1)),s.value.primaryContact.email?(a(),i("a",{key:0,href:`mailto:${s.value.primaryContact.email}`,class:"text-sm text-blue-600 hover:text-blue-800"},o(s.value.primaryContact.email),9,Gt)):(a(),i("p",Jt,"Not provided"))]),t("div",null,[e[32]||(e[32]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Phone",-1)),s.value.primaryContact.phone?(a(),i("a",{key:0,href:`tel:${s.value.primaryContact.phone}`,class:"text-sm text-blue-600 hover:text-blue-800"},o(s.value.primaryContact.phone),9,Kt)):(a(),i("p",Xt,"Not provided"))])])])):m("",!0),L.value?(a(),i("div",Yt,[e[34]||(e[34]=t("h4",{class:"text-base font-medium text-gray-900 mb-4"},"Address",-1)),t("div",te,[s.value.address.street?(a(),i("p",ee,o(s.value.address.street),1)):m("",!0),t("p",null,[s.value.address.city?(a(),i("span",se,o(s.value.address.city),1)):m("",!0),s.value.address.state?(a(),i("span",oe,", "+o(s.value.address.state),1)):m("",!0),s.value.address.zipCode?(a(),i("span",le,o(s.value.address.zipCode),1)):m("",!0)])])])):m("",!0),s.value.notes?(a(),i("div",ae,[e[35]||(e[35]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Notes",-1)),t("p",ie,o(s.value.notes),1)])):m("",!0)])])]}),_:1})):m("",!0),v.value==="activity"?(a(),k(r(c),{key:3},{default:d(()=>[t("div",re,[e[38]||(e[38]=t("h3",{class:"text-lg font-medium text-gray-900 mb-6"},"Recent Activity",-1)),t("div",ne,[(a(!0),i(Z,null,U(w.value,n=>(a(),i("div",{key:n.id,class:"flex space-x-3"},[e[37]||(e[37]=t("div",{class:"flex-shrink-0"},[t("div",{class:"w-8 h-8 bg-gray-100 rounded-full flex items-center justify-center"},[t("svg",{class:"w-4 h-4 text-gray-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})])])],-1)),t("div",de,[t("p",ue,o(n.description),1),t("p",me,o(H(n.createdAt)),1)])]))),128)),w.value.length?m("",!0):(a(),i("div",ce," No recent activity found for this customer. "))])])]),_:1})):m("",!0)])):m("",!0)])]),_:1}))}};export{ke as default}; +import{r as _,c as P,s as E,o as W,i as k,w as d,v as O,g as a,b as t,a as i,j as m,d as u,t as o,e as r,F as S,k as x,af as Z,aR as U}from"./index-QAlcqU00.js";import{u as q}from"./customers-Gpmak2fJ.js";import{F as G,a as J}from"./FPPageHeader-CFIwZZgQ.js";import{F as c}from"./FPCard-AB6NRXg5.js";import{F as h}from"./FPCheckbox-DcRYwN3n.js";import{F as C}from"./FPBadge-DvOitM1C.js";import{F as K}from"./FPTabs-qq-Tmb7J.js";const Q={class:"px-6 py-8"},X={key:0,class:"flex items-center justify-center py-12"},Y={key:1,class:"text-center py-12"},tt={class:"text-gray-600 mb-4"},et={key:2,class:"space-y-8"},st={class:"grid grid-cols-1 md:grid-cols-4 gap-6"},ot={class:"p-6"},lt={class:"flex items-center"},at={class:"flex-shrink-0"},it={class:"ml-4"},rt={class:"text-lg font-semibold text-gray-900"},nt={class:"p-6"},dt={class:"flex items-center"},ut={class:"flex-shrink-0"},mt={class:"ml-4"},ct={class:"text-lg font-semibold text-gray-900"},vt={class:"p-6"},xt={class:"flex items-center"},yt={class:"ml-4"},pt={class:"text-lg font-semibold text-gray-900"},ft={class:"p-6"},gt={class:"flex items-center"},bt={class:"ml-4"},_t={class:"text-lg font-semibold text-gray-900"},kt={class:"p-6"},ht={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},Ct={class:"text-sm text-gray-900"},wt={class:"text-sm text-gray-900 font-mono"},Nt=["href"],St=["href"],At={class:"text-sm text-gray-900"},Ft={key:0,class:"mt-6"},Pt={class:"text-sm text-gray-900"},Tt={class:"p-6"},Vt={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},Bt={class:"text-sm text-gray-900"},Lt={class:"text-sm text-gray-900"},zt={class:"text-sm text-gray-900"},jt={key:0,class:"mt-6"},Dt={class:"grid grid-cols-2 md:grid-cols-4 gap-3"},Mt={class:"flex items-center"},Rt={class:"flex items-center"},$t={class:"flex items-center"},It={class:"flex items-center"},Ht={key:1,class:"mt-6"},Et={class:"text-sm text-gray-900"},Wt={class:"p-6"},Ot={class:"space-y-6"},Zt={key:0},Ut={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},qt={class:"text-sm text-gray-900"},Gt={class:"text-sm text-gray-900"},Jt=["href"],Kt={key:1,class:"text-sm text-gray-900"},Qt=["href"],Xt={key:1,class:"text-sm text-gray-900"},Yt={key:1},te={class:"text-sm text-gray-900"},ee={key:0},se={key:0},oe={key:1},le={key:2},ae={key:2},ie={class:"text-sm text-gray-900"},re={class:"p-6"},ne={class:"space-y-4"},de={class:"flex-1"},ue={class:"text-sm text-gray-900"},me={class:"text-xs text-gray-500"},ce={key:0,class:"text-center py-8 text-gray-500"},ke={__name:"CustomerDetailView",setup(ve){const T=E(),A=O(),V=q(),y=_(!1),p=_(null),s=_(null),v=_("basic"),w=_([]),N=P(()=>parseInt(T.params.id)),B=[{key:"basic",label:"Basic Information",icon:"info"},{key:"service",label:"SLA & Service",icon:"clock"},{key:"contact",label:"Contact & Location",icon:"map"},{key:"activity",label:"Recent Activity",icon:"activity"}],L=P(()=>{var e;if(!((e=s.value)!=null&&e.address))return!1;const l=s.value.address;return l.street||l.city||l.state||l.zipCode}),z=async()=>{y.value=!0,p.value=null;try{const l=await V.getCustomer(N.value);l?s.value=l:p.value="Customer not found"}catch(l){console.error("Failed to load customer:",l),p.value="Failed to load customer details"}finally{y.value=!1}},j=async()=>{try{w.value=[{id:1,description:"Work order WO-2024-001 completed",createdAt:"2024-01-15T10:30:00Z"},{id:2,description:"Customer information updated",createdAt:"2024-01-14T15:45:00Z"},{id:3,description:"New service request submitted",createdAt:"2024-01-12T09:15:00Z"}]}catch(l){console.error("Failed to load activity:",l)}},D=()=>{A.push(`/customers?edit=${N.value}`)},M=()=>{A.push(`/work-orders?create=true&customerId=${N.value}`)},R=l=>({active:"green",inactive:"gray",suspended:"red"})[l]||"gray",F=l=>({high:"red",medium:"yellow",low:"green"})[l]||"gray",$=l=>({internal:"blue",external:"green",partner:"purple",government:"gray"})[l]||"gray",I=l=>l?new Date(l).toLocaleDateString():"Never",H=l=>l?new Date(l).toLocaleString():"Unknown";return W(async()=>{await z(),v.value==="activity"&&await j()}),(l,e)=>(a(),k(G,null,{header:d(()=>{var n,f,g;return[u(J,{title:((n=s.value)==null?void 0:n.name)||"Customer Details",description:((f=s.value)==null?void 0:f.description)||"Customer information and service details",breadcrumbs:[{text:"Customers",to:"/customers"},{text:((g=s.value)==null?void 0:g.name)||"Loading...",to:null}]},{actions:d(()=>{var b;return[u(r(S),{variant:"outline",size:"sm",onClick:D,disabled:y.value},{default:d(()=>e[2]||(e[2]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1),x(" Edit Customer ",-1)])),_:1,__:[2]},8,["disabled"]),u(r(S),{variant:"primary",size:"sm",onClick:M,disabled:y.value||((b=s.value)==null?void 0:b.status)!=="active"},{default:d(()=>e[3]||(e[3]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),x(" Create Work Order ",-1)])),_:1,__:[3]},8,["disabled"])]}),_:1},8,["title","description","breadcrumbs"])]}),default:d(()=>[t("div",Q,[y.value?(a(),i("div",X,e[4]||(e[4]=[t("svg",{class:"animate-spin -ml-1 mr-3 h-8 w-8 text-blue-600",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},[t("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"}),t("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})],-1),t("span",{class:"text-gray-600"},"Loading customer details...",-1)]))):p.value?(a(),i("div",Y,[e[6]||(e[6]=t("div",{class:"text-red-500 mb-4"},[t("svg",{class:"w-12 h-12 mx-auto",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})])],-1)),e[7]||(e[7]=t("h3",{class:"text-lg font-medium text-gray-900 mb-2"},"Customer Not Found",-1)),t("p",tt,o(p.value),1),u(r(S),{onClick:e[0]||(e[0]=n=>l.$router.push("/customers"))},{default:d(()=>e[5]||(e[5]=[x(" Back to Customers ",-1)])),_:1,__:[5]})])):s.value?(a(),i("div",et,[t("div",st,[u(r(c),null,{default:d(()=>[t("div",ot,[t("div",lt,[t("div",at,[u(r(C),{variant:R(s.value.status),size:"lg"},{default:d(()=>[x(o(s.value.status),1)]),_:1},8,["variant"])]),t("div",it,[e[8]||(e[8]=t("p",{class:"text-sm font-medium text-gray-500"},"Status",-1)),t("p",rt,o(s.value.status==="active"?"Active":"Inactive"),1)])])])]),_:1}),u(r(c),null,{default:d(()=>[t("div",nt,[t("div",dt,[t("div",ut,[u(r(C),{variant:F(s.value.priority),size:"lg"},{default:d(()=>[x(o(s.value.priority),1)]),_:1},8,["variant"])]),t("div",mt,[e[9]||(e[9]=t("p",{class:"text-sm font-medium text-gray-500"},"Priority",-1)),t("p",ct,o(s.value.priority||"Not Set"),1)])])])]),_:1}),u(r(c),null,{default:d(()=>{var n;return[t("div",vt,[t("div",xt,[e[11]||(e[11]=t("div",{class:"flex-shrink-0"},[t("div",{class:"w-10 h-10 bg-blue-100 rounded-lg flex items-center justify-center"},[t("svg",{class:"w-6 h-6 text-blue-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})])])],-1)),t("div",yt,[e[10]||(e[10]=t("p",{class:"text-sm font-medium text-gray-500"},"Response SLA",-1)),t("p",pt,o(((n=s.value.sla)==null?void 0:n.responseTime)||"Not Set"),1)])])])]}),_:1}),u(r(c),null,{default:d(()=>[t("div",ft,[t("div",gt,[e[13]||(e[13]=t("div",{class:"flex-shrink-0"},[t("div",{class:"w-10 h-10 bg-green-100 rounded-lg flex items-center justify-center"},[t("svg",{class:"w-6 h-6 text-green-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})])])],-1)),t("div",bt,[e[12]||(e[12]=t("p",{class:"text-sm font-medium text-gray-500"},"Last Contact",-1)),t("p",_t,o(I(s.value.lastContactDate)),1)])])])]),_:1})]),u(r(K),{modelValue:v.value,"onUpdate:modelValue":e[1]||(e[1]=n=>v.value=n),tabs:B,class:"mb-6"},null,8,["modelValue"]),v.value==="basic"?(a(),k(r(c),{key:0},{default:d(()=>[t("div",kt,[e[21]||(e[21]=t("h3",{class:"text-lg font-medium text-gray-900 mb-6"},"Basic Information",-1)),t("div",ht,[t("div",null,[e[14]||(e[14]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Customer Name",-1)),t("p",Ct,o(s.value.name),1)]),t("div",null,[e[15]||(e[15]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Customer Code",-1)),t("p",wt,o(s.value.customerCode),1)]),t("div",null,[e[16]||(e[16]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Email Address",-1)),t("a",{href:`mailto:${s.value.email}`,class:"text-sm text-blue-600 hover:text-blue-800"},o(s.value.email),9,Nt)]),t("div",null,[e[17]||(e[17]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Phone Number",-1)),t("a",{href:`tel:${s.value.phone}`,class:"text-sm text-blue-600 hover:text-blue-800"},o(s.value.phone||"Not provided"),9,St)]),t("div",null,[e[18]||(e[18]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Customer Type",-1)),u(r(C),{variant:$(s.value.type)},{default:d(()=>[x(o(s.value.type),1)]),_:1},8,["variant"])]),t("div",null,[e[19]||(e[19]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Service Hours",-1)),t("p",At,o(s.value.serviceHours||"24x7"),1)])]),s.value.description?(a(),i("div",Ft,[e[20]||(e[20]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Description",-1)),t("p",Pt,o(s.value.description),1)])):m("",!0)])]),_:1})):m("",!0),v.value==="service"?(a(),k(r(c),{key:1},{default:d(()=>{var n,f,g,b;return[t("div",Tt,[e[28]||(e[28]=t("h3",{class:"text-lg font-medium text-gray-900 mb-6"},"SLA & Service Information",-1)),t("div",Vt,[t("div",null,[e[22]||(e[22]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Response Time SLA",-1)),t("p",Bt,o(((n=s.value.sla)==null?void 0:n.responseTime)||"Not defined"),1)]),t("div",null,[e[23]||(e[23]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Resolution Time SLA",-1)),t("p",Lt,o(((f=s.value.sla)==null?void 0:f.resolutionTime)||"Not defined"),1)]),t("div",null,[e[24]||(e[24]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Availability Target",-1)),t("p",zt,o((g=s.value.sla)!=null&&g.availability?`${s.value.sla.availability}%`:"Not defined"),1)]),t("div",null,[e[25]||(e[25]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Service Priority",-1)),u(r(C),{variant:F(s.value.priority)},{default:d(()=>[x(o(s.value.priority||"Standard"),1)]),_:1},8,["variant"])])]),s.value.notifications?(a(),i("div",jt,[e[26]||(e[26]=t("label",{class:"block text-sm font-medium text-gray-700 mb-3"},"Notification Preferences",-1)),t("div",Dt,[t("div",Mt,[u(r(h),{modelValue:s.value.notifications.email,disabled:"",label:"Email"},null,8,["modelValue"])]),t("div",Rt,[u(r(h),{modelValue:s.value.notifications.sms,disabled:"",label:"SMS"},null,8,["modelValue"])]),t("div",$t,[u(r(h),{modelValue:s.value.notifications.phone,disabled:"",label:"Phone"},null,8,["modelValue"])]),t("div",It,[u(r(h),{modelValue:s.value.notifications.portal,disabled:"",label:"Portal"},null,8,["modelValue"])])])])):m("",!0),(b=s.value.sla)!=null&&b.notes?(a(),i("div",Ht,[e[27]||(e[27]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"SLA Notes",-1)),t("p",Et,o(s.value.sla.notes),1)])):m("",!0)])]}),_:1})):m("",!0),v.value==="contact"?(a(),k(r(c),{key:2},{default:d(()=>{var n;return[t("div",Wt,[e[36]||(e[36]=t("h3",{class:"text-lg font-medium text-gray-900 mb-6"},"Contact & Location Information",-1)),t("div",Ot,[(n=s.value.primaryContact)!=null&&n.name?(a(),i("div",Zt,[e[33]||(e[33]=t("h4",{class:"text-base font-medium text-gray-900 mb-4"},"Primary Contact",-1)),t("div",Ut,[t("div",null,[e[29]||(e[29]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Name",-1)),t("p",qt,o(s.value.primaryContact.name),1)]),t("div",null,[e[30]||(e[30]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Title",-1)),t("p",Gt,o(s.value.primaryContact.title||"Not provided"),1)]),t("div",null,[e[31]||(e[31]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Email",-1)),s.value.primaryContact.email?(a(),i("a",{key:0,href:`mailto:${s.value.primaryContact.email}`,class:"text-sm text-blue-600 hover:text-blue-800"},o(s.value.primaryContact.email),9,Jt)):(a(),i("p",Kt,"Not provided"))]),t("div",null,[e[32]||(e[32]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Phone",-1)),s.value.primaryContact.phone?(a(),i("a",{key:0,href:`tel:${s.value.primaryContact.phone}`,class:"text-sm text-blue-600 hover:text-blue-800"},o(s.value.primaryContact.phone),9,Qt)):(a(),i("p",Xt,"Not provided"))])])])):m("",!0),L.value?(a(),i("div",Yt,[e[34]||(e[34]=t("h4",{class:"text-base font-medium text-gray-900 mb-4"},"Address",-1)),t("div",te,[s.value.address.street?(a(),i("p",ee,o(s.value.address.street),1)):m("",!0),t("p",null,[s.value.address.city?(a(),i("span",se,o(s.value.address.city),1)):m("",!0),s.value.address.state?(a(),i("span",oe,", "+o(s.value.address.state),1)):m("",!0),s.value.address.zipCode?(a(),i("span",le,o(s.value.address.zipCode),1)):m("",!0)])])])):m("",!0),s.value.notes?(a(),i("div",ae,[e[35]||(e[35]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Notes",-1)),t("p",ie,o(s.value.notes),1)])):m("",!0)])])]}),_:1})):m("",!0),v.value==="activity"?(a(),k(r(c),{key:3},{default:d(()=>[t("div",re,[e[38]||(e[38]=t("h3",{class:"text-lg font-medium text-gray-900 mb-6"},"Recent Activity",-1)),t("div",ne,[(a(!0),i(Z,null,U(w.value,n=>(a(),i("div",{key:n.id,class:"flex space-x-3"},[e[37]||(e[37]=t("div",{class:"flex-shrink-0"},[t("div",{class:"w-8 h-8 bg-gray-100 rounded-full flex items-center justify-center"},[t("svg",{class:"w-4 h-4 text-gray-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})])])],-1)),t("div",de,[t("p",ue,o(n.description),1),t("p",me,o(H(n.createdAt)),1)])]))),128)),w.value.length?m("",!0):(a(),i("div",ce," No recent activity found for this customer. "))])])]),_:1})):m("",!0)])):m("",!0)])]),_:1}))}};export{ke as default}; diff --git a/frontend/dist/assets/CustomersListView-Bc4T8qVE.js b/frontend/dist/assets/CustomersListView-Bc4T8qVE.js deleted file mode 100644 index 93954003..00000000 --- a/frontend/dist/assets/CustomersListView-Bc4T8qVE.js +++ /dev/null @@ -1,2 +0,0 @@ -import{r as L,aX as ce,c as _,m as he,l as je,o as Re,s as Ee,v as He,i as H,w as v,g as h,b as o,d as i,e,F as P,n as qe,k as B,a as A,j as T,h as re,t as D,aR as we,aV as $e,ae as ue,aU as de}from"./index-BUdRbiwj.js";import{u as be}from"./customers-BwQm3paR.js";import{u as Je}from"./useFormAutoSave-Jaawgo91.js";import{F as We,a as Xe}from"./FPPageHeader-CTG2L28r.js";import{F}from"./FPInput-CzR_dWoe.js";import{F as oe}from"./FPCheckbox-Bu8jNAEW.js";import{F as q}from"./FPSelect-C7p47Ma2.js";import{F as Ze}from"./FPStats-BGfZcDZc.js";import{F as Ge}from"./FPTable-CU8C_NYc.js";import{F as Qe}from"./FPModal-DWGF1LV8.js";import{F as me}from"./FPBadge-BKY5dPnL.js";import{F as Ce}from"./FPTabs-R71V25QN.js";import{_ as Ye}from"./FormRestoreNotification-DYBlXhOP.js";import"./FPCard-qHzcEQAE.js";function Ke(){const S=be(),{success:U,error:V}=je(),d=L(!1),r=L(!1),u=ce({search:"",type:"",priority:"",status:"",sortBy:"name",sortOrder:"asc"}),b=ce({page:1,itemsPerPage:25,total:0}),z=_(()=>{let l=[...S.customers||[]];if(u.search){const p=u.search.toLowerCase();l=l.filter(m=>{var g;return m&&((m.name||"").toLowerCase().includes(p)||(m.email||"").toLowerCase().includes(p)||(m.customerCode||"").toLowerCase().includes(p)||(((g=m.primaryContact)==null?void 0:g.name)||"").toLowerCase().includes(p))})}u.type&&(l=l.filter(p=>p&&p.type===u.type)),u.priority&&(l=l.filter(p=>p&&p.priority===u.priority)),u.status&&(l=l.filter(p=>p&&p.status===u.status)),r.value&&(l=l.filter(p=>p&&p.status==="active")),l.sort((p,m)=>{if(!p&&!m)return 0;if(!p)return 1;if(!m)return-1;let g=p[u.sortBy],O=m[u.sortBy];if(u.sortBy.includes(".")){const E=u.sortBy.split(".");g=E.reduce((I,j)=>I==null?void 0:I[j],p),O=E.reduce((I,j)=>I==null?void 0:I[j],m)}if(!g&&!O)return 0;if(!g)return 1;if(!O)return-1;g=g.toString().toLowerCase(),O=O.toString().toLowerCase();const c=g.localeCompare(O);return u.sortOrder==="desc"?-c:c}),l=l.filter(p=>p!=null),b.total=l.length;const f=(b.page-1)*b.itemsPerPage,k=f+b.itemsPerPage;return l.slice(f,k)}),R=_(()=>[{label:"Total Customers",value:S.totalCustomers,change:"+12%",changeType:"positive"},{label:"Active Customers",value:S.activeCustomersCount,change:"+8%",changeType:"positive"},{label:"High Priority",value:S.highPriorityCustomersCount,change:"+3",changeType:"neutral"},{label:"Avg Response Time",value:S.averageResponseTime||"N/A",change:"-15min",changeType:"positive"}]),X=l=>{u.search=l,b.page=1},x=()=>{},Z=()=>{Object.assign(u,{search:"",type:"",priority:"",status:"",sortBy:"name",sortOrder:"asc"}),r.value=!1,b.page=1},G=()=>{r.value=!r.value,b.page=1},w=l=>{b.page=l},Q=l=>{u.sortBy===l.key?u.sortOrder=u.sortOrder==="asc"?"desc":"asc":(u.sortBy=l.key,u.sortOrder="asc"),b.page=1},Y=async()=>{d.value=!0;try{await S.fetchCustomers(),U("Customer list has been updated successfully","Data refreshed")}catch(l){console.error("Failed to refresh customers:",l),V("Failed to refresh customer data","Refresh failed")}finally{d.value=!1}},K=async(l="csv")=>{d.value=!0;try{const f=z.value;if(l==="csv"){const k=y(f);M(k,`customers_${new Date().toISOString().split("T")[0]}.csv`,"text/csv")}else if(l==="json"){const k=JSON.stringify(f,null,2);M(k,`customers_${new Date().toISOString().split("T")[0]}.json`,"application/json")}U(`${f.length} customers exported successfully`,"Export completed")}catch(f){console.error("Export failed:",f),V("Failed to export customer data","Export failed")}finally{d.value=!1}},ee=async l=>{try{const f=l.status==="active"?"inactive":"active";await S.updateCustomer(l.id,{...l,status:f}),U(`Customer "${l.name}" has been ${f==="active"?"activated":"deactivated"}`,"Status updated")}catch(f){console.error("Failed to toggle customer status:",f),V("Failed to update customer status","Update failed")}},n=async l=>{try{await S.deleteCustomer(l.id),U(`Customer "${l.name}" has been removed`,"Customer deleted")}catch(f){console.error("Failed to delete customer:",f),V("Failed to delete customer","Delete failed")}},a=async(l,f)=>{d.value=!0;try{const k=l.map(p=>S.updateCustomer(p,f));await Promise.all(k),U(`${l.length} customers updated successfully`,"Bulk update completed")}catch(k){console.error("Bulk update failed:",k),V("Failed to update customers","Bulk update failed")}finally{d.value=!1}},y=l=>{if(!l||l.length===0)return"";const f=["Customer Code","Name","Email","Phone","Type","Priority","Status","Response Time SLA","Resolution Time SLA","Primary Contact","Address","Created Date"],k=l.map(m=>{var g,O,c,E,I,j,se;return[m.customerCode||"",m.name||"",m.email||"",m.phone||"",m.type||"",m.priority||"",m.status||"",((g=m.sla)==null?void 0:g.responseTime)||"",((O=m.sla)==null?void 0:O.resolutionTime)||"",((c=m.primaryContact)==null?void 0:c.name)||"",[(E=m.address)==null?void 0:E.street,(I=m.address)==null?void 0:I.city,(j=m.address)==null?void 0:j.state,(se=m.address)==null?void 0:se.zipCode].filter(Boolean).join(", "),m.createdAt?new Date(m.createdAt).toLocaleDateString():""]});return[f,...k].map(m=>m.map(g=>`"${g}"`).join(",")).join(` -`)},M=(l,f,k)=>{const p=new Blob([l],{type:k}),m=URL.createObjectURL(p),g=document.createElement("a");g.href=m,g.download=f,document.body.appendChild(g),g.click(),document.body.removeChild(g),URL.revokeObjectURL(m)},te=async l=>{d.value=!0;try{return await S.searchCustomers(l)}catch(f){return console.error("Search failed:",f),V("Failed to search customers","Search failed"),[]}finally{d.value=!1}};return he(()=>[u.search,u.type,u.priority,u.status],()=>{b.page=1}),{loading:d,filters:u,pagination:b,showActiveOnly:r,filteredCustomers:z,customerStatsFormatted:R,handleSearch:X,applyFilters:x,clearAllFilters:Z,toggleActiveFilter:G,handlePageChange:w,handleSortChange:Q,refreshData:Y,exportCustomers:K,toggleCustomerStatus:ee,deleteCustomer:n,bulkUpdateCustomers:a,searchCustomers:te}}function et(){const S=L(!1),U=L(!1),V=L(!1),d=L("basic"),r=ce({id:null,name:"",email:"",phone:"",type:"",priority:"medium",customerCode:"",description:"",status:"active",sla:{responseTime:"",resolutionTime:"",availability:"",notes:""},serviceHours:"24x7",notifications:{email:!0,sms:!1,phone:!1,portal:!0},primaryContact:{name:"",title:"",email:"",phone:""},address:{street:"",city:"",state:"",zipCode:""},notes:"",createdAt:null,updatedAt:null}),u=[{key:"basic",label:"Basic Information",icon:"info",required:["name","email","type"]},{key:"service",label:"SLA & Service",icon:"clock",required:[]},{key:"contact",label:"Contact & Location",icon:"map",required:[]}],b=()=>{const n=[r.name,r.email,r.phone,r.type,r.priority,r.description,r.sla.responseTime,r.sla.resolutionTime,r.primaryContact.name,r.primaryContact.email,r.address.street,r.address.city],a=n.filter(y=>y&&y.toString().trim()!=="").length;return Math.round(a/n.length*100)},z=n=>{const a=u.find(y=>y.key===n);return!a||!a.required?!0:a.required.every(y=>{if(y.includes(".")){const[M,te]=y.split(".");return r[M]&&r[M][te]}return r[y]&&r[y].toString().trim()!==""})},R=()=>u.findIndex(n=>n.key===d.value),X=()=>{const n=R();n{const n=R();n>0&&(d.value=u[n-1].key)},Z=n=>{const a=u.findIndex(M=>M.key===n),y=R();(a<=y||z(d.value))&&(d.value=n)},G=()=>{V.value=!0},w=()=>{const n={};if((!r.name||r.name.trim()==="")&&(n.name="Customer name is required"),!r.email||r.email.trim()===""?n.email="Email address is required":/\S+@\S+\.\S+/.test(r.email)||(n.email="Please enter a valid email address"),r.type||(n.type="Customer type is required"),r.phone&&!/^\+?[\d\s\-\(\)]+$/.test(r.phone)&&(n.phone="Please enter a valid phone number"),r.sla.availability){const a=parseFloat(r.sla.availability);(isNaN(a)||a<0||a>100)&&(n.availability="Availability must be between 0 and 100")}return r.primaryContact.email&&!/\S+@\S+\.\S+/.test(r.primaryContact.email)&&(n.primaryContactEmail="Please enter a valid primary contact email"),{isValid:Object.keys(n).length===0,errors:n}},Q=()=>{Object.assign(r,{id:null,name:"",email:"",phone:"",type:"",priority:"medium",customerCode:"",description:"",status:"active",sla:{responseTime:"",resolutionTime:"",availability:"",notes:""},serviceHours:"24x7",notifications:{email:!0,sms:!1,phone:!1,portal:!0},primaryContact:{name:"",title:"",email:"",phone:""},address:{street:"",city:"",state:"",zipCode:""},notes:"",createdAt:null,updatedAt:null}),d.value="basic",V.value=!1,U.value=!1,S.value=!1},Y=n=>{Object.assign(r,{...n,sla:{responseTime:"",resolutionTime:"",availability:"",notes:"",...n.sla},notifications:{email:!0,sms:!1,phone:!1,portal:!0,...n.notifications},primaryContact:{name:"",title:"",email:"",phone:"",...n.primaryContact},address:{street:"",city:"",state:"",zipCode:"",...n.address}}),U.value=!0,V.value=!1},K=n=>({customerCode:"Auto-generated unique identifier for the customer",priority:"Determines service level and response priority",responseTime:"Maximum time to acknowledge service requests",resolutionTime:"Target time to resolve issues",availability:"Uptime service level agreement percentage",serviceHours:"When support is available for this customer"})[n]||"",ee=()=>{const n={...r};return Object.keys(n).forEach(a=>{typeof n[a]=="object"&&n[a]!==null?Object.keys(n[a]).forEach(y=>{n[a][y]===""&&(n[a][y]=null)}):n[a]===""&&(n[a]=null)}),n.sla.availability&&(n.sla.availability=parseFloat(n.sla.availability)),U.value||(n.createdAt=new Date().toISOString()),n.updatedAt=new Date().toISOString(),n};return{customerForm:r,currentFormTab:d,formTabs:u,saving:S,isEditing:U,hasUnsavedChanges:V,completionPercentage:_(()=>b()),isCurrentTabValid:_(()=>z(d.value)),nextTab:X,previousTab:x,goToTab:Z,handleFormInput:G,validateCustomer:w,resetForm:Q,loadCustomer:Y,getCompletionPercentage:b,getFieldHelper:K,formatForSubmission:ee,isTabValid:z}}const tt={class:"p-6"},st={class:"mb-6 grid grid-cols-1 md:grid-cols-4 gap-4"},at={class:"flex space-x-2"},ot={key:0,class:"flex items-center space-x-2"},lt={class:"font-mono text-sm font-medium"},nt={key:0,class:"flex items-center space-x-3"},it={class:"font-medium text-gray-900"},rt={class:"text-sm text-gray-500"},ut={key:0,class:"text-sm"},dt={class:"font-medium"},mt={class:"text-gray-500"},ct={key:0,class:"text-sm"},pt={class:"text-gray-900"},vt={class:"text-gray-500"},yt={key:0,class:"flex items-center space-x-2"},ft={key:0,class:"w-4 h-4 text-red-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},gt={key:1,class:"w-4 h-4 text-green-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},Ct={class:"flex items-center justify-between"},ht={class:"text-lg font-medium text-gray-900"},bt={class:"flex items-center space-x-2"},kt={key:0,class:"text-xs text-amber-600 bg-amber-50 px-2 py-1 rounded"},Vt={key:1,class:"text-xs text-gray-500"},xt={key:0,class:"space-y-4"},St={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},Tt={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},Ft={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},Ut={key:1,class:"space-y-4"},It={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},Pt={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},At={class:"space-y-3"},Dt={class:"grid grid-cols-2 md:grid-cols-4 gap-3"},Ot={key:2,class:"space-y-4"},Bt={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},_t={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},Nt={class:"space-y-3"},Lt={class:"grid grid-cols-1 md:grid-cols-3 gap-4"},zt={class:"flex justify-between"},Mt={class:"flex space-x-2"},jt={class:"flex space-x-2"},es={__name:"CustomersListView",setup(S){const U=Ee(),V=He(),d=be(),{exportCustomers:r,refreshData:u,toggleCustomerStatus:b,loading:z,filteredCustomers:R,customerStatsFormatted:X,filters:x,pagination:Z,handleSearch:G,applyFilters:w,handlePageChange:Q,handleSortChange:Y,clearAllFilters:K,showActiveOnly:ee,toggleActiveFilter:n}=Ke(),{customerForm:a,currentFormTab:y,formTabs:M,hasUnsavedChanges:te,isEditing:l,saving:f,resetForm:k,loadCustomer:p,getCompletionPercentage:m,nextTab:g,previousTab:O,handleFormInput:c}=et(),{hasUnsavedChanges:E,saveNow:I,restoreFormData:j,clearSavedData:se,hasSavedData:le,getSavedDataInfo:pe,markUserInteraction:ke}=Je(a,{storageKey:"atlas_customer_form_data",saveInterval:3e3,excludeFields:[]}),$=L(!1),J=L(null),W=L(!1),ne=L("all"),Ve=_(()=>d.customerTypeOptions),ve=_(()=>d.priorityOptions),xe=_(()=>d.responseTimeOptions),Se=_(()=>d.resolutionTimeOptions),Te=_(()=>d.serviceHoursOptions),Fe=_(()=>d.customerTypeOptions),Ue=[{key:"customerCode",label:"Code",sortable:!0,width:"12%"},{key:"name",label:"Customer",sortable:!0,width:"20%"},{key:"type",label:"Type",sortable:!0,width:"12%"},{key:"priority",label:"Priority",sortable:!0,width:"10%"},{key:"sla",label:"SLA",width:"12%"},{key:"status",label:"Status",sortable:!0,width:"10%"},{key:"lastContact",label:"Last Contact",sortable:!0,width:"14%"},{key:"actions",label:"Actions",width:"10%",align:"center"}],Ie=_(()=>[{key:"all",label:"All Customers",count:d.totalCustomers||0},{key:"active",label:"Active",count:d.activeCustomersCount||0},{key:"inactive",label:"Inactive",count:d.inactiveCustomersCount||0},{key:"high-priority",label:"High Priority",count:d.highPriorityCustomersCount||0}]),Pe=()=>{j(),$.value=!1,J.value=null},Ae=()=>{se(),$.value=!1,J.value=null},ye=()=>{l.value=!1,De(),le()||k(),W.value=!0,y.value="basic"},De=()=>{!l.value&&le()&&(J.value=pe(),$.value=!0)},fe=C=>{p(C),W.value=!0,y.value="basic",le()&&(J.value=pe(),$.value=!0)},ge=C=>{V.push(`/customers/${C.id}`)},ie=()=>{E.value&&I(),W.value=!1,$.value=!1,J.value=null,k()},Oe=async()=>{f.value=!0;try{l.value?await d.updateCustomer(a.id,a):await d.createCustomer(a),se(),ie(),await u()}catch(C){console.error("Error saving customer:",C)}finally{f.value=!1}},Be=C=>{switch(ne.value=C,C){case"active":x.value.status="active";break;case"inactive":x.value.status="inactive";break;case"high-priority":x.value.priority="high";break;default:x.value.status="",x.value.priority=""}},_e=C=>({internal:"blue",external:"green",partner:"purple",government:"gray"})[C]||"gray",Ne=C=>({high:"red",medium:"yellow",low:"green"})[C]||"gray",Le=C=>({active:"green",inactive:"gray",suspended:"red"})[C]||"gray",ze=C=>C?new Date(C).toLocaleDateString():"Never";Re(async()=>{d.loadMockData(),await u();const C=U.query.edit;C&&setTimeout(()=>{const t=d.customers.find(N=>N.id===parseInt(C));t&&fe(t),V.replace({path:"/customers"})},500),U.query.create==="true"&&setTimeout(()=>{ye(),V.replace({path:"/customers"})},500)});const Me=()=>{ke()};return he(a,()=>{W.value&&Me()},{deep:!0}),(C,s)=>(h(),H(We,null,{header:v(()=>[i(Xe,{title:"Customers",description:"Manage customers and service recipients",breadcrumbs:[{text:"Customers",to:null}]},{actions:v(()=>[i(e(P),{variant:"outline",size:"sm",onClick:e(r)},{default:v(()=>s[34]||(s[34]=[o("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1),B(" Export ",-1)])),_:1,__:[34]},8,["onClick"]),i(e(P),{variant:"outline",size:"sm",onClick:e(u)},{default:v(()=>s[35]||(s[35]=[o("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),B(" Refresh ",-1)])),_:1,__:[35]},8,["onClick"]),i(e(P),{variant:"primary",size:"sm",onClick:ye},{default:v(()=>s[36]||(s[36]=[o("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),B(" Add Customer ",-1)])),_:1,__:[36]})]),stats:v(()=>[i(e(Ze),{stats:e(X)},null,8,["stats"])]),tabs:v(()=>[i(e(Ce),{modelValue:ne.value,"onUpdate:modelValue":s[0]||(s[0]=t=>ne.value=t),tabs:Ie.value,onTabChange:Be},null,8,["modelValue","tabs"])]),_:1})]),default:v(()=>[o("div",tt,[o("div",st,[i(e(F),{modelValue:e(x).search,"onUpdate:modelValue":s[1]||(s[1]=t=>e(x).search=t),placeholder:"Search customers...",onInput:e(G)},{prepend:v(()=>s[37]||(s[37]=[o("svg",{class:"w-4 h-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1)])),_:1},8,["modelValue","onInput"]),i(e(q),{modelValue:e(x).type,"onUpdate:modelValue":[s[2]||(s[2]=t=>e(x).type=t),e(w)],placeholder:"Filter by Type",options:Ve.value},null,8,["modelValue","options","onUpdate:modelValue"]),i(e(q),{modelValue:e(x).priority,"onUpdate:modelValue":[s[3]||(s[3]=t=>e(x).priority=t),e(w)],placeholder:"Filter by Priority",options:ve.value},null,8,["modelValue","options","onUpdate:modelValue"]),o("div",at,[i(e(P),{variant:"outline",size:"sm",class:qe({"bg-primary-50 border-primary-300 text-primary-700":e(ee)}),onClick:e(n),title:"Show active customers only"},{default:v(()=>s[38]||(s[38]=[o("svg",{class:"w-4 h-4 mr-1",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})],-1),B(" Active ",-1)])),_:1,__:[38]},8,["class","onClick"]),i(e(P),{variant:"outline",size:"sm",onClick:e(K),title:"Clear all filters"},{default:v(()=>s[39]||(s[39]=[B(" Clear ",-1)])),_:1,__:[39]},8,["onClick"])])]),i(e(Ge),{columns:Ue,data:e(R),loading:e(z),pagination:e(Z),onRowClick:ge,onPageChange:e(Q),onSortChange:e(Y)},{customerCode:v(({row:t})=>[t?(h(),A("div",ot,[i(e(me),{variant:_e(t==null?void 0:t.type),size:"xs",class:"w-2 h-2 rounded-full p-0"},null,8,["variant"]),o("span",lt,D((t==null?void 0:t.customerCode)||"N/A"),1)])):T("",!0)]),name:v(({row:t})=>{var N,ae;return[t?(h(),A("div",nt,[i(e(we),{user:{firstName:((N=t==null?void 0:t.name)==null?void 0:N.split(" ")[0])||"N",lastName:((ae=t==null?void 0:t.name)==null?void 0:ae.split(" ")[1])||"A"},size:"sm"},null,8,["user"]),o("div",null,[o("div",it,D((t==null?void 0:t.name)||"Unknown"),1),o("div",rt,D((t==null?void 0:t.email)||"No email"),1)])])):T("",!0)]}),priority:v(({row:t})=>[t?(h(),H(e(me),{key:0,variant:Ne(t==null?void 0:t.priority)},{default:v(()=>[B(D((t==null?void 0:t.priority)||"Unknown"),1)]),_:2},1032,["variant"])):T("",!0)]),sla:v(({row:t})=>{var N,ae;return[t?(h(),A("div",ut,[o("div",dt,D(((N=t==null?void 0:t.sla)==null?void 0:N.responseTime)||"N/A"),1),o("div",mt,D(((ae=t==null?void 0:t.sla)==null?void 0:ae.resolutionTime)||"N/A"),1)])):T("",!0)]}),status:v(({row:t})=>[t?(h(),H(e(me),{key:0,variant:Le((t==null?void 0:t.status)||"inactive")},{default:v(()=>[B(D((t==null?void 0:t.status)||"Unknown"),1)]),_:2},1032,["variant"])):T("",!0)]),lastContact:v(({row:t})=>[t?(h(),A("div",ct,[o("div",pt,D(ze(t==null?void 0:t.lastContactDate)),1),o("div",vt,D((t==null?void 0:t.lastContactMethod)||"Unknown"),1)])):T("",!0)]),actions:v(({row:t})=>[t?(h(),A("div",yt,[i(e(P),{variant:"ghost",size:"xs",onClick:re(N=>ge(t),["stop"]),title:"View Customer"},{default:v(()=>s[40]||(s[40]=[o("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"}),o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"})],-1)])),_:2,__:[40]},1032,["onClick"]),i(e(P),{variant:"ghost",size:"xs",onClick:re(N=>fe(t),["stop"]),title:"Edit Customer"},{default:v(()=>s[41]||(s[41]=[o("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1)])),_:2,__:[41]},1032,["onClick"]),t?(h(),H(e(P),{key:0,variant:"ghost",size:"xs",onClick:re(N=>e(b)(t),["stop"]),title:(t==null?void 0:t.status)==="active"?"Deactivate Customer":"Activate Customer"},{default:v(()=>[(t==null?void 0:t.status)==="active"?(h(),A("svg",ft,s[42]||(s[42]=[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z"},null,-1)]))):(h(),A("svg",gt,s[43]||(s[43]=[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"},null,-1)])))]),_:2},1032,["onClick","title"])):T("",!0)])):T("",!0)]),_:1},8,["data","loading","pagination","onPageChange","onSortChange"])]),i(e(Qe),{modelValue:W.value,"onUpdate:modelValue":s[33]||(s[33]=t=>W.value=t),size:"xl",onCancel:ie},{header:v(()=>[o("div",Ct,[o("h3",ht,D(e(l)?"Edit Customer":"Create Customer"),1),o("div",bt,[e(l)&&e(te)?(h(),A("span",kt," Auto-saving... ")):T("",!0),e(y)!=="basic"?(h(),A("span",Vt,D(e(m)())+"% complete ",1)):T("",!0)])])]),footer:v(()=>[o("div",zt,[o("div",Mt,[e(y)!=="basic"?(h(),H(e(P),{key:0,variant:"outline",onClick:e(O)},{default:v(()=>s[49]||(s[49]=[B(" Previous ",-1)])),_:1,__:[49]},8,["onClick"])):T("",!0)]),o("div",jt,[i(e(P),{variant:"outline",onClick:ie},{default:v(()=>s[50]||(s[50]=[B(" Cancel ",-1)])),_:1,__:[50]}),e(y)!=="contact"?(h(),H(e(P),{key:0,variant:"primary",onClick:e(g)},{default:v(()=>s[51]||(s[51]=[B(" Next ",-1)])),_:1,__:[51]},8,["onClick"])):(h(),H(e(P),{key:1,variant:"primary",loading:e(f),onClick:Oe},{default:v(()=>[B(D(e(l)?"Update Customer":"Create Customer"),1)]),_:1},8,["loading"]))])])]),default:v(()=>[i(e(Ye),{visible:$.value,"saved-data-info":J.value,onRestore:Pe,onDismiss:Ae},null,8,["visible","saved-data-info"]),i(e(Ce),{modelValue:e(y),"onUpdate:modelValue":s[4]||(s[4]=t=>$e(y)?y.value=t:null),tabs:e(M),class:"mb-6"},null,8,["modelValue","tabs"]),e(y)==="basic"?(h(),A("div",xt,[o("div",St,[i(e(F),{modelValue:e(a).name,"onUpdate:modelValue":s[5]||(s[5]=t=>e(a).name=t),label:"Customer Name",placeholder:"Enter customer name",required:"",onInput:e(c)},null,8,["modelValue","onInput"]),i(e(F),{modelValue:e(a).email,"onUpdate:modelValue":s[6]||(s[6]=t=>e(a).email=t),label:"Email Address",type:"email",placeholder:"customer@example.com",required:"",onInput:e(c)},null,8,["modelValue","onInput"])]),o("div",Tt,[i(e(F),{modelValue:e(a).phone,"onUpdate:modelValue":s[7]||(s[7]=t=>e(a).phone=t),label:"Phone Number",placeholder:"+1 (555) 123-4567",onInput:e(c)},null,8,["modelValue","onInput"]),i(e(q),{modelValue:e(a).type,"onUpdate:modelValue":[s[8]||(s[8]=t=>e(a).type=t),e(c)],label:"Customer Type",options:Fe.value,placeholder:"Select customer type",required:""},null,8,["modelValue","options","onUpdate:modelValue"])]),o("div",Ft,[i(e(q),{modelValue:e(a).priority,"onUpdate:modelValue":[s[9]||(s[9]=t=>e(a).priority=t),e(c)],label:"Priority Level",options:ve.value,placeholder:"Select priority"},null,8,["modelValue","options","onUpdate:modelValue"]),i(e(F),{modelValue:e(a).customerCode,"onUpdate:modelValue":s[10]||(s[10]=t=>e(a).customerCode=t),label:"Customer Code",placeholder:"Auto-generated",disabled:e(l),onInput:e(c)},null,8,["modelValue","disabled","onInput"])]),o("div",null,[s[44]||(s[44]=o("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Description",-1)),ue(o("textarea",{"onUpdate:modelValue":s[11]||(s[11]=t=>e(a).description=t),placeholder:"Brief description of the customer...",rows:"3",class:"w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm",onInput:s[12]||(s[12]=(...t)=>e(c)&&e(c)(...t))},null,544),[[de,e(a).description]])])])):T("",!0),e(y)==="service"?(h(),A("div",Ut,[o("div",It,[i(e(q),{modelValue:e(a).sla.responseTime,"onUpdate:modelValue":[s[13]||(s[13]=t=>e(a).sla.responseTime=t),e(c)],label:"Response Time SLA",options:xe.value,placeholder:"Select response time"},null,8,["modelValue","options","onUpdate:modelValue"]),i(e(q),{modelValue:e(a).sla.resolutionTime,"onUpdate:modelValue":[s[14]||(s[14]=t=>e(a).sla.resolutionTime=t),e(c)],label:"Resolution Time SLA",options:Se.value,placeholder:"Select resolution time"},null,8,["modelValue","options","onUpdate:modelValue"])]),o("div",Pt,[i(e(F),{modelValue:e(a).sla.availability,"onUpdate:modelValue":s[15]||(s[15]=t=>e(a).sla.availability=t),label:"Availability Target (%)",type:"number",min:"0",max:"100",placeholder:"99.9",onInput:e(c)},null,8,["modelValue","onInput"]),i(e(q),{modelValue:e(a).serviceHours,"onUpdate:modelValue":[s[16]||(s[16]=t=>e(a).serviceHours=t),e(c)],label:"Service Hours",options:Te.value,placeholder:"Select service hours"},null,8,["modelValue","options","onUpdate:modelValue"])]),o("div",At,[s[45]||(s[45]=o("label",{class:"block text-sm font-medium text-gray-700"},"Notification Preferences",-1)),o("div",Dt,[i(e(oe),{modelValue:e(a).notifications.email,"onUpdate:modelValue":s[17]||(s[17]=t=>e(a).notifications.email=t),label:"Email",onChange:e(c)},null,8,["modelValue","onChange"]),i(e(oe),{modelValue:e(a).notifications.sms,"onUpdate:modelValue":s[18]||(s[18]=t=>e(a).notifications.sms=t),label:"SMS",onChange:e(c)},null,8,["modelValue","onChange"]),i(e(oe),{modelValue:e(a).notifications.phone,"onUpdate:modelValue":s[19]||(s[19]=t=>e(a).notifications.phone=t),label:"Phone",onChange:e(c)},null,8,["modelValue","onChange"]),i(e(oe),{modelValue:e(a).notifications.portal,"onUpdate:modelValue":s[20]||(s[20]=t=>e(a).notifications.portal=t),label:"Portal",onChange:e(c)},null,8,["modelValue","onChange"])])]),o("div",null,[s[46]||(s[46]=o("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"SLA Notes",-1)),ue(o("textarea",{"onUpdate:modelValue":s[21]||(s[21]=t=>e(a).sla.notes=t),placeholder:"Additional SLA requirements or notes...",rows:"3",class:"w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm",onInput:s[22]||(s[22]=(...t)=>e(c)&&e(c)(...t))},null,544),[[de,e(a).sla.notes]])])])):T("",!0),e(y)==="contact"?(h(),A("div",Ot,[o("div",Bt,[i(e(F),{modelValue:e(a).primaryContact.name,"onUpdate:modelValue":s[23]||(s[23]=t=>e(a).primaryContact.name=t),label:"Primary Contact Name",placeholder:"John Doe",onInput:e(c)},null,8,["modelValue","onInput"]),i(e(F),{modelValue:e(a).primaryContact.title,"onUpdate:modelValue":s[24]||(s[24]=t=>e(a).primaryContact.title=t),label:"Primary Contact Title",placeholder:"Facility Manager",onInput:e(c)},null,8,["modelValue","onInput"])]),o("div",_t,[i(e(F),{modelValue:e(a).primaryContact.email,"onUpdate:modelValue":s[25]||(s[25]=t=>e(a).primaryContact.email=t),label:"Primary Contact Email",type:"email",placeholder:"john.doe@customer.com",onInput:e(c)},null,8,["modelValue","onInput"]),i(e(F),{modelValue:e(a).primaryContact.phone,"onUpdate:modelValue":s[26]||(s[26]=t=>e(a).primaryContact.phone=t),label:"Primary Contact Phone",placeholder:"+1 (555) 123-4567",onInput:e(c)},null,8,["modelValue","onInput"])]),o("div",Nt,[s[47]||(s[47]=o("label",{class:"block text-sm font-medium text-gray-700"},"Address",-1)),i(e(F),{modelValue:e(a).address.street,"onUpdate:modelValue":s[27]||(s[27]=t=>e(a).address.street=t),placeholder:"Street Address",onInput:e(c)},null,8,["modelValue","onInput"]),o("div",Lt,[i(e(F),{modelValue:e(a).address.city,"onUpdate:modelValue":s[28]||(s[28]=t=>e(a).address.city=t),placeholder:"City",onInput:e(c)},null,8,["modelValue","onInput"]),i(e(F),{modelValue:e(a).address.state,"onUpdate:modelValue":s[29]||(s[29]=t=>e(a).address.state=t),placeholder:"State/Province",onInput:e(c)},null,8,["modelValue","onInput"]),i(e(F),{modelValue:e(a).address.zipCode,"onUpdate:modelValue":s[30]||(s[30]=t=>e(a).address.zipCode=t),placeholder:"ZIP Code",onInput:e(c)},null,8,["modelValue","onInput"])])]),o("div",null,[s[48]||(s[48]=o("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Customer Notes",-1)),ue(o("textarea",{"onUpdate:modelValue":s[31]||(s[31]=t=>e(a).notes=t),placeholder:"Additional notes about this customer...",rows:"4",class:"w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm",onInput:s[32]||(s[32]=(...t)=>e(c)&&e(c)(...t))},null,544),[[de,e(a).notes]])])])):T("",!0)]),_:1},8,["modelValue"])]),_:1}))}};export{es as default}; diff --git a/frontend/dist/assets/CustomersListView-Dh2vfIHr.js b/frontend/dist/assets/CustomersListView-Dh2vfIHr.js new file mode 100644 index 00000000..feaca45f --- /dev/null +++ b/frontend/dist/assets/CustomersListView-Dh2vfIHr.js @@ -0,0 +1,2 @@ +import{r as M,aY as ce,c as O,m as ke,l as He,o as Re,s as qe,v as $e,i as H,w as v,g,b as o,d as i,e,F as _,n as Je,k as z,a as b,j as V,h as re,t as D,aS as We,aW as Ye,ae as ue,aV as de}from"./index-QAlcqU00.js";import{u as xe}from"./customers-Gpmak2fJ.js";import{u as Ze}from"./useFormAutoSave-BrW9Wl2Q.js";import{F as Ge,a as Qe}from"./FPPageHeader-CFIwZZgQ.js";import{F as P}from"./FPInput-D5RURom0.js";import{F as oe}from"./FPCheckbox-DcRYwN3n.js";import{F as R}from"./FPSelect-j7n_x8eB.js";import{F as Xe}from"./FPStats-DOY0PQQF.js";import{F as Ke}from"./FPTable-CWvngIYd.js";import{F as et}from"./FPModal-DMoPysvU.js";import{F as me}from"./FPBadge-DvOitM1C.js";import{F as be}from"./FPTabs-qq-Tmb7J.js";import{_ as tt}from"./FormRestoreNotification-2Wflg1mH.js";import"./FPCard-AB6NRXg5.js";function st(){const I=xe(),{success:A,error:S}=He(),d=M(!1),r=M(!1),u=ce({search:"",type:"",priority:"",status:"",sortBy:"name",sortOrder:"asc"}),k=ce({page:1,itemsPerPage:25,total:0}),N=O(()=>{let l=[...I.customers||[]];if(u.search){const p=u.search.toLowerCase();l=l.filter(m=>{var h;return m&&((m.name||"").toLowerCase().includes(p)||(m.email||"").toLowerCase().includes(p)||(m.customerCode||"").toLowerCase().includes(p)||(((h=m.primaryContact)==null?void 0:h.name)||"").toLowerCase().includes(p))})}u.type&&(l=l.filter(p=>p&&p.type===u.type)),u.priority&&(l=l.filter(p=>p&&p.priority===u.priority)),u.status&&(l=l.filter(p=>p&&p.status===u.status)),r.value&&(l=l.filter(p=>p&&p.status==="active")),l.sort((p,m)=>{if(!p&&!m)return 0;if(!p)return 1;if(!m)return-1;let h=p[u.sortBy],L=m[u.sortBy];if(u.sortBy.includes(".")){const B=u.sortBy.split(".");h=B.reduce((F,w)=>F==null?void 0:F[w],p),L=B.reduce((F,w)=>F==null?void 0:F[w],m)}if(!h&&!L)return 0;if(!h)return 1;if(!L)return-1;h=h.toString().toLowerCase(),L=L.toString().toLowerCase();const c=h.localeCompare(L);return u.sortOrder==="desc"?-c:c}),l=l.filter(p=>p!=null),k.total=l.length;const y=(k.page-1)*k.itemsPerPage,x=y+k.itemsPerPage;return l.slice(y,x)}),E=O(()=>[{label:"Total Customers",value:I.totalCustomers,change:"+12%",changeType:"positive"},{label:"Active Customers",value:I.activeCustomersCount,change:"+8%",changeType:"positive"},{label:"High Priority",value:I.highPriorityCustomersCount,change:"+3",changeType:"neutral"},{label:"Avg Response Time",value:I.averageResponseTime||"N/A",change:"-15min",changeType:"positive"}]),Y=l=>{u.search=l,k.page=1},T=()=>{},Z=()=>{Object.assign(u,{search:"",type:"",priority:"",status:"",sortBy:"name",sortOrder:"asc"}),r.value=!1,k.page=1},G=()=>{r.value=!r.value,k.page=1},q=l=>{k.page=l},Q=l=>{u.sortBy===l.key?u.sortOrder=u.sortOrder==="asc"?"desc":"asc":(u.sortBy=l.key,u.sortOrder="asc"),k.page=1},X=async()=>{d.value=!0;try{await I.fetchCustomers(),A("Customer list has been updated successfully","Data refreshed")}catch(l){console.error("Failed to refresh customers:",l),S("Failed to refresh customer data","Refresh failed")}finally{d.value=!1}},K=async(l="csv")=>{d.value=!0;try{const y=N.value;if(l==="csv"){const x=f(y);j(x,`customers_${new Date().toISOString().split("T")[0]}.csv`,"text/csv")}else if(l==="json"){const x=JSON.stringify(y,null,2);j(x,`customers_${new Date().toISOString().split("T")[0]}.json`,"application/json")}A(`${y.length} customers exported successfully`,"Export completed")}catch(y){console.error("Export failed:",y),S("Failed to export customer data","Export failed")}finally{d.value=!1}},ee=async l=>{try{const y=l.status==="active"?"inactive":"active";await I.updateCustomer(l.id,{...l,status:y}),A(`Customer "${l.name}" has been ${y==="active"?"activated":"deactivated"}`,"Status updated")}catch(y){console.error("Failed to toggle customer status:",y),S("Failed to update customer status","Update failed")}},n=async l=>{try{await I.deleteCustomer(l.id),A(`Customer "${l.name}" has been removed`,"Customer deleted")}catch(y){console.error("Failed to delete customer:",y),S("Failed to delete customer","Delete failed")}},a=async(l,y)=>{d.value=!0;try{const x=l.map(p=>I.updateCustomer(p,y));await Promise.all(x),A(`${l.length} customers updated successfully`,"Bulk update completed")}catch(x){console.error("Bulk update failed:",x),S("Failed to update customers","Bulk update failed")}finally{d.value=!1}},f=l=>{if(!l||l.length===0)return"";const y=["Customer Code","Name","Email","Phone","Type","Priority","Status","Response Time SLA","Resolution Time SLA","Primary Contact","Address","Created Date"],x=l.map(m=>{var h,L,c,B,F,w,ae;return[m.customerCode||"",m.name||"",m.email||"",m.phone||"",m.type||"",m.priority||"",m.status||"",((h=m.sla)==null?void 0:h.responseTime)||"",((L=m.sla)==null?void 0:L.resolutionTime)||"",((c=m.primaryContact)==null?void 0:c.name)||"",[(B=m.address)==null?void 0:B.street,(F=m.address)==null?void 0:F.city,(w=m.address)==null?void 0:w.state,(ae=m.address)==null?void 0:ae.zipCode].filter(Boolean).join(", "),m.createdAt?new Date(m.createdAt).toLocaleDateString():""]});return[y,...x].map(m=>m.map(h=>`"${h}"`).join(",")).join(` +`)},j=(l,y,x)=>{const p=new Blob([l],{type:x}),m=URL.createObjectURL(p),h=document.createElement("a");h.href=m,h.download=y,document.body.appendChild(h),h.click(),document.body.removeChild(h),URL.revokeObjectURL(m)},te=async l=>{d.value=!0;try{return await I.searchCustomers(l)}catch(y){return console.error("Search failed:",y),S("Failed to search customers","Search failed"),[]}finally{d.value=!1}};return ke(()=>[u.search,u.type,u.priority,u.status],()=>{k.page=1}),{loading:d,filters:u,pagination:k,showActiveOnly:r,filteredCustomers:N,customerStatsFormatted:E,handleSearch:Y,applyFilters:T,clearAllFilters:Z,toggleActiveFilter:G,handlePageChange:q,handleSortChange:Q,refreshData:X,exportCustomers:K,toggleCustomerStatus:ee,deleteCustomer:n,bulkUpdateCustomers:a,searchCustomers:te}}function at(){const I=M(!1),A=M(!1),S=M(!1),d=M("basic"),r=ce({id:null,name:"",email:"",phone:"",type:"",priority:"medium",customerCode:"",description:"",status:"active",sla:{responseTime:"",resolutionTime:"",availability:"",notes:""},serviceHours:"24x7",notifications:{email:!0,sms:!1,phone:!1,portal:!0},primaryContact:{name:"",title:"",email:"",phone:""},address:{street:"",city:"",state:"",zipCode:""},notes:"",createdAt:null,updatedAt:null}),u=[{key:"basic",label:"Basic Information",icon:"info",required:["name","email","type"]},{key:"service",label:"SLA & Service",icon:"clock",required:[]},{key:"contact",label:"Contact & Location",icon:"map",required:[]}],k=()=>{const n=[r.name,r.email,r.phone,r.type,r.priority,r.description,r.sla.responseTime,r.sla.resolutionTime,r.primaryContact.name,r.primaryContact.email,r.address.street,r.address.city],a=n.filter(f=>f&&f.toString().trim()!=="").length;return Math.round(a/n.length*100)},N=n=>{const a=u.find(f=>f.key===n);return!a||!a.required?!0:a.required.every(f=>{if(f.includes(".")){const[j,te]=f.split(".");return r[j]&&r[j][te]}return r[f]&&r[f].toString().trim()!==""})},E=()=>u.findIndex(n=>n.key===d.value),Y=()=>{const n=E();n{const n=E();n>0&&(d.value=u[n-1].key)},Z=n=>{const a=u.findIndex(j=>j.key===n),f=E();(a<=f||N(d.value))&&(d.value=n)},G=()=>{S.value=!0},q=()=>{const n={};if((!r.name||r.name.trim()==="")&&(n.name="Customer name is required"),!r.email||r.email.trim()===""?n.email="Email address is required":/\S+@\S+\.\S+/.test(r.email)||(n.email="Please enter a valid email address"),r.type||(n.type="Customer type is required"),r.phone&&!/^\+?[\d\s\-\(\)]+$/.test(r.phone)&&(n.phone="Please enter a valid phone number"),r.sla.availability){const a=parseFloat(r.sla.availability);(isNaN(a)||a<0||a>100)&&(n.availability="Availability must be between 0 and 100")}return r.primaryContact.email&&!/\S+@\S+\.\S+/.test(r.primaryContact.email)&&(n.primaryContactEmail="Please enter a valid primary contact email"),{isValid:Object.keys(n).length===0,errors:n}},Q=()=>{Object.assign(r,{id:null,name:"",email:"",phone:"",type:"",priority:"medium",customerCode:"",description:"",status:"active",sla:{responseTime:"",resolutionTime:"",availability:"",notes:""},serviceHours:"24x7",notifications:{email:!0,sms:!1,phone:!1,portal:!0},primaryContact:{name:"",title:"",email:"",phone:""},address:{street:"",city:"",state:"",zipCode:""},notes:"",createdAt:null,updatedAt:null}),d.value="basic",S.value=!1,A.value=!1,I.value=!1},X=n=>{Object.assign(r,{...n,sla:{responseTime:"",resolutionTime:"",availability:"",notes:"",...n.sla},notifications:{email:!0,sms:!1,phone:!1,portal:!0,...n.notifications},primaryContact:{name:"",title:"",email:"",phone:"",...n.primaryContact},address:{street:"",city:"",state:"",zipCode:"",...n.address}}),A.value=!0,S.value=!1},K=n=>({customerCode:"Auto-generated unique identifier for the customer",priority:"Determines service level and response priority",responseTime:"Maximum time to acknowledge service requests",resolutionTime:"Target time to resolve issues",availability:"Uptime service level agreement percentage",serviceHours:"When support is available for this customer"})[n]||"",ee=()=>{const n={...r};return Object.keys(n).forEach(a=>{typeof n[a]=="object"&&n[a]!==null?Object.keys(n[a]).forEach(f=>{n[a][f]===""&&(n[a][f]=null)}):n[a]===""&&(n[a]=null)}),n.sla.availability&&(n.sla.availability=parseFloat(n.sla.availability)),A.value||(n.createdAt=new Date().toISOString()),n.updatedAt=new Date().toISOString(),n};return{customerForm:r,currentFormTab:d,formTabs:u,saving:I,isEditing:A,hasUnsavedChanges:S,completionPercentage:O(()=>k()),isCurrentTabValid:O(()=>N(d.value)),nextTab:Y,previousTab:T,goToTab:Z,handleFormInput:G,validateCustomer:q,resetForm:Q,loadCustomer:X,getCompletionPercentage:k,getFieldHelper:K,formatForSubmission:ee,isTabValid:N}}const ot={class:"p-6"},lt={class:"mb-6 grid grid-cols-1 md:grid-cols-4 gap-4"},nt={class:"flex space-x-2"},it={key:0,class:"flex items-center space-x-2"},rt={class:"font-mono text-sm font-medium"},ut={key:0,class:"flex items-center space-x-3"},dt={class:"font-medium text-gray-900"},mt={class:"text-sm text-gray-500"},ct={key:0,class:"text-sm"},pt={class:"font-medium"},vt={class:"text-gray-500"},ft={key:0,class:"text-sm"},yt={class:"text-gray-900"},gt={class:"text-gray-500"},Ct={key:0,class:"flex items-center space-x-2"},ht={key:0,class:"w-4 h-4 text-red-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},bt={key:1,class:"w-4 h-4 text-green-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},kt={class:"flex items-center justify-between"},xt={class:"text-lg font-medium text-gray-900"},Vt={class:"flex items-center space-x-2"},St={key:0,class:"text-xs text-amber-600 bg-amber-50 px-2 py-1 rounded"},Tt={key:1,class:"text-xs text-gray-500"},Ft={key:0,class:"space-y-4"},It={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},Ut={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},Pt={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},At={key:1,class:"space-y-4"},Dt={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},_t={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},Ot={class:"space-y-3"},Lt={class:"grid grid-cols-2 md:grid-cols-4 gap-3"},zt={key:2,class:"space-y-4"},Bt={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},Mt={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},Nt={class:"space-y-3"},jt={class:"grid grid-cols-1 md:grid-cols-3 gap-4"},wt={class:"flex items-center justify-between"},Et={class:"flex items-center space-x-4"},Ht={key:0,class:"flex items-center text-sm text-gray-500"},Rt={key:0,class:"w-4 h-4 mr-2 text-amber-500 animate-pulse",fill:"currentColor",viewBox:"0 0 20 20"},qt={key:1,class:"w-4 h-4 mr-2 text-green-500",fill:"currentColor",viewBox:"0 0 20 20"},$t={key:2},Jt={key:3},Wt={class:"flex space-x-2"},rs={__name:"CustomersListView",setup(I){const A=qe(),S=$e(),d=xe(),{exportCustomers:r,refreshData:u,toggleCustomerStatus:k,loading:N,filteredCustomers:E,customerStatsFormatted:Y,filters:T,pagination:Z,handleSearch:G,applyFilters:q,handlePageChange:Q,handleSortChange:X,clearAllFilters:K,showActiveOnly:ee,toggleActiveFilter:n}=st(),{customerForm:a,currentFormTab:f,formTabs:j,hasUnsavedChanges:te,isEditing:l,saving:y,resetForm:x,loadCustomer:p,getCompletionPercentage:m,nextTab:h,previousTab:L,handleFormInput:c}=at(),{hasUnsavedChanges:B,lastSaveTime:F,saveNow:w,restoreFormData:ae,clearSavedData:pe,hasSavedData:le,getSavedDataInfo:ve,markUserInteraction:Ve,finishInitialization:fe}=Ze(a,{storageKey:"atlas_customer_form_data",saveInterval:3e3,excludeFields:[]}),$=M(!1),J=M(null),Se=O(()=>{if(!F.value)return"";const C=new Date,s=F.value,t=Math.floor((C-s)/(1e3*60));if(t<1)return"just now";if(t===1)return"1 minute ago";if(t<60)return`${t} minutes ago`;const U=Math.floor(t/60);return U===1?"1 hour ago":U<24?`${U} hours ago`:s.toLocaleDateString()}),W=M(!1),ne=M("all"),Te=O(()=>d.customerTypeOptions),ye=O(()=>d.priorityOptions),Fe=O(()=>d.responseTimeOptions),Ie=O(()=>d.resolutionTimeOptions),Ue=O(()=>d.serviceHoursOptions),Pe=O(()=>d.customerTypeOptions),Ae=[{key:"customerCode",label:"Code",sortable:!0,width:"12%"},{key:"name",label:"Customer",sortable:!0,width:"20%"},{key:"type",label:"Type",sortable:!0,width:"12%"},{key:"priority",label:"Priority",sortable:!0,width:"10%"},{key:"sla",label:"SLA",width:"12%"},{key:"status",label:"Status",sortable:!0,width:"10%"},{key:"lastContact",label:"Last Contact",sortable:!0,width:"14%"},{key:"actions",label:"Actions",width:"10%",align:"center"}],De=O(()=>[{key:"all",label:"All Customers",count:d.totalCustomers||0},{key:"active",label:"Active",count:d.activeCustomersCount||0},{key:"inactive",label:"Inactive",count:d.inactiveCustomersCount||0},{key:"high-priority",label:"High Priority",count:d.highPriorityCustomersCount||0}]),_e=()=>{ae(),$.value=!1,J.value=null},Oe=()=>{pe(),$.value=!1,J.value=null},ge=()=>{l.value=!1,Le(),le()||x(),W.value=!0,f.value="basic",setTimeout(()=>{fe()},100)},Le=()=>{!l.value&&le()&&(J.value=ve(),$.value=!0)},Ce=C=>{p(C),W.value=!0,f.value="basic",le()&&(J.value=ve(),$.value=!0),setTimeout(()=>{fe()},100)},he=C=>{S.push(`/customers/${C.id}`)},ie=()=>{B.value&&w(),W.value=!1,$.value=!1,J.value=null,x()},ze=async()=>{y.value=!0;try{l.value?await d.updateCustomer(a.id,a):await d.createCustomer(a),pe(),ie(),await u()}catch(C){console.error("Error saving customer:",C)}finally{y.value=!1}},Be=C=>{switch(ne.value=C,C){case"active":T.value.status="active";break;case"inactive":T.value.status="inactive";break;case"high-priority":T.value.priority="high";break;default:T.value.status="",T.value.priority=""}},Me=C=>({internal:"blue",external:"green",partner:"purple",government:"gray"})[C]||"gray",Ne=C=>({high:"red",medium:"yellow",low:"green"})[C]||"gray",je=C=>({active:"green",inactive:"gray",suspended:"red"})[C]||"gray",we=C=>C?new Date(C).toLocaleDateString():"Never";Re(async()=>{d.loadMockData(),await u();const C=A.query.edit;C&&setTimeout(()=>{const t=d.customers.find(U=>U.id===parseInt(C));t&&Ce(t),S.replace({path:"/customers"})},500),A.query.create==="true"&&setTimeout(()=>{ge(),S.replace({path:"/customers"})},500)});const Ee=()=>{Ve()};return ke(a,()=>{W.value&&Ee()},{deep:!0}),(C,s)=>(g(),H(Ge,null,{header:v(()=>[i(Qe,{title:"Customers",description:"Manage customers and service recipients",breadcrumbs:[{text:"Customers",to:null}]},{actions:v(()=>[i(e(_),{variant:"outline",size:"sm",onClick:e(r)},{default:v(()=>s[34]||(s[34]=[o("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1),z(" Export ",-1)])),_:1,__:[34]},8,["onClick"]),i(e(_),{variant:"outline",size:"sm",onClick:e(u)},{default:v(()=>s[35]||(s[35]=[o("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),z(" Refresh ",-1)])),_:1,__:[35]},8,["onClick"]),i(e(_),{variant:"primary",size:"sm",onClick:ge},{default:v(()=>s[36]||(s[36]=[o("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),z(" Add Customer ",-1)])),_:1,__:[36]})]),stats:v(()=>[i(e(Xe),{stats:e(Y)},null,8,["stats"])]),tabs:v(()=>[i(e(be),{modelValue:ne.value,"onUpdate:modelValue":s[0]||(s[0]=t=>ne.value=t),tabs:De.value,onTabChange:Be},null,8,["modelValue","tabs"])]),_:1})]),default:v(()=>[o("div",ot,[o("div",lt,[i(e(P),{modelValue:e(T).search,"onUpdate:modelValue":s[1]||(s[1]=t=>e(T).search=t),placeholder:"Search customers...",onInput:e(G)},{prepend:v(()=>s[37]||(s[37]=[o("svg",{class:"w-4 h-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1)])),_:1},8,["modelValue","onInput"]),i(e(R),{modelValue:e(T).type,"onUpdate:modelValue":[s[2]||(s[2]=t=>e(T).type=t),e(q)],placeholder:"Filter by Type",options:Te.value},null,8,["modelValue","options","onUpdate:modelValue"]),i(e(R),{modelValue:e(T).priority,"onUpdate:modelValue":[s[3]||(s[3]=t=>e(T).priority=t),e(q)],placeholder:"Filter by Priority",options:ye.value},null,8,["modelValue","options","onUpdate:modelValue"]),o("div",nt,[i(e(_),{variant:"outline",size:"sm",class:Je({"bg-primary-50 border-primary-300 text-primary-700":e(ee)}),onClick:e(n),title:"Show active customers only"},{default:v(()=>s[38]||(s[38]=[o("svg",{class:"w-4 h-4 mr-1",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})],-1),z(" Active ",-1)])),_:1,__:[38]},8,["class","onClick"]),i(e(_),{variant:"outline",size:"sm",onClick:e(K),title:"Clear all filters"},{default:v(()=>s[39]||(s[39]=[z(" Clear ",-1)])),_:1,__:[39]},8,["onClick"])])]),i(e(Ke),{columns:Ae,data:e(E),loading:e(N),pagination:e(Z),onRowClick:he,onPageChange:e(Q),onSortChange:e(X)},{customerCode:v(({row:t})=>[t?(g(),b("div",it,[i(e(me),{variant:Me(t==null?void 0:t.type),size:"xs",class:"w-2 h-2 rounded-full p-0"},null,8,["variant"]),o("span",rt,D((t==null?void 0:t.customerCode)||"N/A"),1)])):V("",!0)]),name:v(({row:t})=>{var U,se;return[t?(g(),b("div",ut,[i(e(We),{user:{firstName:((U=t==null?void 0:t.name)==null?void 0:U.split(" ")[0])||"N",lastName:((se=t==null?void 0:t.name)==null?void 0:se.split(" ")[1])||"A"},size:"sm"},null,8,["user"]),o("div",null,[o("div",dt,D((t==null?void 0:t.name)||"Unknown"),1),o("div",mt,D((t==null?void 0:t.email)||"No email"),1)])])):V("",!0)]}),priority:v(({row:t})=>[t?(g(),H(e(me),{key:0,variant:Ne(t==null?void 0:t.priority)},{default:v(()=>[z(D((t==null?void 0:t.priority)||"Unknown"),1)]),_:2},1032,["variant"])):V("",!0)]),sla:v(({row:t})=>{var U,se;return[t?(g(),b("div",ct,[o("div",pt,D(((U=t==null?void 0:t.sla)==null?void 0:U.responseTime)||"N/A"),1),o("div",vt,D(((se=t==null?void 0:t.sla)==null?void 0:se.resolutionTime)||"N/A"),1)])):V("",!0)]}),status:v(({row:t})=>[t?(g(),H(e(me),{key:0,variant:je((t==null?void 0:t.status)||"inactive")},{default:v(()=>[z(D((t==null?void 0:t.status)||"Unknown"),1)]),_:2},1032,["variant"])):V("",!0)]),lastContact:v(({row:t})=>[t?(g(),b("div",ft,[o("div",yt,D(we(t==null?void 0:t.lastContactDate)),1),o("div",gt,D((t==null?void 0:t.lastContactMethod)||"Unknown"),1)])):V("",!0)]),actions:v(({row:t})=>[t?(g(),b("div",Ct,[i(e(_),{variant:"ghost",size:"xs",onClick:re(U=>he(t),["stop"]),title:"View Customer"},{default:v(()=>s[40]||(s[40]=[o("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"}),o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"})],-1)])),_:2,__:[40]},1032,["onClick"]),i(e(_),{variant:"ghost",size:"xs",onClick:re(U=>Ce(t),["stop"]),title:"Edit Customer"},{default:v(()=>s[41]||(s[41]=[o("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1)])),_:2,__:[41]},1032,["onClick"]),t?(g(),H(e(_),{key:0,variant:"ghost",size:"xs",onClick:re(U=>e(k)(t),["stop"]),title:(t==null?void 0:t.status)==="active"?"Deactivate Customer":"Activate Customer"},{default:v(()=>[(t==null?void 0:t.status)==="active"?(g(),b("svg",ht,s[42]||(s[42]=[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z"},null,-1)]))):(g(),b("svg",bt,s[43]||(s[43]=[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"},null,-1)])))]),_:2},1032,["onClick","title"])):V("",!0)])):V("",!0)]),_:1},8,["data","loading","pagination","onPageChange","onSortChange"])]),i(e(et),{modelValue:W.value,"onUpdate:modelValue":s[33]||(s[33]=t=>W.value=t),size:"xl",onCancel:ie},{header:v(()=>[o("div",kt,[o("h3",xt,D(e(l)?"Edit Customer":"Create Customer"),1),o("div",Vt,[e(l)&&e(te)?(g(),b("span",St," Auto-saving... ")):V("",!0),e(f)!=="basic"?(g(),b("span",Tt,D(e(m)())+"% complete ",1)):V("",!0)])])]),footer:v(()=>[o("div",wt,[o("div",Et,[e(B)||e(F)?(g(),b("div",Ht,[e(B)?(g(),b("svg",Rt,s[49]||(s[49]=[o("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z","clip-rule":"evenodd"},null,-1)]))):(g(),b("svg",qt,s[50]||(s[50]=[o("path",{"fill-rule":"evenodd",d:"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z","clip-rule":"evenodd"},null,-1)]))),e(B)?(g(),b("span",$t,"Auto-saving...")):e(F)?(g(),b("span",Jt,"Last saved "+D(Se.value),1)):V("",!0)])):V("",!0),e(f)!=="basic"?(g(),H(e(_),{key:1,variant:"outline",size:"sm",onClick:e(L)},{default:v(()=>s[51]||(s[51]=[z(" ← Previous ",-1)])),_:1,__:[51]},8,["onClick"])):V("",!0)]),o("div",Wt,[i(e(_),{variant:"outline",onClick:ie},{default:v(()=>s[52]||(s[52]=[z(" Cancel ",-1)])),_:1,__:[52]}),e(f)!=="contact"?(g(),H(e(_),{key:0,variant:"primary",onClick:e(h)},{default:v(()=>s[53]||(s[53]=[z(" Next ",-1)])),_:1,__:[53]},8,["onClick"])):(g(),H(e(_),{key:1,variant:"primary",loading:e(y),onClick:ze},{default:v(()=>[z(D(e(l)?"Update Customer":"Create Customer"),1)]),_:1},8,["loading"]))])])]),default:v(()=>[i(e(tt),{visible:$.value,"saved-data-info":J.value,onRestore:_e,onDismiss:Oe},null,8,["visible","saved-data-info"]),i(e(be),{modelValue:e(f),"onUpdate:modelValue":s[4]||(s[4]=t=>Ye(f)?f.value=t:null),tabs:e(j),class:"mb-6"},null,8,["modelValue","tabs"]),e(f)==="basic"?(g(),b("div",Ft,[o("div",It,[i(e(P),{modelValue:e(a).name,"onUpdate:modelValue":s[5]||(s[5]=t=>e(a).name=t),label:"Customer Name",placeholder:"Enter customer name",required:"",onInput:e(c)},null,8,["modelValue","onInput"]),i(e(P),{modelValue:e(a).email,"onUpdate:modelValue":s[6]||(s[6]=t=>e(a).email=t),label:"Email Address",type:"email",placeholder:"customer@example.com",required:"",onInput:e(c)},null,8,["modelValue","onInput"])]),o("div",Ut,[i(e(P),{modelValue:e(a).phone,"onUpdate:modelValue":s[7]||(s[7]=t=>e(a).phone=t),label:"Phone Number",placeholder:"+1 (555) 123-4567",onInput:e(c)},null,8,["modelValue","onInput"]),i(e(R),{modelValue:e(a).type,"onUpdate:modelValue":[s[8]||(s[8]=t=>e(a).type=t),e(c)],label:"Customer Type",options:Pe.value,placeholder:"Select customer type",required:""},null,8,["modelValue","options","onUpdate:modelValue"])]),o("div",Pt,[i(e(R),{modelValue:e(a).priority,"onUpdate:modelValue":[s[9]||(s[9]=t=>e(a).priority=t),e(c)],label:"Priority Level",options:ye.value,placeholder:"Select priority"},null,8,["modelValue","options","onUpdate:modelValue"]),i(e(P),{modelValue:e(a).customerCode,"onUpdate:modelValue":s[10]||(s[10]=t=>e(a).customerCode=t),label:"Customer Code",placeholder:"Auto-generated",disabled:e(l),onInput:e(c)},null,8,["modelValue","disabled","onInput"])]),o("div",null,[s[44]||(s[44]=o("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Description",-1)),ue(o("textarea",{"onUpdate:modelValue":s[11]||(s[11]=t=>e(a).description=t),placeholder:"Brief description of the customer...",rows:"3",class:"w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm",onInput:s[12]||(s[12]=(...t)=>e(c)&&e(c)(...t))},null,544),[[de,e(a).description]])])])):V("",!0),e(f)==="service"?(g(),b("div",At,[o("div",Dt,[i(e(R),{modelValue:e(a).sla.responseTime,"onUpdate:modelValue":[s[13]||(s[13]=t=>e(a).sla.responseTime=t),e(c)],label:"Response Time SLA",options:Fe.value,placeholder:"Select response time"},null,8,["modelValue","options","onUpdate:modelValue"]),i(e(R),{modelValue:e(a).sla.resolutionTime,"onUpdate:modelValue":[s[14]||(s[14]=t=>e(a).sla.resolutionTime=t),e(c)],label:"Resolution Time SLA",options:Ie.value,placeholder:"Select resolution time"},null,8,["modelValue","options","onUpdate:modelValue"])]),o("div",_t,[i(e(P),{modelValue:e(a).sla.availability,"onUpdate:modelValue":s[15]||(s[15]=t=>e(a).sla.availability=t),label:"Availability Target (%)",type:"number",min:"0",max:"100",placeholder:"99.9",onInput:e(c)},null,8,["modelValue","onInput"]),i(e(R),{modelValue:e(a).serviceHours,"onUpdate:modelValue":[s[16]||(s[16]=t=>e(a).serviceHours=t),e(c)],label:"Service Hours",options:Ue.value,placeholder:"Select service hours"},null,8,["modelValue","options","onUpdate:modelValue"])]),o("div",Ot,[s[45]||(s[45]=o("label",{class:"block text-sm font-medium text-gray-700"},"Notification Preferences",-1)),o("div",Lt,[i(e(oe),{modelValue:e(a).notifications.email,"onUpdate:modelValue":s[17]||(s[17]=t=>e(a).notifications.email=t),label:"Email",onChange:e(c)},null,8,["modelValue","onChange"]),i(e(oe),{modelValue:e(a).notifications.sms,"onUpdate:modelValue":s[18]||(s[18]=t=>e(a).notifications.sms=t),label:"SMS",onChange:e(c)},null,8,["modelValue","onChange"]),i(e(oe),{modelValue:e(a).notifications.phone,"onUpdate:modelValue":s[19]||(s[19]=t=>e(a).notifications.phone=t),label:"Phone",onChange:e(c)},null,8,["modelValue","onChange"]),i(e(oe),{modelValue:e(a).notifications.portal,"onUpdate:modelValue":s[20]||(s[20]=t=>e(a).notifications.portal=t),label:"Portal",onChange:e(c)},null,8,["modelValue","onChange"])])]),o("div",null,[s[46]||(s[46]=o("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"SLA Notes",-1)),ue(o("textarea",{"onUpdate:modelValue":s[21]||(s[21]=t=>e(a).sla.notes=t),placeholder:"Additional SLA requirements or notes...",rows:"3",class:"w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm",onInput:s[22]||(s[22]=(...t)=>e(c)&&e(c)(...t))},null,544),[[de,e(a).sla.notes]])])])):V("",!0),e(f)==="contact"?(g(),b("div",zt,[o("div",Bt,[i(e(P),{modelValue:e(a).primaryContact.name,"onUpdate:modelValue":s[23]||(s[23]=t=>e(a).primaryContact.name=t),label:"Primary Contact Name",placeholder:"John Doe",onInput:e(c)},null,8,["modelValue","onInput"]),i(e(P),{modelValue:e(a).primaryContact.title,"onUpdate:modelValue":s[24]||(s[24]=t=>e(a).primaryContact.title=t),label:"Primary Contact Title",placeholder:"Facility Manager",onInput:e(c)},null,8,["modelValue","onInput"])]),o("div",Mt,[i(e(P),{modelValue:e(a).primaryContact.email,"onUpdate:modelValue":s[25]||(s[25]=t=>e(a).primaryContact.email=t),label:"Primary Contact Email",type:"email",placeholder:"john.doe@customer.com",onInput:e(c)},null,8,["modelValue","onInput"]),i(e(P),{modelValue:e(a).primaryContact.phone,"onUpdate:modelValue":s[26]||(s[26]=t=>e(a).primaryContact.phone=t),label:"Primary Contact Phone",placeholder:"+1 (555) 123-4567",onInput:e(c)},null,8,["modelValue","onInput"])]),o("div",Nt,[s[47]||(s[47]=o("label",{class:"block text-sm font-medium text-gray-700"},"Address",-1)),i(e(P),{modelValue:e(a).address.street,"onUpdate:modelValue":s[27]||(s[27]=t=>e(a).address.street=t),placeholder:"Street Address",onInput:e(c)},null,8,["modelValue","onInput"]),o("div",jt,[i(e(P),{modelValue:e(a).address.city,"onUpdate:modelValue":s[28]||(s[28]=t=>e(a).address.city=t),placeholder:"City",onInput:e(c)},null,8,["modelValue","onInput"]),i(e(P),{modelValue:e(a).address.state,"onUpdate:modelValue":s[29]||(s[29]=t=>e(a).address.state=t),placeholder:"State/Province",onInput:e(c)},null,8,["modelValue","onInput"]),i(e(P),{modelValue:e(a).address.zipCode,"onUpdate:modelValue":s[30]||(s[30]=t=>e(a).address.zipCode=t),placeholder:"ZIP Code",onInput:e(c)},null,8,["modelValue","onInput"])])]),o("div",null,[s[48]||(s[48]=o("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Customer Notes",-1)),ue(o("textarea",{"onUpdate:modelValue":s[31]||(s[31]=t=>e(a).notes=t),placeholder:"Additional notes about this customer...",rows:"4",class:"w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm",onInput:s[32]||(s[32]=(...t)=>e(c)&&e(c)(...t))},null,544),[[de,e(a).notes]])])])):V("",!0)]),_:1},8,["modelValue"])]),_:1}))}};export{rs as default}; diff --git a/frontend/dist/assets/CustomersView-AWJgF30U.js b/frontend/dist/assets/CustomersView-D22jEzVQ.js similarity index 63% rename from frontend/dist/assets/CustomersView-AWJgF30U.js rename to frontend/dist/assets/CustomersView-D22jEzVQ.js index 35e632de..b706385d 100644 --- a/frontend/dist/assets/CustomersView-AWJgF30U.js +++ b/frontend/dist/assets/CustomersView-D22jEzVQ.js @@ -1 +1 @@ -import{i as o,f as r,g as t}from"./index-BUdRbiwj.js";const a={__name:"CustomersView",setup(s){return(n,_)=>{const e=r("router-view");return t(),o(e)}}};export{a as default}; +import{i as o,f as r,g as t}from"./index-QAlcqU00.js";const a={__name:"CustomersView",setup(s){return(n,_)=>{const e=r("router-view");return t(),o(e)}}};export{a as default}; diff --git a/frontend/dist/assets/DashboardView-BMT2_nib.js b/frontend/dist/assets/DashboardView-BMT2_nib.js deleted file mode 100644 index 46d7b505..00000000 --- a/frontend/dist/assets/DashboardView-BMT2_nib.js +++ /dev/null @@ -1,17 +0,0 @@ -import{aO as xe,r as O,c as T,aP as L,_ as de,v as he,o as ue,f as ce,i as X,g as i,w as p,b as t,a as v,j as D,d as k,e as u,F as U,k as f,t as n,af as B,aQ as R,n as oe,Q as ee}from"./index-BUdRbiwj.js";import{u as ke}from"./assets-eZiqmOvX.js";import{F as _e,a as we}from"./FPPageHeader-CTG2L28r.js";import{F as Z}from"./FPCard-qHzcEQAE.js";import{F as be}from"./FPModal-DWGF1LV8.js";import{F}from"./FPBadge-BKY5dPnL.js";import{u as Ce}from"./useUniversalCalendar-2CJQgaXx.js";import{F as De}from"./FPStats-BGfZcDZc.js";import"./useWorkOrders-B61P5JA7.js";import"./useFormAutoSave-Jaawgo91.js";import"./workOrder-jNxj_kjQ.js";import"./usePreventiveMaintenanceDisplay-Bhncwa9c.js";const Ee=xe("workOrders",()=>{const y=O([]),b=O(null),x=O(!1),g=O(null),I=O(0),m=O({status:null,priority:null,assignedTo:null,search:"",dateRange:null}),W=T(()=>{let s=y.value;if(m.value.status&&(s=s.filter(e=>e.status===m.value.status)),m.value.priority&&(s=s.filter(e=>e.priority===m.value.priority)),m.value.assignedTo&&(s=s.filter(e=>{var l;return((l=e.assignedTo)==null?void 0:l.id)===m.value.assignedTo})),m.value.search){const e=m.value.search.toLowerCase();s=s.filter(l=>{var d,_,E;return((d=l.title)==null?void 0:d.toLowerCase().includes(e))||((_=l.description)==null?void 0:_.toLowerCase().includes(e))||((E=l.id)==null?void 0:E.toString().includes(e))})}return s}),A=T(()=>y.value.reduce((s,e)=>(s[e.status]||(s[e.status]=[]),s[e.status].push(e),s),{})),P=T(()=>y.value.reduce((s,e)=>(s[e.priority]||(s[e.priority]=[]),s[e.priority].push(e),s),{})),C=T(()=>{const s=new Date;return y.value.filter(e=>e.dueDate&&new Date(e.dueDate){try{x.value=!0,g.value=null;const e=await L.getAll(s);return y.value=e.content||e,I.value=e.totalElements||e.length,e}catch(e){throw g.value=e.message||"Failed to fetch work orders",e}finally{x.value=!1}},fetchWorkOrderById:async s=>{try{x.value=!0,g.value=null;const e=await L.getById(s);b.value=e;const l=y.value.findIndex(d=>d.id===s);return l!==-1&&(y.value[l]=e),e}catch(e){throw g.value=e.message||"Failed to fetch work order",e}finally{x.value=!1}},createWorkOrder:async s=>{try{x.value=!0,g.value=null;const e=await L.create(s);return y.value.unshift(e),I.value+=1,e}catch(e){throw g.value=e.message||"Failed to create work order",e}finally{x.value=!1}},updateWorkOrder:async(s,e)=>{var l;try{x.value=!0,g.value=null;const d=await L.update(s,e),_=y.value.findIndex(E=>E.id===s);return _!==-1&&(y.value[_]=d),((l=b.value)==null?void 0:l.id)===s&&(b.value=d),d}catch(d){throw g.value=d.message||"Failed to update work order",d}finally{x.value=!1}},updateWorkOrderStatus:async(s,e,l="")=>{var d;try{x.value=!0,g.value=null;const _=await L.updateStatus(s,e,l),E=y.value.findIndex(te=>te.id===s);return E!==-1&&(y.value[E]=_),((d=b.value)==null?void 0:d.id)===s&&(b.value=_),_}catch(_){throw g.value=_.message||"Failed to update work order status",_}finally{x.value=!1}},assignWorkOrder:async(s,e)=>{var l;try{x.value=!0,g.value=null;const d=await L.assignWorkOrder(s,e),_=y.value.findIndex(E=>E.id===s);return _!==-1&&(y.value[_]=d),((l=b.value)==null?void 0:l.id)===s&&(b.value=d),d}catch(d){throw g.value=d.message||"Failed to assign work order",d}finally{x.value=!1}},deleteWorkOrder:async s=>{var e;try{return x.value=!0,g.value=null,await L.delete(s),y.value=y.value.filter(l=>l.id!==s),I.value-=1,((e=b.value)==null?void 0:e.id)===s&&(b.value=null),!0}catch(l){throw g.value=l.message||"Failed to delete work order",l}finally{x.value=!1}},setFilters:s=>{m.value={...m.value,...s}},clearFilters:()=>{m.value={status:null,priority:null,assignedTo:null,search:"",dateRange:null}},clearError:()=>{g.value=null}}}),Oe={class:"flex items-center justify-between mb-4"},Pe={class:"flex items-center space-x-2"},Se={class:"mb-6"},Te={class:"flex items-center justify-between mb-3"},Ie={class:"text-sm font-medium text-gray-700"},Me={class:"grid grid-cols-7 gap-1 text-xs"},Ne=["onClick"],We={key:0,class:"absolute bottom-0.5 left-1/2 transform -translate-x-1/2 w-1 h-1 bg-primary-500 rounded-full"},Ae={class:"mb-6"},$e={key:0,class:"text-center py-4"},Le={key:1,class:"space-y-2"},Fe=["onClick"],Be={class:"flex-1 min-w-0"},Re={class:"text-sm font-medium text-gray-900 truncate"},Ve={class:"text-xs text-gray-500"},je={key:0,class:"text-center py-4 text-gray-500 text-sm"},ze={class:"mb-6"},He={key:0,class:"text-center py-4"},Ue={key:1,class:"space-y-2"},Ge=["onClick"],Ye={class:"flex-1 min-w-0"},qe={class:"text-sm font-medium text-gray-900 truncate"},Ke={class:"flex items-center space-x-2 text-xs text-gray-500 mt-1"},Qe={key:0},Je={key:1,class:"truncate"},Xe={class:"flex items-center space-x-2"},Ze={key:0,class:"text-center py-4 text-gray-500 text-sm"},et={key:0,class:"mb-6"},tt={class:"text-sm font-medium text-red-700 mb-3 flex items-center"},st={class:"space-y-2"},rt=["onClick"],ot={class:"flex-1 min-w-0"},at={class:"text-sm font-medium text-red-900 truncate"},nt={class:"flex items-center space-x-2 text-xs text-red-600 mt-1"},lt={key:0,class:"text-center"},it={class:"grid grid-cols-2 gap-3 pt-4 border-t border-gray-200"},dt={class:"text-center"},ut={class:"text-lg font-semibold text-gray-900"},ct={class:"text-center"},vt={class:"text-lg font-semibold text-gray-900"},mt={key:0,class:"space-y-4"},pt={class:"flex items-center space-x-2"},gt={class:"text-sm space-y-2"},ft={key:0},yt={key:1},xt={key:2},ht={key:3},kt={__name:"CalendarWidget",setup(y){const b=he(),{allCalendarEvents:x,upcomingEvents:g,todaysEvents:I,overdueEvents:m,eventStatistics:W,eventTypes:A,loading:P,refreshCalendarData:C}=Ce(),h=O(new Date),V=O(new Date().toISOString().split("T")[0]),c=O(null),$=O(!1),G=["S","M","T","W","T","F","S"],Y=T(()=>h.value.toLocaleDateString("en-US",{month:"long",year:"numeric"})),q=T(()=>{const a=h.value.getFullYear(),r=h.value.getMonth(),M=new Date(a,r,1),S=new Date(M);S.setDate(S.getDate()-M.getDay());const w=[],o=new Date(S),N=new Date;for(let z=0;z<42;z++){const H=o.toISOString().split("T")[0];w.push({date:H,dayNumber:o.getDate(),isCurrentMonth:o.getMonth()===r,isToday:o.toDateString()===N.toDateString(),isSelected:H===V.value}),o.setDate(o.getDate()+1)}return w}),K=()=>{h.value=new Date(h.value.getFullYear(),h.value.getMonth()-1,1)},Q=()=>{h.value=new Date(h.value.getFullYear(),h.value.getMonth()+1,1)},j=a=>{V.value=a},s=a=>x.value.filter(r=>{if(!r||!r.start)return!1;try{return new Date(r.start).toISOString().split("T")[0]===a}catch{return console.warn("Invalid event date:",r.start),!1}}).length,e=a=>{c.value=a,$.value=!0},l=()=>{$.value=!1,c.value=null},d=()=>{if(c.value&&c.value.extendedProps){const a=c.value.extendedProps.type,r=c.value.extendedProps.originalData;a==="WORK_ORDER"&&(r!=null&&r.id)?b.push(`/work-orders?edit=${r.id}`):a==="PREVENTIVE_MAINTENANCE"&&(r!=null&&r.id)&&b.push(`/maintenance/preventive/${r.id}`),l()}},_=async()=>{await C()},E=a=>{if(!a)return"";try{return new Date(a).toLocaleTimeString("en-US",{hour:"numeric",minute:"2-digit"})}catch{return console.warn("Invalid date for formatting:",a),""}},te=a=>{if(!a)return"";try{return new Date(a).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"})}catch{return console.warn("Invalid date for formatting:",a),""}},ve=a=>{if(!a)return"";try{const S=new Date(a)-new Date,w=Math.ceil(S/(1e3*60*60*24));return w===0?"Today":w===1?"Tomorrow":w===-1?"Yesterday":w>0?`In ${w} days`:`${Math.abs(w)} days ago`}catch{return console.warn("Invalid date for relative formatting:",a),""}},me=a=>{if(!a)return"";try{const r=new Date(a),S=new Date-r,w=Math.floor(S/(1e3*60*60*24));return w===0?"Due today":w===1?"1 day overdue":`${w} days overdue`}catch{return console.warn("Invalid date for overdue formatting:",a),""}},se=a=>a?a.charAt(0)+a.slice(1).toLowerCase():"N/A",pe=a=>a?a.replace("_"," ").toLowerCase().replace(/\b\w/g,r=>r.toUpperCase()):"N/A",J=a=>{var r;return((r=A[a])==null?void 0:r.label)||a},ge=a=>a==="WORK_ORDER"?"Edit Work Order":a==="PREVENTIVE_MAINTENANCE"?"View Schedule":"View Details",fe=a=>({WORK_ORDER:"primary",PREVENTIVE_MAINTENANCE:"success",ASSET_INSPECTION:"warning",SCHEDULED_DOWNTIME:"error"})[a]||"secondary",re=a=>({LOW:"secondary",MEDIUM:"primary",HIGH:"warning",CRITICAL:"error"})[a]||"secondary",ye=a=>({OPEN:"primary",IN_PROGRESS:"warning",COMPLETED:"success",ON_HOLD:"warning",CANCELLED:"secondary",ACTIVE:"success",PAUSED:"warning",INACTIVE:"secondary"})[a]||"secondary";return ue(async()=>{try{await C()}catch(a){console.error("Failed to initialize calendar data:",a)}}),(a,r)=>{const M=ce("router-link");return i(),X(u(Z),{padding:"lg",class:"calendar-widget"},{default:p(()=>{var S,w;return[t("div",Oe,[r[3]||(r[3]=t("h3",{class:"text-lg font-semibold text-gray-900"},"Upcoming Events",-1)),t("div",Pe,[k(u(U),{variant:"ghost",size:"xs",onClick:_},{default:p(()=>r[1]||(r[1]=[t("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1)])),_:1,__:[1]}),k(M,{to:"/calendar",class:"text-sm text-primary-600 hover:text-primary-700 font-medium"},{default:p(()=>r[2]||(r[2]=[f(" View All → ",-1)])),_:1,__:[2]})])]),t("div",Se,[t("div",Te,[t("h4",Ie,n(Y.value),1),t("div",{class:"flex items-center space-x-1"},[t("button",{onClick:K,class:"p-1 rounded hover:bg-gray-100 transition-colors"},r[4]||(r[4]=[t("svg",{class:"w-4 h-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 19l-7-7 7-7"})],-1)])),t("button",{onClick:Q,class:"p-1 rounded hover:bg-gray-100 transition-colors"},r[5]||(r[5]=[t("svg",{class:"w-4 h-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5l7 7-7 7"})],-1)]))])]),t("div",Me,[(i(),v(B,null,R(G,o=>t("div",{key:o,class:"p-2 text-center text-gray-500 font-medium"},n(o),1)),64)),(i(!0),v(B,null,R(q.value,o=>(i(),v("button",{key:o.date,onClick:N=>j(o.date),class:oe(["p-2 text-center rounded hover:bg-gray-100 transition-colors relative",{"text-gray-400":!o.isCurrentMonth,"bg-primary-100 text-primary-700 font-semibold":o.isToday,"bg-primary-50":o.isSelected,"text-gray-900":o.isCurrentMonth&&!o.isToday}])},[f(n(o.dayNumber)+" ",1),!u(P)&&s(o.date)>0?(i(),v("div",We)):D("",!0)],10,Ne))),128))])]),t("div",Ae,[r[7]||(r[7]=t("h4",{class:"text-sm font-medium text-gray-700 mb-3"},"Today's Events",-1)),u(P)?(i(),v("div",$e,r[6]||(r[6]=[t("div",{class:"animate-pulse"},"Loading events...",-1)]))):(i(),v("div",Le,[(i(!0),v(B,null,R(u(I),o=>(i(),v("div",{key:o.id,class:"flex items-center space-x-3 p-3 bg-gray-50 rounded-lg hover:bg-gray-100 transition-colors cursor-pointer",onClick:N=>e(o)},[t("div",{class:"w-3 h-3 rounded-full flex-shrink-0",style:ee({backgroundColor:o.borderColor})},null,4),t("div",Be,[t("p",Re,n(o.title),1),t("p",Ve,n(E(o.start))+" • "+n(J(o.extendedProps.type)),1)]),k(u(F),{variant:re(o.extendedProps.priority),size:"xs"},{default:p(()=>[f(n(se(o.extendedProps.priority)),1)]),_:2},1032,["variant"])],8,Fe))),128)),!u(P)&&u(I).length===0?(i(),v("div",je," No events scheduled for today ")):D("",!0)]))]),t("div",ze,[r[10]||(r[10]=t("h4",{class:"text-sm font-medium text-gray-700 mb-3"},"Upcoming This Week",-1)),u(P)?(i(),v("div",He,r[8]||(r[8]=[t("div",{class:"animate-pulse"},"Loading events...",-1)]))):(i(),v("div",Ue,[(i(!0),v(B,null,R(u(g),o=>(i(),v("div",{key:o.id,class:"flex items-start space-x-3 p-3 bg-gray-50 rounded-lg hover:bg-gray-100 transition-colors cursor-pointer",onClick:N=>e(o)},[t("div",{class:"w-3 h-3 rounded-full flex-shrink-0 mt-0.5",style:ee({backgroundColor:o.borderColor})},null,4),t("div",Ye,[t("p",qe,n(o.title),1),t("div",Ke,[t("span",null,n(ve(o.start)),1),r[9]||(r[9]=t("span",null,"•",-1)),t("span",null,n(J(o.extendedProps.type)),1),o.extendedProps.assetName?(i(),v("span",Qe,"•")):D("",!0),o.extendedProps.assetName?(i(),v("span",Je,n(o.extendedProps.assetName),1)):D("",!0)])]),t("div",Xe,[k(u(F),{variant:re(o.extendedProps.priority),size:"xs"},{default:p(()=>[f(n(se(o.extendedProps.priority)),1)]),_:2},1032,["variant"])])],8,Ge))),128)),!u(P)&&u(g).length===0?(i(),v("div",Ze," No upcoming events this week ")):D("",!0)]))]),u(m).length>0?(i(),v("div",et,[t("h4",tt,[r[11]||(r[11]=t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L4.268 16.5c-.77.833.192 2.5 1.732 2.5z"})],-1)),f(" Overdue ("+n(u(m).length)+") ",1)]),t("div",st,[(i(!0),v(B,null,R(u(m).slice(0,3),o=>(i(),v("div",{key:o.id,class:"flex items-start space-x-3 p-3 bg-red-50 border border-red-100 rounded-lg hover:bg-red-100 transition-colors cursor-pointer",onClick:N=>e(o)},[r[14]||(r[14]=t("div",{class:"w-3 h-3 rounded-full flex-shrink-0 mt-0.5 bg-red-500"},null,-1)),t("div",ot,[t("p",at,n(o.title),1),t("div",nt,[t("span",null,n(me(o.start)),1),r[12]||(r[12]=t("span",null,"•",-1)),t("span",null,n(J(o.extendedProps.type)),1)])]),k(u(F),{variant:"error",size:"xs"},{default:p(()=>r[13]||(r[13]=[f("Overdue",-1)])),_:1,__:[13]})],8,rt))),128)),u(m).length>3?(i(),v("div",lt,[k(M,{to:"/calendar?filter=overdue",class:"text-xs text-red-600 hover:text-red-700 font-medium"},{default:p(()=>[f(" View "+n(u(m).length-3)+" more overdue items → ",1)]),_:1})])):D("",!0)])])):D("",!0),t("div",it,[t("div",dt,[t("div",ut,n(u(W).today),1),r[15]||(r[15]=t("div",{class:"text-xs text-gray-500"},"Today",-1))]),t("div",ct,[t("div",vt,n(u(W).upcoming),1),r[16]||(r[16]=t("div",{class:"text-xs text-gray-500"},"This Week",-1))])]),k(u(be),{modelValue:$.value,"onUpdate:modelValue":r[0]||(r[0]=o=>$.value=o),title:((S=c.value)==null?void 0:S.title)||"Event Details",size:"md",onConfirm:d,onCancel:l,"confirm-text":c.value?ge((w=c.value.extendedProps)==null?void 0:w.type):"Close","cancel-text":"Close"},{default:p(()=>{var o,N,z,H,ae,ne,le;return[c.value?(i(),v("div",mt,[t("div",pt,[k(u(F),{variant:fe((o=c.value.extendedProps)==null?void 0:o.type)},{default:p(()=>{var ie;return[f(n(J((ie=c.value.extendedProps)==null?void 0:ie.type)),1)]}),_:1},8,["variant"]),(N=c.value.extendedProps)!=null&&N.priority?(i(),X(u(F),{key:0,variant:re(c.value.extendedProps.priority)},{default:p(()=>[f(n(se(c.value.extendedProps.priority)),1)]),_:1},8,["variant"])):D("",!0),(z=c.value.extendedProps)!=null&&z.status?(i(),X(u(F),{key:1,variant:ye(c.value.extendedProps.status)},{default:p(()=>[f(n(pe(c.value.extendedProps.status)),1)]),_:1},8,["variant"])):D("",!0)]),t("div",gt,[t("div",null,[r[17]||(r[17]=t("strong",null,"Time:",-1)),f(" "+n(te(c.value.start))+" at "+n(E(c.value.start)),1)]),(H=c.value.extendedProps)!=null&&H.description?(i(),v("div",ft,[r[18]||(r[18]=t("strong",null,"Description:",-1)),f(" "+n(c.value.extendedProps.description),1)])):D("",!0),(ae=c.value.extendedProps)!=null&&ae.assetName?(i(),v("div",yt,[r[19]||(r[19]=t("strong",null,"Asset:",-1)),f(" "+n(c.value.extendedProps.assetName),1)])):D("",!0),(ne=c.value.extendedProps)!=null&&ne.location?(i(),v("div",xt,[r[20]||(r[20]=t("strong",null,"Location:",-1)),f(" "+n(c.value.extendedProps.location),1)])):D("",!0),(le=c.value.extendedProps)!=null&&le.frequency?(i(),v("div",ht,[r[21]||(r[21]=t("strong",null,"Frequency:",-1)),f(" "+n(c.value.extendedProps.frequency),1)])):D("",!0)])])):D("",!0)]}),_:1},8,["modelValue","title","confirm-text"])]}),_:1})}}},_t=de(kt,[["__scopeId","data-v-9772e3c3"]]),wt={class:"space-y-8 p-6"},bt={class:"grid grid-cols-1 lg:grid-cols-3 gap-8"},Ct={class:"lg:col-span-2"},Dt={class:"flex items-center justify-between mb-6"},Et={key:0,class:"flex justify-center py-8"},Ot={key:1,class:"text-center py-8 text-gray-500"},Pt={key:2,class:"space-y-4"},St={class:"flex-1"},Tt={class:"font-medium text-gray-900"},It={class:"text-sm text-gray-600 mt-1"},Mt={class:"flex items-center mt-2 space-x-4"},Nt={class:"text-right text-sm text-gray-500"},Wt={class:"mt-1"},At={class:"space-y-6"},$t={class:"grid grid-cols-1 lg:grid-cols-2 gap-8"},Lt={class:"space-y-3"},Ft={class:"space-y-4"},Bt={class:"flex items-center justify-between"},Rt={class:"flex items-center"},Vt={class:"text-sm font-medium mr-2"},jt={class:"w-16 bg-gray-200 rounded-full h-2"},zt={class:"flex items-center justify-between"},Ht={class:"flex items-center"},Ut={class:"text-sm font-medium mr-2"},Gt={class:"w-16 bg-gray-200 rounded-full h-2"},Yt={__name:"DashboardView",setup(y){const b={template:` - - - - `},x={template:` - - - - `},g={template:` - - - - `},I={template:` - - - - `},m=Ee(),W=ke(),A=O(!1),P=O(!1),C=T(()=>{var e;const s=m.workOrders;return{total:s.length,open:s.filter(l=>l.status==="OPEN").length,inProgress:s.filter(l=>l.status==="IN_PROGRESS").length,completed:s.filter(l=>l.status==="COMPLETED").length,critical:s.filter(l=>l.priority==="CRITICAL").length,overdue:((e=m.overdueWorkOrders)==null?void 0:e.length)||0}}),h=T(()=>{const s=W.assets;return{total:s.length,operational:s.filter(e=>e.status==="OPERATIONAL").length,down:s.filter(e=>e.status==="DOWN").length,maintenance:s.filter(e=>e.status==="MAINTENANCE").length}}),V=T(()=>[{name:"Work Orders",value:C.value.total,subtitle:`${C.value.open} open`,icon:b,iconBg:"bg-blue-100",iconColor:"text-blue-600",change:12},{name:"Assets",value:h.value.total,subtitle:`${h.value.operational} operational`,icon:x,iconBg:"bg-green-100",iconColor:"text-green-600",change:5},{name:"Critical Issues",value:C.value.critical,subtitle:"Needs attention",icon:g,iconBg:"bg-red-100",iconColor:"text-red-600",change:-8},{name:"Overdue Tasks",value:C.value.overdue,subtitle:"Past due date",icon:I,iconBg:"bg-yellow-100",iconColor:"text-yellow-600",change:-15}]),c=T(()=>m.workOrders.slice().sort((s,e)=>new Date(e.createdAt)-new Date(s.createdAt)).slice(0,5)),$=s=>({OPEN:"bg-blue-100 text-blue-800",IN_PROGRESS:"bg-yellow-100 text-yellow-800",COMPLETED:"bg-green-100 text-green-800",CANCELLED:"bg-gray-100 text-gray-800"})[s]||"bg-gray-100 text-gray-800",G=s=>({LOW:"bg-gray-100 text-gray-800",MEDIUM:"bg-blue-100 text-blue-800",HIGH:"bg-orange-100 text-orange-800",CRITICAL:"bg-red-100 text-red-800"})[s]||"bg-gray-100 text-gray-800",Y=s=>s.replace("_"," ").toLowerCase().replace(/\b\w/g,e=>e.toUpperCase()),q=s=>s.toLowerCase().replace(/\b\w/g,e=>e.toUpperCase()),K=s=>new Date(s).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}),Q=async()=>{await j()},j=async()=>{try{A.value=!0,P.value=!0,await Promise.all([m.fetchWorkOrders({page:0,size:20}),W.fetchAssets({page:0,size:10})])}catch(s){console.error("Failed to load dashboard data:",s)}finally{A.value=!1,P.value=!1}};return ue(()=>{j()}),(s,e)=>{const l=ce("router-link");return i(),X(_e,null,{header:p(()=>[k(we,{title:"Dashboard",description:"Overview of your facility management operations",breadcrumbs:[{text:"Dashboard",to:null}]},{actions:p(()=>[k(u(U),{variant:"primary",size:"sm",onClick:Q},{default:p(()=>e[3]||(e[3]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),f(" Refresh ",-1)])),_:1,__:[3]})]),stats:p(()=>[k(u(De),{stats:V.value},null,8,["stats"])]),_:1})]),default:p(()=>[t("div",wt,[t("div",bt,[t("div",Ct,[k(u(Z),{padding:"lg"},{default:p(()=>[t("div",Dt,[e[5]||(e[5]=t("h3",{class:"text-lg font-semibold text-gray-900"},"Recent Work Orders",-1)),k(l,{to:"/work-orders",class:"text-sm text-primary-600 hover:text-primary-700 font-medium"},{default:p(()=>e[4]||(e[4]=[f(" View All → ",-1)])),_:1,__:[4]})]),A.value?(i(),v("div",Et,e[6]||(e[6]=[t("div",{class:"animate-spin rounded-full h-8 w-8 border-b-2 border-primary-600"},null,-1)]))):c.value.length===0?(i(),v("div",Ot," No work orders found ")):(i(),v("div",Pt,[(i(!0),v(B,null,R(c.value,d=>(i(),v("div",{key:d.id,class:"flex items-center justify-between p-4 border border-gray-200 rounded hover:bg-gray-50 transition-colors"},[t("div",St,[t("h4",Tt,n(d.title),1),t("p",It,n(d.description),1),t("div",Mt,[t("span",{class:oe([$(d.status),"px-2 py-1 text-xs font-medium rounded"])},n(Y(d.status)),3),t("span",{class:oe([G(d.priority),"px-2 py-1 text-xs font-medium rounded"])},n(q(d.priority)),3)])]),t("div",Nt,[t("p",null,n(K(d.createdAt)),1),t("p",Wt,n(d.assignee||"Unassigned"),1)])]))),128))]))]),_:1})]),t("div",At,[k(_t)])]),t("div",$t,[k(u(Z),{padding:"lg"},{default:p(()=>[e[10]||(e[10]=t("h3",{class:"text-lg font-semibold text-gray-900 mb-4"},"Quick Actions",-1)),t("div",Lt,[k(u(U),{variant:"primary",size:"sm",block:"",onClick:e[0]||(e[0]=()=>s.$router.push("/work-orders/create"))},{default:p(()=>e[7]||(e[7]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),f(" Create Work Order ",-1)])),_:1,__:[7]}),k(u(U),{variant:"secondary",size:"sm",block:"",onClick:e[1]||(e[1]=()=>s.$router.push("/assets"))},{default:p(()=>e[8]||(e[8]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),f(" Add Asset ",-1)])),_:1,__:[8]}),k(u(U),{variant:"outline",size:"sm",block:"",onClick:e[2]||(e[2]=()=>s.$router.push("/reports"))},{default:p(()=>e[9]||(e[9]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"})],-1),f(" View Reports ",-1)])),_:1,__:[9]})])]),_:1,__:[10]}),k(u(Z),{padding:"lg"},{default:p(()=>[e[14]||(e[14]=t("h3",{class:"text-lg font-semibold text-gray-900 mb-4"},"System Status",-1)),t("div",Ft,[t("div",Bt,[e[11]||(e[11]=t("span",{class:"text-sm text-gray-600"},"Assets Operational",-1)),t("div",Rt,[t("span",Vt,n(h.value.total>0?Math.round(h.value.operational/h.value.total*100):0)+"% ",1),t("div",jt,[t("div",{class:"bg-green-500 h-2 rounded-full transition-all duration-300",style:ee({width:`${h.value.total>0?h.value.operational/h.value.total*100:0}%`})},null,4)])])]),t("div",zt,[e[12]||(e[12]=t("span",{class:"text-sm text-gray-600"},"Work Order Completion",-1)),t("div",Ht,[t("span",Ut,n(C.value.total>0?Math.round(C.value.completed/C.value.total*100):0)+"% ",1),t("div",Gt,[t("div",{class:"bg-blue-500 h-2 rounded-full transition-all duration-300",style:ee({width:`${C.value.total>0?C.value.completed/C.value.total*100:0}%`})},null,4)])])]),e[13]||(e[13]=t("div",{class:"flex items-center justify-between"},[t("span",{class:"text-sm text-gray-600"},"System Health"),t("span",{class:"px-2 py-1 bg-green-100 text-green-700 text-xs font-medium rounded"}," Excellent ")],-1))])]),_:1,__:[14]})])])]),_:1})}}},ns=de(Yt,[["__scopeId","data-v-77944288"]]);export{ns as default}; diff --git a/frontend/dist/assets/DashboardView-Ud-cY9iD.js b/frontend/dist/assets/DashboardView-Ud-cY9iD.js new file mode 100644 index 00000000..62394c13 --- /dev/null +++ b/frontend/dist/assets/DashboardView-Ud-cY9iD.js @@ -0,0 +1,17 @@ +import{r as z,c as G,o as ye,aO as pe,m as we,aP as xe,aQ as ne,_ as me,v as ke,f as he,i as ce,g as P,w as T,b as e,a as I,j as Y,d as V,e as A,F as le,k as q,t as C,af as se,aR as oe,n as ge,Q as ue}from"./index-QAlcqU00.js";import{u as Oe}from"./assets-CvfPiugk.js";import{F as Se,a as De}from"./FPPageHeader-CFIwZZgQ.js";import{F as de}from"./FPCard-AB6NRXg5.js";import{F as be}from"./FPModal-DMoPysvU.js";import{F as re}from"./FPBadge-DvOitM1C.js";import{u as _e}from"./useUniversalCalendar-C6fCeunY.js";import{F as Ce}from"./FPStats-DOY0PQQF.js";import"./useWorkOrders-CVmaGBfy.js";import"./useFormAutoSave-BrW9Wl2Q.js";import"./workOrder-jNxj_kjQ.js";import"./usePreventiveMaintenanceDisplay-DE1jAbPb.js";function Ee(){const d="atlas-cmms-offline",g={pendingActions:"pendingActions",offlineData:"offlineData"},F=z(!1),U=z((navigator==null?void 0:navigator.onLine)??!0),j=z(!1),b=z(null),k=z(null),H=z(0),S=z(null),R=G(()=>"indexedDB"in window&&F.value),K=G(()=>H.value>0),X=async()=>{b.value=null;try{if(!("indexedDB"in window))throw new Error("IndexedDB not supported in this browser");return new Promise((i,c)=>{const u=indexedDB.open(d,1);u.onerror=()=>{const t="Failed to initialize offline database";b.value=t,c(new Error(t))},u.onsuccess=()=>{k.value=u.result,F.value=!0,console.log("[OfflineSync] Database initialized successfully"),i()},u.onupgradeneeded=t=>{const v=t.target.result;if(!v.objectStoreNames.contains(g.pendingActions)){const h=v.createObjectStore(g.pendingActions,{keyPath:"id",autoIncrement:!0});h.createIndex("timestamp","timestamp",{unique:!1}),h.createIndex("type","type",{unique:!1}),h.createIndex("priority","priority",{unique:!1}),h.createIndex("status","status",{unique:!1})}if(!v.objectStoreNames.contains(g.offlineData)){const h=v.createObjectStore(g.offlineData,{keyPath:"id"});h.createIndex("type","type",{unique:!1}),h.createIndex("lastModified","lastModified",{unique:!1})}console.log("[OfflineSync] Database schema created/updated")}})}catch(i){throw b.value=`Failed to initialize offline database: ${i.message}`,console.error("[OfflineSync]",b.value),i}},J=()=>{k.value&&(k.value.close(),k.value=null,F.value=!1,console.log("[OfflineSync] Database connection closed"))},a=async i=>{try{if(!R.value)throw new Error("Offline sync not available");const u=k.value.transaction([g.offlineData],"readwrite").objectStore(g.offlineData),t={...i,lastModified:i.lastModified||Date.now()};await new Promise((v,h)=>{const E=u.put(t);E.onsuccess=()=>v(E.result),E.onerror=()=>h(E.error)}),console.log("[OfflineSync] Data saved offline:",i.id)}catch(c){throw b.value=`Failed to save offline data: ${c.message}`,console.error("[OfflineSync]",b.value),c}},y=async i=>{try{if(!R.value)return null;const u=k.value.transaction([g.offlineData],"readonly").objectStore(g.offlineData);return new Promise((t,v)=>{const h=u.get(i);h.onsuccess=()=>t(h.result||null),h.onerror=()=>v(h.error)})}catch(c){return console.error("[OfflineSync] Failed to get offline data:",c),null}},_=async i=>{try{if(!R.value)return[];const t=k.value.transaction([g.offlineData],"readonly").objectStore(g.offlineData).index("type");return new Promise((v,h)=>{const E=t.getAll(i);E.onsuccess=()=>v(E.result||[]),E.onerror=()=>h(E.error)})}catch(c){return console.error("[OfflineSync] Failed to get offline data by type:",c),[]}},l=async i=>{try{if(!R.value)return;const u=k.value.transaction([g.offlineData],"readwrite").objectStore(g.offlineData);await new Promise((t,v)=>{const h=u.delete(i);h.onsuccess=()=>t(),h.onerror=()=>v(h.error)}),console.log("[OfflineSync] Offline data deleted:",i)}catch(c){b.value=`Failed to delete offline data: ${c.message}`,console.error("[OfflineSync]",b.value)}},s=async()=>{try{if(!R.value)return;const c=k.value.transaction([g.offlineData],"readwrite").objectStore(g.offlineData);await new Promise((u,t)=>{const v=c.clear();v.onsuccess=()=>u(),v.onerror=()=>t(v.error)}),console.log("[OfflineSync] All offline data cleared")}catch(i){b.value=`Failed to clear offline data: ${i.message}`,console.error("[OfflineSync]",b.value)}},m=async i=>{try{if(!R.value)throw new Error("Offline sync not available");const u=k.value.transaction([g.pendingActions],"readwrite").objectStore(g.pendingActions),t={...i,timestamp:Date.now(),retryCount:0,status:"pending"};await new Promise((v,h)=>{const E=u.add(t);E.onsuccess=()=>v(E.result),E.onerror=()=>h(E.error)}),await n(),console.log("[OfflineSync] Action queued:",i.type)}catch(c){throw b.value=`Failed to queue action: ${c.message}`,console.error("[OfflineSync]",b.value),c}},D=async()=>{try{if(!R.value)return[];const c=k.value.transaction([g.pendingActions],"readonly").objectStore(g.pendingActions);return new Promise((u,t)=>{const v=c.getAll();v.onsuccess=()=>u(v.result||[]),v.onerror=()=>t(v.error)})}catch(i){return console.error("[OfflineSync] Failed to get pending actions:",i),[]}},B=async i=>{try{if(!R.value)return;const u=k.value.transaction([g.pendingActions],"readwrite").objectStore(g.pendingActions);await new Promise((t,v)=>{const h=u.delete(i);h.onsuccess=()=>t(),h.onerror=()=>v(h.error)}),await n(),console.log("[OfflineSync] Action removed from queue:",i)}catch(c){console.error("[OfflineSync] Failed to remove action:",c)}},r=async i=>{try{if(!R.value)return;const u=k.value.transaction([g.pendingActions],"readwrite").objectStore(g.pendingActions),t=await new Promise((v,h)=>{const E=u.get(i);E.onsuccess=()=>v(E.result),E.onerror=()=>h(E.error)});t&&(t.retryCount=(t.retryCount||0)+1,t.lastRetry=Date.now(),await new Promise((v,h)=>{const E=u.put(t);E.onsuccess=()=>v(),E.onerror=()=>h(E.error)}))}catch(c){console.error("[OfflineSync] Failed to update retry count:",c)}},n=async()=>{try{const i=await D();H.value=i.length}catch(i){console.error("[OfflineSync] Failed to update pending actions count:",i)}},w=async()=>{if(!U.value||j.value)return{successful:0,failed:0};j.value=!0;let i=0,c=0;try{const u=await D();for(const t of u)try{if(t.retryCount>=3){console.warn("[OfflineSync] Max retries exceeded, removing action:",t.id),await B(t.id),c++;continue}const v=await fetch(t.endpoint,{method:t.method,headers:{"Content-Type":"application/json"},body:t.data?JSON.stringify(t.data):void 0});v.ok?(await B(t.id),i++,console.log("[OfflineSync] Action synced successfully:",t.type)):(await r(t.id),c++,console.warn("[OfflineSync] Action sync failed:",t.type,v.status))}catch(v){await r(t.id),c++,console.error("[OfflineSync] Action sync error:",t.type,v.message)}S.value=new Date,console.log(`[OfflineSync] Sync completed: ${i} successful, ${c} failed`)}catch(u){b.value=`Sync failed: ${u.message}`,console.error("[OfflineSync]",b.value)}finally{j.value=!1}return{successful:i,failed:c}},O=async(i,c)=>{try{if(!U.value)return;const u=await fetch(c);if(!u.ok)throw new Error(`HTTP ${u.status}: ${u.statusText}`);const t=await u.json(),v=t.data||t;for(const h of v)await a({id:h.id,type:i,data:h,lastModified:h.lastModified||Date.now()});console.log(`[OfflineSync] ${i} data synced from server:`,v.length,"items")}catch(u){b.value=`Failed to sync ${i}: ${u.message}`,console.error("[OfflineSync]",b.value)}},x=(i,c=3e5)=>!i||!i.lastModified?!0:Date.now()-i.lastModified>c,$=()=>{const i=()=>{U.value=navigator.onLine,console.log("[OfflineSync] Network status changed:",U.value?"online":"offline"),U.value&&K.value&&setTimeout(()=>{w()},1e3)};return window.addEventListener("online",i),window.addEventListener("offline",i),()=>{window.removeEventListener("online",i),window.removeEventListener("offline",i)}},W=async()=>{var i;try{if(!((i=navigator.storage)!=null&&i.estimate))return null;const c=await navigator.storage.estimate(),u=c.quota||0,t=c.usage||0,v=u-t,h=u>0?Math.round(t/u*100):0;return{quota:u,usage:t,available:v,usagePercentage:h}}catch(c){return console.error("[OfflineSync] Failed to get storage usage:",c),null}},Q=async(i=7)=>{try{if(!R.value)return;const c=Date.now()-i*24*60*60*1e3,t=(await new Promise((E,te)=>{const ee=k.value.transaction([g.offlineData],"readonly").objectStore(g.offlineData).getAll();ee.onsuccess=()=>E(ee.result||[]),ee.onerror=()=>te(ee.error)})).filter(E=>E.lastModified{const Z=h.delete(E.id);Z.onsuccess=()=>te(),Z.onerror=()=>ie(Z.error)});console.log(`[OfflineSync] Cleaned up ${t.length} old data items`)}catch(c){console.error("[OfflineSync] Failed to cleanup old data:",c)}},fe=(i,c)=>!i||!c?!1:i.version!==c.version||i.lastModified!==c.lastModified,ae=(i,c,u="server-wins")=>{switch(u){case"server-wins":return c;case"client-wins":return i;case"merge":return{...i,...c,lastModified:Date.now()};default:return c}},ve=()=>{b.value=null};let f=null,o=null;return ye(async()=>{try{await X(),await n(),f=$(),o=setInterval(async()=>{U.value&&K.value&&await w()},3e5),console.log("[OfflineSync] Offline sync initialized")}catch(i){console.error("[OfflineSync] Failed to initialize:",i)}}),pe(()=>{f&&f(),o&&clearInterval(o),J()}),{isInitialized:F,isOnline:U,isSyncing:j,error:b,pendingActionsCount:H,lastSyncTime:S,isOfflineSyncAvailable:R,hasPendingActions:K,initializeDatabase:X,closeDatabase:J,saveOfflineData:a,getOfflineData:y,getOfflineDataByType:_,deleteOfflineData:l,clearOfflineData:s,queueAction:m,getPendingActions:D,removeAction:B,updateActionRetryCount:r,syncPendingActions:w,syncDataFromServer:O,needsSync:x,setupNetworkListeners:$,getStorageUsage:W,cleanupOldData:Q,hasConflict:fe,resolveConflict:ae,clearError:ve}}function Pe(){const d=Ee(),p={workOrders:{storeName:"workOrders",keyPath:"id",syncEndpoint:"/api/work-orders",ttl:24*60*60*1e3,priority:"high"},assets:{storeName:"assets",keyPath:"id",syncEndpoint:"/api/assets",ttl:24*60*60*1e3,priority:"high"},locations:{storeName:"locations",keyPath:"id",syncEndpoint:"/api/locations",ttl:7*24*60*60*1e3,priority:"medium"},users:{storeName:"users",keyPath:"id",syncEndpoint:"/api/users",ttl:24*60*60*1e3,priority:"medium"},parts:{storeName:"parts",keyPath:"id",syncEndpoint:"/api/parts",ttl:7*24*60*60*1e3,priority:"low"}},L=z({totalCachedItems:0,lastCacheUpdate:null,cacheSize:0,syncErrors:[]});z([]);const N=z(!1),M=G(()=>{const a=new Date,y=L.value.lastCacheUpdate,_=30*60*1e3;return y&&a-new Date(y)<_}),g=G(()=>d.isOnline.value&&d.hasPendingActions.value&&!d.isSyncing.value),F=async()=>{try{if(await d.initializeDatabase(),d.database.value){const a=d.database.value;if(a.version<2)return a.close(),new Promise((y,_)=>{const l=indexedDB.open("atlas-cmms-offline",2);l.onupgradeneeded=s=>{const m=s.target.result;Object.entries(p).forEach(([D,B])=>{if(!m.objectStoreNames.contains(B.storeName)){const r=m.createObjectStore(B.storeName,{keyPath:B.keyPath});r.createIndex("lastModified","lastModified",{unique:!1}),r.createIndex("syncStatus","syncStatus",{unique:!1}),console.log(`[OfflineData] Created store: ${B.storeName}`)}}),m.objectStoreNames.contains("cacheMetadata")||m.createObjectStore("cacheMetadata",{keyPath:"key"}).createIndex("lastUpdated","lastUpdated",{unique:!1})},l.onsuccess=()=>{d.database.value=l.result,N.value=!0,console.log("[OfflineData] Database upgraded for data caching"),y()},l.onerror=()=>{_(new Error("Failed to upgrade database for data caching"))}});N.value=!0}}catch(a){throw console.error("[OfflineData] Failed to initialize:",a),a}},U=async(a,y,_={})=>{if(!N.value||!p[a])throw new Error(`Invalid data type or uninitialized: ${a}`);const l=p[a],s=d.database.value;return new Promise((m,D)=>{const B=s.transaction([l.storeName],"readwrite"),r=B.objectStore(l.storeName),n=Array.isArray(y)?y:[y],w=new Date().toISOString(),O=n.map(W=>({...W,lastModified:w,cachedAt:w,syncStatus:"cached",ttl:w+l.ttl,source:_.source||"api"}));let x=0;const $=O.length;O.forEach(W=>{const Q=r.put(W);Q.onsuccess=()=>{x++,x===$&&(S(),console.log(`[OfflineData] Cached ${$} ${a} items`),m(O))},Q.onerror=()=>{D(new Error(`Failed to cache ${a} item`))}}),B.onerror=()=>{D(new Error(`Transaction failed for ${a} caching`))}})},j=async(a,y={})=>{if(!N.value||!p[a])return[];const _=p[a],l=d.database.value;return new Promise((s,m)=>{const r=l.transaction([_.storeName],"readonly").objectStore(_.storeName).getAll();r.onsuccess=()=>{let n=r.result||[];const w=new Date;if(n=n.filter(O=>O.ttl&&new Date(O.ttl)O[_.keyPath]===y.id)),y.status&&(n=n.filter(O=>O.status===y.status)),y.search){const O=y.search.toLowerCase();n=n.filter(x=>{var $,W,Q;return(($=x.title)==null?void 0:$.toLowerCase().includes(O))||((W=x.name)==null?void 0:W.toLowerCase().includes(O))||((Q=x.description)==null?void 0:Q.toLowerCase().includes(O))})}console.log(`[OfflineData] Retrieved ${n.length} cached ${a} items`),s(n)},r.onerror=()=>{m(new Error(`Failed to retrieve cached ${a}`))}})},b=async(a,y=null)=>{if(!N.value||!p[a])return;const _=p[a],l=d.database.value;return new Promise((s,m)=>{const B=l.transaction([_.storeName],"readwrite").objectStore(_.storeName);if(y){const r=B.delete(y);r.onsuccess=()=>{console.log(`[OfflineData] Invalidated ${a} item: ${y}`),S(),s()},r.onerror=()=>m(new Error(`Failed to invalidate ${a} item`))}else{const r=B.clear();r.onsuccess=()=>{console.log(`[OfflineData] Invalidated all ${a} cache`),S(),s()},r.onerror=()=>m(new Error(`Failed to clear ${a} cache`))}})},k=async(a,y=!1)=>{if(!d.isOnline.value)return console.log(`[OfflineData] Cannot sync ${a} - offline`),j(a);const _=p[a];try{if(!y&&M.value){const m=await j(a);if(m.length>0)return console.log(`[OfflineData] Using fresh cache for ${a}`),m}console.log(`[OfflineData] Syncing ${a} from network`);const l=await fetch(_.syncEndpoint);if(!l.ok)throw new Error(`Network request failed: ${l.status}`);const s=await l.json();return await U(a,s.data||s,{source:"network"}),s.data||s}catch(l){console.error(`[OfflineData] Sync failed for ${a}:`,l);const s=await j(a);if(s.length>0)return console.log(`[OfflineData] Using cached ${a} due to sync failure`),s;throw l}},H=async(a,y)=>{var s;if(!d.isOnline.value)return console.log(`[OfflineData] Cannot sync ${a} changes - offline`),!1;const _=p[a];let l=0;for(const m of y)try{const D=await fetch(_.syncEndpoint,{method:m.action==="create"?"POST":m.action==="update"?"PUT":"DELETE",headers:{"Content-Type":"application/json"},body:m.action!=="delete"?JSON.stringify(m.data):void 0});if(D.ok){if(await d.removePendingAction(m.id),l++,m.action!=="delete"&&((s=D.headers.get("content-type"))!=null&&s.includes("json"))){const B=await D.json();await U(a,B,{source:"sync"})}}else console.error(`[OfflineData] Failed to sync ${a} change:`,D.status)}catch(D){console.error(`[OfflineData] Error syncing ${a} change:`,D)}return console.log(`[OfflineData] Synced ${l}/${y.length} ${a} changes`),l===y.length},S=async()=>{if(!N.value)return;const a=d.database.value;let y=0;for(const[_,l]of Object.entries(p))try{const D=a.transaction([l.storeName],"readonly").objectStore(l.storeName).count();D.onsuccess=()=>{y+=D.result,L.value={totalCachedItems:y,lastCacheUpdate:new Date().toISOString(),cacheSize:R(y),syncErrors:L.value.syncErrors}}}catch(s){console.error("[OfflineData] Error updating cache stats:",s)}},R=a=>Math.round(a*2048/1024),K=async(a,y)=>{try{await b(a,y),console.log(`[OfflineData] Cleaned up expired ${a} item: ${y}`)}catch(_){console.error("[OfflineData] Failed to cleanup expired item:",_)}},X=async(a,y={},_={})=>{const{forceNetwork:l=!1,cacheFirst:s=!0}=_;try{if(l||!s&&d.isOnline.value)return await k(a,!0);{const m=await j(a,y);return m.length>0&&!l?(d.isOnline.value&&k(a).catch(D=>{console.warn(`[OfflineData] Background sync failed for ${a}:`,D)}),m):await k(a)}}catch(m){console.error(`[OfflineData] Failed to get ${a} data:`,m);const D=await j(a,y);if(D.length>0)return D;throw m}};we(()=>d.isOnline.value,a=>{a&&g.value&&(console.log("[OfflineData] Coming online - triggering sync"),setTimeout(()=>{J()},1e3))});const J=async()=>{if(!(!d.isOnline.value||d.isSyncing.value))try{const a=await d.getPendingActions(),y={};a.forEach(_=>{const l=_.entityType;y[l]||(y[l]=[]),y[l].push(_)});for(const[_,l]of Object.entries(y))p[_]&&await H(_,l);console.log("[OfflineData] Pending changes sync completed")}catch(a){console.error("[OfflineData] Failed to sync pending changes:",a)}};return{isInitialized:N,cacheStats:L,isCacheHealthy:M,needsSync:g,...d,initializeOfflineStores:F,cacheData:U,getCachedData:j,invalidateCache:b,syncFromNetwork:k,syncToNetwork:H,getData:X,syncPendingChanges:J,DATA_TYPES:p}}const Ae=xe("workOrders",()=>{const d=Pe(),p=z([]),L=z(null),N=z(!1),M=z(null),g=z(0),F=z({status:null,priority:null,assignedTo:null,search:"",dateRange:null}),U=G(()=>{let r=p.value;if(F.value.status&&(r=r.filter(n=>n.status===F.value.status)),F.value.priority&&(r=r.filter(n=>n.priority===F.value.priority)),F.value.assignedTo&&(r=r.filter(n=>{var w;return((w=n.assignedTo)==null?void 0:w.id)===F.value.assignedTo})),F.value.search){const n=F.value.search.toLowerCase();r=r.filter(w=>{var O,x,$;return((O=w.title)==null?void 0:O.toLowerCase().includes(n))||((x=w.description)==null?void 0:x.toLowerCase().includes(n))||(($=w.id)==null?void 0:$.toString().includes(n))})}return r}),j=G(()=>p.value.reduce((r,n)=>(r[n.status]||(r[n.status]=[]),r[n.status].push(n),r),{})),b=G(()=>p.value.reduce((r,n)=>(r[n.priority]||(r[n.priority]=[]),r[n.priority].push(n),r),{})),k=G(()=>{const r=new Date;return p.value.filter(n=>n.dueDate&&new Date(n.dueDate){try{N.value=!0,M.value=null,d.isInitialized.value||await d.initializeOfflineStores();const n=await d.getData("workOrders",r);return p.value=Array.isArray(n)?n:n.content||[],g.value=Array.isArray(n)?n.length:n.totalElements||n.length,n}catch(n){throw M.value=n.message||"Failed to fetch work orders",n}finally{N.value=!1}};return{workOrders:p,currentWorkOrder:L,loading:N,error:M,totalCount:g,filters:F,filteredWorkOrders:U,workOrdersByStatus:j,workOrdersByPriority:b,overdueWorkOrders:k,fetchWorkOrders:H,fetchWorkOrderById:async r=>{try{N.value=!0,M.value=null,d.isInitialized.value||await d.initializeOfflineStores();const n=await d.getCachedData("workOrders",{id:r});if(n.length>0){L.value=n[0];const x=p.value.findIndex($=>$.id===r);return x>=0&&(p.value[x]=n[0]),d.isOnline.value&&d.syncFromNetwork("workOrders").catch($=>{console.warn("Background sync failed:",$)}),n[0]}const w=await ne.getById(r);L.value=w,await d.cacheData("workOrders",w);const O=p.value.findIndex(x=>x.id===r);return O!==-1&&(p.value[O]=w),w}catch(n){throw M.value=n.message||"Failed to fetch work order",n}finally{N.value=!1}},createWorkOrder:async r=>{try{if(N.value=!0,M.value=null,d.isInitialized.value||await d.initializeOfflineStores(),d.isOnline.value){const n=await ne.create(r);return p.value.unshift(n),g.value+=1,await d.cacheData("workOrders",n),n}else{const n=`temp_${Date.now()}`,w={...r,id:n,status:"DRAFT",createdAt:new Date().toISOString(),syncStatus:"pending"};return p.value.unshift(w),g.value+=1,await d.queueAction({type:"create",entityType:"workOrders",endpoint:"/api/work-orders",method:"POST",data:r,tempId:n,priority:1}),await d.cacheData("workOrders",w),w}}catch(n){throw M.value=n.message||"Failed to create work order",n}finally{N.value=!1}},updateWorkOrder:async(r,n)=>{var w,O;try{if(N.value=!0,M.value=null,d.isInitialized.value||await d.initializeOfflineStores(),d.isOnline.value){const x=await ne.update(r,n),$=p.value.findIndex(W=>W.id===r);return $!==-1&&(p.value[$]=x),((w=L.value)==null?void 0:w.id)===r&&(L.value=x),await d.cacheData("workOrders",x),x}else{const x=p.value.findIndex(Q=>Q.id===r),W={...x!==-1?p.value[x]:L.value,...n,lastModified:new Date().toISOString(),syncStatus:"pending"};return x!==-1&&(p.value[x]=W),((O=L.value)==null?void 0:O.id)===r&&(L.value=W),await d.queueAction({type:"update",entityType:"workOrders",endpoint:`/api/work-orders/${r}`,method:"PUT",data:n,itemId:r,priority:1}),await d.cacheData("workOrders",W),W}}catch(x){throw M.value=x.message||"Failed to update work order",x}finally{N.value=!1}},updateWorkOrderStatus:async(r,n,w="")=>{var O;try{N.value=!0,M.value=null;const x=await ne.updateStatus(r,n,w),$=p.value.findIndex(W=>W.id===r);return $!==-1&&(p.value[$]=x),((O=L.value)==null?void 0:O.id)===r&&(L.value=x),x}catch(x){throw M.value=x.message||"Failed to update work order status",x}finally{N.value=!1}},assignWorkOrder:async(r,n)=>{var w;try{N.value=!0,M.value=null;const O=await ne.assignWorkOrder(r,n),x=p.value.findIndex($=>$.id===r);return x!==-1&&(p.value[x]=O),((w=L.value)==null?void 0:w.id)===r&&(L.value=O),O}catch(O){throw M.value=O.message||"Failed to assign work order",O}finally{N.value=!1}},deleteWorkOrder:async r=>{var n;try{return N.value=!0,M.value=null,await ne.delete(r),p.value=p.value.filter(w=>w.id!==r),g.value-=1,((n=L.value)==null?void 0:n.id)===r&&(L.value=null),!0}catch(w){throw M.value=w.message||"Failed to delete work order",w}finally{N.value=!1}},setFilters:r=>{F.value={...F.value,...r}},clearFilters:()=>{F.value={status:null,priority:null,assignedTo:null,search:"",dateRange:null}},clearError:()=>{M.value=null},refreshFromNetwork:async(r=!1)=>{try{d.isInitialized.value||await d.initializeOfflineStores();const n=await d.syncFromNetwork("workOrders",r);return p.value=Array.isArray(n)?n:n.content||[],g.value=Array.isArray(n)?n.length:n.totalElements||n.length,n}catch(n){throw console.error("Failed to refresh from network:",n),n}},getCacheStats:()=>{var r,n,w,O;return{isOnline:((r=d.isOnline)==null?void 0:r.value)||!1,isCacheHealthy:((n=d.isCacheHealthy)==null?void 0:n.value)||!1,hasPendingActions:((w=d.hasPendingActions)==null?void 0:w.value)||!1,cacheStats:((O=d.cacheStats)==null?void 0:O.value)||{}}},clearCache:async()=>{try{d.isInitialized.value||await d.initializeOfflineStores(),await d.invalidateCache("workOrders"),console.log("[WorkOrderStore] Cache cleared successfully")}catch(r){throw console.error("[WorkOrderStore] Failed to clear cache:",r),r}},syncPendingChanges:async()=>{try{d.isInitialized.value||await d.initializeOfflineStores(),await d.syncPendingChanges(),await H()}catch(r){throw console.error("[WorkOrderStore] Failed to sync pending changes:",r),r}}}}),Ie={class:"flex items-center justify-between mb-4"},Ne={class:"flex items-center space-x-2"},$e={class:"mb-6"},Me={class:"flex items-center justify-between mb-3"},Fe={class:"text-sm font-medium text-gray-700"},Le={class:"grid grid-cols-7 gap-1 text-xs"},Te=["onClick"],je={key:0,class:"absolute bottom-0.5 left-1/2 transform -translate-x-1/2 w-1 h-1 bg-primary-500 rounded-full"},We={class:"mb-6"},ze={key:0,class:"text-center py-4"},Re={key:1,class:"space-y-2"},Be=["onClick"],qe={class:"flex-1 min-w-0"},Ue={class:"text-sm font-medium text-gray-900 truncate"},Ve={class:"text-xs text-gray-500"},He={key:0,class:"text-center py-4 text-gray-500 text-sm"},Ye={class:"mb-6"},Ge={key:0,class:"text-center py-4"},Qe={key:1,class:"space-y-2"},Ke=["onClick"],Je={class:"flex-1 min-w-0"},Xe={class:"text-sm font-medium text-gray-900 truncate"},Ze={class:"flex items-center space-x-2 text-xs text-gray-500 mt-1"},et={key:0},tt={key:1,class:"truncate"},nt={class:"flex items-center space-x-2"},rt={key:0,class:"text-center py-4 text-gray-500 text-sm"},st={key:0,class:"mb-6"},ot={class:"text-sm font-medium text-red-700 mb-3 flex items-center"},at={class:"space-y-2"},it=["onClick"],lt={class:"flex-1 min-w-0"},ct={class:"text-sm font-medium text-red-900 truncate"},dt={class:"flex items-center space-x-2 text-xs text-red-600 mt-1"},ut={key:0,class:"text-center"},ft={class:"grid grid-cols-2 gap-3 pt-4 border-t border-gray-200"},vt={class:"text-center"},gt={class:"text-lg font-semibold text-gray-900"},yt={class:"text-center"},mt={class:"text-lg font-semibold text-gray-900"},ht={key:0,class:"space-y-4"},pt={class:"flex items-center space-x-2"},wt={class:"text-sm space-y-2"},xt={key:0},kt={key:1},Ot={key:2},St={key:3},Dt={__name:"CalendarWidget",setup(d){const p=ke(),{allCalendarEvents:L,upcomingEvents:N,todaysEvents:M,overdueEvents:g,eventStatistics:F,eventTypes:U,loading:j,refreshCalendarData:b}=_e(),k=z(new Date),H=z(new Date().toISOString().split("T")[0]),S=z(null),R=z(!1),K=["S","M","T","W","T","F","S"],X=G(()=>k.value.toLocaleDateString("en-US",{month:"long",year:"numeric"})),J=G(()=>{const f=k.value.getFullYear(),o=k.value.getMonth(),i=new Date(f,o,1),c=new Date(i);c.setDate(c.getDate()-i.getDay());const u=[],t=new Date(c),v=new Date;for(let h=0;h<42;h++){const E=t.toISOString().split("T")[0];u.push({date:E,dayNumber:t.getDate(),isCurrentMonth:t.getMonth()===o,isToday:t.toDateString()===v.toDateString(),isSelected:E===H.value}),t.setDate(t.getDate()+1)}return u}),a=()=>{k.value=new Date(k.value.getFullYear(),k.value.getMonth()-1,1)},y=()=>{k.value=new Date(k.value.getFullYear(),k.value.getMonth()+1,1)},_=f=>{H.value=f},l=f=>L.value.filter(o=>{if(!o||!o.start)return!1;try{return new Date(o.start).toISOString().split("T")[0]===f}catch{return console.warn("Invalid event date:",o.start),!1}}).length,s=f=>{S.value=f,R.value=!0},m=()=>{R.value=!1,S.value=null},D=()=>{if(S.value&&S.value.extendedProps){const f=S.value.extendedProps.type,o=S.value.extendedProps.originalData;f==="WORK_ORDER"&&(o!=null&&o.id)?p.push(`/work-orders?edit=${o.id}`):f==="PREVENTIVE_MAINTENANCE"&&(o!=null&&o.id)&&p.push(`/maintenance/preventive/${o.id}`),m()}},B=async()=>{await b()},r=f=>{if(!f)return"";try{return new Date(f).toLocaleTimeString("en-US",{hour:"numeric",minute:"2-digit"})}catch{return console.warn("Invalid date for formatting:",f),""}},n=f=>{if(!f)return"";try{return new Date(f).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"})}catch{return console.warn("Invalid date for formatting:",f),""}},w=f=>{if(!f)return"";try{const c=new Date(f)-new Date,u=Math.ceil(c/(1e3*60*60*24));return u===0?"Today":u===1?"Tomorrow":u===-1?"Yesterday":u>0?`In ${u} days`:`${Math.abs(u)} days ago`}catch{return console.warn("Invalid date for relative formatting:",f),""}},O=f=>{if(!f)return"";try{const o=new Date(f),c=new Date-o,u=Math.floor(c/(1e3*60*60*24));return u===0?"Due today":u===1?"1 day overdue":`${u} days overdue`}catch{return console.warn("Invalid date for overdue formatting:",f),""}},x=f=>f?f.charAt(0)+f.slice(1).toLowerCase():"N/A",$=f=>f?f.replace("_"," ").toLowerCase().replace(/\b\w/g,o=>o.toUpperCase()):"N/A",W=f=>{var o;return((o=U[f])==null?void 0:o.label)||f},Q=f=>f==="WORK_ORDER"?"Edit Work Order":f==="PREVENTIVE_MAINTENANCE"?"View Schedule":"View Details",fe=f=>({WORK_ORDER:"primary",PREVENTIVE_MAINTENANCE:"success",ASSET_INSPECTION:"warning",SCHEDULED_DOWNTIME:"error"})[f]||"secondary",ae=f=>({LOW:"secondary",MEDIUM:"primary",HIGH:"warning",CRITICAL:"error"})[f]||"secondary",ve=f=>({OPEN:"primary",IN_PROGRESS:"warning",COMPLETED:"success",ON_HOLD:"warning",CANCELLED:"secondary",ACTIVE:"success",PAUSED:"warning",INACTIVE:"secondary"})[f]||"secondary";return ye(async()=>{try{await b()}catch(f){console.error("Failed to initialize calendar data:",f)}}),(f,o)=>{const i=he("router-link");return P(),ce(A(de),{padding:"lg",class:"calendar-widget"},{default:T(()=>{var c,u;return[e("div",Ie,[o[3]||(o[3]=e("h3",{class:"text-lg font-semibold text-gray-900"},"Upcoming Events",-1)),e("div",Ne,[V(A(le),{variant:"ghost",size:"xs",onClick:B},{default:T(()=>o[1]||(o[1]=[e("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1)])),_:1,__:[1]}),V(i,{to:"/calendar",class:"text-sm text-primary-600 hover:text-primary-700 font-medium"},{default:T(()=>o[2]||(o[2]=[q(" View All → ",-1)])),_:1,__:[2]})])]),e("div",$e,[e("div",Me,[e("h4",Fe,C(X.value),1),e("div",{class:"flex items-center space-x-1"},[e("button",{onClick:a,class:"p-1 rounded hover:bg-gray-100 transition-colors"},o[4]||(o[4]=[e("svg",{class:"w-4 h-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 19l-7-7 7-7"})],-1)])),e("button",{onClick:y,class:"p-1 rounded hover:bg-gray-100 transition-colors"},o[5]||(o[5]=[e("svg",{class:"w-4 h-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5l7 7-7 7"})],-1)]))])]),e("div",Le,[(P(),I(se,null,oe(K,t=>e("div",{key:t,class:"p-2 text-center text-gray-500 font-medium"},C(t),1)),64)),(P(!0),I(se,null,oe(J.value,t=>(P(),I("button",{key:t.date,onClick:v=>_(t.date),class:ge(["p-2 text-center rounded hover:bg-gray-100 transition-colors relative",{"text-gray-400":!t.isCurrentMonth,"bg-primary-100 text-primary-700 font-semibold":t.isToday,"bg-primary-50":t.isSelected,"text-gray-900":t.isCurrentMonth&&!t.isToday}])},[q(C(t.dayNumber)+" ",1),!A(j)&&l(t.date)>0?(P(),I("div",je)):Y("",!0)],10,Te))),128))])]),e("div",We,[o[7]||(o[7]=e("h4",{class:"text-sm font-medium text-gray-700 mb-3"},"Today's Events",-1)),A(j)?(P(),I("div",ze,o[6]||(o[6]=[e("div",{class:"animate-pulse"},"Loading events...",-1)]))):(P(),I("div",Re,[(P(!0),I(se,null,oe(A(M),t=>(P(),I("div",{key:t.id,class:"flex items-center space-x-3 p-3 bg-gray-50 rounded-lg hover:bg-gray-100 transition-colors cursor-pointer",onClick:v=>s(t)},[e("div",{class:"w-3 h-3 rounded-full flex-shrink-0",style:ue({backgroundColor:t.borderColor})},null,4),e("div",qe,[e("p",Ue,C(t.title),1),e("p",Ve,C(r(t.start))+" • "+C(W(t.extendedProps.type)),1)]),V(A(re),{variant:ae(t.extendedProps.priority),size:"xs"},{default:T(()=>[q(C(x(t.extendedProps.priority)),1)]),_:2},1032,["variant"])],8,Be))),128)),!A(j)&&A(M).length===0?(P(),I("div",He," No events scheduled for today ")):Y("",!0)]))]),e("div",Ye,[o[10]||(o[10]=e("h4",{class:"text-sm font-medium text-gray-700 mb-3"},"Upcoming This Week",-1)),A(j)?(P(),I("div",Ge,o[8]||(o[8]=[e("div",{class:"animate-pulse"},"Loading events...",-1)]))):(P(),I("div",Qe,[(P(!0),I(se,null,oe(A(N),t=>(P(),I("div",{key:t.id,class:"flex items-start space-x-3 p-3 bg-gray-50 rounded-lg hover:bg-gray-100 transition-colors cursor-pointer",onClick:v=>s(t)},[e("div",{class:"w-3 h-3 rounded-full flex-shrink-0 mt-0.5",style:ue({backgroundColor:t.borderColor})},null,4),e("div",Je,[e("p",Xe,C(t.title),1),e("div",Ze,[e("span",null,C(w(t.start)),1),o[9]||(o[9]=e("span",null,"•",-1)),e("span",null,C(W(t.extendedProps.type)),1),t.extendedProps.assetName?(P(),I("span",et,"•")):Y("",!0),t.extendedProps.assetName?(P(),I("span",tt,C(t.extendedProps.assetName),1)):Y("",!0)])]),e("div",nt,[V(A(re),{variant:ae(t.extendedProps.priority),size:"xs"},{default:T(()=>[q(C(x(t.extendedProps.priority)),1)]),_:2},1032,["variant"])])],8,Ke))),128)),!A(j)&&A(N).length===0?(P(),I("div",rt," No upcoming events this week ")):Y("",!0)]))]),A(g).length>0?(P(),I("div",st,[e("h4",ot,[o[11]||(o[11]=e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L4.268 16.5c-.77.833.192 2.5 1.732 2.5z"})],-1)),q(" Overdue ("+C(A(g).length)+") ",1)]),e("div",at,[(P(!0),I(se,null,oe(A(g).slice(0,3),t=>(P(),I("div",{key:t.id,class:"flex items-start space-x-3 p-3 bg-red-50 border border-red-100 rounded-lg hover:bg-red-100 transition-colors cursor-pointer",onClick:v=>s(t)},[o[14]||(o[14]=e("div",{class:"w-3 h-3 rounded-full flex-shrink-0 mt-0.5 bg-red-500"},null,-1)),e("div",lt,[e("p",ct,C(t.title),1),e("div",dt,[e("span",null,C(O(t.start)),1),o[12]||(o[12]=e("span",null,"•",-1)),e("span",null,C(W(t.extendedProps.type)),1)])]),V(A(re),{variant:"error",size:"xs"},{default:T(()=>o[13]||(o[13]=[q("Overdue",-1)])),_:1,__:[13]})],8,it))),128)),A(g).length>3?(P(),I("div",ut,[V(i,{to:"/calendar?filter=overdue",class:"text-xs text-red-600 hover:text-red-700 font-medium"},{default:T(()=>[q(" View "+C(A(g).length-3)+" more overdue items → ",1)]),_:1})])):Y("",!0)])])):Y("",!0),e("div",ft,[e("div",vt,[e("div",gt,C(A(F).today),1),o[15]||(o[15]=e("div",{class:"text-xs text-gray-500"},"Today",-1))]),e("div",yt,[e("div",mt,C(A(F).upcoming),1),o[16]||(o[16]=e("div",{class:"text-xs text-gray-500"},"This Week",-1))])]),V(A(be),{modelValue:R.value,"onUpdate:modelValue":o[0]||(o[0]=t=>R.value=t),title:((c=S.value)==null?void 0:c.title)||"Event Details",size:"md",onConfirm:D,onCancel:m,"confirm-text":S.value?Q((u=S.value.extendedProps)==null?void 0:u.type):"Close","cancel-text":"Close"},{default:T(()=>{var t,v,h,E,te,ie,Z;return[S.value?(P(),I("div",ht,[e("div",pt,[V(A(re),{variant:fe((t=S.value.extendedProps)==null?void 0:t.type)},{default:T(()=>{var ee;return[q(C(W((ee=S.value.extendedProps)==null?void 0:ee.type)),1)]}),_:1},8,["variant"]),(v=S.value.extendedProps)!=null&&v.priority?(P(),ce(A(re),{key:0,variant:ae(S.value.extendedProps.priority)},{default:T(()=>[q(C(x(S.value.extendedProps.priority)),1)]),_:1},8,["variant"])):Y("",!0),(h=S.value.extendedProps)!=null&&h.status?(P(),ce(A(re),{key:1,variant:ve(S.value.extendedProps.status)},{default:T(()=>[q(C($(S.value.extendedProps.status)),1)]),_:1},8,["variant"])):Y("",!0)]),e("div",wt,[e("div",null,[o[17]||(o[17]=e("strong",null,"Time:",-1)),q(" "+C(n(S.value.start))+" at "+C(r(S.value.start)),1)]),(E=S.value.extendedProps)!=null&&E.description?(P(),I("div",xt,[o[18]||(o[18]=e("strong",null,"Description:",-1)),q(" "+C(S.value.extendedProps.description),1)])):Y("",!0),(te=S.value.extendedProps)!=null&&te.assetName?(P(),I("div",kt,[o[19]||(o[19]=e("strong",null,"Asset:",-1)),q(" "+C(S.value.extendedProps.assetName),1)])):Y("",!0),(ie=S.value.extendedProps)!=null&&ie.location?(P(),I("div",Ot,[o[20]||(o[20]=e("strong",null,"Location:",-1)),q(" "+C(S.value.extendedProps.location),1)])):Y("",!0),(Z=S.value.extendedProps)!=null&&Z.frequency?(P(),I("div",St,[o[21]||(o[21]=e("strong",null,"Frequency:",-1)),q(" "+C(S.value.extendedProps.frequency),1)])):Y("",!0)])])):Y("",!0)]}),_:1},8,["modelValue","title","confirm-text"])]}),_:1})}}},bt=me(Dt,[["__scopeId","data-v-9772e3c3"]]),_t={class:"space-y-8 p-6"},Ct={class:"grid grid-cols-1 lg:grid-cols-3 gap-8"},Et={class:"lg:col-span-2"},Pt={class:"flex items-center justify-between mb-6"},At={key:0,class:"flex justify-center py-8"},It={key:1,class:"text-center py-8 text-gray-500"},Nt={key:2,class:"space-y-4"},$t={class:"flex-1"},Mt={class:"font-medium text-gray-900"},Ft={class:"text-sm text-gray-600 mt-1"},Lt={class:"flex items-center mt-2 space-x-4"},Tt={class:"text-right text-sm text-gray-500"},jt={class:"mt-1"},Wt={class:"space-y-6"},zt={class:"grid grid-cols-1 lg:grid-cols-2 gap-8"},Rt={class:"space-y-3"},Bt={class:"space-y-4"},qt={class:"flex items-center justify-between"},Ut={class:"flex items-center"},Vt={class:"text-sm font-medium mr-2"},Ht={class:"w-16 bg-gray-200 rounded-full h-2"},Yt={class:"flex items-center justify-between"},Gt={class:"flex items-center"},Qt={class:"text-sm font-medium mr-2"},Kt={class:"w-16 bg-gray-200 rounded-full h-2"},Jt={__name:"DashboardView",setup(d){const p={template:` + + + + `},L={template:` + + + + `},N={template:` + + + + `},M={template:` + + + + `},g=Ae(),F=Oe(),U=z(!1),j=z(!1),b=G(()=>{var s;const l=g.workOrders;return{total:l.length,open:l.filter(m=>m.status==="OPEN").length,inProgress:l.filter(m=>m.status==="IN_PROGRESS").length,completed:l.filter(m=>m.status==="COMPLETED").length,critical:l.filter(m=>m.priority==="CRITICAL").length,overdue:((s=g.overdueWorkOrders)==null?void 0:s.length)||0}}),k=G(()=>{const l=F.assets;return{total:l.length,operational:l.filter(s=>s.status==="OPERATIONAL").length,down:l.filter(s=>s.status==="DOWN").length,maintenance:l.filter(s=>s.status==="MAINTENANCE").length}}),H=G(()=>[{name:"Work Orders",value:b.value.total,subtitle:`${b.value.open} open`,icon:p,iconBg:"bg-blue-100",iconColor:"text-blue-600",change:12},{name:"Assets",value:k.value.total,subtitle:`${k.value.operational} operational`,icon:L,iconBg:"bg-green-100",iconColor:"text-green-600",change:5},{name:"Critical Issues",value:b.value.critical,subtitle:"Needs attention",icon:N,iconBg:"bg-red-100",iconColor:"text-red-600",change:-8},{name:"Overdue Tasks",value:b.value.overdue,subtitle:"Past due date",icon:M,iconBg:"bg-yellow-100",iconColor:"text-yellow-600",change:-15}]),S=G(()=>g.workOrders.slice().sort((l,s)=>new Date(s.createdAt)-new Date(l.createdAt)).slice(0,5)),R=l=>({OPEN:"bg-blue-100 text-blue-800",IN_PROGRESS:"bg-yellow-100 text-yellow-800",COMPLETED:"bg-green-100 text-green-800",CANCELLED:"bg-gray-100 text-gray-800"})[l]||"bg-gray-100 text-gray-800",K=l=>({LOW:"bg-gray-100 text-gray-800",MEDIUM:"bg-blue-100 text-blue-800",HIGH:"bg-orange-100 text-orange-800",CRITICAL:"bg-red-100 text-red-800"})[l]||"bg-gray-100 text-gray-800",X=l=>l.replace("_"," ").toLowerCase().replace(/\b\w/g,s=>s.toUpperCase()),J=l=>l.toLowerCase().replace(/\b\w/g,s=>s.toUpperCase()),a=l=>new Date(l).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}),y=async()=>{await _()},_=async()=>{try{U.value=!0,j.value=!0,await Promise.all([g.fetchWorkOrders({page:0,size:20}),F.fetchAssets({page:0,size:10})])}catch(l){console.error("Failed to load dashboard data:",l)}finally{U.value=!1,j.value=!1}};return ye(()=>{_()}),(l,s)=>{const m=he("router-link");return P(),ce(Se,null,{header:T(()=>[V(De,{title:"Dashboard",description:"Overview of your facility management operations",breadcrumbs:[{text:"Dashboard",to:null}]},{actions:T(()=>[V(A(le),{variant:"primary",size:"sm",onClick:y},{default:T(()=>s[3]||(s[3]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),q(" Refresh ",-1)])),_:1,__:[3]})]),stats:T(()=>[V(A(Ce),{stats:H.value},null,8,["stats"])]),_:1})]),default:T(()=>[e("div",_t,[e("div",Ct,[e("div",Et,[V(A(de),{padding:"lg"},{default:T(()=>[e("div",Pt,[s[5]||(s[5]=e("h3",{class:"text-lg font-semibold text-gray-900"},"Recent Work Orders",-1)),V(m,{to:"/work-orders",class:"text-sm text-primary-600 hover:text-primary-700 font-medium"},{default:T(()=>s[4]||(s[4]=[q(" View All → ",-1)])),_:1,__:[4]})]),U.value?(P(),I("div",At,s[6]||(s[6]=[e("div",{class:"animate-spin rounded-full h-8 w-8 border-b-2 border-primary-600"},null,-1)]))):S.value.length===0?(P(),I("div",It," No work orders found ")):(P(),I("div",Nt,[(P(!0),I(se,null,oe(S.value,D=>(P(),I("div",{key:D.id,class:"flex items-center justify-between p-4 border border-gray-200 rounded hover:bg-gray-50 transition-colors"},[e("div",$t,[e("h4",Mt,C(D.title),1),e("p",Ft,C(D.description),1),e("div",Lt,[e("span",{class:ge([R(D.status),"px-2 py-1 text-xs font-medium rounded"])},C(X(D.status)),3),e("span",{class:ge([K(D.priority),"px-2 py-1 text-xs font-medium rounded"])},C(J(D.priority)),3)])]),e("div",Tt,[e("p",null,C(a(D.createdAt)),1),e("p",jt,C(D.assignee||"Unassigned"),1)])]))),128))]))]),_:1})]),e("div",Wt,[V(bt)])]),e("div",zt,[V(A(de),{padding:"lg"},{default:T(()=>[s[10]||(s[10]=e("h3",{class:"text-lg font-semibold text-gray-900 mb-4"},"Quick Actions",-1)),e("div",Rt,[V(A(le),{variant:"primary",size:"sm",block:"",onClick:s[0]||(s[0]=()=>l.$router.push("/work-orders/create"))},{default:T(()=>s[7]||(s[7]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),q(" Create Work Order ",-1)])),_:1,__:[7]}),V(A(le),{variant:"secondary",size:"sm",block:"",onClick:s[1]||(s[1]=()=>l.$router.push("/assets"))},{default:T(()=>s[8]||(s[8]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),q(" Add Asset ",-1)])),_:1,__:[8]}),V(A(le),{variant:"outline",size:"sm",block:"",onClick:s[2]||(s[2]=()=>l.$router.push("/reports"))},{default:T(()=>s[9]||(s[9]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"})],-1),q(" View Reports ",-1)])),_:1,__:[9]})])]),_:1,__:[10]}),V(A(de),{padding:"lg"},{default:T(()=>[s[14]||(s[14]=e("h3",{class:"text-lg font-semibold text-gray-900 mb-4"},"System Status",-1)),e("div",Bt,[e("div",qt,[s[11]||(s[11]=e("span",{class:"text-sm text-gray-600"},"Assets Operational",-1)),e("div",Ut,[e("span",Vt,C(k.value.total>0?Math.round(k.value.operational/k.value.total*100):0)+"% ",1),e("div",Ht,[e("div",{class:"bg-green-500 h-2 rounded-full transition-all duration-300",style:ue({width:`${k.value.total>0?k.value.operational/k.value.total*100:0}%`})},null,4)])])]),e("div",Yt,[s[12]||(s[12]=e("span",{class:"text-sm text-gray-600"},"Work Order Completion",-1)),e("div",Gt,[e("span",Qt,C(b.value.total>0?Math.round(b.value.completed/b.value.total*100):0)+"% ",1),e("div",Kt,[e("div",{class:"bg-blue-500 h-2 rounded-full transition-all duration-300",style:ue({width:`${b.value.total>0?b.value.completed/b.value.total*100:0}%`})},null,4)])])]),s[13]||(s[13]=e("div",{class:"flex items-center justify-between"},[e("span",{class:"text-sm text-gray-600"},"System Health"),e("span",{class:"px-2 py-1 bg-green-100 text-green-700 text-xs font-medium rounded"}," Excellent ")],-1))])]),_:1,__:[14]})])])]),_:1})}}},un=me(Jt,[["__scopeId","data-v-77944288"]]);export{un as default}; diff --git a/frontend/dist/assets/DigitalSignature-B20bSUAg.js b/frontend/dist/assets/DigitalSignature-CzkShzQj.js similarity index 84% rename from frontend/dist/assets/DigitalSignature-B20bSUAg.js rename to frontend/dist/assets/DigitalSignature-CzkShzQj.js index 10b939ea..b750e98a 100644 --- a/frontend/dist/assets/DigitalSignature-B20bSUAg.js +++ b/frontend/dist/assets/DigitalSignature-CzkShzQj.js @@ -1 +1 @@ -import{_ as J,r as c,c as Q,o as G,ac as U,a as d,g as n,b as t,j as v,k as m,t as i,i as q,d as y,w as f,e as g,F as p,aS as I,ae as X,aT as K,aU as Z,af as ee,aQ as te}from"./index-BUdRbiwj.js";import{F as se}from"./FPInput-CzR_dWoe.js";import{F as ae}from"./FPBadge-BKY5dPnL.js";const le={class:"digital-signature"},oe={class:"flex items-center justify-between mb-4"},ie={key:0,class:"flex items-center text-sm text-green-600"},ne={key:0,class:"mb-6"},re={class:"border border-gray-200 rounded-lg p-4 bg-gray-50"},de={class:"flex items-start justify-between"},ue={class:"flex-1"},ce={class:"mb-4"},ve=["src"],me={class:"grid grid-cols-1 md:grid-cols-3 gap-4 text-sm"},ge={class:"text-gray-600"},fe={class:"text-xs text-gray-500"},be={class:"text-gray-600"},xe={class:"text-xs text-gray-500"},ye={class:"text-gray-600"},pe={class:"text-xs text-gray-500"},he={key:0,class:"mt-4"},we={class:"text-gray-600 text-sm mt-1"},ke={class:"ml-4 flex flex-col space-y-2"},_e={key:1,class:"space-y-4"},Ce={class:"signature-canvas-container"},Se={class:"flex items-center justify-between"},De={class:"flex space-x-2"},Be={class:"flex items-center space-x-2"},Ve={class:"flex items-center space-x-2"},Me={class:"flex space-x-2"},Ne={key:2,class:"mt-8"},Te={class:"space-y-2"},je={class:"flex items-center justify-between"},Ae={class:"flex items-center space-x-3"},Pe=["src"],ze={class:"text-sm font-medium text-gray-900"},He={class:"text-xs text-gray-500"},Fe={key:3,class:"mt-6"},Le={class:"flex items-center justify-between mb-2"},M=600,N=200,Re={__name:"DigitalSignature",props:{modelValue:{type:Object,default:()=>({signatureData:null,signedBy:null,signedAt:null,comments:"",ipAddress:null,userAgent:null})},currentUser:{type:Object,required:!0},disabled:{type:Boolean,default:!1},allowReSign:{type:Boolean,default:!0},signatureHistory:{type:Array,default:()=>[]}},emits:["update:modelValue","signature-saved"],setup(h,{emit:Ue}){const b=h,o=c({...b.modelValue}),x=c(!b.modelValue.signatureData),C=c(b.modelValue.comments||""),S=c(null),D=c(!1),w=c(!1),B=c(3),V=c("#000000");let a=null;Q(()=>w.value&&!b.disabled);const j=()=>{S.value&&(a=S.value.getContext("2d"),a.lineCap="round",a.lineJoin="round",a.strokeStyle=V.value,a.lineWidth=B.value,a.fillStyle="white",a.fillRect(0,0,M,N))},A=s=>{const e=S.value.getBoundingClientRect(),k=M/e.width,u=N/e.height;let r,l;return s.touches&&s.touches.length>0?(r=s.touches[0].clientX,l=s.touches[0].clientY):(r=s.clientX,l=s.clientY),{x:(r-e.left)*k,y:(l-e.top)*u}},P=s=>{if(b.disabled)return;s.preventDefault(),D.value=!0;const e=A(s);a.beginPath(),a.moveTo(e.x,e.y)},z=s=>{if(!D.value||b.disabled)return;s.preventDefault();const e=A(s);a.lineTo(e.x,e.y),a.stroke(),w.value=!0},T=s=>{D.value&&(s.preventDefault(),D.value=!1,a.closePath())},H=()=>{a&&(a.fillStyle="white",a.fillRect(0,0,M,N),w.value=!1)},Y=()=>{a&&(a.lineWidth=parseInt(B.value))},$=()=>{a&&(a.strokeStyle=V.value)},E=()=>{x.value=!0,C.value=o.value.comments||"",U(()=>{j(),H()})},O=()=>{x.value=!1,C.value=o.value.comments||""},F=s=>s?new Date(s).toLocaleString("en-US",{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",hour12:!0}):"Not signed",W=s=>{if(!s)return"";const e=new Date(s),u=new Date-e,r=Math.floor(u/(1e3*60)),l=Math.floor(u/(1e3*60*60)),_=Math.floor(u/(1e3*60*60*24));return r<60?`${r} minutes ago`:l<24?`${l} hours ago`:`${_} days ago`};return G(()=>{x.value&&U(()=>{j()})}),(s,e)=>{var k,u,r;return n(),d("div",le,[t("div",oe,[e[4]||(e[4]=t("div",null,[t("h3",{class:"text-lg font-medium text-gray-900"},"Digital Signature"),t("p",{class:"text-sm text-gray-600"},"Required for work order completion")],-1)),o.value.signatureData?(n(),d("div",ie,e[3]||(e[3]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M5 13l4 4L19 7"})],-1),m(" Signed ",-1)]))):v("",!0)]),o.value.signatureData&&!x.value?(n(),d("div",ne,[t("div",re,[t("div",de,[t("div",ue,[t("div",ce,[t("img",{src:o.value.signatureData,alt:"Digital Signature",class:"max-w-full h-auto border border-gray-300 rounded bg-white",style:{"max-height":"150px"}},null,8,ve)]),t("div",me,[t("div",null,[e[5]||(e[5]=t("div",{class:"font-medium text-gray-900"},"Signed By",-1)),t("div",ge,i((k=o.value.signedBy)==null?void 0:k.firstName)+" "+i((u=o.value.signedBy)==null?void 0:u.lastName),1),t("div",fe,i((r=o.value.signedBy)==null?void 0:r.email),1)]),t("div",null,[e[6]||(e[6]=t("div",{class:"font-medium text-gray-900"},"Date & Time",-1)),t("div",be,i(F(o.value.signedAt)),1),t("div",xe,i(W(o.value.signedAt)),1)]),t("div",null,[e[7]||(e[7]=t("div",{class:"font-medium text-gray-900"},"IP Address",-1)),t("div",ye,i(o.value.ipAddress||"Not recorded"),1),t("div",pe,i(o.value.userAgent?"Browser tracked":"No tracking"),1)])]),o.value.comments?(n(),d("div",he,[e[8]||(e[8]=t("div",{class:"font-medium text-gray-900 text-sm"},"Comments",-1)),t("div",we,i(o.value.comments),1)])):v("",!0)]),t("div",ke,[!h.disabled&&h.allowReSign?(n(),q(g(p),{key:0,variant:"outline",size:"sm",onClick:E},{default:f(()=>e[9]||(e[9]=[m(" Re-sign ",-1)])),_:1,__:[9]})):v("",!0),y(g(p),{variant:"outline",size:"sm",onClick:s.handleDownloadSignature},{default:f(()=>e[10]||(e[10]=[m(" Download ",-1)])),_:1,__:[10]},8,["onClick"])])])])])):v("",!0),!o.value.signatureData||x.value?(n(),d("div",_e,[e[18]||(e[18]=I('

How to sign

  • Use your mouse or finger to draw your signature in the box below
  • Make sure your signature is clear and readable
  • Click "Clear" to start over if needed
  • Add optional comments about the work completion
',1)),t("div",Ce,[t("canvas",{ref_key:"signatureCanvas",ref:S,class:"signature-canvas border-2 border-gray-300 rounded-lg bg-white cursor-crosshair",width:"600",height:"200",onMousedown:P,onMousemove:z,onMouseup:T,onMouseleave:T,onTouchstart:P,onTouchmove:z,onTouchend:T},null,544),t("div",{class:"mt-2 text-xs text-gray-500 text-center"},i(M)+"x"+i(N)+" pixels • Click and drag to sign ")]),t("div",Se,[t("div",De,[y(g(p),{variant:"outline",size:"sm",onClick:H,disabled:!w.value},{default:f(()=>e[11]||(e[11]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1),m(" Clear ",-1)])),_:1,__:[11]},8,["disabled"]),t("div",Be,[e[13]||(e[13]=t("label",{class:"text-sm text-gray-600"},"Pen Size:",-1)),X(t("select",{"onUpdate:modelValue":e[0]||(e[0]=l=>B.value=l),class:"text-sm border border-gray-300 rounded px-2 py-1",onChange:Y},e[12]||(e[12]=[t("option",{value:"2"},"Fine",-1),t("option",{value:"3"},"Normal",-1),t("option",{value:"4"},"Thick",-1)]),544),[[K,B.value]])]),t("div",Ve,[e[14]||(e[14]=t("label",{class:"text-sm text-gray-600"},"Color:",-1)),X(t("input",{"onUpdate:modelValue":e[1]||(e[1]=l=>V.value=l),type:"color",class:"w-8 h-8 border border-gray-300 rounded cursor-pointer",onChange:$},null,544),[[Z,V.value]])])]),t("div",Me,[x.value&&o.value.signatureData?(n(),q(g(p),{key:0,variant:"outline",onClick:O},{default:f(()=>e[15]||(e[15]=[m(" Cancel ",-1)])),_:1,__:[15]})):v("",!0),y(g(p),{variant:"primary",onClick:s.handleSaveSignature,disabled:!w.value||h.disabled||s.loading},{default:f(()=>e[16]||(e[16]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M5 13l4 4L19 7"})],-1),m(" Save Signature ",-1)])),_:1,__:[16]},8,["onClick","disabled"])])]),t("div",null,[e[17]||(e[17]=t("label",{class:"block text-sm font-medium text-gray-700 mb-2"}," Comments (Optional) ",-1)),y(g(se),{modelValue:C.value,"onUpdate:modelValue":e[2]||(e[2]=l=>C.value=l),type:"textarea",rows:"3",placeholder:"Add any comments about the work completion...",disabled:h.disabled},null,8,["modelValue","disabled"])]),e[19]||(e[19]=I('

Legal Notice

By providing your digital signature, you acknowledge that the work described in this work order has been completed according to specifications and requirements. This signature has the same legal effect as a handwritten signature.

',1))])):v("",!0),s.effectiveSignatureHistory.length>0?(n(),d("div",Ne,[e[20]||(e[20]=t("h4",{class:"text-sm font-medium text-gray-900 mb-3"},"Signature History",-1)),t("div",Te,[(n(!0),d(ee,null,te(s.effectiveSignatureHistory,(l,_)=>{var L,R;return n(),d("div",{key:l.id||_,class:"p-3 border border-gray-200 rounded-lg bg-gray-50"},[t("div",je,[t("div",Ae,[t("img",{src:l.signatureData,alt:"Historical Signature",class:"w-16 h-8 border border-gray-300 rounded bg-white"},null,8,Pe),t("div",null,[t("div",ze,i((L=l.signedBy)==null?void 0:L.firstName)+" "+i((R=l.signedBy)==null?void 0:R.lastName),1),t("div",He,i(F(l.signedAt)),1)])]),y(g(ae),{variant:"secondary",size:"sm"},{default:f(()=>[m(i(_===0?"Previous":`${_+1} versions ago`),1)]),_:2},1024)])])}),128))])])):v("",!0),s.enableValidation&&s.signatureExists?(n(),d("div",Fe,[t("div",Le,[e[22]||(e[22]=t("h4",{class:"text-sm font-medium text-gray-900"},"Signature Validation",-1)),y(g(p),{variant:"outline",size:"sm",onClick:s.handleValidateSignature,disabled:s.loading},{default:f(()=>e[21]||(e[21]=[m(" Validate ",-1)])),_:1,__:[21]},8,["onClick","disabled"])])])):v("",!0)])}}},Ye=J(Re,[["__scopeId","data-v-31ea104b"]]);export{Ye as D}; +import{_ as J,r as c,c as G,o as K,ac as U,a as d,g as n,b as t,j as v,k as m,t as i,i as q,d as y,w as f,e as g,F as p,aT as I,ae as X,aU as Q,aV as Z,af as ee,aR as te}from"./index-QAlcqU00.js";import{F as se}from"./FPInput-D5RURom0.js";import{F as ae}from"./FPBadge-DvOitM1C.js";const le={class:"digital-signature"},oe={class:"flex items-center justify-between mb-4"},ie={key:0,class:"flex items-center text-sm text-green-600"},ne={key:0,class:"mb-6"},re={class:"border border-gray-200 rounded-lg p-4 bg-gray-50"},de={class:"flex items-start justify-between"},ue={class:"flex-1"},ce={class:"mb-4"},ve=["src"],me={class:"grid grid-cols-1 md:grid-cols-3 gap-4 text-sm"},ge={class:"text-gray-600"},fe={class:"text-xs text-gray-500"},be={class:"text-gray-600"},xe={class:"text-xs text-gray-500"},ye={class:"text-gray-600"},pe={class:"text-xs text-gray-500"},he={key:0,class:"mt-4"},we={class:"text-gray-600 text-sm mt-1"},ke={class:"ml-4 flex flex-col space-y-2"},_e={key:1,class:"space-y-4"},Ce={class:"signature-canvas-container"},De={class:"flex items-center justify-between"},Se={class:"flex space-x-2"},Be={class:"flex items-center space-x-2"},Ve={class:"flex items-center space-x-2"},Me={class:"flex space-x-2"},Ne={key:2,class:"mt-8"},Te={class:"space-y-2"},je={class:"flex items-center justify-between"},Ae={class:"flex items-center space-x-3"},Pe=["src"],ze={class:"text-sm font-medium text-gray-900"},He={class:"text-xs text-gray-500"},Re={key:3,class:"mt-6"},Fe={class:"flex items-center justify-between mb-2"},M=600,N=200,Le={__name:"DigitalSignature",props:{modelValue:{type:Object,default:()=>({signatureData:null,signedBy:null,signedAt:null,comments:"",ipAddress:null,userAgent:null})},currentUser:{type:Object,required:!0},disabled:{type:Boolean,default:!1},allowReSign:{type:Boolean,default:!0},signatureHistory:{type:Array,default:()=>[]}},emits:["update:modelValue","signature-saved"],setup(h,{emit:Ue}){const b=h,o=c({...b.modelValue}),x=c(!b.modelValue.signatureData),C=c(b.modelValue.comments||""),D=c(null),S=c(!1),w=c(!1),B=c(3),V=c("#000000");let a=null;G(()=>w.value&&!b.disabled);const j=()=>{D.value&&(a=D.value.getContext("2d"),a.lineCap="round",a.lineJoin="round",a.strokeStyle=V.value,a.lineWidth=B.value,a.fillStyle="white",a.fillRect(0,0,M,N))},A=s=>{const e=D.value.getBoundingClientRect(),k=M/e.width,u=N/e.height;let r,l;return s.touches&&s.touches.length>0?(r=s.touches[0].clientX,l=s.touches[0].clientY):(r=s.clientX,l=s.clientY),{x:(r-e.left)*k,y:(l-e.top)*u}},P=s=>{if(b.disabled)return;s.preventDefault(),S.value=!0;const e=A(s);a.beginPath(),a.moveTo(e.x,e.y)},z=s=>{if(!S.value||b.disabled)return;s.preventDefault();const e=A(s);a.lineTo(e.x,e.y),a.stroke(),w.value=!0},T=s=>{S.value&&(s.preventDefault(),S.value=!1,a.closePath())},H=()=>{a&&(a.fillStyle="white",a.fillRect(0,0,M,N),w.value=!1)},Y=()=>{a&&(a.lineWidth=parseInt(B.value))},$=()=>{a&&(a.strokeStyle=V.value)},E=()=>{x.value=!0,C.value=o.value.comments||"",U(()=>{j(),H()})},O=()=>{x.value=!1,C.value=o.value.comments||""},R=s=>s?new Date(s).toLocaleString("en-US",{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",hour12:!0}):"Not signed",W=s=>{if(!s)return"";const e=new Date(s),u=new Date-e,r=Math.floor(u/(1e3*60)),l=Math.floor(u/(1e3*60*60)),_=Math.floor(u/(1e3*60*60*24));return r<60?`${r} minutes ago`:l<24?`${l} hours ago`:`${_} days ago`};return K(()=>{x.value&&U(()=>{j()})}),(s,e)=>{var k,u,r;return n(),d("div",le,[t("div",oe,[e[4]||(e[4]=t("div",null,[t("h3",{class:"text-lg font-medium text-gray-900"},"Digital Signature"),t("p",{class:"text-sm text-gray-600"},"Required for work order completion")],-1)),o.value.signatureData?(n(),d("div",ie,e[3]||(e[3]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M5 13l4 4L19 7"})],-1),m(" Signed ",-1)]))):v("",!0)]),o.value.signatureData&&!x.value?(n(),d("div",ne,[t("div",re,[t("div",de,[t("div",ue,[t("div",ce,[t("img",{src:o.value.signatureData,alt:"Digital Signature",class:"max-w-full h-auto border border-gray-300 rounded bg-white",style:{"max-height":"150px"}},null,8,ve)]),t("div",me,[t("div",null,[e[5]||(e[5]=t("div",{class:"font-medium text-gray-900"},"Signed By",-1)),t("div",ge,i((k=o.value.signedBy)==null?void 0:k.firstName)+" "+i((u=o.value.signedBy)==null?void 0:u.lastName),1),t("div",fe,i((r=o.value.signedBy)==null?void 0:r.email),1)]),t("div",null,[e[6]||(e[6]=t("div",{class:"font-medium text-gray-900"},"Date & Time",-1)),t("div",be,i(R(o.value.signedAt)),1),t("div",xe,i(W(o.value.signedAt)),1)]),t("div",null,[e[7]||(e[7]=t("div",{class:"font-medium text-gray-900"},"IP Address",-1)),t("div",ye,i(o.value.ipAddress||"Not recorded"),1),t("div",pe,i(o.value.userAgent?"Browser tracked":"No tracking"),1)])]),o.value.comments?(n(),d("div",he,[e[8]||(e[8]=t("div",{class:"font-medium text-gray-900 text-sm"},"Comments",-1)),t("div",we,i(o.value.comments),1)])):v("",!0)]),t("div",ke,[!h.disabled&&h.allowReSign?(n(),q(g(p),{key:0,variant:"outline",size:"sm",onClick:E},{default:f(()=>e[9]||(e[9]=[m(" Re-sign ",-1)])),_:1,__:[9]})):v("",!0),y(g(p),{variant:"outline",size:"sm",onClick:s.handleDownloadSignature},{default:f(()=>e[10]||(e[10]=[m(" Download ",-1)])),_:1,__:[10]},8,["onClick"])])])])])):v("",!0),!o.value.signatureData||x.value?(n(),d("div",_e,[e[18]||(e[18]=I('

How to sign

  • Use your mouse or finger to draw your signature in the box below
  • Make sure your signature is clear and readable
  • Click "Clear" to start over if needed
  • Add optional comments about the work completion
',1)),t("div",Ce,[t("canvas",{ref_key:"signatureCanvas",ref:D,class:"signature-canvas border-2 border-gray-300 rounded-lg bg-white cursor-crosshair",width:"600",height:"200",onMousedown:P,onMousemove:z,onMouseup:T,onMouseleave:T,onTouchstart:P,onTouchmove:z,onTouchend:T},null,544),t("div",{class:"mt-2 text-xs text-gray-500 text-center"},i(M)+"x"+i(N)+" pixels • Click and drag to sign ")]),t("div",De,[t("div",Se,[y(g(p),{variant:"outline",size:"sm",onClick:H,disabled:!w.value},{default:f(()=>e[11]||(e[11]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1),m(" Clear ",-1)])),_:1,__:[11]},8,["disabled"]),t("div",Be,[e[13]||(e[13]=t("label",{class:"text-sm text-gray-600"},"Pen Size:",-1)),X(t("select",{"onUpdate:modelValue":e[0]||(e[0]=l=>B.value=l),class:"text-sm border border-gray-300 rounded px-2 py-1",onChange:Y},e[12]||(e[12]=[t("option",{value:"2"},"Fine",-1),t("option",{value:"3"},"Normal",-1),t("option",{value:"4"},"Thick",-1)]),544),[[Q,B.value]])]),t("div",Ve,[e[14]||(e[14]=t("label",{class:"text-sm text-gray-600"},"Color:",-1)),X(t("input",{"onUpdate:modelValue":e[1]||(e[1]=l=>V.value=l),type:"color",class:"w-8 h-8 border border-gray-300 rounded cursor-pointer",onChange:$},null,544),[[Z,V.value]])])]),t("div",Me,[x.value&&o.value.signatureData?(n(),q(g(p),{key:0,variant:"outline",onClick:O},{default:f(()=>e[15]||(e[15]=[m(" Cancel ",-1)])),_:1,__:[15]})):v("",!0),y(g(p),{variant:"primary",onClick:s.handleSaveSignature,disabled:!w.value||h.disabled||s.loading},{default:f(()=>e[16]||(e[16]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M5 13l4 4L19 7"})],-1),m(" Save Signature ",-1)])),_:1,__:[16]},8,["onClick","disabled"])])]),t("div",null,[e[17]||(e[17]=t("label",{class:"block text-sm font-medium text-gray-700 mb-2"}," Comments (Optional) ",-1)),y(g(se),{modelValue:C.value,"onUpdate:modelValue":e[2]||(e[2]=l=>C.value=l),type:"textarea",rows:"3",placeholder:"Add any comments about the work completion...",disabled:h.disabled},null,8,["modelValue","disabled"])]),e[19]||(e[19]=I('

Legal Notice

By providing your digital signature, you acknowledge that the work described in this work order has been completed according to specifications and requirements. This signature has the same legal effect as a handwritten signature.

',1))])):v("",!0),s.effectiveSignatureHistory.length>0?(n(),d("div",Ne,[e[20]||(e[20]=t("h4",{class:"text-sm font-medium text-gray-900 mb-3"},"Signature History",-1)),t("div",Te,[(n(!0),d(ee,null,te(s.effectiveSignatureHistory,(l,_)=>{var F,L;return n(),d("div",{key:l.id||_,class:"p-3 border border-gray-200 rounded-lg bg-gray-50"},[t("div",je,[t("div",Ae,[t("img",{src:l.signatureData,alt:"Historical Signature",class:"w-16 h-8 border border-gray-300 rounded bg-white"},null,8,Pe),t("div",null,[t("div",ze,i((F=l.signedBy)==null?void 0:F.firstName)+" "+i((L=l.signedBy)==null?void 0:L.lastName),1),t("div",He,i(R(l.signedAt)),1)])]),y(g(ae),{variant:"secondary",size:"sm"},{default:f(()=>[m(i(_===0?"Previous":`${_+1} versions ago`),1)]),_:2},1024)])])}),128))])])):v("",!0),s.enableValidation&&s.signatureExists?(n(),d("div",Re,[t("div",Fe,[e[22]||(e[22]=t("h4",{class:"text-sm font-medium text-gray-900"},"Signature Validation",-1)),y(g(p),{variant:"outline",size:"sm",onClick:s.handleValidateSignature,disabled:s.loading},{default:f(()=>e[21]||(e[21]=[m(" Validate ",-1)])),_:1,__:[21]},8,["onClick","disabled"])])])):v("",!0)])}}},Ye=J(Le,[["__scopeId","data-v-31ea104b"]]);export{Ye as D}; diff --git a/frontend/dist/assets/DocumentDetailView-Bon7Yp5Y.js b/frontend/dist/assets/DocumentDetailView-Bon7Yp5Y.js new file mode 100644 index 00000000..72661230 --- /dev/null +++ b/frontend/dist/assets/DocumentDetailView-Bon7Yp5Y.js @@ -0,0 +1 @@ +import{r as L,c as T,m as ge,o as we,i as Z,g as r,w as _,d as h,b as e,e as t,h as ue,t as u,ae as me,a as d,j as S,k as D,n as le,aV as pe,F as z,ac as he,Q as Ee,af as ae,aR as ie,aS as ke,s as Fe,v as ze}from"./index-QAlcqU00.js";import{D as ye,u as Be,a as Re,i as qe,g as Pe,d as Te,f as We,h as He}from"./useDocumentManagement-BJ6Z87hG.js";import{F as Oe,a as Je}from"./FPPageHeader-CFIwZZgQ.js";import{u as Ye}from"./useFormAutoSave-BrW9Wl2Q.js";import{F as xe}from"./FPModal-DMoPysvU.js";import{_ as Ge}from"./FormRestoreNotification-2Wflg1mH.js";import{F as oe}from"./FPInput-D5RURom0.js";import{F as ce}from"./FPSelect-j7n_x8eB.js";import{F as Ke}from"./FPCheckbox-DcRYwN3n.js";import{F as te}from"./FPBadge-DvOitM1C.js";import{F as Qe}from"./FPTabs-qq-Tmb7J.js";function _e(){const M=new ye,p=L([]),V=L(!1),f=L(null),a=async c=>{V.value=!0,f.value=null;try{const g=await M.getVersions(c);return p.value=g,g}catch(g){return f.value=g.message,p.value=[],console.error("Error loading document versions:",g),[]}finally{V.value=!1}},J=c=>(f.value=null,!c.versionNumber||c.versionNumber.trim().length===0?(f.value="Version number is required",!1):!c.changeDescription||c.changeDescription.trim().length===0?(f.value="Change description is required",!1):A(c.versionNumber)?!0:(f.value="Version number must follow semantic versioning (e.g., 1.0, 1.1, 2.0)",!1)),K=async(c,g)=>{if(f.value=null,!J(g))return null;try{const y=await M.createVersion(c,g);return p.value.push(y),y}catch(y){return f.value=y.message,console.error("Error creating document version:",y),null}},W=async(c,g)=>{f.value=null;try{const y=await M.setActiveVersion(c,g);return p.value.forEach(B=>{B.isActive=B.id===g}),y}catch(y){return f.value=y.message,console.error("Error setting active version:",y),null}},A=c=>!c||typeof c!="string"?!1:/^(\d+)\.(\d+)(?:\.(\d+))?$/.test(c.trim()),I=()=>p.value.find(c=>c.isActive)||null,Q=(c=!1)=>{if(p.value.length===0)return"1.0";const g=p.value.map(R=>R.versionNumber).filter(R=>A(R)).sort((R,v)=>{const[n,C=0]=R.split(".").map(Number),[N,O=0]=v.split(".").map(Number);return n!==N?N-n:O-C});if(g.length===0)return"1.0";const y=g[0],[B,H=0]=y.split(".").map(Number);return c?`${B+1}.0`:`${B}.${H+1}`},$=(c,g)=>{const y=new Date(c.createdAt),B=new Date(g.createdAt),H=Math.abs(B.getTime()-y.getTime()),R=Math.ceil(H/(1e3*3600*24)),v=B>y;return{older:v?c:g,newer:v?g:c,daysBetween:R,isNewerVersion:c.id!==g.id&&v}},E=T(()=>p.value.length>0),P=T(()=>p.value.length),F=T(()=>I());return{versions:p,versionsLoading:V,error:f,hasVersions:E,totalVersions:P,activeVersion:F,loadVersions:a,createVersion:K,setActiveVersion:W,validateVersionNumber:A,getActiveVersion:I,getNextVersionNumber:Q,compareVersions:$}}function Ae(){const M=new ye,p=L(null),V=L(!1),f=L(null),a=async v=>{V.value=!0,f.value=null;try{const n=await M.getApprovalWorkflow(v);return p.value=n,n}catch(n){return f.value=n.message,p.value=null,console.error("Error loading approval workflow:",n),null}finally{V.value=!1}},J=v=>{if(f.value=null,!v.approvers||v.approvers.length===0)return f.value="At least one approver is required",!1;for(const n of v.approvers)if(!n.userId||!n.role||n.order===void 0)return f.value="All approvers must have userId, role, and order",!1;return v.requiredApprovals&&v.requiredApprovals>v.approvers.length?(f.value="Required approvals cannot exceed number of approvers",!1):!0},K=async(v,n)=>{if(f.value=null,!J(n))return null;try{const C=await M.createApprovalWorkflow(v,n);return p.value=C,C}catch(C){return f.value=C.message,console.error("Error creating approval workflow:",C),null}},W=async v=>{f.value=null;try{return await M.submitForApproval(v)}catch(n){return f.value=n.message,console.error("Error submitting document for approval:",n),null}},A=(v,n=!1)=>{if(f.value=null,n){if(!v.reason||v.reason.trim().length===0)return f.value="Rejection reason is required",!1}else if(v.approved===void 0)return f.value="Approval decision (approved/rejected) is required",!1;return!0},I=async(v,n)=>{if(f.value=null,!A(n))return null;try{const C=await M.approveDocument(v,n);if(p.value&&C.success){const N=p.value.approvers.find(O=>O.userId===C.userId);N&&(N.status=n.approved?"approved":"rejected",N.comments=n.comments,N.approvedAt=new Date().toISOString())}return C}catch(C){return f.value=C.message,console.error("Error approving document:",C),null}},Q=async(v,n)=>{if(f.value=null,!A(n,!0))return null;try{const C=await M.rejectDocument(v,n);if(p.value&&C.success){const N=p.value.approvers.find(O=>O.userId===C.userId);N&&(N.status="rejected",N.comments=n.comments,N.rejectedAt=new Date().toISOString(),N.rejectionReason=n.reason)}return C}catch(C){return f.value=C.message,console.error("Error rejecting document:",C),null}},$=()=>{if(!p.value)return{totalApprovers:0,approvedCount:0,pendingCount:0,rejectedCount:0,requiredApprovals:0,isFullyApproved:!1,hasRejections:!1,progress:0};const v=p.value,n=v.approvers||[],C=n.filter(q=>q.status==="approved").length,N=n.filter(q=>q.status==="pending").length,O=n.filter(q=>q.status==="rejected").length,x=v.requiredApprovals||n.length,m=C>=x,b=O>0,Y=x>0?Math.min(100,C/x*100):0;return{totalApprovers:n.length,approvedCount:C,pendingCount:N,rejectedCount:O,requiredApprovals:x,isFullyApproved:m,hasRejections:b,progress:Y}},E=v=>{if(!p.value)return!1;const n=p.value.approvers.find(C=>C.userId===v);return!!(n&&n.status==="pending")},P=()=>p.value?p.value.approvers.filter(v=>v.status==="pending").sort((v,n)=>(v.order||0)-(n.order||0)):[],F=()=>{if(!p.value)return[];const v=[];return p.value.approvers.forEach(n=>{n.status!=="pending"&&v.push({id:n.id,userId:n.userId,userName:n.userName,action:n.status,comments:n.comments,reason:n.rejectionReason,timestamp:n.approvedAt||n.rejectedAt,role:n.role})}),v.sort((n,C)=>new Date(C.timestamp)-new Date(n.timestamp))},c=()=>{const v=$();return v.isFullyApproved||v.hasRejections},g=T(()=>p.value!==null),y=T(()=>$()),B=T(()=>P()),H=T(()=>F()),R=T(()=>c());return{approvalWorkflow:p,workflowLoading:V,error:f,hasWorkflow:g,approvalStatus:y,nextApprovers:B,approvalHistory:H,workflowComplete:R,loadApprovalWorkflow:a,createApprovalWorkflow:K,submitForApproval:W,approveDocument:I,rejectDocument:Q,getApprovalStatus:$,canUserApprove:E,getNextApprovers:P,getApprovalHistory:F,isWorkflowComplete:c}}const Xe={class:"space-y-4"},Ze={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},et={class:"text-xs text-gray-500"},tt={key:0,class:"mt-1 text-sm text-red-600"},st={class:"space-y-4"},ot={class:"space-y-4"},rt={class:"border-2 border-dashed border-gray-300 rounded-lg p-6"},nt={class:"text-center"},lt={key:0,class:"mx-auto h-12 w-12 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},at={key:1,class:"text-sm text-gray-900"},it={class:"flex items-center justify-center space-x-2"},dt={class:"font-medium"},ut={class:"text-gray-500"},ct={class:"mt-4"},vt={class:"bg-gray-50 border-t border-gray-200 px-6 py-4 -mx-6 -mb-6"},mt={class:"flex items-center justify-between"},pt={class:"flex items-center space-x-4"},ft={key:0,class:"flex items-center space-x-2"},gt={key:1,class:"flex items-center space-x-2"},yt={class:"text-sm text-gray-600"},xt={class:"flex items-center space-x-3"},bt={__name:"DocumentVersionModal",props:{open:{type:Boolean,default:!1},documentId:{type:Number,required:!0},documentTitle:{type:String,required:!0}},emits:["close","version-created"],setup(M,{emit:p}){const V=M,f=p,{createVersion:a,getNextVersionNumber:J,validateVersionNumber:K,error:W}=_e(),A=L({versionNumber:"",versionType:"minor",changeDescription:"",file:void 0}),I=L(!1),Q=L(!1),$=L({}),E=L(!1),P=[{value:"minor",label:"Minor Update"},{value:"major",label:"Major Update"},{value:"patch",label:"Patch/Hotfix"}],{hasUnsavedChanges:F,lastSaveTime:c,saveNow:g,restoreFormData:y,clearSavedData:B,hasSavedData:H,getSavedDataInfo:R,markUserInteraction:v,finishInitialization:n}=Ye(A,{storageKey:`atlas_document_version_form_${V.documentId}`,saveInterval:3e3,excludeFields:["file"]}),C=T(()=>A.value.versionNumber&&A.value.changeDescription&&K(A.value.versionNumber)&&!Object.keys($.value).length),N=()=>{A.value={versionNumber:J(),versionType:"minor",changeDescription:"",file:void 0},$.value={},E.value=!1},O=U=>{E.value&&(U==="major"?A.value.versionNumber=J(!0):A.value.versionNumber=J(!1),m())},x=U=>{const w=U.target.files[0];w&&(A.value.file=w,m())},m=()=>{E.value=!0,v(),b()},b=()=>($.value={},A.value.versionNumber?K(A.value.versionNumber)||($.value.versionNumber="Invalid version number format"):$.value.versionNumber="Version number is required",A.value.changeDescription||($.value.changeDescription="Change description is required"),Object.keys($.value).length===0),Y=async()=>{if(b()){I.value=!0;try{const U={versionNumber:A.value.versionNumber.trim(),changeDescription:A.value.changeDescription.trim(),versionType:A.value.versionType,file:A.value.file},w=await a(V.documentId,U);w?(B(),f("version-created",w),f("close"),await he(),N()):W.value&&(W.value.includes("version number")?$.value.versionNumber=W.value:W.value.includes("change description")&&($.value.changeDescription=W.value))}catch(U){console.error("Error creating document version:",U),$.value.general="Failed to create version. Please try again."}finally{I.value=!1}}},q=()=>{f("close")},l=()=>{y(),E.value=!0},s=()=>{B()},i=U=>{if(U===0)return"0 Bytes";const w=1024,X=["Bytes","KB","MB","GB"],re=Math.floor(Math.log(U)/Math.log(w));return parseFloat((U/Math.pow(w,re)).toFixed(2))+" "+X[re]},ee=U=>{const w=new Date,X=new Date(U),re=w-X,ve=Math.floor(re/1e3),de=Math.floor(ve/60);return de<1?"just now":de===1?"1 minute ago":`${de} minutes ago`};return ge(()=>V.open,U=>{U&&(N(),he(()=>{n()}))}),we(()=>{V.open&&(N(),n())}),(U,w)=>(r(),Z(xe,{open:M.open,title:`Create New Version - ${M.documentTitle}`,size:"lg",onClose:q},{default:_(()=>[h(Ge,{show:t(H).value&&!E.value,"saved-data":t(R)(),onRestore:l,onDismiss:s},null,8,["show","saved-data"]),e("form",{onSubmit:ue(Y,["prevent"]),class:"space-y-6"},[e("div",Xe,[w[5]||(w[5]=e("div",{class:"border-b border-gray-200 pb-4"},[e("h3",{class:"text-lg font-medium text-gray-900"},"Version Information"),e("p",{class:"mt-1 text-sm text-gray-500"},"Specify the version details and type of changes")],-1)),e("div",Ze,[h(t(oe),{modelValue:A.value.versionNumber,"onUpdate:modelValue":w[0]||(w[0]=X=>A.value.versionNumber=X),label:"Version Number",placeholder:"e.g., 1.1, 2.0",error:$.value.versionNumber,onInput:m,required:""},{help:_(()=>[e("span",et," Suggested: "+u(t(J)()),1)]),_:1},8,["modelValue","error"]),h(t(ce),{modelValue:A.value.versionType,"onUpdate:modelValue":[w[1]||(w[1]=X=>A.value.versionType=X),O],label:"Version Type",placeholder:"Select version type",options:P},null,8,["modelValue"])]),e("div",null,[w[4]||(w[4]=e("label",{for:"changeDescription",class:"block text-sm font-medium text-gray-700 mb-1"},[D(" Change Description "),e("span",{class:"text-red-500 ml-1"},"*")],-1)),me(e("textarea",{id:"changeDescription","onUpdate:modelValue":w[2]||(w[2]=X=>A.value.changeDescription=X),placeholder:"Describe what changed in this version...",rows:"4",class:le(["mt-1 block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500 sm:text-sm",{"border-red-300 focus:border-red-500 focus:ring-red-500":$.value.changeDescription}]),onInput:m,required:""},null,34),[[pe,A.value.changeDescription]]),$.value.changeDescription?(r(),d("p",tt,u($.value.changeDescription),1)):S("",!0)])]),e("div",st,[w[10]||(w[10]=e("div",{class:"border-b border-gray-200 pb-4"},[e("h3",{class:"text-lg font-medium text-gray-900"},"File Upload"),e("p",{class:"mt-1 text-sm text-gray-500"},"Upload a new file for this version (optional)")],-1)),e("div",ot,[e("div",null,[w[9]||(w[9]=e("label",{class:"block text-sm font-medium text-gray-700 mb-2"}," Document File ",-1)),e("div",rt,[e("div",nt,[A.value.file?S("",!0):(r(),d("svg",lt,w[6]||(w[6]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12"},null,-1)]))),A.value.file?(r(),d("div",at,[e("div",it,[w[7]||(w[7]=e("svg",{class:"w-5 h-5 text-blue-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1)),e("span",dt,u(A.value.file.name),1),e("span",ut,"("+u(i(A.value.file.size))+")",1)])])):S("",!0),e("div",ct,[e("input",{ref:"fileInput",type:"file",class:"sr-only",accept:".pdf,.doc,.docx,.txt,.xlsx,.xls,.ppt,.pptx",onChange:x},null,544),h(t(z),{type:"button",variant:"outline",onClick:w[3]||(w[3]=X=>U.$refs.fileInput.click())},{default:_(()=>[D(u(A.value.file?"Change File":"Choose File"),1)]),_:1}),w[8]||(w[8]=e("p",{class:"mt-2 text-xs text-gray-500"}," Supported: PDF, Word, Excel, PowerPoint, Text files ",-1))])])])])])]),e("div",vt,[e("div",mt,[e("div",pt,[t(F).value?(r(),d("div",ft,w[11]||(w[11]=[e("div",{class:"w-2 h-2 bg-yellow-400 rounded-full animate-pulse"},null,-1),e("span",{class:"text-sm text-gray-600"},"Unsaved changes",-1)]))):t(c).value?(r(),d("div",gt,[w[12]||(w[12]=e("div",{class:"w-2 h-2 bg-green-400 rounded-full"},null,-1)),e("span",yt," Auto-saved "+u(ee(t(c).value)),1)])):S("",!0),t(F).value?(r(),Z(t(z),{key:2,type:"button",variant:"outline",size:"sm",onClick:t(g),loading:Q.value},{default:_(()=>w[13]||(w[13]=[D(" Save Now ",-1)])),_:1,__:[13]},8,["onClick","loading"])):S("",!0)]),e("div",xt,[h(t(z),{type:"button",variant:"outline",onClick:q,disabled:I.value},{default:_(()=>w[14]||(w[14]=[D(" Cancel ",-1)])),_:1,__:[14]},8,["disabled"]),h(t(z),{type:"submit",variant:"primary",loading:I.value,disabled:!C.value},{default:_(()=>w[15]||(w[15]=[D(" Create Version ",-1)])),_:1,__:[15]},8,["loading","disabled"])])])])],32)]),_:1},8,["open","title"]))}},ht={key:0,class:"space-y-6"},wt={class:"bg-gray-50 rounded-lg p-4"},kt={class:"flex items-center justify-between mb-4"},_t={class:"grid grid-cols-2 md:grid-cols-4 gap-4 mb-4"},At={class:"text-center"},Ct={class:"text-2xl font-bold text-gray-900"},Vt={class:"text-center"},Dt={class:"text-2xl font-bold text-yellow-600"},$t={class:"text-center"},Lt={class:"text-2xl font-bold text-red-600"},jt={class:"text-center"},St={class:"text-2xl font-bold text-blue-600"},Mt={class:"w-full bg-gray-200 rounded-full h-2"},Nt={class:"text-sm text-gray-600 mt-2"},Ut={key:0,class:"border border-blue-200 rounded-lg p-4 bg-blue-50"},It={class:"flex items-center space-x-3"},Et={key:0,class:"mt-4 pt-4 border-t border-blue-200"},Ft={class:"flex items-center space-x-3"},zt={class:"space-y-4"},Bt={key:0,class:"text-center py-6 text-gray-500"},Rt={key:1,class:"space-y-3"},qt={class:"flex-shrink-0"},Pt={class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},Tt={key:0,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M5 13l4 4L19 7"},Wt={key:1,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"},Ht={class:"flex-1"},Ot={class:"flex items-center space-x-2"},Jt={class:"font-medium text-gray-900"},Yt={class:"text-sm text-gray-500"},Gt={key:0,class:"text-sm text-gray-600 mt-1"},Kt={key:1,class:"text-sm text-red-600 mt-1"},Qt={class:"text-xs text-gray-500 mt-2"},Xt={key:1,class:"space-y-6"},Zt={class:"space-y-4"},es={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},ts={class:"flex items-center"},ss={class:"space-y-4"},os={class:"flex items-center justify-between"},rs={key:0,class:"text-center py-6 text-gray-500"},ns={key:1,class:"space-y-3"},ls={class:"flex-1 grid grid-cols-1 md:grid-cols-3 gap-3"},as={class:"flex items-center justify-end space-x-3 pt-4 border-t border-gray-200"},is={key:2,class:"text-center py-8"},ds={__name:"ApprovalWorkflowModal",props:{open:{type:Boolean,default:!1},documentId:{type:Number,required:!0},currentUserId:{type:Number,default:null},isCreating:{type:Boolean,default:!1}},emits:["close","workflow-created","approval-submitted"],setup(M,{emit:p}){const V=M,f=p,{loadApprovalWorkflow:a,createApprovalWorkflow:J,approveDocument:K,rejectDocument:W,canUserApprove:A,approvalStatus:I,approvalHistory:Q,hasWorkflow:$}=Ae(),E=L(!1),P=L(!1),F=L(!1),c=L({comments:""}),g=L({reason:"",comments:""}),y=L({requiredApprovals:1,dueDateDays:7,autoAdvance:!0,approvers:[]}),B=[{value:101,label:"John Doe (Manager)"},{value:102,label:"Jane Smith (Director)"},{value:103,label:"Bob Wilson (Supervisor)"},{value:104,label:"Alice Brown (Lead)"}],H=T(()=>V.currentUserId&&A(V.currentUserId)),R=T(()=>y.value.approvers.length>0&&y.value.requiredApprovals>0&&y.value.requiredApprovals<=y.value.approvers.length&&y.value.approvers.every(l=>l.userId&&l.role&&l.order)),v=(l,s)=>l?"red":s?"green":"yellow",n=(l,s)=>l?"Rejected":s?"Approved":"Pending Review",C=l=>l==="approved"?"bg-green-100 text-green-600":"bg-red-100 text-red-600",N=l=>l?new Date(l).toLocaleString():"Unknown",O=()=>{y.value.approvers.push({userId:null,role:"",order:y.value.approvers.length+1})},x=l=>{y.value.approvers.splice(l,1),y.value.approvers.forEach((s,i)=>{s.order=i+1})},m=async()=>{P.value=!0;try{const l=await K(V.documentId,{approved:!0,comments:c.value.comments});l&&(f("approval-submitted",{action:"approved",result:l}),c.value.comments="")}catch(l){console.error("Error approving document:",l)}finally{P.value=!1}},b=async()=>{P.value=!0;try{const l=await W(V.documentId,{reason:g.value.reason,comments:g.value.comments});l&&(f("approval-submitted",{action:"rejected",result:l}),g.value.reason="",g.value.comments="",F.value=!1)}catch(l){console.error("Error rejecting document:",l)}finally{P.value=!1}},Y=async()=>{E.value=!0;try{const l=await J(V.documentId,y.value);l&&(f("workflow-created",l),f("close"),y.value={requiredApprovals:1,dueDateDays:7,autoAdvance:!0,approvers:[]})}catch(l){console.error("Error creating workflow:",l)}finally{E.value=!1}},q=()=>{F.value=!1,f("close")};return ge(()=>V.open,async l=>{l&&!V.isCreating&&await a(V.documentId)}),(l,s)=>(r(),Z(xe,{open:M.open,title:M.isCreating?"Setup Approval Workflow":"Approval Actions",size:"lg",onClose:q},{default:_(()=>[!M.isCreating&&t($)?(r(),d("div",ht,[e("div",wt,[e("div",kt,[s[9]||(s[9]=e("h3",{class:"text-lg font-medium text-gray-900"},"Approval Status",-1)),h(t(te),{variant:v(t(I).hasRejections,t(I).isFullyApproved)},{default:_(()=>[D(u(n(t(I).hasRejections,t(I).isFullyApproved)),1)]),_:1},8,["variant"])]),e("div",_t,[e("div",At,[e("div",Ct,u(t(I).approvedCount),1),s[10]||(s[10]=e("div",{class:"text-sm text-gray-500"},"Approved",-1))]),e("div",Vt,[e("div",Dt,u(t(I).pendingCount),1),s[11]||(s[11]=e("div",{class:"text-sm text-gray-500"},"Pending",-1))]),e("div",$t,[e("div",Lt,u(t(I).rejectedCount),1),s[12]||(s[12]=e("div",{class:"text-sm text-gray-500"},"Rejected",-1))]),e("div",jt,[e("div",St,u(t(I).requiredApprovals),1),s[13]||(s[13]=e("div",{class:"text-sm text-gray-500"},"Required",-1))])]),e("div",Mt,[e("div",{class:"bg-green-600 h-2 rounded-full transition-all duration-300",style:Ee({width:`${t(I).progress}%`})},null,4)]),e("p",Nt,u(Math.round(t(I).progress))+"% Complete",1)]),H.value?(r(),d("div",Ut,[s[20]||(s[20]=e("h4",{class:"text-md font-medium text-blue-900 mb-3"},"Your Approval Required",-1)),e("form",{onSubmit:s[2]||(s[2]=ue((...i)=>l.handleApprovalSubmit&&l.handleApprovalSubmit(...i),["prevent"])),class:"space-y-4"},[e("div",null,[s[14]||(s[14]=e("label",{for:"approvalComments",class:"block text-sm font-medium text-gray-700 mb-1"}," Comments ",-1)),me(e("textarea",{id:"approvalComments","onUpdate:modelValue":s[0]||(s[0]=i=>c.value.comments=i),placeholder:"Add your comments (optional)...",rows:"3",class:"mt-1 block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500 sm:text-sm"},null,512),[[pe,c.value.comments]])]),e("div",It,[h(t(z),{type:"button",variant:"success",onClick:m,loading:P.value},{default:_(()=>s[15]||(s[15]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M5 13l4 4L19 7"})],-1),D(" Approve ",-1)])),_:1,__:[15]},8,["loading"]),h(t(z),{type:"button",variant:"danger",onClick:s[1]||(s[1]=i=>F.value=!0),disabled:P.value},{default:_(()=>s[16]||(s[16]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})],-1),D(" Reject ",-1)])),_:1,__:[16]},8,["disabled"])])],32),F.value?(r(),d("div",Et,[e("form",{onSubmit:ue(b,["prevent"]),class:"space-y-4"},[h(t(oe),{modelValue:g.value.reason,"onUpdate:modelValue":s[3]||(s[3]=i=>g.value.reason=i),label:"Rejection Reason",placeholder:"e.g., Incorrect format, Missing information...",required:""},null,8,["modelValue"]),e("div",null,[s[17]||(s[17]=e("label",{for:"rejectionComments",class:"block text-sm font-medium text-gray-700 mb-1"}," Additional Comments ",-1)),me(e("textarea",{id:"rejectionComments","onUpdate:modelValue":s[4]||(s[4]=i=>g.value.comments=i),placeholder:"Provide detailed feedback...",rows:"3",class:"mt-1 block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500 sm:text-sm"},null,512),[[pe,g.value.comments]])]),e("div",Ft,[h(t(z),{type:"submit",variant:"danger",loading:P.value},{default:_(()=>s[18]||(s[18]=[D(" Confirm Rejection ",-1)])),_:1,__:[18]},8,["loading"]),h(t(z),{type:"button",variant:"outline",onClick:s[5]||(s[5]=i=>F.value=!1),disabled:P.value},{default:_(()=>s[19]||(s[19]=[D(" Cancel ",-1)])),_:1,__:[19]},8,["disabled"])])],32)])):S("",!0)])):S("",!0),e("div",zt,[s[21]||(s[21]=e("h4",{class:"text-lg font-medium text-gray-900"},"Approval History",-1)),t(Q).length===0?(r(),d("div",Bt," No approval actions yet ")):(r(),d("div",Rt,[(r(!0),d(ae,null,ie(t(Q),i=>(r(),d("div",{key:i.id,class:"flex items-start space-x-3 p-3 bg-gray-50 rounded-lg"},[e("div",qt,[e("div",{class:le(["w-8 h-8 rounded-full flex items-center justify-center",C(i.action)])},[(r(),d("svg",Pt,[i.action==="approved"?(r(),d("path",Tt)):(r(),d("path",Wt))]))],2)]),e("div",Ht,[e("div",Ot,[e("span",Jt,u(i.userName),1),e("span",Yt,"("+u(i.role)+")",1),h(t(te),{variant:i.action==="approved"?"green":"red",size:"sm"},{default:_(()=>[D(u(i.action==="approved"?"Approved":"Rejected"),1)]),_:2},1032,["variant"])]),i.comments?(r(),d("p",Gt,u(i.comments),1)):S("",!0),i.reason?(r(),d("p",Kt,"Reason: "+u(i.reason),1)):S("",!0),e("p",Qt,u(N(i.timestamp)),1)])]))),128))]))])])):M.isCreating?(r(),d("div",Xt,[e("form",{onSubmit:ue(Y,["prevent"]),class:"space-y-6"},[e("div",Zt,[s[22]||(s[22]=e("h3",{class:"text-lg font-medium text-gray-900"},"Workflow Settings",-1)),e("div",es,[h(t(oe),{modelValue:y.value.requiredApprovals,"onUpdate:modelValue":s[6]||(s[6]=i=>y.value.requiredApprovals=i),modelModifiers:{number:!0},type:"number",label:"Required Approvals",placeholder:"Number of approvals needed",min:1,required:""},null,8,["modelValue"]),h(t(oe),{modelValue:y.value.dueDateDays,"onUpdate:modelValue":s[7]||(s[7]=i=>y.value.dueDateDays=i),modelModifiers:{number:!0},type:"number",label:"Due Date (Days)",placeholder:"Days until due",min:1},null,8,["modelValue"])]),e("div",ts,[h(t(Ke),{modelValue:y.value.autoAdvance,"onUpdate:modelValue":s[8]||(s[8]=i=>y.value.autoAdvance=i),label:"Auto-advance workflow when requirements met"},null,8,["modelValue"])])]),e("div",ss,[e("div",os,[s[24]||(s[24]=e("h3",{class:"text-lg font-medium text-gray-900"},"Approvers",-1)),h(t(z),{type:"button",variant:"outline",size:"sm",onClick:O},{default:_(()=>s[23]||(s[23]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),D(" Add Approver ",-1)])),_:1,__:[23]})]),y.value.approvers.length===0?(r(),d("div",rs," No approvers added yet ")):(r(),d("div",ns,[(r(!0),d(ae,null,ie(y.value.approvers,(i,ee)=>(r(),d("div",{key:ee,class:"flex items-center space-x-3 p-3 border border-gray-200 rounded-lg"},[e("div",ls,[h(t(ce),{modelValue:i.userId,"onUpdate:modelValue":U=>i.userId=U,placeholder:"Select User",options:B,required:""},null,8,["modelValue","onUpdate:modelValue"]),h(t(oe),{modelValue:i.role,"onUpdate:modelValue":U=>i.role=U,placeholder:"Role (e.g., Manager)",required:""},null,8,["modelValue","onUpdate:modelValue"]),h(t(oe),{modelValue:i.order,"onUpdate:modelValue":U=>i.order=U,modelModifiers:{number:!0},type:"number",placeholder:"Order",min:1,required:""},null,8,["modelValue","onUpdate:modelValue"])]),h(t(z),{type:"button",variant:"outline",size:"sm",onClick:U=>x(ee)},{default:_(()=>s[25]||(s[25]=[e("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1)])),_:2,__:[25]},1032,["onClick"])]))),128))]))]),e("div",as,[h(t(z),{type:"button",variant:"outline",onClick:q,disabled:E.value},{default:_(()=>s[26]||(s[26]=[D(" Cancel ",-1)])),_:1,__:[26]},8,["disabled"]),h(t(z),{type:"submit",variant:"primary",loading:E.value,disabled:!R.value},{default:_(()=>s[27]||(s[27]=[D(" Create Workflow ",-1)])),_:1,__:[27]},8,["loading","disabled"])])],32)])):(r(),d("div",is,s[28]||(s[28]=[e("svg",{class:"mx-auto h-12 w-12 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})],-1),e("h3",{class:"mt-2 text-sm font-medium text-gray-900"},"No Approval Workflow",-1),e("p",{class:"mt-1 text-sm text-gray-500"},"This document doesn't have an approval workflow",-1)])))]),_:1},8,["open","title"]))}};function us(){const M=new ye,p=L(null),V=L(null),f=L(!1),a=L(null),J=["read","edit","admin"],K=["public","internal","restricted","confidential"],W={read:1,edit:2,admin:3},A=async(x,m)=>{if(a.value=null,!x||!m)return a.value="Document ID and User ID are required",null;try{const b=await M.checkUserAccess(x,m);return V.value=b,b}catch(b){return a.value=b.message,V.value=null,console.error("Error checking user access:",b),null}},I=async x=>{f.value=!0,a.value=null;try{const m=await M.getDocumentPermissions(x);return p.value=m,m}catch(m){return a.value=m.message,p.value=null,console.error("Error loading document permissions:",m),null}finally{f.value=!1}},Q=x=>(a.value=null,!x.userId||!x.accessLevel?(a.value="User ID and access level are required",!1):J.includes(x.accessLevel)?x.expiresAt&&!B(x.expiresAt)?(a.value="Expiration date must be in the future",!1):!0:(a.value=`Invalid access level. Must be one of: ${J.join(", ")}`,!1)),$=async(x,m)=>{if(a.value=null,!Q(m))return null;try{const b=await M.shareDocument(x,m);return p.value&&b.success&&(p.value.permissions||(p.value.permissions=[]),p.value.permissions.push({id:b.permissionId,userId:m.userId,accessLevel:m.accessLevel,grantedAt:b.grantedAt,expiresAt:m.expiresAt,comments:m.comments})),b}catch(b){return a.value=b.message,console.error("Error sharing document:",b),null}},E=async(x,m)=>{a.value=null;try{const b=await M.revokeAccess(x,m);if(p.value&&b.success){const Y=p.value.permissions||[];p.value.permissions=Y.filter(q=>q.userId!==m)}return b}catch(b){return a.value=b.message,console.error("Error revoking access:",b),null}},P=async(x,m)=>{if(a.value=null,!K.includes(m))return a.value=`Invalid access level. Must be one of: ${K.join(", ")}`,null;try{const b=await M.updateDocumentPermissions(x,{accessLevel:m});return p.value&&b.success&&(p.value.accessLevel=m),b}catch(b){return a.value=b.message,console.error("Error updating document access level:",b),null}},F=x=>{if(!V.value||!V.value.hasAccess)return!1;const m=V.value;switch(x){case"read":return m.hasAccess;case"edit":return m.canEdit||!1;case"delete":return m.canDelete||!1;case"share":return m.canShare||!1;default:return!1}},c=x=>({public:"green",internal:"blue",restricted:"yellow",confidential:"red"})[x]||"gray",g=x=>({public:"globe",internal:"office-building",restricted:"lock-closed",confidential:"shield-exclamation"})[x]||"question-mark-circle",y=(x,m)=>{if(!J.includes(m))return[];const b=W[m];return x.filter(Y=>{const q=W[Y.accessLevel];return q&&q>=b})},B=x=>{if(!x)return!0;try{return new Date(x)>new Date}catch{return!1}},H=(x,m)=>{if(!x||x.length===0)return"none";const b=x.filter(l=>l.userId===m);if(b.length===0)return"none";let Y=0,q="none";return b.forEach(l=>{const s=W[l.accessLevel];s&&s>Y&&(Y=s,q=l.accessLevel)}),q},R=()=>{if(!p.value)return{totalUsers:0,readUsers:0,editUsers:0,adminUsers:0,publicAccess:!1};const x=p.value.permissions||[];return{totalUsers:x.length,readUsers:x.filter(m=>m.accessLevel==="read").length,editUsers:x.filter(m=>m.accessLevel==="edit").length,adminUsers:x.filter(m=>m.accessLevel==="admin").length,publicAccess:p.value.publicAccess||!1}},v=T(()=>p.value!==null),n=T(()=>R()),C=T(()=>F("share")),N=T(()=>F("edit")),O=T(()=>F("delete"));return{documentPermissions:p,userAccess:V,permissionsLoading:f,error:a,hasPermissions:v,permissionsSummary:n,canCurrentUserShare:C,canCurrentUserEdit:N,canCurrentUserDelete:O,checkUserAccess:A,loadDocumentPermissions:I,shareDocument:$,revokeAccess:E,updateDocumentAccessLevel:P,canUserPerformAction:F,getAccessLevelColor:c,getAccessLevelIcon:g,filterUsersByAccess:y,validateExpirationDate:B,getEffectiveAccessLevel:H}}const cs={key:0,class:"flex items-center justify-center py-8"},vs={key:1,class:"space-y-6"},ms={class:"bg-gray-50 rounded-lg p-4"},ps={class:"flex items-center justify-between mb-4"},fs={class:"flex items-center space-x-1"},gs={class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},ys=["d"],xs={class:"border border-gray-200 rounded-lg p-4"},bs={class:"flex items-center justify-between mb-4"},hs={key:0,class:"mb-4 p-4 bg-blue-50 rounded-lg border border-blue-200"},ws={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},ks={class:"flex items-center space-x-3"},_s={class:"space-y-3"},As={class:"font-medium text-gray-900"},Cs={key:0,class:"text-center py-6 text-gray-500"},Vs={key:1,class:"space-y-2"},Ds={class:"flex items-center space-x-3"},$s={class:"flex items-center space-x-2"},Ls={class:"font-medium text-gray-900"},js={class:"text-sm text-gray-500"},Ss={key:0},Ms={key:0,class:"text-sm text-gray-600 mt-1"},Ns={class:"bg-gray-50 rounded-lg p-4"},Us={class:"grid grid-cols-2 md:grid-cols-4 gap-4"},Is={class:"text-center"},Es={class:"text-2xl font-bold text-blue-600"},Fs={class:"text-center"},zs={class:"text-2xl font-bold text-green-600"},Bs={class:"text-center"},Rs={class:"text-2xl font-bold text-purple-600"},qs={class:"text-center"},Ps={__name:"DocumentAccessModal",props:{open:{type:Boolean,default:!1},documentId:{type:Number,required:!0}},emits:["close","permissions-updated"],setup(M,{emit:p}){const V=M,f=p,{loadDocumentPermissions:a,shareDocument:J,revokeAccess:K,updateDocumentAccessLevel:W,getAccessLevelColor:A,documentPermissions:I,permissionsLoading:Q,permissionsSummary:$}=us(),E=L(!1),P=L(null),F=L(!1),c=L(""),g=L({userId:null,accessLevel:"read",expiresAt:"",comments:""}),y=[{value:101,label:"John Doe (Manager)"},{value:102,label:"Jane Smith (Director)"},{value:103,label:"Bob Wilson (Supervisor)"},{value:104,label:"Alice Brown (Lead)"},{value:105,label:"Charlie Davis (Engineer)"}],B=[{value:"public",label:"Public - Anyone can view"},{value:"internal",label:"Internal - Organization members only"},{value:"restricted",label:"Restricted - Specific users only"},{value:"confidential",label:"Confidential - Limited access"}],H=[{value:"read",label:"Read - View only"},{value:"edit",label:"Edit - View and modify"},{value:"admin",label:"Admin - Full control"}],R=T(()=>{var l;return((l=I.value)==null?void 0:l.accessLevel)||"internal"}),v=T(()=>{var l;return((l=I.value)==null?void 0:l.permissions)||[]}),n=l=>({public:"Public",internal:"Internal",restricted:"Restricted",confidential:"Confidential"})[l]||l,C=l=>{const s={public:"M21 12a9 9 0 01-9 9m9-9a9 9 0 00-9-9m9 9H3m9 9v-9m0-9v9",internal:"M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4",restricted:"M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z",confidential:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.728-.833-2.498 0L4.316 16.5c-.77.833.192 2.5 1.732 2.5z"};return s[l]||s.internal},N=l=>({read:"blue",edit:"green",admin:"purple"})[l]||"gray",O=l=>l?new Date(l).toLocaleDateString():"Never",x=async()=>{if(c.value&&c.value!==R.value)try{await W(V.documentId,c.value),f("permissions-updated")}catch(l){console.error("Error updating access level:",l)}},m=async()=>{E.value=!0;try{const l={...g.value};l.expiresAt&&(l.expiresAt=new Date(l.expiresAt).toISOString()),await J(V.documentId,l)&&(f("permissions-updated"),Y())}catch(l){console.error("Error sharing document:",l)}finally{E.value=!1}},b=async l=>{P.value=l;try{await K(V.documentId,l)&&f("permissions-updated")}catch(s){console.error("Error revoking access:",s)}finally{P.value=null}},Y=()=>{F.value=!1,g.value={userId:null,accessLevel:"read",expiresAt:"",comments:""}},q=()=>{F.value=!1,f("close")};return ge(()=>V.open,async l=>{l&&(await a(V.documentId),c.value=R.value)}),(l,s)=>(r(),Z(xe,{open:M.open,title:"Manage Document Access",size:"lg",onClose:q},{actions:_(()=>[h(t(z),{variant:"outline",onClick:q,disabled:t(Q)||E.value},{default:_(()=>s[19]||(s[19]=[D(" Close ",-1)])),_:1,__:[19]},8,["disabled"])]),default:_(()=>[t(Q)?(r(),d("div",cs,s[6]||(s[6]=[e("div",{class:"animate-spin rounded-full h-6 w-6 border-b-2 border-indigo-600"},null,-1),e("span",{class:"ml-2 text-gray-600"},"Loading permissions...",-1)]))):(r(),d("div",vs,[e("div",ms,[e("div",ps,[s[7]||(s[7]=e("h3",{class:"text-lg font-medium text-gray-900"},"Document Access Level",-1)),h(t(te),{variant:t(A)(R.value)},{default:_(()=>[e("div",fs,[(r(),d("svg",gs,[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:C(R.value)},null,8,ys)])),e("span",null,u(n(R.value)),1)])]),_:1},8,["variant"])]),h(t(ce),{modelValue:c.value,"onUpdate:modelValue":s[0]||(s[0]=i=>c.value=i),label:"Change Access Level",options:B,onChange:x},null,8,["modelValue"])]),e("div",xs,[e("div",bs,[s[9]||(s[9]=e("h3",{class:"text-lg font-medium text-gray-900"},"Share Document",-1)),h(t(z),{variant:"outline",size:"sm",onClick:s[1]||(s[1]=i=>F.value=!F.value)},{default:_(()=>s[8]||(s[8]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),D(" Share ",-1)])),_:1,__:[8]})]),F.value?(r(),d("div",hs,[e("form",{onSubmit:ue(m,["prevent"]),class:"space-y-4"},[e("div",ws,[h(t(ce),{modelValue:g.value.userId,"onUpdate:modelValue":s[2]||(s[2]=i=>g.value.userId=i),label:"Select User",placeholder:"Choose user to share with",options:y,required:""},null,8,["modelValue"]),h(t(ce),{modelValue:g.value.accessLevel,"onUpdate:modelValue":s[3]||(s[3]=i=>g.value.accessLevel=i),label:"Access Level",options:H,required:""},null,8,["modelValue"])]),h(t(oe),{modelValue:g.value.expiresAt,"onUpdate:modelValue":s[4]||(s[4]=i=>g.value.expiresAt=i),type:"datetime-local",label:"Expiration Date (Optional)",placeholder:"Leave empty for no expiration"},null,8,["modelValue"]),e("div",null,[s[10]||(s[10]=e("label",{for:"shareComments",class:"block text-sm font-medium text-gray-700 mb-1"}," Comments (Optional) ",-1)),me(e("textarea",{id:"shareComments","onUpdate:modelValue":s[5]||(s[5]=i=>g.value.comments=i),placeholder:"Add a note about this sharing...",rows:"2",class:"mt-1 block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500 sm:text-sm"},null,512),[[pe,g.value.comments]])]),e("div",ks,[h(t(z),{type:"submit",variant:"primary",loading:E.value,disabled:!g.value.userId||!g.value.accessLevel},{default:_(()=>s[11]||(s[11]=[D(" Share Document ",-1)])),_:1,__:[11]},8,["loading","disabled"]),h(t(z),{type:"button",variant:"outline",onClick:Y,disabled:E.value},{default:_(()=>s[12]||(s[12]=[D(" Cancel ",-1)])),_:1,__:[12]},8,["disabled"])])],32)])):S("",!0),e("div",_s,[e("h4",As,"Current Permissions ("+u(t($).totalUsers)+" users)",1),v.value.length===0?(r(),d("div",Cs," No specific user permissions. Document follows default access level. ")):(r(),d("div",Vs,[(r(!0),d(ae,null,ie(v.value,i=>{var ee,U;return r(),d("div",{key:i.id,class:"flex items-center justify-between p-3 bg-white border border-gray-200 rounded-lg"},[e("div",Ds,[h(t(ke),{user:{firstName:((ee=i.userName)==null?void 0:ee.split(" ")[0])||"U",lastName:((U=i.userName)==null?void 0:U.split(" ")[1])||"N"},size:"sm"},null,8,["user"]),e("div",null,[e("div",$s,[e("span",Ls,u(i.userName||"Unknown User"),1),h(t(te),{variant:N(i.accessLevel),size:"sm"},{default:_(()=>[D(u(i.accessLevel),1)]),_:2},1032,["variant"])]),e("div",js,[D(" Granted "+u(O(i.grantedAt))+" ",1),i.expiresAt?(r(),d("span",Ss," • Expires "+u(O(i.expiresAt)),1)):S("",!0)]),i.comments?(r(),d("p",Ms,u(i.comments),1)):S("",!0)])]),h(t(z),{variant:"outline",size:"sm",onClick:w=>b(i.userId),loading:P.value===i.userId},{default:_(()=>s[13]||(s[13]=[e("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1),D(" Revoke ",-1)])),_:2,__:[13]},1032,["onClick","loading"])])}),128))]))])]),e("div",Ns,[s[18]||(s[18]=e("h4",{class:"font-medium text-gray-900 mb-3"},"Access Summary",-1)),e("div",Us,[e("div",Is,[e("div",Es,u(t($).readUsers),1),s[14]||(s[14]=e("div",{class:"text-sm text-gray-500"},"Read Access",-1))]),e("div",Fs,[e("div",zs,u(t($).editUsers),1),s[15]||(s[15]=e("div",{class:"text-sm text-gray-500"},"Edit Access",-1))]),e("div",Bs,[e("div",Rs,u(t($).adminUsers),1),s[16]||(s[16]=e("div",{class:"text-sm text-gray-500"},"Admin Access",-1))]),e("div",qs,[e("div",{class:le(["text-2xl font-bold",t($).publicAccess?"text-green-600":"text-gray-400"])},u(t($).publicAccess?"Yes":"No"),3),s[17]||(s[17]=e("div",{class:"text-sm text-gray-500"},"Public Access",-1))])])])]))]),_:1},8,["open"]))}},Ts={class:"px-6 py-8"},Ws={key:0,class:"flex items-center justify-center py-12"},Hs={key:1,class:"text-center py-12"},Os={class:"mt-1 text-sm text-gray-500"},Js={class:"mt-6"},Ys={key:2,class:"space-y-8"},Gs={key:0,class:"bg-red-50 border border-red-200 rounded-lg p-4"},Ks={key:1,class:"bg-yellow-50 border border-yellow-200 rounded-lg p-4"},Qs={class:"flex items-center"},Xs={class:"text-yellow-800 font-medium"},Zs={class:"bg-white rounded-lg border border-gray-200"},eo={class:"p-6"},to={class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6"},so={class:"flex items-center space-x-2"},oo={key:0,class:"w-4 h-4 text-green-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},ro={key:1,class:"w-4 h-4 text-red-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},no={key:2,class:"w-4 h-4 text-blue-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},lo={class:"text-sm"},ao={class:"text-sm font-mono bg-gray-100 px-2 py-1 rounded"},io={class:"mt-6 grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6"},uo={class:"flex items-center space-x-2"},co={class:"text-sm"},vo={class:"text-sm text-gray-900"},mo={class:"text-sm text-gray-900"},po={key:0,class:"mt-6"},fo={key:1,class:"mt-6"},go={class:"flex flex-wrap gap-2"},yo={class:"bg-white rounded-lg border border-gray-200"},xo={class:"border-b border-gray-200"},bo={key:0,class:"p-6"},ho={key:0,class:"text-center py-8"},wo={class:"mt-2 text-sm font-medium text-gray-900"},ko={class:"mt-1 text-sm text-gray-500"},_o={class:"mt-4"},Ao={key:1,class:"text-center py-8"},Co={key:1,class:"p-6"},Vo={key:0,class:"text-center py-8"},Do={key:1,class:"space-y-4"},$o={class:"flex items-center justify-between"},Lo={class:"flex items-center space-x-2"},jo={class:"font-medium"},So={class:"text-sm text-gray-600 mt-1"},Mo={class:"text-xs text-gray-500 mt-2"},No={class:"flex space-x-2"},Uo={key:2,class:"text-center py-8"},Io={key:2,class:"p-6"},Eo={key:0,class:"text-center py-8"},Fo={key:1,class:"space-y-6"},zo={class:"flex items-center justify-between"},Bo={class:"space-y-4"},Ro={class:"flex-shrink-0"},qo={class:"text-xs font-medium"},Po={class:"flex-1"},To={class:"flex items-center space-x-2"},Wo={class:"font-medium"},Ho={class:"text-sm text-gray-500"},Oo={key:0,class:"text-sm text-gray-600 mt-1"},Jo={key:1,class:"text-xs text-gray-500 mt-1"},Yo={key:2,class:"text-center py-8"},Go={key:3,class:"p-6"},Ko={key:0,class:"text-center py-8"},Qo={key:1,class:"space-y-6"},Xo={class:"grid grid-cols-1 md:grid-cols-4 gap-4"},Zo={class:"text-center"},er={class:"text-2xl font-bold text-gray-900"},tr={class:"text-center"},sr={class:"text-2xl font-bold text-gray-900"},or={class:"text-center"},rr={class:"text-2xl font-bold text-gray-900"},nr={class:"text-center"},lr={class:"text-2xl font-bold text-gray-900"},ar={key:2,class:"text-center py-8"},br={__name:"DocumentDetailView",setup(M){const p=Fe(),V=ze(),f=Be(),{currentDocument:a,loading:J,error:K}=Re(),{versions:W,versionsLoading:A,loadVersions:I,setActiveVersion:Q}=_e(),{loadApprovalWorkflow:$,approvalWorkflow:E,workflowLoading:P,hasWorkflow:F}=Ae(),c=L("content"),g=L(!1),y=L(null),B=L(!1),H=L(!1),R=L(!1),v=L(!1),n=T(()=>parseInt(p.params.id)),C=T(()=>{var k;return[{text:"Documents",to:"/documents"},{text:((k=a.value)==null?void 0:k.title)||"Document",to:null}]}),N=T(()=>a.value?qe(a.value):!1),O=T(()=>{var G;if(!((G=a.value)!=null&&G.expirationDate))return!1;const k=new Date(a.value.expirationDate),o=new Date;return o.setDate(o.getDate()+30),k<=o&&k>new Date}),x=T(()=>a.value&&a.value.status!=="expired"&&a.value.status!=="archived"),m=[{key:"content",label:"Content",icon:"document"},{key:"versions",label:"Versions",icon:"collection"},{key:"approval",label:"Approval",icon:"check"},{key:"analytics",label:"Analytics",icon:"chart-bar"}],b=k=>k?new Date(k).toLocaleDateString():"N/A",Y=k=>He(k),q=k=>({policy:"blue",procedure:"green",manual:"purple",report:"yellow",contract:"red",certificate:"indigo",drawing:"pink",specification:"gray"})[k]||"gray",l=k=>({draft:"gray",pending_review:"yellow",under_review:"blue",approved:"green",published:"green",archived:"gray",expired:"red",rejected:"red"})[k]||"gray",s=k=>Pe(k),i=k=>Te(k).label,ee=k=>We(k).label,U=k=>{if(!k)return"text-gray-400";const o=new Date(k),G=new Date,se=new Date(G.getTime()+30*24*60*60*1e3);return o({pending:"yellow",approved:"green",rejected:"red",delegated:"blue"})[k]||"gray",X=k=>({pending:"Pending",approved:"Approved",rejected:"Rejected",delegated:"Delegated"})[k]||k,re=k=>({pending:"bg-yellow-100 text-yellow-800",approved:"bg-green-100 text-green-800",rejected:"bg-red-100 text-red-800",delegated:"bg-blue-100 text-blue-800"})[k]||"bg-gray-100 text-gray-800",ve=async()=>{try{const k=await f.downloadDocumentFile(n.value),o=window.URL.createObjectURL(k),G=a.createElement("a");G.style.display="none",G.href=o,G.download=`${a.value.title}.pdf`,a.body.appendChild(G),G.click(),window.URL.revokeObjectURL(o)}catch(k){console.error("Error downloading document:",k)}},de=()=>{V.push(`/documents?edit=${n.value}`)},Ce=()=>{B.value=!0},Ve=async k=>{try{console.log("Download version:",k.id)}catch(o){console.error("Error downloading version:",o)}},De=async k=>{try{await Q(n.value,k),await ne()}catch(o){console.error("Error setting active version:",o)}},ne=async()=>{await f.fetchDocumentById(n.value)},$e=async()=>{try{await f.trackDocumentView(n.value,{userId:1,timestamp:new Date().toISOString()})}catch(k){console.error("Error tracking view:",k)}},Le=async k=>{B.value=!1,await ne(),c.value="versions",await I(n.value)},je=()=>{v.value=!0,H.value=!0},Se=()=>{v.value=!1,H.value=!0},Me=async k=>{H.value=!1,await ne(),c.value="approval",await $(n.value)},Ne=async k=>{await $(n.value),await ne()},Ue=()=>{R.value=!0},Ie=async()=>{await ne()};return we(async()=>{await ne(),await $e(),c.value==="versions"&&await I(n.value)}),(k,o)=>(r(),Z(Oe,null,{header:_(()=>{var G,se;return[h(Je,{title:((G=t(a))==null?void 0:G.title)||"Document",description:((se=t(a))==null?void 0:se.description)||"Document details and management",breadcrumbs:C.value},{actions:_(()=>[t(a)?(r(),Z(t(z),{key:0,variant:"outline",size:"sm",onClick:ve},{default:_(()=>o[5]||(o[5]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 10v6m0 0l-3-3m3 3l3-3M3 17V7a2 2 0 012-2h6l2 2h6a2 2 0 012 2v8a2 2 0 01-2 2H5a2 2 0 01-2-2z"})],-1),D(" Download ",-1)])),_:1,__:[5]})):S("",!0),t(a)&&!N.value?(r(),Z(t(z),{key:1,variant:"outline",size:"sm",onClick:de},{default:_(()=>o[6]||(o[6]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1),D(" Edit ",-1)])),_:1,__:[6]})):S("",!0),t(a)&&!t(F)?(r(),Z(t(z),{key:2,variant:"outline",size:"sm",onClick:je},{default:_(()=>o[7]||(o[7]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})],-1),D(" Setup Approval ",-1)])),_:1,__:[7]})):S("",!0),t(a)&&t(F)?(r(),Z(t(z),{key:3,variant:"outline",size:"sm",onClick:Se},{default:_(()=>o[8]||(o[8]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})],-1),D(" Approval Actions ",-1)])),_:1,__:[8]})):S("",!0),t(a)?(r(),Z(t(z),{key:4,variant:"outline",size:"sm",onClick:Ue},{default:_(()=>o[9]||(o[9]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z"})],-1),D(" Manage Access ",-1)])),_:1,__:[9]})):S("",!0),t(a)&&x.value?(r(),Z(t(z),{key:5,variant:"primary",size:"sm",onClick:Ce},{default:_(()=>o[10]||(o[10]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),D(" New Version ",-1)])),_:1,__:[10]})):S("",!0)]),_:1},8,["title","description","breadcrumbs"])]}),default:_(()=>{var G,se,be;return[e("div",Ts,[t(J)?(r(),d("div",Ws,o[11]||(o[11]=[e("div",{class:"animate-spin rounded-full h-8 w-8 border-b-2 border-indigo-600"},null,-1),e("span",{class:"ml-2 text-gray-600"},"Loading document...",-1)]))):t(K)?(r(),d("div",Hs,[o[13]||(o[13]=e("svg",{class:"mx-auto h-12 w-12 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.728-.833-2.498 0L4.316 16.5c-.77.833.192 2.5 1.732 2.5z"})],-1)),o[14]||(o[14]=e("h3",{class:"mt-2 text-sm font-medium text-gray-900"},"Document not found",-1)),e("p",Os,u(t(K)),1),e("div",Js,[h(t(z),{onClick:o[0]||(o[0]=j=>k.$router.push("/documents"))},{default:_(()=>o[12]||(o[12]=[D(" Back to Documents ",-1)])),_:1,__:[12]})])])):t(a)?(r(),d("div",Ys,[N.value?(r(),d("div",Gs,o[15]||(o[15]=[e("div",{class:"flex items-center"},[e("svg",{class:"w-5 h-5 text-red-600 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.728-.833-2.498 0L4.316 16.5c-.77.833.192 2.5 1.732 2.5z"})]),e("span",{class:"text-red-800 font-medium"},"This document has expired")],-1)]))):S("",!0),O.value&&!N.value?(r(),d("div",Ks,[e("div",Qs,[o[16]||(o[16]=e("svg",{class:"w-5 h-5 text-yellow-600 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),e("span",Xs,"This document expires on "+u(b(t(a).expirationDate)),1)])])):S("",!0),e("div",Zs,[o[29]||(o[29]=e("div",{class:"px-6 py-4 border-b border-gray-200"},[e("h2",{class:"text-lg font-medium text-gray-900"},"Document Overview")],-1)),e("div",eo,[e("div",to,[e("div",null,[o[17]||(o[17]=e("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Type",-1)),h(t(te),{variant:q(t(a).type)},{default:_(()=>[D(u(s(t(a).type)),1)]),_:1},8,["variant"])]),e("div",null,[o[18]||(o[18]=e("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Status",-1)),h(t(te),{variant:l(t(a).status)},{default:_(()=>[D(u(i(t(a).status)),1)]),_:1},8,["variant"])]),e("div",null,[o[22]||(o[22]=e("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Access Level",-1)),e("div",so,[t(a).accessLevel==="public"?(r(),d("svg",oo,o[19]||(o[19]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 12a9 9 0 01-9 9m9-9a9 9 0 00-9-9m9 9H3m9 9v-9m0-9v9"},null,-1)]))):t(a).accessLevel==="confidential"?(r(),d("svg",ro,o[20]||(o[20]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z"},null,-1)]))):(r(),d("svg",no,o[21]||(o[21]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4"},null,-1)]))),e("span",lo,u(ee(t(a).accessLevel)),1)])]),e("div",null,[o[23]||(o[23]=e("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Version",-1)),e("span",ao,u(t(a).currentVersion||"1.0"),1)])]),e("div",io,[e("div",null,[o[24]||(o[24]=e("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Author",-1)),e("div",uo,[h(t(ke),{user:{firstName:((G=t(a).authorName)==null?void 0:G.split(" ")[0])||"U",lastName:((se=t(a).authorName)==null?void 0:se.split(" ")[1])||"N"},size:"xs"},null,8,["user"]),e("span",co,u(t(a).authorName||"Unknown"),1)])]),e("div",null,[o[25]||(o[25]=e("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Created",-1)),e("span",vo,u(b(t(a).createdAt)),1)]),e("div",null,[o[26]||(o[26]=e("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Last Modified",-1)),e("span",mo,u(b(t(a).updatedAt)),1)])]),t(a).expirationDate?(r(),d("div",po,[o[27]||(o[27]=e("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Expiration Date",-1)),e("span",{class:le(["text-sm",U(t(a).expirationDate)])},u(b(t(a).expirationDate)),3)])):S("",!0),t(a).tags&&t(a).tags.length>0?(r(),d("div",fo,[o[28]||(o[28]=e("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Tags",-1)),e("div",go,[(r(!0),d(ae,null,ie(t(a).tags,j=>(r(),d("span",{key:j,class:"inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-blue-100 text-blue-800"},u(j),1))),128))])])):S("",!0)])]),e("div",yo,[e("div",xo,[h(t(Qe),{modelValue:c.value,"onUpdate:modelValue":o[1]||(o[1]=j=>c.value=j),tabs:m},null,8,["modelValue"])]),c.value==="content"?(r(),d("div",bo,[t(a).filePath?(r(),d("div",ho,[o[31]||(o[31]=e("svg",{class:"mx-auto h-12 w-12 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1)),e("h3",wo,u(t(a).fileName||"Document File"),1),e("p",ko,u(t(a).fileSize?Y(t(a).fileSize):"Size unknown"),1),e("div",_o,[h(t(z),{onClick:ve},{default:_(()=>o[30]||(o[30]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 10v6m0 0l-3-3m3 3l3-3"})],-1),D(" Download File ",-1)])),_:1,__:[30]})])])):(r(),d("div",Ao,o[32]||(o[32]=[e("svg",{class:"mx-auto h-12 w-12 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z"})],-1),e("h3",{class:"mt-2 text-sm font-medium text-gray-900"},"No File Attached",-1),e("p",{class:"mt-1 text-sm text-gray-500"},"This document doesn't have an associated file",-1)])))])):S("",!0),c.value==="versions"?(r(),d("div",Co,[t(A)?(r(),d("div",Vo,o[33]||(o[33]=[e("div",{class:"animate-spin rounded-full h-6 w-6 border-b-2 border-indigo-600 mx-auto"},null,-1),e("p",{class:"mt-2 text-sm text-gray-500"},"Loading versions...",-1)]))):t(W)&&t(W).length>0?(r(),d("div",Do,[(r(!0),d(ae,null,ie(t(W),j=>(r(),d("div",{key:j.id,class:le(["border border-gray-200 rounded-lg p-4",{"bg-blue-50 border-blue-200":j.isActive}])},[e("div",$o,[e("div",null,[e("div",Lo,[e("span",jo,"Version "+u(j.versionNumber),1),j.isActive?(r(),Z(t(te),{key:0,variant:"blue",size:"sm"},{default:_(()=>o[34]||(o[34]=[D("Active",-1)])),_:1,__:[34]})):S("",!0)]),e("p",So,u(j.changeDescription),1),e("p",Mo," Created by "+u(j.authorName)+" on "+u(b(j.createdAt)),1)]),e("div",No,[j.isActive?S("",!0):(r(),Z(t(z),{key:0,variant:"outline",size:"sm",onClick:fe=>De(j.id)},{default:_(()=>o[35]||(o[35]=[D(" Make Active ",-1)])),_:2,__:[35]},1032,["onClick"])),h(t(z),{variant:"outline",size:"sm",onClick:fe=>Ve(j)},{default:_(()=>o[36]||(o[36]=[D(" Download ",-1)])),_:2,__:[36]},1032,["onClick"])])])],2))),128))])):(r(),d("div",Uo,o[37]||(o[37]=[e("svg",{class:"mx-auto h-12 w-12 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5H7a2 2 0 00-2 2v10a2 2 0 002 2h8a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"})],-1),e("h3",{class:"mt-2 text-sm font-medium text-gray-900"},"No Versions",-1),e("p",{class:"mt-1 text-sm text-gray-500"},"This document doesn't have version history",-1)])))])):S("",!0),c.value==="approval"?(r(),d("div",Io,[t(P)?(r(),d("div",Eo,o[38]||(o[38]=[e("div",{class:"animate-spin rounded-full h-6 w-6 border-b-2 border-indigo-600 mx-auto"},null,-1),e("p",{class:"mt-2 text-sm text-gray-500"},"Loading approval workflow...",-1)]))):t(E)?(r(),d("div",Fo,[e("div",zo,[o[39]||(o[39]=e("h3",{class:"text-lg font-medium text-gray-900"},"Approval Workflow",-1)),h(t(te),{variant:w(t(E).status)},{default:_(()=>[D(u(X(t(E).status)),1)]),_:1},8,["variant"])]),e("div",Bo,[(r(!0),d(ae,null,ie(t(E).approvers,(j,fe)=>(r(),d("div",{key:j.id,class:"flex items-center space-x-4 p-4 bg-gray-50 rounded-lg"},[e("div",Ro,[e("div",{class:le(["w-8 h-8 rounded-full flex items-center justify-center",re(j.status)])},[e("span",qo,u(fe+1),1)],2)]),e("div",Po,[e("div",To,[e("span",Wo,u(j.userName),1),e("span",Ho,"("+u(j.role)+")",1),h(t(te),{variant:w(j.status),size:"sm"},{default:_(()=>[D(u(X(j.status)),1)]),_:2},1032,["variant"])]),j.comments?(r(),d("p",Oo,u(j.comments),1)):S("",!0),j.approvedAt?(r(),d("p",Jo,u(X(j.status))+" on "+u(b(j.approvedAt)),1)):S("",!0)])]))),128))])])):(r(),d("div",Yo,o[40]||(o[40]=[e("svg",{class:"mx-auto h-12 w-12 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})],-1),e("h3",{class:"mt-2 text-sm font-medium text-gray-900"},"No Approval Workflow",-1),e("p",{class:"mt-1 text-sm text-gray-500"},"This document doesn't require approval",-1)])))])):S("",!0),c.value==="analytics"?(r(),d("div",Go,[g.value?(r(),d("div",Ko,o[41]||(o[41]=[e("div",{class:"animate-spin rounded-full h-6 w-6 border-b-2 border-indigo-600 mx-auto"},null,-1),e("p",{class:"mt-2 text-sm text-gray-500"},"Loading analytics...",-1)]))):y.value?(r(),d("div",Qo,[e("div",Xo,[e("div",Zo,[e("div",er,u(y.value.views||0),1),o[42]||(o[42]=e("div",{class:"text-sm text-gray-500"},"Views",-1))]),e("div",tr,[e("div",sr,u(y.value.downloads||0),1),o[43]||(o[43]=e("div",{class:"text-sm text-gray-500"},"Downloads",-1))]),e("div",or,[e("div",rr,u(y.value.avgRating||0),1),o[44]||(o[44]=e("div",{class:"text-sm text-gray-500"},"Avg Rating",-1))]),e("div",nr,[e("div",lr,u(b(y.value.lastAccessed)),1),o[45]||(o[45]=e("div",{class:"text-sm text-gray-500"},"Last Accessed",-1))])])])):(r(),d("div",ar,o[46]||(o[46]=[e("svg",{class:"mx-auto h-12 w-12 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"})],-1),e("h3",{class:"mt-2 text-sm font-medium text-gray-900"},"No Analytics Available",-1),e("p",{class:"mt-1 text-sm text-gray-500"},"Analytics data is not available for this document",-1)])))])):S("",!0)])])):S("",!0)]),h(bt,{open:B.value,"document-id":n.value,"document-title":((be=t(a))==null?void 0:be.title)||"Document",onClose:o[2]||(o[2]=j=>B.value=!1),onVersionCreated:Le},null,8,["open","document-id","document-title"]),h(ds,{open:H.value,"document-id":n.value,"current-user-id":1,"is-creating":v.value,onClose:o[3]||(o[3]=j=>H.value=!1),onWorkflowCreated:Me,onApprovalSubmitted:Ne},null,8,["open","document-id","is-creating"]),h(Ps,{open:R.value,"document-id":n.value,onClose:o[4]||(o[4]=j=>R.value=!1),onPermissionsUpdated:Ie},null,8,["open","document-id"])]}),_:1}))}};export{br as default}; diff --git a/frontend/dist/assets/DocumentsListView-BSKVRIyQ.js b/frontend/dist/assets/DocumentsListView-BSKVRIyQ.js new file mode 100644 index 00000000..58ebfb7b --- /dev/null +++ b/frontend/dist/assets/DocumentsListView-BSKVRIyQ.js @@ -0,0 +1 @@ +import{r as b,c as T,m as $e,o as Re,i as W,g as r,w as m,d,b as t,e as s,h as pe,a as u,j as y,af as ge,aR as fe,n as ze,ae as je,bt as mt,t as h,k as C,F as _,ac as Ie,s as vt,v as pt,aV as gt}from"./index-QAlcqU00.js";import{D as ft,g as ye,u as yt,a as ht,b as xt,c as J,d as Le,e as ve,f as Ue,h as bt}from"./useDocumentManagement-BJ6Z87hG.js";import{u as Ee}from"./useFormAutoSave-BrW9Wl2Q.js";import{F as kt,a as Dt}from"./FPPageHeader-CFIwZZgQ.js";import{F as Be}from"./FPModal-DMoPysvU.js";import{_ as Pe}from"./FormRestoreNotification-2Wflg1mH.js";import{F as Z}from"./FPInput-D5RURom0.js";import{F as B}from"./FPSelect-j7n_x8eB.js";import{F as Ct}from"./FPCheckbox-DcRYwN3n.js";import{F as Tt}from"./FPStats-DOY0PQQF.js";import{F as _t}from"./FPTable-CWvngIYd.js";import{F as Ae}from"./FPBadge-DvOitM1C.js";import{F as Me}from"./FPTabs-qq-Tmb7J.js";import"./FPCard-AB6NRXg5.js";function Vt(){const X=new ft,V=b([]),U=b(!1),f=b(null),Q=async()=>{U.value=!0,f.value=null;try{const n=await X.getTemplates();return V.value=n,n}catch(n){return f.value=n.message,V.value=[],console.error("Error loading document templates:",n),[]}finally{U.value=!1}},z=async n=>{if(f.value=null,!n||n.trim().length===0)return f.value="Document type is required",[];try{return await X.getTemplatesByType(n)}catch(v){return f.value=v.message,console.error("Error loading templates by type:",v),[]}},A=n=>(f.value=null,n.templateId?!n.title||n.title.trim().length===0?(f.value="Document title is required",!1):!0:(f.value="Template ID is required",!1)),P=async n=>{if(f.value=null,!A(n))return null;try{return await X.createFromTemplate(n)}catch(v){return f.value=v.message,console.error("Error creating document from template:",v),null}},K=n=>V.value.filter(v=>v.category===n),M=n=>V.value.find(v=>v.id===n)||null,G=(n,v)=>{const D=n.fields||[],F=Object.keys(v||{}),j=D.filter(H=>!F.includes(H)||!v[H]||v[H].toString().trim().length===0);return{isValid:j.length===0,missingFields:j}},k=()=>{const n=V.value.map(v=>v.category).filter(v=>v);return[...new Set(n)].sort()},i=(n,v)=>{const D={...v};return n.defaultValues&&Object.keys(n.defaultValues).forEach(F=>{D[F]||(D[F]=n.defaultValues[F])}),D},$=n=>n?V.value.filter(v=>v.type===n).sort((v,D)=>{const F=v.usageCount||0,j=D.usageCount||0;return F!==j?j-F:v.name.localeCompare(D.name)}):[],c=n=>{if(!n||n.trim().length===0)return V.value;const v=n.toLowerCase().trim();return V.value.filter(D=>D.name.toLowerCase().includes(v)||D.description&&D.description.toLowerCase().includes(v)||D.category&&D.category.toLowerCase().includes(v))},S=T(()=>V.value.length>0),R=T(()=>V.value.length),N=T(()=>k());return{templates:V,templatesLoading:U,error:f,hasTemplates:S,totalTemplates:R,templateCategories:N,loadTemplates:Q,loadTemplatesByType:z,createDocumentFromTemplate:P,getTemplatesByCategory:K,getTemplateById:M,validateTemplateReplacements:G,getTemplateCategories:k,processTemplateReplacements:i,getTemplateSuggestions:$,searchTemplates:c}}const wt={class:"space-y-4"},Ft={class:"grid grid-cols-1 md:grid-cols-2 gap-4 mb-4"},St={key:0,class:"text-center py-8"},It={key:1,class:"text-center py-8"},Lt={key:2,class:"grid grid-cols-1 md:grid-cols-2 gap-4"},Ut=["onClick"],At={class:"flex items-start"},Mt={class:"flex-shrink-0"},$t=["value","onChange"],Rt={class:"ml-3 flex-1"},zt={class:"text-sm font-medium text-gray-900"},jt={class:"text-sm text-gray-500 mt-1"},Et={class:"flex items-center mt-2 space-x-2"},Bt={class:"inline-flex items-center px-2 py-0.5 rounded text-xs font-medium bg-blue-100 text-blue-800"},Pt={key:0,class:"inline-flex items-center px-2 py-0.5 rounded text-xs font-medium bg-gray-100 text-gray-800"},Nt={key:0,class:"space-y-4"},Ht={key:0,class:"space-y-4"},Ot={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},qt={key:0,class:"text-sm text-red-600"},Jt={key:1,class:"bg-gray-50 rounded-lg p-4"},Wt={class:"text-sm text-gray-600 space-y-1"},Xt={key:0,class:""},Kt={class:"bg-gray-50 border-t border-gray-200 px-6 py-4 -mx-6 -mb-6"},Gt={class:"flex items-center justify-between"},Yt={class:"flex items-center space-x-4"},Zt={key:0,class:"flex items-center space-x-2"},Qt={key:1,class:"flex items-center space-x-2"},el={class:"text-sm text-gray-600"},tl={class:"flex items-center space-x-3"},ll={__name:"DocumentTemplateModal",props:{open:{type:Boolean,default:!1}},emits:["close","document-created"],setup(X,{emit:V}){const U=X,f=V,{loadTemplates:Q,createDocumentFromTemplate:z,getTemplateById:A,validateTemplateReplacements:P,processTemplateReplacements:K,getTemplateCategories:M,searchTemplates:G,templates:k,templatesLoading:i,error:$}=Vt(),c=b({selectedTemplate:null,title:"",replacements:{}}),S=b({category:"",search:""}),R=b(!1),N=b(!1),n=b({}),v=b(!1),{hasUnsavedChanges:D,lastSaveTime:F,saveNow:j,restoreFormData:H,clearSavedData:le,hasSavedData:O,getSavedDataInfo:q,markUserInteraction:he,finishInitialization:ie}=Ee(c,{storageKey:"atlas_document_template_form",saveInterval:3e3,excludeFields:[]}),I=T(()=>c.value.selectedTemplate?A(c.value.selectedTemplate):null),E=T(()=>{const g=M();return[{value:"",label:"All Categories"},...g.map(o=>({value:o,label:o.charAt(0).toUpperCase()+o.slice(1)}))]}),ae=T(()=>{let g=k.value;return S.value.category&&(g=g.filter(o=>o.category===S.value.category)),S.value.search&&(g=G(S.value.search)),g}),xe=T(()=>c.value.selectedTemplate&&c.value.title&&!Object.keys(n.value).length),se=()=>{c.value={selectedTemplate:null,title:"",replacements:{}},S.value={category:"",search:""},n.value={},v.value=!1},ue=g=>{c.value.selectedTemplate=g,de(g)},de=g=>{const o=A(g);if(!o)return;const p={};o.fields&&o.fields.forEach(L=>{var ee;p[L]=((ee=o.defaultValues)==null?void 0:ee[L])||""}),c.value.replacements=p,Y(),oe()},Y=()=>{v.value=!0,he(),oe()},oe=()=>{if(n.value={},c.value.selectedTemplate||(n.value.selectedTemplate="Please select a template"),c.value.title||(n.value.title="Document title is required"),c.value.selectedTemplate&&I.value){const g=P(I.value,c.value.replacements);g.isValid||(n.value.replacements=`Missing required fields: ${g.missingFields.join(", ")}`)}return Object.keys(n.value).length===0},be=async()=>{if(oe()){R.value=!0;try{const g={templateId:c.value.selectedTemplate,title:c.value.title.trim(),replacements:K(I.value,c.value.replacements)},o=await z(g);o?(le(),f("document-created",o),f("close"),await Ie(),se()):$.value&&(n.value.general=$.value)}catch(g){console.error("Error creating document from template:",g),n.value.general="Failed to create document. Please try again."}finally{R.value=!1}}},ce=()=>{f("close")},ke=()=>{H(),v.value=!0},De=()=>{le()},me=g=>g.split(/(?=[A-Z])/).join(" ").replace(/^\w/,o=>o.toUpperCase()),Ce=g=>{const o=new Date,p=new Date(g),L=o-p,ee=Math.floor(L/1e3),ne=Math.floor(ee/60);return ne<1?"just now":ne===1?"1 minute ago":`${ne} minutes ago`};return $e(()=>U.open,g=>{g&&(se(),Q(),Ie(()=>{ie()}))}),Re(()=>{U.open&&(se(),Q(),ie())}),(g,o)=>(r(),W(Be,{open:X.open,title:"Create Document from Template",size:"xl",onClose:ce},{default:m(()=>[d(Pe,{show:s(O).value&&!v.value,"saved-data":s(q)(),onRestore:ke,onDismiss:De},null,8,["show","saved-data"]),t("form",{onSubmit:pe(be,["prevent"]),class:"space-y-6"},[t("div",wt,[o[7]||(o[7]=t("div",{class:"border-b border-gray-200 pb-4"},[t("h3",{class:"text-lg font-medium text-gray-900"},"Select Template"),t("p",{class:"mt-1 text-sm text-gray-500"},"Choose a template to create your document from")],-1)),t("div",Ft,[d(s(B),{modelValue:S.value.category,"onUpdate:modelValue":[o[0]||(o[0]=p=>S.value.category=p),Y],label:"Filter by Category",placeholder:"All categories",options:E.value},null,8,["modelValue","options"]),d(s(Z),{modelValue:S.value.search,"onUpdate:modelValue":o[1]||(o[1]=p=>S.value.search=p),label:"Search Templates",placeholder:"Search by name or description...",onInput:Y},{prepend:m(()=>o[4]||(o[4]=[t("svg",{class:"w-4 h-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1)])),_:1},8,["modelValue"])]),s(i)?(r(),u("div",St,o[5]||(o[5]=[t("div",{class:"animate-spin rounded-full h-8 w-8 border-b-2 border-indigo-600 mx-auto"},null,-1),t("p",{class:"mt-2 text-sm text-gray-500"},"Loading templates...",-1)]))):ae.value.length===0?(r(),u("div",It,o[6]||(o[6]=[t("svg",{class:"mx-auto h-12 w-12 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1),t("h3",{class:"mt-2 text-sm font-medium text-gray-900"},"No templates found",-1),t("p",{class:"mt-1 text-sm text-gray-500"},"Try adjusting your filters or search terms",-1)]))):(r(),u("div",Lt,[(r(!0),u(ge,null,fe(ae.value,p=>(r(),u("div",{key:p.id,class:ze(["relative rounded-lg border p-4 cursor-pointer hover:border-indigo-300 transition-colors",{"border-indigo-500 bg-indigo-50":c.value.selectedTemplate===p.id,"border-gray-200":c.value.selectedTemplate!==p.id}]),onClick:L=>ue(p.id)},[t("div",At,[t("div",Mt,[je(t("input",{type:"radio",value:p.id,"onUpdate:modelValue":o[2]||(o[2]=L=>c.value.selectedTemplate=L),class:"h-4 w-4 text-indigo-600 border-gray-300 focus:ring-indigo-500",onChange:L=>de(p.id)},null,40,$t),[[mt,c.value.selectedTemplate]])]),t("div",Rt,[t("h4",zt,h(p.name),1),t("p",jt,h(p.description),1),t("div",Et,[t("span",Bt,h(s(ye)(p.type)),1),p.category?(r(),u("span",Pt,h(p.category),1)):y("",!0)])])])],10,Ut))),128))]))]),c.value.selectedTemplate?(r(),u("div",Nt,[o[13]||(o[13]=t("div",{class:"border-b border-gray-200 pb-4"},[t("h3",{class:"text-lg font-medium text-gray-900"},"Document Details"),t("p",{class:"mt-1 text-sm text-gray-500"},"Provide details for your new document")],-1)),d(s(Z),{modelValue:c.value.title,"onUpdate:modelValue":o[3]||(o[3]=p=>c.value.title=p),label:"Document Title",placeholder:"Enter document title...",error:n.value.title,onInput:Y,required:""},null,8,["modelValue","error"]),I.value&&I.value.fields?(r(),u("div",Ht,[o[8]||(o[8]=t("h4",{class:"text-md font-medium text-gray-900"},"Template Fields",-1)),t("div",Ot,[(r(!0),u(ge,null,fe(I.value.fields,p=>(r(),u("div",{key:p},[d(s(Z),{modelValue:c.value.replacements[p],"onUpdate:modelValue":L=>c.value.replacements[p]=L,label:me(p),placeholder:`Enter ${me(p).toLowerCase()}...`,onInput:Y},null,8,["modelValue","onUpdate:modelValue","label","placeholder"])]))),128))]),n.value.replacements?(r(),u("div",qt,h(n.value.replacements),1)):y("",!0)])):y("",!0),I.value?(r(),u("div",Jt,[o[12]||(o[12]=t("h4",{class:"text-sm font-medium text-gray-900 mb-2"},"Template Information",-1)),t("div",Wt,[t("p",null,[o[9]||(o[9]=t("span",{class:"font-medium"},"Type:",-1)),C(" "+h(s(ye)(I.value.type)),1)]),t("p",null,[o[10]||(o[10]=t("span",{class:"font-medium"},"Category:",-1)),C(" "+h(I.value.category||"Uncategorized"),1)]),I.value.fields?(r(),u("p",Xt,[o[11]||(o[11]=t("span",{class:"font-medium"},"Required Fields:",-1)),C(" "+h(I.value.fields.length),1)])):y("",!0)])])):y("",!0)])):y("",!0),t("div",Kt,[t("div",Gt,[t("div",Yt,[s(D).value?(r(),u("div",Zt,o[14]||(o[14]=[t("div",{class:"w-2 h-2 bg-yellow-400 rounded-full animate-pulse"},null,-1),t("span",{class:"text-sm text-gray-600"},"Unsaved changes",-1)]))):s(F).value?(r(),u("div",Qt,[o[15]||(o[15]=t("div",{class:"w-2 h-2 bg-green-400 rounded-full"},null,-1)),t("span",el," Auto-saved "+h(Ce(s(F).value)),1)])):y("",!0),s(D).value?(r(),W(s(_),{key:2,type:"button",variant:"outline",size:"sm",onClick:s(j),loading:N.value},{default:m(()=>o[16]||(o[16]=[C(" Save Now ",-1)])),_:1,__:[16]},8,["onClick","loading"])):y("",!0)]),t("div",tl,[d(s(_),{type:"button",variant:"outline",onClick:ce,disabled:R.value},{default:m(()=>o[17]||(o[17]=[C(" Cancel ",-1)])),_:1,__:[17]},8,["disabled"]),d(s(_),{type:"submit",variant:"primary",loading:R.value,disabled:!xe.value},{default:m(()=>o[18]||(o[18]=[C(" Create Document ",-1)])),_:1,__:[18]},8,["loading","disabled"])])])])],32)]),_:1},8,["open"]))}},al={class:"p-6"},sl={class:"mb-6 grid grid-cols-1 md:grid-cols-5 gap-4"},ol={key:0,class:"flex items-center space-x-3"},nl={class:"font-medium text-gray-900"},rl={class:"text-sm text-gray-500"},il={key:0,class:"flex items-center space-x-2"},ul={key:0,class:"w-4 h-4 text-green-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},dl={key:1,class:"w-4 h-4 text-red-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},cl={key:2,class:"w-4 h-4 text-blue-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},ml={class:"text-sm"},vl={key:0,class:"text-sm"},pl={class:"font-medium text-gray-900"},gl={class:"text-gray-500"},fl={key:0,class:"text-sm"},yl={key:1,class:"text-gray-400"},hl={key:0,class:"flex items-center space-x-2"},xl={class:"flex items-center justify-between"},bl={class:"text-lg font-medium text-gray-900"},kl={class:"flex items-center space-x-2"},Dl={key:0,class:"text-xs text-amber-600 bg-amber-50 px-2 py-1 rounded"},Cl={key:1,class:"text-xs text-gray-500"},Tl={key:0,class:"space-y-4"},_l={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},Vl={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},wl={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},Fl={key:0,class:"flex flex-wrap gap-2 mt-2"},Sl=["onClick"],Il={key:1,class:"space-y-4"},Ll={class:"border-2 border-dashed border-gray-300 rounded-lg p-6 text-center hover:border-gray-400 transition-colors"},Ul={class:"mt-4"},Al={class:"cursor-pointer"},Ml={key:0,class:"mt-4 p-3 bg-gray-50 rounded-lg border"},$l={class:"flex items-center justify-between"},Rl={class:"flex items-center"},zl={class:"text-sm font-medium text-gray-900"},jl={class:"text-xs text-gray-500"},El={key:2,class:"space-y-4"},Bl={key:0,class:"space-y-4"},Pl={class:"space-y-2"},Nl={class:"flex items-center justify-between"},Hl={class:"flex items-center space-x-4"},Ol={key:0,class:"flex items-center text-sm text-gray-500"},ql={key:0,class:"w-4 h-4 mr-2 text-amber-500 animate-pulse",fill:"currentColor",viewBox:"0 0 20 20"},Jl={key:1,class:"w-4 h-4 mr-2 text-green-500",fill:"currentColor",viewBox:"0 0 20 20"},Wl={key:2},Xl={key:3},Kl={class:"flex space-x-2"},da={__name:"DocumentsListView",setup(X){const V=vt(),U=pt(),f=yt(),{loading:Q,documentStats:z}=ht(),A=b(!1),P=b(!1),K=b("all"),M=b(!1),G=b(!1),k=b("basic"),i=b({title:"",description:"",type:"",status:J.DRAFT,accessLevel:ve.INTERNAL,expirationDate:"",departmentId:null,tags:[],file:null,requiresApproval:!1,approvers:[]}),$=b(""),c=b({search:"",type:"",accessLevel:"",author:""}),S=b({page:0,size:10,total:0}),{hasUnsavedChanges:R,lastSaveTime:N,saveNow:n,restoreFormData:v,clearSavedData:D,hasSavedData:F,getSavedDataInfo:j,markUserInteraction:H,finishInitialization:le}=Ee(i,{storageKey:"atlas_document_form_data",saveInterval:3e3,excludeFields:["file"]}),O=b(!1),q=b(null),he=T(()=>f.filteredDocuments),ie=T(()=>{const a=z.value;return[{label:"Total",value:a.total||0,color:"blue"},{label:"Published",value:a.published||0,color:"green"},{label:"Draft",value:a.draft||0,color:"gray"},{label:"Pending Review",value:a.pendingReview||0,color:"yellow"},{label:"Expired",value:a.expired||0,color:"red"}]}),I=T(()=>[{key:"all",label:"All Documents",count:z.value.total||0},{key:"published",label:"Published",count:z.value.published||0},{key:"draft",label:"Drafts",count:z.value.draft||0},{key:"pending",label:"Pending Review",count:z.value.pendingReview||0},{key:"expired",label:"Expired",count:z.value.expired||0}]),E=[{key:"basic",label:"Basic Information",icon:"info"},{key:"file",label:"File Upload",icon:"document"},{key:"approval",label:"Approval",icon:"check"}],ae=T(()=>Object.values(xt).map(a=>({value:a,label:ye(a)}))),xe=T(()=>ae.value),se=T(()=>Object.values(J).map(a=>({value:a,label:Le(a).label}))),ue=T(()=>Object.values(ve).map(a=>({value:a,label:Ue(a).label}))),de=T(()=>ue.value),Y=T(()=>[{value:"",label:"All Authors"},{value:1,label:"John Doe"},{value:2,label:"Jane Smith"}]),oe=T(()=>[{value:null,label:"No Department"},{value:1,label:"IT Department"},{value:2,label:"HR Department"},{value:3,label:"Operations"}]),be=T(()=>[{value:1,label:"John Doe"},{value:2,label:"Jane Smith"},{value:3,label:"Bob Wilson"}]),ce=[{value:"reviewer",label:"Reviewer"},{value:"approver",label:"Approver"},{value:"manager",label:"Manager"}],ke=[{key:"title",label:"Document",sortable:!0,width:"30%"},{key:"type",label:"Type",sortable:!0,width:"15%"},{key:"status",label:"Status",sortable:!0,width:"12%"},{key:"accessLevel",label:"Access",sortable:!0,width:"12%"},{key:"author",label:"Author",sortable:!0,width:"15%"},{key:"expiration",label:"Expires",sortable:!0,width:"12%"},{key:"actions",label:"Actions",width:"10%",align:"center"}],De=T(()=>{if(!N.value)return"";const a=new Date,e=N.value,l=Math.floor((a-e)/(1e3*60));if(l<1)return"just now";if(l===1)return"1 minute ago";if(l<60)return`${l} minutes ago`;const x=Math.floor(l/60);return x===1?"1 hour ago":x<24?`${x} hours ago`:e.toLocaleDateString()}),me=()=>{v(),O.value=!1,q.value=null},Ce=()=>{D(),O.value=!1,q.value=null},g=()=>{!M.value&&F()&&(q.value=j(),O.value=!0)},o=a=>bt(a),p=a=>a?new Date(a).toLocaleDateString():"Never",L=a=>({policy:"blue",procedure:"green",manual:"purple",report:"yellow",contract:"red",certificate:"indigo",drawing:"pink",specification:"gray"})[a]||"gray",ee=a=>({draft:"gray",pending_review:"yellow",under_review:"blue",approved:"green",published:"green",archived:"gray",expired:"red",rejected:"red"})[a]||"gray",ne=a=>ye(a),Ne=a=>Le(a).label,He=a=>Ue(a).label,Oe=a=>{if(!a)return"text-gray-400";const e=new Date(a),l=new Date,x=new Date(l.getTime()+30*24*60*60*1e3);return e{M.value=!1,g(),F()||Fe(),A.value=!0,k.value="basic",setTimeout(()=>{le()},100)},qe=()=>{P.value=!0},Je=async a=>{P.value=!1,await _e(),U.push(`/documents/${a.id}`)},we=a=>{M.value=!0,We(a),A.value=!0,k.value="basic",F()&&(q.value=j(),O.value=!0),setTimeout(()=>{le()},100)},Te=()=>{R.value&&n(),A.value=!1,O.value=!1,q.value=null,Fe()},Fe=()=>{i.value={title:"",description:"",type:"",status:J.DRAFT,accessLevel:ve.INTERNAL,expirationDate:"",departmentId:null,tags:[],file:null,requiresApproval:!1,approvers:[]},$.value=""},We=a=>{i.value={id:a.id,title:a.title||"",description:a.description||"",type:a.type||"",status:a.status||J.DRAFT,accessLevel:a.accessLevel||ve.INTERNAL,expirationDate:a.expirationDate||"",departmentId:a.departmentId||null,tags:a.tags||[],file:null,requiresApproval:!1,approvers:[]}},Xe=()=>{const a=E.length,e=E.findIndex(l=>l.key===k.value);return Math.round((e+1)/a*100)},Ke=()=>{const a=E.findIndex(e=>e.key===k.value);a{const a=E.findIndex(e=>e.key===k.value);a>0&&(k.value=E[a-1].key)},w=()=>{H()},Ye=()=>{if(w(),$.value.includes(",")){const a=$.value.split(",").map(e=>e.trim()).filter(e=>e);i.value.tags=[...i.value.tags||[],...a],$.value=""}},Ze=a=>{i.value.tags.splice(a,1),w()},Qe=a=>{const e=a.target.files;e&&e[0]&&(i.value.file=e[0],w())},et=()=>{i.value.file=null,w()},tt=()=>{i.value.approvers.push({userId:null,role:"reviewer",order:i.value.approvers.length+1}),w()},lt=a=>{i.value.approvers.splice(a,1),i.value.approvers.forEach((e,l)=>{e.order=l+1}),w()},at=async()=>{G.value=!0;try{M.value?await f.updateDocument(i.value.id,i.value):await f.createDocument(i.value),D(),Te(),await _e()}catch(a){console.error("Error saving document:",a)}finally{G.value=!1}},st=a=>{Se(a)},Se=a=>{U.push(`/documents/${a.id}`)},ot=async a=>{try{const e=await f.downloadDocumentFile(a.id),l=window.URL.createObjectURL(e),x=a.createElement("a");x.style.display="none",x.href=l,x.download=`${a.title}.pdf`,a.body.appendChild(x),x.click(),window.URL.revokeObjectURL(l)}catch(e){console.error("Error downloading document:",e)}},nt=()=>{te()},te=()=>{f.updateFilters(c.value)},rt=()=>{c.value={search:"",type:"",accessLevel:"",author:""},te()},it=a=>{K.value=a;const e={all:"",published:J.PUBLISHED,draft:J.DRAFT,pending:J.PENDING_REVIEW,expired:J.EXPIRED};c.value.status=e[a]||"",te()},ut=({column:a,direction:e})=>{f.changeSorting(a,e)},dt=a=>{f.changePage(a)},_e=async()=>{await f.refreshDocuments()},ct=()=>{console.log("Export documents functionality")};return $e(i,()=>{A.value&&H()},{deep:!0}),Re(async()=>{await f.initializeDocuments();const a=V.query.edit;a&&setTimeout(()=>{const l=f.documents.find(x=>x.id===parseInt(a));l&&we(l),U.replace({path:"/documents"})},500),V.query.create==="true"&&setTimeout(()=>{Ve(),U.replace({path:"/documents"})},500)}),(a,e)=>(r(),W(kt,null,{header:m(()=>[d(Dt,{title:"Documents",description:"Manage documents, templates, versions, and approval workflows",breadcrumbs:[{text:"Documents",to:null}]},{actions:m(()=>[d(s(_),{variant:"outline",size:"sm",onClick:_e},{default:m(()=>e[17]||(e[17]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),C(" Refresh ",-1)])),_:1,__:[17]}),d(s(_),{variant:"outline",size:"sm",onClick:ct},{default:m(()=>e[18]||(e[18]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1),C(" Export ",-1)])),_:1,__:[18]}),d(s(_),{variant:"outline",size:"sm",onClick:qe},{default:m(()=>e[19]||(e[19]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1),C(" From Template ",-1)])),_:1,__:[19]}),d(s(_),{variant:"primary",size:"sm",onClick:Ve},{default:m(()=>e[20]||(e[20]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),C(" Add Document ",-1)])),_:1,__:[20]})]),stats:m(()=>[d(s(Tt),{stats:ie.value},null,8,["stats"])]),tabs:m(()=>[d(s(Me),{modelValue:K.value,"onUpdate:modelValue":e[0]||(e[0]=l=>K.value=l),tabs:I.value,onTabChange:it},null,8,["modelValue","tabs"])]),_:1})]),default:m(()=>[t("div",al,[t("div",sl,[d(s(Z),{modelValue:c.value.search,"onUpdate:modelValue":e[1]||(e[1]=l=>c.value.search=l),placeholder:"Search documents...",onInput:nt},{prepend:m(()=>e[21]||(e[21]=[t("svg",{class:"w-4 h-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1)])),_:1},8,["modelValue"]),d(s(B),{modelValue:c.value.type,"onUpdate:modelValue":[e[2]||(e[2]=l=>c.value.type=l),te],placeholder:"Filter by Type",options:ae.value},null,8,["modelValue","options"]),d(s(B),{modelValue:c.value.accessLevel,"onUpdate:modelValue":[e[3]||(e[3]=l=>c.value.accessLevel=l),te],placeholder:"Filter by Access Level",options:de.value},null,8,["modelValue","options"]),d(s(B),{modelValue:c.value.author,"onUpdate:modelValue":[e[4]||(e[4]=l=>c.value.author=l),te],placeholder:"Filter by Author",options:Y.value},null,8,["modelValue","options"]),d(s(_),{variant:"outline",size:"sm",onClick:rt},{default:m(()=>e[22]||(e[22]=[C(" Clear Filters ",-1)])),_:1,__:[22]})]),d(s(_t),{columns:ke,data:he.value,loading:s(Q),pagination:S.value,"empty-message":"No documents found",onSortChange:ut,onPageChange:dt,onRowClick:st},{title:m(({row:l})=>[l?(r(),u("div",ol,[e[23]||(e[23]=t("div",{class:"w-8 h-8 rounded bg-primary-100 flex items-center justify-center"},[t("svg",{class:"w-4 h-4 text-primary-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})])],-1)),t("div",null,[t("div",nl,h((l==null?void 0:l.title)||"Untitled Document"),1),t("div",rl,h((l==null?void 0:l.description)||"No description"),1)])])):y("",!0)]),type:m(({row:l})=>[l?(r(),W(s(Ae),{key:0,variant:L(l==null?void 0:l.type)},{default:m(()=>[C(h(ne(l==null?void 0:l.type)),1)]),_:2},1032,["variant"])):y("",!0)]),status:m(({row:l})=>[l?(r(),W(s(Ae),{key:0,variant:ee(l==null?void 0:l.status)},{default:m(()=>[C(h(Ne(l==null?void 0:l.status)),1)]),_:2},1032,["variant"])):y("",!0)]),accessLevel:m(({row:l})=>[l?(r(),u("div",il,[(l==null?void 0:l.accessLevel)==="public"?(r(),u("svg",ul,e[24]||(e[24]=[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 12a9 9 0 01-9 9m9-9a9 9 0 00-9-9m9 9H3m9 9v-9m0-9v9"},null,-1)]))):(l==null?void 0:l.accessLevel)==="confidential"?(r(),u("svg",dl,e[25]||(e[25]=[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z"},null,-1)]))):(r(),u("svg",cl,e[26]||(e[26]=[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4"},null,-1)]))),t("span",ml,h(He(l==null?void 0:l.accessLevel)),1)])):y("",!0)]),author:m(({row:l})=>[l?(r(),u("div",vl,[t("div",pl,h((l==null?void 0:l.authorName)||"Unknown Author"),1),t("div",gl,h(p(l==null?void 0:l.createdAt)),1)])):y("",!0)]),expiration:m(({row:l})=>[l?(r(),u("div",fl,[l!=null&&l.expirationDate?(r(),u("div",{key:0,class:ze(Oe(l==null?void 0:l.expirationDate))},h(p(l==null?void 0:l.expirationDate)),3)):(r(),u("span",yl,"No expiration"))])):y("",!0)]),actions:m(({row:l})=>[l?(r(),u("div",hl,[d(s(_),{variant:"ghost",size:"xs",onClick:pe(x=>Se(l),["stop"]),title:"View Document"},{default:m(()=>e[27]||(e[27]=[t("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"}),t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"})],-1)])),_:2,__:[27]},1032,["onClick"]),d(s(_),{variant:"ghost",size:"xs",onClick:pe(x=>we(l),["stop"]),title:"Edit Document"},{default:m(()=>e[28]||(e[28]=[t("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1)])),_:2,__:[28]},1032,["onClick"]),d(s(_),{variant:"ghost",size:"xs",onClick:pe(x=>ot(l),["stop"]),title:"Download Document"},{default:m(()=>e[29]||(e[29]=[t("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 10v6m0 0l-3-3m3 3l3-3M3 17V7a2 2 0 012-2h6l2 2h6a2 2 0 012 2v8a2 2 0 01-2 2H5a2 2 0 01-2-2z"})],-1)])),_:2,__:[29]},1032,["onClick"])])):y("",!0)]),_:1},8,["data","loading","pagination"])]),d(s(Be),{modelValue:A.value,"onUpdate:modelValue":e[15]||(e[15]=l=>A.value=l),size:"xl",onCancel:Te},{header:m(()=>[t("div",xl,[t("h3",bl,h(M.value?"Edit Document":"Create Document"),1),t("div",kl,[M.value&&a.hasUnsavedChanges?(r(),u("span",Dl," Auto-saving... ")):y("",!0),k.value!=="basic"?(r(),u("span",Cl,h(Xe())+"% complete ",1)):y("",!0)])])]),footer:m(()=>[t("div",Nl,[t("div",Hl,[s(R)||s(N)?(r(),u("div",Ol,[s(R)?(r(),u("svg",ql,e[45]||(e[45]=[t("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z","clip-rule":"evenodd"},null,-1)]))):(r(),u("svg",Jl,e[46]||(e[46]=[t("path",{"fill-rule":"evenodd",d:"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z","clip-rule":"evenodd"},null,-1)]))),s(R)?(r(),u("span",Wl,"Auto-saving...")):s(N)?(r(),u("span",Xl,"Last saved "+h(De.value),1)):y("",!0)])):y("",!0),k.value!=="basic"?(r(),W(s(_),{key:1,variant:"outline",size:"sm",onClick:Ge},{default:m(()=>e[47]||(e[47]=[C(" ← Previous ",-1)])),_:1,__:[47]})):y("",!0)]),t("div",Kl,[d(s(_),{variant:"outline",onClick:Te},{default:m(()=>e[48]||(e[48]=[C(" Cancel ",-1)])),_:1,__:[48]}),k.value!=="approval"?(r(),W(s(_),{key:0,variant:"primary",onClick:Ke},{default:m(()=>e[49]||(e[49]=[C(" Next ",-1)])),_:1,__:[49]})):(r(),W(s(_),{key:1,variant:"primary",loading:G.value,onClick:at},{default:m(()=>[C(h(M.value?"Update Document":"Create Document"),1)]),_:1},8,["loading"]))])])]),default:m(()=>[d(s(Pe),{visible:O.value,"saved-data-info":q.value,onRestore:me,onDismiss:Ce},null,8,["visible","saved-data-info"]),d(s(Me),{modelValue:k.value,"onUpdate:modelValue":e[5]||(e[5]=l=>k.value=l),tabs:E,class:"mb-6"},null,8,["modelValue"]),k.value==="basic"?(r(),u("div",Tl,[t("div",_l,[d(s(Z),{modelValue:i.value.title,"onUpdate:modelValue":e[6]||(e[6]=l=>i.value.title=l),label:"Document Title",placeholder:"Enter document title",required:"",onInput:w},null,8,["modelValue"]),d(s(B),{modelValue:i.value.type,"onUpdate:modelValue":[e[7]||(e[7]=l=>i.value.type=l),w],label:"Document Type",options:xe.value,placeholder:"Select document type",required:""},null,8,["modelValue","options"])]),t("div",Vl,[d(s(B),{modelValue:i.value.status,"onUpdate:modelValue":[e[8]||(e[8]=l=>i.value.status=l),w],label:"Status",options:se.value,placeholder:"Select status",required:""},null,8,["modelValue","options"]),d(s(B),{modelValue:i.value.accessLevel,"onUpdate:modelValue":[e[9]||(e[9]=l=>i.value.accessLevel=l),w],label:"Access Level",options:ue.value,placeholder:"Select access level",required:""},null,8,["modelValue","options"])]),t("div",wl,[d(s(Z),{modelValue:i.value.expirationDate,"onUpdate:modelValue":e[10]||(e[10]=l=>i.value.expirationDate=l),label:"Expiration Date",type:"date",onInput:w},null,8,["modelValue"]),d(s(B),{modelValue:i.value.departmentId,"onUpdate:modelValue":[e[11]||(e[11]=l=>i.value.departmentId=l),w],label:"Department",options:oe.value,placeholder:"Select department"},null,8,["modelValue","options"])]),t("div",null,[e[30]||(e[30]=t("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Description",-1)),je(t("textarea",{"onUpdate:modelValue":e[12]||(e[12]=l=>i.value.description=l),placeholder:"Brief description of the document...",rows:"3",class:"w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm",onInput:w},null,544),[[gt,i.value.description]])]),t("div",null,[e[32]||(e[32]=t("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Tags",-1)),d(s(Z),{modelValue:$.value,"onUpdate:modelValue":e[13]||(e[13]=l=>$.value=l),placeholder:"Add tags (comma separated)",onInput:Ye},null,8,["modelValue"]),i.value.tags&&i.value.tags.length>0?(r(),u("div",Fl,[(r(!0),u(ge,null,fe(i.value.tags,(l,x)=>(r(),u("span",{key:x,class:"inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-blue-100 text-blue-800"},[C(h(l)+" ",1),t("button",{type:"button",class:"ml-1.5 inline-flex items-center justify-center w-4 h-4 rounded-full hover:bg-blue-200",onClick:re=>Ze(x)},e[31]||(e[31]=[t("svg",{class:"w-2 h-2",stroke:"currentColor",fill:"none",viewBox:"0 0 8 8"},[t("path",{"stroke-linecap":"round",d:"m1 1 6 6m0-6-6 6"})],-1)]),8,Sl)]))),128))])):y("",!0)])])):y("",!0),k.value==="file"?(r(),u("div",Il,[t("div",null,[e[38]||(e[38]=t("label",{class:"block text-sm font-medium text-gray-700 mb-2"}," Document File ",-1)),e[39]||(e[39]=t("p",{class:"text-sm text-gray-500 mb-3"}," Upload the main document file (PDF, Word, etc.) ",-1)),t("div",Ll,[e[34]||(e[34]=t("svg",{class:"mx-auto h-12 w-12 text-gray-400",stroke:"currentColor",fill:"none",viewBox:"0 0 48 48"},[t("path",{d:"M28 8H12a4 4 0 00-4 4v20m32-12v8m0 0v8a4 4 0 01-4 4H12a4 4 0 01-4-4v-4m32-4l-3.172-3.172a4 4 0 00-5.656 0L28 28M8 32l9.172-9.172a4 4 0 015.656 0L28 28m0 0l4 4m4-24h8m-4-4v8m-12 4h.02","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})],-1)),t("div",Ul,[t("label",Al,[e[33]||(e[33]=t("span",{class:"mt-2 block text-sm font-medium text-gray-900"}," Drop file here or click to upload ",-1)),t("input",{type:"file",class:"sr-only",accept:".pdf,.doc,.docx,.txt,.rtf",onChange:Qe},null,32)])]),e[35]||(e[35]=t("p",{class:"mt-2 text-xs text-gray-500"}," PDF, DOC, DOCX, TXT, RTF up to 100MB ",-1))]),i.value.file?(r(),u("div",Ml,[t("div",$l,[t("div",Rl,[e[36]||(e[36]=t("svg",{class:"w-5 h-5 text-gray-400 mr-3",fill:"currentColor",viewBox:"0 0 20 20"},[t("path",{"fill-rule":"evenodd",d:"M4 4a2 2 0 012-2h4.586A2 2 0 0112 2.586L15.414 6A2 2 0 0116 7.414V16a2 2 0 01-2 2H6a2 2 0 01-2-2V4zm2 6a1 1 0 011-1h6a1 1 0 110 2H7a1 1 0 01-1-1zm1 3a1 1 0 100 2h6a1 1 0 100-2H7z","clip-rule":"evenodd"})],-1)),t("div",null,[t("span",zl,h(i.value.file.name),1),t("div",jl,h(o(i.value.file.size)),1)])]),d(s(_),{variant:"ghost",size:"sm",onClick:et,class:"text-red-600 hover:text-red-800"},{default:m(()=>e[37]||(e[37]=[t("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1)])),_:1,__:[37]})])])):y("",!0)])])):y("",!0),k.value==="approval"?(r(),u("div",El,[t("div",null,[e[40]||(e[40]=t("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Approval Required",-1)),d(s(Ct),{modelValue:i.value.requiresApproval,"onUpdate:modelValue":e[14]||(e[14]=l=>i.value.requiresApproval=l),label:"This document requires approval before publishing",onChange:w},null,8,["modelValue"])]),i.value.requiresApproval?(r(),u("div",Bl,[t("div",null,[e[43]||(e[43]=t("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Approvers",-1)),e[44]||(e[44]=t("p",{class:"text-sm text-gray-500 mb-3"}," Add users who need to approve this document ",-1)),t("div",Pl,[(r(!0),u(ge,null,fe(i.value.approvers,(l,x)=>(r(),u("div",{key:x,class:"flex items-center space-x-2"},[d(s(B),{modelValue:l.userId,"onUpdate:modelValue":[re=>l.userId=re,w],placeholder:"Select approver",options:be.value,class:"flex-1"},null,8,["modelValue","onUpdate:modelValue","options"]),d(s(B),{modelValue:l.role,"onUpdate:modelValue":[re=>l.role=re,w],placeholder:"Role",options:ce,class:"w-32"},null,8,["modelValue","onUpdate:modelValue"]),d(s(_),{variant:"ghost",size:"sm",onClick:re=>lt(x),class:"text-red-600"},{default:m(()=>e[41]||(e[41]=[t("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1)])),_:2,__:[41]},1032,["onClick"])]))),128))]),d(s(_),{variant:"outline",size:"sm",onClick:tt,class:"mt-2"},{default:m(()=>e[42]||(e[42]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),C(" Add Approver ",-1)])),_:1,__:[42]})])])):y("",!0)])):y("",!0)]),_:1},8,["modelValue"]),d(ll,{open:P.value,onClose:e[16]||(e[16]=l=>P.value=!1),onDocumentCreated:Je},null,8,["open"])]),_:1}))}};export{da as default}; diff --git a/frontend/dist/assets/DocumentsView-CtN4VG-T.js b/frontend/dist/assets/DocumentsView-CtN4VG-T.js new file mode 100644 index 00000000..15fdb0f7 --- /dev/null +++ b/frontend/dist/assets/DocumentsView-CtN4VG-T.js @@ -0,0 +1 @@ +import{i as o,f as t,g as r}from"./index-QAlcqU00.js";const a={__name:"DocumentsView",setup(n){return(c,s)=>{const e=t("router-view");return r(),o(e)}}};export{a as default}; diff --git a/frontend/dist/assets/EditAssetView-DjSfVV7v.js b/frontend/dist/assets/EditAssetView-CUJ7_T6-.js similarity index 94% rename from frontend/dist/assets/EditAssetView-DjSfVV7v.js rename to frontend/dist/assets/EditAssetView-CUJ7_T6-.js index 1b75fa26..e0e5b4d2 100644 --- a/frontend/dist/assets/EditAssetView-DjSfVV7v.js +++ b/frontend/dist/assets/EditAssetView-CUJ7_T6-.js @@ -1 +1 @@ -import{_ as B,r as c,c as H,o as q,a as d,b as t,d as o,w as v,e as s,F as p,s as j,v as $,g as m,k as b,j as D,ae as Y,n as z,aU as G,t as f,af as Q,aQ as W}from"./index-BUdRbiwj.js";import{F as i}from"./FPInput-CzR_dWoe.js";import{F as X}from"./FPCard-qHzcEQAE.js";import{F as k}from"./FPCheckbox-Bu8jNAEW.js";import{F as y}from"./FPSelect-C7p47Ma2.js";const J={class:"edit-asset-view"},K={class:"flex items-center justify-between mb-6"},Z={class:"flex items-center space-x-3"},h={key:0,class:"flex items-center justify-center py-12"},_={key:1,class:"max-w-4xl mx-auto"},ee={class:"space-y-6"},le={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},ae={class:"md:col-span-2"},te={key:0,class:"mt-1 text-sm text-red-600"},oe={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},se={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},re={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},ie={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},ne={class:"flex items-start space-x-3 pt-6"},ue={class:"flex items-start space-x-3 pt-6"},de={key:0,class:"p-4 bg-red-50 border border-red-200 rounded-lg"},me={class:"flex items-start"},ve={class:"text-sm text-red-700 space-y-1"},pe={class:"flex items-center justify-between pt-6 border-t mt-6"},be={class:"flex items-center space-x-3"},ce={key:2,class:"text-center py-12"},ye={__name:"EditAssetView",setup(Ve){const x=$(),C=j(),g=c(!0),V=c(!1),l=c(null),A=c(null),r=c({}),N=[{value:"HVAC",label:"HVAC"},{value:"ELEVATOR",label:"Elevator"},{value:"SECURITY",label:"Security"},{value:"ELECTRICAL",label:"Electrical"},{value:"PLUMBING",label:"Plumbing"},{value:"MECHANICAL",label:"Mechanical"},{value:"STRUCTURAL",label:"Structural"},{value:"IT_EQUIPMENT",label:"IT Equipment"},{value:"SAFETY",label:"Safety"},{value:"OTHER",label:"Other"}],S=[{value:"OPERATIONAL",label:"Operational"},{value:"MAINTENANCE",label:"Under Maintenance"},{value:"DOWN",label:"Out of Service"},{value:"DECOMMISSIONED",label:"Decommissioned"}],w=[{value:"LOW",label:"Low"},{value:"MEDIUM",label:"Medium"},{value:"HIGH",label:"High"},{value:"CRITICAL",label:"Critical"}],F=[{value:"Roof Level 3",label:"Roof Level 3"},{value:"Main Lobby",label:"Main Lobby"},{value:"Security Office",label:"Security Office"},{value:"Basement",label:"Basement"},{value:"Floor 1",label:"Floor 1"},{value:"Floor 2",label:"Floor 2"},{value:"Floor 3",label:"Floor 3"}],P=[{value:"REACTIVE",label:"Reactive"},{value:"PREVENTIVE",label:"Preventive"},{value:"PREDICTIVE",label:"Predictive"},{value:"CONDITION_BASED",label:"Condition-Based"}],M=H(()=>Object.keys(r.value).length===0),O=async()=>{g.value=!0,setTimeout(()=>{const e={id:parseInt(C.params.id),name:"Main HVAC Unit",description:"Primary heating and cooling system for floors 1-3",assetNumber:"HVAC-001",category:"HVAC",subcategory:"Air Handler",status:"OPERATIONAL",criticality:"HIGH",manufacturer:"Carrier",model:"30HXC",serialNumber:"HV001234",modelYear:2020,location:"Roof Level 3",condition:"Good",purchasePrice:45e3,currentValue:38e3,purchaseDate:"2020-03-15",installationDate:"2020-03-15",commissionDate:"2020-03-20",depreciationRate:5,lastMaintenanceDate:"2024-01-15",nextMaintenanceDate:"2024-04-15",maintenanceStrategy:"PREVENTIVE",maintenanceInterval:90,barcode:"HV001234",isActive:!0,isCritical:!0};l.value={...e},A.value={...e},g.value=!1},1e3)},u=n=>{var e;switch(n){case"name":(e=l.value.name)!=null&&e.trim()?delete r.value.name:r.value.name="Asset name is required";break;case"category":l.value.category?delete r.value.category:r.value.category="Category is required";break;case"status":l.value.status?delete r.value.status:r.value.status="Status is required";break;case"criticality":l.value.criticality?delete r.value.criticality:r.value.criticality="Criticality is required";break}},R=()=>(r.value={},u("name"),u("category"),u("status"),u("criticality"),Object.keys(r.value).length===0),T=n=>({name:"Asset Name",category:"Category",status:"Status",criticality:"Criticality",assetNumber:"Asset Number"})[n]||n,L=()=>{l.value={...A.value},r.value={}},I=async()=>{if(R())try{V.value=!0,await new Promise(n=>setTimeout(n,2e3)),x.push(`/assets/${l.value.id}`)}catch(n){console.error("Failed to save asset:",n)}finally{V.value=!1}},E=()=>{x.push(`/assets/${C.params.id}`)};return q(()=>{O()}),(n,e)=>(m(),d("div",J,[t("div",K,[e[34]||(e[34]=t("div",null,[t("h1",{class:"text-2xl font-bold text-gray-900"},"Edit Asset"),t("p",{class:"text-gray-600 mt-1"},"Update asset information and settings")],-1)),t("div",Z,[o(s(p),{variant:"ghost",onClick:E},{default:v(()=>e[32]||(e[32]=[b(" Cancel ",-1)])),_:1,__:[32]}),o(s(p),{onClick:I,loading:V.value,disabled:!M.value},{default:v(()=>e[33]||(e[33]=[b(" Save Changes ",-1)])),_:1,__:[33]},8,["loading","disabled"])])]),g.value?(m(),d("div",h,e[35]||(e[35]=[t("div",{class:"flex items-center space-x-2 text-gray-500"},[t("svg",{class:"w-8 h-8 animate-spin",fill:"none",viewBox:"0 0 24 24"},[t("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"}),t("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]),t("span",null,"Loading asset...")],-1)]))):l.value?(m(),d("div",_,[o(s(X),{class:"p-6"},{default:v(()=>[t("div",ee,[t("div",null,[e[37]||(e[37]=t("h2",{class:"text-xl font-semibold text-gray-900 mb-4 border-b pb-2"},"Basic Information",-1)),t("div",le,[o(s(i),{modelValue:l.value.name,"onUpdate:modelValue":e[0]||(e[0]=a=>l.value.name=a),label:"Asset Name",placeholder:"Enter asset name",required:!0,error:r.value.name,onBlur:e[1]||(e[1]=a=>u("name"))},null,8,["modelValue","error"]),o(s(i),{modelValue:l.value.assetNumber,"onUpdate:modelValue":e[2]||(e[2]=a=>l.value.assetNumber=a),label:"Asset Number",placeholder:"Unique identifier",error:r.value.assetNumber,onBlur:e[3]||(e[3]=a=>u("assetNumber"))},null,8,["modelValue","error"]),t("div",ae,[e[36]||(e[36]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Description",-1)),Y(t("textarea",{"onUpdate:modelValue":e[4]||(e[4]=a=>l.value.description=a),class:z(["w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",{"border-red-300":r.value.description}]),placeholder:"Describe the asset's purpose and characteristics",rows:"3"},null,2),[[G,l.value.description]]),r.value.description?(m(),d("p",te,f(r.value.description),1)):D("",!0)]),o(s(y),{modelValue:l.value.category,"onUpdate:modelValue":e[5]||(e[5]=a=>l.value.category=a),label:"Category",placeholder:"Select asset category",options:N,required:!0,error:r.value.category,onChange:e[6]||(e[6]=a=>u("category"))},null,8,["modelValue","error"]),o(s(i),{modelValue:l.value.subcategory,"onUpdate:modelValue":e[7]||(e[7]=a=>l.value.subcategory=a),label:"Subcategory",placeholder:"Specific type within category"},null,8,["modelValue"]),o(s(y),{modelValue:l.value.status,"onUpdate:modelValue":e[8]||(e[8]=a=>l.value.status=a),label:"Status",placeholder:"Select current status",options:S,required:!0,error:r.value.status,onChange:e[9]||(e[9]=a=>u("status"))},null,8,["modelValue","error"]),o(s(y),{modelValue:l.value.criticality,"onUpdate:modelValue":e[10]||(e[10]=a=>l.value.criticality=a),label:"Criticality",placeholder:"Select criticality level",options:w,required:!0,error:r.value.criticality,onChange:e[11]||(e[11]=a=>u("criticality"))},null,8,["modelValue","error"])])]),t("div",null,[e[38]||(e[38]=t("h2",{class:"text-xl font-semibold text-gray-900 mb-4 border-b pb-2"},"Physical Details",-1)),t("div",oe,[o(s(i),{modelValue:l.value.manufacturer,"onUpdate:modelValue":e[12]||(e[12]=a=>l.value.manufacturer=a),label:"Manufacturer",placeholder:"Asset manufacturer"},null,8,["modelValue"]),o(s(i),{modelValue:l.value.model,"onUpdate:modelValue":e[13]||(e[13]=a=>l.value.model=a),label:"Model",placeholder:"Model number or name"},null,8,["modelValue"]),o(s(i),{modelValue:l.value.serialNumber,"onUpdate:modelValue":e[14]||(e[14]=a=>l.value.serialNumber=a),label:"Serial Number",placeholder:"Unique serial number"},null,8,["modelValue"]),o(s(i),{modelValue:l.value.modelYear,"onUpdate:modelValue":e[15]||(e[15]=a=>l.value.modelYear=a),modelModifiers:{number:!0},type:"number",label:"Model Year",placeholder:"Year of manufacture",min:1900,max:new Date().getFullYear()+1},null,8,["modelValue","max"]),o(s(y),{modelValue:l.value.location,"onUpdate:modelValue":e[16]||(e[16]=a=>l.value.location=a),label:"Location",placeholder:"Select asset location",options:F},null,8,["modelValue"]),o(s(i),{modelValue:l.value.condition,"onUpdate:modelValue":e[17]||(e[17]=a=>l.value.condition=a),label:"Condition",placeholder:"Current condition (Good, Fair, Poor)"},null,8,["modelValue"])])]),t("div",null,[e[39]||(e[39]=t("h2",{class:"text-xl font-semibold text-gray-900 mb-4 border-b pb-2"},"Financial Information",-1)),t("div",se,[o(s(i),{modelValue:l.value.purchasePrice,"onUpdate:modelValue":e[18]||(e[18]=a=>l.value.purchasePrice=a),modelModifiers:{number:!0},type:"number",label:"Purchase Price",placeholder:"0.00",step:"0.01",min:"0"},null,8,["modelValue"]),o(s(i),{modelValue:l.value.currentValue,"onUpdate:modelValue":e[19]||(e[19]=a=>l.value.currentValue=a),modelModifiers:{number:!0},type:"number",label:"Current Value",placeholder:"0.00",step:"0.01",min:"0"},null,8,["modelValue"]),o(s(i),{modelValue:l.value.purchaseDate,"onUpdate:modelValue":e[20]||(e[20]=a=>l.value.purchaseDate=a),type:"date",label:"Purchase Date"},null,8,["modelValue"]),o(s(i),{modelValue:l.value.installationDate,"onUpdate:modelValue":e[21]||(e[21]=a=>l.value.installationDate=a),type:"date",label:"Installation Date"},null,8,["modelValue"]),o(s(i),{modelValue:l.value.commissionDate,"onUpdate:modelValue":e[22]||(e[22]=a=>l.value.commissionDate=a),type:"date",label:"Commission Date"},null,8,["modelValue"]),o(s(i),{modelValue:l.value.depreciationRate,"onUpdate:modelValue":e[23]||(e[23]=a=>l.value.depreciationRate=a),modelModifiers:{number:!0},type:"number",label:"Depreciation Rate (%)",placeholder:"0",step:"0.1",min:"0",max:"100"},null,8,["modelValue"])])]),t("div",null,[e[40]||(e[40]=t("h2",{class:"text-xl font-semibold text-gray-900 mb-4 border-b pb-2"},"Maintenance Information",-1)),t("div",re,[o(s(i),{modelValue:l.value.lastMaintenanceDate,"onUpdate:modelValue":e[24]||(e[24]=a=>l.value.lastMaintenanceDate=a),type:"date",label:"Last Maintenance Date"},null,8,["modelValue"]),o(s(i),{modelValue:l.value.nextMaintenanceDate,"onUpdate:modelValue":e[25]||(e[25]=a=>l.value.nextMaintenanceDate=a),type:"date",label:"Next Maintenance Date"},null,8,["modelValue"]),o(s(y),{modelValue:l.value.maintenanceStrategy,"onUpdate:modelValue":e[26]||(e[26]=a=>l.value.maintenanceStrategy=a),label:"Maintenance Strategy",placeholder:"Select strategy",options:P},null,8,["modelValue"]),o(s(i),{modelValue:l.value.maintenanceInterval,"onUpdate:modelValue":e[27]||(e[27]=a=>l.value.maintenanceInterval=a),modelModifiers:{number:!0},type:"number",label:"Maintenance Interval (days)",placeholder:"0",min:"1"},null,8,["modelValue"])])]),t("div",null,[e[43]||(e[43]=t("h2",{class:"text-xl font-semibold text-gray-900 mb-4 border-b pb-2"},"Additional Information",-1)),t("div",ie,[o(s(i),{modelValue:l.value.barcode,"onUpdate:modelValue":e[28]||(e[28]=a=>l.value.barcode=a),label:"Barcode/QR Code",placeholder:"Enter or scan barcode"},null,8,["modelValue"]),t("div",ne,[o(s(k),{id:"is-active",modelValue:l.value.isActive,"onUpdate:modelValue":e[29]||(e[29]=a=>l.value.isActive=a)},null,8,["modelValue"]),e[41]||(e[41]=t("div",null,[t("label",{for:"is-active",class:"text-sm font-medium text-gray-700"},"Asset is Active"),t("p",{class:"text-sm text-gray-500 mt-1"}," Inactive assets are excluded from maintenance schedules ")],-1))]),t("div",ue,[o(s(k),{id:"is-critical",modelValue:l.value.isCritical,"onUpdate:modelValue":e[30]||(e[30]=a=>l.value.isCritical=a)},null,8,["modelValue"]),e[42]||(e[42]=t("div",null,[t("label",{for:"is-critical",class:"text-sm font-medium text-gray-700"},"Critical Asset"),t("p",{class:"text-sm text-gray-500 mt-1"}," Critical assets receive priority in maintenance scheduling ")],-1))])])]),Object.keys(r.value).length?(m(),d("div",de,[t("div",me,[e[45]||(e[45]=t("svg",{class:"w-5 h-5 text-red-400 mt-0.5 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),t("div",null,[e[44]||(e[44]=t("h4",{class:"text-sm font-medium text-red-800 mb-1"},"Please fix the following errors:",-1)),t("ul",ve,[(m(!0),d(Q,null,W(r.value,(a,U)=>(m(),d("li",{key:U},' " '+f(T(U))+": "+f(a),1))),128))])])])])):D("",!0)]),t("div",pe,[o(s(p),{variant:"secondary",onClick:L},{default:v(()=>e[46]||(e[46]=[b(" Reset Changes ",-1)])),_:1,__:[46]}),t("div",be,[o(s(p),{variant:"ghost",onClick:E},{default:v(()=>e[47]||(e[47]=[b(" Cancel ",-1)])),_:1,__:[47]}),o(s(p),{onClick:I,loading:V.value,disabled:!M.value},{default:v(()=>e[48]||(e[48]=[b(" Save Changes ",-1)])),_:1,__:[48]},8,["loading","disabled"])])])]),_:1})])):(m(),d("div",ce,[e[50]||(e[50]=t("svg",{class:"w-12 h-12 mx-auto mb-4 text-red-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),e[51]||(e[51]=t("h3",{class:"text-lg font-medium text-gray-900 mb-2"},"Asset Not Found",-1)),e[52]||(e[52]=t("p",{class:"text-gray-500 mb-4"},"The requested asset could not be found.",-1)),o(s(p),{onClick:e[31]||(e[31]=a=>n.$router.push("/assets"))},{default:v(()=>e[49]||(e[49]=[b(" Back to Assets ",-1)])),_:1,__:[49]})]))]))}},Me=B(ye,[["__scopeId","data-v-ba4f7f7a"]]);export{Me as default}; +import{_ as B,r as c,c as H,o as q,a as d,b as t,d as o,w as v,e as s,F as p,s as j,v as $,g as m,k as b,j as U,ae as Y,n as z,aV as G,t as f,af as Q,aR as W}from"./index-QAlcqU00.js";import{F as i}from"./FPInput-D5RURom0.js";import{F as X}from"./FPCard-AB6NRXg5.js";import{F as k}from"./FPCheckbox-DcRYwN3n.js";import{F as y}from"./FPSelect-j7n_x8eB.js";const J={class:"edit-asset-view"},K={class:"flex items-center justify-between mb-6"},Z={class:"flex items-center space-x-3"},h={key:0,class:"flex items-center justify-center py-12"},_={key:1,class:"max-w-4xl mx-auto"},ee={class:"space-y-6"},le={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},ae={class:"md:col-span-2"},te={key:0,class:"mt-1 text-sm text-red-600"},oe={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},se={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},re={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},ie={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},ne={class:"flex items-start space-x-3 pt-6"},ue={class:"flex items-start space-x-3 pt-6"},de={key:0,class:"p-4 bg-red-50 border border-red-200 rounded-lg"},me={class:"flex items-start"},ve={class:"text-sm text-red-700 space-y-1"},pe={class:"flex items-center justify-between pt-6 border-t mt-6"},be={class:"flex items-center space-x-3"},ce={key:2,class:"text-center py-12"},ye={__name:"EditAssetView",setup(Ve){const x=$(),C=j(),g=c(!0),V=c(!1),l=c(null),A=c(null),r=c({}),N=[{value:"HVAC",label:"HVAC"},{value:"ELEVATOR",label:"Elevator"},{value:"SECURITY",label:"Security"},{value:"ELECTRICAL",label:"Electrical"},{value:"PLUMBING",label:"Plumbing"},{value:"MECHANICAL",label:"Mechanical"},{value:"STRUCTURAL",label:"Structural"},{value:"IT_EQUIPMENT",label:"IT Equipment"},{value:"SAFETY",label:"Safety"},{value:"OTHER",label:"Other"}],S=[{value:"OPERATIONAL",label:"Operational"},{value:"MAINTENANCE",label:"Under Maintenance"},{value:"DOWN",label:"Out of Service"},{value:"DECOMMISSIONED",label:"Decommissioned"}],w=[{value:"LOW",label:"Low"},{value:"MEDIUM",label:"Medium"},{value:"HIGH",label:"High"},{value:"CRITICAL",label:"Critical"}],F=[{value:"Roof Level 3",label:"Roof Level 3"},{value:"Main Lobby",label:"Main Lobby"},{value:"Security Office",label:"Security Office"},{value:"Basement",label:"Basement"},{value:"Floor 1",label:"Floor 1"},{value:"Floor 2",label:"Floor 2"},{value:"Floor 3",label:"Floor 3"}],P=[{value:"REACTIVE",label:"Reactive"},{value:"PREVENTIVE",label:"Preventive"},{value:"PREDICTIVE",label:"Predictive"},{value:"CONDITION_BASED",label:"Condition-Based"}],M=H(()=>Object.keys(r.value).length===0),R=async()=>{g.value=!0,setTimeout(()=>{const e={id:parseInt(C.params.id),name:"Main HVAC Unit",description:"Primary heating and cooling system for floors 1-3",assetNumber:"HVAC-001",category:"HVAC",subcategory:"Air Handler",status:"OPERATIONAL",criticality:"HIGH",manufacturer:"Carrier",model:"30HXC",serialNumber:"HV001234",modelYear:2020,location:"Roof Level 3",condition:"Good",purchasePrice:45e3,currentValue:38e3,purchaseDate:"2020-03-15",installationDate:"2020-03-15",commissionDate:"2020-03-20",depreciationRate:5,lastMaintenanceDate:"2024-01-15",nextMaintenanceDate:"2024-04-15",maintenanceStrategy:"PREVENTIVE",maintenanceInterval:90,barcode:"HV001234",isActive:!0,isCritical:!0};l.value={...e},A.value={...e},g.value=!1},1e3)},u=n=>{var e;switch(n){case"name":(e=l.value.name)!=null&&e.trim()?delete r.value.name:r.value.name="Asset name is required";break;case"category":l.value.category?delete r.value.category:r.value.category="Category is required";break;case"status":l.value.status?delete r.value.status:r.value.status="Status is required";break;case"criticality":l.value.criticality?delete r.value.criticality:r.value.criticality="Criticality is required";break}},O=()=>(r.value={},u("name"),u("category"),u("status"),u("criticality"),Object.keys(r.value).length===0),T=n=>({name:"Asset Name",category:"Category",status:"Status",criticality:"Criticality",assetNumber:"Asset Number"})[n]||n,L=()=>{l.value={...A.value},r.value={}},I=async()=>{if(O())try{V.value=!0,await new Promise(n=>setTimeout(n,2e3)),x.push(`/assets/${l.value.id}`)}catch(n){console.error("Failed to save asset:",n)}finally{V.value=!1}},E=()=>{x.push(`/assets/${C.params.id}`)};return q(()=>{R()}),(n,e)=>(m(),d("div",J,[t("div",K,[e[34]||(e[34]=t("div",null,[t("h1",{class:"text-2xl font-bold text-gray-900"},"Edit Asset"),t("p",{class:"text-gray-600 mt-1"},"Update asset information and settings")],-1)),t("div",Z,[o(s(p),{variant:"ghost",onClick:E},{default:v(()=>e[32]||(e[32]=[b(" Cancel ",-1)])),_:1,__:[32]}),o(s(p),{onClick:I,loading:V.value,disabled:!M.value},{default:v(()=>e[33]||(e[33]=[b(" Save Changes ",-1)])),_:1,__:[33]},8,["loading","disabled"])])]),g.value?(m(),d("div",h,e[35]||(e[35]=[t("div",{class:"flex items-center space-x-2 text-gray-500"},[t("svg",{class:"w-8 h-8 animate-spin",fill:"none",viewBox:"0 0 24 24"},[t("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"}),t("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]),t("span",null,"Loading asset...")],-1)]))):l.value?(m(),d("div",_,[o(s(X),{class:"p-6"},{default:v(()=>[t("div",ee,[t("div",null,[e[37]||(e[37]=t("h2",{class:"text-xl font-semibold text-gray-900 mb-4 border-b pb-2"},"Basic Information",-1)),t("div",le,[o(s(i),{modelValue:l.value.name,"onUpdate:modelValue":e[0]||(e[0]=a=>l.value.name=a),label:"Asset Name",placeholder:"Enter asset name",required:!0,error:r.value.name,onBlur:e[1]||(e[1]=a=>u("name"))},null,8,["modelValue","error"]),o(s(i),{modelValue:l.value.assetNumber,"onUpdate:modelValue":e[2]||(e[2]=a=>l.value.assetNumber=a),label:"Asset Number",placeholder:"Unique identifier",error:r.value.assetNumber,onBlur:e[3]||(e[3]=a=>u("assetNumber"))},null,8,["modelValue","error"]),t("div",ae,[e[36]||(e[36]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Description",-1)),Y(t("textarea",{"onUpdate:modelValue":e[4]||(e[4]=a=>l.value.description=a),class:z(["w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",{"border-red-300":r.value.description}]),placeholder:"Describe the asset's purpose and characteristics",rows:"3"},null,2),[[G,l.value.description]]),r.value.description?(m(),d("p",te,f(r.value.description),1)):U("",!0)]),o(s(y),{modelValue:l.value.category,"onUpdate:modelValue":e[5]||(e[5]=a=>l.value.category=a),label:"Category",placeholder:"Select asset category",options:N,required:!0,error:r.value.category,onChange:e[6]||(e[6]=a=>u("category"))},null,8,["modelValue","error"]),o(s(i),{modelValue:l.value.subcategory,"onUpdate:modelValue":e[7]||(e[7]=a=>l.value.subcategory=a),label:"Subcategory",placeholder:"Specific type within category"},null,8,["modelValue"]),o(s(y),{modelValue:l.value.status,"onUpdate:modelValue":e[8]||(e[8]=a=>l.value.status=a),label:"Status",placeholder:"Select current status",options:S,required:!0,error:r.value.status,onChange:e[9]||(e[9]=a=>u("status"))},null,8,["modelValue","error"]),o(s(y),{modelValue:l.value.criticality,"onUpdate:modelValue":e[10]||(e[10]=a=>l.value.criticality=a),label:"Criticality",placeholder:"Select criticality level",options:w,required:!0,error:r.value.criticality,onChange:e[11]||(e[11]=a=>u("criticality"))},null,8,["modelValue","error"])])]),t("div",null,[e[38]||(e[38]=t("h2",{class:"text-xl font-semibold text-gray-900 mb-4 border-b pb-2"},"Physical Details",-1)),t("div",oe,[o(s(i),{modelValue:l.value.manufacturer,"onUpdate:modelValue":e[12]||(e[12]=a=>l.value.manufacturer=a),label:"Manufacturer",placeholder:"Asset manufacturer"},null,8,["modelValue"]),o(s(i),{modelValue:l.value.model,"onUpdate:modelValue":e[13]||(e[13]=a=>l.value.model=a),label:"Model",placeholder:"Model number or name"},null,8,["modelValue"]),o(s(i),{modelValue:l.value.serialNumber,"onUpdate:modelValue":e[14]||(e[14]=a=>l.value.serialNumber=a),label:"Serial Number",placeholder:"Unique serial number"},null,8,["modelValue"]),o(s(i),{modelValue:l.value.modelYear,"onUpdate:modelValue":e[15]||(e[15]=a=>l.value.modelYear=a),modelModifiers:{number:!0},type:"number",label:"Model Year",placeholder:"Year of manufacture",min:1900,max:new Date().getFullYear()+1},null,8,["modelValue","max"]),o(s(y),{modelValue:l.value.location,"onUpdate:modelValue":e[16]||(e[16]=a=>l.value.location=a),label:"Location",placeholder:"Select asset location",options:F},null,8,["modelValue"]),o(s(i),{modelValue:l.value.condition,"onUpdate:modelValue":e[17]||(e[17]=a=>l.value.condition=a),label:"Condition",placeholder:"Current condition (Good, Fair, Poor)"},null,8,["modelValue"])])]),t("div",null,[e[39]||(e[39]=t("h2",{class:"text-xl font-semibold text-gray-900 mb-4 border-b pb-2"},"Financial Information",-1)),t("div",se,[o(s(i),{modelValue:l.value.purchasePrice,"onUpdate:modelValue":e[18]||(e[18]=a=>l.value.purchasePrice=a),modelModifiers:{number:!0},type:"number",label:"Purchase Price",placeholder:"0.00",step:"0.01",min:"0"},null,8,["modelValue"]),o(s(i),{modelValue:l.value.currentValue,"onUpdate:modelValue":e[19]||(e[19]=a=>l.value.currentValue=a),modelModifiers:{number:!0},type:"number",label:"Current Value",placeholder:"0.00",step:"0.01",min:"0"},null,8,["modelValue"]),o(s(i),{modelValue:l.value.purchaseDate,"onUpdate:modelValue":e[20]||(e[20]=a=>l.value.purchaseDate=a),type:"date",label:"Purchase Date"},null,8,["modelValue"]),o(s(i),{modelValue:l.value.installationDate,"onUpdate:modelValue":e[21]||(e[21]=a=>l.value.installationDate=a),type:"date",label:"Installation Date"},null,8,["modelValue"]),o(s(i),{modelValue:l.value.commissionDate,"onUpdate:modelValue":e[22]||(e[22]=a=>l.value.commissionDate=a),type:"date",label:"Commission Date"},null,8,["modelValue"]),o(s(i),{modelValue:l.value.depreciationRate,"onUpdate:modelValue":e[23]||(e[23]=a=>l.value.depreciationRate=a),modelModifiers:{number:!0},type:"number",label:"Depreciation Rate (%)",placeholder:"0",step:"0.1",min:"0",max:"100"},null,8,["modelValue"])])]),t("div",null,[e[40]||(e[40]=t("h2",{class:"text-xl font-semibold text-gray-900 mb-4 border-b pb-2"},"Maintenance Information",-1)),t("div",re,[o(s(i),{modelValue:l.value.lastMaintenanceDate,"onUpdate:modelValue":e[24]||(e[24]=a=>l.value.lastMaintenanceDate=a),type:"date",label:"Last Maintenance Date"},null,8,["modelValue"]),o(s(i),{modelValue:l.value.nextMaintenanceDate,"onUpdate:modelValue":e[25]||(e[25]=a=>l.value.nextMaintenanceDate=a),type:"date",label:"Next Maintenance Date"},null,8,["modelValue"]),o(s(y),{modelValue:l.value.maintenanceStrategy,"onUpdate:modelValue":e[26]||(e[26]=a=>l.value.maintenanceStrategy=a),label:"Maintenance Strategy",placeholder:"Select strategy",options:P},null,8,["modelValue"]),o(s(i),{modelValue:l.value.maintenanceInterval,"onUpdate:modelValue":e[27]||(e[27]=a=>l.value.maintenanceInterval=a),modelModifiers:{number:!0},type:"number",label:"Maintenance Interval (days)",placeholder:"0",min:"1"},null,8,["modelValue"])])]),t("div",null,[e[43]||(e[43]=t("h2",{class:"text-xl font-semibold text-gray-900 mb-4 border-b pb-2"},"Additional Information",-1)),t("div",ie,[o(s(i),{modelValue:l.value.barcode,"onUpdate:modelValue":e[28]||(e[28]=a=>l.value.barcode=a),label:"Barcode/QR Code",placeholder:"Enter or scan barcode"},null,8,["modelValue"]),t("div",ne,[o(s(k),{id:"is-active",modelValue:l.value.isActive,"onUpdate:modelValue":e[29]||(e[29]=a=>l.value.isActive=a)},null,8,["modelValue"]),e[41]||(e[41]=t("div",null,[t("label",{for:"is-active",class:"text-sm font-medium text-gray-700"},"Asset is Active"),t("p",{class:"text-sm text-gray-500 mt-1"}," Inactive assets are excluded from maintenance schedules ")],-1))]),t("div",ue,[o(s(k),{id:"is-critical",modelValue:l.value.isCritical,"onUpdate:modelValue":e[30]||(e[30]=a=>l.value.isCritical=a)},null,8,["modelValue"]),e[42]||(e[42]=t("div",null,[t("label",{for:"is-critical",class:"text-sm font-medium text-gray-700"},"Critical Asset"),t("p",{class:"text-sm text-gray-500 mt-1"}," Critical assets receive priority in maintenance scheduling ")],-1))])])]),Object.keys(r.value).length?(m(),d("div",de,[t("div",me,[e[45]||(e[45]=t("svg",{class:"w-5 h-5 text-red-400 mt-0.5 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),t("div",null,[e[44]||(e[44]=t("h4",{class:"text-sm font-medium text-red-800 mb-1"},"Please fix the following errors:",-1)),t("ul",ve,[(m(!0),d(Q,null,W(r.value,(a,D)=>(m(),d("li",{key:D},' " '+f(T(D))+": "+f(a),1))),128))])])])])):U("",!0)]),t("div",pe,[o(s(p),{variant:"secondary",onClick:L},{default:v(()=>e[46]||(e[46]=[b(" Reset Changes ",-1)])),_:1,__:[46]}),t("div",be,[o(s(p),{variant:"ghost",onClick:E},{default:v(()=>e[47]||(e[47]=[b(" Cancel ",-1)])),_:1,__:[47]}),o(s(p),{onClick:I,loading:V.value,disabled:!M.value},{default:v(()=>e[48]||(e[48]=[b(" Save Changes ",-1)])),_:1,__:[48]},8,["loading","disabled"])])])]),_:1})])):(m(),d("div",ce,[e[50]||(e[50]=t("svg",{class:"w-12 h-12 mx-auto mb-4 text-red-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),e[51]||(e[51]=t("h3",{class:"text-lg font-medium text-gray-900 mb-2"},"Asset Not Found",-1)),e[52]||(e[52]=t("p",{class:"text-gray-500 mb-4"},"The requested asset could not be found.",-1)),o(s(p),{onClick:e[31]||(e[31]=a=>n.$router.push("/assets"))},{default:v(()=>e[49]||(e[49]=[b(" Back to Assets ",-1)])),_:1,__:[49]})]))]))}},Me=B(ye,[["__scopeId","data-v-ba4f7f7a"]]);export{Me as default}; diff --git a/frontend/dist/assets/EditWorkOrderView-D2FfecvI.js b/frontend/dist/assets/EditWorkOrderView-Cx6d-pcV.js similarity index 97% rename from frontend/dist/assets/EditWorkOrderView-D2FfecvI.js rename to frontend/dist/assets/EditWorkOrderView-Cx6d-pcV.js index c9e04ed3..c7339f64 100644 --- a/frontend/dist/assets/EditWorkOrderView-D2FfecvI.js +++ b/frontend/dist/assets/EditWorkOrderView-Cx6d-pcV.js @@ -1 +1 @@ -import{_ as W,q as $,r as n,c as C,o as H,a as u,j as D,b as t,t as k,d as r,w as m,e as s,F as b,f as z,h as G,s as j,v as J,g as v,k as y}from"./index-BUdRbiwj.js";import{F as w}from"./FPInput-CzR_dWoe.js";import{F as p}from"./FPSelect-C7p47Ma2.js";import{T as Z}from"./TimeTracker-Ch4gtOrh.js";import{T as K,P as Q,A as X}from"./AudioRecorder-CcKMXbWt.js";import{D as Y}from"./DigitalSignature-B20bSUAg.js";import"./FPCheckbox-Bu8jNAEW.js";import"./FPBadge-BKY5dPnL.js";const ee={class:"edit-work-order"},te={key:0,class:"flex items-center justify-center min-h-96"},le={key:1,class:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8"},ae={class:"bg-red-50 border border-red-200 rounded-lg p-6"},oe={class:"flex"},re={class:"ml-3"},se={class:"text-sm text-red-700 mt-1"},ie={class:"mt-4"},de={key:2,class:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8"},ne={class:"mb-8"},ue={class:"flex","aria-label":"Breadcrumb"},ve={class:"flex items-center space-x-4"},me={class:"mt-2 flex items-center justify-between"},pe={class:"text-gray-600"},ge={class:"flex space-x-2"},ce={key:0},be={key:1},ye={class:"bg-white shadow rounded-lg p-6"},fe={class:"grid grid-cols-1 gap-6 sm:grid-cols-2"},ke={class:"sm:col-span-2"},we={class:"sm:col-span-2"},xe={class:"bg-white shadow rounded-lg p-6"},Ie={class:"grid grid-cols-1 gap-6 sm:grid-cols-2"},Ve={class:"bg-white shadow rounded-lg p-6"},he={class:"grid grid-cols-1 gap-6 sm:grid-cols-3"},Se={class:"grid grid-cols-1 lg:grid-cols-2 gap-8"},Te={class:"bg-white shadow rounded-lg p-6"},Ce={class:"bg-white shadow rounded-lg p-6"},De={class:"bg-white shadow rounded-lg p-6"},Ee={class:"bg-white shadow rounded-lg p-6"},Oe={key:0,class:"bg-white shadow rounded-lg p-6"},Me={class:"flex justify-end space-x-4 pt-6 border-t border-gray-200"},Ue={key:0},Re={key:1},_e={__name:"EditWorkOrderView",props:{id:{type:[String,Number],required:!0}},setup(E){j();const O=J(),M=$(),I=E,d=n(null),x=n(!0),g=n(!1),c=n(null),i=n({}),l=n({title:"",description:"",status:"OPEN",priority:"MEDIUM",dueDate:"",estimatedDuration:null,primaryUserId:null,assignedToIds:[],assetId:null,locationId:null,categoryId:null,tasks:[],parts:[],timeEntries:[],audioRecordings:[],signature:null}),U=[{value:"OPEN",label:"Open"},{value:"IN_PROGRESS",label:"In Progress"},{value:"ON_HOLD",label:"On Hold"},{value:"COMPLETED",label:"Completed"},{value:"CANCELLED",label:"Cancelled"}],R=[{value:"LOW",label:"Low"},{value:"MEDIUM",label:"Medium"},{value:"HIGH",label:"High"},{value:"CRITICAL",label:"Critical"}],V=n([{value:1,label:"John Smith"},{value:2,label:"Jane Doe"},{value:3,label:"Mike Johnson"}]),_=n([{value:1,label:"Conveyor Belt System A1"},{value:2,label:"Hydraulic Press B2"},{value:3,label:"CNC Machine C3"}]),P=n([{value:1,label:"Production Floor A"},{value:2,label:"Warehouse B"},{value:3,label:"Maintenance Shop"}]),N=n([{value:1,label:"Mechanical Repair"},{value:2,label:"Electrical Maintenance"},{value:3,label:"Preventive Maintenance"}]),f=C(()=>M.user),L=C(()=>l.value.status==="IN_PROGRESS"||l.value.status==="COMPLETED"),h=async()=>{try{x.value=!0,c.value=null,await new Promise(e=>setTimeout(e,1e3));const a={id:I.id,workOrderId:`WO-${String(I.id).padStart(6,"0")}`,title:"Repair Conveyor Belt Motor",description:"The conveyor belt motor in the production line has been making unusual noises and requires inspection and repair.",status:"IN_PROGRESS",priority:"HIGH",createdAt:"2024-01-15T08:00:00Z",dueDate:"2024-01-17T17:00:00Z",estimatedDuration:4,primaryUserId:1,assignedToIds:[2],assetId:1,locationId:1,categoryId:1,tasks:[{id:1,title:"Inspect motor bearings",description:"Check for wear and tear",completed:!0,required:!0,estimatedDuration:1},{id:2,title:"Replace worn components",description:"Replace any damaged parts found during inspection",completed:!1,required:!0,estimatedDuration:2}],timeEntries:[{id:1,type:"timer",duration:2.5,description:"Initial inspection and diagnosis",startTime:"2024-01-15T08:00:00Z",endTime:"2024-01-15T10:30:00Z",user:{id:1,firstName:"John",lastName:"Smith"},hourlyRate:55,date:"2024-01-15"}],audioRecordings:[{id:1,title:"Initial Inspection Notes",description:"Motor sounds and initial observations",duration:120,size:256e4,createdAt:"2024-01-15T08:30:00Z",user:{id:1,firstName:"John",lastName:"Smith"},transcription:"Motor is making grinding noise, likely bearing issue.",transcriptionConfidence:.92}],parts:[{id:1,partId:101,name:"Motor Bearing Set",partNumber:"BRG-M15",quantityUsed:1,unitPrice:45}],signature:null};d.value=a,l.value={title:a.title,description:a.description,status:a.status,priority:a.priority,dueDate:a.dueDate?a.dueDate.slice(0,16):"",estimatedDuration:a.estimatedDuration,primaryUserId:a.primaryUserId,assignedToIds:a.assignedToIds,assetId:a.assetId,locationId:a.locationId,categoryId:a.categoryId,tasks:[...a.tasks],parts:[...a.parts],timeEntries:[...a.timeEntries],audioRecordings:[...a.audioRecordings],signature:a.signature}}catch(a){c.value=a.message||"Failed to load work order"}finally{x.value=!1}},A=()=>{var e;i.value={};let a=!0;return(e=l.value.title)!=null&&e.trim()||(i.value.title="Title is required",a=!1),l.value.status||(i.value.status="Status is required",a=!1),l.value.priority||(i.value.priority="Priority is required",a=!1),a},S=async()=>{if(A())try{g.value=!0,await new Promise(a=>setTimeout(a,1500)),console.log("Saving work order:",l.value),O.push(`/work-orders/${d.value.id}`)}catch(a){c.value=a.message||"Failed to save work order"}finally{g.value=!1}},B=a=>{console.log("Time entry saved:",a)},q=a=>{console.log("Recording saved:",a)},F=a=>{console.log("Signature saved:",a)};return H(()=>{h()}),(a,e)=>{const T=z("router-link");return v(),u("div",ee,[x.value?(v(),u("div",te,e[18]||(e[18]=[t("div",{class:"text-center"},[t("div",{class:"animate-spin rounded-full h-12 w-12 border-b-2 border-blue-600 mx-auto mb-4"}),t("p",{class:"text-gray-600"},"Loading work order...")],-1)]))):c.value?(v(),u("div",le,[t("div",ae,[t("div",oe,[e[21]||(e[21]=t("svg",{class:"w-6 h-6 text-red-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.854-.833-2.598 0L3.732 16.5c-.77.833.192 2.5 1.732 2.5z"})],-1)),t("div",re,[e[20]||(e[20]=t("h3",{class:"text-sm font-medium text-red-800"},"Error Loading Work Order",-1)),t("p",se,k(c.value),1),t("div",ie,[r(s(b),{variant:"outline",size:"sm",onClick:h},{default:m(()=>e[19]||(e[19]=[y(" Try Again ",-1)])),_:1,__:[19]})])])])])])):d.value?(v(),u("div",de,[t("div",ne,[t("nav",ue,[t("ol",ve,[t("li",null,[r(T,{to:"/work-orders",class:"text-gray-400 hover:text-gray-500"},{default:m(()=>e[22]||(e[22]=[y(" Work Orders ",-1)])),_:1,__:[22]})]),e[23]||(e[23]=t("li",null,[t("svg",{class:"flex-shrink-0 h-5 w-5 text-gray-300",fill:"currentColor",viewBox:"0 0 20 20"},[t("path",{"fill-rule":"evenodd",d:"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z","clip-rule":"evenodd"})])],-1)),t("li",null,[r(T,{to:`/work-orders/${d.value.id}`,class:"text-gray-400 hover:text-gray-500"},{default:m(()=>[y(k(d.value.workOrderId),1)]),_:1},8,["to"])]),e[24]||(e[24]=t("li",null,[t("svg",{class:"flex-shrink-0 h-5 w-5 text-gray-300",fill:"currentColor",viewBox:"0 0 20 20"},[t("path",{"fill-rule":"evenodd",d:"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z","clip-rule":"evenodd"})])],-1)),e[25]||(e[25]=t("li",{class:"text-gray-500"},"Edit",-1))])]),t("div",me,[t("div",null,[e[26]||(e[26]=t("h1",{class:"text-2xl font-bold text-gray-900"},"Edit Work Order",-1)),t("p",pe,k(d.value.workOrderId)+" - "+k(d.value.title),1)]),t("div",ge,[r(s(b),{variant:"outline",onClick:e[0]||(e[0]=o=>a.$router.push(`/work-orders/${d.value.id}`))},{default:m(()=>e[27]||(e[27]=[y(" Cancel ",-1)])),_:1,__:[27]}),r(s(b),{variant:"primary",onClick:S,disabled:g.value},{default:m(()=>[g.value?(v(),u("span",ce,"Saving...")):(v(),u("span",be,"Save Changes"))]),_:1},8,["disabled"])])])]),t("form",{onSubmit:G(S,["prevent"]),class:"space-y-8"},[t("div",ye,[e[28]||(e[28]=t("h2",{class:"text-lg font-medium text-gray-900 mb-6"},"Basic Information",-1)),t("div",fe,[t("div",ke,[r(s(w),{modelValue:l.value.title,"onUpdate:modelValue":e[1]||(e[1]=o=>l.value.title=o),label:"Title",placeholder:"Enter work order title",required:"",error:i.value.title},null,8,["modelValue","error"])]),t("div",we,[r(s(w),{modelValue:l.value.description,"onUpdate:modelValue":e[2]||(e[2]=o=>l.value.description=o),label:"Description",type:"textarea",rows:"4",placeholder:"Enter detailed description of the work to be performed",error:i.value.description},null,8,["modelValue","error"])]),t("div",null,[r(s(p),{modelValue:l.value.status,"onUpdate:modelValue":e[3]||(e[3]=o=>l.value.status=o),label:"Status",options:U,error:i.value.status},null,8,["modelValue","error"])]),t("div",null,[r(s(p),{modelValue:l.value.priority,"onUpdate:modelValue":e[4]||(e[4]=o=>l.value.priority=o),label:"Priority",options:R,error:i.value.priority},null,8,["modelValue","error"])]),t("div",null,[r(s(w),{modelValue:l.value.dueDate,"onUpdate:modelValue":e[5]||(e[5]=o=>l.value.dueDate=o),label:"Due Date",type:"datetime-local",error:i.value.dueDate},null,8,["modelValue","error"])]),t("div",null,[r(s(w),{modelValue:l.value.estimatedDuration,"onUpdate:modelValue":e[6]||(e[6]=o=>l.value.estimatedDuration=o),label:"Estimated Duration (hours)",type:"number",step:"0.5",min:"0",error:i.value.estimatedDuration},null,8,["modelValue","error"])])])]),t("div",xe,[e[29]||(e[29]=t("h2",{class:"text-lg font-medium text-gray-900 mb-6"},"Assignment",-1)),t("div",Ie,[t("div",null,[r(s(p),{modelValue:l.value.primaryUserId,"onUpdate:modelValue":e[7]||(e[7]=o=>l.value.primaryUserId=o),label:"Primary Assignee",options:V.value,searchable:"",error:i.value.primaryUserId},null,8,["modelValue","options","error"])]),t("div",null,[r(s(p),{modelValue:l.value.assignedToIds,"onUpdate:modelValue":e[8]||(e[8]=o=>l.value.assignedToIds=o),label:"Team Members",options:V.value,multiple:"",searchable:"",error:i.value.assignedToIds},null,8,["modelValue","options","error"])])])]),t("div",Ve,[e[30]||(e[30]=t("h2",{class:"text-lg font-medium text-gray-900 mb-6"},"Asset & Location",-1)),t("div",he,[t("div",null,[r(s(p),{modelValue:l.value.assetId,"onUpdate:modelValue":e[9]||(e[9]=o=>l.value.assetId=o),label:"Asset",options:_.value,searchable:"",clearable:"",error:i.value.assetId},null,8,["modelValue","options","error"])]),t("div",null,[r(s(p),{modelValue:l.value.locationId,"onUpdate:modelValue":e[10]||(e[10]=o=>l.value.locationId=o),label:"Location",options:P.value,searchable:"",clearable:"",error:i.value.locationId},null,8,["modelValue","options","error"])]),t("div",null,[r(s(p),{modelValue:l.value.categoryId,"onUpdate:modelValue":e[11]||(e[11]=o=>l.value.categoryId=o),label:"Category",options:N.value,searchable:"",clearable:"",error:i.value.categoryId},null,8,["modelValue","options","error"])])])]),t("div",Se,[t("div",Te,[e[31]||(e[31]=t("h2",{class:"text-lg font-medium text-gray-900 mb-6"},"Tasks",-1)),r(K,{modelValue:l.value.tasks,"onUpdate:modelValue":e[12]||(e[12]=o=>l.value.tasks=o),"work-order-id":d.value.id,"current-user":f.value},null,8,["modelValue","work-order-id","current-user"])]),t("div",Ce,[e[32]||(e[32]=t("h2",{class:"text-lg font-medium text-gray-900 mb-6"},"Parts & Materials",-1)),r(Q,{modelValue:l.value.parts,"onUpdate:modelValue":e[13]||(e[13]=o=>l.value.parts=o),"work-order-id":d.value.id},null,8,["modelValue","work-order-id"])])]),t("div",De,[e[33]||(e[33]=t("h2",{class:"text-lg font-medium text-gray-900 mb-6"},"Time Tracking",-1)),r(Z,{modelValue:l.value.timeEntries,"onUpdate:modelValue":e[14]||(e[14]=o=>l.value.timeEntries=o),"work-order-id":d.value.id,"current-user":f.value,"auto-save":!1,onTimeEntrySaved:B},null,8,["modelValue","work-order-id","current-user"])]),t("div",Ee,[e[34]||(e[34]=t("h2",{class:"text-lg font-medium text-gray-900 mb-6"},"Audio Notes",-1)),r(X,{modelValue:l.value.audioRecordings,"onUpdate:modelValue":e[15]||(e[15]=o=>l.value.audioRecordings=o),"work-order-id":d.value.id,"current-user":f.value,"auto-transcribe":!0,"enable-visualization":!0,"auto-save":!1,onRecordingSaved:q},null,8,["modelValue","work-order-id","current-user"])]),L.value?(v(),u("div",Oe,[e[35]||(e[35]=t("h2",{class:"text-lg font-medium text-gray-900 mb-6"},"Completion Signature",-1)),r(Y,{modelValue:l.value.signature,"onUpdate:modelValue":e[16]||(e[16]=o=>l.value.signature=o),"work-order-id":d.value.id,"current-user":f.value,"auto-save":!1,"enable-validation":!0,onSignatureSaved:F},null,8,["modelValue","work-order-id","current-user"])])):D("",!0),t("div",Me,[r(s(b),{type:"button",variant:"outline",onClick:e[17]||(e[17]=o=>a.$router.push(`/work-orders/${d.value.id}`))},{default:m(()=>e[36]||(e[36]=[y(" Cancel ",-1)])),_:1,__:[36]}),r(s(b),{type:"submit",variant:"primary",disabled:g.value},{default:m(()=>[g.value?(v(),u("span",Ue,"Saving...")):(v(),u("span",Re,"Save Changes"))]),_:1},8,["disabled"])])],32)])):D("",!0)])}}},$e=W(_e,[["__scopeId","data-v-06f2a370"]]);export{$e as default}; +import{_ as W,q as $,r as n,c as C,o as H,a as u,j as D,b as t,t as k,d as r,w as m,e as s,F as b,f as z,h as G,s as j,v as J,g as v,k as y}from"./index-QAlcqU00.js";import{F as w}from"./FPInput-D5RURom0.js";import{F as p}from"./FPSelect-j7n_x8eB.js";import{T as Z}from"./TimeTracker-DBp8PrtX.js";import{T as K,P as Q,A as X}from"./AudioRecorder-BzlZ8cXI.js";import{D as Y}from"./DigitalSignature-CzkShzQj.js";import"./FPCheckbox-DcRYwN3n.js";import"./FPBadge-DvOitM1C.js";const ee={class:"edit-work-order"},te={key:0,class:"flex items-center justify-center min-h-96"},le={key:1,class:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8"},ae={class:"bg-red-50 border border-red-200 rounded-lg p-6"},oe={class:"flex"},re={class:"ml-3"},se={class:"text-sm text-red-700 mt-1"},ie={class:"mt-4"},de={key:2,class:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8"},ne={class:"mb-8"},ue={class:"flex","aria-label":"Breadcrumb"},ve={class:"flex items-center space-x-4"},me={class:"mt-2 flex items-center justify-between"},pe={class:"text-gray-600"},ge={class:"flex space-x-2"},ce={key:0},be={key:1},ye={class:"bg-white shadow rounded-lg p-6"},fe={class:"grid grid-cols-1 gap-6 sm:grid-cols-2"},ke={class:"sm:col-span-2"},we={class:"sm:col-span-2"},xe={class:"bg-white shadow rounded-lg p-6"},Ie={class:"grid grid-cols-1 gap-6 sm:grid-cols-2"},Ve={class:"bg-white shadow rounded-lg p-6"},he={class:"grid grid-cols-1 gap-6 sm:grid-cols-3"},Se={class:"grid grid-cols-1 lg:grid-cols-2 gap-8"},Te={class:"bg-white shadow rounded-lg p-6"},Ce={class:"bg-white shadow rounded-lg p-6"},De={class:"bg-white shadow rounded-lg p-6"},Ee={class:"bg-white shadow rounded-lg p-6"},Oe={key:0,class:"bg-white shadow rounded-lg p-6"},Me={class:"flex justify-end space-x-4 pt-6 border-t border-gray-200"},Ue={key:0},Re={key:1},_e={__name:"EditWorkOrderView",props:{id:{type:[String,Number],required:!0}},setup(E){j();const O=J(),M=$(),I=E,d=n(null),x=n(!0),g=n(!1),c=n(null),i=n({}),l=n({title:"",description:"",status:"OPEN",priority:"MEDIUM",dueDate:"",estimatedDuration:null,primaryUserId:null,assignedToIds:[],assetId:null,locationId:null,categoryId:null,tasks:[],parts:[],timeEntries:[],audioRecordings:[],signature:null}),U=[{value:"OPEN",label:"Open"},{value:"IN_PROGRESS",label:"In Progress"},{value:"ON_HOLD",label:"On Hold"},{value:"COMPLETED",label:"Completed"},{value:"CANCELLED",label:"Cancelled"}],R=[{value:"LOW",label:"Low"},{value:"MEDIUM",label:"Medium"},{value:"HIGH",label:"High"},{value:"CRITICAL",label:"Critical"}],V=n([{value:1,label:"John Smith"},{value:2,label:"Jane Doe"},{value:3,label:"Mike Johnson"}]),_=n([{value:1,label:"Conveyor Belt System A1"},{value:2,label:"Hydraulic Press B2"},{value:3,label:"CNC Machine C3"}]),P=n([{value:1,label:"Production Floor A"},{value:2,label:"Warehouse B"},{value:3,label:"Maintenance Shop"}]),N=n([{value:1,label:"Mechanical Repair"},{value:2,label:"Electrical Maintenance"},{value:3,label:"Preventive Maintenance"}]),f=C(()=>M.user),L=C(()=>l.value.status==="IN_PROGRESS"||l.value.status==="COMPLETED"),h=async()=>{try{x.value=!0,c.value=null,await new Promise(e=>setTimeout(e,1e3));const a={id:I.id,workOrderId:`WO-${String(I.id).padStart(6,"0")}`,title:"Repair Conveyor Belt Motor",description:"The conveyor belt motor in the production line has been making unusual noises and requires inspection and repair.",status:"IN_PROGRESS",priority:"HIGH",createdAt:"2024-01-15T08:00:00Z",dueDate:"2024-01-17T17:00:00Z",estimatedDuration:4,primaryUserId:1,assignedToIds:[2],assetId:1,locationId:1,categoryId:1,tasks:[{id:1,title:"Inspect motor bearings",description:"Check for wear and tear",completed:!0,required:!0,estimatedDuration:1},{id:2,title:"Replace worn components",description:"Replace any damaged parts found during inspection",completed:!1,required:!0,estimatedDuration:2}],timeEntries:[{id:1,type:"timer",duration:2.5,description:"Initial inspection and diagnosis",startTime:"2024-01-15T08:00:00Z",endTime:"2024-01-15T10:30:00Z",user:{id:1,firstName:"John",lastName:"Smith"},hourlyRate:55,date:"2024-01-15"}],audioRecordings:[{id:1,title:"Initial Inspection Notes",description:"Motor sounds and initial observations",duration:120,size:256e4,createdAt:"2024-01-15T08:30:00Z",user:{id:1,firstName:"John",lastName:"Smith"},transcription:"Motor is making grinding noise, likely bearing issue.",transcriptionConfidence:.92}],parts:[{id:1,partId:101,name:"Motor Bearing Set",partNumber:"BRG-M15",quantityUsed:1,unitPrice:45}],signature:null};d.value=a,l.value={title:a.title,description:a.description,status:a.status,priority:a.priority,dueDate:a.dueDate?a.dueDate.slice(0,16):"",estimatedDuration:a.estimatedDuration,primaryUserId:a.primaryUserId,assignedToIds:a.assignedToIds,assetId:a.assetId,locationId:a.locationId,categoryId:a.categoryId,tasks:[...a.tasks],parts:[...a.parts],timeEntries:[...a.timeEntries],audioRecordings:[...a.audioRecordings],signature:a.signature}}catch(a){c.value=a.message||"Failed to load work order"}finally{x.value=!1}},A=()=>{var e;i.value={};let a=!0;return(e=l.value.title)!=null&&e.trim()||(i.value.title="Title is required",a=!1),l.value.status||(i.value.status="Status is required",a=!1),l.value.priority||(i.value.priority="Priority is required",a=!1),a},S=async()=>{if(A())try{g.value=!0,await new Promise(a=>setTimeout(a,1500)),console.log("Saving work order:",l.value),O.push(`/work-orders/${d.value.id}`)}catch(a){c.value=a.message||"Failed to save work order"}finally{g.value=!1}},B=a=>{console.log("Time entry saved:",a)},q=a=>{console.log("Recording saved:",a)},F=a=>{console.log("Signature saved:",a)};return H(()=>{h()}),(a,e)=>{const T=z("router-link");return v(),u("div",ee,[x.value?(v(),u("div",te,e[18]||(e[18]=[t("div",{class:"text-center"},[t("div",{class:"animate-spin rounded-full h-12 w-12 border-b-2 border-blue-600 mx-auto mb-4"}),t("p",{class:"text-gray-600"},"Loading work order...")],-1)]))):c.value?(v(),u("div",le,[t("div",ae,[t("div",oe,[e[21]||(e[21]=t("svg",{class:"w-6 h-6 text-red-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.854-.833-2.598 0L3.732 16.5c-.77.833.192 2.5 1.732 2.5z"})],-1)),t("div",re,[e[20]||(e[20]=t("h3",{class:"text-sm font-medium text-red-800"},"Error Loading Work Order",-1)),t("p",se,k(c.value),1),t("div",ie,[r(s(b),{variant:"outline",size:"sm",onClick:h},{default:m(()=>e[19]||(e[19]=[y(" Try Again ",-1)])),_:1,__:[19]})])])])])])):d.value?(v(),u("div",de,[t("div",ne,[t("nav",ue,[t("ol",ve,[t("li",null,[r(T,{to:"/work-orders",class:"text-gray-400 hover:text-gray-500"},{default:m(()=>e[22]||(e[22]=[y(" Work Orders ",-1)])),_:1,__:[22]})]),e[23]||(e[23]=t("li",null,[t("svg",{class:"flex-shrink-0 h-5 w-5 text-gray-300",fill:"currentColor",viewBox:"0 0 20 20"},[t("path",{"fill-rule":"evenodd",d:"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z","clip-rule":"evenodd"})])],-1)),t("li",null,[r(T,{to:`/work-orders/${d.value.id}`,class:"text-gray-400 hover:text-gray-500"},{default:m(()=>[y(k(d.value.workOrderId),1)]),_:1},8,["to"])]),e[24]||(e[24]=t("li",null,[t("svg",{class:"flex-shrink-0 h-5 w-5 text-gray-300",fill:"currentColor",viewBox:"0 0 20 20"},[t("path",{"fill-rule":"evenodd",d:"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z","clip-rule":"evenodd"})])],-1)),e[25]||(e[25]=t("li",{class:"text-gray-500"},"Edit",-1))])]),t("div",me,[t("div",null,[e[26]||(e[26]=t("h1",{class:"text-2xl font-bold text-gray-900"},"Edit Work Order",-1)),t("p",pe,k(d.value.workOrderId)+" - "+k(d.value.title),1)]),t("div",ge,[r(s(b),{variant:"outline",onClick:e[0]||(e[0]=o=>a.$router.push(`/work-orders/${d.value.id}`))},{default:m(()=>e[27]||(e[27]=[y(" Cancel ",-1)])),_:1,__:[27]}),r(s(b),{variant:"primary",onClick:S,disabled:g.value},{default:m(()=>[g.value?(v(),u("span",ce,"Saving...")):(v(),u("span",be,"Save Changes"))]),_:1},8,["disabled"])])])]),t("form",{onSubmit:G(S,["prevent"]),class:"space-y-8"},[t("div",ye,[e[28]||(e[28]=t("h2",{class:"text-lg font-medium text-gray-900 mb-6"},"Basic Information",-1)),t("div",fe,[t("div",ke,[r(s(w),{modelValue:l.value.title,"onUpdate:modelValue":e[1]||(e[1]=o=>l.value.title=o),label:"Title",placeholder:"Enter work order title",required:"",error:i.value.title},null,8,["modelValue","error"])]),t("div",we,[r(s(w),{modelValue:l.value.description,"onUpdate:modelValue":e[2]||(e[2]=o=>l.value.description=o),label:"Description",type:"textarea",rows:"4",placeholder:"Enter detailed description of the work to be performed",error:i.value.description},null,8,["modelValue","error"])]),t("div",null,[r(s(p),{modelValue:l.value.status,"onUpdate:modelValue":e[3]||(e[3]=o=>l.value.status=o),label:"Status",options:U,error:i.value.status},null,8,["modelValue","error"])]),t("div",null,[r(s(p),{modelValue:l.value.priority,"onUpdate:modelValue":e[4]||(e[4]=o=>l.value.priority=o),label:"Priority",options:R,error:i.value.priority},null,8,["modelValue","error"])]),t("div",null,[r(s(w),{modelValue:l.value.dueDate,"onUpdate:modelValue":e[5]||(e[5]=o=>l.value.dueDate=o),label:"Due Date",type:"datetime-local",error:i.value.dueDate},null,8,["modelValue","error"])]),t("div",null,[r(s(w),{modelValue:l.value.estimatedDuration,"onUpdate:modelValue":e[6]||(e[6]=o=>l.value.estimatedDuration=o),label:"Estimated Duration (hours)",type:"number",step:"0.5",min:"0",error:i.value.estimatedDuration},null,8,["modelValue","error"])])])]),t("div",xe,[e[29]||(e[29]=t("h2",{class:"text-lg font-medium text-gray-900 mb-6"},"Assignment",-1)),t("div",Ie,[t("div",null,[r(s(p),{modelValue:l.value.primaryUserId,"onUpdate:modelValue":e[7]||(e[7]=o=>l.value.primaryUserId=o),label:"Primary Assignee",options:V.value,searchable:"",error:i.value.primaryUserId},null,8,["modelValue","options","error"])]),t("div",null,[r(s(p),{modelValue:l.value.assignedToIds,"onUpdate:modelValue":e[8]||(e[8]=o=>l.value.assignedToIds=o),label:"Team Members",options:V.value,multiple:"",searchable:"",error:i.value.assignedToIds},null,8,["modelValue","options","error"])])])]),t("div",Ve,[e[30]||(e[30]=t("h2",{class:"text-lg font-medium text-gray-900 mb-6"},"Asset & Location",-1)),t("div",he,[t("div",null,[r(s(p),{modelValue:l.value.assetId,"onUpdate:modelValue":e[9]||(e[9]=o=>l.value.assetId=o),label:"Asset",options:_.value,searchable:"",clearable:"",error:i.value.assetId},null,8,["modelValue","options","error"])]),t("div",null,[r(s(p),{modelValue:l.value.locationId,"onUpdate:modelValue":e[10]||(e[10]=o=>l.value.locationId=o),label:"Location",options:P.value,searchable:"",clearable:"",error:i.value.locationId},null,8,["modelValue","options","error"])]),t("div",null,[r(s(p),{modelValue:l.value.categoryId,"onUpdate:modelValue":e[11]||(e[11]=o=>l.value.categoryId=o),label:"Category",options:N.value,searchable:"",clearable:"",error:i.value.categoryId},null,8,["modelValue","options","error"])])])]),t("div",Se,[t("div",Te,[e[31]||(e[31]=t("h2",{class:"text-lg font-medium text-gray-900 mb-6"},"Tasks",-1)),r(K,{modelValue:l.value.tasks,"onUpdate:modelValue":e[12]||(e[12]=o=>l.value.tasks=o),"work-order-id":d.value.id,"current-user":f.value},null,8,["modelValue","work-order-id","current-user"])]),t("div",Ce,[e[32]||(e[32]=t("h2",{class:"text-lg font-medium text-gray-900 mb-6"},"Parts & Materials",-1)),r(Q,{modelValue:l.value.parts,"onUpdate:modelValue":e[13]||(e[13]=o=>l.value.parts=o),"work-order-id":d.value.id},null,8,["modelValue","work-order-id"])])]),t("div",De,[e[33]||(e[33]=t("h2",{class:"text-lg font-medium text-gray-900 mb-6"},"Time Tracking",-1)),r(Z,{modelValue:l.value.timeEntries,"onUpdate:modelValue":e[14]||(e[14]=o=>l.value.timeEntries=o),"work-order-id":d.value.id,"current-user":f.value,"auto-save":!1,onTimeEntrySaved:B},null,8,["modelValue","work-order-id","current-user"])]),t("div",Ee,[e[34]||(e[34]=t("h2",{class:"text-lg font-medium text-gray-900 mb-6"},"Audio Notes",-1)),r(X,{modelValue:l.value.audioRecordings,"onUpdate:modelValue":e[15]||(e[15]=o=>l.value.audioRecordings=o),"work-order-id":d.value.id,"current-user":f.value,"auto-transcribe":!0,"enable-visualization":!0,"auto-save":!1,onRecordingSaved:q},null,8,["modelValue","work-order-id","current-user"])]),L.value?(v(),u("div",Oe,[e[35]||(e[35]=t("h2",{class:"text-lg font-medium text-gray-900 mb-6"},"Completion Signature",-1)),r(Y,{modelValue:l.value.signature,"onUpdate:modelValue":e[16]||(e[16]=o=>l.value.signature=o),"work-order-id":d.value.id,"current-user":f.value,"auto-save":!1,"enable-validation":!0,onSignatureSaved:F},null,8,["modelValue","work-order-id","current-user"])])):D("",!0),t("div",Me,[r(s(b),{type:"button",variant:"outline",onClick:e[17]||(e[17]=o=>a.$router.push(`/work-orders/${d.value.id}`))},{default:m(()=>e[36]||(e[36]=[y(" Cancel ",-1)])),_:1,__:[36]}),r(s(b),{type:"submit",variant:"primary",disabled:g.value},{default:m(()=>[g.value?(v(),u("span",Ue,"Saving...")):(v(),u("span",Re,"Save Changes"))]),_:1},8,["disabled"])])],32)])):D("",!0)])}}},$e=W(_e,[["__scopeId","data-v-06f2a370"]]);export{$e as default}; diff --git a/frontend/dist/assets/FPAlert-qtmRrGXf.js b/frontend/dist/assets/FPAlert-CZx0ew6-.js similarity index 96% rename from frontend/dist/assets/FPAlert-qtmRrGXf.js rename to frontend/dist/assets/FPAlert-CZx0ew6-.js index 2048b776..9b5d8395 100644 --- a/frontend/dist/assets/FPAlert-qtmRrGXf.js +++ b/frontend/dist/assets/FPAlert-CZx0ew6-.js @@ -1 +1 @@ -import{_ as h,r as w,c as n,m as k,a as i,j as u,g as d,b as s,t as f,n as a,p as _,k as B}from"./index-BUdRbiwj.js";const S={class:"flex-shrink-0"},F={class:"text-lg"},N={class:"ml-3 flex-1"},V={key:0,class:"ml-4 flex-shrink-0"},$={__name:"FPAlert",props:{type:{type:String,default:"info",validator:o=>["success","warning","error","info"].includes(o)},title:{type:String,default:""},message:{type:String,default:""},closable:{type:Boolean,default:!1},show:{type:Boolean,default:!0}},emits:["close"],setup(o,{emit:g}){const t=o,C=g,c=w(t.show),r={success:{icon:"✅",bgColor:"bg-success-50",borderColor:"border-success-200",textColor:"text-success-800",titleColor:"text-success-900"},warning:{icon:"⚠️",bgColor:"bg-warning-50",borderColor:"border-warning-200",textColor:"text-warning-800",titleColor:"text-warning-900"},error:{icon:"❌",bgColor:"bg-error-50",borderColor:"border-error-200",textColor:"text-error-800",titleColor:"text-error-900"},info:{icon:"ℹ️",bgColor:"bg-info-50",borderColor:"border-info-200",textColor:"text-info-800",titleColor:"text-info-900"}},b=n(()=>{const e=r[t.type];return["atlas-alert","flex","p-4","rounded-md","border",e.bgColor,e.borderColor]}),x=n(()=>r[t.type].icon),m=n(()=>["text-sm","font-medium",r[t.type].titleColor]),p=n(()=>{const l=["text-sm",r[t.type].textColor];return t.title&&l.push("mt-1"),l}),v=n(()=>{const e=r[t.type];return["inline-flex","rounded-md","p-1.5","transition-colors","focus:outline-none","focus:ring-2","focus:ring-offset-2",e.textColor,`hover:${e.bgColor}`,`focus:ring-${t.type}-500`]}),y=()=>{c.value=!1,C("close")};return k(()=>t.show,e=>{c.value=e}),(e,l)=>c.value?(d(),i("div",{key:0,class:a(b.value),role:"alert"},[s("div",S,[s("span",F,f(x.value),1)]),s("div",N,[o.title?(d(),i("h3",{key:0,class:a(m.value)},f(o.title),3)):u("",!0),s("div",{class:a(p.value)},[_(e.$slots,"default",{},()=>[B(f(o.message),1)],!0)],2)]),o.closable?(d(),i("div",V,[s("button",{type:"button",class:a(v.value),onClick:y},l[0]||(l[0]=[s("span",{class:"text-lg"},"×",-1)]),2)])):u("",!0)],2)):u("",!0)}},I=h($,[["__scopeId","data-v-6db12345"]]);export{I as F}; +import{_ as h,r as w,c as n,m as k,a as i,j as u,g as d,b as s,t as f,n as a,p as _,k as B}from"./index-QAlcqU00.js";const S={class:"flex-shrink-0"},F={class:"text-lg"},N={class:"ml-3 flex-1"},V={key:0,class:"ml-4 flex-shrink-0"},$={__name:"FPAlert",props:{type:{type:String,default:"info",validator:o=>["success","warning","error","info"].includes(o)},title:{type:String,default:""},message:{type:String,default:""},closable:{type:Boolean,default:!1},show:{type:Boolean,default:!0}},emits:["close"],setup(o,{emit:g}){const t=o,C=g,c=w(t.show),r={success:{icon:"✅",bgColor:"bg-success-50",borderColor:"border-success-200",textColor:"text-success-800",titleColor:"text-success-900"},warning:{icon:"⚠️",bgColor:"bg-warning-50",borderColor:"border-warning-200",textColor:"text-warning-800",titleColor:"text-warning-900"},error:{icon:"❌",bgColor:"bg-error-50",borderColor:"border-error-200",textColor:"text-error-800",titleColor:"text-error-900"},info:{icon:"ℹ️",bgColor:"bg-info-50",borderColor:"border-info-200",textColor:"text-info-800",titleColor:"text-info-900"}},b=n(()=>{const e=r[t.type];return["atlas-alert","flex","p-4","rounded-md","border",e.bgColor,e.borderColor]}),x=n(()=>r[t.type].icon),m=n(()=>["text-sm","font-medium",r[t.type].titleColor]),p=n(()=>{const l=["text-sm",r[t.type].textColor];return t.title&&l.push("mt-1"),l}),v=n(()=>{const e=r[t.type];return["inline-flex","rounded-md","p-1.5","transition-colors","focus:outline-none","focus:ring-2","focus:ring-offset-2",e.textColor,`hover:${e.bgColor}`,`focus:ring-${t.type}-500`]}),y=()=>{c.value=!1,C("close")};return k(()=>t.show,e=>{c.value=e}),(e,l)=>c.value?(d(),i("div",{key:0,class:a(b.value),role:"alert"},[s("div",S,[s("span",F,f(x.value),1)]),s("div",N,[o.title?(d(),i("h3",{key:0,class:a(m.value)},f(o.title),3)):u("",!0),s("div",{class:a(p.value)},[_(e.$slots,"default",{},()=>[B(f(o.message),1)],!0)],2)]),o.closable?(d(),i("div",V,[s("button",{type:"button",class:a(v.value),onClick:y},l[0]||(l[0]=[s("span",{class:"text-lg"},"×",-1)]),2)])):u("",!0)],2)):u("",!0)}},I=h($,[["__scopeId","data-v-6db12345"]]);export{I as F}; diff --git a/frontend/dist/assets/FPBadge-BKY5dPnL.js b/frontend/dist/assets/FPBadge-DvOitM1C.js similarity index 84% rename from frontend/dist/assets/FPBadge-BKY5dPnL.js rename to frontend/dist/assets/FPBadge-DvOitM1C.js index 966463ff..1c5dfd03 100644 --- a/frontend/dist/assets/FPBadge-BKY5dPnL.js +++ b/frontend/dist/assets/FPBadge-DvOitM1C.js @@ -1 +1 @@ -import{_ as n,c as d,a as i,g as u,p,n as g}from"./index-BUdRbiwj.js";const b={__name:"FPBadge",props:{variant:{type:String,default:"default",validator:t=>["default","primary","secondary","success","warning","error","info"].includes(t)},size:{type:String,default:"md",validator:t=>["xs","sm","md","lg"].includes(t)},outline:{type:Boolean,default:!1},pill:{type:Boolean,default:!1},dot:{type:Boolean,default:!1}},setup(t){const e=t,o=d(()=>{const r=["inline-flex items-center justify-center font-medium","transition-colors duration-200"],s={xs:e.dot?["w-1.5 h-1.5"]:["px-1.5 py-0.5 text-xs"],sm:e.dot?["w-2 h-2"]:["px-2 py-0.5 text-xs"],md:e.dot?["w-2.5 h-2.5"]:["px-2.5 py-0.5 text-xs"],lg:e.dot?["w-3 h-3"]:["px-3 py-1 text-sm"]},a=[];e.pill||e.dot?a.push("rounded-full"):a.push("rounded");const l={default:e.outline?["bg-white text-gray-700 border border-gray-300"]:["bg-gray-100 text-gray-800"],primary:e.outline?["bg-white text-primary-700 border border-primary-300"]:["bg-primary-100 text-primary-800"],secondary:e.outline?["bg-white text-gray-700 border border-gray-300"]:["bg-gray-100 text-gray-800"],success:e.outline?["bg-white text-green-700 border border-green-300"]:["bg-green-100 text-green-800"],warning:e.outline?["bg-white text-yellow-700 border border-yellow-300"]:["bg-yellow-100 text-yellow-800"],error:e.outline?["bg-white text-red-700 border border-red-300"]:["bg-red-100 text-red-800"],info:e.outline?["bg-white text-blue-700 border border-blue-300"]:["bg-blue-100 text-blue-800"]};return[...r,...s[e.size],...a,...l[e.variant]].flat()});return(r,s)=>(u(),i("span",{class:g(o.value)},[p(r.$slots,"default",{},void 0,!0)],2))}},x=n(b,[["__scopeId","data-v-39ba8990"]]);export{x as F}; +import{_ as n,c as d,a as i,p as u,n as p,g}from"./index-QAlcqU00.js";const b={__name:"FPBadge",props:{variant:{type:String,default:"default",validator:t=>["default","primary","secondary","success","warning","error","info"].includes(t)},size:{type:String,default:"md",validator:t=>["xs","sm","md","lg"].includes(t)},outline:{type:Boolean,default:!1},pill:{type:Boolean,default:!1},dot:{type:Boolean,default:!1}},setup(t){const e=t,o=d(()=>{const r=["inline-flex items-center justify-center font-medium","transition-colors duration-200"],s={xs:e.dot?["w-1.5 h-1.5"]:["px-1.5 py-0.5 text-xs"],sm:e.dot?["w-2 h-2"]:["px-2 py-0.5 text-xs"],md:e.dot?["w-2.5 h-2.5"]:["px-2.5 py-0.5 text-xs"],lg:e.dot?["w-3 h-3"]:["px-3 py-1 text-sm"]},a=[];e.pill||e.dot?a.push("rounded-full"):a.push("rounded");const l={default:e.outline?["bg-white text-gray-700 border border-gray-300"]:["bg-gray-100 text-gray-800"],primary:e.outline?["bg-white text-primary-700 border border-primary-300"]:["bg-primary-100 text-primary-800"],secondary:e.outline?["bg-white text-gray-700 border border-gray-300"]:["bg-gray-100 text-gray-800"],success:e.outline?["bg-white text-green-700 border border-green-300"]:["bg-green-100 text-green-800"],warning:e.outline?["bg-white text-yellow-700 border border-yellow-300"]:["bg-yellow-100 text-yellow-800"],error:e.outline?["bg-white text-red-700 border border-red-300"]:["bg-red-100 text-red-800"],info:e.outline?["bg-white text-blue-700 border border-blue-300"]:["bg-blue-100 text-blue-800"]};return[...r,...s[e.size],...a,...l[e.variant]].flat()});return(r,s)=>(g(),i("span",{class:p(o.value)},[u(r.$slots,"default",{},void 0,!0)],2))}},x=n(b,[["__scopeId","data-v-39ba8990"]]);export{x as F}; diff --git a/frontend/dist/assets/FPCard-qHzcEQAE.js b/frontend/dist/assets/FPCard-AB6NRXg5.js similarity index 96% rename from frontend/dist/assets/FPCard-qHzcEQAE.js rename to frontend/dist/assets/FPCard-AB6NRXg5.js index 5170ffa9..98877831 100644 --- a/frontend/dist/assets/FPCard-qHzcEQAE.js +++ b/frontend/dist/assets/FPCard-AB6NRXg5.js @@ -1 +1 @@ -import{_ as m,bg as b,bf as y,c as i,a as o,g as l,j as r,b as c,p as n,n as C,a3 as k,t as p}from"./index-BUdRbiwj.js";const _={key:0,class:"atlas-card-header"},S={class:"flex items-center justify-between"},$={key:0,class:"text-lg font-medium text-gray-900"},w={key:1,class:"mt-1 text-sm text-gray-500"},B={key:0,class:"flex items-center space-x-2"},x={key:1,class:"atlas-card-footer"},F={__name:"FPCard",props:{title:{type:String,default:""},subtitle:{type:String,default:""},variant:{type:String,default:"default",validator:t=>["default","outlined","elevated","flat"].includes(t)},padding:{type:String,default:"md",validator:t=>["none","sm","md","lg"].includes(t)},hover:{type:Boolean,default:!1},clickable:{type:Boolean,default:!1}},setup(t){const s=t,u=b();y();const f=i(()=>u.header||s.title||s.subtitle||u.actions),v=i(()=>{const e=["atlas-card","bg-white","transition-all duration-200"],d={default:["border border-gray-200","rounded"],outlined:["border-2 border-gray-300","rounded"],elevated:["shadow-lg border border-gray-100","rounded"],flat:["border-0"]},a=[];s.hover&&a.push("hover:shadow-md"),s.clickable&&a.push("cursor-pointer","hover:bg-gray-50");const g={default:["shadow-sm"],outlined:[],elevated:[],flat:[]};return[...e,...d[s.variant],...g[s.variant],...a].flat()}),h=i(()=>{const e={none:[],sm:["p-4"],md:["p-6"],lg:["p-8"]},d=["atlas-card-content"],a=[];return f.value&&s.padding!=="none"&&a.push("pt-0"),[...d,...e[s.padding],...a].flat()});return(e,d)=>(l(),o("div",k({class:v.value},e.$attrs),[f.value?(l(),o("div",_,[n(e.$slots,"header",{},()=>[c("div",S,[c("div",null,[t.title?(l(),o("h3",$,p(t.title),1)):r("",!0),t.subtitle?(l(),o("p",w,p(t.subtitle),1)):r("",!0)]),e.$slots.actions?(l(),o("div",B,[n(e.$slots,"actions",{},void 0,!0)])):r("",!0)])],!0)])):r("",!0),c("div",{class:C(h.value)},[n(e.$slots,"default",{},void 0,!0)],2),e.$slots.footer?(l(),o("div",x,[n(e.$slots,"footer",{},void 0,!0)])):r("",!0)],16))}},j=m(F,[["__scopeId","data-v-c3f51894"]]);export{j as F}; +import{_ as m,bg as b,bf as y,c as i,a as o,g as l,j as r,b as c,p as n,n as C,a3 as k,t as p}from"./index-QAlcqU00.js";const _={key:0,class:"atlas-card-header"},S={class:"flex items-center justify-between"},$={key:0,class:"text-lg font-medium text-gray-900"},w={key:1,class:"mt-1 text-sm text-gray-500"},B={key:0,class:"flex items-center space-x-2"},x={key:1,class:"atlas-card-footer"},F={__name:"FPCard",props:{title:{type:String,default:""},subtitle:{type:String,default:""},variant:{type:String,default:"default",validator:t=>["default","outlined","elevated","flat"].includes(t)},padding:{type:String,default:"md",validator:t=>["none","sm","md","lg"].includes(t)},hover:{type:Boolean,default:!1},clickable:{type:Boolean,default:!1}},setup(t){const s=t,u=b();y();const f=i(()=>u.header||s.title||s.subtitle||u.actions),v=i(()=>{const e=["atlas-card","bg-white","transition-all duration-200"],d={default:["border border-gray-200","rounded"],outlined:["border-2 border-gray-300","rounded"],elevated:["shadow-lg border border-gray-100","rounded"],flat:["border-0"]},a=[];s.hover&&a.push("hover:shadow-md"),s.clickable&&a.push("cursor-pointer","hover:bg-gray-50");const g={default:["shadow-sm"],outlined:[],elevated:[],flat:[]};return[...e,...d[s.variant],...g[s.variant],...a].flat()}),h=i(()=>{const e={none:[],sm:["p-4"],md:["p-6"],lg:["p-8"]},d=["atlas-card-content"],a=[];return f.value&&s.padding!=="none"&&a.push("pt-0"),[...d,...e[s.padding],...a].flat()});return(e,d)=>(l(),o("div",k({class:v.value},e.$attrs),[f.value?(l(),o("div",_,[n(e.$slots,"header",{},()=>[c("div",S,[c("div",null,[t.title?(l(),o("h3",$,p(t.title),1)):r("",!0),t.subtitle?(l(),o("p",w,p(t.subtitle),1)):r("",!0)]),e.$slots.actions?(l(),o("div",B,[n(e.$slots,"actions",{},void 0,!0)])):r("",!0)])],!0)])):r("",!0),c("div",{class:C(h.value)},[n(e.$slots,"default",{},void 0,!0)],2),e.$slots.footer?(l(),o("div",x,[n(e.$slots,"footer",{},void 0,!0)])):r("",!0)],16))}},j=m(F,[["__scopeId","data-v-c3f51894"]]);export{j as F}; diff --git a/frontend/dist/assets/FPCheckbox-Bu8jNAEW.js b/frontend/dist/assets/FPCheckbox-DcRYwN3n.js similarity index 77% rename from frontend/dist/assets/FPCheckbox-Bu8jNAEW.js rename to frontend/dist/assets/FPCheckbox-DcRYwN3n.js index 0541d1c8..d92514b9 100644 --- a/frontend/dist/assets/FPCheckbox-Bu8jNAEW.js +++ b/frontend/dist/assets/FPCheckbox-DcRYwN3n.js @@ -1 +1 @@ -import{_ as x,c,a as r,g as l,b as n,j as i,n as d,t as u}from"./index-BUdRbiwj.js";const y={class:"atlas-checkbox-wrapper"},k={class:"flex items-center cursor-pointer"},v={class:"relative"},C=["id","checked","disabled"],w={key:0,class:"absolute inset-0 flex items-center justify-center pointer-events-none"},V={key:0,class:"mt-1 text-sm text-error-600"},_={__name:"FPCheckbox",props:{modelValue:{type:Boolean,default:!1},label:{type:String,default:""},disabled:{type:Boolean,default:!1},errorMessage:{type:String,default:""},size:{type:String,default:"md",validator:e=>["sm","md","lg"].includes(e)}},emits:["update:modelValue"],setup(e,{emit:m}){const t=e,p=m,h=c(()=>`atlas-checkbox-${Math.random().toString(36).substr(2,9)}`),f=c(()=>{const s=["appearance-none rounded-sm border-2 transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2"],o={sm:["w-4 h-4"],md:["w-5 h-5"],lg:["w-6 h-6"]},a=[];return t.modelValue?a.push("bg-primary-600","border-primary-600","focus:ring-primary-500"):a.push("bg-white","border-gray-300","focus:ring-primary-500"),t.disabled?a.push("opacity-50","cursor-not-allowed"):a.push("cursor-pointer"),t.errorMessage&&a.push("border-error-500","focus:ring-error-500"),[...s,...o[t.size],...a].flat()}),b=c(()=>{const s=["text-gray-700","select-none"];return t.disabled?s.push("opacity-50","cursor-not-allowed"):s.push("cursor-pointer"),t.errorMessage&&s.push("text-error-700"),s}),g=s=>{p("update:modelValue",s.target.checked)};return(s,o)=>(l(),r("div",y,[n("label",k,[n("div",v,[n("input",{id:h.value,type:"checkbox",checked:e.modelValue,disabled:e.disabled,class:d(f.value),onChange:g},null,42,C),e.modelValue?(l(),r("div",w,o[0]||(o[0]=[n("span",{class:"text-white text-xs"},"✓",-1)]))):i("",!0)]),e.label?(l(),r("span",{key:0,class:d(["ml-2 text-sm",b.value])},u(e.label),3)):i("",!0)]),e.errorMessage?(l(),r("div",V,u(e.errorMessage),1)):i("",!0)]))}},B=x(_,[["__scopeId","data-v-eeade3ef"]]);export{B as F}; +import{_ as x,c,a as r,b as l,j as i,n as d,t as u,g as n}from"./index-QAlcqU00.js";const y={class:"atlas-checkbox-wrapper"},k={class:"flex items-center cursor-pointer"},v={class:"relative"},C=["id","checked","disabled"],w={key:0,class:"absolute inset-0 flex items-center justify-center pointer-events-none"},V={key:0,class:"mt-1 text-sm text-error-600"},_={__name:"FPCheckbox",props:{modelValue:{type:Boolean,default:!1},label:{type:String,default:""},disabled:{type:Boolean,default:!1},errorMessage:{type:String,default:""},size:{type:String,default:"md",validator:e=>["sm","md","lg"].includes(e)}},emits:["update:modelValue"],setup(e,{emit:m}){const t=e,p=m,h=c(()=>`atlas-checkbox-${Math.random().toString(36).substr(2,9)}`),f=c(()=>{const s=["appearance-none rounded-sm border-2 transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2"],o={sm:["w-4 h-4"],md:["w-5 h-5"],lg:["w-6 h-6"]},a=[];return t.modelValue?a.push("bg-primary-600","border-primary-600","focus:ring-primary-500"):a.push("bg-white","border-gray-300","focus:ring-primary-500"),t.disabled?a.push("opacity-50","cursor-not-allowed"):a.push("cursor-pointer"),t.errorMessage&&a.push("border-error-500","focus:ring-error-500"),[...s,...o[t.size],...a].flat()}),b=c(()=>{const s=["text-gray-700","select-none"];return t.disabled?s.push("opacity-50","cursor-not-allowed"):s.push("cursor-pointer"),t.errorMessage&&s.push("text-error-700"),s}),g=s=>{p("update:modelValue",s.target.checked)};return(s,o)=>(n(),r("div",y,[l("label",k,[l("div",v,[l("input",{id:h.value,type:"checkbox",checked:e.modelValue,disabled:e.disabled,class:d(f.value),onChange:g},null,42,C),e.modelValue?(n(),r("div",w,o[0]||(o[0]=[l("span",{class:"text-white text-xs"},"✓",-1)]))):i("",!0)]),e.label?(n(),r("span",{key:0,class:d(["ml-2 text-sm",b.value])},u(e.label),3)):i("",!0)]),e.errorMessage?(n(),r("div",V,u(e.errorMessage),1)):i("",!0)]))}},B=x(_,[["__scopeId","data-v-eeade3ef"]]);export{B as F}; diff --git a/frontend/dist/assets/FPFileUpload-D2coSbjN.js b/frontend/dist/assets/FPFileUpload-Bk17EQTg.js similarity index 88% rename from frontend/dist/assets/FPFileUpload-D2coSbjN.js rename to frontend/dist/assets/FPFileUpload-Bk17EQTg.js index f72be961..b46546e3 100644 --- a/frontend/dist/assets/FPFileUpload-D2coSbjN.js +++ b/frontend/dist/assets/FPFileUpload-Bk17EQTg.js @@ -1 +1 @@ -import{_ as j,r as h,c as L,m as N,a as o,g as r,b as s,j as v,k,t as p,Q as $,h as w,n as T,af as U,aQ as W}from"./index-BUdRbiwj.js";const H={class:"fp-file-upload"},O={class:"p-6 text-center"},Q={class:"mx-auto w-12 h-12 mb-4"},R={key:0,class:"w-full h-full text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},E={key:1,class:"flex items-center justify-center"},G={key:0},K={class:"text-xs text-gray-500"},q={key:0},J={key:1},X={class:"w-full bg-gray-200 rounded-full h-2"},Y={class:"text-xs text-gray-500 mt-1"},Z={key:0,class:"mt-4 space-y-3"},ee={class:"flex-shrink-0 w-10 h-10 mr-3"},te=["src","alt"],se={key:1,class:"w-full h-full bg-gray-300 rounded flex items-center justify-center"},ae={class:"flex-1 min-w-0"},le={class:"text-sm font-medium text-gray-900 truncate"},oe={class:"text-xs text-gray-500"},re={key:0},ie=["onClick"],ne={key:1,class:"mt-3 text-sm text-red-600"},de=["accept","multiple","disabled"],ce={__name:"FPFileUpload",props:{modelValue:{type:[Array,File,null],default:null},accept:{type:String,default:"image/*,application/pdf,.doc,.docx"},multiple:{type:Boolean,default:!1},maxSize:{type:Number,default:10*1024*1024},maxFiles:{type:Number,default:5},disabled:{type:Boolean,default:!1},uploading:{type:Boolean,default:!1},uploadProgress:{type:Number,default:0}},emits:["update:modelValue","files-added","files-removed","error"],setup(i,{emit:M}){const a=i,m=M,F=h(null),g=h(!1),f=h(""),n=h([]),B=L(()=>a.accept==="image/*"?"Images only":a.accept.includes("image")&&a.accept.includes("pdf")?"Images and PDFs":"Files"),D=()=>{var t;!a.disabled&&!a.uploading&&((t=F.value)==null||t.click())},A=t=>{const e=Array.from(t.target.files);b(e),t.target.value=""},V=t=>{!a.disabled&&!a.uploading&&(g.value=!0)},P=()=>{g.value=!1},S=t=>{if(g.value=!1,!a.disabled&&!a.uploading){const e=Array.from(t.dataTransfer.files);b(e)}},b=t=>{f.value="";const e=[];for(const d of t){if(d.size>a.maxSize){f.value=`File "${d.name}" is too large. Maximum size is ${x(a.maxSize)}.`;continue}if(a.accept&&a.accept!=="*/*"&&!a.accept.split(",").map(u=>u.trim()).some(u=>u.startsWith(".")?d.name.toLowerCase().endsWith(u.toLowerCase()):u.includes("/*")?d.type.startsWith(u.replace("/*","")):d.type===u)){f.value=`File "${d.name}" is not an accepted file type.`;continue}e.push(d)}if(e.length===0)return;const c=(a.multiple?n.value.length:0)+e.length;if(a.multiple&&c>a.maxFiles){f.value=`Maximum ${a.maxFiles} files allowed.`;return}if(a.multiple){const d=e.map(y);n.value.push(...d);const z=n.value.map(C=>C.file);m("update:modelValue",z)}else{const d=y(e[0]);n.value=[d],m("update:modelValue",e[0])}m("files-added",e)},I=t=>{const e=n.value[t];if(n.value.splice(t,1),a.multiple){const l=n.value.map(c=>c.file);m("update:modelValue",l.length>0?l:null)}else m("update:modelValue",null);m("files-removed",[e.file])},y=t=>{const e={id:Date.now()+Math.random(),name:t.name,size:t.size,type:t.type,file:t,preview:null};if(_(t)){const l=new FileReader;l.onload=c=>{e.preview=c.target.result},l.readAsDataURL(t)}return e},_=t=>{var e;return((e=t.type)==null?void 0:e.startsWith("image/"))||!1},x=t=>{if(t===0)return"0 Bytes";const e=1024,l=["Bytes","KB","MB","GB"],c=Math.floor(Math.log(t)/Math.log(e));return parseFloat((t/Math.pow(e,c)).toFixed(2))+" "+l[c]};return N(()=>a.modelValue,t=>{t?Array.isArray(t)?n.value=t.map(y):n.value=[y(t)]:n.value=[]},{immediate:!0}),(t,e)=>(r(),o("div",H,[s("div",{class:T(["upload-area border-2 border-dashed rounded-lg transition-colors duration-200",[g.value?"border-primary-500 bg-primary-50":"border-gray-300",i.disabled?"opacity-50 cursor-not-allowed":"cursor-pointer hover:border-primary-400"]]),onClick:D,onDragover:w(V,["prevent"]),onDragleave:w(P,["prevent"]),onDrop:w(S,["prevent"])},[s("div",O,[s("div",Q,[i.uploading?(r(),o("div",E,e[1]||(e[1]=[s("svg",{class:"animate-spin w-8 h-8 text-primary-500",fill:"none",viewBox:"0 0 24 24"},[s("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"}),s("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})],-1)]))):(r(),o("svg",R,e[0]||(e[0]=[s("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12"},null,-1)])))]),i.uploading?(r(),o("div",J,[e[3]||(e[3]=s("p",{class:"text-sm text-gray-600 mb-2"},"Uploading...",-1)),s("div",X,[s("div",{class:"bg-primary-500 h-2 rounded-full transition-all duration-300",style:$({width:`${i.uploadProgress}%`})},null,4)]),s("p",Y,p(i.uploadProgress)+"%",1)])):(r(),o("div",G,[e[2]||(e[2]=s("p",{class:"text-sm text-gray-600 mb-1"},[s("span",{class:"font-medium text-primary-600"},"Click to upload"),k(" or drag and drop ")],-1)),s("p",K,[k(p(B.value)+" ",1),i.maxSize?(r(),o("span",q," (max "+p(x(i.maxSize))+")",1)):v("",!0)])]))])],34),n.value.length>0?(r(),o("div",Z,[(r(!0),o(U,null,W(n.value,(l,c)=>(r(),o("div",{key:l.id||c,class:"flex items-center p-3 bg-gray-50 rounded-lg"},[s("div",ee,[l.preview&&_(l)?(r(),o("img",{key:0,src:l.preview,alt:l.name,class:"w-full h-full object-cover rounded"},null,8,te)):(r(),o("div",se,e[4]||(e[4]=[s("svg",{class:"w-5 h-5 text-gray-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[s("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1)])))]),s("div",ae,[s("p",le,p(l.name),1),s("p",oe,[k(p(x(l.size))+" ",1),l.type?(r(),o("span",re," • "+p(l.type),1)):v("",!0)])]),i.disabled?v("",!0):(r(),o("button",{key:0,onClick:d=>I(c),class:"flex-shrink-0 ml-3 p-1 rounded-full text-gray-400 hover:text-gray-600 hover:bg-gray-200 transition-colors",type:"button"},e[5]||(e[5]=[s("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[s("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})],-1)]),8,ie))]))),128))])):v("",!0),f.value?(r(),o("div",ne,p(f.value),1)):v("",!0),s("input",{ref_key:"fileInput",ref:F,type:"file",accept:i.accept,multiple:i.multiple,disabled:i.disabled,class:"hidden",onChange:A},null,40,de)]))}},pe=j(ce,[["__scopeId","data-v-3b4b2a2a"]]);export{pe as F}; +import{_ as j,r as h,c as L,m as N,a as o,g as r,b as s,j as v,k,t as p,Q as $,h as w,n as T,af as U,aR as W}from"./index-QAlcqU00.js";const R={class:"fp-file-upload"},H={class:"p-6 text-center"},O={class:"mx-auto w-12 h-12 mb-4"},E={key:0,class:"w-full h-full text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},G={key:1,class:"flex items-center justify-center"},K={key:0},Q={class:"text-xs text-gray-500"},q={key:0},J={key:1},X={class:"w-full bg-gray-200 rounded-full h-2"},Y={class:"text-xs text-gray-500 mt-1"},Z={key:0,class:"mt-4 space-y-3"},ee={class:"flex-shrink-0 w-10 h-10 mr-3"},te=["src","alt"],se={key:1,class:"w-full h-full bg-gray-300 rounded flex items-center justify-center"},ae={class:"flex-1 min-w-0"},le={class:"text-sm font-medium text-gray-900 truncate"},oe={class:"text-xs text-gray-500"},re={key:0},ie=["onClick"],ne={key:1,class:"mt-3 text-sm text-red-600"},de=["accept","multiple","disabled"],ce={__name:"FPFileUpload",props:{modelValue:{type:[Array,File,null],default:null},accept:{type:String,default:"image/*,application/pdf,.doc,.docx"},multiple:{type:Boolean,default:!1},maxSize:{type:Number,default:10*1024*1024},maxFiles:{type:Number,default:5},disabled:{type:Boolean,default:!1},uploading:{type:Boolean,default:!1},uploadProgress:{type:Number,default:0}},emits:["update:modelValue","files-added","files-removed","error"],setup(i,{emit:M}){const a=i,m=M,F=h(null),g=h(!1),f=h(""),n=h([]),B=L(()=>a.accept==="image/*"?"Images only":a.accept.includes("image")&&a.accept.includes("pdf")?"Images and PDFs":"Files"),D=()=>{var t;!a.disabled&&!a.uploading&&((t=F.value)==null||t.click())},A=t=>{const e=Array.from(t.target.files);b(e),t.target.value=""},V=t=>{!a.disabled&&!a.uploading&&(g.value=!0)},P=()=>{g.value=!1},S=t=>{if(g.value=!1,!a.disabled&&!a.uploading){const e=Array.from(t.dataTransfer.files);b(e)}},b=t=>{f.value="";const e=[];for(const d of t){if(d.size>a.maxSize){f.value=`File "${d.name}" is too large. Maximum size is ${x(a.maxSize)}.`;continue}if(a.accept&&a.accept!=="*/*"&&!a.accept.split(",").map(u=>u.trim()).some(u=>u.startsWith(".")?d.name.toLowerCase().endsWith(u.toLowerCase()):u.includes("/*")?d.type.startsWith(u.replace("/*","")):d.type===u)){f.value=`File "${d.name}" is not an accepted file type.`;continue}e.push(d)}if(e.length===0)return;const c=(a.multiple?n.value.length:0)+e.length;if(a.multiple&&c>a.maxFiles){f.value=`Maximum ${a.maxFiles} files allowed.`;return}if(a.multiple){const d=e.map(y);n.value.push(...d);const z=n.value.map(C=>C.file);m("update:modelValue",z)}else{const d=y(e[0]);n.value=[d],m("update:modelValue",e[0])}m("files-added",e)},I=t=>{const e=n.value[t];if(n.value.splice(t,1),a.multiple){const l=n.value.map(c=>c.file);m("update:modelValue",l.length>0?l:null)}else m("update:modelValue",null);m("files-removed",[e.file])},y=t=>{const e={id:Date.now()+Math.random(),name:t.name,size:t.size,type:t.type,file:t,preview:null};if(_(t)){const l=new FileReader;l.onload=c=>{e.preview=c.target.result},l.readAsDataURL(t)}return e},_=t=>{var e;return((e=t.type)==null?void 0:e.startsWith("image/"))||!1},x=t=>{if(t===0)return"0 Bytes";const e=1024,l=["Bytes","KB","MB","GB"],c=Math.floor(Math.log(t)/Math.log(e));return parseFloat((t/Math.pow(e,c)).toFixed(2))+" "+l[c]};return N(()=>a.modelValue,t=>{t?Array.isArray(t)?n.value=t.map(y):n.value=[y(t)]:n.value=[]},{immediate:!0}),(t,e)=>(r(),o("div",R,[s("div",{class:T(["upload-area border-2 border-dashed rounded-lg transition-colors duration-200",[g.value?"border-primary-500 bg-primary-50":"border-gray-300",i.disabled?"opacity-50 cursor-not-allowed":"cursor-pointer hover:border-primary-400"]]),onClick:D,onDragover:w(V,["prevent"]),onDragleave:w(P,["prevent"]),onDrop:w(S,["prevent"])},[s("div",H,[s("div",O,[i.uploading?(r(),o("div",G,e[1]||(e[1]=[s("svg",{class:"animate-spin w-8 h-8 text-primary-500",fill:"none",viewBox:"0 0 24 24"},[s("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"}),s("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})],-1)]))):(r(),o("svg",E,e[0]||(e[0]=[s("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12"},null,-1)])))]),i.uploading?(r(),o("div",J,[e[3]||(e[3]=s("p",{class:"text-sm text-gray-600 mb-2"},"Uploading...",-1)),s("div",X,[s("div",{class:"bg-primary-500 h-2 rounded-full transition-all duration-300",style:$({width:`${i.uploadProgress}%`})},null,4)]),s("p",Y,p(i.uploadProgress)+"%",1)])):(r(),o("div",K,[e[2]||(e[2]=s("p",{class:"text-sm text-gray-600 mb-1"},[s("span",{class:"font-medium text-primary-600"},"Click to upload"),k(" or drag and drop ")],-1)),s("p",Q,[k(p(B.value)+" ",1),i.maxSize?(r(),o("span",q," (max "+p(x(i.maxSize))+")",1)):v("",!0)])]))])],34),n.value.length>0?(r(),o("div",Z,[(r(!0),o(U,null,W(n.value,(l,c)=>(r(),o("div",{key:l.id||c,class:"flex items-center p-3 bg-gray-50 rounded-lg"},[s("div",ee,[l.preview&&_(l)?(r(),o("img",{key:0,src:l.preview,alt:l.name,class:"w-full h-full object-cover rounded"},null,8,te)):(r(),o("div",se,e[4]||(e[4]=[s("svg",{class:"w-5 h-5 text-gray-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[s("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1)])))]),s("div",ae,[s("p",le,p(l.name),1),s("p",oe,[k(p(x(l.size))+" ",1),l.type?(r(),o("span",re," • "+p(l.type),1)):v("",!0)])]),i.disabled?v("",!0):(r(),o("button",{key:0,onClick:d=>I(c),class:"flex-shrink-0 ml-3 p-1 rounded-full text-gray-400 hover:text-gray-600 hover:bg-gray-200 transition-colors",type:"button"},e[5]||(e[5]=[s("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[s("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})],-1)]),8,ie))]))),128))])):v("",!0),f.value?(r(),o("div",ne,p(f.value),1)):v("",!0),s("input",{ref_key:"fileInput",ref:F,type:"file",accept:i.accept,multiple:i.multiple,disabled:i.disabled,class:"hidden",onChange:A},null,40,de)]))}},pe=j(ce,[["__scopeId","data-v-3b4b2a2a"]]);export{pe as F}; diff --git a/frontend/dist/assets/FPInput-CzR_dWoe.js b/frontend/dist/assets/FPInput-D5RURom0.js similarity index 96% rename from frontend/dist/assets/FPInput-CzR_dWoe.js rename to frontend/dist/assets/FPInput-D5RURom0.js index e9143821..c108b94c 100644 --- a/frontend/dist/assets/FPInput-CzR_dWoe.js +++ b/frontend/dist/assets/FPInput-D5RURom0.js @@ -1 +1 @@ -import{_ as B,bf as M,r as V,c as d,a,g as s,j as n,b as i,k as w,t as o,a3 as F,n as g}from"./index-BUdRbiwj.js";const T={class:"fp-input-group"},z=["for"],N={key:0,class:"text-error-500 ml-1"},P={class:"relative"},q={key:0,class:"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none"},A={class:"text-gray-400 text-sm"},$=["id","type","value","placeholder","disabled","readonly"],j={key:1,class:"mt-1 text-sm text-error-600"},D={key:2,class:"mt-1 text-sm text-gray-500"},E={__name:"FPInput",props:{modelValue:{type:[String,Number],default:""},label:{type:String,default:""},placeholder:{type:String,default:""},type:{type:String,default:"text"},variant:{type:String,default:"outlined",validator:e=>["outlined","filled","underlined"].includes(e)},size:{type:String,default:"md",validator:e=>["sm","md","lg"].includes(e)},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},required:{type:Boolean,default:!1},errorMessage:{type:String,default:""},helpText:{type:String,default:""},prependIcon:{type:String,default:""},appendIcon:{type:String,default:""},appendIconClickable:{type:Boolean,default:!1},rules:{type:Array,default:()=>[]}},emits:["update:modelValue","blur","focus","append-icon-click"],setup(e,{emit:b}){const t=e,l=b;M();const p=V(!1),f=d(()=>`fp-input-${Math.random().toString(36).substr(2,9)}`),h=d(()=>t.type==="password"&&t.appendIcon==="mdi-eye"?"text":t.type==="password"&&t.appendIcon==="mdi-eye-off"?"password":t.type),x=d(()=>{const r=["block w-full rounded transition-colors duration-200","focus:outline-none focus:ring-2 focus:ring-offset-0"],m={sm:["px-3 py-1.5 text-sm"],md:["px-3 py-2 text-sm"],lg:["px-4 py-3 text-base"]},S={outlined:["border",t.errorMessage?"border-error-300 focus:border-error-500 focus:ring-error-500":"border-gray-300 focus:border-primary-500 focus:ring-primary-500","bg-white"],filled:["border-0 bg-gray-100",t.errorMessage?"focus:ring-error-500":"focus:ring-primary-500"],underlined:["border-0 border-b-2 bg-transparent rounded-none",t.errorMessage?"border-error-300 focus:border-error-500":"border-gray-300 focus:border-primary-500"]},c=[];t.disabled&&c.push("bg-gray-50","text-gray-500","cursor-not-allowed"),t.readonly&&c.push("bg-gray-50","cursor-default");const u=[];return t.prependIcon&&u.push("pl-10"),t.appendIcon&&u.push("pr-10"),[...r,...m[t.size],...S[t.variant],...c,...u].flat()});d(()=>"span");const y={"mdi-email":"✉","mdi-lock":"🔒","mdi-eye":"👁","mdi-eye-off":"🙈","mdi-account":"👤","mdi-phone":"📞"},v=r=>{l("update:modelValue",r.target.value)},I=r=>{p.value=!0,l("focus",r)},k=r=>{p.value=!1,l("blur",r),t.rules.length>0},C=r=>{t.appendIconClickable&&l("append-icon-click",r)};return(r,m)=>(s(),a("div",T,[e.label?(s(),a("label",{key:0,for:f.value,class:"block text-sm font-medium text-gray-700 mb-1"},[w(o(e.label)+" ",1),e.required?(s(),a("span",N,"*")):n("",!0)],8,z)):n("",!0),i("div",P,[e.prependIcon?(s(),a("div",q,[i("span",A,o(y[e.prependIcon]||e.prependIcon),1)])):n("",!0),i("input",F({id:f.value,type:h.value,value:e.modelValue,placeholder:e.placeholder,disabled:e.disabled,readonly:e.readonly,class:x.value},r.$attrs,{onInput:v,onBlur:k,onFocus:I}),null,16,$),e.appendIcon?(s(),a("div",{key:1,class:g(["absolute inset-y-0 right-0 pr-3 flex items-center",{"cursor-pointer":e.appendIconClickable}]),onClick:C},[i("span",{class:g(["text-gray-400 text-sm",{"hover:text-gray-600":e.appendIconClickable}])},o(y[e.appendIcon]||e.appendIcon),3)],2)):n("",!0)]),e.errorMessage?(s(),a("div",j,o(e.errorMessage),1)):n("",!0),e.helpText&&!e.errorMessage?(s(),a("div",D,o(e.helpText),1)):n("",!0)]))}},H=B(E,[["__scopeId","data-v-14fbf784"]]);export{H as F}; +import{_ as B,bf as M,r as V,c as d,a,j as n,b as i,k as w,t as o,a3 as F,n as g,g as s}from"./index-QAlcqU00.js";const T={class:"fp-input-group"},z=["for"],N={key:0,class:"text-error-500 ml-1"},P={class:"relative"},q={key:0,class:"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none"},A={class:"text-gray-400 text-sm"},$=["id","type","value","placeholder","disabled","readonly"],j={key:1,class:"mt-1 text-sm text-error-600"},D={key:2,class:"mt-1 text-sm text-gray-500"},E={__name:"FPInput",props:{modelValue:{type:[String,Number],default:""},label:{type:String,default:""},placeholder:{type:String,default:""},type:{type:String,default:"text"},variant:{type:String,default:"outlined",validator:e=>["outlined","filled","underlined"].includes(e)},size:{type:String,default:"md",validator:e=>["sm","md","lg"].includes(e)},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},required:{type:Boolean,default:!1},errorMessage:{type:String,default:""},helpText:{type:String,default:""},prependIcon:{type:String,default:""},appendIcon:{type:String,default:""},appendIconClickable:{type:Boolean,default:!1},rules:{type:Array,default:()=>[]}},emits:["update:modelValue","blur","focus","append-icon-click"],setup(e,{emit:b}){const t=e,l=b;M();const p=V(!1),f=d(()=>`fp-input-${Math.random().toString(36).substr(2,9)}`),h=d(()=>t.type==="password"&&t.appendIcon==="mdi-eye"?"text":t.type==="password"&&t.appendIcon==="mdi-eye-off"?"password":t.type),x=d(()=>{const r=["block w-full rounded transition-colors duration-200","focus:outline-none focus:ring-2 focus:ring-offset-0"],m={sm:["px-3 py-1.5 text-sm"],md:["px-3 py-2 text-sm"],lg:["px-4 py-3 text-base"]},S={outlined:["border",t.errorMessage?"border-error-300 focus:border-error-500 focus:ring-error-500":"border-gray-300 focus:border-primary-500 focus:ring-primary-500","bg-white"],filled:["border-0 bg-gray-100",t.errorMessage?"focus:ring-error-500":"focus:ring-primary-500"],underlined:["border-0 border-b-2 bg-transparent rounded-none",t.errorMessage?"border-error-300 focus:border-error-500":"border-gray-300 focus:border-primary-500"]},c=[];t.disabled&&c.push("bg-gray-50","text-gray-500","cursor-not-allowed"),t.readonly&&c.push("bg-gray-50","cursor-default");const u=[];return t.prependIcon&&u.push("pl-10"),t.appendIcon&&u.push("pr-10"),[...r,...m[t.size],...S[t.variant],...c,...u].flat()});d(()=>"span");const y={"mdi-email":"✉","mdi-lock":"🔒","mdi-eye":"👁","mdi-eye-off":"🙈","mdi-account":"👤","mdi-phone":"📞"},v=r=>{l("update:modelValue",r.target.value)},I=r=>{p.value=!0,l("focus",r)},k=r=>{p.value=!1,l("blur",r),t.rules.length>0},C=r=>{t.appendIconClickable&&l("append-icon-click",r)};return(r,m)=>(s(),a("div",T,[e.label?(s(),a("label",{key:0,for:f.value,class:"block text-sm font-medium text-gray-700 mb-1"},[w(o(e.label)+" ",1),e.required?(s(),a("span",N,"*")):n("",!0)],8,z)):n("",!0),i("div",P,[e.prependIcon?(s(),a("div",q,[i("span",A,o(y[e.prependIcon]||e.prependIcon),1)])):n("",!0),i("input",F({id:f.value,type:h.value,value:e.modelValue,placeholder:e.placeholder,disabled:e.disabled,readonly:e.readonly,class:x.value},r.$attrs,{onInput:v,onBlur:k,onFocus:I}),null,16,$),e.appendIcon?(s(),a("div",{key:1,class:g(["absolute inset-y-0 right-0 pr-3 flex items-center",{"cursor-pointer":e.appendIconClickable}]),onClick:C},[i("span",{class:g(["text-gray-400 text-sm",{"hover:text-gray-600":e.appendIconClickable}])},o(y[e.appendIcon]||e.appendIcon),3)],2)):n("",!0)]),e.errorMessage?(s(),a("div",j,o(e.errorMessage),1)):n("",!0),e.helpText&&!e.errorMessage?(s(),a("div",D,o(e.helpText),1)):n("",!0)]))}},H=B(E,[["__scopeId","data-v-14fbf784"]]);export{H as F}; diff --git a/frontend/dist/assets/FPModal-DWGF1LV8.js b/frontend/dist/assets/FPModal-DMoPysvU.js similarity index 75% rename from frontend/dist/assets/FPModal-DWGF1LV8.js rename to frontend/dist/assets/FPModal-DMoPysvU.js index c029dc60..6c41ac9c 100644 --- a/frontend/dist/assets/FPModal-DWGF1LV8.js +++ b/frontend/dist/assets/FPModal-DMoPysvU.js @@ -1 +1 @@ -import{_ as h,c as C,o as B,b4 as V,i as z,g as o,d as u,w as c,a as s,j as d,b as l,h as F,n as b,p as f,e as x,F as g,k as v,t as r,aA as S,bi as T}from"./index-BUdRbiwj.js";const $={class:"flex min-h-full items-center justify-center p-4"},M={key:0,class:"px-6 py-4 border-b border-gray-200"},j={class:"flex items-center justify-between"},E={class:"flex-1"},O={class:"text-lg font-semibold text-gray-900"},N={key:0,class:"mt-1 text-sm text-gray-600"},D={key:1,class:"px-6 py-4 border-t border-gray-200 bg-gray-50 rounded-b"},L={key:2,class:"px-6 py-4 border-t border-gray-200 bg-gray-50 rounded-b flex justify-end space-x-3"},P={__name:"FPModal",props:{modelValue:{type:Boolean,default:!1},title:{type:String,default:""},subtitle:{type:String,default:""},size:{type:String,default:"md",validator:e=>["sm","md","lg","xl","full"].includes(e)},closable:{type:Boolean,default:!0},closeOnOverlay:{type:Boolean,default:!0},scrollable:{type:Boolean,default:!1},hideDefaultFooter:{type:Boolean,default:!1},confirmText:{type:String,default:"Confirm"},cancelText:{type:String,default:"Cancel"},loading:{type:Boolean,default:!1}},emits:["update:modelValue","confirm","cancel"],setup(e,{emit:p}){const n=e,m=p,k=C(()=>({sm:"max-w-md w-full",md:"max-w-lg w-full",lg:"max-w-2xl w-full",xl:"max-w-4xl w-full",full:"max-w-none w-full h-full m-0 rounded-none"})[n.size]),i=()=>{m("update:modelValue",!1),m("cancel")},w=()=>{n.closeOnOverlay&&n.closable&&i()},y=t=>{t.key==="Escape"&&n.modelValue&&n.closable&&i()};return B(()=>{document.addEventListener("keydown",y)}),V(()=>{document.removeEventListener("keydown",y)}),(t,a)=>(o(),z(T,{to:"body"},[u(S,{name:"modal"},{default:c(()=>[e.modelValue?(o(),s("div",{key:0,class:"fixed inset-0 z-50 overflow-y-auto",onClick:w},[a[3]||(a[3]=l("div",{class:"fixed inset-0 bg-black transition-opacity",style:{opacity:"0.5"}},null,-1)),l("div",$,[l("div",{class:b(["relative bg-white rounded shadow-xl transform transition-all",k.value]),onClick:a[1]||(a[1]=F(()=>{},["stop"]))},[t.$slots.header||e.title?(o(),s("div",M,[l("div",j,[l("div",E,[f(t.$slots,"header",{},()=>[l("h3",O,r(e.title),1),e.subtitle?(o(),s("p",N,r(e.subtitle),1)):d("",!0)],!0)]),e.closable?(o(),s("button",{key:0,type:"button",class:"ml-4 text-gray-400 hover:text-gray-600 transition-colors",onClick:i},a[2]||(a[2]=[l("svg",{class:"w-6 h-6",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})],-1)]))):d("",!0)])])):d("",!0),l("div",{class:b(["px-6 py-4",{"max-h-96 overflow-y-auto":e.scrollable}])},[f(t.$slots,"default",{},void 0,!0)],2),t.$slots.footer?(o(),s("div",D,[f(t.$slots,"footer",{},void 0,!0)])):e.hideDefaultFooter?d("",!0):(o(),s("div",L,[u(x(g),{variant:"secondary",onClick:i},{default:c(()=>[v(r(e.cancelText),1)]),_:1}),u(x(g),{variant:"primary",loading:e.loading,onClick:a[0]||(a[0]=A=>t.$emit("confirm"))},{default:c(()=>[v(r(e.confirmText),1)]),_:1},8,["loading"])]))],2)])])):d("",!0)]),_:3})]))}},K=h(P,[["__scopeId","data-v-583bdfc3"]]);export{K as F}; +import{_ as h,c as C,o as B,aO as V,i as z,d as u,w as c,aA as F,bi as S,g as o,a as s,j as d,b as l,h as T,n as x,p as f,t as r,e as b,F as g,k as v}from"./index-QAlcqU00.js";const $={class:"flex min-h-full items-center justify-center p-4"},M={key:0,class:"px-6 py-4 border-b border-gray-200"},O={class:"flex items-center justify-between"},j={class:"flex-1"},E={class:"text-lg font-semibold text-gray-900"},N={key:0,class:"mt-1 text-sm text-gray-600"},D={key:1,class:"px-6 py-4 border-t border-gray-200 bg-gray-50 rounded-b"},L={key:2,class:"px-6 py-4 border-t border-gray-200 bg-gray-50 rounded-b flex justify-end space-x-3"},P={__name:"FPModal",props:{modelValue:{type:Boolean,default:!1},title:{type:String,default:""},subtitle:{type:String,default:""},size:{type:String,default:"md",validator:e=>["sm","md","lg","xl","full"].includes(e)},closable:{type:Boolean,default:!0},closeOnOverlay:{type:Boolean,default:!0},scrollable:{type:Boolean,default:!1},hideDefaultFooter:{type:Boolean,default:!1},confirmText:{type:String,default:"Confirm"},cancelText:{type:String,default:"Cancel"},loading:{type:Boolean,default:!1}},emits:["update:modelValue","confirm","cancel"],setup(e,{emit:p}){const n=e,m=p,k=C(()=>({sm:"max-w-md w-full",md:"max-w-lg w-full",lg:"max-w-2xl w-full",xl:"max-w-4xl w-full",full:"max-w-none w-full h-full m-0 rounded-none"})[n.size]),i=()=>{m("update:modelValue",!1),m("cancel")},w=()=>{n.closeOnOverlay&&n.closable&&i()},y=t=>{t.key==="Escape"&&n.modelValue&&n.closable&&i()};return B(()=>{document.addEventListener("keydown",y)}),V(()=>{document.removeEventListener("keydown",y)}),(t,a)=>(o(),z(S,{to:"body"},[u(F,{name:"modal"},{default:c(()=>[e.modelValue?(o(),s("div",{key:0,class:"fixed inset-0 z-50 overflow-y-auto",onClick:w},[a[3]||(a[3]=l("div",{class:"fixed inset-0 bg-black transition-opacity",style:{opacity:"0.5"}},null,-1)),l("div",$,[l("div",{class:x(["relative bg-white rounded shadow-xl transform transition-all",k.value]),onClick:a[1]||(a[1]=T(()=>{},["stop"]))},[t.$slots.header||e.title?(o(),s("div",M,[l("div",O,[l("div",j,[f(t.$slots,"header",{},()=>[l("h3",E,r(e.title),1),e.subtitle?(o(),s("p",N,r(e.subtitle),1)):d("",!0)],!0)]),e.closable?(o(),s("button",{key:0,type:"button",class:"ml-4 text-gray-400 hover:text-gray-600 transition-colors",onClick:i},a[2]||(a[2]=[l("svg",{class:"w-6 h-6",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})],-1)]))):d("",!0)])])):d("",!0),l("div",{class:x(["px-6 py-4",{"max-h-96 overflow-y-auto":e.scrollable}])},[f(t.$slots,"default",{},void 0,!0)],2),t.$slots.footer?(o(),s("div",D,[f(t.$slots,"footer",{},void 0,!0)])):e.hideDefaultFooter?d("",!0):(o(),s("div",L,[u(b(g),{variant:"secondary",onClick:i},{default:c(()=>[v(r(e.cancelText),1)]),_:1}),u(b(g),{variant:"primary",loading:e.loading,onClick:a[0]||(a[0]=A=>t.$emit("confirm"))},{default:c(()=>[v(r(e.confirmText),1)]),_:1},8,["loading"])]))],2)])])):d("",!0)]),_:3})]))}},K=h(P,[["__scopeId","data-v-583bdfc3"]]);export{K as F}; diff --git a/frontend/dist/assets/FPPageHeader-CFIwZZgQ.js b/frontend/dist/assets/FPPageHeader-CFIwZZgQ.js new file mode 100644 index 00000000..89d4b7c2 --- /dev/null +++ b/frontend/dist/assets/FPPageHeader-CFIwZZgQ.js @@ -0,0 +1 @@ +import{_ as u,i as m,w as f,bh as h,g as e,b as r,a as s,j as o,p as n,t as i,af as p,aR as y,n as b,f as x,k}from"./index-QAlcqU00.js";const g={class:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8"},v={key:0,class:"mb-8"},$={class:"bg-white rounded shadow-sm"},w={key:0,class:"mt-auto"},B={__name:"FPLayout",props:{title:{type:String,default:""}},setup(a){return(t,d)=>(e(),m(h,null,{default:f(()=>[r("div",g,[t.$slots.header?(e(),s("div",v,[n(t.$slots,"header",{},void 0,!0)])):o("",!0),r("div",$,[n(t.$slots,"default",{},void 0,!0)])]),t.$slots.footer?(e(),s("footer",w,[n(t.$slots,"footer",{},void 0,!0)])):o("",!0)]),_:3}))}},D=u(B,[["__scopeId","data-v-9a23b903"]]),F={class:"flex items-center justify-between"},P={class:"flex-1"},C={class:"text-2xl font-bold text-gray-900"},S={key:0,class:"mt-2 text-sm text-gray-600"},N={key:1,class:"flex mt-3","aria-label":"Breadcrumb"},j={class:"flex items-center space-x-2"},L={key:1,class:"text-sm text-gray-500"},V={key:2,class:"w-4 h-4 mx-2 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},A={key:0,class:"flex items-center space-x-3"},H={key:0,class:"mt-6"},I={key:1,class:"mt-6"},q={__name:"FPPageHeader",props:{title:{type:String,required:!0},description:{type:String,default:""},breadcrumbs:{type:Array,default:()=>[]}},setup(a){return(t,d)=>{const _=x("router-link");return e(),s("div",{class:b(["pb-6 mb-8",{"border-b border-gray-200":!t.$slots.tabs}])},[r("div",F,[r("div",P,[r("h1",C,i(a.title),1),a.description?(e(),s("p",S,i(a.description),1)):o("",!0),a.breadcrumbs&&a.breadcrumbs.length>0?(e(),s("nav",N,[r("ol",j,[(e(!0),s(p,null,y(a.breadcrumbs,(l,c)=>(e(),s("li",{key:c,class:"flex items-center"},[l.to?(e(),m(_,{key:0,to:l.to,class:"text-sm text-primary-600 hover:text-primary-700 transition-colors"},{default:f(()=>[k(i(l.text),1)]),_:2},1032,["to"])):(e(),s("span",L,i(l.text),1)),c(e(),m(h,null,{default:f(()=>[r("div",g,[t.$slots.header?(e(),s("div",v,[n(t.$slots,"header",{},void 0,!0)])):o("",!0),r("div",$,[n(t.$slots,"default",{},void 0,!0)])]),t.$slots.footer?(e(),s("footer",w,[n(t.$slots,"footer",{},void 0,!0)])):o("",!0)]),_:3}))}},D=u(B,[["__scopeId","data-v-9a23b903"]]),F={class:"flex items-center justify-between"},P={class:"flex-1"},C={class:"text-2xl font-bold text-gray-900"},S={key:0,class:"mt-2 text-sm text-gray-600"},N={key:1,class:"flex mt-3","aria-label":"Breadcrumb"},j={class:"flex items-center space-x-2"},L={key:1,class:"text-sm text-gray-500"},V={key:2,class:"w-4 h-4 mx-2 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},A={key:0,class:"flex items-center space-x-3"},H={key:0,class:"mt-6"},I={key:1,class:"mt-6"},q={__name:"FPPageHeader",props:{title:{type:String,required:!0},description:{type:String,default:""},breadcrumbs:{type:Array,default:()=>[]}},setup(a){return(t,d)=>{const _=p("router-link");return e(),s("div",{class:k(["pb-6 mb-8",{"border-b border-gray-200":!t.$slots.tabs}])},[r("div",F,[r("div",P,[r("h1",C,i(a.title),1),a.description?(e(),s("p",S,i(a.description),1)):o("",!0),a.breadcrumbs&&a.breadcrumbs.length>0?(e(),s("nav",N,[r("ol",j,[(e(!0),s(y,null,b(a.breadcrumbs,(l,c)=>(e(),s("li",{key:c,class:"flex items-center"},[l.to?(e(),m(_,{key:0,to:l.to,class:"text-sm text-primary-600 hover:text-primary-700 transition-colors"},{default:f(()=>[x(i(l.text),1)]),_:2},1032,["to"])):(e(),s("span",L,i(l.text),1)),c[]},optionValue:{type:String,default:"value"},optionLabel:{type:String,default:"title"},variant:{type:String,default:"outlined",validator:t=>["outlined","filled","underlined"].includes(t)},size:{type:String,default:"md",validator:t=>["sm","md","lg"].includes(t)},disabled:{type:Boolean,default:!1},required:{type:Boolean,default:!1},errorMessage:{type:String,default:""},helpText:{type:String,default:""},rules:{type:Array,default:()=>[]}},emits:["update:modelValue","blur","focus","change"],setup(t,{emit:y}){const r=t,d=y,f=k(!1),g=m(()=>`atlas-select-${Math.random().toString(36).substr(2,9)}`),p=m(()=>{const e=["block w-full rounded transition-colors duration-200 appearance-none","focus:outline-none focus:ring-2 focus:ring-offset-0"],s={sm:["px-3 py-1.5 text-sm"],md:["px-3 py-2 text-sm"],lg:["px-4 py-3 text-base"]},a={outlined:["border",r.errorMessage?"border-error-300 focus:border-error-500 focus:ring-error-500":"border-gray-300 focus:border-primary-500 focus:ring-primary-500","bg-white"],filled:["border-0 bg-gray-100",r.errorMessage?"focus:ring-error-500":"focus:ring-primary-500"],underlined:["border-0 border-b-2 bg-transparent rounded-none",r.errorMessage?"border-error-300 focus:border-error-500":"border-gray-300 focus:border-primary-500"]},c=[];return r.disabled&&c.push("bg-gray-50","text-gray-500","cursor-not-allowed"),c.push("pr-10"),[...e,...s[r.size],...a[r.variant],...c].flat()}),b=e=>typeof e=="object"&&e!==null?e[r.optionValue]:e,v=e=>typeof e=="object"&&e!==null?e[r.optionLabel]:e,h=e=>{const s=e.target.value,a=s===""?null:isNaN(s)?s:Number(s);d("update:modelValue",a),d("change",a)},x=e=>{f.value=!0,d("focus",e)},S=e=>{f.value=!1,d("blur",e),r.rules.length>0};return(e,s)=>(o(),l("div",N,[t.label?(o(),l("label",{key:0,for:g.value,class:"block text-sm font-medium text-gray-700 mb-1"},[C(u(t.label)+" ",1),t.required?(o(),l("span",T,"*")):i("",!0)],8,L)):i("",!0),n("div",j,[n("select",M({id:g.value,value:t.modelValue,disabled:t.disabled,class:p.value},e.$attrs,{onChange:h,onBlur:S,onFocus:x}),[n("option",z,u(t.placeholder||"Select an option"),1),(o(!0),l(B,null,F(t.options,a=>(o(),l("option",{key:b(a),value:b(a)},u(v(a)),9,P))),128))],16,w),s[0]||(s[0]=n("div",{class:"absolute inset-y-0 right-0 pr-3 flex items-center pointer-events-none"},[n("span",{class:"text-gray-400 text-sm"},"▼")],-1))]),t.errorMessage?(o(),l("div",q,u(t.errorMessage),1)):i("",!0),t.helpText&&!t.errorMessage?(o(),l("div",A,u(t.helpText),1)):i("",!0)]))}},_=V(I,[["__scopeId","data-v-dfd92765"]]);export{_ as F}; +import{_ as V,r as k,c as m,a as l,j as i,b as n,k as C,t as u,a3 as M,af as B,aR as F,g as o}from"./index-QAlcqU00.js";const N={class:"atlas-select-group"},L=["for"],T={key:0,class:"text-error-500 ml-1"},j={class:"relative"},w=["id","value","disabled"],z={value:"",disabled:""},P=["value"],q={key:1,class:"mt-1 text-sm text-error-600"},A={key:2,class:"mt-1 text-sm text-gray-500"},I={__name:"FPSelect",props:{modelValue:{type:[String,Number,null],default:null},label:{type:String,default:""},placeholder:{type:String,default:""},options:{type:Array,default:()=>[]},optionValue:{type:String,default:"value"},optionLabel:{type:String,default:"title"},variant:{type:String,default:"outlined",validator:t=>["outlined","filled","underlined"].includes(t)},size:{type:String,default:"md",validator:t=>["sm","md","lg"].includes(t)},disabled:{type:Boolean,default:!1},required:{type:Boolean,default:!1},errorMessage:{type:String,default:""},helpText:{type:String,default:""},rules:{type:Array,default:()=>[]}},emits:["update:modelValue","blur","focus","change"],setup(t,{emit:y}){const r=t,d=y,f=k(!1),g=m(()=>`atlas-select-${Math.random().toString(36).substr(2,9)}`),p=m(()=>{const e=["block w-full rounded transition-colors duration-200 appearance-none","focus:outline-none focus:ring-2 focus:ring-offset-0"],s={sm:["px-3 py-1.5 text-sm"],md:["px-3 py-2 text-sm"],lg:["px-4 py-3 text-base"]},a={outlined:["border",r.errorMessage?"border-error-300 focus:border-error-500 focus:ring-error-500":"border-gray-300 focus:border-primary-500 focus:ring-primary-500","bg-white"],filled:["border-0 bg-gray-100",r.errorMessage?"focus:ring-error-500":"focus:ring-primary-500"],underlined:["border-0 border-b-2 bg-transparent rounded-none",r.errorMessage?"border-error-300 focus:border-error-500":"border-gray-300 focus:border-primary-500"]},c=[];return r.disabled&&c.push("bg-gray-50","text-gray-500","cursor-not-allowed"),c.push("pr-10"),[...e,...s[r.size],...a[r.variant],...c].flat()}),b=e=>typeof e=="object"&&e!==null?e[r.optionValue]:e,v=e=>typeof e=="object"&&e!==null?e[r.optionLabel]:e,h=e=>{const s=e.target.value,a=s===""?null:isNaN(s)?s:Number(s);d("update:modelValue",a),d("change",a)},x=e=>{f.value=!0,d("focus",e)},S=e=>{f.value=!1,d("blur",e),r.rules.length>0};return(e,s)=>(o(),l("div",N,[t.label?(o(),l("label",{key:0,for:g.value,class:"block text-sm font-medium text-gray-700 mb-1"},[C(u(t.label)+" ",1),t.required?(o(),l("span",T,"*")):i("",!0)],8,L)):i("",!0),n("div",j,[n("select",M({id:g.value,value:t.modelValue,disabled:t.disabled,class:p.value},e.$attrs,{onChange:h,onBlur:S,onFocus:x}),[n("option",z,u(t.placeholder||"Select an option"),1),(o(!0),l(B,null,F(t.options,a=>(o(),l("option",{key:b(a),value:b(a)},u(v(a)),9,P))),128))],16,w),s[0]||(s[0]=n("div",{class:"absolute inset-y-0 right-0 pr-3 flex items-center pointer-events-none"},[n("span",{class:"text-gray-400 text-sm"},"▼")],-1))]),t.errorMessage?(o(),l("div",q,u(t.errorMessage),1)):i("",!0),t.helpText&&!t.errorMessage?(o(),l("div",A,u(t.helpText),1)):i("",!0)]))}},_=V(I,[["__scopeId","data-v-dfd92765"]]);export{_ as F}; diff --git a/frontend/dist/assets/FPStats-BGfZcDZc.js b/frontend/dist/assets/FPStats-DOY0PQQF.js similarity index 94% rename from frontend/dist/assets/FPStats-BGfZcDZc.js rename to frontend/dist/assets/FPStats-DOY0PQQF.js index 0d5ebf7d..a6d0ed2c 100644 --- a/frontend/dist/assets/FPStats-BGfZcDZc.js +++ b/frontend/dist/assets/FPStats-DOY0PQQF.js @@ -1 +1 @@ -import{_ as u,a as s,g as n,af as m,aQ as h,i as k,w as p,b as o,n as t,j as c,t as i,k as x,e as g}from"./index-BUdRbiwj.js";import{F as f}from"./FPCard-qHzcEQAE.js";const v={class:"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4"},y={class:"flex items-center"},w={class:"flex-shrink-0"},_={class:"ml-4 flex-1"},C={class:"text-sm font-medium text-gray-600"},b={class:"flex items-baseline"},B={class:"text-2xl font-semibold text-gray-900"},M={key:0,class:"self-center flex-shrink-0 h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},j={key:1,class:"self-center flex-shrink-0 h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},F={class:"sr-only"},z={key:0,class:"text-xs text-gray-500 mt-1"},V={__name:"FPStats",props:{stats:{type:Array,required:!0,validator:a=>a.every(l=>l.name&&l.value!==void 0&&l.value!==null)}},setup(a){const l=d=>d>0?"text-green-600":d<0?"text-red-600":"text-gray-500";return(d,r)=>(n(),s("div",v,[(n(!0),s(m,null,h(a.stats,e=>(n(),k(g(f),{key:e.name,padding:"md",class:"bg-white"},{default:p(()=>[o("div",y,[o("div",w,[o("div",{class:t(["w-8 h-8 rounded flex items-center justify-center",e.iconBg||"bg-primary-100"])},[e.icon==="building"?(n(),s("svg",{key:0,class:t(["w-5 h-5",e.iconColor||"text-primary-600"]),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},r[0]||(r[0]=[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4"},null,-1)]),2)):e.icon==="check-circle"?(n(),s("svg",{key:1,class:t(["w-5 h-5",e.iconColor||"text-primary-600"]),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},r[1]||(r[1]=[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"},null,-1)]),2)):e.icon==="heart"?(n(),s("svg",{key:2,class:t(["w-5 h-5",e.iconColor||"text-primary-600"]),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},r[2]||(r[2]=[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z"},null,-1)]),2)):e.icon==="shield-check"?(n(),s("svg",{key:3,class:t(["w-5 h-5",e.iconColor||"text-primary-600"]),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},r[3]||(r[3]=[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z"},null,-1)]),2)):(n(),s("svg",{key:4,class:t(["w-5 h-5",e.iconColor||"text-primary-600"]),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},r[4]||(r[4]=[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"},null,-1)]),2))],2)]),o("div",_,[o("p",C,i(e.name),1),o("div",b,[o("p",B,i(e.value),1),e.change?(n(),s("p",{key:0,class:t(["ml-2 flex items-baseline text-sm font-semibold",l(e.change)])},[e.change>0?(n(),s("svg",M,r[5]||(r[5]=[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M7 11l5-5m0 0l5 5m-5-5v12"},null,-1)]))):e.change<0?(n(),s("svg",j,r[6]||(r[6]=[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M17 13l-5 5m0 0l-5-5m5 5V6"},null,-1)]))):c("",!0),o("span",F,i(e.change>0?"Increased":"Decreased")+" by",1),x(" "+i(Math.abs(e.change))+"% ",1)],2)):c("",!0)]),e.subtitle?(n(),s("p",z,i(e.subtitle),1)):c("",!0)])])]),_:2},1024))),128))]))}},N=u(V,[["__scopeId","data-v-6c53d08e"]]);export{N as F}; +import{_ as u,a as s,af as m,aR as h,g as n,i as k,w as p,b as o,n as t,j as c,t as i,k as x,e as g}from"./index-QAlcqU00.js";import{F as f}from"./FPCard-AB6NRXg5.js";const v={class:"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4"},y={class:"flex items-center"},w={class:"flex-shrink-0"},_={class:"ml-4 flex-1"},C={class:"text-sm font-medium text-gray-600"},b={class:"flex items-baseline"},B={class:"text-2xl font-semibold text-gray-900"},M={key:0,class:"self-center flex-shrink-0 h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},j={key:1,class:"self-center flex-shrink-0 h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},F={class:"sr-only"},z={key:0,class:"text-xs text-gray-500 mt-1"},V={__name:"FPStats",props:{stats:{type:Array,required:!0,validator:a=>a.every(l=>l.name&&l.value!==void 0&&l.value!==null)}},setup(a){const l=d=>d>0?"text-green-600":d<0?"text-red-600":"text-gray-500";return(d,r)=>(n(),s("div",v,[(n(!0),s(m,null,h(a.stats,e=>(n(),k(g(f),{key:e.name,padding:"md",class:"bg-white"},{default:p(()=>[o("div",y,[o("div",w,[o("div",{class:t(["w-8 h-8 rounded flex items-center justify-center",e.iconBg||"bg-primary-100"])},[e.icon==="building"?(n(),s("svg",{key:0,class:t(["w-5 h-5",e.iconColor||"text-primary-600"]),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},r[0]||(r[0]=[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4"},null,-1)]),2)):e.icon==="check-circle"?(n(),s("svg",{key:1,class:t(["w-5 h-5",e.iconColor||"text-primary-600"]),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},r[1]||(r[1]=[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"},null,-1)]),2)):e.icon==="heart"?(n(),s("svg",{key:2,class:t(["w-5 h-5",e.iconColor||"text-primary-600"]),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},r[2]||(r[2]=[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z"},null,-1)]),2)):e.icon==="shield-check"?(n(),s("svg",{key:3,class:t(["w-5 h-5",e.iconColor||"text-primary-600"]),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},r[3]||(r[3]=[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z"},null,-1)]),2)):(n(),s("svg",{key:4,class:t(["w-5 h-5",e.iconColor||"text-primary-600"]),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},r[4]||(r[4]=[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"},null,-1)]),2))],2)]),o("div",_,[o("p",C,i(e.name),1),o("div",b,[o("p",B,i(e.value),1),e.change?(n(),s("p",{key:0,class:t(["ml-2 flex items-baseline text-sm font-semibold",l(e.change)])},[e.change>0?(n(),s("svg",M,r[5]||(r[5]=[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M7 11l5-5m0 0l5 5m-5-5v12"},null,-1)]))):e.change<0?(n(),s("svg",j,r[6]||(r[6]=[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M17 13l-5 5m0 0l-5-5m5 5V6"},null,-1)]))):c("",!0),o("span",F,i(e.change>0?"Increased":"Decreased")+" by",1),x(" "+i(Math.abs(e.change))+"% ",1)],2)):c("",!0)]),e.subtitle?(n(),s("p",z,i(e.subtitle),1)):c("",!0)])])]),_:2},1024))),128))]))}},N=u(V,[["__scopeId","data-v-6c53d08e"]]);export{N as F}; diff --git a/frontend/dist/assets/FPTable-CU8C_NYc.js b/frontend/dist/assets/FPTable-CWvngIYd.js similarity index 83% rename from frontend/dist/assets/FPTable-CU8C_NYc.js rename to frontend/dist/assets/FPTable-CWvngIYd.js index a8a1ab3c..d8a9c36d 100644 --- a/frontend/dist/assets/FPTable-CU8C_NYc.js +++ b/frontend/dist/assets/FPTable-CWvngIYd.js @@ -1 +1 @@ -import{_ as R,bg as L,r as m,c as T,a as n,g as i,j as r,b as l,p as y,af as b,aQ as p,n as v,t as c,d as S,w as P,k as z,e as B,F as N}from"./index-BUdRbiwj.js";const D={class:"fp-table-container"},I={key:0,class:"flex items-center justify-between mb-4"},q={key:0},E={key:1,class:"flex items-center space-x-2"},H={key:1,class:"mb-4"},K={class:"overflow-x-auto shadow ring-1 ring-black ring-opacity-5 rounded"},O={class:"min-w-full divide-y divide-gray-300 bg-white"},Q={class:"bg-gray-50"},G=["onClick"],J={class:"flex items-center space-x-1"},U={key:0,class:"flex flex-col"},W={key:0,class:"px-6 py-3 text-right text-xs font-medium text-gray-500 uppercase tracking-wider"},X={class:"bg-white divide-y divide-gray-200"},Y={key:0},Z=["colspan"],_={key:1},ee=["colspan"],te={class:"flex flex-col items-center"},se={class:"text-sm font-medium"},ae=["onClick"],ne={key:1,class:"text-sm text-gray-900"},ie={key:0,class:"px-6 py-4 whitespace-nowrap text-right text-sm font-medium"},le={key:2,class:"flex items-center justify-between mt-4"},oe={class:"text-sm text-gray-700"},re={class:"flex items-center space-x-2"},de={__name:"FPTable",props:{columns:{type:Array,required:!0},data:{type:Array,default:()=>[]},loading:{type:Boolean,default:!1},emptyMessage:{type:String,default:"No data available"},selectable:{type:Boolean,default:!1},pagination:{type:Object,default:null},rowKey:{type:String,default:"id"}},emits:["sort-change","row-click","page-change"],setup(a,{emit:V}){const x=a,w=V,M=L(),h=m(""),u=m("asc"),g=m([]),f=T(()=>!!M["row-actions"]),k=(e,t)=>e[x.rowKey]||t,$=(e,t)=>t.split(".").reduce((s,o)=>s==null?void 0:s[o],e),j=(e,t)=>t.formatter&&typeof t.formatter=="function"?t.formatter(e):e,F=e=>{h.value===e?u.value=u.value==="asc"?"desc":"asc":(h.value=e,u.value="asc"),w("sort-change",{column:e,direction:u.value})},C=(e,t)=>h.value!==e?"text-gray-300":u.value===t?"text-gray-600":"text-gray-300",A=(e,t)=>{if(x.selectable){const s=k(e,t);g.value.includes(s)?g.value=g.value.filter(o=>o!==s):g.value.push(s)}w("row-click",{row:e,index:t})};return(e,t)=>(i(),n("div",D,[e.$slots.header||e.$slots.actions?(i(),n("div",I,[e.$slots.header?(i(),n("div",q,[y(e.$slots,"header",{},void 0,!0)])):r("",!0),e.$slots.actions?(i(),n("div",E,[y(e.$slots,"actions",{},void 0,!0)])):r("",!0)])):r("",!0),e.$slots.filters?(i(),n("div",H,[y(e.$slots,"filters",{},void 0,!0)])):r("",!0),l("div",K,[l("table",O,[l("thead",Q,[l("tr",null,[(i(!0),n(b,null,p(a.columns,s=>(i(),n("th",{key:s.key,class:v(["px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider",s.sortable?"cursor-pointer hover:bg-gray-100":"",s.width?`w-${s.width}`:""]),onClick:o=>s.sortable?F(s.key):null},[l("div",J,[l("span",null,c(s.label),1),s.sortable?(i(),n("div",U,[(i(),n("svg",{class:v(["w-3 h-3",C(s.key,"asc")]),fill:"currentColor",viewBox:"0 0 20 20"},t[2]||(t[2]=[l("path",{d:"M14.707 12.707a1 1 0 01-1.414 0L10 9.414l-3.293 3.293a1 1 0 01-1.414-1.414l4-4a1 1 0 011.414 0l4 4a1 1 0 010 1.414z"},null,-1)]),2)),(i(),n("svg",{class:v(["w-3 h-3 -mt-1",C(s.key,"desc")]),fill:"currentColor",viewBox:"0 0 20 20"},t[3]||(t[3]=[l("path",{d:"M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z"},null,-1)]),2))])):r("",!0)])],10,G))),128)),e.$slots.actions||f.value?(i(),n("th",W," Actions ")):r("",!0)])]),l("tbody",X,[a.loading?(i(),n("tr",Y,[l("td",{colspan:a.columns.length+(f.value?1:0),class:"px-6 py-8 text-center"},t[4]||(t[4]=[l("div",{class:"flex justify-center"},[l("div",{class:"animate-spin rounded-full h-6 w-6 border-b-2 border-primary-600"})],-1)]),8,Z)])):!a.data||a.data.length===0?(i(),n("tr",_,[l("td",{colspan:a.columns.length+(f.value?1:0),class:"px-6 py-8 text-center text-gray-500"},[l("div",te,[t[5]||(t[5]=l("svg",{class:"w-12 h-12 text-gray-300 mb-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"1",d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1)),l("p",se,c(a.emptyMessage||"No data available"),1)])],8,ee)])):r("",!0),(i(!0),n(b,null,p(a.data,(s,o)=>(i(),n("tr",{key:k(s,o),class:v(["hover:bg-gray-50",a.selectable?"cursor-pointer":"",g.value.includes(k(s,o))?"bg-primary-50":""]),onClick:d=>a.selectable?A(s,o):null},[(i(!0),n(b,null,p(a.columns,d=>(i(),n("td",{key:d.key,class:"px-6 py-4 whitespace-nowrap"},[e.$slots[`column-${d.key}`]?y(e.$slots,`column-${d.key}`,{key:0,row:s,value:$(s,d.key),index:o},void 0,!0):(i(),n("div",ne,c(j($(s,d.key),d)),1))]))),128)),f.value?(i(),n("td",ie,[y(e.$slots,"row-actions",{row:s,index:o},void 0,!0)])):r("",!0)],10,ae))),128))])])]),a.pagination&&!a.loading?(i(),n("div",le,[l("div",oe," Showing "+c((a.pagination.currentPage-1)*a.pagination.pageSize+1)+" to "+c(Math.min(a.pagination.currentPage*a.pagination.pageSize,a.pagination.total))+" of "+c(a.pagination.total)+" results ",1),l("div",re,[S(B(N),{variant:"outline",size:"sm",disabled:a.pagination.currentPage<=1,onClick:t[0]||(t[0]=s=>e.$emit("page-change",a.pagination.currentPage-1))},{default:P(()=>t[6]||(t[6]=[z(" Previous ",-1)])),_:1,__:[6]},8,["disabled"]),S(B(N),{variant:"outline",size:"sm",disabled:a.pagination.currentPage>=Math.ceil(a.pagination.total/a.pagination.pageSize),onClick:t[1]||(t[1]=s=>e.$emit("page-change",a.pagination.currentPage+1))},{default:P(()=>t[7]||(t[7]=[z(" Next ",-1)])),_:1,__:[7]},8,["disabled"])])])):r("",!0)]))}},ue=R(de,[["__scopeId","data-v-7a4d805f"]]);export{ue as F}; +import{_ as A,bg as L,r as m,c as T,a as n,j as r,b as l,p as y,af as b,aR as p,t as c,d as S,w as P,e as z,F as B,g as i,n as v,k as N}from"./index-QAlcqU00.js";const D={class:"fp-table-container"},I={key:0,class:"flex items-center justify-between mb-4"},q={key:0},E={key:1,class:"flex items-center space-x-2"},H={key:1,class:"mb-4"},K={class:"overflow-x-auto shadow ring-1 ring-black ring-opacity-5 rounded"},O={class:"min-w-full divide-y divide-gray-300 bg-white"},G={class:"bg-gray-50"},J=["onClick"],Q={class:"flex items-center space-x-1"},U={key:0,class:"flex flex-col"},W={key:0,class:"px-6 py-3 text-right text-xs font-medium text-gray-500 uppercase tracking-wider"},X={class:"bg-white divide-y divide-gray-200"},Y={key:0},Z=["colspan"],_={key:1},ee=["colspan"],te={class:"flex flex-col items-center"},se={class:"text-sm font-medium"},ae=["onClick"],ne={key:1,class:"text-sm text-gray-900"},ie={key:0,class:"px-6 py-4 whitespace-nowrap text-right text-sm font-medium"},le={key:2,class:"flex items-center justify-between mt-4"},oe={class:"text-sm text-gray-700"},re={class:"flex items-center space-x-2"},de={__name:"FPTable",props:{columns:{type:Array,required:!0},data:{type:Array,default:()=>[]},loading:{type:Boolean,default:!1},emptyMessage:{type:String,default:"No data available"},selectable:{type:Boolean,default:!1},pagination:{type:Object,default:null},rowKey:{type:String,default:"id"}},emits:["sort-change","row-click","page-change"],setup(a,{emit:V}){const x=a,w=V,M=L(),h=m(""),u=m("asc"),g=m([]),f=T(()=>!!M["row-actions"]),k=(e,t)=>e[x.rowKey]||t,$=(e,t)=>t.split(".").reduce((s,o)=>s==null?void 0:s[o],e),j=(e,t)=>t.formatter&&typeof t.formatter=="function"?t.formatter(e):e,F=e=>{h.value===e?u.value=u.value==="asc"?"desc":"asc":(h.value=e,u.value="asc"),w("sort-change",{column:e,direction:u.value})},C=(e,t)=>h.value!==e?"text-gray-300":u.value===t?"text-gray-600":"text-gray-300",R=(e,t)=>{if(x.selectable){const s=k(e,t);g.value.includes(s)?g.value=g.value.filter(o=>o!==s):g.value.push(s)}w("row-click",{row:e,index:t})};return(e,t)=>(i(),n("div",D,[e.$slots.header||e.$slots.actions?(i(),n("div",I,[e.$slots.header?(i(),n("div",q,[y(e.$slots,"header",{},void 0,!0)])):r("",!0),e.$slots.actions?(i(),n("div",E,[y(e.$slots,"actions",{},void 0,!0)])):r("",!0)])):r("",!0),e.$slots.filters?(i(),n("div",H,[y(e.$slots,"filters",{},void 0,!0)])):r("",!0),l("div",K,[l("table",O,[l("thead",G,[l("tr",null,[(i(!0),n(b,null,p(a.columns,s=>(i(),n("th",{key:s.key,class:v(["px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider",s.sortable?"cursor-pointer hover:bg-gray-100":"",s.width?`w-${s.width}`:""]),onClick:o=>s.sortable?F(s.key):null},[l("div",Q,[l("span",null,c(s.label),1),s.sortable?(i(),n("div",U,[(i(),n("svg",{class:v(["w-3 h-3",C(s.key,"asc")]),fill:"currentColor",viewBox:"0 0 20 20"},t[2]||(t[2]=[l("path",{d:"M14.707 12.707a1 1 0 01-1.414 0L10 9.414l-3.293 3.293a1 1 0 01-1.414-1.414l4-4a1 1 0 011.414 0l4 4a1 1 0 010 1.414z"},null,-1)]),2)),(i(),n("svg",{class:v(["w-3 h-3 -mt-1",C(s.key,"desc")]),fill:"currentColor",viewBox:"0 0 20 20"},t[3]||(t[3]=[l("path",{d:"M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z"},null,-1)]),2))])):r("",!0)])],10,J))),128)),e.$slots.actions||f.value?(i(),n("th",W," Actions ")):r("",!0)])]),l("tbody",X,[a.loading?(i(),n("tr",Y,[l("td",{colspan:a.columns.length+(f.value?1:0),class:"px-6 py-8 text-center"},t[4]||(t[4]=[l("div",{class:"flex justify-center"},[l("div",{class:"animate-spin rounded-full h-6 w-6 border-b-2 border-primary-600"})],-1)]),8,Z)])):!a.data||a.data.length===0?(i(),n("tr",_,[l("td",{colspan:a.columns.length+(f.value?1:0),class:"px-6 py-8 text-center text-gray-500"},[l("div",te,[t[5]||(t[5]=l("svg",{class:"w-12 h-12 text-gray-300 mb-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"1",d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1)),l("p",se,c(a.emptyMessage||"No data available"),1)])],8,ee)])):r("",!0),(i(!0),n(b,null,p(a.data,(s,o)=>(i(),n("tr",{key:k(s,o),class:v(["hover:bg-gray-50",a.selectable?"cursor-pointer":"",g.value.includes(k(s,o))?"bg-primary-50":""]),onClick:d=>a.selectable?R(s,o):null},[(i(!0),n(b,null,p(a.columns,d=>(i(),n("td",{key:d.key,class:"px-6 py-4 whitespace-nowrap"},[e.$slots[`column-${d.key}`]?y(e.$slots,`column-${d.key}`,{key:0,row:s,value:$(s,d.key),index:o},void 0,!0):(i(),n("div",ne,c(j($(s,d.key),d)),1))]))),128)),f.value?(i(),n("td",ie,[y(e.$slots,"row-actions",{row:s,index:o},void 0,!0)])):r("",!0)],10,ae))),128))])])]),a.pagination&&!a.loading?(i(),n("div",le,[l("div",oe," Showing "+c((a.pagination.currentPage-1)*a.pagination.pageSize+1)+" to "+c(Math.min(a.pagination.currentPage*a.pagination.pageSize,a.pagination.total))+" of "+c(a.pagination.total)+" results ",1),l("div",re,[S(z(B),{variant:"outline",size:"sm",disabled:a.pagination.currentPage<=1,onClick:t[0]||(t[0]=s=>e.$emit("page-change",a.pagination.currentPage-1))},{default:P(()=>t[6]||(t[6]=[N(" Previous ",-1)])),_:1,__:[6]},8,["disabled"]),S(z(B),{variant:"outline",size:"sm",disabled:a.pagination.currentPage>=Math.ceil(a.pagination.total/a.pagination.pageSize),onClick:t[1]||(t[1]=s=>e.$emit("page-change",a.pagination.currentPage+1))},{default:P(()=>t[7]||(t[7]=[N(" Next ",-1)])),_:1,__:[7]},8,["disabled"])])])):r("",!0)]))}},ue=A(de,[["__scopeId","data-v-7a4d805f"]]);export{ue as F}; diff --git a/frontend/dist/assets/FPTabs-R71V25QN.js b/frontend/dist/assets/FPTabs-qq-Tmb7J.js similarity index 66% rename from frontend/dist/assets/FPTabs-R71V25QN.js rename to frontend/dist/assets/FPTabs-qq-Tmb7J.js index ab0a3a4e..1ffd94ee 100644 --- a/frontend/dist/assets/FPTabs-R71V25QN.js +++ b/frontend/dist/assets/FPTabs-qq-Tmb7J.js @@ -1 +1 @@ -import{_ as v,r as _,m as b,a as c,g as s,b as l,af as g,aQ as h,n as k,i as u,j as m,k as p,aW as x,t as y,w as T,e as C,p as F}from"./index-BUdRbiwj.js";import{F as V}from"./FPBadge-BKY5dPnL.js";const B={class:"fp-tabs"},S={class:"border-b border-gray-200"},N={class:"-mb-px flex space-x-8"},P=["onClick"],w={class:"flex items-center"},z={class:"mt-6"},A={__name:"FPTabs",props:{tabs:{type:Array,required:!0,validator:r=>r.every(o=>o.key&&o.label)},defaultTab:{type:String,default:null},modelValue:{type:String,default:null}},emits:["update:modelValue","tab-change"],setup(r,{emit:o}){var i;const n=r,d=o,t=_(n.modelValue||n.defaultTab||((i=n.tabs[0])==null?void 0:i.key)),f=e=>{t.value=e,d("update:modelValue",e),d("tab-change",e)};return b(()=>n.modelValue,e=>{e&&e!==t.value&&(t.value=e)}),(e,D)=>(s(),c("div",B,[l("div",S,[l("nav",N,[(s(!0),c(g,null,h(r.tabs,a=>(s(),c("button",{key:a.key,type:"button",class:k(["py-2 px-1 border-b-2 font-medium text-sm transition-colors duration-200",t.value===a.key?"border-primary-500 text-primary-600":"border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300"]),onClick:$=>f(a.key)},[l("div",w,[a.icon?(s(),u(x(a.icon),{key:0,class:"w-4 h-4 mr-2"})):m("",!0),p(" "+y(a.label)+" ",1),a.badge?(s(),u(C(V),{key:1,variant:"secondary",size:"sm",class:"ml-2"},{default:T(()=>[p(y(a.badge),1)]),_:2},1024)):m("",!0)])],10,P))),128))])]),l("div",z,[F(e.$slots,"default",{activeTab:t.value},void 0,!0)])]))}},E=v(A,[["__scopeId","data-v-a621f3f9"]]);export{E as F}; +import{_ as v,r as _,m as b,a as c,b as l,af as g,aR as h,p as k,g as s,n as x,i as u,j as m,k as p,aX as T,t as y,w as C,e as F}from"./index-QAlcqU00.js";import{F as V}from"./FPBadge-DvOitM1C.js";const B={class:"fp-tabs"},S={class:"border-b border-gray-200"},N={class:"-mb-px flex space-x-8"},P=["onClick"],w={class:"flex items-center"},z={class:"mt-6"},A={__name:"FPTabs",props:{tabs:{type:Array,required:!0,validator:r=>r.every(o=>o.key&&o.label)},defaultTab:{type:String,default:null},modelValue:{type:String,default:null}},emits:["update:modelValue","tab-change"],setup(r,{emit:o}){var i;const n=r,d=o,t=_(n.modelValue||n.defaultTab||((i=n.tabs[0])==null?void 0:i.key)),f=e=>{t.value=e,d("update:modelValue",e),d("tab-change",e)};return b(()=>n.modelValue,e=>{e&&e!==t.value&&(t.value=e)}),(e,D)=>(s(),c("div",B,[l("div",S,[l("nav",N,[(s(!0),c(g,null,h(r.tabs,a=>(s(),c("button",{key:a.key,type:"button",class:x(["py-2 px-1 border-b-2 font-medium text-sm transition-colors duration-200",t.value===a.key?"border-primary-500 text-primary-600":"border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300"]),onClick:$=>f(a.key)},[l("div",w,[a.icon?(s(),u(T(a.icon),{key:0,class:"w-4 h-4 mr-2"})):m("",!0),p(" "+y(a.label)+" ",1),a.badge?(s(),u(F(V),{key:1,variant:"secondary",size:"sm",class:"ml-2"},{default:C(()=>[p(y(a.badge),1)]),_:2},1024)):m("",!0)])],10,P))),128))])]),l("div",z,[k(e.$slots,"default",{activeTab:t.value},void 0,!0)])]))}},E=v(A,[["__scopeId","data-v-a621f3f9"]]);export{E as F}; diff --git a/frontend/dist/assets/ForgotPasswordView-DMDfTgVH.js b/frontend/dist/assets/ForgotPasswordView-D6HmO_LL.js similarity index 84% rename from frontend/dist/assets/ForgotPasswordView-DMDfTgVH.js rename to frontend/dist/assets/ForgotPasswordView-D6HmO_LL.js index 32fc70a1..bddf1561 100644 --- a/frontend/dist/assets/ForgotPasswordView-DMDfTgVH.js +++ b/frontend/dist/assets/ForgotPasswordView-D6HmO_LL.js @@ -1 +1 @@ -import{_ as y,q as b,r as o,i as u,w as t,f as w,g as d,d as s,k as a,h as x,j as c,b as k,e as f,t as C,V as S}from"./index-BUdRbiwj.js";import{r as F,e as B}from"./validators-BsFa-KD7.js";import{V as P}from"./VContainer-Cf71ALK9.js";import{V as N,a as R,b as I,c as T,d as j,e as q,f as A,g as _}from"./VTextField-CU5R_EKn.js";const E={class:"text-center"},z={__name:"ForgotPasswordView",setup(D){const p=b(),r=o({email:""}),n=o(!1),l=o(null),i=o(!1),V=async()=>{try{n.value=!0,l.value=null,i.value=!1,await p.forgotPassword(r.value.email),i.value=!0}catch(m){l.value=m.message||"Failed to send reset instructions"}finally{n.value=!1}};return(m,e)=>{const v=w("router-link");return d(),u(P,{fluid:"",class:"fill-height"},{default:t(()=>[s(N,{justify:"center",align:"center"},{default:t(()=>[s(R,{cols:"12",sm:"8",md:"6",lg:"4"},{default:t(()=>[s(I,{class:"pa-6"},{default:t(()=>[s(T,{class:"text-center text-h4 mb-6"},{default:t(()=>e[1]||(e[1]=[a(" Reset Password ",-1)])),_:1,__:[1]}),s(j,{class:"text-center mb-4"},{default:t(()=>e[2]||(e[2]=[a(" Enter your email to receive reset instructions ",-1)])),_:1,__:[2]}),s(q,{onSubmit:x(V,["prevent"])},{default:t(()=>[s(A,{modelValue:r.value.email,"onUpdate:modelValue":e[0]||(e[0]=g=>r.value.email=g),label:"Email",type:"email","prepend-inner-icon":"mdi-email",rules:[f(F),f(B)],variant:"outlined",class:"mb-3"},null,8,["modelValue","rules"]),l.value?(d(),u(_,{key:0,type:"error",class:"mb-4"},{default:t(()=>[a(C(l.value),1)]),_:1})):c("",!0),i.value?(d(),u(_,{key:1,type:"success",class:"mb-4"},{default:t(()=>e[3]||(e[3]=[a(" Reset instructions sent to your email ",-1)])),_:1,__:[3]})):c("",!0),s(S,{type:"submit",color:"primary",size:"large",block:"",loading:n.value,class:"mb-4"},{default:t(()=>e[4]||(e[4]=[a(" Send Reset Instructions ",-1)])),_:1,__:[4]},8,["loading"]),k("div",E,[s(v,{to:"/login",class:"text-decoration-none"},{default:t(()=>e[5]||(e[5]=[a(" Back to Sign In ",-1)])),_:1,__:[5]})])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})}}},H=y(z,[["__scopeId","data-v-c3e285a3"]]);export{H as default}; +import{_ as y,q as b,r as o,i as u,w as t,f as w,g as d,d as s,k as a,h as x,j as c,b as k,e as f,t as C,V as S}from"./index-QAlcqU00.js";import{r as F,e as B}from"./validators-BsFa-KD7.js";import{V as P}from"./VContainer-DnjqAjRY.js";import{V as N,a as R,b as I,c as T,d as j,e as q,f as A,g as _}from"./VTextField-BNQ_nyd-.js";const E={class:"text-center"},z={__name:"ForgotPasswordView",setup(D){const p=b(),r=o({email:""}),n=o(!1),l=o(null),i=o(!1),V=async()=>{try{n.value=!0,l.value=null,i.value=!1,await p.forgotPassword(r.value.email),i.value=!0}catch(m){l.value=m.message||"Failed to send reset instructions"}finally{n.value=!1}};return(m,e)=>{const v=w("router-link");return d(),u(P,{fluid:"",class:"fill-height"},{default:t(()=>[s(N,{justify:"center",align:"center"},{default:t(()=>[s(R,{cols:"12",sm:"8",md:"6",lg:"4"},{default:t(()=>[s(I,{class:"pa-6"},{default:t(()=>[s(T,{class:"text-center text-h4 mb-6"},{default:t(()=>e[1]||(e[1]=[a(" Reset Password ",-1)])),_:1,__:[1]}),s(j,{class:"text-center mb-4"},{default:t(()=>e[2]||(e[2]=[a(" Enter your email to receive reset instructions ",-1)])),_:1,__:[2]}),s(q,{onSubmit:x(V,["prevent"])},{default:t(()=>[s(A,{modelValue:r.value.email,"onUpdate:modelValue":e[0]||(e[0]=g=>r.value.email=g),label:"Email",type:"email","prepend-inner-icon":"mdi-email",rules:[f(F),f(B)],variant:"outlined",class:"mb-3"},null,8,["modelValue","rules"]),l.value?(d(),u(_,{key:0,type:"error",class:"mb-4"},{default:t(()=>[a(C(l.value),1)]),_:1})):c("",!0),i.value?(d(),u(_,{key:1,type:"success",class:"mb-4"},{default:t(()=>e[3]||(e[3]=[a(" Reset instructions sent to your email ",-1)])),_:1,__:[3]})):c("",!0),s(S,{type:"submit",color:"primary",size:"large",block:"",loading:n.value,class:"mb-4"},{default:t(()=>e[4]||(e[4]=[a(" Send Reset Instructions ",-1)])),_:1,__:[4]},8,["loading"]),k("div",E,[s(v,{to:"/login",class:"text-decoration-none"},{default:t(()=>e[5]||(e[5]=[a(" Back to Sign In ",-1)])),_:1,__:[5]})])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})}}},H=y(z,[["__scopeId","data-v-c3e285a3"]]);export{H as default}; diff --git a/frontend/dist/assets/FormRestoreNotification-DYBlXhOP.js b/frontend/dist/assets/FormRestoreNotification-2Wflg1mH.js similarity index 92% rename from frontend/dist/assets/FormRestoreNotification-DYBlXhOP.js rename to frontend/dist/assets/FormRestoreNotification-2Wflg1mH.js index 69c6a276..313a11bd 100644 --- a/frontend/dist/assets/FormRestoreNotification-DYBlXhOP.js +++ b/frontend/dist/assets/FormRestoreNotification-2Wflg1mH.js @@ -1 +1 @@ -import{r as b,c as v,o as p,m as g,a as x,j as h,g as k,b as e,t as y,k as u}from"./index-BUdRbiwj.js";const w={key:0,class:"mb-4 p-4 bg-blue-50 border border-blue-200 rounded-lg"},D={class:"flex items-start"},C={class:"ml-3 flex-1"},M={class:"mt-1 text-sm text-blue-700"},N={__name:"FormRestoreNotification",props:{savedDataInfo:{type:Object,default:null},visible:{type:Boolean,default:!1}},emits:["restore","dismiss"],setup(d,{emit:f}){const o=d,l=f,n=b(!1),c=v(()=>{var i;if(!((i=o.savedDataInfo)!=null&&i.age))return"";const t=Math.floor(o.savedDataInfo.age/(1e3*60)),s=Math.floor(t/60),r=Math.floor(s/24);return r>0?`${r} day${r>1?"s":""}`:s>0?`${s} hour${s>1?"s":""}`:t>0?`${t} minute${t>1?"s":""}`:"a few moments"}),m=()=>{l("restore"),n.value=!1},a=()=>{l("dismiss"),n.value=!1};return p(()=>{var t;o.visible&&((t=o.savedDataInfo)!=null&&t.hasData)&&(n.value=!0)}),g(()=>o.visible,t=>{var s;t&&((s=o.savedDataInfo)!=null&&s.hasData)?n.value=!0:n.value=!1}),(t,s)=>n.value?(k(),x("div",w,[e("div",D,[s[4]||(s[4]=e("div",{class:"flex-shrink-0"},[e("svg",{class:"w-5 h-5 text-blue-400 mt-0.5",fill:"currentColor",viewBox:"0 0 20 20"},[e("path",{"fill-rule":"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z","clip-rule":"evenodd"})])],-1)),e("div",C,[s[2]||(s[2]=e("h3",{class:"text-sm font-medium text-blue-800"}," Unsaved Changes Found ",-1)),e("div",M,[e("p",null," We found unsaved changes from "+y(c.value)+" ago. Would you like to restore your previous work? ",1),s[0]||(s[0]=e("p",{class:"mt-1 text-xs text-blue-600"},[e("strong",null,"Note:"),u(" Text data will be restored, but images and audio recordings cannot be recovered after page refresh. ")],-1))]),e("div",{class:"mt-3 flex space-x-3"},[e("button",{onClick:m,type:"button",class:"inline-flex items-center px-3 py-1.5 border border-transparent text-xs font-medium rounded text-blue-800 bg-blue-100 hover:bg-blue-200 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500"},s[1]||(s[1]=[e("svg",{class:"w-3 h-3 mr-1",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),u(" Restore Changes ",-1)])),e("button",{onClick:a,type:"button",class:"inline-flex items-center px-3 py-1.5 border border-transparent text-xs font-medium rounded text-blue-800 bg-transparent hover:bg-blue-100 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500"}," Start Fresh ")])]),e("div",{class:"ml-auto pl-3"},[e("div",{class:"-mx-1.5 -my-1.5"},[e("button",{onClick:a,type:"button",class:"inline-flex bg-blue-50 rounded-md p-1.5 text-blue-500 hover:bg-blue-100 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-blue-50 focus:ring-blue-600"},s[3]||(s[3]=[e("span",{class:"sr-only"},"Dismiss",-1),e("svg",{class:"w-3 h-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})],-1)]))])])])])):h("",!0)}};export{N as _}; +import{r as b,c as v,o as p,m as g,a as x,j as h,b as e,t as k,k as u,g as y}from"./index-QAlcqU00.js";const w={key:0,class:"mb-4 p-4 bg-blue-50 border border-blue-200 rounded-lg"},D={class:"flex items-start"},C={class:"ml-3 flex-1"},M={class:"mt-1 text-sm text-blue-700"},N={__name:"FormRestoreNotification",props:{savedDataInfo:{type:Object,default:null},visible:{type:Boolean,default:!1}},emits:["restore","dismiss"],setup(d,{emit:f}){const o=d,l=f,n=b(!1),c=v(()=>{var i;if(!((i=o.savedDataInfo)!=null&&i.age))return"";const t=Math.floor(o.savedDataInfo.age/(1e3*60)),s=Math.floor(t/60),r=Math.floor(s/24);return r>0?`${r} day${r>1?"s":""}`:s>0?`${s} hour${s>1?"s":""}`:t>0?`${t} minute${t>1?"s":""}`:"a few moments"}),m=()=>{l("restore"),n.value=!1},a=()=>{l("dismiss"),n.value=!1};return p(()=>{var t;o.visible&&((t=o.savedDataInfo)!=null&&t.hasData)&&(n.value=!0)}),g(()=>o.visible,t=>{var s;t&&((s=o.savedDataInfo)!=null&&s.hasData)?n.value=!0:n.value=!1}),(t,s)=>n.value?(y(),x("div",w,[e("div",D,[s[4]||(s[4]=e("div",{class:"flex-shrink-0"},[e("svg",{class:"w-5 h-5 text-blue-400 mt-0.5",fill:"currentColor",viewBox:"0 0 20 20"},[e("path",{"fill-rule":"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z","clip-rule":"evenodd"})])],-1)),e("div",C,[s[2]||(s[2]=e("h3",{class:"text-sm font-medium text-blue-800"}," Unsaved Changes Found ",-1)),e("div",M,[e("p",null," We found unsaved changes from "+k(c.value)+" ago. Would you like to restore your previous work? ",1),s[0]||(s[0]=e("p",{class:"mt-1 text-xs text-blue-600"},[e("strong",null,"Note:"),u(" Text data will be restored, but images and audio recordings cannot be recovered after page refresh. ")],-1))]),e("div",{class:"mt-3 flex space-x-3"},[e("button",{onClick:m,type:"button",class:"inline-flex items-center px-3 py-1.5 border border-transparent text-xs font-medium rounded text-blue-800 bg-blue-100 hover:bg-blue-200 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500"},s[1]||(s[1]=[e("svg",{class:"w-3 h-3 mr-1",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),u(" Restore Changes ",-1)])),e("button",{onClick:a,type:"button",class:"inline-flex items-center px-3 py-1.5 border border-transparent text-xs font-medium rounded text-blue-800 bg-transparent hover:bg-blue-100 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500"}," Start Fresh ")])]),e("div",{class:"ml-auto pl-3"},[e("div",{class:"-mx-1.5 -my-1.5"},[e("button",{onClick:a,type:"button",class:"inline-flex bg-blue-50 rounded-md p-1.5 text-blue-500 hover:bg-blue-100 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-blue-50 focus:ring-blue-600"},s[3]||(s[3]=[e("span",{class:"sr-only"},"Dismiss",-1),e("svg",{class:"w-3 h-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})],-1)]))])])])])):h("",!0)}};export{N as _}; diff --git a/frontend/dist/assets/FrappeUIDemo-Cdw03urn.js b/frontend/dist/assets/FrappeUIDemo-221PS2xS.js similarity index 86% rename from frontend/dist/assets/FrappeUIDemo-Cdw03urn.js rename to frontend/dist/assets/FrappeUIDemo-221PS2xS.js index 61b3f5ea..e2946657 100644 --- a/frontend/dist/assets/FrappeUIDemo-Cdw03urn.js +++ b/frontend/dist/assets/FrappeUIDemo-221PS2xS.js @@ -1 +1 @@ -import{_ as U,bf as M,bt as h,bu as A,r as T,c as L,a as p,d as l,b as t,w as a,e as s,F as r,g,k as o,t as i,af as V,aQ as F,Q as N,n as B}from"./index-BUdRbiwj.js";import{F as f}from"./FPInput-CzR_dWoe.js";import{F as y}from"./FPCard-qHzcEQAE.js";const W={class:"atlas-container py-8"},j={class:"space-y-6"},$={class:"bg-gray-50 p-4 rounded-lg"},Q={class:"text-sm text-gray-600"},R={class:"font-mono"},q={class:"font-mono"},G={class:"font-mono"},H={class:"flex flex-wrap gap-3"},J={class:"flex items-center gap-3"},K={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},O={class:"grid grid-cols-1 md:grid-cols-3 gap-4"},X={class:"flex justify-end"},Y={class:"grid grid-cols-2 md:grid-cols-4 gap-4"},Z={class:"text-sm font-medium text-gray-700"},ee={class:"space-y-1"},te={class:"bg-gray-50 p-4 rounded-lg"},se={class:"text-sm text-gray-600"},le={class:"font-mono"},ae={class:"font-mono"},oe={class:"font-mono"},ne={class:"mt-8 flex justify-center space-x-4"},re={__name:"FrappeUIDemo",setup(ie){const{currentTheme:b,theme:C,isDark:x,toggleTheme:D,getColor:m}=M();h();const{windowWidth:S,isMobile:c,isTablet:I,breakpoint:k}=A(),d=T({email:"",password:"",name:"",disabled:"Cannot edit this"}),v=T(!1),P=L(()=>[{name:"Primary",shades:[{name:"500",value:m("primary.500"),class:"bg-primary-500",textClass:"text-white"},{name:"600",value:m("primary.600"),class:"bg-primary-600",textClass:"text-white"},{name:"700",value:m("primary.700"),class:"bg-primary-700",textClass:"text-white"}]},{name:"Success",shades:[{name:"500",value:m("success.500"),class:"bg-success-500",textClass:"text-white"}]},{name:"Warning",shades:[{name:"500",value:m("warning.500"),class:"bg-warning-500",textClass:"text-gray-900"}]},{name:"Error",shades:[{name:"500",value:m("error.500"),class:"bg-error-500",textClass:"text-white"}]}]),z=_=>{console.log(`${_} card clicked!`)},E=()=>{d.value={email:"",password:"",name:"",disabled:"Cannot edit this"},v.value=!1},w=()=>{console.log("Current Theme State:",{theme:b.value,colors:C.value.colors,isDark:x.value,primaryColor:m("primary.700"),breakpoint:k.value})};return w(),(_,e)=>(g(),p("div",W,[l(s(y),{title:"Theme Demo",subtitle:"Test Frappe UI integration with Atlas CMMS theming"},{actions:a(()=>[l(s(r),{variant:"ghost",size:"sm",onClick:s(D)},{default:a(()=>[o(i(s(x)?"☀️":"🌙")+" "+i(s(x)?"Light":"Dark"),1)]),_:1},8,["onClick"])]),default:a(()=>[t("div",j,[t("div",$,[e[11]||(e[11]=t("h4",{class:"font-medium text-gray-900 mb-2"},"Current Theme",-1)),t("p",Q,[e[6]||(e[6]=o(" Theme: ",-1)),t("span",R,i(s(b)),1),e[7]||(e[7]=t("br",null,null,-1)),e[8]||(e[8]=o(" Primary Color: ",-1)),t("span",q,i(s(m)("primary.700")),1),e[9]||(e[9]=t("br",null,null,-1)),e[10]||(e[10]=o(" Background: ",-1)),t("span",G,i(s(C).colors.background),1)])]),t("div",null,[e[16]||(e[16]=t("h4",{class:"font-medium text-gray-900 mb-3"},"Button Variants",-1)),t("div",H,[l(s(r),{variant:"primary"},{default:a(()=>e[12]||(e[12]=[o("Primary Button",-1)])),_:1,__:[12]}),l(s(r),{variant:"secondary"},{default:a(()=>e[13]||(e[13]=[o("Secondary Button",-1)])),_:1,__:[13]}),l(s(r),{variant:"ghost"},{default:a(()=>e[14]||(e[14]=[o("Ghost Button",-1)])),_:1,__:[14]}),l(s(r),{variant:"danger"},{default:a(()=>e[15]||(e[15]=[o("Danger Button",-1)])),_:1,__:[15]})])]),t("div",null,[e[20]||(e[20]=t("h4",{class:"font-medium text-gray-900 mb-3"},"Button Sizes",-1)),t("div",J,[l(s(r),{size:"sm"},{default:a(()=>e[17]||(e[17]=[o("Small",-1)])),_:1,__:[17]}),l(s(r),{size:"md"},{default:a(()=>e[18]||(e[18]=[o("Medium",-1)])),_:1,__:[18]}),l(s(r),{size:"lg"},{default:a(()=>e[19]||(e[19]=[o("Large",-1)])),_:1,__:[19]})])]),t("div",null,[e[21]||(e[21]=t("h4",{class:"font-medium text-gray-900 mb-3"},"Input Components",-1)),t("div",K,[l(s(f),{modelValue:d.value.email,"onUpdate:modelValue":e[0]||(e[0]=n=>d.value.email=n),label:"Email Address",type:"email",placeholder:"Enter your email","prepend-icon":"mdi-email",required:""},null,8,["modelValue"]),l(s(f),{modelValue:d.value.password,"onUpdate:modelValue":e[1]||(e[1]=n=>d.value.password=n),label:"Password",type:"password",placeholder:"Enter password","prepend-icon":"mdi-lock","append-icon":v.value?"mdi-eye":"mdi-eye-off","append-icon-clickable":"",onAppendIconClick:e[2]||(e[2]=n=>v.value=!v.value)},null,8,["modelValue","append-icon"]),l(s(f),{modelValue:d.value.name,"onUpdate:modelValue":e[3]||(e[3]=n=>d.value.name=n),label:"Full Name",placeholder:"Enter your name","help-text":"This will be displayed on your profile"},null,8,["modelValue"]),l(s(f),{modelValue:d.value.disabled,"onUpdate:modelValue":e[4]||(e[4]=n=>d.value.disabled=n),label:"Disabled Input",placeholder:"This is disabled",disabled:""},null,8,["modelValue"])])]),t("div",null,[e[27]||(e[27]=t("h4",{class:"font-medium text-gray-900 mb-3"},"Card Variants",-1)),t("div",O,[l(s(y),{title:"Default Card",subtitle:"Standard card with border",padding:"sm"},{default:a(()=>e[22]||(e[22]=[t("p",{class:"text-sm text-gray-600"},"This is a default card with standard styling.",-1)])),_:1,__:[22]}),l(s(y),{variant:"elevated",title:"Elevated Card",hover:"",clickable:"",onClick:e[5]||(e[5]=n=>z("elevated"))},{default:a(()=>e[23]||(e[23]=[t("p",{class:"text-sm text-gray-600"},"This card has elevation and hover effects.",-1)])),_:1,__:[23]}),l(s(y),{variant:"outlined",padding:"lg"},{header:a(()=>e[24]||(e[24]=[t("div",{class:"text-center"},[t("h3",{class:"text-lg font-semibold text-primary-700"},"Custom Header")],-1)])),footer:a(()=>[t("div",X,[l(s(r),{size:"sm"},{default:a(()=>e[25]||(e[25]=[o("Action",-1)])),_:1,__:[25]})])]),default:a(()=>[e[26]||(e[26]=t("div",{class:"text-center"},[t("p",{class:"text-gray-600"},"Card with custom header slot")],-1))]),_:1,__:[26]})])]),t("div",null,[e[28]||(e[28]=t("h4",{class:"font-medium text-gray-900 mb-3"},"Color Palette",-1)),t("div",Y,[(g(!0),p(V,null,F(P.value,n=>(g(),p("div",{key:n.name,class:"space-y-2"},[t("h5",Z,i(n.name),1),t("div",ee,[(g(!0),p(V,null,F(n.shades,u=>(g(),p("div",{key:u.name,class:B([u.class,"h-8 rounded flex items-center justify-center text-xs font-mono"]),style:N({backgroundColor:u.value})},[t("span",{class:B(u.textClass)},i(u.name),3)],6))),128))])]))),128))])]),t("div",null,[e[34]||(e[34]=t("h4",{class:"font-medium text-gray-900 mb-3"},"Responsive Information",-1)),t("div",te,[t("p",se,[e[29]||(e[29]=o(" Window Width: ",-1)),t("span",le,i(s(S))+"px",1),e[30]||(e[30]=t("br",null,null,-1)),e[31]||(e[31]=o(" Breakpoint: ",-1)),t("span",ae,i(s(k)),1),e[32]||(e[32]=t("br",null,null,-1)),e[33]||(e[33]=o(" Device Type: ",-1)),t("span",oe,i(s(c)?"Mobile":s(I)?"Tablet":"Desktop"),1)])])])])]),_:1}),t("div",ne,[l(s(r),{onClick:E},{default:a(()=>e[35]||(e[35]=[o("Reset Form",-1)])),_:1,__:[35]}),l(s(r),{variant:"secondary",onClick:w},{default:a(()=>e[36]||(e[36]=[o("Log Theme State",-1)])),_:1,__:[36]})])]))}},pe=U(re,[["__scopeId","data-v-7d4a9525"]]);export{pe as default}; +import{_ as U,bf as M,bu as h,bv as A,r as T,c as L,a as p,d as l,b as t,w as a,e as s,F as r,g,k as o,t as i,af as V,aR as F,Q as N,n as B}from"./index-QAlcqU00.js";import{F as f}from"./FPInput-D5RURom0.js";import{F as y}from"./FPCard-AB6NRXg5.js";const W={class:"atlas-container py-8"},j={class:"space-y-6"},R={class:"bg-gray-50 p-4 rounded-lg"},$={class:"text-sm text-gray-600"},q={class:"font-mono"},G={class:"font-mono"},H={class:"font-mono"},Q={class:"flex flex-wrap gap-3"},J={class:"flex items-center gap-3"},K={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},O={class:"grid grid-cols-1 md:grid-cols-3 gap-4"},X={class:"flex justify-end"},Y={class:"grid grid-cols-2 md:grid-cols-4 gap-4"},Z={class:"text-sm font-medium text-gray-700"},ee={class:"space-y-1"},te={class:"bg-gray-50 p-4 rounded-lg"},se={class:"text-sm text-gray-600"},le={class:"font-mono"},ae={class:"font-mono"},oe={class:"font-mono"},ne={class:"mt-8 flex justify-center space-x-4"},re={__name:"FrappeUIDemo",setup(ie){const{currentTheme:b,theme:C,isDark:x,toggleTheme:D,getColor:m}=M();h();const{windowWidth:S,isMobile:c,isTablet:I,breakpoint:k}=A(),d=T({email:"",password:"",name:"",disabled:"Cannot edit this"}),v=T(!1),P=L(()=>[{name:"Primary",shades:[{name:"500",value:m("primary.500"),class:"bg-primary-500",textClass:"text-white"},{name:"600",value:m("primary.600"),class:"bg-primary-600",textClass:"text-white"},{name:"700",value:m("primary.700"),class:"bg-primary-700",textClass:"text-white"}]},{name:"Success",shades:[{name:"500",value:m("success.500"),class:"bg-success-500",textClass:"text-white"}]},{name:"Warning",shades:[{name:"500",value:m("warning.500"),class:"bg-warning-500",textClass:"text-gray-900"}]},{name:"Error",shades:[{name:"500",value:m("error.500"),class:"bg-error-500",textClass:"text-white"}]}]),z=_=>{console.log(`${_} card clicked!`)},E=()=>{d.value={email:"",password:"",name:"",disabled:"Cannot edit this"},v.value=!1},w=()=>{console.log("Current Theme State:",{theme:b.value,colors:C.value.colors,isDark:x.value,primaryColor:m("primary.700"),breakpoint:k.value})};return w(),(_,e)=>(g(),p("div",W,[l(s(y),{title:"Theme Demo",subtitle:"Test Frappe UI integration with Atlas CMMS theming"},{actions:a(()=>[l(s(r),{variant:"ghost",size:"sm",onClick:s(D)},{default:a(()=>[o(i(s(x)?"☀️":"🌙")+" "+i(s(x)?"Light":"Dark"),1)]),_:1},8,["onClick"])]),default:a(()=>[t("div",j,[t("div",R,[e[11]||(e[11]=t("h4",{class:"font-medium text-gray-900 mb-2"},"Current Theme",-1)),t("p",$,[e[6]||(e[6]=o(" Theme: ",-1)),t("span",q,i(s(b)),1),e[7]||(e[7]=t("br",null,null,-1)),e[8]||(e[8]=o(" Primary Color: ",-1)),t("span",G,i(s(m)("primary.700")),1),e[9]||(e[9]=t("br",null,null,-1)),e[10]||(e[10]=o(" Background: ",-1)),t("span",H,i(s(C).colors.background),1)])]),t("div",null,[e[16]||(e[16]=t("h4",{class:"font-medium text-gray-900 mb-3"},"Button Variants",-1)),t("div",Q,[l(s(r),{variant:"primary"},{default:a(()=>e[12]||(e[12]=[o("Primary Button",-1)])),_:1,__:[12]}),l(s(r),{variant:"secondary"},{default:a(()=>e[13]||(e[13]=[o("Secondary Button",-1)])),_:1,__:[13]}),l(s(r),{variant:"ghost"},{default:a(()=>e[14]||(e[14]=[o("Ghost Button",-1)])),_:1,__:[14]}),l(s(r),{variant:"danger"},{default:a(()=>e[15]||(e[15]=[o("Danger Button",-1)])),_:1,__:[15]})])]),t("div",null,[e[20]||(e[20]=t("h4",{class:"font-medium text-gray-900 mb-3"},"Button Sizes",-1)),t("div",J,[l(s(r),{size:"sm"},{default:a(()=>e[17]||(e[17]=[o("Small",-1)])),_:1,__:[17]}),l(s(r),{size:"md"},{default:a(()=>e[18]||(e[18]=[o("Medium",-1)])),_:1,__:[18]}),l(s(r),{size:"lg"},{default:a(()=>e[19]||(e[19]=[o("Large",-1)])),_:1,__:[19]})])]),t("div",null,[e[21]||(e[21]=t("h4",{class:"font-medium text-gray-900 mb-3"},"Input Components",-1)),t("div",K,[l(s(f),{modelValue:d.value.email,"onUpdate:modelValue":e[0]||(e[0]=n=>d.value.email=n),label:"Email Address",type:"email",placeholder:"Enter your email","prepend-icon":"mdi-email",required:""},null,8,["modelValue"]),l(s(f),{modelValue:d.value.password,"onUpdate:modelValue":e[1]||(e[1]=n=>d.value.password=n),label:"Password",type:"password",placeholder:"Enter password","prepend-icon":"mdi-lock","append-icon":v.value?"mdi-eye":"mdi-eye-off","append-icon-clickable":"",onAppendIconClick:e[2]||(e[2]=n=>v.value=!v.value)},null,8,["modelValue","append-icon"]),l(s(f),{modelValue:d.value.name,"onUpdate:modelValue":e[3]||(e[3]=n=>d.value.name=n),label:"Full Name",placeholder:"Enter your name","help-text":"This will be displayed on your profile"},null,8,["modelValue"]),l(s(f),{modelValue:d.value.disabled,"onUpdate:modelValue":e[4]||(e[4]=n=>d.value.disabled=n),label:"Disabled Input",placeholder:"This is disabled",disabled:""},null,8,["modelValue"])])]),t("div",null,[e[27]||(e[27]=t("h4",{class:"font-medium text-gray-900 mb-3"},"Card Variants",-1)),t("div",O,[l(s(y),{title:"Default Card",subtitle:"Standard card with border",padding:"sm"},{default:a(()=>e[22]||(e[22]=[t("p",{class:"text-sm text-gray-600"},"This is a default card with standard styling.",-1)])),_:1,__:[22]}),l(s(y),{variant:"elevated",title:"Elevated Card",hover:"",clickable:"",onClick:e[5]||(e[5]=n=>z("elevated"))},{default:a(()=>e[23]||(e[23]=[t("p",{class:"text-sm text-gray-600"},"This card has elevation and hover effects.",-1)])),_:1,__:[23]}),l(s(y),{variant:"outlined",padding:"lg"},{header:a(()=>e[24]||(e[24]=[t("div",{class:"text-center"},[t("h3",{class:"text-lg font-semibold text-primary-700"},"Custom Header")],-1)])),footer:a(()=>[t("div",X,[l(s(r),{size:"sm"},{default:a(()=>e[25]||(e[25]=[o("Action",-1)])),_:1,__:[25]})])]),default:a(()=>[e[26]||(e[26]=t("div",{class:"text-center"},[t("p",{class:"text-gray-600"},"Card with custom header slot")],-1))]),_:1,__:[26]})])]),t("div",null,[e[28]||(e[28]=t("h4",{class:"font-medium text-gray-900 mb-3"},"Color Palette",-1)),t("div",Y,[(g(!0),p(V,null,F(P.value,n=>(g(),p("div",{key:n.name,class:"space-y-2"},[t("h5",Z,i(n.name),1),t("div",ee,[(g(!0),p(V,null,F(n.shades,u=>(g(),p("div",{key:u.name,class:B([u.class,"h-8 rounded flex items-center justify-center text-xs font-mono"]),style:N({backgroundColor:u.value})},[t("span",{class:B(u.textClass)},i(u.name),3)],6))),128))])]))),128))])]),t("div",null,[e[34]||(e[34]=t("h4",{class:"font-medium text-gray-900 mb-3"},"Responsive Information",-1)),t("div",te,[t("p",se,[e[29]||(e[29]=o(" Window Width: ",-1)),t("span",le,i(s(S))+"px",1),e[30]||(e[30]=t("br",null,null,-1)),e[31]||(e[31]=o(" Breakpoint: ",-1)),t("span",ae,i(s(k)),1),e[32]||(e[32]=t("br",null,null,-1)),e[33]||(e[33]=o(" Device Type: ",-1)),t("span",oe,i(s(c)?"Mobile":s(I)?"Tablet":"Desktop"),1)])])])])]),_:1}),t("div",ne,[l(s(r),{onClick:E},{default:a(()=>e[35]||(e[35]=[o("Reset Form",-1)])),_:1,__:[35]}),l(s(r),{variant:"secondary",onClick:w},{default:a(()=>e[36]||(e[36]=[o("Log Theme State",-1)])),_:1,__:[36]})])]))}},pe=U(re,[["__scopeId","data-v-7d4a9525"]]);export{pe as default}; diff --git a/frontend/dist/assets/InventoryTransfersView-C5SAFO28.js b/frontend/dist/assets/InventoryTransfersView-8DopotVP.js similarity index 92% rename from frontend/dist/assets/InventoryTransfersView-C5SAFO28.js rename to frontend/dist/assets/InventoryTransfersView-8DopotVP.js index d0a31879..0bf7acce 100644 --- a/frontend/dist/assets/InventoryTransfersView-C5SAFO28.js +++ b/frontend/dist/assets/InventoryTransfersView-8DopotVP.js @@ -1 +1 @@ -import{r as p,c as C,o as Et,m as St,i as K,w as i,s as Nt,v as Pt,g as h,b as r,d as u,e as o,j as q,F as k,h as ae,t as x,k as g,a as E,ae as ue,n as _e,aU as de,af as De,aQ as Fe,l as At}from"./index-BUdRbiwj.js";import{u as _t}from"./parts-B3aeW8xP.js";import{T as v,c as O}from"./inventory-C_cwbKdQ.js";import{u as Dt}from"./useFormAutoSave-Jaawgo91.js";import{l as Ft}from"./lodash-RqMXHFU9.js";import{F as Mt,a as qt}from"./FPPageHeader-CTG2L28r.js";import{F as H}from"./FPInput-CzR_dWoe.js";import{F as W}from"./FPSelect-C7p47Ma2.js";import{F as Rt}from"./FPStats-BGfZcDZc.js";import{F as Ot}from"./FPTable-CU8C_NYc.js";import{F as ce}from"./FPModal-DWGF1LV8.js";import{F as Bt}from"./FPBadge-BKY5dPnL.js";import{F as Me}from"./FPTabs-R71V25QN.js";import{_ as Ut}from"./FormRestoreNotification-DYBlXhOP.js";import"./_commonjsHelpers-NT8qMgGI.js";import"./FPCard-qHzcEQAE.js";function zt(){const P=_t(),w=p(!1),b=p(null),f=p(null),y=C(()=>P.inventoryTransfers),D=C(()=>P.transferStats),V=C(()=>y.value.filter(s=>s.status===v.PENDING)),$=C(()=>y.value.filter(s=>[v.PENDING,v.APPROVED,v.SHIPPED].includes(s.status))),Y=C(()=>y.value.filter(s=>s.status===v.COMPLETED)),I=C(()=>y.value.filter(s=>s.status===v.CANCELLED)),U=C(()=>{const s=y.value,l=s.reduce((n,L)=>n+(L.items||[]).reduce((A,_)=>A+(_.requestedQuantity||0)*(_.unitCost||0),0),0),d=N(s);return{totalTransfers:s.length,totalValue:l,averageProcessingTime:d,successRate:ne(s)}}),z=async(s={})=>{w.value=!0,b.value=null;try{await P.fetchInventoryTransfers(s)}catch(l){throw b.value=l.message,l}finally{w.value=!1}},G=async s=>{w.value=!0,b.value=null;try{const l=await P.createInventoryTransfer(s);return f.value=l,l}catch(l){throw b.value=l.message,l}finally{w.value=!1}},j=async(s,l)=>{var d;w.value=!0,b.value=null;try{await P.approveTransfer(s,l),((d=f.value)==null?void 0:d.id)===s&&(f.value.status=v.APPROVED,f.value.approvedBy=l.approvedBy,f.value.approvedAt=new Date().toISOString())}catch(n){throw b.value=n.message,n}finally{w.value=!1}},re=async(s,l)=>{var d;w.value=!0,b.value=null;try{P.shipTransfer&&await P.shipTransfer(s,l);const n=y.value.find(L=>L.id===s);n&&(n.status=v.SHIPPED,n.shippedBy=l.shippedBy,n.shippedAt=new Date().toISOString(),n.trackingNumber=l.trackingNumber),((d=f.value)==null?void 0:d.id)===s&&Object.assign(f.value,{status:v.SHIPPED,shippedBy:l.shippedBy,shippedAt:new Date().toISOString(),trackingNumber:l.trackingNumber})}catch(n){throw b.value=n.message,n}finally{w.value=!1}},se=async(s,l)=>{var d;w.value=!0,b.value=null;try{P.receiveTransfer&&await P.receiveTransfer(s,l);const n=y.value.find(L=>L.id===s);n&&(n.status=v.COMPLETED,n.receivedBy=l.receivedBy,n.receivedAt=new Date().toISOString(),l.items&&l.items.forEach(L=>{var _;const A=(_=n.items)==null?void 0:_.find(Q=>Q.partId===L.partId);A&&(A.receivedQuantity=L.receivedQuantity)})),((d=f.value)==null?void 0:d.id)===s&&(Object.assign(f.value,{status:v.COMPLETED,receivedBy:l.receivedBy,receivedAt:new Date().toISOString()}),l.items&&f.value.items&&l.items.forEach(L=>{const A=f.value.items.find(_=>_.partId===L.partId);A&&(A.receivedQuantity=L.receivedQuantity)}))}catch(n){throw b.value=n.message,n}finally{w.value=!1}},J=async(s,l)=>{var d;w.value=!0,b.value=null;try{P.cancelTransfer&&await P.cancelTransfer(s,l);const n=y.value.find(L=>L.id===s);n&&(n.status=v.CANCELLED,n.cancelledAt=new Date().toISOString(),n.cancellationReason=l),((d=f.value)==null?void 0:d.id)===s&&Object.assign(f.value,{status:v.CANCELLED,cancelledAt:new Date().toISOString(),cancellationReason:l})}catch(n){throw b.value=n.message,n}finally{w.value=!1}},le=s=>{f.value=s},oe=()=>{f.value=null},c=s=>y.value.find(l=>l.id===s),T=s=>{const l=[];return(!s.type||!Object.values(O).includes(s.type))&&l.push("Valid transfer type is required"),s.fromLocation||l.push("From location is required"),s.toLocation||l.push("To location is required"),s.fromLocation===s.toLocation&&l.push("From and to locations must be different"),!s.items||!Array.isArray(s.items)||s.items.length===0?l.push("At least one item is required"):s.items.forEach((d,n)=>{d.partId||l.push(`Item ${n+1}: Part ID is required`),(!d.requestedQuantity||d.requestedQuantity<=0)&&l.push(`Item ${n+1}: Valid requested quantity is required`)}),{isValid:l.length===0,errors:l}},F=s=>{const l=[];return s.approvedBy||l.push("Approver is required"),{isValid:l.length===0,errors:l}},X=s=>{const l=[];return s.shippedBy||l.push("Shipper is required"),{isValid:l.length===0,errors:l}},R=s=>{const l=[];return s.receivedBy||l.push("Receiver is required"),!s.items||!Array.isArray(s.items)||s.items.length===0?l.push("At least one received item is required"):s.items.forEach((d,n)=>{d.partId||l.push(`Item ${n+1}: Part ID is required`),(d.receivedQuantity===void 0||d.receivedQuantity<0)&&l.push(`Item ${n+1}: Valid received quantity is required`)}),{isValid:l.length===0,errors:l}},B=s=>s.items?s.items.reduce((l,d)=>l+(d.requestedQuantity||0)*(d.unitCost||0),0):0,N=s=>{const l=s.filter(n=>n.status===v.COMPLETED&&n.createdAt&&n.receivedAt);if(l.length===0)return 0;const d=l.reduce((n,L)=>{const A=new Date(L.createdAt),_=new Date(L.receivedAt);return n+(_-A)},0);return Math.round(d/l.length/(1e3*60*60*24))},ne=s=>{if(s.length===0)return 100;const l=s.filter(n=>[v.COMPLETED,v.CANCELLED].includes(n.status));if(l.length===0)return 100;const d=l.filter(n=>n.status===v.COMPLETED);return Math.round(d.length/l.length*100)};return{isLoading:w,error:b,selectedTransfer:f,inventoryTransfers:y,transferStats:D,pendingTransfers:V,activeTransfers:$,completedTransfers:Y,cancelledTransfers:I,transferMetrics:U,loadInventoryTransfers:z,createInventoryTransfer:G,approveTransfer:j,shipTransfer:re,receiveTransfer:se,cancelTransfer:J,selectTransfer:le,clearSelectedTransfer:oe,getTransferById:c,validateTransferData:T,validateApproval:F,validateShipment:X,validateReceipt:R,calculateTransferValue:B,getTransferStatusColor:s=>({[v.PENDING]:"orange",[v.APPROVED]:"blue",[v.SHIPPED]:"purple",[v.COMPLETED]:"green",[v.CANCELLED]:"red"})[s]||"gray",canApprove:s=>s.status===v.PENDING,canShip:s=>s.status===v.APPROVED,canReceive:s=>s.status===v.SHIPPED,canCancel:s=>[v.PENDING,v.APPROVED].includes(s.status),bulkApproveTransfers:async(s,l)=>{w.value=!0,b.value=null;try{const d=s.map(n=>j(n,l));await Promise.all(d)}catch(d){throw b.value=d.message,d}finally{w.value=!1}},bulkCancelTransfers:async(s,l)=>{w.value=!0,b.value=null;try{const d=s.map(n=>J(n,l));await Promise.all(d)}catch(d){throw b.value=d.message,d}finally{w.value=!1}},refreshTransfers:async()=>{await z()},clearError:()=>{b.value=null},exportTransferData:()=>({transfers:y.value,metrics:U.value,statistics:D.value,exportedAt:new Date().toISOString()})}}const jt={class:"p-6"},Qt={class:"mb-6 grid grid-cols-1 md:grid-cols-4 gap-4"},Ht={class:"bg-white shadow rounded-lg overflow-hidden"},$t={class:"flex items-center space-x-2"},Gt={class:"font-medium text-gray-900"},Kt={class:"text-sm text-gray-500"},Wt={class:"text-sm"},Yt={class:"font-medium text-gray-900"},Jt={class:"text-gray-500"},Xt={class:"text-sm font-medium text-gray-900"},Zt={class:"text-sm font-medium text-gray-900"},ea={class:"text-sm text-gray-900"},ta={class:"text-sm text-gray-900"},aa={class:"flex items-center space-x-2"},ra={class:"border-b border-gray-200 mb-6"},sa={key:0,class:"space-y-6"},la={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},oa={key:0,class:"mt-1 text-sm text-red-600"},na={key:1,class:"space-y-6"},ia={class:"flex justify-between items-center"},ua={key:0,class:"text-center py-8 text-gray-500"},da={key:1,class:"space-y-4"},ca={class:"flex justify-between items-start mb-4"},va={class:"font-medium text-gray-900"},fa={class:"grid grid-cols-1 md:grid-cols-3 gap-4"},ma={key:2,class:"text-sm text-red-600"},pa={class:"flex items-center justify-between"},ya={class:"flex items-center space-x-4"},ga={key:0,class:"flex items-center text-sm text-gray-500"},Ta={key:0,class:"w-4 h-4 mr-2 text-amber-500 animate-pulse",fill:"currentColor",viewBox:"0 0 20 20"},ha={key:1,class:"w-4 h-4 mr-2 text-green-500",fill:"currentColor",viewBox:"0 0 20 20"},ba={key:2},ka={key:3},xa={class:"flex space-x-3"},Ca={class:"space-y-4"},wa={class:"text-gray-600"},Va={class:"text-gray-900"},La={class:"flex justify-end space-x-3"},Ia={class:"space-y-4"},Ea={class:"text-gray-600"},Sa={class:"text-gray-900"},Na={class:"flex justify-end space-x-3"},Pa={class:"space-y-6"},Aa={class:"text-gray-600"},_a={class:"text-gray-900"},Da={class:"space-y-4"},Fa={class:"grid grid-cols-1 md:grid-cols-3 gap-4"},Ma={class:"text-sm text-gray-900"},qa={class:"text-sm text-gray-900"},Ra={class:"flex justify-end space-x-3"},Oa={class:"space-y-4"},Ba={class:"text-gray-600"},Ua={class:"text-gray-900"},za={key:0,class:"mt-1 text-sm text-red-600"},ja={class:"flex justify-end space-x-3"},or={__name:"InventoryTransfersView",setup(P){const w=Pt(),b=Nt(),f=zt(),{notify:y}=At(),D=p("all"),V=p({search:"",fromLocation:"",toLocation:"",type:""}),$=p(!1),Y=p("create"),I=p(null),U=p(!1),z=p(!1),G=p(!1),j=p(!1),re=p(!1),se=p(!1),J=p(!1),le=p(!1),oe=p(!1),c=p({type:"",transferNumber:"",fromLocation:"",toLocation:"",priority:"",expectedDate:"",notes:"",items:[]}),T=p({}),F=p("details"),X=p({notes:""}),R=p({trackingNumber:"",notes:""}),B=p({items:[],notes:""}),N=p({reason:"",error:""}),{hasUnsavedChanges:ne,lastSaveTime:ie,restoreFormData:he,clearSavedData:fe,hasSavedData:me,getSavedDataInfo:be,markUserInteraction:ke,finishInitialization:xe}=Dt(c,{storageKey:"atlas_inventory_transfer_form_data",saveInterval:3e3,excludeFields:[]}),Z=p(!1),pe=p(null),Ce=C(()=>f.isLoading.value),s=C(()=>f.inventoryTransfers.value),l=C(()=>f.transferStats.value),d=C(()=>f.transferMetrics.value),n=C(()=>f.pendingTransfers.value),L=C(()=>f.activeTransfers.value),A=C(()=>f.completedTransfers.value),_=C(()=>f.cancelledTransfers.value),Q=C(()=>Y.value==="edit"),ye=C(()=>{let t=[...s.value];if(D.value!=="all"&&(D.value==="pending"?t=n.value:D.value==="active"?t=L.value:D.value==="completed"?t=A.value:D.value==="cancelled"&&(t=_.value)),V.value.search){const e=V.value.search.toLowerCase();t=t.filter(a=>{var m,M,ve;return((m=a.transferNumber)==null?void 0:m.toLowerCase().includes(e))||((M=a.fromLocation)==null?void 0:M.toLowerCase().includes(e))||((ve=a.toLocation)==null?void 0:ve.toLowerCase().includes(e))})}return V.value.fromLocation&&(t=t.filter(e=>e.fromLocation===V.value.fromLocation)),V.value.toLocation&&(t=t.filter(e=>e.toLocation===V.value.toLocation)),V.value.type&&(t=t.filter(e=>e.type===V.value.type)),t}),qe=C(()=>{const t=l.value,e=d.value;return[{label:"Total Transfers",value:t.total||0,icon:"clipboard-list",color:"blue"},{label:"Pending",value:t.pending||0,icon:"clock",color:"orange"},{label:"In Transit",value:(t.approved||0)+(t.shipped||0),icon:"truck",color:"purple"},{label:"Total Value",value:Ie(e.totalValue||0),icon:"currency-dollar",color:"green"}]}),Re=C(()=>[{key:"all",label:"All Transfers",count:s.value.length},{key:"pending",label:"Pending",count:n.value.length},{key:"active",label:"Active",count:L.value.length},{key:"completed",label:"Completed",count:A.value.length},{key:"cancelled",label:"Cancelled",count:_.value.length}]),Oe=C(()=>({currentPage:1,totalPages:Math.ceil(ye.value.length/10),totalItems:ye.value.length,pageSize:10})),Be=C(()=>ie.value?new Date(ie.value).toLocaleTimeString():""),ee=[{key:"details",label:"Transfer Details",icon:"info"},{key:"items",label:"Items",icon:"cube"}],Ue=C(()=>ee.findIndex(e=>e.key===F.value)===ee.length-1),ze=[{key:"transferNumber",label:"Transfer #",sortable:!0},{key:"locations",label:"Locations",sortable:!1},{key:"itemsCount",label:"Items",sortable:!1},{key:"totalValue",label:"Value",sortable:!0},{key:"status",label:"Status",sortable:!0},{key:"requestedBy",label:"Requested By",sortable:!0},{key:"createdAt",label:"Created",sortable:!0},{key:"actions",label:"Actions",sortable:!1}],je=[{label:"All Types",value:""},{label:"Inter-Location",value:O.INTER_LOCATION},{label:"Emergency",value:O.EMERGENCY},{label:"Stock Replenishment",value:O.STOCK_REPLENISHMENT}],Qe=[{label:"Inter-Location",value:O.INTER_LOCATION},{label:"Emergency",value:O.EMERGENCY},{label:"Stock Replenishment",value:O.STOCK_REPLENISHMENT}],we=p([{label:"All Locations",value:""},{label:"Warehouse A",value:"warehouse_a"},{label:"Warehouse B",value:"warehouse_b"},{label:"Main Storage",value:"main_storage"},{label:"Service Center",value:"service_center"}]),Ve=p([{label:"Warehouse A",value:"warehouse_a"},{label:"Warehouse B",value:"warehouse_b"},{label:"Main Storage",value:"main_storage"},{label:"Service Center",value:"service_center"}]),He=p([]),{canApprove:$e,canShip:Ge,canReceive:Ke,canCancel:We,calculateTransferValue:Ye}=f,Je=t=>({[O.INTER_LOCATION]:"Inter-Location",[O.EMERGENCY]:"Emergency",[O.STOCK_REPLENISHMENT]:"Stock Replenishment"})[t]||t,Xe=t=>({[v.PENDING]:"Pending",[v.APPROVED]:"Approved",[v.SHIPPED]:"Shipped",[v.COMPLETED]:"Completed",[v.CANCELLED]:"Cancelled"})[t]||t,Le=t=>t||"N/A",Ze=t=>t||"N/A",et=t=>t?new Date(t).toLocaleDateString():"N/A",Ie=t=>new Intl.NumberFormat("en-US",{style:"currency",currency:"USD"}).format(t||0),tt=t=>({[v.PENDING]:"warning",[v.APPROVED]:"info",[v.SHIPPED]:"purple",[v.COMPLETED]:"success",[v.CANCELLED]:"danger"})[t]||"secondary",at=t=>`Part #${t}`,rt=Ft.debounce(t=>{V.value.search=t},300),ge=()=>{},st=t=>{D.value=t},lt=t=>{console.log("Sort:",t)},ot=t=>{console.log("Page:",t)},nt=t=>{Se(t)},te=async()=>{try{await f.loadInventoryTransfers(),y("Inventory transfers refreshed successfully","success")}catch{y("Failed to refresh inventory transfers","error")}},Ee=()=>{I.value=null,Y.value="create",it(),me()||Pe(),$.value=!0},it=()=>{Y.value==="create"&&me()&&(pe.value=be(),Z.value=!0)},Se=t=>{console.log("View transfer:",t)},Ne=t=>{I.value=t,Y.value="edit",ht(t),xe(),$.value=!0},ut=t=>{I.value=t,X.value.notes="",U.value=!0},dt=t=>{I.value=t,R.value.trackingNumber="",R.value.notes="",z.value=!0},ct=t=>{I.value=t,B.value.items=(t.items||[]).map(e=>({partId:e.partId,requestedQuantity:e.requestedQuantity,receivedQuantity:e.requestedQuantity})),B.value.notes="",G.value=!0},vt=t=>{I.value=t,N.value.reason="",N.value.error="",j.value=!0},Te=()=>{$.value=!1,I.value=null,Z.value=!1},ft=async()=>{re.value=!0;try{if(!bt())return;const t=kt();Q.value?console.log("Update transfer:",t):await f.createInventoryTransfer(t),fe(),Te(),await te(),y(Q.value?"Transfer updated successfully":"Transfer created successfully","success")}catch{y(Q.value?"Failed to update transfer":"Failed to create transfer","error")}finally{re.value=!1}},mt=async()=>{se.value=!0;try{await f.approveTransfer(I.value.id,{approvedBy:"current_user",notes:X.value.notes}),U.value=!1,await te(),y("Transfer approved successfully","success")}catch{y("Failed to approve transfer","error")}finally{se.value=!1}},pt=async()=>{J.value=!0;try{await f.shipTransfer(I.value.id,{shippedBy:"current_user",trackingNumber:R.value.trackingNumber,notes:R.value.notes}),z.value=!1,await te(),y("Transfer shipped successfully","success")}catch{y("Failed to ship transfer","error")}finally{J.value=!1}},yt=async()=>{le.value=!0;try{await f.receiveTransfer(I.value.id,{receivedBy:"current_user",items:B.value.items,notes:B.value.notes}),G.value=!1,await te(),y("Transfer received successfully","success")}catch{y("Failed to receive transfer","error")}finally{le.value=!1}},gt=async()=>{var t;if(!((t=N.value.reason)!=null&&t.trim())){N.value.error="Cancellation reason is required";return}N.value.error="",oe.value=!0;try{await f.cancelTransfer(I.value.id,N.value.reason),j.value=!1,await te(),y("Transfer cancelled successfully","success")}catch{y("Failed to cancel transfer","error")}finally{oe.value=!1}},Tt=()=>{const t=f.exportTransferData();console.log("Export transfers:",t),y("Transfers exported successfully","success")},Pe=()=>{c.value={type:"",transferNumber:"",fromLocation:"",toLocation:"",priority:"",expectedDate:"",notes:"",items:[]},T.value={},F.value="details"},ht=t=>{c.value={type:t.type,transferNumber:t.transferNumber,fromLocation:t.fromLocation,toLocation:t.toLocation,priority:t.priority||"",expectedDate:t.expectedDate||"",notes:t.notes||"",items:[...t.items||[]]},T.value={}},bt=()=>{if(T.value={},c.value.type||(T.value.type="Transfer type is required"),c.value.fromLocation||(T.value.fromLocation="From location is required"),c.value.toLocation||(T.value.toLocation="To location is required"),c.value.fromLocation===c.value.toLocation&&(T.value.toLocation="From and to locations must be different"),!c.value.items||c.value.items.length===0)T.value.items="At least one item is required";else{const t=[];c.value.items.forEach((e,a)=>{e.partId||t.push(`Item ${a+1}: Part is required`),(!e.requestedQuantity||e.requestedQuantity<=0)&&t.push(`Item ${a+1}: Valid quantity is required`)}),t.length>0&&(T.value.items=t.join(", "))}return Object.keys(T.value).length===0},kt=()=>({type:c.value.type,transferNumber:c.value.transferNumber,fromLocation:c.value.fromLocation,toLocation:c.value.toLocation,priority:c.value.priority,expectedDate:c.value.expectedDate,notes:c.value.notes,items:c.value.items.map(t=>({partId:parseInt(t.partId),requestedQuantity:parseInt(t.requestedQuantity),unitCost:parseFloat(t.unitCost)||0}))}),xt=()=>{c.value.items.push({partId:"",requestedQuantity:"",unitCost:""}),S()},Ct=t=>{c.value.items.splice(t,1),S()},wt=t=>{F.value=t,S()},Vt=t=>{S();{const e=ee.findIndex(a=>a.key===F.value);e{he(),Z.value=!1},It=()=>{fe(),Z.value=!1,Pe()},S=()=>{ke()},Ae=()=>{const t=b.query.edit,e=b.query.create==="true";t?setTimeout(()=>{const a=s.value.find(m=>m.id===parseInt(t));a&&Ne(a),w.replace({path:"/inventory/transfers"})},500):e&&setTimeout(()=>{Ee(),w.replace({path:"/inventory/transfers"})},500)};return Et(async()=>{await f.loadInventoryTransfers(),Ae()}),St(()=>b.query,Ae),(t,e)=>(h(),K(Mt,null,{header:i(()=>[u(qt,{title:"Inventory Transfers",description:"Manage inventory transfers between locations and track their status",breadcrumbs:[{text:"Inventory",to:"/inventory"},{text:"Transfers",to:null}]},{actions:i(()=>[u(o(k),{variant:"outline",size:"sm",onClick:Tt},{default:i(()=>e[28]||(e[28]=[r("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1),g(" Export ",-1)])),_:1,__:[28]}),u(o(k),{variant:"outline",size:"sm",onClick:te},{default:i(()=>e[29]||(e[29]=[r("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),g(" Refresh ",-1)])),_:1,__:[29]}),u(o(k),{variant:"primary",size:"sm",onClick:Ee},{default:i(()=>e[30]||(e[30]=[r("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),g(" Create Transfer ",-1)])),_:1,__:[30]})]),stats:i(()=>[u(o(Rt),{stats:qe.value},null,8,["stats"])]),tabs:i(()=>[u(o(Me),{modelValue:D.value,"onUpdate:modelValue":e[0]||(e[0]=a=>D.value=a),tabs:Re.value,onTabChange:st},null,8,["modelValue","tabs"])]),_:1})]),default:i(()=>[r("div",jt,[r("div",Qt,[u(o(H),{modelValue:V.value.search,"onUpdate:modelValue":e[1]||(e[1]=a=>V.value.search=a),placeholder:"Search transfers...",onInput:o(rt)},{prepend:i(()=>e[31]||(e[31]=[r("svg",{class:"w-4 h-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1)])),_:1},8,["modelValue","onInput"]),u(o(W),{modelValue:V.value.fromLocation,"onUpdate:modelValue":[e[2]||(e[2]=a=>V.value.fromLocation=a),ge],placeholder:"Filter by From Location",options:we.value},null,8,["modelValue","options"]),u(o(W),{modelValue:V.value.toLocation,"onUpdate:modelValue":[e[3]||(e[3]=a=>V.value.toLocation=a),ge],placeholder:"Filter by To Location",options:we.value},null,8,["modelValue","options"]),u(o(W),{modelValue:V.value.type,"onUpdate:modelValue":[e[4]||(e[4]=a=>V.value.type=a),ge],placeholder:"Filter by Transfer Type",options:je},null,8,["modelValue"])]),r("div",Ht,[u(o(Ot),{columns:ze,data:ye.value,loading:Ce.value,pagination:Oe.value,"empty-message":"No inventory transfers found",onSortChange:lt,onPageChange:ot,onRowClick:nt},{"column-transferNumber":i(({row:a})=>[r("div",$t,[e[32]||(e[32]=r("div",{class:"w-8 h-8 bg-blue-100 rounded-lg flex items-center justify-center"},[r("svg",{class:"w-4 h-4 text-blue-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M8 7h12m0 0l-4-4m4 4l-4 4m0 6H4m0 0l4 4m-4-4l4-4"})])],-1)),r("div",null,[r("h4",Gt,x(a.transferNumber),1),r("p",Kt,x(Je(a.type)),1)])])]),"column-locations":i(({row:a})=>[r("div",Wt,[r("div",Yt,"From: "+x(Le(a.fromLocation)),1),r("div",Jt,"To: "+x(Le(a.toLocation)),1)])]),"column-itemsCount":i(({row:a})=>[r("div",Xt,x((a.items||[]).length)+" item"+x((a.items||[]).length!==1?"s":""),1)]),"column-totalValue":i(({row:a})=>[r("div",Zt,x(Ie(o(Ye)(a))),1)]),"column-status":i(({row:a})=>[u(o(Bt),{variant:tt(a.status),size:"sm"},{default:i(()=>[g(x(Xe(a.status)),1)]),_:2},1032,["variant"])]),"column-requestedBy":i(({row:a})=>[r("div",ea,x(Ze(a.requestedBy)),1)]),"column-createdAt":i(({row:a})=>[r("div",ta,x(et(a.createdAt)),1)]),"column-actions":i(({row:a})=>[r("div",aa,[u(o(k),{variant:"ghost",size:"xs",onClick:ae(m=>Se(a),["stop"]),title:"View Details"},{default:i(()=>e[33]||(e[33]=[r("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"}),r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"})],-1)])),_:2,__:[33]},1032,["onClick"]),o($e)(a)?(h(),K(o(k),{key:0,variant:"ghost",size:"xs",onClick:ae(m=>ut(a),["stop"]),title:"Approve Transfer",class:"text-green-600 hover:text-green-700"},{default:i(()=>e[34]||(e[34]=[r("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)])),_:2,__:[34]},1032,["onClick"])):q("",!0),o(Ge)(a)?(h(),K(o(k),{key:1,variant:"ghost",size:"xs",onClick:ae(m=>dt(a),["stop"]),title:"Ship Transfer",class:"text-blue-600 hover:text-blue-700"},{default:i(()=>e[35]||(e[35]=[r("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M8 7h12m0 0l-4-4m4 4l-4 4m0 6H4m0 0l4 4m-4-4l4-4"})],-1)])),_:2,__:[35]},1032,["onClick"])):q("",!0),o(Ke)(a)?(h(),K(o(k),{key:2,variant:"ghost",size:"xs",onClick:ae(m=>ct(a),["stop"]),title:"Receive Transfer",class:"text-purple-600 hover:text-purple-700"},{default:i(()=>e[36]||(e[36]=[r("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4"})],-1)])),_:2,__:[36]},1032,["onClick"])):q("",!0),o(We)(a)?(h(),K(o(k),{key:3,variant:"ghost",size:"xs",onClick:ae(m=>vt(a),["stop"]),title:"Cancel Transfer",class:"text-red-600 hover:text-red-700"},{default:i(()=>e[37]||(e[37]=[r("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})],-1)])),_:2,__:[37]},1032,["onClick"])):q("",!0),u(o(k),{variant:"ghost",size:"xs",onClick:ae(m=>Ne(a),["stop"]),title:"Edit Transfer"},{default:i(()=>e[38]||(e[38]=[r("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1)])),_:2,__:[38]},1032,["onClick"])])]),_:1},8,["data","loading","pagination"])]),u(o(ce),{modelValue:$.value,"onUpdate:modelValue":e[14]||(e[14]=a=>$.value=a),title:Q.value?"Edit Inventory Transfer":"Create Inventory Transfer",size:"xl",onCancel:Te},{footer:i(()=>[r("div",pa,[r("div",ya,[o(ne)||o(ie)?(h(),E("div",ga,[o(ne)?(h(),E("svg",Ta,e[43]||(e[43]=[r("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z","clip-rule":"evenodd"},null,-1)]))):(h(),E("svg",ha,e[44]||(e[44]=[r("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z","clip-rule":"evenodd"},null,-1)]))),o(ne)?(h(),E("span",ba,"Auto-saving...")):o(ie)?(h(),E("span",ka,"Last saved "+x(Be.value),1)):q("",!0)])):q("",!0)]),r("div",xa,[u(o(k),{variant:"secondary",onClick:Te},{default:i(()=>e[45]||(e[45]=[g(" Cancel ",-1)])),_:1,__:[45]}),Ue.value?(h(),K(o(k),{key:1,variant:"primary",loading:re.value,onClick:ft},{default:i(()=>[g(x(Q.value?"Update Transfer":"Create Transfer"),1)]),_:1},8,["loading"])):(h(),K(o(k),{key:0,variant:"primary",onClick:e[13]||(e[13]=a=>Vt("next"))},{default:i(()=>e[46]||(e[46]=[g(" Next ",-1)])),_:1,__:[46]}))])])]),default:i(()=>[u(o(Ut),{visible:Z.value,"saved-data-info":pe.value,onRestore:Lt,onDismiss:It},null,8,["visible","saved-data-info"]),r("div",ra,[u(o(Me),{modelValue:F.value,"onUpdate:modelValue":e[5]||(e[5]=a=>F.value=a),tabs:ee,onTabChange:wt},null,8,["modelValue"])]),F.value==="details"?(h(),E("div",sa,[r("div",la,[u(o(W),{modelValue:c.value.type,"onUpdate:modelValue":e[6]||(e[6]=a=>c.value.type=a),label:"Transfer Type",placeholder:"Select transfer type",options:Qe,required:"",error:T.value.type,onChange:S},null,8,["modelValue","error"]),u(o(H),{modelValue:c.value.transferNumber,"onUpdate:modelValue":e[7]||(e[7]=a=>c.value.transferNumber=a),label:"Transfer Number",placeholder:"Auto-generated",error:T.value.transferNumber,disabled:Q.value,onInput:S},null,8,["modelValue","error","disabled"]),u(o(W),{modelValue:c.value.fromLocation,"onUpdate:modelValue":e[8]||(e[8]=a=>c.value.fromLocation=a),label:"From Location",placeholder:"Select source location",options:Ve.value,required:"",error:T.value.fromLocation,onChange:S},null,8,["modelValue","options","error"]),u(o(W),{modelValue:c.value.toLocation,"onUpdate:modelValue":e[9]||(e[9]=a=>c.value.toLocation=a),label:"To Location",placeholder:"Select destination location",options:Ve.value,required:"",error:T.value.toLocation,onChange:S},null,8,["modelValue","options","error"]),u(o(H),{modelValue:c.value.priority,"onUpdate:modelValue":e[10]||(e[10]=a=>c.value.priority=a),label:"Priority",placeholder:"Select priority",error:T.value.priority,onInput:S},null,8,["modelValue","error"]),u(o(H),{modelValue:c.value.expectedDate,"onUpdate:modelValue":e[11]||(e[11]=a=>c.value.expectedDate=a),label:"Expected Date",type:"date",error:T.value.expectedDate,onInput:S},null,8,["modelValue","error"])]),r("div",null,[e[39]||(e[39]=r("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Notes",-1)),ue(r("textarea",{"onUpdate:modelValue":e[12]||(e[12]=a=>c.value.notes=a),class:_e(["w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",{"border-red-300":T.value.notes}]),placeholder:"Additional notes or instructions...",rows:"3",onInput:S},null,34),[[de,c.value.notes]]),T.value.notes?(h(),E("p",oa,x(T.value.notes),1)):q("",!0)])])):q("",!0),F.value==="items"?(h(),E("div",na,[r("div",ia,[e[41]||(e[41]=r("h3",{class:"text-lg font-medium text-gray-900"},"Transfer Items",-1)),u(o(k),{variant:"outline",size:"sm",onClick:xt},{default:i(()=>e[40]||(e[40]=[r("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),g(" Add Item ",-1)])),_:1,__:[40]})]),c.value.items.length===0?(h(),E("div",ua,' No items added yet. Click "Add Item" to start. ')):(h(),E("div",da,[(h(!0),E(De,null,Fe(c.value.items,(a,m)=>(h(),E("div",{key:m,class:"border border-gray-200 rounded-lg p-4"},[r("div",ca,[r("h4",va,"Item "+x(m+1),1),u(o(k),{variant:"ghost",size:"xs",onClick:M=>Ct(m),class:"text-red-600 hover:text-red-700"},{default:i(()=>e[42]||(e[42]=[r("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1)])),_:2,__:[42]},1032,["onClick"])]),r("div",fa,[u(o(W),{modelValue:a.partId,"onUpdate:modelValue":M=>a.partId=M,label:"Part",placeholder:"Select part",options:He.value,required:"",onChange:S},null,8,["modelValue","onUpdate:modelValue","options"]),u(o(H),{modelValue:a.requestedQuantity,"onUpdate:modelValue":M=>a.requestedQuantity=M,label:"Requested Quantity",placeholder:"0",type:"number",required:"",onInput:S},null,8,["modelValue","onUpdate:modelValue"]),u(o(H),{modelValue:a.unitCost,"onUpdate:modelValue":M=>a.unitCost=M,label:"Unit Cost",placeholder:"0.00",type:"number",step:"0.01",onInput:S},null,8,["modelValue","onUpdate:modelValue"])])]))),128))])),T.value.items?(h(),E("p",ma,x(T.value.items),1)):q("",!0)])):q("",!0)]),_:1},8,["modelValue","title"]),u(o(ce),{modelValue:U.value,"onUpdate:modelValue":e[17]||(e[17]=a=>U.value=a),title:"Approve Transfer",size:"md"},{footer:i(()=>[r("div",La,[u(o(k),{variant:"secondary",onClick:e[16]||(e[16]=a=>U.value=!1)},{default:i(()=>e[50]||(e[50]=[g(" Cancel ",-1)])),_:1,__:[50]}),u(o(k),{variant:"primary",loading:se.value,onClick:mt},{default:i(()=>e[51]||(e[51]=[g(" Approve Transfer ",-1)])),_:1,__:[51]},8,["loading"])])]),default:i(()=>{var a;return[r("div",Ca,[r("p",wa,[e[47]||(e[47]=g(" Approve transfer ",-1)),r("strong",Va,"'"+x((a=I.value)==null?void 0:a.transferNumber)+"'",1),e[48]||(e[48]=g("? ",-1))]),r("div",null,[e[49]||(e[49]=r("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Approval Notes (Optional)",-1)),ue(r("textarea",{"onUpdate:modelValue":e[15]||(e[15]=m=>X.value.notes=m),class:"w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",placeholder:"Add any approval notes...",rows:"3"},null,512),[[de,X.value.notes]])])])]}),_:1},8,["modelValue"]),u(o(ce),{modelValue:z.value,"onUpdate:modelValue":e[21]||(e[21]=a=>z.value=a),title:"Ship Transfer",size:"md"},{footer:i(()=>[r("div",Na,[u(o(k),{variant:"secondary",onClick:e[20]||(e[20]=a=>z.value=!1)},{default:i(()=>e[55]||(e[55]=[g(" Cancel ",-1)])),_:1,__:[55]}),u(o(k),{variant:"primary",loading:J.value,onClick:pt},{default:i(()=>e[56]||(e[56]=[g(" Ship Transfer ",-1)])),_:1,__:[56]},8,["loading"])])]),default:i(()=>{var a;return[r("div",Ia,[r("p",Ea,[e[52]||(e[52]=g(" Ship transfer ",-1)),r("strong",Sa,"'"+x((a=I.value)==null?void 0:a.transferNumber)+"'",1),e[53]||(e[53]=g(". ",-1))]),r("div",null,[u(o(H),{modelValue:R.value.trackingNumber,"onUpdate:modelValue":e[18]||(e[18]=m=>R.value.trackingNumber=m),label:"Tracking Number (Optional)",placeholder:"Enter tracking number"},null,8,["modelValue"])]),r("div",null,[e[54]||(e[54]=r("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Shipment Notes (Optional)",-1)),ue(r("textarea",{"onUpdate:modelValue":e[19]||(e[19]=m=>R.value.notes=m),class:"w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",placeholder:"Add any shipment notes...",rows:"3"},null,512),[[de,R.value.notes]])])])]}),_:1},8,["modelValue"]),u(o(ce),{modelValue:G.value,"onUpdate:modelValue":e[24]||(e[24]=a=>G.value=a),title:"Receive Transfer",size:"lg"},{footer:i(()=>[r("div",Ra,[u(o(k),{variant:"secondary",onClick:e[23]||(e[23]=a=>G.value=!1)},{default:i(()=>e[63]||(e[63]=[g(" Cancel ",-1)])),_:1,__:[63]}),u(o(k),{variant:"primary",loading:le.value,onClick:yt},{default:i(()=>e[64]||(e[64]=[g(" Receive Transfer ",-1)])),_:1,__:[64]},8,["loading"])])]),default:i(()=>{var a;return[r("div",Pa,[r("p",Aa,[e[57]||(e[57]=g(" Receive transfer ",-1)),r("strong",_a,"'"+x((a=I.value)==null?void 0:a.transferNumber)+"'",1),e[58]||(e[58]=g(". ",-1))]),r("div",Da,[e[61]||(e[61]=r("h4",{class:"font-medium text-gray-900"},"Received Items",-1)),(h(!0),E(De,null,Fe(B.value.items,(m,M)=>(h(),E("div",{key:M,class:"border border-gray-200 rounded-lg p-4"},[r("div",Fa,[r("div",null,[e[59]||(e[59]=r("label",{class:"block text-sm font-medium text-gray-700"},"Part",-1)),r("p",Ma,x(at(m.partId)),1)]),r("div",null,[e[60]||(e[60]=r("label",{class:"block text-sm font-medium text-gray-700"},"Requested",-1)),r("p",qa,x(m.requestedQuantity),1)]),u(o(H),{modelValue:m.receivedQuantity,"onUpdate:modelValue":ve=>m.receivedQuantity=ve,label:"Received Quantity",placeholder:"0",type:"number",required:""},null,8,["modelValue","onUpdate:modelValue"])])]))),128))]),r("div",null,[e[62]||(e[62]=r("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Receipt Notes (Optional)",-1)),ue(r("textarea",{"onUpdate:modelValue":e[22]||(e[22]=m=>B.value.notes=m),class:"w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",placeholder:"Add any receipt notes...",rows:"3"},null,512),[[de,B.value.notes]])])])]}),_:1},8,["modelValue"]),u(o(ce),{modelValue:j.value,"onUpdate:modelValue":e[27]||(e[27]=a=>j.value=a),title:"Cancel Transfer",size:"md"},{footer:i(()=>[r("div",ja,[u(o(k),{variant:"secondary",onClick:e[26]||(e[26]=a=>j.value=!1)},{default:i(()=>e[68]||(e[68]=[g(" Keep Transfer ",-1)])),_:1,__:[68]}),u(o(k),{variant:"danger",loading:oe.value,onClick:gt},{default:i(()=>e[69]||(e[69]=[g(" Cancel Transfer ",-1)])),_:1,__:[69]},8,["loading"])])]),default:i(()=>{var a;return[r("div",Oa,[r("p",Ba,[e[65]||(e[65]=g(" Are you sure you want to cancel transfer ",-1)),r("strong",Ua,"'"+x((a=I.value)==null?void 0:a.transferNumber)+"'",1),e[66]||(e[66]=g("? ",-1))]),r("div",null,[e[67]||(e[67]=r("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Cancellation Reason (Required)",-1)),ue(r("textarea",{"onUpdate:modelValue":e[25]||(e[25]=m=>N.value.reason=m),class:_e(["w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",{"border-red-300":N.value.error}]),placeholder:"Explain why this transfer is being cancelled...",rows:"3",required:""},null,2),[[de,N.value.reason]]),N.value.error?(h(),E("p",za,x(N.value.error),1)):q("",!0)])])]}),_:1},8,["modelValue"])])]),_:1}))}};export{or as default}; +import{r as p,c as C,o as Et,m as St,i as K,w as i,s as Nt,v as Pt,g as h,b as r,d as u,e as o,j as R,F as k,h as ae,t as x,k as g,a as E,ae as ue,n as _e,aV as de,af as De,aR as Fe,l as At}from"./index-QAlcqU00.js";import{u as _t}from"./parts-imZSnlsl.js";import{T as v,c as O}from"./inventory-C_cwbKdQ.js";import{u as Dt}from"./useFormAutoSave-BrW9Wl2Q.js";import{l as Ft}from"./lodash-RqMXHFU9.js";import{F as Mt,a as Rt}from"./FPPageHeader-CFIwZZgQ.js";import{F as H}from"./FPInput-D5RURom0.js";import{F as W}from"./FPSelect-j7n_x8eB.js";import{F as qt}from"./FPStats-DOY0PQQF.js";import{F as Ot}from"./FPTable-CWvngIYd.js";import{F as ce}from"./FPModal-DMoPysvU.js";import{F as Bt}from"./FPBadge-DvOitM1C.js";import{F as Me}from"./FPTabs-qq-Tmb7J.js";import{_ as Ut}from"./FormRestoreNotification-2Wflg1mH.js";import"./_commonjsHelpers-NT8qMgGI.js";import"./FPCard-AB6NRXg5.js";function zt(){const P=_t(),w=p(!1),b=p(null),f=p(null),y=C(()=>P.inventoryTransfers),D=C(()=>P.transferStats),V=C(()=>y.value.filter(s=>s.status===v.PENDING)),$=C(()=>y.value.filter(s=>[v.PENDING,v.APPROVED,v.SHIPPED].includes(s.status))),Y=C(()=>y.value.filter(s=>s.status===v.COMPLETED)),I=C(()=>y.value.filter(s=>s.status===v.CANCELLED)),U=C(()=>{const s=y.value,l=s.reduce((n,L)=>n+(L.items||[]).reduce((A,_)=>A+(_.requestedQuantity||0)*(_.unitCost||0),0),0),d=N(s);return{totalTransfers:s.length,totalValue:l,averageProcessingTime:d,successRate:ne(s)}}),z=async(s={})=>{w.value=!0,b.value=null;try{await P.fetchInventoryTransfers(s)}catch(l){throw b.value=l.message,l}finally{w.value=!1}},G=async s=>{w.value=!0,b.value=null;try{const l=await P.createInventoryTransfer(s);return f.value=l,l}catch(l){throw b.value=l.message,l}finally{w.value=!1}},j=async(s,l)=>{var d;w.value=!0,b.value=null;try{await P.approveTransfer(s,l),((d=f.value)==null?void 0:d.id)===s&&(f.value.status=v.APPROVED,f.value.approvedBy=l.approvedBy,f.value.approvedAt=new Date().toISOString())}catch(n){throw b.value=n.message,n}finally{w.value=!1}},re=async(s,l)=>{var d;w.value=!0,b.value=null;try{P.shipTransfer&&await P.shipTransfer(s,l);const n=y.value.find(L=>L.id===s);n&&(n.status=v.SHIPPED,n.shippedBy=l.shippedBy,n.shippedAt=new Date().toISOString(),n.trackingNumber=l.trackingNumber),((d=f.value)==null?void 0:d.id)===s&&Object.assign(f.value,{status:v.SHIPPED,shippedBy:l.shippedBy,shippedAt:new Date().toISOString(),trackingNumber:l.trackingNumber})}catch(n){throw b.value=n.message,n}finally{w.value=!1}},se=async(s,l)=>{var d;w.value=!0,b.value=null;try{P.receiveTransfer&&await P.receiveTransfer(s,l);const n=y.value.find(L=>L.id===s);n&&(n.status=v.COMPLETED,n.receivedBy=l.receivedBy,n.receivedAt=new Date().toISOString(),l.items&&l.items.forEach(L=>{var _;const A=(_=n.items)==null?void 0:_.find(Q=>Q.partId===L.partId);A&&(A.receivedQuantity=L.receivedQuantity)})),((d=f.value)==null?void 0:d.id)===s&&(Object.assign(f.value,{status:v.COMPLETED,receivedBy:l.receivedBy,receivedAt:new Date().toISOString()}),l.items&&f.value.items&&l.items.forEach(L=>{const A=f.value.items.find(_=>_.partId===L.partId);A&&(A.receivedQuantity=L.receivedQuantity)}))}catch(n){throw b.value=n.message,n}finally{w.value=!1}},J=async(s,l)=>{var d;w.value=!0,b.value=null;try{P.cancelTransfer&&await P.cancelTransfer(s,l);const n=y.value.find(L=>L.id===s);n&&(n.status=v.CANCELLED,n.cancelledAt=new Date().toISOString(),n.cancellationReason=l),((d=f.value)==null?void 0:d.id)===s&&Object.assign(f.value,{status:v.CANCELLED,cancelledAt:new Date().toISOString(),cancellationReason:l})}catch(n){throw b.value=n.message,n}finally{w.value=!1}},le=s=>{f.value=s},oe=()=>{f.value=null},c=s=>y.value.find(l=>l.id===s),T=s=>{const l=[];return(!s.type||!Object.values(O).includes(s.type))&&l.push("Valid transfer type is required"),s.fromLocation||l.push("From location is required"),s.toLocation||l.push("To location is required"),s.fromLocation===s.toLocation&&l.push("From and to locations must be different"),!s.items||!Array.isArray(s.items)||s.items.length===0?l.push("At least one item is required"):s.items.forEach((d,n)=>{d.partId||l.push(`Item ${n+1}: Part ID is required`),(!d.requestedQuantity||d.requestedQuantity<=0)&&l.push(`Item ${n+1}: Valid requested quantity is required`)}),{isValid:l.length===0,errors:l}},F=s=>{const l=[];return s.approvedBy||l.push("Approver is required"),{isValid:l.length===0,errors:l}},X=s=>{const l=[];return s.shippedBy||l.push("Shipper is required"),{isValid:l.length===0,errors:l}},q=s=>{const l=[];return s.receivedBy||l.push("Receiver is required"),!s.items||!Array.isArray(s.items)||s.items.length===0?l.push("At least one received item is required"):s.items.forEach((d,n)=>{d.partId||l.push(`Item ${n+1}: Part ID is required`),(d.receivedQuantity===void 0||d.receivedQuantity<0)&&l.push(`Item ${n+1}: Valid received quantity is required`)}),{isValid:l.length===0,errors:l}},B=s=>s.items?s.items.reduce((l,d)=>l+(d.requestedQuantity||0)*(d.unitCost||0),0):0,N=s=>{const l=s.filter(n=>n.status===v.COMPLETED&&n.createdAt&&n.receivedAt);if(l.length===0)return 0;const d=l.reduce((n,L)=>{const A=new Date(L.createdAt),_=new Date(L.receivedAt);return n+(_-A)},0);return Math.round(d/l.length/(1e3*60*60*24))},ne=s=>{if(s.length===0)return 100;const l=s.filter(n=>[v.COMPLETED,v.CANCELLED].includes(n.status));if(l.length===0)return 100;const d=l.filter(n=>n.status===v.COMPLETED);return Math.round(d.length/l.length*100)};return{isLoading:w,error:b,selectedTransfer:f,inventoryTransfers:y,transferStats:D,pendingTransfers:V,activeTransfers:$,completedTransfers:Y,cancelledTransfers:I,transferMetrics:U,loadInventoryTransfers:z,createInventoryTransfer:G,approveTransfer:j,shipTransfer:re,receiveTransfer:se,cancelTransfer:J,selectTransfer:le,clearSelectedTransfer:oe,getTransferById:c,validateTransferData:T,validateApproval:F,validateShipment:X,validateReceipt:q,calculateTransferValue:B,getTransferStatusColor:s=>({[v.PENDING]:"orange",[v.APPROVED]:"blue",[v.SHIPPED]:"purple",[v.COMPLETED]:"green",[v.CANCELLED]:"red"})[s]||"gray",canApprove:s=>s.status===v.PENDING,canShip:s=>s.status===v.APPROVED,canReceive:s=>s.status===v.SHIPPED,canCancel:s=>[v.PENDING,v.APPROVED].includes(s.status),bulkApproveTransfers:async(s,l)=>{w.value=!0,b.value=null;try{const d=s.map(n=>j(n,l));await Promise.all(d)}catch(d){throw b.value=d.message,d}finally{w.value=!1}},bulkCancelTransfers:async(s,l)=>{w.value=!0,b.value=null;try{const d=s.map(n=>J(n,l));await Promise.all(d)}catch(d){throw b.value=d.message,d}finally{w.value=!1}},refreshTransfers:async()=>{await z()},clearError:()=>{b.value=null},exportTransferData:()=>({transfers:y.value,metrics:U.value,statistics:D.value,exportedAt:new Date().toISOString()})}}const jt={class:"p-6"},Qt={class:"mb-6 grid grid-cols-1 md:grid-cols-4 gap-4"},Ht={class:"bg-white shadow rounded-lg overflow-hidden"},$t={class:"flex items-center space-x-2"},Gt={class:"font-medium text-gray-900"},Kt={class:"text-sm text-gray-500"},Wt={class:"text-sm"},Yt={class:"font-medium text-gray-900"},Jt={class:"text-gray-500"},Xt={class:"text-sm font-medium text-gray-900"},Zt={class:"text-sm font-medium text-gray-900"},ea={class:"text-sm text-gray-900"},ta={class:"text-sm text-gray-900"},aa={class:"flex items-center space-x-2"},ra={class:"border-b border-gray-200 mb-6"},sa={key:0,class:"space-y-6"},la={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},oa={key:0,class:"mt-1 text-sm text-red-600"},na={key:1,class:"space-y-6"},ia={class:"flex justify-between items-center"},ua={key:0,class:"text-center py-8 text-gray-500"},da={key:1,class:"space-y-4"},ca={class:"flex justify-between items-start mb-4"},va={class:"font-medium text-gray-900"},fa={class:"grid grid-cols-1 md:grid-cols-3 gap-4"},ma={key:2,class:"text-sm text-red-600"},pa={class:"flex items-center justify-between"},ya={class:"flex items-center space-x-4"},ga={key:0,class:"flex items-center text-sm text-gray-500"},Ta={key:0,class:"w-4 h-4 mr-2 text-amber-500 animate-pulse",fill:"currentColor",viewBox:"0 0 20 20"},ha={key:1,class:"w-4 h-4 mr-2 text-green-500",fill:"currentColor",viewBox:"0 0 20 20"},ba={key:2},ka={key:3},xa={class:"flex space-x-3"},Ca={class:"space-y-4"},wa={class:"text-gray-600"},Va={class:"text-gray-900"},La={class:"flex justify-end space-x-3"},Ia={class:"space-y-4"},Ea={class:"text-gray-600"},Sa={class:"text-gray-900"},Na={class:"flex justify-end space-x-3"},Pa={class:"space-y-6"},Aa={class:"text-gray-600"},_a={class:"text-gray-900"},Da={class:"space-y-4"},Fa={class:"grid grid-cols-1 md:grid-cols-3 gap-4"},Ma={class:"text-sm text-gray-900"},Ra={class:"text-sm text-gray-900"},qa={class:"flex justify-end space-x-3"},Oa={class:"space-y-4"},Ba={class:"text-gray-600"},Ua={class:"text-gray-900"},za={key:0,class:"mt-1 text-sm text-red-600"},ja={class:"flex justify-end space-x-3"},or={__name:"InventoryTransfersView",setup(P){const w=Pt(),b=Nt(),f=zt(),{notify:y}=At(),D=p("all"),V=p({search:"",fromLocation:"",toLocation:"",type:""}),$=p(!1),Y=p("create"),I=p(null),U=p(!1),z=p(!1),G=p(!1),j=p(!1),re=p(!1),se=p(!1),J=p(!1),le=p(!1),oe=p(!1),c=p({type:"",transferNumber:"",fromLocation:"",toLocation:"",priority:"",expectedDate:"",notes:"",items:[]}),T=p({}),F=p("details"),X=p({notes:""}),q=p({trackingNumber:"",notes:""}),B=p({items:[],notes:""}),N=p({reason:"",error:""}),{hasUnsavedChanges:ne,lastSaveTime:ie,restoreFormData:he,clearSavedData:fe,hasSavedData:me,getSavedDataInfo:be,markUserInteraction:ke,finishInitialization:xe}=Dt(c,{storageKey:"atlas_inventory_transfer_form_data",saveInterval:3e3,excludeFields:[]}),Z=p(!1),pe=p(null),Ce=C(()=>f.isLoading.value),s=C(()=>f.inventoryTransfers.value),l=C(()=>f.transferStats.value),d=C(()=>f.transferMetrics.value),n=C(()=>f.pendingTransfers.value),L=C(()=>f.activeTransfers.value),A=C(()=>f.completedTransfers.value),_=C(()=>f.cancelledTransfers.value),Q=C(()=>Y.value==="edit"),ye=C(()=>{let t=[...s.value];if(D.value!=="all"&&(D.value==="pending"?t=n.value:D.value==="active"?t=L.value:D.value==="completed"?t=A.value:D.value==="cancelled"&&(t=_.value)),V.value.search){const e=V.value.search.toLowerCase();t=t.filter(a=>{var m,M,ve;return((m=a.transferNumber)==null?void 0:m.toLowerCase().includes(e))||((M=a.fromLocation)==null?void 0:M.toLowerCase().includes(e))||((ve=a.toLocation)==null?void 0:ve.toLowerCase().includes(e))})}return V.value.fromLocation&&(t=t.filter(e=>e.fromLocation===V.value.fromLocation)),V.value.toLocation&&(t=t.filter(e=>e.toLocation===V.value.toLocation)),V.value.type&&(t=t.filter(e=>e.type===V.value.type)),t}),Re=C(()=>{const t=l.value,e=d.value;return[{label:"Total Transfers",value:t.total||0,icon:"clipboard-list",color:"blue"},{label:"Pending",value:t.pending||0,icon:"clock",color:"orange"},{label:"In Transit",value:(t.approved||0)+(t.shipped||0),icon:"truck",color:"purple"},{label:"Total Value",value:Ie(e.totalValue||0),icon:"currency-dollar",color:"green"}]}),qe=C(()=>[{key:"all",label:"All Transfers",count:s.value.length},{key:"pending",label:"Pending",count:n.value.length},{key:"active",label:"Active",count:L.value.length},{key:"completed",label:"Completed",count:A.value.length},{key:"cancelled",label:"Cancelled",count:_.value.length}]),Oe=C(()=>({currentPage:1,totalPages:Math.ceil(ye.value.length/10),totalItems:ye.value.length,pageSize:10})),Be=C(()=>ie.value?new Date(ie.value).toLocaleTimeString():""),ee=[{key:"details",label:"Transfer Details",icon:"info"},{key:"items",label:"Items",icon:"cube"}],Ue=C(()=>ee.findIndex(e=>e.key===F.value)===ee.length-1),ze=[{key:"transferNumber",label:"Transfer #",sortable:!0},{key:"locations",label:"Locations",sortable:!1},{key:"itemsCount",label:"Items",sortable:!1},{key:"totalValue",label:"Value",sortable:!0},{key:"status",label:"Status",sortable:!0},{key:"requestedBy",label:"Requested By",sortable:!0},{key:"createdAt",label:"Created",sortable:!0},{key:"actions",label:"Actions",sortable:!1}],je=[{label:"All Types",value:""},{label:"Inter-Location",value:O.INTER_LOCATION},{label:"Emergency",value:O.EMERGENCY},{label:"Stock Replenishment",value:O.STOCK_REPLENISHMENT}],Qe=[{label:"Inter-Location",value:O.INTER_LOCATION},{label:"Emergency",value:O.EMERGENCY},{label:"Stock Replenishment",value:O.STOCK_REPLENISHMENT}],we=p([{label:"All Locations",value:""},{label:"Warehouse A",value:"warehouse_a"},{label:"Warehouse B",value:"warehouse_b"},{label:"Main Storage",value:"main_storage"},{label:"Service Center",value:"service_center"}]),Ve=p([{label:"Warehouse A",value:"warehouse_a"},{label:"Warehouse B",value:"warehouse_b"},{label:"Main Storage",value:"main_storage"},{label:"Service Center",value:"service_center"}]),He=p([]),{canApprove:$e,canShip:Ge,canReceive:Ke,canCancel:We,calculateTransferValue:Ye}=f,Je=t=>({[O.INTER_LOCATION]:"Inter-Location",[O.EMERGENCY]:"Emergency",[O.STOCK_REPLENISHMENT]:"Stock Replenishment"})[t]||t,Xe=t=>({[v.PENDING]:"Pending",[v.APPROVED]:"Approved",[v.SHIPPED]:"Shipped",[v.COMPLETED]:"Completed",[v.CANCELLED]:"Cancelled"})[t]||t,Le=t=>t||"N/A",Ze=t=>t||"N/A",et=t=>t?new Date(t).toLocaleDateString():"N/A",Ie=t=>new Intl.NumberFormat("en-US",{style:"currency",currency:"USD"}).format(t||0),tt=t=>({[v.PENDING]:"warning",[v.APPROVED]:"info",[v.SHIPPED]:"purple",[v.COMPLETED]:"success",[v.CANCELLED]:"danger"})[t]||"secondary",at=t=>`Part #${t}`,rt=Ft.debounce(t=>{V.value.search=t},300),ge=()=>{},st=t=>{D.value=t},lt=t=>{console.log("Sort:",t)},ot=t=>{console.log("Page:",t)},nt=t=>{Se(t)},te=async()=>{try{await f.loadInventoryTransfers(),y("Inventory transfers refreshed successfully","success")}catch{y("Failed to refresh inventory transfers","error")}},Ee=()=>{I.value=null,Y.value="create",it(),me()||Pe(),$.value=!0},it=()=>{Y.value==="create"&&me()&&(pe.value=be(),Z.value=!0)},Se=t=>{console.log("View transfer:",t)},Ne=t=>{I.value=t,Y.value="edit",ht(t),xe(),$.value=!0},ut=t=>{I.value=t,X.value.notes="",U.value=!0},dt=t=>{I.value=t,q.value.trackingNumber="",q.value.notes="",z.value=!0},ct=t=>{I.value=t,B.value.items=(t.items||[]).map(e=>({partId:e.partId,requestedQuantity:e.requestedQuantity,receivedQuantity:e.requestedQuantity})),B.value.notes="",G.value=!0},vt=t=>{I.value=t,N.value.reason="",N.value.error="",j.value=!0},Te=()=>{$.value=!1,I.value=null,Z.value=!1},ft=async()=>{re.value=!0;try{if(!bt())return;const t=kt();Q.value?console.log("Update transfer:",t):await f.createInventoryTransfer(t),fe(),Te(),await te(),y(Q.value?"Transfer updated successfully":"Transfer created successfully","success")}catch{y(Q.value?"Failed to update transfer":"Failed to create transfer","error")}finally{re.value=!1}},mt=async()=>{se.value=!0;try{await f.approveTransfer(I.value.id,{approvedBy:"current_user",notes:X.value.notes}),U.value=!1,await te(),y("Transfer approved successfully","success")}catch{y("Failed to approve transfer","error")}finally{se.value=!1}},pt=async()=>{J.value=!0;try{await f.shipTransfer(I.value.id,{shippedBy:"current_user",trackingNumber:q.value.trackingNumber,notes:q.value.notes}),z.value=!1,await te(),y("Transfer shipped successfully","success")}catch{y("Failed to ship transfer","error")}finally{J.value=!1}},yt=async()=>{le.value=!0;try{await f.receiveTransfer(I.value.id,{receivedBy:"current_user",items:B.value.items,notes:B.value.notes}),G.value=!1,await te(),y("Transfer received successfully","success")}catch{y("Failed to receive transfer","error")}finally{le.value=!1}},gt=async()=>{var t;if(!((t=N.value.reason)!=null&&t.trim())){N.value.error="Cancellation reason is required";return}N.value.error="",oe.value=!0;try{await f.cancelTransfer(I.value.id,N.value.reason),j.value=!1,await te(),y("Transfer cancelled successfully","success")}catch{y("Failed to cancel transfer","error")}finally{oe.value=!1}},Tt=()=>{const t=f.exportTransferData();console.log("Export transfers:",t),y("Transfers exported successfully","success")},Pe=()=>{c.value={type:"",transferNumber:"",fromLocation:"",toLocation:"",priority:"",expectedDate:"",notes:"",items:[]},T.value={},F.value="details"},ht=t=>{c.value={type:t.type,transferNumber:t.transferNumber,fromLocation:t.fromLocation,toLocation:t.toLocation,priority:t.priority||"",expectedDate:t.expectedDate||"",notes:t.notes||"",items:[...t.items||[]]},T.value={}},bt=()=>{if(T.value={},c.value.type||(T.value.type="Transfer type is required"),c.value.fromLocation||(T.value.fromLocation="From location is required"),c.value.toLocation||(T.value.toLocation="To location is required"),c.value.fromLocation===c.value.toLocation&&(T.value.toLocation="From and to locations must be different"),!c.value.items||c.value.items.length===0)T.value.items="At least one item is required";else{const t=[];c.value.items.forEach((e,a)=>{e.partId||t.push(`Item ${a+1}: Part is required`),(!e.requestedQuantity||e.requestedQuantity<=0)&&t.push(`Item ${a+1}: Valid quantity is required`)}),t.length>0&&(T.value.items=t.join(", "))}return Object.keys(T.value).length===0},kt=()=>({type:c.value.type,transferNumber:c.value.transferNumber,fromLocation:c.value.fromLocation,toLocation:c.value.toLocation,priority:c.value.priority,expectedDate:c.value.expectedDate,notes:c.value.notes,items:c.value.items.map(t=>({partId:parseInt(t.partId),requestedQuantity:parseInt(t.requestedQuantity),unitCost:parseFloat(t.unitCost)||0}))}),xt=()=>{c.value.items.push({partId:"",requestedQuantity:"",unitCost:""}),S()},Ct=t=>{c.value.items.splice(t,1),S()},wt=t=>{F.value=t,S()},Vt=t=>{S();{const e=ee.findIndex(a=>a.key===F.value);e{he(),Z.value=!1},It=()=>{fe(),Z.value=!1,Pe()},S=()=>{ke()},Ae=()=>{const t=b.query.edit,e=b.query.create==="true";t?setTimeout(()=>{const a=s.value.find(m=>m.id===parseInt(t));a&&Ne(a),w.replace({path:"/inventory/transfers"})},500):e&&setTimeout(()=>{Ee(),w.replace({path:"/inventory/transfers"})},500)};return Et(async()=>{await f.loadInventoryTransfers(),Ae()}),St(()=>b.query,Ae),(t,e)=>(h(),K(Mt,null,{header:i(()=>[u(Rt,{title:"Inventory Transfers",description:"Manage inventory transfers between locations and track their status",breadcrumbs:[{text:"Inventory",to:"/inventory"},{text:"Transfers",to:null}]},{actions:i(()=>[u(o(k),{variant:"outline",size:"sm",onClick:Tt},{default:i(()=>e[28]||(e[28]=[r("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1),g(" Export ",-1)])),_:1,__:[28]}),u(o(k),{variant:"outline",size:"sm",onClick:te},{default:i(()=>e[29]||(e[29]=[r("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),g(" Refresh ",-1)])),_:1,__:[29]}),u(o(k),{variant:"primary",size:"sm",onClick:Ee},{default:i(()=>e[30]||(e[30]=[r("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),g(" Create Transfer ",-1)])),_:1,__:[30]})]),stats:i(()=>[u(o(qt),{stats:Re.value},null,8,["stats"])]),tabs:i(()=>[u(o(Me),{modelValue:D.value,"onUpdate:modelValue":e[0]||(e[0]=a=>D.value=a),tabs:qe.value,onTabChange:st},null,8,["modelValue","tabs"])]),_:1})]),default:i(()=>[r("div",jt,[r("div",Qt,[u(o(H),{modelValue:V.value.search,"onUpdate:modelValue":e[1]||(e[1]=a=>V.value.search=a),placeholder:"Search transfers...",onInput:o(rt)},{prepend:i(()=>e[31]||(e[31]=[r("svg",{class:"w-4 h-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1)])),_:1},8,["modelValue","onInput"]),u(o(W),{modelValue:V.value.fromLocation,"onUpdate:modelValue":[e[2]||(e[2]=a=>V.value.fromLocation=a),ge],placeholder:"Filter by From Location",options:we.value},null,8,["modelValue","options"]),u(o(W),{modelValue:V.value.toLocation,"onUpdate:modelValue":[e[3]||(e[3]=a=>V.value.toLocation=a),ge],placeholder:"Filter by To Location",options:we.value},null,8,["modelValue","options"]),u(o(W),{modelValue:V.value.type,"onUpdate:modelValue":[e[4]||(e[4]=a=>V.value.type=a),ge],placeholder:"Filter by Transfer Type",options:je},null,8,["modelValue"])]),r("div",Ht,[u(o(Ot),{columns:ze,data:ye.value,loading:Ce.value,pagination:Oe.value,"empty-message":"No inventory transfers found",onSortChange:lt,onPageChange:ot,onRowClick:nt},{"column-transferNumber":i(({row:a})=>[r("div",$t,[e[32]||(e[32]=r("div",{class:"w-8 h-8 bg-blue-100 rounded-lg flex items-center justify-center"},[r("svg",{class:"w-4 h-4 text-blue-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M8 7h12m0 0l-4-4m4 4l-4 4m0 6H4m0 0l4 4m-4-4l4-4"})])],-1)),r("div",null,[r("h4",Gt,x(a.transferNumber),1),r("p",Kt,x(Je(a.type)),1)])])]),"column-locations":i(({row:a})=>[r("div",Wt,[r("div",Yt,"From: "+x(Le(a.fromLocation)),1),r("div",Jt,"To: "+x(Le(a.toLocation)),1)])]),"column-itemsCount":i(({row:a})=>[r("div",Xt,x((a.items||[]).length)+" item"+x((a.items||[]).length!==1?"s":""),1)]),"column-totalValue":i(({row:a})=>[r("div",Zt,x(Ie(o(Ye)(a))),1)]),"column-status":i(({row:a})=>[u(o(Bt),{variant:tt(a.status),size:"sm"},{default:i(()=>[g(x(Xe(a.status)),1)]),_:2},1032,["variant"])]),"column-requestedBy":i(({row:a})=>[r("div",ea,x(Ze(a.requestedBy)),1)]),"column-createdAt":i(({row:a})=>[r("div",ta,x(et(a.createdAt)),1)]),"column-actions":i(({row:a})=>[r("div",aa,[u(o(k),{variant:"ghost",size:"xs",onClick:ae(m=>Se(a),["stop"]),title:"View Details"},{default:i(()=>e[33]||(e[33]=[r("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"}),r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"})],-1)])),_:2,__:[33]},1032,["onClick"]),o($e)(a)?(h(),K(o(k),{key:0,variant:"ghost",size:"xs",onClick:ae(m=>ut(a),["stop"]),title:"Approve Transfer",class:"text-green-600 hover:text-green-700"},{default:i(()=>e[34]||(e[34]=[r("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)])),_:2,__:[34]},1032,["onClick"])):R("",!0),o(Ge)(a)?(h(),K(o(k),{key:1,variant:"ghost",size:"xs",onClick:ae(m=>dt(a),["stop"]),title:"Ship Transfer",class:"text-blue-600 hover:text-blue-700"},{default:i(()=>e[35]||(e[35]=[r("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M8 7h12m0 0l-4-4m4 4l-4 4m0 6H4m0 0l4 4m-4-4l4-4"})],-1)])),_:2,__:[35]},1032,["onClick"])):R("",!0),o(Ke)(a)?(h(),K(o(k),{key:2,variant:"ghost",size:"xs",onClick:ae(m=>ct(a),["stop"]),title:"Receive Transfer",class:"text-purple-600 hover:text-purple-700"},{default:i(()=>e[36]||(e[36]=[r("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4"})],-1)])),_:2,__:[36]},1032,["onClick"])):R("",!0),o(We)(a)?(h(),K(o(k),{key:3,variant:"ghost",size:"xs",onClick:ae(m=>vt(a),["stop"]),title:"Cancel Transfer",class:"text-red-600 hover:text-red-700"},{default:i(()=>e[37]||(e[37]=[r("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})],-1)])),_:2,__:[37]},1032,["onClick"])):R("",!0),u(o(k),{variant:"ghost",size:"xs",onClick:ae(m=>Ne(a),["stop"]),title:"Edit Transfer"},{default:i(()=>e[38]||(e[38]=[r("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1)])),_:2,__:[38]},1032,["onClick"])])]),_:1},8,["data","loading","pagination"])]),u(o(ce),{modelValue:$.value,"onUpdate:modelValue":e[14]||(e[14]=a=>$.value=a),title:Q.value?"Edit Inventory Transfer":"Create Inventory Transfer",size:"xl",onCancel:Te},{footer:i(()=>[r("div",pa,[r("div",ya,[o(ne)||o(ie)?(h(),E("div",ga,[o(ne)?(h(),E("svg",Ta,e[43]||(e[43]=[r("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z","clip-rule":"evenodd"},null,-1)]))):(h(),E("svg",ha,e[44]||(e[44]=[r("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z","clip-rule":"evenodd"},null,-1)]))),o(ne)?(h(),E("span",ba,"Auto-saving...")):o(ie)?(h(),E("span",ka,"Last saved "+x(Be.value),1)):R("",!0)])):R("",!0)]),r("div",xa,[u(o(k),{variant:"secondary",onClick:Te},{default:i(()=>e[45]||(e[45]=[g(" Cancel ",-1)])),_:1,__:[45]}),Ue.value?(h(),K(o(k),{key:1,variant:"primary",loading:re.value,onClick:ft},{default:i(()=>[g(x(Q.value?"Update Transfer":"Create Transfer"),1)]),_:1},8,["loading"])):(h(),K(o(k),{key:0,variant:"primary",onClick:e[13]||(e[13]=a=>Vt("next"))},{default:i(()=>e[46]||(e[46]=[g(" Next ",-1)])),_:1,__:[46]}))])])]),default:i(()=>[u(o(Ut),{visible:Z.value,"saved-data-info":pe.value,onRestore:Lt,onDismiss:It},null,8,["visible","saved-data-info"]),r("div",ra,[u(o(Me),{modelValue:F.value,"onUpdate:modelValue":e[5]||(e[5]=a=>F.value=a),tabs:ee,onTabChange:wt},null,8,["modelValue"])]),F.value==="details"?(h(),E("div",sa,[r("div",la,[u(o(W),{modelValue:c.value.type,"onUpdate:modelValue":e[6]||(e[6]=a=>c.value.type=a),label:"Transfer Type",placeholder:"Select transfer type",options:Qe,required:"",error:T.value.type,onChange:S},null,8,["modelValue","error"]),u(o(H),{modelValue:c.value.transferNumber,"onUpdate:modelValue":e[7]||(e[7]=a=>c.value.transferNumber=a),label:"Transfer Number",placeholder:"Auto-generated",error:T.value.transferNumber,disabled:Q.value,onInput:S},null,8,["modelValue","error","disabled"]),u(o(W),{modelValue:c.value.fromLocation,"onUpdate:modelValue":e[8]||(e[8]=a=>c.value.fromLocation=a),label:"From Location",placeholder:"Select source location",options:Ve.value,required:"",error:T.value.fromLocation,onChange:S},null,8,["modelValue","options","error"]),u(o(W),{modelValue:c.value.toLocation,"onUpdate:modelValue":e[9]||(e[9]=a=>c.value.toLocation=a),label:"To Location",placeholder:"Select destination location",options:Ve.value,required:"",error:T.value.toLocation,onChange:S},null,8,["modelValue","options","error"]),u(o(H),{modelValue:c.value.priority,"onUpdate:modelValue":e[10]||(e[10]=a=>c.value.priority=a),label:"Priority",placeholder:"Select priority",error:T.value.priority,onInput:S},null,8,["modelValue","error"]),u(o(H),{modelValue:c.value.expectedDate,"onUpdate:modelValue":e[11]||(e[11]=a=>c.value.expectedDate=a),label:"Expected Date",type:"date",error:T.value.expectedDate,onInput:S},null,8,["modelValue","error"])]),r("div",null,[e[39]||(e[39]=r("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Notes",-1)),ue(r("textarea",{"onUpdate:modelValue":e[12]||(e[12]=a=>c.value.notes=a),class:_e(["w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",{"border-red-300":T.value.notes}]),placeholder:"Additional notes or instructions...",rows:"3",onInput:S},null,34),[[de,c.value.notes]]),T.value.notes?(h(),E("p",oa,x(T.value.notes),1)):R("",!0)])])):R("",!0),F.value==="items"?(h(),E("div",na,[r("div",ia,[e[41]||(e[41]=r("h3",{class:"text-lg font-medium text-gray-900"},"Transfer Items",-1)),u(o(k),{variant:"outline",size:"sm",onClick:xt},{default:i(()=>e[40]||(e[40]=[r("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),g(" Add Item ",-1)])),_:1,__:[40]})]),c.value.items.length===0?(h(),E("div",ua,' No items added yet. Click "Add Item" to start. ')):(h(),E("div",da,[(h(!0),E(De,null,Fe(c.value.items,(a,m)=>(h(),E("div",{key:m,class:"border border-gray-200 rounded-lg p-4"},[r("div",ca,[r("h4",va,"Item "+x(m+1),1),u(o(k),{variant:"ghost",size:"xs",onClick:M=>Ct(m),class:"text-red-600 hover:text-red-700"},{default:i(()=>e[42]||(e[42]=[r("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1)])),_:2,__:[42]},1032,["onClick"])]),r("div",fa,[u(o(W),{modelValue:a.partId,"onUpdate:modelValue":M=>a.partId=M,label:"Part",placeholder:"Select part",options:He.value,required:"",onChange:S},null,8,["modelValue","onUpdate:modelValue","options"]),u(o(H),{modelValue:a.requestedQuantity,"onUpdate:modelValue":M=>a.requestedQuantity=M,label:"Requested Quantity",placeholder:"0",type:"number",required:"",onInput:S},null,8,["modelValue","onUpdate:modelValue"]),u(o(H),{modelValue:a.unitCost,"onUpdate:modelValue":M=>a.unitCost=M,label:"Unit Cost",placeholder:"0.00",type:"number",step:"0.01",onInput:S},null,8,["modelValue","onUpdate:modelValue"])])]))),128))])),T.value.items?(h(),E("p",ma,x(T.value.items),1)):R("",!0)])):R("",!0)]),_:1},8,["modelValue","title"]),u(o(ce),{modelValue:U.value,"onUpdate:modelValue":e[17]||(e[17]=a=>U.value=a),title:"Approve Transfer",size:"md"},{footer:i(()=>[r("div",La,[u(o(k),{variant:"secondary",onClick:e[16]||(e[16]=a=>U.value=!1)},{default:i(()=>e[50]||(e[50]=[g(" Cancel ",-1)])),_:1,__:[50]}),u(o(k),{variant:"primary",loading:se.value,onClick:mt},{default:i(()=>e[51]||(e[51]=[g(" Approve Transfer ",-1)])),_:1,__:[51]},8,["loading"])])]),default:i(()=>{var a;return[r("div",Ca,[r("p",wa,[e[47]||(e[47]=g(" Approve transfer ",-1)),r("strong",Va,"'"+x((a=I.value)==null?void 0:a.transferNumber)+"'",1),e[48]||(e[48]=g("? ",-1))]),r("div",null,[e[49]||(e[49]=r("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Approval Notes (Optional)",-1)),ue(r("textarea",{"onUpdate:modelValue":e[15]||(e[15]=m=>X.value.notes=m),class:"w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",placeholder:"Add any approval notes...",rows:"3"},null,512),[[de,X.value.notes]])])])]}),_:1},8,["modelValue"]),u(o(ce),{modelValue:z.value,"onUpdate:modelValue":e[21]||(e[21]=a=>z.value=a),title:"Ship Transfer",size:"md"},{footer:i(()=>[r("div",Na,[u(o(k),{variant:"secondary",onClick:e[20]||(e[20]=a=>z.value=!1)},{default:i(()=>e[55]||(e[55]=[g(" Cancel ",-1)])),_:1,__:[55]}),u(o(k),{variant:"primary",loading:J.value,onClick:pt},{default:i(()=>e[56]||(e[56]=[g(" Ship Transfer ",-1)])),_:1,__:[56]},8,["loading"])])]),default:i(()=>{var a;return[r("div",Ia,[r("p",Ea,[e[52]||(e[52]=g(" Ship transfer ",-1)),r("strong",Sa,"'"+x((a=I.value)==null?void 0:a.transferNumber)+"'",1),e[53]||(e[53]=g(". ",-1))]),r("div",null,[u(o(H),{modelValue:q.value.trackingNumber,"onUpdate:modelValue":e[18]||(e[18]=m=>q.value.trackingNumber=m),label:"Tracking Number (Optional)",placeholder:"Enter tracking number"},null,8,["modelValue"])]),r("div",null,[e[54]||(e[54]=r("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Shipment Notes (Optional)",-1)),ue(r("textarea",{"onUpdate:modelValue":e[19]||(e[19]=m=>q.value.notes=m),class:"w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",placeholder:"Add any shipment notes...",rows:"3"},null,512),[[de,q.value.notes]])])])]}),_:1},8,["modelValue"]),u(o(ce),{modelValue:G.value,"onUpdate:modelValue":e[24]||(e[24]=a=>G.value=a),title:"Receive Transfer",size:"lg"},{footer:i(()=>[r("div",qa,[u(o(k),{variant:"secondary",onClick:e[23]||(e[23]=a=>G.value=!1)},{default:i(()=>e[63]||(e[63]=[g(" Cancel ",-1)])),_:1,__:[63]}),u(o(k),{variant:"primary",loading:le.value,onClick:yt},{default:i(()=>e[64]||(e[64]=[g(" Receive Transfer ",-1)])),_:1,__:[64]},8,["loading"])])]),default:i(()=>{var a;return[r("div",Pa,[r("p",Aa,[e[57]||(e[57]=g(" Receive transfer ",-1)),r("strong",_a,"'"+x((a=I.value)==null?void 0:a.transferNumber)+"'",1),e[58]||(e[58]=g(". ",-1))]),r("div",Da,[e[61]||(e[61]=r("h4",{class:"font-medium text-gray-900"},"Received Items",-1)),(h(!0),E(De,null,Fe(B.value.items,(m,M)=>(h(),E("div",{key:M,class:"border border-gray-200 rounded-lg p-4"},[r("div",Fa,[r("div",null,[e[59]||(e[59]=r("label",{class:"block text-sm font-medium text-gray-700"},"Part",-1)),r("p",Ma,x(at(m.partId)),1)]),r("div",null,[e[60]||(e[60]=r("label",{class:"block text-sm font-medium text-gray-700"},"Requested",-1)),r("p",Ra,x(m.requestedQuantity),1)]),u(o(H),{modelValue:m.receivedQuantity,"onUpdate:modelValue":ve=>m.receivedQuantity=ve,label:"Received Quantity",placeholder:"0",type:"number",required:""},null,8,["modelValue","onUpdate:modelValue"])])]))),128))]),r("div",null,[e[62]||(e[62]=r("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Receipt Notes (Optional)",-1)),ue(r("textarea",{"onUpdate:modelValue":e[22]||(e[22]=m=>B.value.notes=m),class:"w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",placeholder:"Add any receipt notes...",rows:"3"},null,512),[[de,B.value.notes]])])])]}),_:1},8,["modelValue"]),u(o(ce),{modelValue:j.value,"onUpdate:modelValue":e[27]||(e[27]=a=>j.value=a),title:"Cancel Transfer",size:"md"},{footer:i(()=>[r("div",ja,[u(o(k),{variant:"secondary",onClick:e[26]||(e[26]=a=>j.value=!1)},{default:i(()=>e[68]||(e[68]=[g(" Keep Transfer ",-1)])),_:1,__:[68]}),u(o(k),{variant:"danger",loading:oe.value,onClick:gt},{default:i(()=>e[69]||(e[69]=[g(" Cancel Transfer ",-1)])),_:1,__:[69]},8,["loading"])])]),default:i(()=>{var a;return[r("div",Oa,[r("p",Ba,[e[65]||(e[65]=g(" Are you sure you want to cancel transfer ",-1)),r("strong",Ua,"'"+x((a=I.value)==null?void 0:a.transferNumber)+"'",1),e[66]||(e[66]=g("? ",-1))]),r("div",null,[e[67]||(e[67]=r("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Cancellation Reason (Required)",-1)),ue(r("textarea",{"onUpdate:modelValue":e[25]||(e[25]=m=>N.value.reason=m),class:_e(["w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",{"border-red-300":N.value.error}]),placeholder:"Explain why this transfer is being cancelled...",rows:"3",required:""},null,2),[[de,N.value.reason]]),N.value.error?(h(),E("p",za,x(N.value.error),1)):R("",!0)])])]}),_:1},8,["modelValue"])])]),_:1}))}};export{or as default}; diff --git a/frontend/dist/assets/InventoryView-Dvb43sMl.js b/frontend/dist/assets/InventoryView-Dvb43sMl.js deleted file mode 100644 index 20df4cac..00000000 --- a/frontend/dist/assets/InventoryView-Dvb43sMl.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as d,c as p,o as v,i as g,w as o,v as h,g as k,b as t,d as n,k as r,e as s,F as c}from"./index-BUdRbiwj.js";import{u as w}from"./parts-B3aeW8xP.js";import{F as x,a as b}from"./FPPageHeader-CTG2L28r.js";import{F as f}from"./FPStats-BGfZcDZc.js";import"./FPCard-qHzcEQAE.js";const y={class:"p-6"},M={class:"text-center py-12"},P={__name:"InventoryView",setup(B){const u=h(),i=w(),m=p(()=>{const a=i.inventoryStats;return a?[{name:"Total Parts",value:a.totalParts,subtitle:"Active parts in inventory",icon:{template:''},iconBg:"bg-blue-100",iconColor:"text-blue-600",change:0},{name:"Low Stock",value:a.lowStockParts,subtitle:"Parts below minimum",icon:{template:''},iconBg:"bg-red-100",iconColor:"text-red-600",change:0},{name:"Total Value",value:`$${(a.totalValue/1e3).toFixed(1)}K`,subtitle:"Inventory value",icon:{template:''},iconBg:"bg-green-100",iconColor:"text-green-600",change:0},{name:"Suppliers",value:a.totalSuppliers,subtitle:"Active suppliers",icon:{template:''},iconBg:"bg-yellow-100",iconColor:"text-yellow-600",change:0}]:[]}),l=()=>{u.push("/inventory/parts")};return v(async()=>{await i.initializeParts()}),(a,e)=>(k(),g(x,null,{header:o(()=>[n(b,{title:"Inventory Management",description:"Manage parts, supplies, and spare equipment inventory",breadcrumbs:[{text:"Inventory",to:null}]},{actions:o(()=>[n(s(c),{variant:"primary",size:"sm",onClick:l},{default:o(()=>e[0]||(e[0]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"})],-1),r(" Manage Parts ",-1)])),_:1,__:[0]})]),stats:o(()=>[n(s(f),{stats:m.value},null,8,["stats"])]),_:1})]),default:o(()=>[t("div",y,[t("div",M,[e[2]||(e[2]=t("div",{class:"mb-6"},[t("svg",{class:"w-16 h-16 mx-auto text-blue-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"})])],-1)),e[3]||(e[3]=t("h3",{class:"text-lg font-medium text-gray-900 mb-2"},"Enhanced Parts Management",-1)),e[4]||(e[4]=t("p",{class:"text-gray-600 mb-8"},[r(" The inventory system has been upgraded with enhanced parts management capabilities."),t("br"),r(' Use the "Manage Parts" button above to access the new parts management interface. ')],-1)),n(s(c),{variant:"primary",onClick:l},{default:o(()=>e[1]||(e[1]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"})],-1),r(" Go to Parts Management ",-1)])),_:1,__:[1]})])])]),_:1}))}},j=d(P,[["__scopeId","data-v-812ef749"]]);export{j as default}; diff --git a/frontend/dist/assets/InventoryView-FW6Kr3o1.js b/frontend/dist/assets/InventoryView-FW6Kr3o1.js new file mode 100644 index 00000000..e256b9d8 --- /dev/null +++ b/frontend/dist/assets/InventoryView-FW6Kr3o1.js @@ -0,0 +1 @@ +import{_ as p,c as g,o as k,i as w,w as o,v as h,g as f,b as e,d as s,e as r,F as l,k as a}from"./index-QAlcqU00.js";import{u as b}from"./parts-imZSnlsl.js";import{F as x,a as y}from"./FPPageHeader-CFIwZZgQ.js";import{F as M}from"./FPStats-DOY0PQQF.js";import"./FPCard-AB6NRXg5.js";const C={class:"p-6"},B={class:"grid grid-cols-1 md:grid-cols-3 gap-6 mb-8"},j={class:"bg-white rounded-lg shadow-sm border border-gray-200 p-6 hover:shadow-md transition-shadow"},P={class:"bg-white rounded-lg shadow-sm border border-gray-200 p-6 hover:shadow-md transition-shadow"},S={class:"bg-white rounded-lg shadow-sm border border-gray-200 p-6 hover:shadow-md transition-shadow"},z={__name:"InventoryView",setup(_){const i=h(),d=b(),v=g(()=>{const n=d.inventoryStats;return n?[{name:"Total Parts",value:n.totalParts,subtitle:"Active parts in inventory",icon:{template:''},iconBg:"bg-blue-100",iconColor:"text-blue-600",change:0},{name:"Low Stock",value:n.lowStockParts,subtitle:"Parts below minimum",icon:{template:''},iconBg:"bg-red-100",iconColor:"text-red-600",change:0},{name:"Total Value",value:`$${(n.totalValue/1e3).toFixed(1)}K`,subtitle:"Inventory value",icon:{template:''},iconBg:"bg-green-100",iconColor:"text-green-600",change:0},{name:"Suppliers",value:n.totalSuppliers,subtitle:"Active suppliers",icon:{template:''},iconBg:"bg-yellow-100",iconColor:"text-yellow-600",change:0}]:[]}),c=()=>{i.push("/inventory/parts")},u=()=>{i.push("/inventory/stock-alerts")},m=()=>{i.push("/inventory/transfers")};return k(async()=>{await d.initializeParts()}),(n,t)=>(f(),w(x,null,{header:o(()=>[s(y,{title:"Inventory Management",description:"Manage parts, supplies, and spare equipment inventory",breadcrumbs:[{text:"Inventory",to:null}]},{actions:o(()=>[s(r(l),{variant:"outline",size:"sm",onClick:u},{default:o(()=>t[0]||(t[0]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.728-.833-2.498 0L4.316 16.5c-.77.833.192 2.5 1.732 2.5z"})],-1),a(" Stock Alerts ",-1)])),_:1,__:[0]}),s(r(l),{variant:"outline",size:"sm",onClick:m},{default:o(()=>t[1]||(t[1]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M8 7h12m0 0l-4-4m4 4l-4 4m0 6H4m0 0l4 4m-4-4l4-4"})],-1),a(" Transfers ",-1)])),_:1,__:[1]}),s(r(l),{variant:"primary",size:"sm",onClick:c},{default:o(()=>t[2]||(t[2]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"})],-1),a(" Manage Parts ",-1)])),_:1,__:[2]})]),stats:o(()=>[s(r(M),{stats:v.value},null,8,["stats"])]),_:1})]),default:o(()=>[e("div",C,[e("div",B,[e("div",j,[t[4]||(t[4]=e("div",{class:"flex items-center justify-between mb-4"},[e("div",{class:"w-12 h-12 bg-blue-100 rounded-lg flex items-center justify-center"},[e("svg",{class:"w-6 h-6 text-blue-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"})])])],-1)),t[5]||(t[5]=e("h3",{class:"text-lg font-semibold text-gray-900 mb-2"},"Parts Management",-1)),t[6]||(t[6]=e("p",{class:"text-gray-600 mb-4"},"Manage parts catalog, stock levels, and inventory tracking",-1)),s(r(l),{variant:"primary",class:"w-full",onClick:c},{default:o(()=>t[3]||(t[3]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M13 7l5 5m0 0l-5 5m5-5H6"})],-1),a(" Manage Parts ",-1)])),_:1,__:[3]})]),e("div",P,[t[8]||(t[8]=e("div",{class:"flex items-center justify-between mb-4"},[e("div",{class:"w-12 h-12 bg-red-100 rounded-lg flex items-center justify-center"},[e("svg",{class:"w-6 h-6 text-red-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.728-.833-2.498 0L4.316 16.5c-.77.833.192 2.5 1.732 2.5z"})])])],-1)),t[9]||(t[9]=e("h3",{class:"text-lg font-semibold text-gray-900 mb-2"},"Stock Alerts",-1)),t[10]||(t[10]=e("p",{class:"text-gray-600 mb-4"},"Monitor low stock, out of stock, and critical inventory alerts",-1)),s(r(l),{variant:"primary",class:"w-full",onClick:u},{default:o(()=>t[7]||(t[7]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M13 7l5 5m0 0l-5 5m5-5H6"})],-1),a(" View Alerts ",-1)])),_:1,__:[7]})]),e("div",S,[t[12]||(t[12]=e("div",{class:"flex items-center justify-between mb-4"},[e("div",{class:"w-12 h-12 bg-green-100 rounded-lg flex items-center justify-center"},[e("svg",{class:"w-6 h-6 text-green-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M8 7h12m0 0l-4-4m4 4l-4 4m0 6H4m0 0l4 4m-4-4l4-4"})])])],-1)),t[13]||(t[13]=e("h3",{class:"text-lg font-semibold text-gray-900 mb-2"},"Inventory Transfers",-1)),t[14]||(t[14]=e("p",{class:"text-gray-600 mb-4"},"Manage transfers between locations and track shipments",-1)),s(r(l),{variant:"primary",class:"w-full",onClick:m},{default:o(()=>t[11]||(t[11]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M13 7l5 5m0 0l-5 5m5-5H6"})],-1),a(" Manage Transfers ",-1)])),_:1,__:[11]})])]),t[15]||(t[15]=e("div",{class:"bg-blue-50 rounded-lg p-6"},[e("div",{class:"flex items-start"},[e("div",{class:"flex-shrink-0"},[e("svg",{class:"w-6 h-6 text-blue-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})])]),e("div",{class:"ml-3"},[e("h3",{class:"text-sm font-medium text-blue-900"},"Enhanced Inventory Management"),e("div",{class:"mt-2 text-sm text-blue-700"},[e("p",null,"The inventory system now includes comprehensive stock management features:"),e("ul",{class:"mt-2 list-disc list-inside space-y-1"},[e("li",null,"Real-time stock alerts with severity levels"),e("li",null,"Inter-location inventory transfers"),e("li",null,"Automated reorder point calculations"),e("li",null,"Comprehensive inventory analytics")])])])])],-1))])]),_:1}))}},T=p(z,[["__scopeId","data-v-e5001f6f"]]);export{T as default}; diff --git a/frontend/dist/assets/LocationDetailView-CDUR53_5.js b/frontend/dist/assets/LocationDetailView-C5-PbNmX.js similarity index 92% rename from frontend/dist/assets/LocationDetailView-CDUR53_5.js rename to frontend/dist/assets/LocationDetailView-C5-PbNmX.js index 016406fc..483cd608 100644 --- a/frontend/dist/assets/LocationDetailView-CDUR53_5.js +++ b/frontend/dist/assets/LocationDetailView-C5-PbNmX.js @@ -1 +1 @@ -import{r as x,c as q,s as J,o as K,m as X,i as Y,w as l,l as Z,v as tt,f as et,g as i,b as t,a as r,j as v,d,e as c,k as u,t as a,af as h,aQ as k,F as y,b9 as st}from"./index-BUdRbiwj.js";import{a as ot}from"./locations-IQR_pcEX.js";import{F as nt,a as at}from"./FPPageHeader-CTG2L28r.js";import{F as g}from"./FPBadge-BKY5dPnL.js";const it={class:"px-6 py-8"},rt={key:0,class:"flex items-center justify-center py-12"},lt={key:1,class:"space-y-6"},dt={class:"bg-white shadow rounded-lg p-6"},ut={class:"flex items-start space-x-4"},ct={class:"flex items-center space-x-4 mb-2"},vt={class:"text-sm text-gray-500"},mt={class:"text-gray-600"},gt={class:"grid grid-cols-1 lg:grid-cols-3 gap-6"},pt={class:"lg:col-span-2 space-y-6"},xt={class:"bg-white shadow rounded-lg p-6"},yt={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},ft={class:"mt-1 text-sm text-gray-900"},ht={class:"mt-1"},kt={key:0},wt={class:"mt-1 text-sm text-gray-900"},_t={key:1},bt={class:"mt-1 text-sm text-gray-900"},Ct={key:0,class:"bg-white shadow rounded-lg p-6"},Lt={key:0,class:"mb-4"},Mt={class:"flex items-center space-x-2"},jt={class:"font-medium"},Bt={key:1},At={class:"space-y-2"},Ht={class:"flex items-center space-x-3"},zt={key:0,class:"text-sm text-gray-500"},Vt={class:"bg-white shadow rounded-lg p-6"},Ft={class:"flex items-center justify-between mb-4"},Nt={key:0,class:"text-center py-8 text-gray-500"},St={key:1,class:"space-y-3"},$t=["onClick"],Wt={class:"flex items-center space-x-3"},Pt={class:"font-medium text-gray-900"},Dt={class:"text-sm text-gray-500"},It={class:"flex items-center space-x-3"},Ut={class:"bg-white shadow rounded-lg p-6"},Ot={class:"flex items-center justify-between mb-4"},Tt={key:0,class:"text-center py-8 text-gray-500"},Rt={key:1,class:"space-y-3"},Gt=["onClick"],Et={class:"flex items-center space-x-3"},Qt={class:"font-medium text-gray-900"},qt={class:"text-sm text-gray-500"},Jt={class:"flex items-center space-x-3"},Kt={class:"space-y-6"},Xt={class:"bg-white shadow rounded-lg p-6"},Yt={class:"space-y-4"},Zt={class:"flex items-center justify-between"},te={class:"font-medium"},ee={class:"flex items-center justify-between"},se={class:"font-medium"},oe={class:"flex items-center justify-between"},ne={class:"font-medium"},ae={key:0,class:"flex items-center justify-between"},ie={class:"font-medium"},re={key:0,class:"bg-white shadow rounded-lg p-6"},le={class:"space-y-2"},de={class:"text-sm font-medium"},ue={key:1,class:"bg-white shadow rounded-lg p-6"},ce={class:"mt-2 text-xs text-gray-500"},ve={key:2,class:"text-center py-12"},fe={__name:"LocationDetailView",setup(me){const F=J(),f=tt(),M=ot(),{showNotification:N}=Z(),s=x(null),w=x(!1),_=x(null),p=x([]),b=x([]),C=x([]),m=q(()=>F.params.id),j=async()=>{if(m.value){w.value=!0,_.value=null;try{s.value=await M.getLocationById(m.value);try{p.value=await M.getChildLocations(m.value)}catch{p.value=[]}}catch(o){_.value=o,N("error","Failed to load location details")}finally{w.value=!1}}},S=()=>{f.push(`/locations?edit=${m.value}`)},B=()=>{f.push(`/assets?create=true&locationId=${m.value}`)},A=()=>{f.push(`/work-orders?create=true&locationId=${m.value}`)},$=o=>{f.push(`/assets/${o.id}`)},W=o=>{f.push(`/work-orders/${o.id}`)},P=o=>({active:"green",inactive:"red",construction:"yellow",maintenance:"orange"})[o]||"gray",L=o=>({building:"blue",floor:"green",room:"yellow",area:"purple",zone:"pink",equipment_space:"orange"})[o]||"gray",D=o=>({active:"Active",inactive:"Inactive",construction:"Under Construction",maintenance:"Maintenance"})[o]||"Unknown",I=o=>({operational:"green",maintenance:"yellow",retired:"red",down:"red"})[o]||"gray",U=o=>({operational:"Operational",maintenance:"Maintenance",retired:"Retired",down:"Down"})[o]||"Unknown",O=o=>({open:"blue",in_progress:"yellow",on_hold:"orange",complete:"green"})[o]||"gray",T=o=>({open:"Open",in_progress:"In Progress",on_hold:"On Hold",complete:"Complete"})[o]||"Unknown",R=o=>({none:"gray",low:"green",medium:"yellow",high:"red"})[o]||"gray",G=o=>({none:"None",low:"Low",medium:"Medium",high:"High"})[o]||"Unknown",E=o=>o?new Date(o).toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"}):"N/A";return K(()=>{j()}),X(m,()=>{j()}),(o,e)=>{const H=et("router-link");return i(),Y(nt,null,{header:l(()=>[d(at,{title:s.value?s.value.name:"Location Details",description:s.value?s.value.description||"Location information and details":"Loading location details...",breadcrumbs:[{text:"Locations",to:"/locations"},{text:s.value?s.value.name:"Loading...",to:null}]},st({_:2},[s.value?{name:"actions",fn:l(()=>[d(c(y),{variant:"secondary",size:"sm",onClick:S},{default:l(()=>e[1]||(e[1]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1),u(" Edit Location ",-1)])),_:1,__:[1]}),d(c(y),{variant:"primary",size:"sm",onClick:B},{default:l(()=>e[2]||(e[2]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 6v6m0 0v6m0-6h6m-6 0H6"})],-1),u(" Add Asset ",-1)])),_:1,__:[2]}),d(c(y),{variant:"primary",size:"sm",onClick:A},{default:l(()=>e[3]||(e[3]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 6v6m0 0v6m0-6h6m-6 0H6"})],-1),u(" Create Work Order ",-1)])),_:1,__:[3]})]),key:"0"}:void 0]),1032,["title","description","breadcrumbs"])]),default:l(()=>{var z,V;return[t("div",it,[w.value?(i(),r("div",rt,e[4]||(e[4]=[t("div",{class:"flex items-center space-x-2 text-gray-500"},[t("svg",{class:"w-8 h-8 animate-spin",fill:"none",viewBox:"0 0 24 24"},[t("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"}),t("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]),t("span",null,"Loading location details...")],-1)]))):s.value?(i(),r("div",lt,[t("div",dt,[t("div",ut,[e[5]||(e[5]=t("div",{class:"w-16 h-16 bg-green-100 rounded-lg flex items-center justify-center"},[t("svg",{class:"w-8 h-8 text-green-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z"}),t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 11a3 3 0 11-6 0 3 3 0 016 0z"})])],-1)),t("div",null,[t("div",ct,[d(c(g),{variant:P(s.value.status)},{default:l(()=>[u(a(D(s.value.status)),1)]),_:1},8,["variant"]),d(c(g),{variant:L(s.value.type)},{default:l(()=>[u(a(s.value.type||"General"),1)]),_:1},8,["variant"]),t("span",vt,"Location #"+a(s.value.id),1)]),t("p",mt,a(s.value.description||"No description available"),1)])])]),t("div",gt,[t("div",pt,[t("div",xt,[e[10]||(e[10]=t("h3",{class:"text-lg font-medium text-gray-900 mb-4"},"Basic Information",-1)),t("div",yt,[t("div",null,[e[6]||(e[6]=t("dt",{class:"text-sm font-medium text-gray-500"},"Name",-1)),t("dd",ft,a(s.value.name),1)]),t("div",null,[e[7]||(e[7]=t("dt",{class:"text-sm font-medium text-gray-500"},"Type",-1)),t("dd",ht,[d(c(g),{variant:L(s.value.type)},{default:l(()=>[u(a(s.value.type||"General"),1)]),_:1},8,["variant"])])]),s.value.address?(i(),r("div",kt,[e[8]||(e[8]=t("dt",{class:"text-sm font-medium text-gray-500"},"Address",-1)),t("dd",wt,a(s.value.address),1)])):v("",!0),s.value.latitude&&s.value.longitude?(i(),r("div",_t,[e[9]||(e[9]=t("dt",{class:"text-sm font-medium text-gray-500"},"Coordinates",-1)),t("dd",bt,a(s.value.latitude.toFixed(6))+", "+a(s.value.longitude.toFixed(6)),1)])):v("",!0)])]),s.value.parentLocation||p.value.length>0?(i(),r("div",Ct,[e[15]||(e[15]=t("h3",{class:"text-lg font-medium text-gray-900 mb-4"},"Location Hierarchy",-1)),s.value.parentLocation?(i(),r("div",Lt,[e[12]||(e[12]=t("dt",{class:"text-sm font-medium text-gray-500 mb-2"},"Parent Location",-1)),t("div",Mt,[d(H,{to:`/locations/${s.value.parentLocation.id}`,class:"text-blue-600 hover:text-blue-800 font-medium"},{default:l(()=>[u(a(s.value.parentLocation.name),1)]),_:1},8,["to"]),e[11]||(e[11]=t("span",{class:"text-gray-400"},"→",-1)),t("span",jt,a(s.value.name),1)])])):v("",!0),p.value.length>0?(i(),r("div",Bt,[e[14]||(e[14]=t("dt",{class:"text-sm font-medium text-gray-500 mb-2"},"Child Locations",-1)),t("div",At,[(i(!0),r(h,null,k(p.value,n=>(i(),r("div",{key:n.id,class:"flex items-center justify-between p-3 bg-gray-50 rounded-lg"},[t("div",Ht,[e[13]||(e[13]=t("svg",{class:"w-5 h-5 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z"})],-1)),t("div",null,[d(H,{to:`/locations/${n.id}`,class:"font-medium text-gray-900 hover:text-blue-600"},{default:l(()=>[u(a(n.name),1)]),_:2},1032,["to"]),n.description?(i(),r("p",zt,a(n.description),1)):v("",!0)])]),d(c(g),{variant:L(n.type)},{default:l(()=>[u(a(n.type||"General"),1)]),_:2},1032,["variant"])]))),128))])])):v("",!0)])):v("",!0),t("div",Vt,[t("div",Ft,[e[17]||(e[17]=t("h3",{class:"text-lg font-medium text-gray-900"},"Associated Assets",-1)),d(c(y),{variant:"outline",size:"sm",onClick:B},{default:l(()=>e[16]||(e[16]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),u(" Add Asset ",-1)])),_:1,__:[16]})]),b.value.length===0?(i(),r("div",Nt,e[18]||(e[18]=[t("svg",{class:"w-12 h-12 mx-auto mb-4 text-gray-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M20 13V6a2 2 0 00-2-2H6a2 2 0 00-2 2v7m16 0v5a2 2 0 01-2 2H6a2 2 0 01-2 2v-5m16 0h-2.586a1 1 0 00-.707.293l-2.414 2.414a1 1 0 01-.707.293h-2.172a1 1 0 01-.707-.293l-2.414-2.414A1 1 0 009.586 13H7"})],-1),t("p",null,"No assets found for this location",-1)]))):(i(),r("div",St,[(i(!0),r(h,null,k(b.value,n=>(i(),r("div",{key:n.id,class:"flex items-center justify-between p-3 bg-gray-50 rounded-lg hover:bg-gray-100 cursor-pointer",onClick:Q=>$(n)},[t("div",Wt,[e[19]||(e[19]=t("div",{class:"w-8 h-8 bg-blue-100 rounded-lg flex items-center justify-center"},[t("svg",{class:"w-4 h-4 text-blue-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M20 13V6a2 2 0 00-2-2H6a2 2 0 00-2 2v7m16 0v5a2 2 0 01-2 2H6a2 2 0 01-2 2v-5m16 0h-2.586a1 1 0 00-.707.293l-2.414 2.414a1 1 0 01-.707.293h-2.172a1 1 0 01-.707-.293l-2.414-2.414A1 1 0 009.586 13H7"})])],-1)),t("div",null,[t("h4",Pt,a(n.name),1),t("p",Dt,a(n.description||n.assetNumber),1)])]),t("div",It,[d(c(g),{variant:I(n.status)},{default:l(()=>[u(a(U(n.status)),1)]),_:2},1032,["variant"])])],8,$t))),128))]))]),t("div",Ut,[t("div",Ot,[e[21]||(e[21]=t("h3",{class:"text-lg font-medium text-gray-900"},"Recent Work Orders",-1)),d(c(y),{variant:"outline",size:"sm",onClick:A},{default:l(()=>e[20]||(e[20]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),u(" Create Work Order ",-1)])),_:1,__:[20]})]),C.value.length===0?(i(),r("div",Tt,e[22]||(e[22]=[t("svg",{class:"w-12 h-12 mx-auto mb-4 text-gray-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1),t("p",null,"No work orders found for this location",-1)]))):(i(),r("div",Rt,[(i(!0),r(h,null,k(C.value,n=>(i(),r("div",{key:n.id,class:"flex items-center justify-between p-3 bg-gray-50 rounded-lg hover:bg-gray-100 cursor-pointer",onClick:Q=>W(n)},[t("div",Et,[e[23]||(e[23]=t("div",{class:"w-8 h-8 bg-orange-100 rounded-lg flex items-center justify-center"},[t("svg",{class:"w-4 h-4 text-orange-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})])],-1)),t("div",null,[t("h4",Qt,a(n.title),1),t("p",qt,a(E(n.createdAt)),1)])]),t("div",Jt,[d(c(g),{variant:O(n.status)},{default:l(()=>[u(a(T(n.status)),1)]),_:2},1032,["variant"]),d(c(g),{variant:R(n.priority)},{default:l(()=>[u(a(G(n.priority)),1)]),_:2},1032,["variant"])])],8,Gt))),128))]))])]),t("div",Kt,[t("div",Xt,[e[28]||(e[28]=t("h3",{class:"text-lg font-medium text-gray-900 mb-4"},"Quick Stats",-1)),t("div",Yt,[t("div",Zt,[e[24]||(e[24]=t("span",{class:"text-sm text-gray-600"},"Assets",-1)),t("span",te,a(b.value.length),1)]),t("div",ee,[e[25]||(e[25]=t("span",{class:"text-sm text-gray-600"},"Work Orders",-1)),t("span",se,a(C.value.length),1)]),t("div",oe,[e[26]||(e[26]=t("span",{class:"text-sm text-gray-600"},"Child Locations",-1)),t("span",ne,a(p.value.length),1)]),((z=s.value.workers)==null?void 0:z.length)>0?(i(),r("div",ae,[e[27]||(e[27]=t("span",{class:"text-sm text-gray-600"},"Assigned Workers",-1)),t("span",ie,a(s.value.workers.length),1)])):v("",!0)])]),((V=s.value.teams)==null?void 0:V.length)>0?(i(),r("div",re,[e[30]||(e[30]=t("h3",{class:"text-lg font-medium text-gray-900 mb-4"},"Assigned Teams",-1)),t("div",le,[(i(!0),r(h,null,k(s.value.teams,n=>(i(),r("div",{key:n.id,class:"flex items-center space-x-2 p-2 bg-gray-50 rounded"},[e[29]||(e[29]=t("svg",{class:"w-5 h-5 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"})],-1)),t("span",de,a(n.name),1)]))),128))])])):v("",!0),s.value.latitude&&s.value.longitude?(i(),r("div",ue,[e[31]||(e[31]=t("h3",{class:"text-lg font-medium text-gray-900 mb-4"},"Location Map",-1)),e[32]||(e[32]=t("div",{class:"bg-gray-100 rounded-lg h-32 flex items-center justify-center"},[t("span",{class:"text-gray-500 text-sm"},"Map integration coming soon")],-1)),t("div",ce," Coordinates: "+a(s.value.latitude.toFixed(6))+", "+a(s.value.longitude.toFixed(6)),1)])):v("",!0)])])])):_.value?(i(),r("div",ve,[e[34]||(e[34]=t("svg",{class:"w-16 h-16 mx-auto mb-4 text-red-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.728-.833-2.498 0L4.316 16.5c-.77.833.192 2.5 1.732 2.5z"})],-1)),e[35]||(e[35]=t("h3",{class:"text-lg font-medium text-gray-900 mb-2"},"Location not found",-1)),e[36]||(e[36]=t("p",{class:"text-gray-500 mb-4"},"The location you're looking for doesn't exist or has been removed.",-1)),d(c(y),{variant:"primary",onClick:e[0]||(e[0]=n=>o.$router.push("/locations"))},{default:l(()=>e[33]||(e[33]=[u(" Back to Locations ",-1)])),_:1,__:[33]})])):v("",!0)])]}),_:1})}}};export{fe as default}; +import{r as x,c as Q,s as J,o as K,m as X,i as Y,w as l,l as Z,v as tt,f as et,g as i,b as t,a as r,j as v,d,e as c,k as u,t as a,af as h,aR as k,F as y,b9 as st}from"./index-QAlcqU00.js";import{a as ot}from"./locations-ElrWcwNd.js";import{F as nt,a as at}from"./FPPageHeader-CFIwZZgQ.js";import{F as g}from"./FPBadge-DvOitM1C.js";const it={class:"px-6 py-8"},rt={key:0,class:"flex items-center justify-center py-12"},lt={key:1,class:"space-y-6"},dt={class:"bg-white shadow rounded-lg p-6"},ut={class:"flex items-start space-x-4"},ct={class:"flex items-center space-x-4 mb-2"},vt={class:"text-sm text-gray-500"},mt={class:"text-gray-600"},gt={class:"grid grid-cols-1 lg:grid-cols-3 gap-6"},pt={class:"lg:col-span-2 space-y-6"},xt={class:"bg-white shadow rounded-lg p-6"},yt={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},ft={class:"mt-1 text-sm text-gray-900"},ht={class:"mt-1"},kt={key:0},wt={class:"mt-1 text-sm text-gray-900"},_t={key:1},bt={class:"mt-1 text-sm text-gray-900"},Ct={key:0,class:"bg-white shadow rounded-lg p-6"},Lt={key:0,class:"mb-4"},Mt={class:"flex items-center space-x-2"},jt={class:"font-medium"},Bt={key:1},At={class:"space-y-2"},Ht={class:"flex items-center space-x-3"},zt={key:0,class:"text-sm text-gray-500"},Vt={class:"bg-white shadow rounded-lg p-6"},Ft={class:"flex items-center justify-between mb-4"},Nt={key:0,class:"text-center py-8 text-gray-500"},St={key:1,class:"space-y-3"},$t=["onClick"],Wt={class:"flex items-center space-x-3"},Pt={class:"font-medium text-gray-900"},Dt={class:"text-sm text-gray-500"},It={class:"flex items-center space-x-3"},Ut={class:"bg-white shadow rounded-lg p-6"},Ot={class:"flex items-center justify-between mb-4"},Rt={key:0,class:"text-center py-8 text-gray-500"},Tt={key:1,class:"space-y-3"},Gt=["onClick"],Et={class:"flex items-center space-x-3"},qt={class:"font-medium text-gray-900"},Qt={class:"text-sm text-gray-500"},Jt={class:"flex items-center space-x-3"},Kt={class:"space-y-6"},Xt={class:"bg-white shadow rounded-lg p-6"},Yt={class:"space-y-4"},Zt={class:"flex items-center justify-between"},te={class:"font-medium"},ee={class:"flex items-center justify-between"},se={class:"font-medium"},oe={class:"flex items-center justify-between"},ne={class:"font-medium"},ae={key:0,class:"flex items-center justify-between"},ie={class:"font-medium"},re={key:0,class:"bg-white shadow rounded-lg p-6"},le={class:"space-y-2"},de={class:"text-sm font-medium"},ue={key:1,class:"bg-white shadow rounded-lg p-6"},ce={class:"mt-2 text-xs text-gray-500"},ve={key:2,class:"text-center py-12"},fe={__name:"LocationDetailView",setup(me){const F=J(),f=tt(),M=ot(),{showNotification:N}=Z(),s=x(null),w=x(!1),_=x(null),p=x([]),b=x([]),C=x([]),m=Q(()=>F.params.id),j=async()=>{if(m.value){w.value=!0,_.value=null;try{s.value=await M.getLocationById(m.value);try{p.value=await M.getChildLocations(m.value)}catch{p.value=[]}}catch(o){_.value=o,N("error","Failed to load location details")}finally{w.value=!1}}},S=()=>{f.push(`/locations?edit=${m.value}`)},B=()=>{f.push(`/assets?create=true&locationId=${m.value}`)},A=()=>{f.push(`/work-orders?create=true&locationId=${m.value}`)},$=o=>{f.push(`/assets/${o.id}`)},W=o=>{f.push(`/work-orders/${o.id}`)},P=o=>({active:"green",inactive:"red",construction:"yellow",maintenance:"orange"})[o]||"gray",L=o=>({building:"blue",floor:"green",room:"yellow",area:"purple",zone:"pink",equipment_space:"orange"})[o]||"gray",D=o=>({active:"Active",inactive:"Inactive",construction:"Under Construction",maintenance:"Maintenance"})[o]||"Unknown",I=o=>({operational:"green",maintenance:"yellow",retired:"red",down:"red"})[o]||"gray",U=o=>({operational:"Operational",maintenance:"Maintenance",retired:"Retired",down:"Down"})[o]||"Unknown",O=o=>({open:"blue",in_progress:"yellow",on_hold:"orange",complete:"green"})[o]||"gray",R=o=>({open:"Open",in_progress:"In Progress",on_hold:"On Hold",complete:"Complete"})[o]||"Unknown",T=o=>({none:"gray",low:"green",medium:"yellow",high:"red"})[o]||"gray",G=o=>({none:"None",low:"Low",medium:"Medium",high:"High"})[o]||"Unknown",E=o=>o?new Date(o).toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"}):"N/A";return K(()=>{j()}),X(m,()=>{j()}),(o,e)=>{const H=et("router-link");return i(),Y(nt,null,{header:l(()=>[d(at,{title:s.value?s.value.name:"Location Details",description:s.value?s.value.description||"Location information and details":"Loading location details...",breadcrumbs:[{text:"Locations",to:"/locations"},{text:s.value?s.value.name:"Loading...",to:null}]},st({_:2},[s.value?{name:"actions",fn:l(()=>[d(c(y),{variant:"secondary",size:"sm",onClick:S},{default:l(()=>e[1]||(e[1]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1),u(" Edit Location ",-1)])),_:1,__:[1]}),d(c(y),{variant:"primary",size:"sm",onClick:B},{default:l(()=>e[2]||(e[2]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 6v6m0 0v6m0-6h6m-6 0H6"})],-1),u(" Add Asset ",-1)])),_:1,__:[2]}),d(c(y),{variant:"primary",size:"sm",onClick:A},{default:l(()=>e[3]||(e[3]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 6v6m0 0v6m0-6h6m-6 0H6"})],-1),u(" Create Work Order ",-1)])),_:1,__:[3]})]),key:"0"}:void 0]),1032,["title","description","breadcrumbs"])]),default:l(()=>{var z,V;return[t("div",it,[w.value?(i(),r("div",rt,e[4]||(e[4]=[t("div",{class:"flex items-center space-x-2 text-gray-500"},[t("svg",{class:"w-8 h-8 animate-spin",fill:"none",viewBox:"0 0 24 24"},[t("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"}),t("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]),t("span",null,"Loading location details...")],-1)]))):s.value?(i(),r("div",lt,[t("div",dt,[t("div",ut,[e[5]||(e[5]=t("div",{class:"w-16 h-16 bg-green-100 rounded-lg flex items-center justify-center"},[t("svg",{class:"w-8 h-8 text-green-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z"}),t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 11a3 3 0 11-6 0 3 3 0 016 0z"})])],-1)),t("div",null,[t("div",ct,[d(c(g),{variant:P(s.value.status)},{default:l(()=>[u(a(D(s.value.status)),1)]),_:1},8,["variant"]),d(c(g),{variant:L(s.value.type)},{default:l(()=>[u(a(s.value.type||"General"),1)]),_:1},8,["variant"]),t("span",vt,"Location #"+a(s.value.id),1)]),t("p",mt,a(s.value.description||"No description available"),1)])])]),t("div",gt,[t("div",pt,[t("div",xt,[e[10]||(e[10]=t("h3",{class:"text-lg font-medium text-gray-900 mb-4"},"Basic Information",-1)),t("div",yt,[t("div",null,[e[6]||(e[6]=t("dt",{class:"text-sm font-medium text-gray-500"},"Name",-1)),t("dd",ft,a(s.value.name),1)]),t("div",null,[e[7]||(e[7]=t("dt",{class:"text-sm font-medium text-gray-500"},"Type",-1)),t("dd",ht,[d(c(g),{variant:L(s.value.type)},{default:l(()=>[u(a(s.value.type||"General"),1)]),_:1},8,["variant"])])]),s.value.address?(i(),r("div",kt,[e[8]||(e[8]=t("dt",{class:"text-sm font-medium text-gray-500"},"Address",-1)),t("dd",wt,a(s.value.address),1)])):v("",!0),s.value.latitude&&s.value.longitude?(i(),r("div",_t,[e[9]||(e[9]=t("dt",{class:"text-sm font-medium text-gray-500"},"Coordinates",-1)),t("dd",bt,a(s.value.latitude.toFixed(6))+", "+a(s.value.longitude.toFixed(6)),1)])):v("",!0)])]),s.value.parentLocation||p.value.length>0?(i(),r("div",Ct,[e[15]||(e[15]=t("h3",{class:"text-lg font-medium text-gray-900 mb-4"},"Location Hierarchy",-1)),s.value.parentLocation?(i(),r("div",Lt,[e[12]||(e[12]=t("dt",{class:"text-sm font-medium text-gray-500 mb-2"},"Parent Location",-1)),t("div",Mt,[d(H,{to:`/locations/${s.value.parentLocation.id}`,class:"text-blue-600 hover:text-blue-800 font-medium"},{default:l(()=>[u(a(s.value.parentLocation.name),1)]),_:1},8,["to"]),e[11]||(e[11]=t("span",{class:"text-gray-400"},"→",-1)),t("span",jt,a(s.value.name),1)])])):v("",!0),p.value.length>0?(i(),r("div",Bt,[e[14]||(e[14]=t("dt",{class:"text-sm font-medium text-gray-500 mb-2"},"Child Locations",-1)),t("div",At,[(i(!0),r(h,null,k(p.value,n=>(i(),r("div",{key:n.id,class:"flex items-center justify-between p-3 bg-gray-50 rounded-lg"},[t("div",Ht,[e[13]||(e[13]=t("svg",{class:"w-5 h-5 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z"})],-1)),t("div",null,[d(H,{to:`/locations/${n.id}`,class:"font-medium text-gray-900 hover:text-blue-600"},{default:l(()=>[u(a(n.name),1)]),_:2},1032,["to"]),n.description?(i(),r("p",zt,a(n.description),1)):v("",!0)])]),d(c(g),{variant:L(n.type)},{default:l(()=>[u(a(n.type||"General"),1)]),_:2},1032,["variant"])]))),128))])])):v("",!0)])):v("",!0),t("div",Vt,[t("div",Ft,[e[17]||(e[17]=t("h3",{class:"text-lg font-medium text-gray-900"},"Associated Assets",-1)),d(c(y),{variant:"outline",size:"sm",onClick:B},{default:l(()=>e[16]||(e[16]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),u(" Add Asset ",-1)])),_:1,__:[16]})]),b.value.length===0?(i(),r("div",Nt,e[18]||(e[18]=[t("svg",{class:"w-12 h-12 mx-auto mb-4 text-gray-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M20 13V6a2 2 0 00-2-2H6a2 2 0 00-2 2v7m16 0v5a2 2 0 01-2 2H6a2 2 0 01-2 2v-5m16 0h-2.586a1 1 0 00-.707.293l-2.414 2.414a1 1 0 01-.707.293h-2.172a1 1 0 01-.707-.293l-2.414-2.414A1 1 0 009.586 13H7"})],-1),t("p",null,"No assets found for this location",-1)]))):(i(),r("div",St,[(i(!0),r(h,null,k(b.value,n=>(i(),r("div",{key:n.id,class:"flex items-center justify-between p-3 bg-gray-50 rounded-lg hover:bg-gray-100 cursor-pointer",onClick:q=>$(n)},[t("div",Wt,[e[19]||(e[19]=t("div",{class:"w-8 h-8 bg-blue-100 rounded-lg flex items-center justify-center"},[t("svg",{class:"w-4 h-4 text-blue-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M20 13V6a2 2 0 00-2-2H6a2 2 0 00-2 2v7m16 0v5a2 2 0 01-2 2H6a2 2 0 01-2 2v-5m16 0h-2.586a1 1 0 00-.707.293l-2.414 2.414a1 1 0 01-.707.293h-2.172a1 1 0 01-.707-.293l-2.414-2.414A1 1 0 009.586 13H7"})])],-1)),t("div",null,[t("h4",Pt,a(n.name),1),t("p",Dt,a(n.description||n.assetNumber),1)])]),t("div",It,[d(c(g),{variant:I(n.status)},{default:l(()=>[u(a(U(n.status)),1)]),_:2},1032,["variant"])])],8,$t))),128))]))]),t("div",Ut,[t("div",Ot,[e[21]||(e[21]=t("h3",{class:"text-lg font-medium text-gray-900"},"Recent Work Orders",-1)),d(c(y),{variant:"outline",size:"sm",onClick:A},{default:l(()=>e[20]||(e[20]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),u(" Create Work Order ",-1)])),_:1,__:[20]})]),C.value.length===0?(i(),r("div",Rt,e[22]||(e[22]=[t("svg",{class:"w-12 h-12 mx-auto mb-4 text-gray-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1),t("p",null,"No work orders found for this location",-1)]))):(i(),r("div",Tt,[(i(!0),r(h,null,k(C.value,n=>(i(),r("div",{key:n.id,class:"flex items-center justify-between p-3 bg-gray-50 rounded-lg hover:bg-gray-100 cursor-pointer",onClick:q=>W(n)},[t("div",Et,[e[23]||(e[23]=t("div",{class:"w-8 h-8 bg-orange-100 rounded-lg flex items-center justify-center"},[t("svg",{class:"w-4 h-4 text-orange-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})])],-1)),t("div",null,[t("h4",qt,a(n.title),1),t("p",Qt,a(E(n.createdAt)),1)])]),t("div",Jt,[d(c(g),{variant:O(n.status)},{default:l(()=>[u(a(R(n.status)),1)]),_:2},1032,["variant"]),d(c(g),{variant:T(n.priority)},{default:l(()=>[u(a(G(n.priority)),1)]),_:2},1032,["variant"])])],8,Gt))),128))]))])]),t("div",Kt,[t("div",Xt,[e[28]||(e[28]=t("h3",{class:"text-lg font-medium text-gray-900 mb-4"},"Quick Stats",-1)),t("div",Yt,[t("div",Zt,[e[24]||(e[24]=t("span",{class:"text-sm text-gray-600"},"Assets",-1)),t("span",te,a(b.value.length),1)]),t("div",ee,[e[25]||(e[25]=t("span",{class:"text-sm text-gray-600"},"Work Orders",-1)),t("span",se,a(C.value.length),1)]),t("div",oe,[e[26]||(e[26]=t("span",{class:"text-sm text-gray-600"},"Child Locations",-1)),t("span",ne,a(p.value.length),1)]),((z=s.value.workers)==null?void 0:z.length)>0?(i(),r("div",ae,[e[27]||(e[27]=t("span",{class:"text-sm text-gray-600"},"Assigned Workers",-1)),t("span",ie,a(s.value.workers.length),1)])):v("",!0)])]),((V=s.value.teams)==null?void 0:V.length)>0?(i(),r("div",re,[e[30]||(e[30]=t("h3",{class:"text-lg font-medium text-gray-900 mb-4"},"Assigned Teams",-1)),t("div",le,[(i(!0),r(h,null,k(s.value.teams,n=>(i(),r("div",{key:n.id,class:"flex items-center space-x-2 p-2 bg-gray-50 rounded"},[e[29]||(e[29]=t("svg",{class:"w-5 h-5 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"})],-1)),t("span",de,a(n.name),1)]))),128))])])):v("",!0),s.value.latitude&&s.value.longitude?(i(),r("div",ue,[e[31]||(e[31]=t("h3",{class:"text-lg font-medium text-gray-900 mb-4"},"Location Map",-1)),e[32]||(e[32]=t("div",{class:"bg-gray-100 rounded-lg h-32 flex items-center justify-center"},[t("span",{class:"text-gray-500 text-sm"},"Map integration coming soon")],-1)),t("div",ce," Coordinates: "+a(s.value.latitude.toFixed(6))+", "+a(s.value.longitude.toFixed(6)),1)])):v("",!0)])])])):_.value?(i(),r("div",ve,[e[34]||(e[34]=t("svg",{class:"w-16 h-16 mx-auto mb-4 text-red-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.728-.833-2.498 0L4.316 16.5c-.77.833.192 2.5 1.732 2.5z"})],-1)),e[35]||(e[35]=t("h3",{class:"text-lg font-medium text-gray-900 mb-2"},"Location not found",-1)),e[36]||(e[36]=t("p",{class:"text-gray-500 mb-4"},"The location you're looking for doesn't exist or has been removed.",-1)),d(c(y),{variant:"primary",onClick:e[0]||(e[0]=n=>o.$router.push("/locations"))},{default:l(()=>e[33]||(e[33]=[u(" Back to Locations ",-1)])),_:1,__:[33]})])):v("",!0)])]}),_:1})}}};export{fe as default}; diff --git a/frontend/dist/assets/LocationsListView-CZh_u7tU.js b/frontend/dist/assets/LocationsListView-Cu3aECgW.js similarity index 92% rename from frontend/dist/assets/LocationsListView-CZh_u7tU.js rename to frontend/dist/assets/LocationsListView-Cu3aECgW.js index 13fd1d70..03ac0836 100644 --- a/frontend/dist/assets/LocationsListView-CZh_u7tU.js +++ b/frontend/dist/assets/LocationsListView-Cu3aECgW.js @@ -1 +1 @@ -import{r as x,c as F,l as ke,v as we,s as xe,o as lt,m as st,i as ie,w as y,g as D,b as l,d as h,e as a,F as M,h as re,t as _,k as q,a as B,j as O,aV as it,ae as rt,n as ut,aU as ct}from"./index-BUdRbiwj.js";import{a as Ce}from"./locations-IQR_pcEX.js";import{u as dt}from"./useFormAutoSave-Jaawgo91.js";import{l as pt}from"./lodash-RqMXHFU9.js";import{F as mt,a as vt}from"./FPPageHeader-CTG2L28r.js";import{F as Z}from"./FPInput-CzR_dWoe.js";import{F as j}from"./FPSelect-C7p47Ma2.js";import{F as gt}from"./FPStats-BGfZcDZc.js";import{F as ft}from"./FPTable-CU8C_NYc.js";import{F as he}from"./FPModal-DWGF1LV8.js";import{F as Le}from"./FPBadge-BKY5dPnL.js";import{F as be}from"./FPTabs-R71V25QN.js";import{_ as yt}from"./FormRestoreNotification-DYBlXhOP.js";import"./_commonjsHelpers-NT8qMgGI.js";import"./FPCard-qHzcEQAE.js";function ht(b={}){const i=x({name:"",description:"",type:"",status:"active",address:"",latitude:null,longitude:null,parentLocationId:null,selectedTeams:[],...b}),c=x({}),v=x("basic"),C=[{key:"basic",label:"Basic Information"},{key:"address",label:"Address & Coordinates"},{key:"assignments",label:"Assignments"}],P=[{label:"Building",value:"building"},{label:"Floor",value:"floor"},{label:"Room",value:"room"},{label:"Area",value:"area"},{label:"Zone",value:"zone"},{label:"Equipment Space",value:"equipment_space"},{label:"General",value:"general"}],T=[{label:"Active",value:"active"},{label:"Inactive",value:"inactive"},{label:"Under Construction",value:"construction"},{label:"Maintenance",value:"maintenance"}],z=F(()=>[{label:"Maintenance Team",value:1},{label:"Facilities Team",value:2},{label:"Security Team",value:3}]),N=()=>{if(c.value={},!i.value.name||i.value.name.trim().length===0?c.value.name="Location name is required":i.value.name.trim().length<2&&(c.value.name="Location name must be at least 2 characters"),i.value.latitude!==null&&i.value.latitude!==void 0&&i.value.latitude!==""){const s=parseFloat(i.value.latitude);(isNaN(s)||s<-90||s>90)&&(c.value.latitude="Latitude must be between -90 and 90")}if(i.value.longitude!==null&&i.value.longitude!==void 0&&i.value.longitude!==""){const s=parseFloat(i.value.longitude);(isNaN(s)||s<-180||s>180)&&(c.value.longitude="Longitude must be between -180 and 180")}return Object.keys(c.value).length===0},U=s=>c.value[s]||null,g=()=>{c.value={}},e=()=>{i.value={name:"",description:"",type:"",status:"active",address:"",latitude:null,longitude:null,parentLocationId:null,selectedTeams:[]},c.value={},v.value="basic"},p=()=>{const s={...i.value};return s.latitude!==null&&s.latitude!==""&&(s.latitude=parseFloat(s.latitude)),s.longitude!==null&&s.longitude!==""&&(s.longitude=parseFloat(s.longitude)),s.parentLocationId&&(s.parentLocation={id:s.parentLocationId},delete s.parentLocationId),s.teams=s.selectedTeams.map(d=>({id:d})),delete s.selectedTeams,s},L=s=>{var d,w;s&&(i.value={name:s.name||"",description:s.description||"",type:s.type||"",status:s.status||"active",address:s.address||"",latitude:s.latitude||null,longitude:s.longitude||null,parentLocationId:((d=s.parentLocation)==null?void 0:d.id)||null,selectedTeams:((w=s.teams)==null?void 0:w.map(I=>I.id))||[]},g())},r=()=>{const s=C.findIndex(d=>d.key===v.value);s{const s=C.findIndex(d=>d.key===v.value);s>0&&(v.value=C[s-1].key)},u=F(()=>Object.keys(c.value).length===0),k=F(()=>Object.keys(c.value).length>0),f=F(()=>v.value==="basic"),V=F(()=>v.value==="assignments");return{formData:i,errors:c,activeTab:v,formTabs:C,typeOptions:P,statusOptions:T,teamOptions:z,isValid:u,hasErrors:k,isFirstTab:f,isLastTab:V,validateForm:N,getFieldError:U,clearErrors:g,resetForm:e,getFormData:p,populateForm:L,nextTab:r,previousTab:n}}function Lt(){const b=x(null),i=x(!1),c=g=>{const e={...g};return e.name&&(e.name=e.name.trim()),e.description&&(e.description=e.description.trim()),e.latitude!==null&&e.latitude!==void 0&&e.latitude!==""?(e.latitude=parseFloat(e.latitude),isNaN(e.latitude)&&(e.latitude=null)):e.latitude=null,e.longitude!==null&&e.longitude!==void 0&&e.longitude!==""?(e.longitude=parseFloat(e.longitude),isNaN(e.longitude)&&(e.longitude=null)):e.longitude=null,e.updatedAt=new Date().toISOString(),e.createdAt||(e.createdAt=new Date().toISOString()),e},v=g=>{const e=[];g.type==="building"&&g.parentLocation&&e.push("Building type locations cannot have a parent location"),["room","area"].includes(g.type)&&!g.parentLocation&&e.push("Room and Area type locations must have a parent location");const p=g.latitude!==null&&g.latitude!==void 0,L=g.longitude!==null&&g.longitude!==void 0;return(p&&!L||!p&&L)&&e.push("Both latitude and longitude must be provided together"),{isValid:e.length===0,errors:e}},C=(g,e=[])=>{var r;if(!g)return"";const p=[];let L=g;for(;L;)p.unshift(L.name),(r=L.parentLocation)!=null&&r.id?L=e.find(n=>n.id===L.parentLocation.id):L=null;return p.join(" → ")},P=g=>{const e={building:{label:"Building",icon:"building",color:"blue",canHaveParent:!1,canHaveChildren:!0,requiresAddress:!0},floor:{label:"Floor",icon:"layers",color:"green",canHaveParent:!0,canHaveChildren:!0,requiresAddress:!1},room:{label:"Room",icon:"home",color:"yellow",canHaveParent:!0,canHaveChildren:!1,requiresAddress:!1},area:{label:"Area",icon:"map",color:"purple",canHaveParent:!0,canHaveChildren:!0,requiresAddress:!1},zone:{label:"Zone",icon:"location",color:"pink",canHaveParent:!0,canHaveChildren:!0,requiresAddress:!1},equipment_space:{label:"Equipment Space",icon:"cog",color:"orange",canHaveParent:!0,canHaveChildren:!1,requiresAddress:!1},general:{label:"General",icon:"pin",color:"gray",canHaveParent:!0,canHaveChildren:!0,requiresAddress:!1}};return e[g]||e.general},T=(g,e=null,p="")=>{if(!P(p).canHaveParent)return[{label:"No Parent Location",value:null}];const r=g.filter(n=>e&&n.id===e.id||e&&z(n,e,g)?!1:P(n.type).canHaveChildren);return[{label:"No Parent Location",value:null},...r.map(n=>({label:n.name,value:n.id}))]},z=(g,e,p)=>{var r;let L=g;for(;(r=L==null?void 0:L.parentLocation)!=null&&r.id;){if(L.parentLocation.id===e.id)return!0;L=p.find(n=>n.id===L.parentLocation.id)}return!1},N=g=>{const e={total:g.length,active:0,inactive:0,byType:{},withCoordinates:0,withParent:0};return g.forEach(p=>{p.status==="active"?e.active++:e.inactive++;const L=p.type||"general";e.byType[L]=(e.byType[L]||0)+1,p.latitude&&p.longitude&&e.withCoordinates++,p.parentLocation&&e.withParent++}),e},U=()=>{b.value=null};return{error:F(()=>b.value),processing:F(()=>i.value),processLocationData:c,validateLocationBusinessRules:v,calculateLocationHierarchy:C,getLocationTypeConfig:P,getValidParentLocations:T,isLocationChild:z,calculateLocationStats:N,clearError:U}}function bt(){const b=e=>({building:"blue",floor:"green",room:"yellow",area:"purple",zone:"pink",equipment_space:"orange",general:"gray"})[e]||"gray",i=e=>({active:"green",inactive:"red",construction:"yellow",maintenance:"orange"})[e]||"gray",c=e=>({active:"Active",inactive:"Inactive",construction:"Under Construction",maintenance:"Maintenance"})[e]||"Unknown",v=e=>({building:"Building",floor:"Floor",room:"Room",area:"Area",zone:"Zone",equipment_space:"Equipment Space",general:"General"})[e]||"General",C=e=>({building:"building",floor:"layers",room:"home",area:"map",zone:"location",equipment_space:"cog",general:"pin"})[e]||"pin",P=e=>({active:"check-circle",inactive:"x-circle",construction:"hammer",maintenance:"wrench"})[e]||"circle",T=(e,p)=>e==null||p===null||p===void 0?"No coordinates":`${e.toFixed(4)}, ${p.toFixed(4)}`;return{getTypeVariant:b,getStatusVariant:i,formatStatus:c,formatType:v,getTypeIcon:C,getStatusIcon:P,formatCoordinates:T,formatLocationAddress:e=>{if(!e)return"";const p=[];return e.address&&p.push(e.address),e.latitude&&e.longitude&&p.push(`(${T(e.latitude,e.longitude)})`),p.join(" ")||"No address"},formatLocationStats:e=>e?[{label:"Total Locations",value:e.total||0,variant:"blue",icon:"building",subtitle:"All locations"},{label:"Active Locations",value:e.active||0,variant:"green",icon:"check-circle",subtitle:`${e.total>0?Math.round(e.active/e.total*100):0}% active`},{label:"Inactive Locations",value:e.inactive||0,variant:"red",icon:"x-circle",subtitle:`${e.total>0?Math.round(e.inactive/e.total*100):0}% inactive`},{label:"Building Types",value:Object.keys(e.byType||{}).length,variant:"purple",icon:"layers",subtitle:"Unique types"}]:[],getStatusTabs:e=>[{key:"all",label:"All Locations",count:(e==null?void 0:e.total)||0},{key:"active",label:"Active",count:(e==null?void 0:e.active)||0},{key:"inactive",label:"Inactive",count:(e==null?void 0:e.inactive)||0},{key:"construction",label:"Construction",count:(e==null?void 0:e.construction)||0},{key:"maintenance",label:"Maintenance",count:(e==null?void 0:e.maintenance)||0}],getLocationTableColumns:(e=!1)=>{const p=[{key:"name",label:"Location",sortable:!0,width:"25%",essential:!0,priority:"high"},{key:"hierarchy",label:"Hierarchy",sortable:!1,width:"20%",priority:"medium"},{key:"address",label:"Address",sortable:!0,width:"20%",priority:"low"},{key:"type",label:"Type",sortable:!0,width:"10%",essential:!0,priority:"high"},{key:"status",label:"Status",sortable:!0,width:"10%",essential:!0,priority:"high"},{key:"assets",label:"Assets",sortable:!1,width:"8%",priority:"medium"},{key:"workOrders",label:"Work Orders",sortable:!1,width:"8%",priority:"low"},{key:"actions",label:"Actions",sortable:!1,width:"12%",essential:!0,priority:"high"}];return e?p.filter(L=>L.essential||L.priority==="high"):p}}}function kt(){const b=Ce(),{showNotification:i}=ke(),c=x(!1),v=x(null),C=async(n,u=!1,k=null)=>{c.value=!0,v.value=null;try{let f;return u&&k?(f=await b.updateLocation(k,n),i("success","Location updated successfully")):(f=await b.createLocation(n),i("success","Location created successfully")),f}catch(f){const V=u?"Failed to update location":"Failed to create location";throw v.value=f.message,i("error",V),console.error("Location submission error:",f),f}finally{c.value=!1}},P=async n=>{c.value=!0,v.value=null;try{await b.deleteLocation(n),i("success","Location deleted successfully")}catch(u){throw v.value=u.message,i("error","Failed to delete location"),console.error("Location deletion error:",u),u}finally{c.value=!1}},T=async()=>{c.value=!0,v.value=null;try{await b.refreshLocations(),i("success","Locations refreshed successfully")}catch(n){throw v.value=n.message,i("error","Failed to refresh locations"),console.error("Locations refresh error:",n),n}finally{c.value=!1}},z=async n=>{c.value=!0,v.value=null;try{return await b.getLocationById(parseInt(n))}catch(u){throw v.value=u.message,i("error","Failed to load location for editing"),console.error("Location load error:",u),u}finally{c.value=!1}},N=async(n={})=>{c.value=!0,v.value=null;try{i("info","Export feature coming soon")}catch(u){throw v.value=u.message,i("error","Failed to export locations"),console.error("Location export error:",u),u}finally{c.value=!1}},U=async(n,u,k)=>{if(!n())return{isValid:!1,type:"form",message:"Please fix the validation errors before submitting"};const f=u(k);return f.isValid?{isValid:!0}:{isValid:!1,type:"business",message:f.errors.join(", ")}};return{isProcessing:c,error:v,handleLocationSubmission:C,handleLocationDeletion:P,handleLocationLoad:z,handleLocationsRefresh:T,handleLocationExport:N,submitLocation:async({validateForm:n,validateBusinessRules:u,getFormData:k,processLocationData:f,isEditMode:V=!1,locationId:s=null,onSuccess:d=null,onError:w=null})=>{try{const I=k(),J=f(I),H=await U(n,u,J);if(!H.isValid)return i("error",H.message),w&&w(new Error(H.message)),{success:!1,error:H.message};const R=await C(J,V,s);return d&&d(R),{success:!0,data:R}}catch(I){return w&&w(I),{success:!1,error:I.message}}},validateLocationSubmission:U,handleLocationSearch:async(n,u={})=>{try{await b.updateSearchTerm(n),Object.keys(u).length>0&&await b.updateFilters(u)}catch(k){v.value=k.message,console.error("Location search error:",k)}},handleLocationPagination:async n=>{try{await b.changePage(n-1)}catch(u){v.value=u.message,console.error("Location pagination error:",u)}},handleLocationSorting:async n=>{try{await b.changeSorting(n.column,n.direction)}catch(u){v.value=u.message,console.error("Location sorting error:",u)}},clearError:()=>{v.value=null}}}function wt(){const b=we(),i=xe(),{showNotification:c}=ke(),v=r=>{b.push(`/locations/${r.id}`)},C=r=>{b.push(`/locations?edit=${r.id}`)},P=(r={})=>{const n={create:"true"};r.parentId&&(n.parentId=r.parentId),r.type&&(n.type=r.type),b.push({path:"/locations",query:n})},T=()=>{b.replace({path:"/locations"})};return{navigateToLocationDetail:v,navigateToLocationEdit:C,navigateToLocationCreate:P,navigateToLocationsList:T,handleLocationQueryParams:async(r,n,u)=>{const k=i.query.edit,f=i.query.create==="true",V=i.query.parentId,s=i.query.type;try{k?setTimeout(async()=>{try{const d=await u(parseInt(k));r(d),T()}catch{c("error","Failed to load location for editing"),T()}},500):f&&setTimeout(()=>{const d={};V&&(d.parentId=parseInt(V)),s&&(d.type=s),n(d),T()},500)}catch{c("error","Failed to handle navigation parameters"),T()}},getLocationRouteParams:()=>({editLocationId:i.query.edit?parseInt(i.query.edit):null,shouldCreate:i.query.create==="true",parentId:i.query.parentId?parseInt(i.query.parentId):null,locationType:i.query.type||null,searchTerm:i.query.search||"",status:i.query.status||"all",type:i.query.type||"",page:i.query.page?parseInt(i.query.page):1}),updateLocationRouteParams:r=>{const n={...i.query};Object.keys(r).forEach(u=>{r[u]!==null&&r[u]!==void 0&&r[u]!==""?n[u]=r[u]:delete n[u]}),b.replace({path:i.path,query:Object.keys(n).length>0?n:void 0})},navigateWithLocationFilters:r=>{const n={};r.search&&(n.search=r.search),r.status&&r.status!=="all"&&(n.status=r.status),r.type&&(n.type=r.type),r.parent&&(n.parent=r.parent),r.page&&r.page>1&&(n.page=r.page),b.push({path:"/locations",query:n})},getLocationBreadcrumbs:(r,n=[])=>{var V;const u=[{text:"Locations",to:"/locations"}];if(!r)return u;const k=[];let f=r;for(;f;)k.unshift({text:f.name,to:`/locations/${f.id}`}),(V=f.parentLocation)!=null&&V.id?f=n.find(s=>s.id===f.parentLocation.id):f=null;return[...u,...k]},handleLocationBack:(r=null)=>{history.length>1?b.back():b.push("/locations"),r&&r()},generateLocationDeepLink:(r,n={})=>{const u=window.location.origin;let k=`/locations/${r.id}`;const f={};n.action==="edit"&&(f.edit=r.id),n.parentId&&(f.parentId=n.parentId);const V=Object.keys(f).length>0?"?"+new URLSearchParams(f).toString():"";return`${u}${k}${V}`}}}const xt={class:"p-6"},Ct={class:"mb-6 grid grid-cols-1 md:grid-cols-4 gap-4"},Ft={class:"bg-white shadow rounded-lg overflow-hidden"},Tt={class:"flex items-center space-x-3"},Vt={class:"font-medium text-gray-900"},St={class:"text-sm text-gray-500"},It={class:"text-sm"},_t={class:"text-gray-600"},Pt={class:"text-sm"},Dt={class:"text-gray-900"},qt={key:0,class:"text-xs text-gray-500 mt-1"},At={class:"text-sm text-center"},Mt={class:"font-medium text-gray-900"},zt={class:"text-sm text-center"},Ut={class:"font-medium text-gray-900"},Bt={class:"flex items-center space-x-2"},Nt={class:"border-b border-gray-200 mb-6"},Ht={key:0,class:"space-y-6"},Ot={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},jt={class:"md:col-span-2"},Rt={key:0,class:"mt-1 text-sm text-red-600"},Et={key:1,class:"space-y-6"},$t={class:"space-y-4"},Gt={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},Qt={key:2,class:"space-y-6"},Wt={class:"space-y-4"},Zt={class:"flex items-center justify-between"},Jt={class:"flex items-center space-x-4"},Xt={key:0,class:"flex items-center text-sm text-gray-500"},Yt={key:0,class:"w-4 h-4 mr-2 text-amber-500 animate-pulse",fill:"currentColor",viewBox:"0 0 20 20"},Kt={key:1,class:"w-4 h-4 mr-2 text-green-500",fill:"currentColor",viewBox:"0 0 20 20"},ea={key:2},ta={key:3},aa={class:"flex space-x-3"},oa={class:"space-y-4"},na={class:"text-gray-600"},la={class:"text-gray-900"},sa={class:"flex justify-end space-x-3"},wa={__name:"LocationsListView",setup(b){we();const i=xe(),c=Ce(),{processLocationData:v,getValidParentLocations:C}=Lt(),{getTypeVariant:P,getStatusVariant:T,formatStatus:z,formatLocationStats:N,getStatusTabs:U,getLocationTableColumns:g}=bt(),{submitLocation:e,handleLocationDeletion:p,handleLocationsRefresh:L,handleLocationExport:r,handleLocationLoad:n,handleLocationSearch:u,handleLocationPagination:k,handleLocationSorting:f}=kt(),{navigateToLocationDetail:V,handleLocationQueryParams:s}=wt(),{formData:d,errors:w,activeTab:I,formTabs:J,typeOptions:H,statusOptions:R,teamOptions:Fe,isLastTab:Te,validateForm:Ve,resetForm:ue,getFormData:Se,populateForm:Ie,nextTab:_e}=ht(),{hasUnsavedChanges:te,lastSaveTime:X,restoreFormData:Pe,clearSavedData:ce,hasSavedData:de,getSavedDataInfo:De,markUserInteraction:qe,finishInitialization:Ae}=dt(d,{storageKey:"atlas_location_form_data",saveInterval:3e3,excludeFields:[]}),E=x(!1),pe=x(null),ae=x("all"),S=x({search:"",type:"",parent:"",status:""}),$=x(!1),Y=x("create"),G=x(null),Q=x(!1),K=x(null),oe=x(!1);x(!1);const Me=F(()=>c.loading.value),ze=F(()=>c.filteredLocations.value),me=F(()=>c.locationStats.value),ne=F(()=>Y.value==="edit"),Ue=F(()=>N(me.value)),Be=F(()=>X.value?new Date(X.value).toLocaleTimeString():""),ve=F(()=>C(c.miniLocations.value||[],G.value,d.value.type)),Ne=F(()=>U(me.value)),He=F(()=>{var m,t,o,W;return{currentPage:(((m=c.searchCriteria.value)==null?void 0:m.page)||0)+1,totalPages:((t=c.locations.value)==null?void 0:t.totalPages)||0,totalItems:((o=c.locations.value)==null?void 0:o.totalElements)||0,pageSize:((W=c.searchCriteria.value)==null?void 0:W.size)||10}}),Oe=F(()=>g(!1)),je=[{label:"All Types",value:""},...H.map(m=>({label:m.label,value:m.value}))],Re=[{label:"All Statuses",value:""},...R.map(m=>({label:m.label,value:m.value}))],Ee=pt.debounce(m=>{u(m,S.value)},300),ee=()=>{u(S.value.search,{type:S.value.type,parent:S.value.parent,status:S.value.status})},$e=m=>{ae.value=m,S.value.status=m==="all"?"":m,ee()},Ge=m=>{f(m)},Qe=m=>{k(m)},We=m=>{V(m)},le=async()=>{await L()},ge=()=>{G.value=null,Y.value="create",Ze(),de()||ue(),$.value=!0},Ze=()=>{Y.value==="create"&&de()&&(pe.value=De(),E.value=!0,console.log("✅ Found saved location data, showing restore notification"))},fe=m=>{G.value=m,Y.value="edit",Ie(m),Ae(),$.value=!0},Je=m=>{K.value=m,Q.value=!0},Xe=async()=>{try{await p(K.value.id),Q.value=!1,K.value=null,await le()}catch{}},se=()=>{$.value=!1,G.value=null,E.value=!1},Ye=async()=>{var m;oe.value=!0;try{(await e({validateForm:Ve,validateBusinessRules,getFormData:Se,processLocationData:v,isEditMode:ne.value,locationId:(m=G.value)==null?void 0:m.id})).success&&(ce(),se(),await le())}finally{oe.value=!1}},Ke=m=>{A(),_e()},et=()=>{Pe(),E.value=!1,console.log("Location form data restored successfully")},tt=()=>{ce(),E.value=!1,ue(),console.log("Location auto-saved data dismissed")},at=async()=>{await r(S.value)},ot=m=>c.getLocationDisplayName(m),ye=()=>{s(fe,ge,n)},A=()=>{console.log("🔥 Location user interaction detected!"),qe()},nt=m=>{I.value=m,A()};return lt(async()=>{await c.initializeLocations(),ye()}),st(()=>i.query,ye),(m,t)=>(D(),ie(mt,null,{header:y(()=>[h(vt,{title:"Locations",description:"Manage and organize facility locations and spaces",breadcrumbs:[{text:"Locations",to:null}]},{actions:y(()=>[h(a(M),{variant:"outline",size:"sm",onClick:at},{default:y(()=>t[19]||(t[19]=[l("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1),q(" Export ",-1)])),_:1,__:[19]}),h(a(M),{variant:"outline",size:"sm",onClick:le},{default:y(()=>t[20]||(t[20]=[l("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),q(" Refresh ",-1)])),_:1,__:[20]}),h(a(M),{variant:"primary",size:"sm",onClick:ge},{default:y(()=>t[21]||(t[21]=[l("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),q(" Add Location ",-1)])),_:1,__:[21]})]),stats:y(()=>[h(a(gt),{stats:Ue.value},null,8,["stats"])]),tabs:y(()=>[h(a(be),{modelValue:ae.value,"onUpdate:modelValue":t[0]||(t[0]=o=>ae.value=o),tabs:Ne.value,onTabChange:$e},null,8,["modelValue","tabs"])]),_:1})]),default:y(()=>[l("div",xt,[l("div",Ct,[h(a(Z),{modelValue:S.value.search,"onUpdate:modelValue":t[1]||(t[1]=o=>S.value.search=o),placeholder:"Search locations...",onInput:a(Ee)},{prepend:y(()=>t[22]||(t[22]=[l("svg",{class:"w-4 h-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1)])),_:1},8,["modelValue","onInput"]),h(a(j),{modelValue:S.value.type,"onUpdate:modelValue":[t[2]||(t[2]=o=>S.value.type=o),ee],placeholder:"Filter by Type",options:je},null,8,["modelValue"]),h(a(j),{modelValue:S.value.parent,"onUpdate:modelValue":[t[3]||(t[3]=o=>S.value.parent=o),ee],placeholder:"Filter by Parent Location",options:ve.value},null,8,["modelValue","options"]),h(a(j),{modelValue:S.value.status,"onUpdate:modelValue":[t[4]||(t[4]=o=>S.value.status=o),ee],placeholder:"Filter by Status",options:Re},null,8,["modelValue"])]),l("div",Ft,[h(a(ft),{columns:Oe.value,data:ze.value,loading:Me.value,pagination:He.value,"empty-message":"No locations found",onSortChange:Ge,onPageChange:Qe,onRowClick:We},{"column-name":y(({row:o})=>[l("div",Tt,[t[23]||(t[23]=l("div",{class:"w-8 h-8 bg-green-100 rounded-lg flex items-center justify-center"},[l("svg",{class:"w-4 h-4 text-green-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z"}),l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 11a3 3 0 11-6 0 3 3 0 016 0z"})])],-1)),l("div",null,[l("h4",Vt,_(o.name),1),l("p",St,_(o.description||"No description"),1)])])]),"column-hierarchy":y(({row:o})=>[l("div",It,[l("span",_t,_(ot(o)),1)])]),"column-address":y(({row:o})=>[l("div",Pt,[l("span",Dt,_(o.address||"No address"),1),o.latitude&&o.longitude?(D(),B("div",qt,_(o.latitude.toFixed(4))+", "+_(o.longitude.toFixed(4)),1)):O("",!0)])]),"column-type":y(({row:o})=>[h(a(Le),{variant:a(P)(o.type)},{default:y(()=>[q(_(o.type||"General"),1)]),_:2},1032,["variant"])]),"column-status":y(({row:o})=>[h(a(Le),{variant:a(T)(o.status)},{default:y(()=>[q(_(a(z)(o.status)),1)]),_:2},1032,["variant"])]),"column-assets":y(({row:o})=>[l("div",At,[l("span",Mt,_(o.assetsCount||0),1),t[24]||(t[24]=l("span",{class:"text-gray-500 block text-xs"},"Assets",-1))])]),"column-workOrders":y(({row:o})=>[l("div",zt,[l("span",Ut,_(o.workOrdersCount||0),1),t[25]||(t[25]=l("span",{class:"text-gray-500 block text-xs"},"Work Orders",-1))])]),"column-actions":y(({row:o})=>[l("div",Bt,[h(a(M),{variant:"ghost",size:"xs",onClick:re(W=>m.viewLocation(o),["stop"]),title:"View Details"},{default:y(()=>t[26]||(t[26]=[l("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"}),l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"})],-1)])),_:2,__:[26]},1032,["onClick"]),h(a(M),{variant:"ghost",size:"xs",onClick:re(W=>fe(o),["stop"]),title:"Edit Location"},{default:y(()=>t[27]||(t[27]=[l("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1)])),_:2,__:[27]},1032,["onClick"]),h(a(M),{variant:"ghost",size:"xs",onClick:re(W=>Je(o),["stop"]),title:"Delete Location",class:"text-red-600 hover:text-red-700"},{default:y(()=>t[28]||(t[28]=[l("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1)])),_:2,__:[28]},1032,["onClick"])])]),_:1},8,["columns","data","loading","pagination"])]),h(a(he),{modelValue:$.value,"onUpdate:modelValue":t[16]||(t[16]=o=>$.value=o),title:ne.value?"Edit Location":"Create Location",size:"xl",onCancel:se},{footer:y(()=>[l("div",Zt,[l("div",Jt,[a(te)||a(X)?(D(),B("div",Xt,[a(te)?(D(),B("svg",Yt,t[31]||(t[31]=[l("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z","clip-rule":"evenodd"},null,-1)]))):(D(),B("svg",Kt,t[32]||(t[32]=[l("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z","clip-rule":"evenodd"},null,-1)]))),a(te)?(D(),B("span",ea,"Auto-saving...")):a(X)?(D(),B("span",ta,"Last saved "+_(Be.value),1)):O("",!0)])):O("",!0)]),l("div",aa,[h(a(M),{variant:"secondary",onClick:se},{default:y(()=>t[33]||(t[33]=[q(" Cancel ",-1)])),_:1,__:[33]}),a(Te)?(D(),ie(a(M),{key:1,variant:"primary",loading:oe.value,onClick:Ye},{default:y(()=>[q(_(ne.value?"Update Location":"Create Location"),1)]),_:1},8,["loading"])):(D(),ie(a(M),{key:0,variant:"primary",onClick:t[15]||(t[15]=o=>Ke("next"))},{default:y(()=>t[34]||(t[34]=[q(" Next ",-1)])),_:1,__:[34]}))])])]),default:y(()=>[h(a(yt),{visible:E.value,"saved-data-info":pe.value,onRestore:et,onDismiss:tt},null,8,["visible","saved-data-info"]),l("div",Nt,[h(a(be),{modelValue:a(I),"onUpdate:modelValue":t[5]||(t[5]=o=>it(I)?I.value=o:null),tabs:a(J),onTabChange:nt},null,8,["modelValue","tabs"])]),a(I)==="basic"?(D(),B("div",Ht,[l("div",Ot,[h(a(Z),{modelValue:a(d).name,"onUpdate:modelValue":t[6]||(t[6]=o=>a(d).name=o),label:"Location Name",placeholder:"Enter location name",required:"",error:a(w).name,onInput:A},null,8,["modelValue","error"]),h(a(j),{modelValue:a(d).type,"onUpdate:modelValue":t[7]||(t[7]=o=>a(d).type=o),label:"Location Type",placeholder:"Select location type",options:a(H),error:a(w).type,onChange:A},null,8,["modelValue","options","error"]),l("div",jt,[t[29]||(t[29]=l("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Description",-1)),rt(l("textarea",{"onUpdate:modelValue":t[8]||(t[8]=o=>a(d).description=o),class:ut(["w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",{"border-red-300":a(w).description}]),placeholder:"Describe the location...",rows:"3",onInput:A},null,34),[[ct,a(d).description]]),a(w).description?(D(),B("p",Rt,_(a(w).description),1)):O("",!0)]),h(a(j),{modelValue:a(d).parentLocationId,"onUpdate:modelValue":t[9]||(t[9]=o=>a(d).parentLocationId=o),label:"Parent Location",placeholder:"Select parent location (optional)",options:ve.value,error:a(w).parentLocationId,onChange:A},null,8,["modelValue","options","error"]),h(a(j),{modelValue:a(d).status,"onUpdate:modelValue":t[10]||(t[10]=o=>a(d).status=o),label:"Status",placeholder:"Select status",options:a(R),error:a(w).status,onChange:A},null,8,["modelValue","options","error"])])])):O("",!0),a(I)==="address"?(D(),B("div",Et,[l("div",$t,[h(a(Z),{modelValue:a(d).address,"onUpdate:modelValue":t[11]||(t[11]=o=>a(d).address=o),label:"Street Address",placeholder:"Enter full address",error:a(w).address,onInput:A},null,8,["modelValue","error"]),l("div",Gt,[h(a(Z),{modelValue:a(d).latitude,"onUpdate:modelValue":t[12]||(t[12]=o=>a(d).latitude=o),label:"Latitude",placeholder:"e.g., 40.7128",type:"number",step:"any",error:a(w).latitude,onInput:A},null,8,["modelValue","error"]),h(a(Z),{modelValue:a(d).longitude,"onUpdate:modelValue":t[13]||(t[13]=o=>a(d).longitude=o),label:"Longitude",placeholder:"e.g., -74.0060",type:"number",step:"any",error:a(w).longitude,onInput:A},null,8,["modelValue","error"])])])])):O("",!0),a(I)==="assignments"?(D(),B("div",Qt,[l("div",Wt,[l("div",null,[t[30]||(t[30]=l("label",{class:"block text-sm font-medium text-gray-700 mb-2"}," Assigned Teams ",-1)),h(a(j),{modelValue:a(d).selectedTeams,"onUpdate:modelValue":t[14]||(t[14]=o=>a(d).selectedTeams=o),placeholder:"Select teams to assign to this location",options:a(Fe),multiple:"",error:a(w).teams,onChange:A},null,8,["modelValue","options","error"])])])])):O("",!0)]),_:1},8,["modelValue","title"]),h(a(he),{modelValue:Q.value,"onUpdate:modelValue":t[18]||(t[18]=o=>Q.value=o),title:"Delete Location",size:"md"},{footer:y(()=>[l("div",sa,[h(a(M),{variant:"secondary",onClick:t[17]||(t[17]=o=>Q.value=!1)},{default:y(()=>t[37]||(t[37]=[q(" Cancel ",-1)])),_:1,__:[37]}),h(a(M),{variant:"danger",onClick:Xe},{default:y(()=>t[38]||(t[38]=[q(" Delete Location ",-1)])),_:1,__:[38]})])]),default:y(()=>{var o;return[l("div",oa,[l("p",na,[t[35]||(t[35]=q(" Are you sure you want to delete ",-1)),l("strong",la,"'"+_((o=K.value)==null?void 0:o.name)+"'",1),t[36]||(t[36]=q("? This action cannot be undone. ",-1))])])]}),_:1},8,["modelValue"])])]),_:1}))}};export{wa as default}; +import{r as x,c as F,l as ke,v as we,s as xe,o as lt,m as st,i as ie,w as y,g as D,b as l,d as h,e as a,F as M,h as re,t as _,k as q,a as U,j as O,aW as it,ae as rt,n as ut,aV as ct}from"./index-QAlcqU00.js";import{a as Ce}from"./locations-ElrWcwNd.js";import{u as dt}from"./useFormAutoSave-BrW9Wl2Q.js";import{l as pt}from"./lodash-RqMXHFU9.js";import{F as mt,a as vt}from"./FPPageHeader-CFIwZZgQ.js";import{F as Z}from"./FPInput-D5RURom0.js";import{F as j}from"./FPSelect-j7n_x8eB.js";import{F as gt}from"./FPStats-DOY0PQQF.js";import{F as ft}from"./FPTable-CWvngIYd.js";import{F as he}from"./FPModal-DMoPysvU.js";import{F as Le}from"./FPBadge-DvOitM1C.js";import{F as be}from"./FPTabs-qq-Tmb7J.js";import{_ as yt}from"./FormRestoreNotification-2Wflg1mH.js";import"./_commonjsHelpers-NT8qMgGI.js";import"./FPCard-AB6NRXg5.js";function ht(b={}){const i=x({name:"",description:"",type:"",status:"active",address:"",latitude:null,longitude:null,parentLocationId:null,selectedTeams:[],...b}),c=x({}),v=x("basic"),C=[{key:"basic",label:"Basic Information"},{key:"address",label:"Address & Coordinates"},{key:"assignments",label:"Assignments"}],P=[{label:"Building",value:"building"},{label:"Floor",value:"floor"},{label:"Room",value:"room"},{label:"Area",value:"area"},{label:"Zone",value:"zone"},{label:"Equipment Space",value:"equipment_space"},{label:"General",value:"general"}],T=[{label:"Active",value:"active"},{label:"Inactive",value:"inactive"},{label:"Under Construction",value:"construction"},{label:"Maintenance",value:"maintenance"}],z=F(()=>[{label:"Maintenance Team",value:1},{label:"Facilities Team",value:2},{label:"Security Team",value:3}]),N=()=>{if(c.value={},!i.value.name||i.value.name.trim().length===0?c.value.name="Location name is required":i.value.name.trim().length<2&&(c.value.name="Location name must be at least 2 characters"),i.value.latitude!==null&&i.value.latitude!==void 0&&i.value.latitude!==""){const s=parseFloat(i.value.latitude);(isNaN(s)||s<-90||s>90)&&(c.value.latitude="Latitude must be between -90 and 90")}if(i.value.longitude!==null&&i.value.longitude!==void 0&&i.value.longitude!==""){const s=parseFloat(i.value.longitude);(isNaN(s)||s<-180||s>180)&&(c.value.longitude="Longitude must be between -180 and 180")}return Object.keys(c.value).length===0},B=s=>c.value[s]||null,g=()=>{c.value={}},e=()=>{i.value={name:"",description:"",type:"",status:"active",address:"",latitude:null,longitude:null,parentLocationId:null,selectedTeams:[]},c.value={},v.value="basic"},p=()=>{const s={...i.value};return s.latitude!==null&&s.latitude!==""&&(s.latitude=parseFloat(s.latitude)),s.longitude!==null&&s.longitude!==""&&(s.longitude=parseFloat(s.longitude)),s.parentLocationId&&(s.parentLocation={id:s.parentLocationId},delete s.parentLocationId),s.teams=s.selectedTeams.map(d=>({id:d})),delete s.selectedTeams,s},L=s=>{var d,w;s&&(i.value={name:s.name||"",description:s.description||"",type:s.type||"",status:s.status||"active",address:s.address||"",latitude:s.latitude||null,longitude:s.longitude||null,parentLocationId:((d=s.parentLocation)==null?void 0:d.id)||null,selectedTeams:((w=s.teams)==null?void 0:w.map(I=>I.id))||[]},g())},r=()=>{const s=C.findIndex(d=>d.key===v.value);s{const s=C.findIndex(d=>d.key===v.value);s>0&&(v.value=C[s-1].key)},u=F(()=>Object.keys(c.value).length===0),k=F(()=>Object.keys(c.value).length>0),f=F(()=>v.value==="basic"),V=F(()=>v.value==="assignments");return{formData:i,errors:c,activeTab:v,formTabs:C,typeOptions:P,statusOptions:T,teamOptions:z,isValid:u,hasErrors:k,isFirstTab:f,isLastTab:V,validateForm:N,getFieldError:B,clearErrors:g,resetForm:e,getFormData:p,populateForm:L,nextTab:r,previousTab:n}}function Lt(){const b=x(null),i=x(!1),c=g=>{const e={...g};return e.name&&(e.name=e.name.trim()),e.description&&(e.description=e.description.trim()),e.latitude!==null&&e.latitude!==void 0&&e.latitude!==""?(e.latitude=parseFloat(e.latitude),isNaN(e.latitude)&&(e.latitude=null)):e.latitude=null,e.longitude!==null&&e.longitude!==void 0&&e.longitude!==""?(e.longitude=parseFloat(e.longitude),isNaN(e.longitude)&&(e.longitude=null)):e.longitude=null,e.updatedAt=new Date().toISOString(),e.createdAt||(e.createdAt=new Date().toISOString()),e},v=g=>{const e=[];g.type==="building"&&g.parentLocation&&e.push("Building type locations cannot have a parent location"),["room","area"].includes(g.type)&&!g.parentLocation&&e.push("Room and Area type locations must have a parent location");const p=g.latitude!==null&&g.latitude!==void 0,L=g.longitude!==null&&g.longitude!==void 0;return(p&&!L||!p&&L)&&e.push("Both latitude and longitude must be provided together"),{isValid:e.length===0,errors:e}},C=(g,e=[])=>{var r;if(!g)return"";const p=[];let L=g;for(;L;)p.unshift(L.name),(r=L.parentLocation)!=null&&r.id?L=e.find(n=>n.id===L.parentLocation.id):L=null;return p.join(" → ")},P=g=>{const e={building:{label:"Building",icon:"building",color:"blue",canHaveParent:!1,canHaveChildren:!0,requiresAddress:!0},floor:{label:"Floor",icon:"layers",color:"green",canHaveParent:!0,canHaveChildren:!0,requiresAddress:!1},room:{label:"Room",icon:"home",color:"yellow",canHaveParent:!0,canHaveChildren:!1,requiresAddress:!1},area:{label:"Area",icon:"map",color:"purple",canHaveParent:!0,canHaveChildren:!0,requiresAddress:!1},zone:{label:"Zone",icon:"location",color:"pink",canHaveParent:!0,canHaveChildren:!0,requiresAddress:!1},equipment_space:{label:"Equipment Space",icon:"cog",color:"orange",canHaveParent:!0,canHaveChildren:!1,requiresAddress:!1},general:{label:"General",icon:"pin",color:"gray",canHaveParent:!0,canHaveChildren:!0,requiresAddress:!1}};return e[g]||e.general},T=(g,e=null,p="")=>{if(!P(p).canHaveParent)return[{label:"No Parent Location",value:null}];const r=g.filter(n=>e&&n.id===e.id||e&&z(n,e,g)?!1:P(n.type).canHaveChildren);return[{label:"No Parent Location",value:null},...r.map(n=>({label:n.name,value:n.id}))]},z=(g,e,p)=>{var r;let L=g;for(;(r=L==null?void 0:L.parentLocation)!=null&&r.id;){if(L.parentLocation.id===e.id)return!0;L=p.find(n=>n.id===L.parentLocation.id)}return!1},N=g=>{const e={total:g.length,active:0,inactive:0,byType:{},withCoordinates:0,withParent:0};return g.forEach(p=>{p.status==="active"?e.active++:e.inactive++;const L=p.type||"general";e.byType[L]=(e.byType[L]||0)+1,p.latitude&&p.longitude&&e.withCoordinates++,p.parentLocation&&e.withParent++}),e},B=()=>{b.value=null};return{error:F(()=>b.value),processing:F(()=>i.value),processLocationData:c,validateLocationBusinessRules:v,calculateLocationHierarchy:C,getLocationTypeConfig:P,getValidParentLocations:T,isLocationChild:z,calculateLocationStats:N,clearError:B}}function bt(){const b=e=>({building:"blue",floor:"green",room:"yellow",area:"purple",zone:"pink",equipment_space:"orange",general:"gray"})[e]||"gray",i=e=>({active:"green",inactive:"red",construction:"yellow",maintenance:"orange"})[e]||"gray",c=e=>({active:"Active",inactive:"Inactive",construction:"Under Construction",maintenance:"Maintenance"})[e]||"Unknown",v=e=>({building:"Building",floor:"Floor",room:"Room",area:"Area",zone:"Zone",equipment_space:"Equipment Space",general:"General"})[e]||"General",C=e=>({building:"building",floor:"layers",room:"home",area:"map",zone:"location",equipment_space:"cog",general:"pin"})[e]||"pin",P=e=>({active:"check-circle",inactive:"x-circle",construction:"hammer",maintenance:"wrench"})[e]||"circle",T=(e,p)=>e==null||p===null||p===void 0?"No coordinates":`${e.toFixed(4)}, ${p.toFixed(4)}`;return{getTypeVariant:b,getStatusVariant:i,formatStatus:c,formatType:v,getTypeIcon:C,getStatusIcon:P,formatCoordinates:T,formatLocationAddress:e=>{if(!e)return"";const p=[];return e.address&&p.push(e.address),e.latitude&&e.longitude&&p.push(`(${T(e.latitude,e.longitude)})`),p.join(" ")||"No address"},formatLocationStats:e=>e?[{label:"Total Locations",value:e.total||0,variant:"blue",icon:"building",subtitle:"All locations"},{label:"Active Locations",value:e.active||0,variant:"green",icon:"check-circle",subtitle:`${e.total>0?Math.round(e.active/e.total*100):0}% active`},{label:"Inactive Locations",value:e.inactive||0,variant:"red",icon:"x-circle",subtitle:`${e.total>0?Math.round(e.inactive/e.total*100):0}% inactive`},{label:"Building Types",value:Object.keys(e.byType||{}).length,variant:"purple",icon:"layers",subtitle:"Unique types"}]:[],getStatusTabs:e=>[{key:"all",label:"All Locations",count:(e==null?void 0:e.total)||0},{key:"active",label:"Active",count:(e==null?void 0:e.active)||0},{key:"inactive",label:"Inactive",count:(e==null?void 0:e.inactive)||0},{key:"construction",label:"Construction",count:(e==null?void 0:e.construction)||0},{key:"maintenance",label:"Maintenance",count:(e==null?void 0:e.maintenance)||0}],getLocationTableColumns:(e=!1)=>{const p=[{key:"name",label:"Location",sortable:!0,width:"25%",essential:!0,priority:"high"},{key:"hierarchy",label:"Hierarchy",sortable:!1,width:"20%",priority:"medium"},{key:"address",label:"Address",sortable:!0,width:"20%",priority:"low"},{key:"type",label:"Type",sortable:!0,width:"10%",essential:!0,priority:"high"},{key:"status",label:"Status",sortable:!0,width:"10%",essential:!0,priority:"high"},{key:"assets",label:"Assets",sortable:!1,width:"8%",priority:"medium"},{key:"workOrders",label:"Work Orders",sortable:!1,width:"8%",priority:"low"},{key:"actions",label:"Actions",sortable:!1,width:"12%",essential:!0,priority:"high"}];return e?p.filter(L=>L.essential||L.priority==="high"):p}}}function kt(){const b=Ce(),{showNotification:i}=ke(),c=x(!1),v=x(null),C=async(n,u=!1,k=null)=>{c.value=!0,v.value=null;try{let f;return u&&k?(f=await b.updateLocation(k,n),i("success","Location updated successfully")):(f=await b.createLocation(n),i("success","Location created successfully")),f}catch(f){const V=u?"Failed to update location":"Failed to create location";throw v.value=f.message,i("error",V),console.error("Location submission error:",f),f}finally{c.value=!1}},P=async n=>{c.value=!0,v.value=null;try{await b.deleteLocation(n),i("success","Location deleted successfully")}catch(u){throw v.value=u.message,i("error","Failed to delete location"),console.error("Location deletion error:",u),u}finally{c.value=!1}},T=async()=>{c.value=!0,v.value=null;try{await b.refreshLocations(),i("success","Locations refreshed successfully")}catch(n){throw v.value=n.message,i("error","Failed to refresh locations"),console.error("Locations refresh error:",n),n}finally{c.value=!1}},z=async n=>{c.value=!0,v.value=null;try{return await b.getLocationById(parseInt(n))}catch(u){throw v.value=u.message,i("error","Failed to load location for editing"),console.error("Location load error:",u),u}finally{c.value=!1}},N=async(n={})=>{c.value=!0,v.value=null;try{i("info","Export feature coming soon")}catch(u){throw v.value=u.message,i("error","Failed to export locations"),console.error("Location export error:",u),u}finally{c.value=!1}},B=async(n,u,k)=>{if(!n())return{isValid:!1,type:"form",message:"Please fix the validation errors before submitting"};const f=u(k);return f.isValid?{isValid:!0}:{isValid:!1,type:"business",message:f.errors.join(", ")}};return{isProcessing:c,error:v,handleLocationSubmission:C,handleLocationDeletion:P,handleLocationLoad:z,handleLocationsRefresh:T,handleLocationExport:N,submitLocation:async({validateForm:n,validateBusinessRules:u,getFormData:k,processLocationData:f,isEditMode:V=!1,locationId:s=null,onSuccess:d=null,onError:w=null})=>{try{const I=k(),J=f(I),H=await B(n,u,J);if(!H.isValid)return i("error",H.message),w&&w(new Error(H.message)),{success:!1,error:H.message};const R=await C(J,V,s);return d&&d(R),{success:!0,data:R}}catch(I){return w&&w(I),{success:!1,error:I.message}}},validateLocationSubmission:B,handleLocationSearch:async(n,u={})=>{try{await b.updateSearchTerm(n),Object.keys(u).length>0&&await b.updateFilters(u)}catch(k){v.value=k.message,console.error("Location search error:",k)}},handleLocationPagination:async n=>{try{await b.changePage(n-1)}catch(u){v.value=u.message,console.error("Location pagination error:",u)}},handleLocationSorting:async n=>{try{await b.changeSorting(n.column,n.direction)}catch(u){v.value=u.message,console.error("Location sorting error:",u)}},clearError:()=>{v.value=null}}}function wt(){const b=we(),i=xe(),{showNotification:c}=ke(),v=r=>{b.push(`/locations/${r.id}`)},C=r=>{b.push(`/locations?edit=${r.id}`)},P=(r={})=>{const n={create:"true"};r.parentId&&(n.parentId=r.parentId),r.type&&(n.type=r.type),b.push({path:"/locations",query:n})},T=()=>{b.replace({path:"/locations"})};return{navigateToLocationDetail:v,navigateToLocationEdit:C,navigateToLocationCreate:P,navigateToLocationsList:T,handleLocationQueryParams:async(r,n,u)=>{const k=i.query.edit,f=i.query.create==="true",V=i.query.parentId,s=i.query.type;try{k?setTimeout(async()=>{try{const d=await u(parseInt(k));r(d),T()}catch{c("error","Failed to load location for editing"),T()}},500):f&&setTimeout(()=>{const d={};V&&(d.parentId=parseInt(V)),s&&(d.type=s),n(d),T()},500)}catch{c("error","Failed to handle navigation parameters"),T()}},getLocationRouteParams:()=>({editLocationId:i.query.edit?parseInt(i.query.edit):null,shouldCreate:i.query.create==="true",parentId:i.query.parentId?parseInt(i.query.parentId):null,locationType:i.query.type||null,searchTerm:i.query.search||"",status:i.query.status||"all",type:i.query.type||"",page:i.query.page?parseInt(i.query.page):1}),updateLocationRouteParams:r=>{const n={...i.query};Object.keys(r).forEach(u=>{r[u]!==null&&r[u]!==void 0&&r[u]!==""?n[u]=r[u]:delete n[u]}),b.replace({path:i.path,query:Object.keys(n).length>0?n:void 0})},navigateWithLocationFilters:r=>{const n={};r.search&&(n.search=r.search),r.status&&r.status!=="all"&&(n.status=r.status),r.type&&(n.type=r.type),r.parent&&(n.parent=r.parent),r.page&&r.page>1&&(n.page=r.page),b.push({path:"/locations",query:n})},getLocationBreadcrumbs:(r,n=[])=>{var V;const u=[{text:"Locations",to:"/locations"}];if(!r)return u;const k=[];let f=r;for(;f;)k.unshift({text:f.name,to:`/locations/${f.id}`}),(V=f.parentLocation)!=null&&V.id?f=n.find(s=>s.id===f.parentLocation.id):f=null;return[...u,...k]},handleLocationBack:(r=null)=>{history.length>1?b.back():b.push("/locations"),r&&r()},generateLocationDeepLink:(r,n={})=>{const u=window.location.origin;let k=`/locations/${r.id}`;const f={};n.action==="edit"&&(f.edit=r.id),n.parentId&&(f.parentId=n.parentId);const V=Object.keys(f).length>0?"?"+new URLSearchParams(f).toString():"";return`${u}${k}${V}`}}}const xt={class:"p-6"},Ct={class:"mb-6 grid grid-cols-1 md:grid-cols-4 gap-4"},Ft={class:"bg-white shadow rounded-lg overflow-hidden"},Tt={class:"flex items-center space-x-3"},Vt={class:"font-medium text-gray-900"},St={class:"text-sm text-gray-500"},It={class:"text-sm"},_t={class:"text-gray-600"},Pt={class:"text-sm"},Dt={class:"text-gray-900"},qt={key:0,class:"text-xs text-gray-500 mt-1"},At={class:"text-sm text-center"},Mt={class:"font-medium text-gray-900"},zt={class:"text-sm text-center"},Bt={class:"font-medium text-gray-900"},Ut={class:"flex items-center space-x-2"},Nt={class:"border-b border-gray-200 mb-6"},Ht={key:0,class:"space-y-6"},Ot={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},jt={class:"md:col-span-2"},Rt={key:0,class:"mt-1 text-sm text-red-600"},Et={key:1,class:"space-y-6"},$t={class:"space-y-4"},Gt={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},Qt={key:2,class:"space-y-6"},Wt={class:"space-y-4"},Zt={class:"flex items-center justify-between"},Jt={class:"flex items-center space-x-4"},Xt={key:0,class:"flex items-center text-sm text-gray-500"},Yt={key:0,class:"w-4 h-4 mr-2 text-amber-500 animate-pulse",fill:"currentColor",viewBox:"0 0 20 20"},Kt={key:1,class:"w-4 h-4 mr-2 text-green-500",fill:"currentColor",viewBox:"0 0 20 20"},ea={key:2},ta={key:3},aa={class:"flex space-x-3"},oa={class:"space-y-4"},na={class:"text-gray-600"},la={class:"text-gray-900"},sa={class:"flex justify-end space-x-3"},wa={__name:"LocationsListView",setup(b){we();const i=xe(),c=Ce(),{processLocationData:v,getValidParentLocations:C}=Lt(),{getTypeVariant:P,getStatusVariant:T,formatStatus:z,formatLocationStats:N,getStatusTabs:B,getLocationTableColumns:g}=bt(),{submitLocation:e,handleLocationDeletion:p,handleLocationsRefresh:L,handleLocationExport:r,handleLocationLoad:n,handleLocationSearch:u,handleLocationPagination:k,handleLocationSorting:f}=kt(),{navigateToLocationDetail:V,handleLocationQueryParams:s}=wt(),{formData:d,errors:w,activeTab:I,formTabs:J,typeOptions:H,statusOptions:R,teamOptions:Fe,isLastTab:Te,validateForm:Ve,resetForm:ue,getFormData:Se,populateForm:Ie,nextTab:_e}=ht(),{hasUnsavedChanges:te,lastSaveTime:X,restoreFormData:Pe,clearSavedData:ce,hasSavedData:de,getSavedDataInfo:De,markUserInteraction:qe,finishInitialization:Ae}=dt(d,{storageKey:"atlas_location_form_data",saveInterval:3e3,excludeFields:[]}),E=x(!1),pe=x(null),ae=x("all"),S=x({search:"",type:"",parent:"",status:""}),$=x(!1),Y=x("create"),G=x(null),Q=x(!1),K=x(null),oe=x(!1);x(!1);const Me=F(()=>c.loading.value),ze=F(()=>c.filteredLocations.value),me=F(()=>c.locationStats.value),ne=F(()=>Y.value==="edit"),Be=F(()=>N(me.value)),Ue=F(()=>X.value?new Date(X.value).toLocaleTimeString():""),ve=F(()=>C(c.miniLocations.value||[],G.value,d.value.type)),Ne=F(()=>B(me.value)),He=F(()=>{var m,t,o,W;return{currentPage:(((m=c.searchCriteria.value)==null?void 0:m.page)||0)+1,totalPages:((t=c.locations.value)==null?void 0:t.totalPages)||0,totalItems:((o=c.locations.value)==null?void 0:o.totalElements)||0,pageSize:((W=c.searchCriteria.value)==null?void 0:W.size)||10}}),Oe=F(()=>g(!1)),je=[{label:"All Types",value:""},...H.map(m=>({label:m.label,value:m.value}))],Re=[{label:"All Statuses",value:""},...R.map(m=>({label:m.label,value:m.value}))],Ee=pt.debounce(m=>{u(m,S.value)},300),ee=()=>{u(S.value.search,{type:S.value.type,parent:S.value.parent,status:S.value.status})},$e=m=>{ae.value=m,S.value.status=m==="all"?"":m,ee()},Ge=m=>{f(m)},Qe=m=>{k(m)},We=m=>{V(m)},le=async()=>{await L()},ge=()=>{G.value=null,Y.value="create",Ze(),de()||ue(),$.value=!0},Ze=()=>{Y.value==="create"&&de()&&(pe.value=De(),E.value=!0,console.log("✅ Found saved location data, showing restore notification"))},fe=m=>{G.value=m,Y.value="edit",Ie(m),Ae(),$.value=!0},Je=m=>{K.value=m,Q.value=!0},Xe=async()=>{try{await p(K.value.id),Q.value=!1,K.value=null,await le()}catch{}},se=()=>{$.value=!1,G.value=null,E.value=!1},Ye=async()=>{var m;oe.value=!0;try{(await e({validateForm:Ve,validateBusinessRules,getFormData:Se,processLocationData:v,isEditMode:ne.value,locationId:(m=G.value)==null?void 0:m.id})).success&&(ce(),se(),await le())}finally{oe.value=!1}},Ke=m=>{A(),_e()},et=()=>{Pe(),E.value=!1,console.log("Location form data restored successfully")},tt=()=>{ce(),E.value=!1,ue(),console.log("Location auto-saved data dismissed")},at=async()=>{await r(S.value)},ot=m=>c.getLocationDisplayName(m),ye=()=>{s(fe,ge,n)},A=()=>{console.log("🔥 Location user interaction detected!"),qe()},nt=m=>{I.value=m,A()};return lt(async()=>{await c.initializeLocations(),ye()}),st(()=>i.query,ye),(m,t)=>(D(),ie(mt,null,{header:y(()=>[h(vt,{title:"Locations",description:"Manage and organize facility locations and spaces",breadcrumbs:[{text:"Locations",to:null}]},{actions:y(()=>[h(a(M),{variant:"outline",size:"sm",onClick:at},{default:y(()=>t[19]||(t[19]=[l("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1),q(" Export ",-1)])),_:1,__:[19]}),h(a(M),{variant:"outline",size:"sm",onClick:le},{default:y(()=>t[20]||(t[20]=[l("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),q(" Refresh ",-1)])),_:1,__:[20]}),h(a(M),{variant:"primary",size:"sm",onClick:ge},{default:y(()=>t[21]||(t[21]=[l("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),q(" Add Location ",-1)])),_:1,__:[21]})]),stats:y(()=>[h(a(gt),{stats:Be.value},null,8,["stats"])]),tabs:y(()=>[h(a(be),{modelValue:ae.value,"onUpdate:modelValue":t[0]||(t[0]=o=>ae.value=o),tabs:Ne.value,onTabChange:$e},null,8,["modelValue","tabs"])]),_:1})]),default:y(()=>[l("div",xt,[l("div",Ct,[h(a(Z),{modelValue:S.value.search,"onUpdate:modelValue":t[1]||(t[1]=o=>S.value.search=o),placeholder:"Search locations...",onInput:a(Ee)},{prepend:y(()=>t[22]||(t[22]=[l("svg",{class:"w-4 h-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1)])),_:1},8,["modelValue","onInput"]),h(a(j),{modelValue:S.value.type,"onUpdate:modelValue":[t[2]||(t[2]=o=>S.value.type=o),ee],placeholder:"Filter by Type",options:je},null,8,["modelValue"]),h(a(j),{modelValue:S.value.parent,"onUpdate:modelValue":[t[3]||(t[3]=o=>S.value.parent=o),ee],placeholder:"Filter by Parent Location",options:ve.value},null,8,["modelValue","options"]),h(a(j),{modelValue:S.value.status,"onUpdate:modelValue":[t[4]||(t[4]=o=>S.value.status=o),ee],placeholder:"Filter by Status",options:Re},null,8,["modelValue"])]),l("div",Ft,[h(a(ft),{columns:Oe.value,data:ze.value,loading:Me.value,pagination:He.value,"empty-message":"No locations found",onSortChange:Ge,onPageChange:Qe,onRowClick:We},{"column-name":y(({row:o})=>[l("div",Tt,[t[23]||(t[23]=l("div",{class:"w-8 h-8 bg-green-100 rounded-lg flex items-center justify-center"},[l("svg",{class:"w-4 h-4 text-green-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z"}),l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 11a3 3 0 11-6 0 3 3 0 016 0z"})])],-1)),l("div",null,[l("h4",Vt,_(o.name),1),l("p",St,_(o.description||"No description"),1)])])]),"column-hierarchy":y(({row:o})=>[l("div",It,[l("span",_t,_(ot(o)),1)])]),"column-address":y(({row:o})=>[l("div",Pt,[l("span",Dt,_(o.address||"No address"),1),o.latitude&&o.longitude?(D(),U("div",qt,_(o.latitude.toFixed(4))+", "+_(o.longitude.toFixed(4)),1)):O("",!0)])]),"column-type":y(({row:o})=>[h(a(Le),{variant:a(P)(o.type)},{default:y(()=>[q(_(o.type||"General"),1)]),_:2},1032,["variant"])]),"column-status":y(({row:o})=>[h(a(Le),{variant:a(T)(o.status)},{default:y(()=>[q(_(a(z)(o.status)),1)]),_:2},1032,["variant"])]),"column-assets":y(({row:o})=>[l("div",At,[l("span",Mt,_(o.assetsCount||0),1),t[24]||(t[24]=l("span",{class:"text-gray-500 block text-xs"},"Assets",-1))])]),"column-workOrders":y(({row:o})=>[l("div",zt,[l("span",Bt,_(o.workOrdersCount||0),1),t[25]||(t[25]=l("span",{class:"text-gray-500 block text-xs"},"Work Orders",-1))])]),"column-actions":y(({row:o})=>[l("div",Ut,[h(a(M),{variant:"ghost",size:"xs",onClick:re(W=>m.viewLocation(o),["stop"]),title:"View Details"},{default:y(()=>t[26]||(t[26]=[l("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"}),l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"})],-1)])),_:2,__:[26]},1032,["onClick"]),h(a(M),{variant:"ghost",size:"xs",onClick:re(W=>fe(o),["stop"]),title:"Edit Location"},{default:y(()=>t[27]||(t[27]=[l("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1)])),_:2,__:[27]},1032,["onClick"]),h(a(M),{variant:"ghost",size:"xs",onClick:re(W=>Je(o),["stop"]),title:"Delete Location",class:"text-red-600 hover:text-red-700"},{default:y(()=>t[28]||(t[28]=[l("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1)])),_:2,__:[28]},1032,["onClick"])])]),_:1},8,["columns","data","loading","pagination"])]),h(a(he),{modelValue:$.value,"onUpdate:modelValue":t[16]||(t[16]=o=>$.value=o),title:ne.value?"Edit Location":"Create Location",size:"xl",onCancel:se},{footer:y(()=>[l("div",Zt,[l("div",Jt,[a(te)||a(X)?(D(),U("div",Xt,[a(te)?(D(),U("svg",Yt,t[31]||(t[31]=[l("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z","clip-rule":"evenodd"},null,-1)]))):(D(),U("svg",Kt,t[32]||(t[32]=[l("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z","clip-rule":"evenodd"},null,-1)]))),a(te)?(D(),U("span",ea,"Auto-saving...")):a(X)?(D(),U("span",ta,"Last saved "+_(Ue.value),1)):O("",!0)])):O("",!0)]),l("div",aa,[h(a(M),{variant:"secondary",onClick:se},{default:y(()=>t[33]||(t[33]=[q(" Cancel ",-1)])),_:1,__:[33]}),a(Te)?(D(),ie(a(M),{key:1,variant:"primary",loading:oe.value,onClick:Ye},{default:y(()=>[q(_(ne.value?"Update Location":"Create Location"),1)]),_:1},8,["loading"])):(D(),ie(a(M),{key:0,variant:"primary",onClick:t[15]||(t[15]=o=>Ke("next"))},{default:y(()=>t[34]||(t[34]=[q(" Next ",-1)])),_:1,__:[34]}))])])]),default:y(()=>[h(a(yt),{visible:E.value,"saved-data-info":pe.value,onRestore:et,onDismiss:tt},null,8,["visible","saved-data-info"]),l("div",Nt,[h(a(be),{modelValue:a(I),"onUpdate:modelValue":t[5]||(t[5]=o=>it(I)?I.value=o:null),tabs:a(J),onTabChange:nt},null,8,["modelValue","tabs"])]),a(I)==="basic"?(D(),U("div",Ht,[l("div",Ot,[h(a(Z),{modelValue:a(d).name,"onUpdate:modelValue":t[6]||(t[6]=o=>a(d).name=o),label:"Location Name",placeholder:"Enter location name",required:"",error:a(w).name,onInput:A},null,8,["modelValue","error"]),h(a(j),{modelValue:a(d).type,"onUpdate:modelValue":t[7]||(t[7]=o=>a(d).type=o),label:"Location Type",placeholder:"Select location type",options:a(H),error:a(w).type,onChange:A},null,8,["modelValue","options","error"]),l("div",jt,[t[29]||(t[29]=l("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Description",-1)),rt(l("textarea",{"onUpdate:modelValue":t[8]||(t[8]=o=>a(d).description=o),class:ut(["w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",{"border-red-300":a(w).description}]),placeholder:"Describe the location...",rows:"3",onInput:A},null,34),[[ct,a(d).description]]),a(w).description?(D(),U("p",Rt,_(a(w).description),1)):O("",!0)]),h(a(j),{modelValue:a(d).parentLocationId,"onUpdate:modelValue":t[9]||(t[9]=o=>a(d).parentLocationId=o),label:"Parent Location",placeholder:"Select parent location (optional)",options:ve.value,error:a(w).parentLocationId,onChange:A},null,8,["modelValue","options","error"]),h(a(j),{modelValue:a(d).status,"onUpdate:modelValue":t[10]||(t[10]=o=>a(d).status=o),label:"Status",placeholder:"Select status",options:a(R),error:a(w).status,onChange:A},null,8,["modelValue","options","error"])])])):O("",!0),a(I)==="address"?(D(),U("div",Et,[l("div",$t,[h(a(Z),{modelValue:a(d).address,"onUpdate:modelValue":t[11]||(t[11]=o=>a(d).address=o),label:"Street Address",placeholder:"Enter full address",error:a(w).address,onInput:A},null,8,["modelValue","error"]),l("div",Gt,[h(a(Z),{modelValue:a(d).latitude,"onUpdate:modelValue":t[12]||(t[12]=o=>a(d).latitude=o),label:"Latitude",placeholder:"e.g., 40.7128",type:"number",step:"any",error:a(w).latitude,onInput:A},null,8,["modelValue","error"]),h(a(Z),{modelValue:a(d).longitude,"onUpdate:modelValue":t[13]||(t[13]=o=>a(d).longitude=o),label:"Longitude",placeholder:"e.g., -74.0060",type:"number",step:"any",error:a(w).longitude,onInput:A},null,8,["modelValue","error"])])])])):O("",!0),a(I)==="assignments"?(D(),U("div",Qt,[l("div",Wt,[l("div",null,[t[30]||(t[30]=l("label",{class:"block text-sm font-medium text-gray-700 mb-2"}," Assigned Teams ",-1)),h(a(j),{modelValue:a(d).selectedTeams,"onUpdate:modelValue":t[14]||(t[14]=o=>a(d).selectedTeams=o),placeholder:"Select teams to assign to this location",options:a(Fe),multiple:"",error:a(w).teams,onChange:A},null,8,["modelValue","options","error"])])])])):O("",!0)]),_:1},8,["modelValue","title"]),h(a(he),{modelValue:Q.value,"onUpdate:modelValue":t[18]||(t[18]=o=>Q.value=o),title:"Delete Location",size:"md"},{footer:y(()=>[l("div",sa,[h(a(M),{variant:"secondary",onClick:t[17]||(t[17]=o=>Q.value=!1)},{default:y(()=>t[37]||(t[37]=[q(" Cancel ",-1)])),_:1,__:[37]}),h(a(M),{variant:"danger",onClick:Xe},{default:y(()=>t[38]||(t[38]=[q(" Delete Location ",-1)])),_:1,__:[38]})])]),default:y(()=>{var o;return[l("div",oa,[l("p",na,[t[35]||(t[35]=q(" Are you sure you want to delete ",-1)),l("strong",la,"'"+_((o=K.value)==null?void 0:o.name)+"'",1),t[36]||(t[36]=q("? This action cannot be undone. ",-1))])])]}),_:1},8,["modelValue"])])]),_:1}))}};export{wa as default}; diff --git a/frontend/dist/assets/LocationsView-OT-1gojY.js b/frontend/dist/assets/LocationsView-kjEylhU6.js similarity index 63% rename from frontend/dist/assets/LocationsView-OT-1gojY.js rename to frontend/dist/assets/LocationsView-kjEylhU6.js index f064c280..12ba525f 100644 --- a/frontend/dist/assets/LocationsView-OT-1gojY.js +++ b/frontend/dist/assets/LocationsView-kjEylhU6.js @@ -1 +1 @@ -import{i as o,f as t,g as r}from"./index-BUdRbiwj.js";const a={__name:"LocationsView",setup(n){return(c,s)=>{const e=t("router-view");return r(),o(e)}}};export{a as default}; +import{i as o,f as t,g as r}from"./index-QAlcqU00.js";const a={__name:"LocationsView",setup(n){return(c,s)=>{const e=t("router-view");return r(),o(e)}}};export{a as default}; diff --git a/frontend/dist/assets/LoginView-DHbMd_ru.js b/frontend/dist/assets/LoginView-B4ND79y8.js similarity index 93% rename from frontend/dist/assets/LoginView-DHbMd_ru.js rename to frontend/dist/assets/LoginView-B4ND79y8.js index 895856b7..1a651a6e 100644 --- a/frontend/dist/assets/LoginView-DHbMd_ru.js +++ b/frontend/dist/assets/LoginView-B4ND79y8.js @@ -1 +1 @@ -import{_ as C,u as P,r as w,c as m,o as S,a as d,b as s,d as o,w as n,e as a,t as A,f as B,g as u,h as E,i as M,j as I,k as c,F as N,l as j}from"./index-BUdRbiwj.js";import{e as x,r as b}from"./validators-BsFa-KD7.js";import{F as _}from"./FPInput-CzR_dWoe.js";import{F as q}from"./FPCard-qHzcEQAE.js";import{F as L}from"./FPCheckbox-Bu8jNAEW.js";import{F as z}from"./FPAlert-qtmRrGXf.js";const D={class:"min-h-screen flex items-center justify-center bg-gradient-to-br from-primary-600 to-primary-800 py-12 px-4 sm:px-6 lg:px-8"},U={class:"max-w-md w-full space-y-8"},Y={class:"flex items-center justify-between"},H={key:0},R={key:1,class:"flex items-center"},T={class:"text-center"},$={class:"text-center"},G={class:"text-primary-100 text-sm"},J={__name:"LoginView",setup(K){const{login:h,loading:p,error:f}=P(),{success:V}=j(),t=w({email:"",password:"",rememberMe:!1}),i=w(!1),v=m(()=>{const r=[];return t.value.email&&x(t.value.email)!==!0&&r.push(x(t.value.email)),r}),y=m(()=>{const r=[];return t.value.password&&b(t.value.password)!==!0&&r.push(b(t.value.password)),r}),k=m(()=>new Date().getFullYear()),F=async()=>{try{await h(t.value),V("Successfully signed in!")}catch(r){console.error("Login error:",r)}};return S(()=>{const r=document.querySelector('input[type="email"]');r&&r.focus()}),(r,e)=>{const g=B("router-link");return u(),d("div",D,[s("div",U,[e[8]||(e[8]=s("div",{class:"text-center"},[s("h2",{class:"text-3xl font-bold text-white mb-2"},"Facility Plus"),s("p",{class:"text-primary-100"},"Sign in to your account")],-1)),o(a(q),{padding:"lg",class:"bg-white shadow-2xl"},{default:n(()=>[s("form",{onSubmit:E(F,["prevent"]),class:"space-y-6"},[o(a(_),{modelValue:t.value.email,"onUpdate:modelValue":e[0]||(e[0]=l=>t.value.email=l),label:"Email Address",type:"email",placeholder:"Enter your email","error-message":v.value.length>0?v.value[0]:"",required:"",class:"w-full"},null,8,["modelValue","error-message"]),o(a(_),{modelValue:t.value.password,"onUpdate:modelValue":e[1]||(e[1]=l=>t.value.password=l),label:"Password",type:i.value?"text":"password","append-icon":i.value?"mdi-eye":"mdi-eye-off","append-icon-clickable":"",placeholder:"Enter your password","error-message":y.value.length>0?y.value[0]:"",required:"",onAppendIconClick:e[2]||(e[2]=l=>i.value=!i.value),class:"w-full"},null,8,["modelValue","type","append-icon","error-message"]),s("div",Y,[o(a(L),{modelValue:t.value.rememberMe,"onUpdate:modelValue":e[3]||(e[3]=l=>t.value.rememberMe=l),label:"Remember me"},null,8,["modelValue"]),o(g,{to:"/forgot-password",class:"text-sm text-primary-600 hover:text-primary-700 font-medium transition-colors"},{default:n(()=>e[4]||(e[4]=[c(" Forgot password? ",-1)])),_:1,__:[4]})]),a(f)?(u(),M(a(z),{key:0,type:"error",message:a(f),class:"mb-4"},null,8,["message"])):I("",!0),o(a(N),{type:"submit",variant:"primary",size:"lg",block:"",loading:a(p),class:"w-full"},{default:n(()=>[a(p)?(u(),d("span",R,e[5]||(e[5]=[s("svg",{class:"animate-spin -ml-1 mr-3 h-4 w-4 text-white",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},[s("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"}),s("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})],-1),c(" Signing in... ",-1)]))):(u(),d("span",H,"Sign In"))]),_:1},8,["loading"]),e[7]||(e[7]=s("div",{class:"relative"},[s("div",{class:"absolute inset-0 flex items-center"},[s("div",{class:"w-full border-t border-gray-300"})]),s("div",{class:"relative flex justify-center text-sm"},[s("span",{class:"px-2 bg-white text-gray-500"},"Don't have an account?")])],-1)),s("div",T,[o(g,{to:"/register",class:"text-primary-600 hover:text-primary-700 font-medium transition-colors"},{default:n(()=>e[6]||(e[6]=[c(" Create your account ",-1)])),_:1,__:[6]})])],32)]),_:1}),s("div",$,[s("p",G," © "+A(k.value)+" Facility Plus. All rights reserved. ",1)])])])}}},se=C(J,[["__scopeId","data-v-c8761e5f"]]);export{se as default}; +import{_ as C,u as P,r as w,c as m,o as S,a as d,b as s,d as o,w as n,e as a,t as A,f as B,g as u,h as E,i as M,j as I,k as c,F as N,l as j}from"./index-QAlcqU00.js";import{e as x,r as b}from"./validators-BsFa-KD7.js";import{F as _}from"./FPInput-D5RURom0.js";import{F as q}from"./FPCard-AB6NRXg5.js";import{F as L}from"./FPCheckbox-DcRYwN3n.js";import{F as z}from"./FPAlert-CZx0ew6-.js";const D={class:"min-h-screen flex items-center justify-center bg-gradient-to-br from-primary-600 to-primary-800 py-12 px-4 sm:px-6 lg:px-8"},U={class:"max-w-md w-full space-y-8"},Y={class:"flex items-center justify-between"},H={key:0},R={key:1,class:"flex items-center"},T={class:"text-center"},$={class:"text-center"},G={class:"text-primary-100 text-sm"},J={__name:"LoginView",setup(K){const{login:h,loading:p,error:f}=P(),{success:V}=j(),t=w({email:"",password:"",rememberMe:!1}),i=w(!1),v=m(()=>{const r=[];return t.value.email&&x(t.value.email)!==!0&&r.push(x(t.value.email)),r}),y=m(()=>{const r=[];return t.value.password&&b(t.value.password)!==!0&&r.push(b(t.value.password)),r}),k=m(()=>new Date().getFullYear()),F=async()=>{try{await h(t.value),V("Successfully signed in!")}catch(r){console.error("Login error:",r)}};return S(()=>{const r=document.querySelector('input[type="email"]');r&&r.focus()}),(r,e)=>{const g=B("router-link");return u(),d("div",D,[s("div",U,[e[8]||(e[8]=s("div",{class:"text-center"},[s("h2",{class:"text-3xl font-bold text-white mb-2"},"Facility Plus"),s("p",{class:"text-primary-100"},"Sign in to your account")],-1)),o(a(q),{padding:"lg",class:"bg-white shadow-2xl"},{default:n(()=>[s("form",{onSubmit:E(F,["prevent"]),class:"space-y-6"},[o(a(_),{modelValue:t.value.email,"onUpdate:modelValue":e[0]||(e[0]=l=>t.value.email=l),label:"Email Address",type:"email",placeholder:"Enter your email","error-message":v.value.length>0?v.value[0]:"",required:"",class:"w-full"},null,8,["modelValue","error-message"]),o(a(_),{modelValue:t.value.password,"onUpdate:modelValue":e[1]||(e[1]=l=>t.value.password=l),label:"Password",type:i.value?"text":"password","append-icon":i.value?"mdi-eye":"mdi-eye-off","append-icon-clickable":"",placeholder:"Enter your password","error-message":y.value.length>0?y.value[0]:"",required:"",onAppendIconClick:e[2]||(e[2]=l=>i.value=!i.value),class:"w-full"},null,8,["modelValue","type","append-icon","error-message"]),s("div",Y,[o(a(L),{modelValue:t.value.rememberMe,"onUpdate:modelValue":e[3]||(e[3]=l=>t.value.rememberMe=l),label:"Remember me"},null,8,["modelValue"]),o(g,{to:"/forgot-password",class:"text-sm text-primary-600 hover:text-primary-700 font-medium transition-colors"},{default:n(()=>e[4]||(e[4]=[c(" Forgot password? ",-1)])),_:1,__:[4]})]),a(f)?(u(),M(a(z),{key:0,type:"error",message:a(f),class:"mb-4"},null,8,["message"])):I("",!0),o(a(N),{type:"submit",variant:"primary",size:"lg",block:"",loading:a(p),class:"w-full"},{default:n(()=>[a(p)?(u(),d("span",R,e[5]||(e[5]=[s("svg",{class:"animate-spin -ml-1 mr-3 h-4 w-4 text-white",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},[s("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"}),s("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})],-1),c(" Signing in... ",-1)]))):(u(),d("span",H,"Sign In"))]),_:1},8,["loading"]),e[7]||(e[7]=s("div",{class:"relative"},[s("div",{class:"absolute inset-0 flex items-center"},[s("div",{class:"w-full border-t border-gray-300"})]),s("div",{class:"relative flex justify-center text-sm"},[s("span",{class:"px-2 bg-white text-gray-500"},"Don't have an account?")])],-1)),s("div",T,[o(g,{to:"/register",class:"text-primary-600 hover:text-primary-700 font-medium transition-colors"},{default:n(()=>e[6]||(e[6]=[c(" Create your account ",-1)])),_:1,__:[6]})])],32)]),_:1}),s("div",$,[s("p",G," © "+A(k.value)+" Facility Plus. All rights reserved. ",1)])])])}}},se=C(J,[["__scopeId","data-v-c8761e5f"]]);export{se as default}; diff --git a/frontend/dist/assets/MaintenanceView-5F1rzr4C.js b/frontend/dist/assets/MaintenanceView-CZWE_pAX.js similarity index 87% rename from frontend/dist/assets/MaintenanceView-5F1rzr4C.js rename to frontend/dist/assets/MaintenanceView-CZWE_pAX.js index d16f9a3b..5c692de8 100644 --- a/frontend/dist/assets/MaintenanceView-5F1rzr4C.js +++ b/frontend/dist/assets/MaintenanceView-CZWE_pAX.js @@ -1 +1 @@ -import{o as a,v as r,a as s,b as e,g as o}from"./index-BUdRbiwj.js";const c={class:"flex items-center justify-center min-h-screen"},l={__name:"MaintenanceView",setup(i){const n=r();return a(()=>{n.replace("/maintenance/preventive")}),(m,t)=>(o(),s("div",c,t[0]||(t[0]=[e("div",{class:"text-center"},[e("div",{class:"animate-spin rounded-full h-8 w-8 border-b-2 border-primary-600 mx-auto mb-4"}),e("p",{class:"text-gray-600"},"Redirecting to Maintenance Management...")],-1)])))}};export{l as default}; +import{o as a,v as r,a as s,b as e,g as o}from"./index-QAlcqU00.js";const c={class:"flex items-center justify-center min-h-screen"},l={__name:"MaintenanceView",setup(i){const n=r();return a(()=>{n.replace("/maintenance/preventive")}),(m,t)=>(o(),s("div",c,t[0]||(t[0]=[e("div",{class:"text-center"},[e("div",{class:"animate-spin rounded-full h-8 w-8 border-b-2 border-primary-600 mx-auto mb-4"}),e("p",{class:"text-gray-600"},"Redirecting to Maintenance Management...")],-1)])))}};export{l as default}; diff --git a/frontend/dist/assets/MeterDetailView-BRhPlyL8.js b/frontend/dist/assets/MeterDetailView-BPbRGZV7.js similarity index 90% rename from frontend/dist/assets/MeterDetailView-BRhPlyL8.js rename to frontend/dist/assets/MeterDetailView-BPbRGZV7.js index a3ac0ccb..f3ce835f 100644 --- a/frontend/dist/assets/MeterDetailView-BRhPlyL8.js +++ b/frontend/dist/assets/MeterDetailView-BPbRGZV7.js @@ -1 +1 @@ -import{r as g,c as E,s as Z,o as ee,i as f,w as u,v as te,g as o,b as e,d as m,a as r,j as n,t as a,e as d,F as _,k as x,n as y,af as se,aQ as ae,aR as le,ae as oe,aU as re,l as ne}from"./index-BUdRbiwj.js";import{u as ie,a as de,d as ue,M as me,U as ve,e as V}from"./useMeterManagement-CqU4p7ia.js";import{F as ce,a as ge}from"./FPPageHeader-CTG2L28r.js";import{F as P}from"./FPInput-CzR_dWoe.js";import{F as b}from"./FPCard-qHzcEQAE.js";import{F as U}from"./FPCheckbox-Bu8jNAEW.js";import{F as xe}from"./FPModal-DWGF1LV8.js";import{F as D}from"./FPBadge-BKY5dPnL.js";import{F as ye}from"./FPTabs-R71V25QN.js";const fe={class:"px-6 py-8"},pe={key:0,class:"flex items-center justify-center h-64"},ke={key:1,class:"text-center py-12"},be={class:"text-gray-600 mb-6"},he={key:2,class:"space-y-8"},_e={class:"grid grid-cols-1 md:grid-cols-4 gap-6"},we={class:"flex items-center"},Ce={class:"flex-shrink-0"},Me={class:"ml-4"},Re={class:"text-2xl font-bold text-gray-900"},Ve={class:"flex items-center"},De={class:"ml-4"},Fe={class:"text-lg font-semibold text-gray-900"},Be={class:"flex items-center"},Te={class:"ml-4"},ze={class:"text-lg font-semibold text-gray-900"},je={class:"flex items-center"},Ne={class:"ml-4"},Se={key:0,class:"text-xs text-red-500"},Ee={key:0,class:"space-y-6"},Pe={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},Ue={class:"space-y-2"},Le={class:"text-sm font-medium text-gray-900"},Ae={class:"text-sm font-medium text-gray-900"},He={class:"space-y-2"},Ie={key:0},qe={class:"text-sm font-medium text-gray-900"},Oe={key:1},$e={class:"text-sm font-medium text-gray-900"},Qe={key:2},We={class:"flex items-center space-x-2"},Ye={key:0,class:"text-xs text-gray-500"},Ge={class:"text-sm font-medium text-gray-900"},Je={key:0},Ke={class:"text-sm text-gray-700 leading-relaxed"},Xe={key:1,class:"space-y-6"},Ze={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},et={class:"space-y-3"},tt={class:"text-sm font-medium text-gray-900"},st={key:0},at={class:"text-sm font-medium text-gray-900"},lt={key:1},ot={class:"text-sm font-medium text-gray-900"},rt={key:2},nt={class:"text-sm font-medium text-orange-600"},it={key:3},dt={class:"text-sm font-medium text-red-600"},ut={class:"space-y-3"},mt={class:"text-sm font-medium text-gray-900"},vt={key:0},ct={class:"text-sm font-medium text-gray-900"},gt={key:1},xt={key:0,class:"text-xs text-red-500 ml-2"},yt={class:"border-t pt-6"},ft={class:"space-y-3"},pt={class:"flex items-center"},kt={class:"flex items-center"},bt={class:"flex items-center"},ht={key:2,class:"space-y-6"},_t={class:"flex items-center justify-between"},wt={class:"space-y-4"},Ct={key:0},Mt={class:"bg-gray-50 rounded-lg p-3 mb-4"},Rt={class:"font-medium text-gray-900"},Vt={class:"text-sm text-gray-600"},Dt={class:"text-xs text-gray-500 mt-1"},Ft={class:"block text-sm font-medium text-gray-700 mb-2"},Bt=["required"],Tt={key:0,class:"mt-1 text-sm text-red-600"},zt={class:"space-y-2"},qt={__name:"MeterDetailView",setup(jt){const L=Z(),A=te(),H=ie(),{recordMeterReading:I}=de(),{success:q,error:O}=ne(),w=g(!1),h=g(null),s=g(null),p=g("basic"),k=g(!1),C=g(!1),v=g({...V}),c=g({}),$=E(()=>parseInt(L.params.id)),Q=E(()=>[{key:"basic",label:"Basic Information",icon:"info"},{key:"config",label:"Configuration",icon:"cog"},{key:"readings",label:"Reading History",icon:"chart"}]),F=async()=>{try{w.value=!0,h.value=null;const l=await H.fetchMeterById($.value);s.value=l}catch(l){h.value=l.message||"Failed to load meter details"}finally{w.value=!1}},W=()=>{A.push(`/meters?edit=${s.value.id}`)},B=()=>{v.value={...V,meterId:s.value.id,readingDate:new Date().toISOString().split("T")[0]},c.value={},k.value=!0},Y=async()=>{try{C.value=!0,c.value={},await I(s.value.id,v.value,s.value),q("Reading recorded successfully"),k.value=!1,await F()}catch(l){O(l.message||"Failed to record reading")}finally{C.value=!1}},G=()=>{k.value=!1,v.value={...V},c.value={}},T=l=>ue[l]||l,z=l=>me[l]||l,M=l=>l?new Date(l).toLocaleDateString():null,J=l=>{const t=ve.find(i=>i.value===l);return(t==null?void 0:t.label)||l},j=l=>l?new Date(l)l?new Date(l)({active:"success",inactive:"secondary",out_of_service:"error",maintenance:"warning",calibration_due:"warning",faulty:"error"})[l]||"secondary",K=l=>({active:"bg-green-100",inactive:"bg-gray-100",out_of_service:"bg-red-100",maintenance:"bg-yellow-100",calibration_due:"bg-orange-100",faulty:"bg-red-100"})[l]||"bg-gray-100",X=l=>({active:"text-green-600",inactive:"text-gray-600",out_of_service:"text-red-600",maintenance:"text-yellow-600",calibration_due:"text-orange-600",faulty:"text-red-600"})[l]||"text-gray-600";return ee(()=>{F()}),(l,t)=>(o(),f(ce,null,{header:u(()=>{var i,R;return[m(ge,{title:((i=s.value)==null?void 0:i.name)||"Meter Details",description:s.value?`Meter #${s.value.id} - ${s.value.unit}`:"Loading meter details...",breadcrumbs:[{text:"Meters",to:"/meters"},{text:((R=s.value)==null?void 0:R.name)||"Details",to:null}]},{actions:u(()=>[s.value?(o(),f(d(_),{key:0,variant:"outline",size:"sm",onClick:W},{default:u(()=>t[8]||(t[8]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1),x(" Edit Meter ",-1)])),_:1,__:[8]})):n("",!0),s.value&&s.value.status==="active"?(o(),f(d(_),{key:1,variant:"primary",size:"sm",onClick:B},{default:u(()=>t[9]||(t[9]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15.232 5.232l3.536 3.536m-2.036-5.036a2.5 2.5 0 113.536 3.536L6.5 21.036H3v-3.572L16.732 3.732z"})],-1),x(" Record Reading ",-1)])),_:1,__:[9]})):n("",!0)]),_:1},8,["title","description","breadcrumbs"])]}),default:u(()=>[e("div",fe,[w.value?(o(),r("div",pe,t[10]||(t[10]=[e("div",{class:"animate-spin rounded-full h-12 w-12 border-b-2 border-primary-600"},null,-1)]))):h.value?(o(),r("div",ke,[t[12]||(t[12]=e("svg",{class:"w-16 h-16 mx-auto text-gray-300 mb-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),t[13]||(t[13]=e("h3",{class:"text-lg font-medium text-gray-900 mb-2"},"Failed to load meter",-1)),e("p",be,a(h.value),1),m(d(_),{variant:"outline",onClick:t[0]||(t[0]=i=>l.$router.push("/meters"))},{default:u(()=>t[11]||(t[11]=[x(" Back to Meters ",-1)])),_:1,__:[11]})])):s.value?(o(),r("div",he,[e("div",_e,[m(d(b),null,{default:u(()=>[e("div",we,[e("div",Ce,[e("div",{class:y(["w-8 h-8 rounded-lg flex items-center justify-center",K(s.value.status)])},[(o(),r("svg",{class:y(["w-5 h-5",X(s.value.status)]),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},t[14]||(t[14]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"},null,-1)]),2))],2)]),e("div",Me,[t[15]||(t[15]=e("div",{class:"text-sm font-medium text-gray-500"},"Status",-1)),e("div",Re,[m(d(D),{variant:S(s.value.status)},{default:u(()=>[x(a(T(s.value.status)),1)]),_:1},8,["variant"])])])])]),_:1}),m(d(b),null,{default:u(()=>[e("div",Ve,[t[17]||(t[17]=e("div",{class:"flex-shrink-0"},[e("div",{class:"w-8 h-8 rounded-lg bg-blue-100 flex items-center justify-center"},[e("svg",{class:"w-5 h-5 text-blue-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A1.994 1.994 0 013 12V7a4 4 0 014-4z"})])])],-1)),e("div",De,[t[16]||(t[16]=e("div",{class:"text-sm font-medium text-gray-500"},"Type",-1)),e("div",Fe,a(z(s.value.type)),1)])])]),_:1}),m(d(b),null,{default:u(()=>[e("div",Be,[t[19]||(t[19]=e("div",{class:"flex-shrink-0"},[e("div",{class:"w-8 h-8 rounded-lg bg-green-100 flex items-center justify-center"},[e("svg",{class:"w-5 h-5 text-green-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"})])])],-1)),e("div",Te,[t[18]||(t[18]=e("div",{class:"text-sm font-medium text-gray-500"},"Current Reading",-1)),e("div",ze,a(s.value.formattedCurrentReading||"0")+" "+a(s.value.unit),1)])])]),_:1}),m(d(b),null,{default:u(()=>[e("div",je,[t[21]||(t[21]=e("div",{class:"flex-shrink-0"},[e("div",{class:"w-8 h-8 rounded-lg bg-purple-100 flex items-center justify-center"},[e("svg",{class:"w-5 h-5 text-purple-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})])])],-1)),e("div",Ne,[t[20]||(t[20]=e("div",{class:"text-sm font-medium text-gray-500"},"Next Reading Due",-1)),e("div",{class:y(["text-lg font-semibold text-gray-900",j(s.value.nextReadingDate)?"text-red-600":""])},a(M(s.value.nextReadingDate)||"Not scheduled"),3),j(s.value.nextReadingDate)?(o(),r("div",Se," Overdue ")):n("",!0)])])]),_:1})]),m(d(b),null,{default:u(()=>[m(d(ye),{modelValue:p.value,"onUpdate:modelValue":t[1]||(t[1]=i=>p.value=i),tabs:Q.value},{default:u(()=>[p.value==="basic"?(o(),r("div",Ee,[e("div",Pe,[e("div",null,[t[26]||(t[26]=e("h4",{class:"text-sm font-medium text-gray-900 mb-2"},"Meter Information",-1)),e("dl",Ue,[e("div",null,[t[22]||(t[22]=e("dt",{class:"text-sm text-gray-500"},"Name",-1)),e("dd",Le,a(s.value.name),1)]),e("div",null,[t[23]||(t[23]=e("dt",{class:"text-sm text-gray-500"},"Type",-1)),e("dd",Ae,a(z(s.value.type)),1)]),e("div",null,[t[24]||(t[24]=e("dt",{class:"text-sm text-gray-500"},"Unit",-1)),e("dd",null,[m(d(D),{variant:"secondary"},{default:u(()=>[x(a(s.value.unit),1)]),_:1})])]),e("div",null,[t[25]||(t[25]=e("dt",{class:"text-sm text-gray-500"},"Status",-1)),e("dd",null,[m(d(D),{variant:S(s.value.status)},{default:u(()=>[x(a(T(s.value.status)),1)]),_:1},8,["variant"])])])])]),e("div",null,[t[31]||(t[31]=e("h4",{class:"text-sm font-medium text-gray-900 mb-2"},"Assignment & Location",-1)),e("dl",He,[s.value.assetName?(o(),r("div",Ie,[t[27]||(t[27]=e("dt",{class:"text-sm text-gray-500"},"Asset",-1)),e("dd",qe,a(s.value.assetName),1)])):n("",!0),s.value.locationName?(o(),r("div",Oe,[t[28]||(t[28]=e("dt",{class:"text-sm text-gray-500"},"Location",-1)),e("dd",$e,a(s.value.locationName),1)])):n("",!0),s.value.users&&s.value.users.length>0?(o(),r("div",Qe,[t[29]||(t[29]=e("dt",{class:"text-sm text-gray-500"},"Assigned Users",-1)),e("dd",We,[(o(!0),r(se,null,ae(s.value.users.slice(0,3),(i,R)=>(o(),f(d(le),{key:i.id,user:i,size:"sm"},null,8,["user"]))),128)),s.value.users.length>3?(o(),r("span",Ye," +"+a(s.value.users.length-3)+" more ",1)):n("",!0)])])):n("",!0),e("div",null,[t[30]||(t[30]=e("dt",{class:"text-sm text-gray-500"},"Reading Frequency",-1)),e("dd",Ge,a(J(s.value.updateFrequency)),1)])])])]),s.value.description?(o(),r("div",Je,[t[32]||(t[32]=e("h4",{class:"text-sm font-medium text-gray-900 mb-2"},"Description",-1)),e("p",Ke,a(s.value.description),1)])):n("",!0)])):n("",!0),p.value==="config"?(o(),r("div",Xe,[e("div",Ze,[e("div",null,[t[38]||(t[38]=e("h4",{class:"text-sm font-medium text-gray-900 mb-4"},"Reading Configuration",-1)),e("dl",et,[e("div",null,[t[33]||(t[33]=e("dt",{class:"text-sm text-gray-500"},"Decimal Places",-1)),e("dd",tt,a(s.value.decimalPlaces||2),1)]),s.value.minValue!==null?(o(),r("div",st,[t[34]||(t[34]=e("dt",{class:"text-sm text-gray-500"},"Minimum Value",-1)),e("dd",at,a(s.value.minValue)+" "+a(s.value.unit),1)])):n("",!0),s.value.maxValue!==null?(o(),r("div",lt,[t[35]||(t[35]=e("dt",{class:"text-sm text-gray-500"},"Maximum Value",-1)),e("dd",ot,a(s.value.maxValue)+" "+a(s.value.unit),1)])):n("",!0),s.value.warningThreshold!==null?(o(),r("div",rt,[t[36]||(t[36]=e("dt",{class:"text-sm text-gray-500"},"Warning Threshold",-1)),e("dd",nt,a(s.value.warningThreshold)+" "+a(s.value.unit),1)])):n("",!0),s.value.criticalThreshold!==null?(o(),r("div",it,[t[37]||(t[37]=e("dt",{class:"text-sm text-gray-500"},"Critical Threshold",-1)),e("dd",dt,a(s.value.criticalThreshold)+" "+a(s.value.unit),1)])):n("",!0)])]),e("div",null,[t[42]||(t[42]=e("h4",{class:"text-sm font-medium text-gray-900 mb-4"},"Calibration & Maintenance",-1)),e("dl",ut,[e("div",null,[t[39]||(t[39]=e("dt",{class:"text-sm text-gray-500"},"Calibration Interval",-1)),e("dd",mt,a(s.value.calibrationInterval||365)+" days",1)]),s.value.lastCalibrationDate?(o(),r("div",vt,[t[40]||(t[40]=e("dt",{class:"text-sm text-gray-500"},"Last Calibration",-1)),e("dd",ct,a(M(s.value.lastCalibrationDate)),1)])):n("",!0),s.value.nextCalibrationDate?(o(),r("div",gt,[t[41]||(t[41]=e("dt",{class:"text-sm text-gray-500"},"Next Calibration Due",-1)),e("dd",{class:y(["text-sm font-medium",N(s.value.nextCalibrationDate)?"text-red-600":"text-gray-900"])},[x(a(M(s.value.nextCalibrationDate))+" ",1),N(s.value.nextCalibrationDate)?(o(),r("span",xt,"(Overdue)")):n("",!0)],2)])):n("",!0)])])]),e("div",yt,[t[46]||(t[46]=e("h4",{class:"text-sm font-medium text-gray-900 mb-4"},"Reading Behavior",-1)),e("div",ft,[e("div",pt,[t[43]||(t[43]=e("svg",{class:"w-5 h-5 text-gray-400 mr-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),e("span",{class:y(["text-sm",s.value.isMonotonic?"text-green-600":"text-gray-500"])},a(s.value.isMonotonic?"Monotonic readings (values can only increase)":"Non-monotonic readings allowed"),3)]),e("div",kt,[t[44]||(t[44]=e("svg",{class:"w-5 h-5 text-gray-400 mr-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),e("span",{class:y(["text-sm",s.value.allowNegativeReadings?"text-green-600":"text-gray-500"])},a(s.value.allowNegativeReadings?"Negative readings allowed":"Negative readings not allowed"),3)]),e("div",bt,[t[45]||(t[45]=e("svg",{class:"w-5 h-5 text-gray-400 mr-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),e("span",{class:y(["text-sm",s.value.requiresComment?"text-orange-600":"text-gray-500"])},a(s.value.requiresComment?"Comment required with readings":"Comments optional for readings"),3)])])])])):n("",!0),p.value==="readings"?(o(),r("div",ht,[e("div",_t,[t[48]||(t[48]=e("h4",{class:"text-lg font-medium text-gray-900"},"Reading History",-1)),s.value.status==="active"?(o(),f(d(_),{key:0,variant:"primary",size:"sm",onClick:B},{default:u(()=>t[47]||(t[47]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),x(" Add Reading ",-1)])),_:1,__:[47]})):n("",!0)]),t[49]||(t[49]=e("div",{class:"bg-gray-50 rounded-lg p-8 text-center"},[e("svg",{class:"w-12 h-12 mx-auto text-gray-400 mb-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"})]),e("h3",{class:"text-lg font-medium text-gray-900 mb-2"},"Reading History"),e("p",{class:"text-gray-600 mb-4"},"Historical readings and trends would be displayed here")],-1))])):n("",!0)]),_:1},8,["modelValue","tabs"])]),_:1})])):n("",!0)]),m(d(xe),{modelValue:k.value,"onUpdate:modelValue":t[7]||(t[7]=i=>k.value=i),title:"Record Meter Reading",onConfirm:Y,onCancel:G,"confirm-text":"Record Reading",loading:C.value},{default:u(()=>[e("div",wt,[s.value?(o(),r("div",Ct,[e("div",Mt,[e("h4",Rt,a(s.value.name),1),e("p",Vt,a(s.value.description),1),e("div",Dt," Current: "+a(s.value.formattedCurrentReading||"0")+" "+a(s.value.unit),1)]),m(d(P),{modelValue:v.value.value,"onUpdate:modelValue":t[2]||(t[2]=i=>v.value.value=i),label:"Reading Value",type:"number",step:Math.pow(10,-(s.value.decimalPlaces||2)),placeholder:"Enter reading value",required:"",error:c.value.value},null,8,["modelValue","step","error"]),m(d(P),{modelValue:v.value.readingDate,"onUpdate:modelValue":t[3]||(t[3]=i=>v.value.readingDate=i),type:"date",label:"Reading Date",placeholder:"Select reading date",error:c.value.readingDate},null,8,["modelValue","error"]),e("div",null,[e("label",Ft,a(s.value.requiresComment?"Comment (Required)":"Comment (Optional)"),1),oe(e("textarea",{"onUpdate:modelValue":t[4]||(t[4]=i=>v.value.comment=i),class:y(["w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",{"border-red-300":c.value.comment}]),placeholder:"Add any notes about this reading",rows:"3",required:s.value.requiresComment},null,10,Bt),[[re,v.value.comment]]),c.value.comment?(o(),r("p",Tt,a(c.value.comment),1)):n("",!0)]),e("div",zt,[m(d(U),{modelValue:v.value.isEstimated,"onUpdate:modelValue":t[5]||(t[5]=i=>v.value.isEstimated=i),label:"This is an estimated reading"},null,8,["modelValue"]),s.value.isMonotonic?(o(),f(d(U),{key:0,modelValue:v.value.isRollover,"onUpdate:modelValue":t[6]||(t[6]=i=>v.value.isRollover=i),label:"This is a rollover reading (meter reset to zero)"},null,8,["modelValue"])):n("",!0)])])):n("",!0)])]),_:1},8,["modelValue","loading"])]),_:1}))}};export{qt as default}; +import{r as g,c as E,s as Z,o as ee,i as f,w as u,v as te,g as o,b as e,d as m,a as r,j as n,t as a,e as d,F as _,k as x,n as y,af as se,aR as ae,aS as le,ae as oe,aV as re,l as ne}from"./index-QAlcqU00.js";import{u as ie,a as de,d as ue,M as me,U as ve,e as V}from"./useMeterManagement-Ckbf_zVR.js";import{F as ce,a as ge}from"./FPPageHeader-CFIwZZgQ.js";import{F as P}from"./FPInput-D5RURom0.js";import{F as b}from"./FPCard-AB6NRXg5.js";import{F as L}from"./FPCheckbox-DcRYwN3n.js";import{F as xe}from"./FPModal-DMoPysvU.js";import{F as D}from"./FPBadge-DvOitM1C.js";import{F as ye}from"./FPTabs-qq-Tmb7J.js";const fe={class:"px-6 py-8"},pe={key:0,class:"flex items-center justify-center h-64"},ke={key:1,class:"text-center py-12"},be={class:"text-gray-600 mb-6"},he={key:2,class:"space-y-8"},_e={class:"grid grid-cols-1 md:grid-cols-4 gap-6"},we={class:"flex items-center"},Ce={class:"flex-shrink-0"},Me={class:"ml-4"},Re={class:"text-2xl font-bold text-gray-900"},Ve={class:"flex items-center"},De={class:"ml-4"},Fe={class:"text-lg font-semibold text-gray-900"},Be={class:"flex items-center"},Te={class:"ml-4"},ze={class:"text-lg font-semibold text-gray-900"},Se={class:"flex items-center"},je={class:"ml-4"},Ne={key:0,class:"text-xs text-red-500"},Ee={key:0,class:"space-y-6"},Pe={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},Le={class:"space-y-2"},Ue={class:"text-sm font-medium text-gray-900"},Ae={class:"text-sm font-medium text-gray-900"},He={class:"space-y-2"},Ie={key:0},qe={class:"text-sm font-medium text-gray-900"},Oe={key:1},$e={class:"text-sm font-medium text-gray-900"},Qe={key:2},We={class:"flex items-center space-x-2"},Ye={key:0,class:"text-xs text-gray-500"},Ge={class:"text-sm font-medium text-gray-900"},Je={key:0},Ke={class:"text-sm text-gray-700 leading-relaxed"},Xe={key:1,class:"space-y-6"},Ze={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},et={class:"space-y-3"},tt={class:"text-sm font-medium text-gray-900"},st={key:0},at={class:"text-sm font-medium text-gray-900"},lt={key:1},ot={class:"text-sm font-medium text-gray-900"},rt={key:2},nt={class:"text-sm font-medium text-orange-600"},it={key:3},dt={class:"text-sm font-medium text-red-600"},ut={class:"space-y-3"},mt={class:"text-sm font-medium text-gray-900"},vt={key:0},ct={class:"text-sm font-medium text-gray-900"},gt={key:1},xt={key:0,class:"text-xs text-red-500 ml-2"},yt={class:"border-t pt-6"},ft={class:"space-y-3"},pt={class:"flex items-center"},kt={class:"flex items-center"},bt={class:"flex items-center"},ht={key:2,class:"space-y-6"},_t={class:"flex items-center justify-between"},wt={class:"space-y-4"},Ct={key:0},Mt={class:"bg-gray-50 rounded-lg p-3 mb-4"},Rt={class:"font-medium text-gray-900"},Vt={class:"text-sm text-gray-600"},Dt={class:"text-xs text-gray-500 mt-1"},Ft={class:"block text-sm font-medium text-gray-700 mb-2"},Bt=["required"],Tt={key:0,class:"mt-1 text-sm text-red-600"},zt={class:"space-y-2"},qt={__name:"MeterDetailView",setup(St){const U=Z(),A=te(),H=ie(),{recordMeterReading:I}=de(),{success:q,error:O}=ne(),w=g(!1),h=g(null),s=g(null),p=g("basic"),k=g(!1),C=g(!1),v=g({...V}),c=g({}),$=E(()=>parseInt(U.params.id)),Q=E(()=>[{key:"basic",label:"Basic Information",icon:"info"},{key:"config",label:"Configuration",icon:"cog"},{key:"readings",label:"Reading History",icon:"chart"}]),F=async()=>{try{w.value=!0,h.value=null;const l=await H.fetchMeterById($.value);s.value=l}catch(l){h.value=l.message||"Failed to load meter details"}finally{w.value=!1}},W=()=>{A.push(`/meters?edit=${s.value.id}`)},B=()=>{v.value={...V,meterId:s.value.id,readingDate:new Date().toISOString().split("T")[0]},c.value={},k.value=!0},Y=async()=>{try{C.value=!0,c.value={},await I(s.value.id,v.value,s.value),q("Reading recorded successfully"),k.value=!1,await F()}catch(l){O(l.message||"Failed to record reading")}finally{C.value=!1}},G=()=>{k.value=!1,v.value={...V},c.value={}},T=l=>ue[l]||l,z=l=>me[l]||l,M=l=>l?new Date(l).toLocaleDateString():null,J=l=>{const t=ve.find(i=>i.value===l);return(t==null?void 0:t.label)||l},S=l=>l?new Date(l)l?new Date(l)({active:"success",inactive:"secondary",out_of_service:"error",maintenance:"warning",calibration_due:"warning",faulty:"error"})[l]||"secondary",K=l=>({active:"bg-green-100",inactive:"bg-gray-100",out_of_service:"bg-red-100",maintenance:"bg-yellow-100",calibration_due:"bg-orange-100",faulty:"bg-red-100"})[l]||"bg-gray-100",X=l=>({active:"text-green-600",inactive:"text-gray-600",out_of_service:"text-red-600",maintenance:"text-yellow-600",calibration_due:"text-orange-600",faulty:"text-red-600"})[l]||"text-gray-600";return ee(()=>{F()}),(l,t)=>(o(),f(ce,null,{header:u(()=>{var i,R;return[m(ge,{title:((i=s.value)==null?void 0:i.name)||"Meter Details",description:s.value?`Meter #${s.value.id} - ${s.value.unit}`:"Loading meter details...",breadcrumbs:[{text:"Meters",to:"/meters"},{text:((R=s.value)==null?void 0:R.name)||"Details",to:null}]},{actions:u(()=>[s.value?(o(),f(d(_),{key:0,variant:"outline",size:"sm",onClick:W},{default:u(()=>t[8]||(t[8]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1),x(" Edit Meter ",-1)])),_:1,__:[8]})):n("",!0),s.value&&s.value.status==="active"?(o(),f(d(_),{key:1,variant:"primary",size:"sm",onClick:B},{default:u(()=>t[9]||(t[9]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15.232 5.232l3.536 3.536m-2.036-5.036a2.5 2.5 0 113.536 3.536L6.5 21.036H3v-3.572L16.732 3.732z"})],-1),x(" Record Reading ",-1)])),_:1,__:[9]})):n("",!0)]),_:1},8,["title","description","breadcrumbs"])]}),default:u(()=>[e("div",fe,[w.value?(o(),r("div",pe,t[10]||(t[10]=[e("div",{class:"animate-spin rounded-full h-12 w-12 border-b-2 border-primary-600"},null,-1)]))):h.value?(o(),r("div",ke,[t[12]||(t[12]=e("svg",{class:"w-16 h-16 mx-auto text-gray-300 mb-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),t[13]||(t[13]=e("h3",{class:"text-lg font-medium text-gray-900 mb-2"},"Failed to load meter",-1)),e("p",be,a(h.value),1),m(d(_),{variant:"outline",onClick:t[0]||(t[0]=i=>l.$router.push("/meters"))},{default:u(()=>t[11]||(t[11]=[x(" Back to Meters ",-1)])),_:1,__:[11]})])):s.value?(o(),r("div",he,[e("div",_e,[m(d(b),null,{default:u(()=>[e("div",we,[e("div",Ce,[e("div",{class:y(["w-8 h-8 rounded-lg flex items-center justify-center",K(s.value.status)])},[(o(),r("svg",{class:y(["w-5 h-5",X(s.value.status)]),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},t[14]||(t[14]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"},null,-1)]),2))],2)]),e("div",Me,[t[15]||(t[15]=e("div",{class:"text-sm font-medium text-gray-500"},"Status",-1)),e("div",Re,[m(d(D),{variant:N(s.value.status)},{default:u(()=>[x(a(T(s.value.status)),1)]),_:1},8,["variant"])])])])]),_:1}),m(d(b),null,{default:u(()=>[e("div",Ve,[t[17]||(t[17]=e("div",{class:"flex-shrink-0"},[e("div",{class:"w-8 h-8 rounded-lg bg-blue-100 flex items-center justify-center"},[e("svg",{class:"w-5 h-5 text-blue-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A1.994 1.994 0 013 12V7a4 4 0 014-4z"})])])],-1)),e("div",De,[t[16]||(t[16]=e("div",{class:"text-sm font-medium text-gray-500"},"Type",-1)),e("div",Fe,a(z(s.value.type)),1)])])]),_:1}),m(d(b),null,{default:u(()=>[e("div",Be,[t[19]||(t[19]=e("div",{class:"flex-shrink-0"},[e("div",{class:"w-8 h-8 rounded-lg bg-green-100 flex items-center justify-center"},[e("svg",{class:"w-5 h-5 text-green-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"})])])],-1)),e("div",Te,[t[18]||(t[18]=e("div",{class:"text-sm font-medium text-gray-500"},"Current Reading",-1)),e("div",ze,a(s.value.formattedCurrentReading||"0")+" "+a(s.value.unit),1)])])]),_:1}),m(d(b),null,{default:u(()=>[e("div",Se,[t[21]||(t[21]=e("div",{class:"flex-shrink-0"},[e("div",{class:"w-8 h-8 rounded-lg bg-purple-100 flex items-center justify-center"},[e("svg",{class:"w-5 h-5 text-purple-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})])])],-1)),e("div",je,[t[20]||(t[20]=e("div",{class:"text-sm font-medium text-gray-500"},"Next Reading Due",-1)),e("div",{class:y(["text-lg font-semibold text-gray-900",S(s.value.nextReadingDate)?"text-red-600":""])},a(M(s.value.nextReadingDate)||"Not scheduled"),3),S(s.value.nextReadingDate)?(o(),r("div",Ne," Overdue ")):n("",!0)])])]),_:1})]),m(d(b),null,{default:u(()=>[m(d(ye),{modelValue:p.value,"onUpdate:modelValue":t[1]||(t[1]=i=>p.value=i),tabs:Q.value},{default:u(()=>[p.value==="basic"?(o(),r("div",Ee,[e("div",Pe,[e("div",null,[t[26]||(t[26]=e("h4",{class:"text-sm font-medium text-gray-900 mb-2"},"Meter Information",-1)),e("dl",Le,[e("div",null,[t[22]||(t[22]=e("dt",{class:"text-sm text-gray-500"},"Name",-1)),e("dd",Ue,a(s.value.name),1)]),e("div",null,[t[23]||(t[23]=e("dt",{class:"text-sm text-gray-500"},"Type",-1)),e("dd",Ae,a(z(s.value.type)),1)]),e("div",null,[t[24]||(t[24]=e("dt",{class:"text-sm text-gray-500"},"Unit",-1)),e("dd",null,[m(d(D),{variant:"secondary"},{default:u(()=>[x(a(s.value.unit),1)]),_:1})])]),e("div",null,[t[25]||(t[25]=e("dt",{class:"text-sm text-gray-500"},"Status",-1)),e("dd",null,[m(d(D),{variant:N(s.value.status)},{default:u(()=>[x(a(T(s.value.status)),1)]),_:1},8,["variant"])])])])]),e("div",null,[t[31]||(t[31]=e("h4",{class:"text-sm font-medium text-gray-900 mb-2"},"Assignment & Location",-1)),e("dl",He,[s.value.assetName?(o(),r("div",Ie,[t[27]||(t[27]=e("dt",{class:"text-sm text-gray-500"},"Asset",-1)),e("dd",qe,a(s.value.assetName),1)])):n("",!0),s.value.locationName?(o(),r("div",Oe,[t[28]||(t[28]=e("dt",{class:"text-sm text-gray-500"},"Location",-1)),e("dd",$e,a(s.value.locationName),1)])):n("",!0),s.value.users&&s.value.users.length>0?(o(),r("div",Qe,[t[29]||(t[29]=e("dt",{class:"text-sm text-gray-500"},"Assigned Users",-1)),e("dd",We,[(o(!0),r(se,null,ae(s.value.users.slice(0,3),(i,R)=>(o(),f(d(le),{key:i.id,user:i,size:"sm"},null,8,["user"]))),128)),s.value.users.length>3?(o(),r("span",Ye," +"+a(s.value.users.length-3)+" more ",1)):n("",!0)])])):n("",!0),e("div",null,[t[30]||(t[30]=e("dt",{class:"text-sm text-gray-500"},"Reading Frequency",-1)),e("dd",Ge,a(J(s.value.updateFrequency)),1)])])])]),s.value.description?(o(),r("div",Je,[t[32]||(t[32]=e("h4",{class:"text-sm font-medium text-gray-900 mb-2"},"Description",-1)),e("p",Ke,a(s.value.description),1)])):n("",!0)])):n("",!0),p.value==="config"?(o(),r("div",Xe,[e("div",Ze,[e("div",null,[t[38]||(t[38]=e("h4",{class:"text-sm font-medium text-gray-900 mb-4"},"Reading Configuration",-1)),e("dl",et,[e("div",null,[t[33]||(t[33]=e("dt",{class:"text-sm text-gray-500"},"Decimal Places",-1)),e("dd",tt,a(s.value.decimalPlaces||2),1)]),s.value.minValue!==null?(o(),r("div",st,[t[34]||(t[34]=e("dt",{class:"text-sm text-gray-500"},"Minimum Value",-1)),e("dd",at,a(s.value.minValue)+" "+a(s.value.unit),1)])):n("",!0),s.value.maxValue!==null?(o(),r("div",lt,[t[35]||(t[35]=e("dt",{class:"text-sm text-gray-500"},"Maximum Value",-1)),e("dd",ot,a(s.value.maxValue)+" "+a(s.value.unit),1)])):n("",!0),s.value.warningThreshold!==null?(o(),r("div",rt,[t[36]||(t[36]=e("dt",{class:"text-sm text-gray-500"},"Warning Threshold",-1)),e("dd",nt,a(s.value.warningThreshold)+" "+a(s.value.unit),1)])):n("",!0),s.value.criticalThreshold!==null?(o(),r("div",it,[t[37]||(t[37]=e("dt",{class:"text-sm text-gray-500"},"Critical Threshold",-1)),e("dd",dt,a(s.value.criticalThreshold)+" "+a(s.value.unit),1)])):n("",!0)])]),e("div",null,[t[42]||(t[42]=e("h4",{class:"text-sm font-medium text-gray-900 mb-4"},"Calibration & Maintenance",-1)),e("dl",ut,[e("div",null,[t[39]||(t[39]=e("dt",{class:"text-sm text-gray-500"},"Calibration Interval",-1)),e("dd",mt,a(s.value.calibrationInterval||365)+" days",1)]),s.value.lastCalibrationDate?(o(),r("div",vt,[t[40]||(t[40]=e("dt",{class:"text-sm text-gray-500"},"Last Calibration",-1)),e("dd",ct,a(M(s.value.lastCalibrationDate)),1)])):n("",!0),s.value.nextCalibrationDate?(o(),r("div",gt,[t[41]||(t[41]=e("dt",{class:"text-sm text-gray-500"},"Next Calibration Due",-1)),e("dd",{class:y(["text-sm font-medium",j(s.value.nextCalibrationDate)?"text-red-600":"text-gray-900"])},[x(a(M(s.value.nextCalibrationDate))+" ",1),j(s.value.nextCalibrationDate)?(o(),r("span",xt,"(Overdue)")):n("",!0)],2)])):n("",!0)])])]),e("div",yt,[t[46]||(t[46]=e("h4",{class:"text-sm font-medium text-gray-900 mb-4"},"Reading Behavior",-1)),e("div",ft,[e("div",pt,[t[43]||(t[43]=e("svg",{class:"w-5 h-5 text-gray-400 mr-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),e("span",{class:y(["text-sm",s.value.isMonotonic?"text-green-600":"text-gray-500"])},a(s.value.isMonotonic?"Monotonic readings (values can only increase)":"Non-monotonic readings allowed"),3)]),e("div",kt,[t[44]||(t[44]=e("svg",{class:"w-5 h-5 text-gray-400 mr-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),e("span",{class:y(["text-sm",s.value.allowNegativeReadings?"text-green-600":"text-gray-500"])},a(s.value.allowNegativeReadings?"Negative readings allowed":"Negative readings not allowed"),3)]),e("div",bt,[t[45]||(t[45]=e("svg",{class:"w-5 h-5 text-gray-400 mr-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),e("span",{class:y(["text-sm",s.value.requiresComment?"text-orange-600":"text-gray-500"])},a(s.value.requiresComment?"Comment required with readings":"Comments optional for readings"),3)])])])])):n("",!0),p.value==="readings"?(o(),r("div",ht,[e("div",_t,[t[48]||(t[48]=e("h4",{class:"text-lg font-medium text-gray-900"},"Reading History",-1)),s.value.status==="active"?(o(),f(d(_),{key:0,variant:"primary",size:"sm",onClick:B},{default:u(()=>t[47]||(t[47]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),x(" Add Reading ",-1)])),_:1,__:[47]})):n("",!0)]),t[49]||(t[49]=e("div",{class:"bg-gray-50 rounded-lg p-8 text-center"},[e("svg",{class:"w-12 h-12 mx-auto text-gray-400 mb-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"})]),e("h3",{class:"text-lg font-medium text-gray-900 mb-2"},"Reading History"),e("p",{class:"text-gray-600 mb-4"},"Historical readings and trends would be displayed here")],-1))])):n("",!0)]),_:1},8,["modelValue","tabs"])]),_:1})])):n("",!0)]),m(d(xe),{modelValue:k.value,"onUpdate:modelValue":t[7]||(t[7]=i=>k.value=i),title:"Record Meter Reading",onConfirm:Y,onCancel:G,"confirm-text":"Record Reading",loading:C.value},{default:u(()=>[e("div",wt,[s.value?(o(),r("div",Ct,[e("div",Mt,[e("h4",Rt,a(s.value.name),1),e("p",Vt,a(s.value.description),1),e("div",Dt," Current: "+a(s.value.formattedCurrentReading||"0")+" "+a(s.value.unit),1)]),m(d(P),{modelValue:v.value.value,"onUpdate:modelValue":t[2]||(t[2]=i=>v.value.value=i),label:"Reading Value",type:"number",step:Math.pow(10,-(s.value.decimalPlaces||2)),placeholder:"Enter reading value",required:"",error:c.value.value},null,8,["modelValue","step","error"]),m(d(P),{modelValue:v.value.readingDate,"onUpdate:modelValue":t[3]||(t[3]=i=>v.value.readingDate=i),type:"date",label:"Reading Date",placeholder:"Select reading date",error:c.value.readingDate},null,8,["modelValue","error"]),e("div",null,[e("label",Ft,a(s.value.requiresComment?"Comment (Required)":"Comment (Optional)"),1),oe(e("textarea",{"onUpdate:modelValue":t[4]||(t[4]=i=>v.value.comment=i),class:y(["w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",{"border-red-300":c.value.comment}]),placeholder:"Add any notes about this reading",rows:"3",required:s.value.requiresComment},null,10,Bt),[[re,v.value.comment]]),c.value.comment?(o(),r("p",Tt,a(c.value.comment),1)):n("",!0)]),e("div",zt,[m(d(L),{modelValue:v.value.isEstimated,"onUpdate:modelValue":t[5]||(t[5]=i=>v.value.isEstimated=i),label:"This is an estimated reading"},null,8,["modelValue"]),s.value.isMonotonic?(o(),f(d(L),{key:0,modelValue:v.value.isRollover,"onUpdate:modelValue":t[6]||(t[6]=i=>v.value.isRollover=i),label:"This is a rollover reading (meter reset to zero)"},null,8,["modelValue"])):n("",!0)])])):n("",!0)])]),_:1},8,["modelValue","loading"])]),_:1}))}};export{qt as default}; diff --git a/frontend/dist/assets/MetersListView-DK0MHuyn.js b/frontend/dist/assets/MetersListView-DimOX87s.js similarity index 79% rename from frontend/dist/assets/MetersListView-DK0MHuyn.js rename to frontend/dist/assets/MetersListView-DimOX87s.js index 33ee43ef..ce44c4bc 100644 --- a/frontend/dist/assets/MetersListView-DK0MHuyn.js +++ b/frontend/dist/assets/MetersListView-DimOX87s.js @@ -1 +1 @@ -import{r as d,c as k,o as la,s as oa,v as sa,i as P,w as r,l as na,g as i,b as l,d as s,e as t,F as b,n as B,k as C,h as Y,a as p,j as V,af as ra,aQ as ia,aR as ua,t as m,ae as pe,aU as ge}from"./index-BUdRbiwj.js";import{u as da,a as ma,M as X,b as fe,U as va,c as Z,d as ca,e as ee,f as D}from"./useMeterManagement-CqU4p7ia.js";import{u as pa}from"./assets-eZiqmOvX.js";import{u as ga}from"./locations-IQR_pcEX.js";import{u as fa}from"./useFormAutoSave-Jaawgo91.js";import{F as ya,a as ba}from"./FPPageHeader-CTG2L28r.js";import{F as M}from"./FPInput-CzR_dWoe.js";import{F as L}from"./FPCheckbox-Bu8jNAEW.js";import{F as R}from"./FPSelect-C7p47Ma2.js";import{F as ha}from"./FPStats-BGfZcDZc.js";import{F as xa}from"./FPTable-CU8C_NYc.js";import{F as ae}from"./FPModal-DWGF1LV8.js";import{F as ye}from"./FPBadge-BKY5dPnL.js";import{F as be}from"./FPTabs-R71V25QN.js";import{_ as ka}from"./FormRestoreNotification-DYBlXhOP.js";import"./FPCard-qHzcEQAE.js";const Va={class:"p-6"},Ca={class:"mb-6 grid grid-cols-1 md:grid-cols-5 gap-4"},Ma={class:"flex items-center space-x-2"},_a={class:"flex items-center space-x-3"},Fa={key:0,class:"flex-shrink-0 w-10 h-10"},Ra=["src","alt"],wa={key:1,class:"flex-shrink-0 w-10 h-10 bg-gray-100 rounded-lg flex items-center justify-center"},Ta={class:"text-sm font-medium text-gray-900"},Ua={class:"text-xs text-gray-500"},Da={class:"text-sm"},Ia={class:"font-medium text-gray-900"},Sa={class:"text-xs text-gray-500"},Aa={class:"text-sm"},Ea={key:0,class:"text-xs text-red-500 mt-1"},za={class:"flex items-center space-x-1"},Pa={key:0,class:"text-xs text-gray-500 ml-1"},Ba={key:1,class:"text-sm text-gray-400"},La={class:"flex items-center space-x-2"},Na={class:"space-y-6"},Oa={key:0,class:"space-y-4"},ja={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},qa={key:0,class:"mt-1 text-sm text-red-600"},Ha={key:1,class:"space-y-4"},$a={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},Ya={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},Qa={class:"space-y-3"},Wa={class:"flex justify-between pt-4 border-t"},Ka={key:1},Ga={class:"flex items-center justify-between"},Ja={class:"flex items-center space-x-4"},Xa={key:0,class:"flex items-center text-sm text-gray-500"},Za={key:0,class:"w-4 h-4 mr-2 text-amber-500 animate-pulse",fill:"currentColor",viewBox:"0 0 20 20"},et={key:1,class:"w-4 h-4 mr-2 text-green-500",fill:"currentColor",viewBox:"0 0 20 20"},at={key:2},tt={key:3},lt={class:"flex space-x-3"},ot={class:"space-y-4"},st={key:0},nt={class:"bg-gray-50 rounded-lg p-3 mb-4"},rt={class:"font-medium text-gray-900"},it={class:"text-sm text-gray-600"},ut={class:"text-xs text-gray-500 mt-1"},dt={class:"block text-sm font-medium text-gray-700 mb-2"},mt=["required"],vt={key:0,class:"mt-1 text-sm text-red-600"},ct={class:"space-y-2"},It={__name:"MetersListView",setup(pt){const te=oa(),Q=sa(),v=da(),le=pa(),oe=ga(),{success:I,error:w}=na(),{createMeter:he,updateMeter:xe,deleteMeter:ke,recordMeterReading:Ve,formatMeterForDisplay:se,error:N}=ma(),W=d(!1),T=d("all"),U=d(!1),S=d(!1),A=d(!1),E=d(null),g=d(null),K=d(!1),z=d("create"),h=d("basic"),n=d({...Z}),y=d({...ee}),u=d({}),_=d({}),O=d(!1),G=d(!1),f=d({search:"",type:"",asset:"",location:"",showDue:!1}),j=d({page:1,size:20,total:0,sortBy:"name",sortDirection:"asc"}),{hasUnsavedChanges:J,lastSaveTime:q,clearSavedData:ne,hasSavedData:Ce,getSavedDataInfo:Me,markUserInteraction:c,finishInitialization:_e,restoreFormData:Fe}=fa(n,{storageKey:"atlas_meter_form_data",saveInterval:3e3,excludeFields:[]}),H=d(!1),re=d(null),Re=[{key:"all",label:"All Meters",badge:k(()=>v.totalCount||0)},{key:"active",label:"Active",badge:k(()=>(v.activeMeters||[]).length)},{key:"due",label:"Due for Reading",badge:k(()=>(v.dueForReading||[]).length)},{key:"overdue",label:"Overdue",badge:k(()=>(v.overdueReadings||[]).length)}],we=[{key:"basic",label:"Basic Information",icon:"info"},{key:"config",label:"Configuration",icon:"cog"}],Te=[{key:"name",label:"Name",sortable:!0},{key:"type",label:"Type",sortable:!0},{key:"status",label:"Status",sortable:!0},{key:"currentReading",label:"Current Reading",sortable:!1},{key:"asset",label:"Asset",sortable:!1},{key:"nextReading",label:"Next Reading",sortable:!0,key:"nextReadingDate"},{key:"assignedUsers",label:"Assigned Users",sortable:!1},{key:"actions",label:"Actions",sortable:!1,width:"150px"}],Ue=k(()=>{let o=v.filteredMeters||[];return T.value==="active"?o=v.activeMeters||[]:T.value==="due"?o=v.dueForReading||[]:T.value==="overdue"&&(o=v.overdueReadings||[]),f.value.showDue&&(o=o.filter(a=>a&&a.isReadingDue)),o.filter(a=>a!=null).map(a=>{try{return se?se(a):a}catch(e){return console.warn("Error in formatMeterForDisplay:",e),a}}).filter(a=>a!=null)}),De=k(()=>[{label:"Total Meters",value:v.totalCount||0,color:"blue"},{label:"Active",value:(v.activeMeters||[]).length,color:"green"},{label:"Due for Reading",value:(v.dueForReading||[]).length,color:"orange"},{label:"Overdue",value:(v.overdueReadings||[]).length,color:"red"}]),Ie=k(()=>[{value:"",label:"All Types"},...Object.entries(X).map(([o,a])=>({value:fe[o],label:a}))]),ie=k(()=>{var a,e;const o=((e=(a=le.assets)==null?void 0:a.value)==null?void 0:e.content)||[];return[{value:"",label:"All Assets"},...o.map(x=>({value:x.id,label:x.name}))]}),ue=k(()=>{var a,e;const o=((e=(a=oe.locations)==null?void 0:a.value)==null?void 0:e.content)||[];return[{value:"",label:"All Locations"},...o.map(x=>({value:x.id,label:x.name}))]}),Se=k(()=>Object.entries(X).map(([o,a])=>({value:fe[o],label:a}))),Ae=k(()=>va.map(o=>({value:o.value,label:o.label}))),F=async()=>{try{W.value=!0,await Promise.all([v.fetchMeters(),le.fetchAssets({page:0,size:100}),oe.searchLocations({page:0,size:100})])}catch(o){w(o.message||"Failed to load data")}finally{W.value=!1}},Ee=()=>{F()},$=()=>{v.updateFilters(f.value)},ze=o=>{T.value=o},Pe=({key:o,direction:a})=>{j.value.sortBy=o,j.value.sortDirection=a,F()},Be=o=>{j.value.page=o,F()},Le=()=>{f.value.showDue=!f.value.showDue},Ne=()=>{f.value={search:"",type:"",asset:"",location:"",showDue:!1},v.updateFilters({})},Oe=async()=>{Fe()&&(H.value=!1,I("Your previously saved form data has been restored.","Form Data Restored"))},je=()=>{ne(),H.value=!1},qe=k(()=>{if(!q.value)return"";const o=new Date,a=new Date(q.value),e=Math.floor((o-a)/1e3);return e<60?`${e}s ago`:e<3600?`${Math.floor(e/60)}m ago`:`${Math.floor(e/3600)}h ago`}),de=()=>{z.value="create",n.value={...Z},h.value="basic",u.value={},U.value=!0},me=async o=>{try{z.value="edit",h.value="basic",u.value={};const a=await v.fetchMeterById(o);n.value={...a},U.value=!0}catch{w("Failed to load meter details")}},ve=o=>{Q.push(`/meters/${o.id}`)},He=async()=>{try{O.value=!0,u.value={},z.value==="create"?(await he(n.value),I("Meter created successfully")):(await xe(n.value.id,n.value),I("Meter updated successfully")),ne(),U.value=!1,await F()}catch(o){N.value&&(u.value={general:N.value}),w(o.message||"Failed to save meter")}finally{O.value=!1}},ce=()=>{U.value=!1,n.value={...Z},u.value={}},$e=()=>{h.value==="basic"&&(h.value="config")},Ye=()=>{h.value==="config"&&(h.value="basic")},Qe=o=>{g.value=o,y.value={...ee,meterId:o.id,readingDate:new Date().toISOString().split("T")[0]},_.value={},S.value=!0},We=async()=>{try{G.value=!0,_.value={},await Ve(g.value.id,y.value,g.value),I("Reading recorded successfully"),S.value=!1,g.value=null,await F()}catch(o){N.value&&(_.value={general:N.value}),w(o.message||"Failed to record reading")}finally{G.value=!1}},Ke=()=>{S.value=!1,g.value=null,y.value={...ee},_.value={}},Ge=o=>{E.value=o,A.value=!0},Je=async()=>{try{K.value=!0,await ke(E.value.id),I("Meter deleted successfully"),A.value=!1,E.value=null,await F()}catch{w("Failed to delete meter")}finally{K.value=!1}},Xe=()=>{A.value=!1,E.value=null},Ze=async()=>{try{const o=await v.exportMeters({format:"csv",fields:["name","type","status","unit","currentReading","assetName"]}),a=window.URL.createObjectURL(o),e=document.createElement("a");e.href=a,e.download="meters.csv",document.body.appendChild(e),e.click(),window.URL.revokeObjectURL(a),document.body.removeChild(e)}catch{w("Failed to export meters")}},ea=o=>X[o]||o,aa=o=>ca[o]||o,ta=o=>({[D.ACTIVE]:"success",[D.INACTIVE]:"secondary",[D.OUT_OF_SERVICE]:"error",[D.MAINTENANCE]:"warning",[D.CALIBRATION_DUE]:"warning",[D.FAULTY]:"error"})[o]||"secondary";return la(async()=>{if(await F(),_e(),Ce()){const e=Me();re.value=e,H.value=!0}const o=te.query.edit;o&&setTimeout(()=>{me(parseInt(o)),Q.replace({path:"/meters"})},500),te.query.create==="true"&&setTimeout(()=>{de(),Q.replace({path:"/meters"})},500)}),(o,a)=>(i(),P(ya,null,{header:r(()=>[s(ba,{title:"Meters",description:"Manage meters and track readings for assets and locations",breadcrumbs:[{text:"Meters",to:null}]},{actions:r(()=>[s(t(b),{variant:"outline",size:"sm",onClick:Ze},{default:r(()=>a[31]||(a[31]=[l("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1),C(" Export ",-1)])),_:1,__:[31]}),s(t(b),{variant:"outline",size:"sm",onClick:Ee},{default:r(()=>a[32]||(a[32]=[l("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),C(" Refresh ",-1)])),_:1,__:[32]}),s(t(b),{variant:"primary",size:"sm",onClick:de},{default:r(()=>a[33]||(a[33]=[l("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),C(" Add Meter ",-1)])),_:1,__:[33]})]),stats:r(()=>[s(t(ha),{stats:De.value},null,8,["stats"])]),tabs:r(()=>[s(t(be),{modelValue:T.value,"onUpdate:modelValue":a[0]||(a[0]=e=>T.value=e),tabs:Re,onTabChange:ze},null,8,["modelValue"])]),_:1})]),default:r(()=>[l("div",Va,[l("div",Ca,[s(t(M),{modelValue:f.value.search,"onUpdate:modelValue":a[1]||(a[1]=e=>f.value.search=e),placeholder:"Search meters...",onInput:$},{prepend:r(()=>a[34]||(a[34]=[l("svg",{class:"w-4 h-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1)])),_:1},8,["modelValue"]),s(t(R),{modelValue:f.value.type,"onUpdate:modelValue":[a[2]||(a[2]=e=>f.value.type=e),$],placeholder:"Filter by Type",options:Ie.value},null,8,["modelValue","options"]),s(t(R),{modelValue:f.value.asset,"onUpdate:modelValue":[a[3]||(a[3]=e=>f.value.asset=e),$],placeholder:"Filter by Asset",options:ie.value},null,8,["modelValue","options"]),s(t(R),{modelValue:f.value.location,"onUpdate:modelValue":[a[4]||(a[4]=e=>f.value.location=e),$],placeholder:"Filter by Location",options:ue.value},null,8,["modelValue","options"]),l("div",Ma,[s(t(b),{variant:"outline",size:"sm",class:B(f.value.showDue?"bg-orange-50 border-orange-200 text-orange-700":""),onClick:Le},{default:r(()=>a[35]||(a[35]=[l("svg",{class:"w-4 h-4 mr-1",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})],-1),C(" Due ",-1)])),_:1,__:[35]},8,["class"]),s(t(b),{variant:"ghost",size:"sm",onClick:Ne},{default:r(()=>a[36]||(a[36]=[C(" Clear All ",-1)])),_:1,__:[36]})])]),s(t(xa),{columns:Te,data:Ue.value,loading:W.value,pagination:j.value,"empty-message":"No meters found",onSortChange:Pe,onPageChange:Be,onRowClick:ve},{name:r(({row:e})=>[l("div",_a,[e.image?(i(),p("div",Fa,[l("img",{src:e.image.url,alt:e.name,class:"w-10 h-10 rounded-lg object-cover"},null,8,Ra)])):(i(),p("div",wa,a[37]||(a[37]=[l("svg",{class:"w-5 h-5 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"})],-1)]))),l("div",null,[l("div",Ta,m(e.name),1),l("div",Ua,m(e.unit),1)])])]),type:r(({row:e})=>[s(t(ye),{variant:"secondary"},{default:r(()=>[C(m(ea(e.type)),1)]),_:2},1024)]),status:r(({row:e})=>[s(t(ye),{variant:ta(e.status)},{default:r(()=>[C(m(aa(e.status)),1)]),_:2},1032,["variant"])]),currentReading:r(({row:e})=>[l("div",Da,[l("span",Ia,m(e.formattedCurrentReading),1),l("div",Sa,m(e.unit),1)])]),asset:r(({row:e})=>[l("span",{class:B(["text-sm",e.assetName?"text-gray-900":"text-gray-400"])},m(e.assetName||"No asset"),3)]),nextReading:r(({row:e})=>[l("div",Aa,[l("span",{class:B([e.readingStatusColor,"px-2 py-1 rounded-full text-xs font-medium"])},m(e.formattedNextReadingDate),3),e.isReadingOverdue?(i(),p("div",Ea," Overdue ")):V("",!0)])]),assignedUsers:r(({row:e})=>[l("div",za,[(i(!0),p(ra,null,ia(((e==null?void 0:e.users)||[]).slice(0,3),(x,gt)=>(i(),P(t(ua),{key:x.id,user:x,size:"sm"},null,8,["user"]))),128)),((e==null?void 0:e.users)||[]).length>3?(i(),p("span",Pa," +"+m(((e==null?void 0:e.users)||[]).length-3),1)):V("",!0),((e==null?void 0:e.users)||[]).length?V("",!0):(i(),p("span",Ba," Unassigned "))])]),actions:r(({row:e})=>[l("div",La,[s(t(b),{variant:"ghost",size:"sm",onClick:Y(x=>Qe(e),["stop"]),disabled:!e||e.status!=="active",title:"Record Reading"},{default:r(()=>a[38]||(a[38]=[l("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15.232 5.232l3.536 3.536m-2.036-5.036a2.5 2.5 0 113.536 3.536L6.5 21.036H3v-3.572L16.732 3.732z"})],-1)])),_:2,__:[38]},1032,["onClick","disabled"]),s(t(b),{variant:"ghost",size:"sm",onClick:Y(x=>ve(e),["stop"]),disabled:!e},{default:r(()=>a[39]||(a[39]=[l("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"}),l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"})],-1)])),_:2,__:[39]},1032,["onClick","disabled"]),s(t(b),{variant:"ghost",size:"sm",onClick:Y(x=>me(e==null?void 0:e.id),["stop"]),disabled:!(e!=null&&e.id)},{default:r(()=>a[40]||(a[40]=[l("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1)])),_:2,__:[40]},1032,["onClick","disabled"]),s(t(b),{variant:"ghost",size:"sm",class:"text-red-600 hover:text-red-700",onClick:Y(x=>Ge(e),["stop"]),disabled:!e},{default:r(()=>a[41]||(a[41]=[l("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1)])),_:2,__:[41]},1032,["onClick","disabled"])])]),_:1},8,["data","loading","pagination"])]),s(t(ae),{modelValue:U.value,"onUpdate:modelValue":a[23]||(a[23]=e=>U.value=e),title:z.value==="create"?"Create Meter":"Edit Meter",size:"xl",onCancel:ce},{footer:r(()=>[l("div",Ga,[l("div",Ja,[t(J)||t(q)?(i(),p("div",Xa,[t(J)?(i(),p("svg",Za,a[45]||(a[45]=[l("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z","clip-rule":"evenodd"},null,-1)]))):(i(),p("svg",et,a[46]||(a[46]=[l("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z","clip-rule":"evenodd"},null,-1)]))),t(J)?(i(),p("span",at,"Auto-saving...")):t(q)?(i(),p("span",tt,"Last saved "+m(qe.value),1)):V("",!0)])):V("",!0)]),l("div",lt,[s(t(b),{variant:"outline",onClick:ce,disabled:O.value},{default:r(()=>a[47]||(a[47]=[C(" Cancel ",-1)])),_:1,__:[47]},8,["disabled"]),s(t(b),{variant:"primary",onClick:He,loading:O.value},{default:r(()=>[C(m(z.value==="create"?"Create Meter":"Update Meter"),1)]),_:1},8,["loading"])])])]),default:r(()=>[s(t(ka),{visible:H.value,"saved-data-info":re.value,onRestore:Oe,onDismiss:je},null,8,["visible","saved-data-info"]),l("div",Na,[s(t(be),{modelValue:h.value,"onUpdate:modelValue":a[5]||(a[5]=e=>h.value=e),tabs:we},null,8,["modelValue"]),h.value==="basic"?(i(),p("div",Oa,[l("div",ja,[s(t(M),{modelValue:n.value.name,"onUpdate:modelValue":a[6]||(a[6]=e=>n.value.name=e),label:"Meter Name",placeholder:"Enter meter name",required:"",error:u.value.name,onInput:t(c)},null,8,["modelValue","error","onInput"]),s(t(R),{modelValue:n.value.type,"onUpdate:modelValue":a[7]||(a[7]=e=>n.value.type=e),label:"Meter Type",placeholder:"Select type",options:Se.value,required:"",error:u.value.type,onChange:t(c)},null,8,["modelValue","options","error","onChange"]),s(t(M),{modelValue:n.value.unit,"onUpdate:modelValue":a[8]||(a[8]=e=>n.value.unit=e),label:"Unit",placeholder:"e.g. kWh, hours, gallons",required:"",error:u.value.unit,onInput:t(c)},null,8,["modelValue","error","onInput"]),s(t(R),{modelValue:n.value.updateFrequency,"onUpdate:modelValue":a[9]||(a[9]=e=>n.value.updateFrequency=e),label:"Reading Frequency",placeholder:"Select frequency",options:Ae.value,required:"",error:u.value.updateFrequency,onChange:t(c)},null,8,["modelValue","options","error","onChange"])]),l("div",null,[a[42]||(a[42]=l("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Description",-1)),pe(l("textarea",{"onUpdate:modelValue":a[10]||(a[10]=e=>n.value.description=e),class:B(["w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",{"border-red-300":u.value.description}]),placeholder:"Describe the meter and its purpose",rows:"3",onInput:a[11]||(a[11]=(...e)=>t(c)&&t(c)(...e))},null,34),[[ge,n.value.description]]),u.value.description?(i(),p("p",qa,m(u.value.description),1)):V("",!0)])])):V("",!0),h.value==="config"?(i(),p("div",Ha,[l("div",$a,[s(t(R),{modelValue:n.value.assetId,"onUpdate:modelValue":a[12]||(a[12]=e=>n.value.assetId=e),label:"Asset",placeholder:"Select asset (optional)",options:ie.value,error:u.value.assetId,onChange:t(c)},null,8,["modelValue","options","error","onChange"]),s(t(R),{modelValue:n.value.locationId,"onUpdate:modelValue":a[13]||(a[13]=e=>n.value.locationId=e),label:"Location",placeholder:"Select location (optional)",options:ue.value,error:u.value.locationId,onChange:t(c)},null,8,["modelValue","options","error","onChange"]),s(t(M),{modelValue:n.value.decimalPlaces,"onUpdate:modelValue":a[14]||(a[14]=e=>n.value.decimalPlaces=e),label:"Decimal Places",type:"number",min:"0",max:"6",placeholder:"2",error:u.value.decimalPlaces,onInput:t(c)},null,8,["modelValue","error","onInput"]),s(t(M),{modelValue:n.value.calibrationInterval,"onUpdate:modelValue":a[15]||(a[15]=e=>n.value.calibrationInterval=e),label:"Calibration Interval (days)",type:"number",min:"1",placeholder:"365",error:u.value.calibrationInterval,onInput:t(c)},null,8,["modelValue","error","onInput"])]),l("div",Ya,[s(t(M),{modelValue:n.value.minValue,"onUpdate:modelValue":a[16]||(a[16]=e=>n.value.minValue=e),label:"Minimum Value",type:"number",step:"0.01",placeholder:"Optional",error:u.value.minValue,onInput:t(c)},null,8,["modelValue","error","onInput"]),s(t(M),{modelValue:n.value.maxValue,"onUpdate:modelValue":a[17]||(a[17]=e=>n.value.maxValue=e),label:"Maximum Value",type:"number",step:"0.01",placeholder:"Optional",error:u.value.maxValue,onInput:t(c)},null,8,["modelValue","error","onInput"]),s(t(M),{modelValue:n.value.warningThreshold,"onUpdate:modelValue":a[18]||(a[18]=e=>n.value.warningThreshold=e),label:"Warning Threshold",type:"number",step:"0.01",placeholder:"Optional",error:u.value.warningThreshold,onInput:t(c)},null,8,["modelValue","error","onInput"]),s(t(M),{modelValue:n.value.criticalThreshold,"onUpdate:modelValue":a[19]||(a[19]=e=>n.value.criticalThreshold=e),label:"Critical Threshold",type:"number",step:"0.01",placeholder:"Optional",error:u.value.criticalThreshold,onInput:t(c)},null,8,["modelValue","error","onInput"])]),l("div",Qa,[s(t(L),{modelValue:n.value.isMonotonic,"onUpdate:modelValue":a[20]||(a[20]=e=>n.value.isMonotonic=e),label:"Monotonic (values can only increase)",onChange:t(c)},null,8,["modelValue","onChange"]),s(t(L),{modelValue:n.value.allowNegativeReadings,"onUpdate:modelValue":a[21]||(a[21]=e=>n.value.allowNegativeReadings=e),label:"Allow negative readings",onChange:t(c)},null,8,["modelValue","onChange"]),s(t(L),{modelValue:n.value.requiresComment,"onUpdate:modelValue":a[22]||(a[22]=e=>n.value.requiresComment=e),label:"Require comment with readings",onChange:t(c)},null,8,["modelValue","onChange"])])])):V("",!0),l("div",Wa,[h.value!=="basic"?(i(),P(t(b),{key:0,variant:"outline",onClick:Ye},{default:r(()=>a[43]||(a[43]=[C(" Previous ",-1)])),_:1,__:[43]})):(i(),p("div",Ka)),h.value!=="config"?(i(),P(t(b),{key:2,variant:"outline",onClick:$e},{default:r(()=>a[44]||(a[44]=[C(" Next ",-1)])),_:1,__:[44]})):V("",!0)])])]),_:1},8,["modelValue","title"]),s(t(ae),{modelValue:S.value,"onUpdate:modelValue":a[29]||(a[29]=e=>S.value=e),title:"Record Meter Reading",onConfirm:We,onCancel:Ke,"confirm-text":"Record Reading",loading:G.value},{default:r(()=>[l("div",ot,[g.value?(i(),p("div",st,[l("div",nt,[l("h4",rt,m(g.value.name),1),l("p",it,m(g.value.description),1),l("div",ut," Current: "+m(g.value.formattedCurrentReading)+" "+m(g.value.unit),1)]),s(t(M),{modelValue:y.value.value,"onUpdate:modelValue":a[24]||(a[24]=e=>y.value.value=e),label:"Reading Value",type:"number",step:Math.pow(10,-(g.value.decimalPlaces||2)),placeholder:"Enter reading value",required:"",error:_.value.value},null,8,["modelValue","step","error"]),s(t(M),{modelValue:y.value.readingDate,"onUpdate:modelValue":a[25]||(a[25]=e=>y.value.readingDate=e),type:"date",label:"Reading Date",placeholder:"Select reading date",error:_.value.readingDate},null,8,["modelValue","error"]),l("div",null,[l("label",dt,m(g.value.requiresComment?"Comment (Required)":"Comment (Optional)"),1),pe(l("textarea",{"onUpdate:modelValue":a[26]||(a[26]=e=>y.value.comment=e),class:B(["w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",{"border-red-300":_.value.comment}]),placeholder:"Add any notes about this reading",rows:"3",required:g.value.requiresComment},null,10,mt),[[ge,y.value.comment]]),_.value.comment?(i(),p("p",vt,m(_.value.comment),1)):V("",!0)]),l("div",ct,[s(t(L),{modelValue:y.value.isEstimated,"onUpdate:modelValue":a[27]||(a[27]=e=>y.value.isEstimated=e),label:"This is an estimated reading"},null,8,["modelValue"]),g.value.isMonotonic?(i(),P(t(L),{key:0,modelValue:y.value.isRollover,"onUpdate:modelValue":a[28]||(a[28]=e=>y.value.isRollover=e),label:"This is a rollover reading (meter reset to zero)"},null,8,["modelValue"])):V("",!0)])])):V("",!0)])]),_:1},8,["modelValue","loading"]),s(t(ae),{modelValue:A.value,"onUpdate:modelValue":a[30]||(a[30]=e=>A.value=e),title:"Delete Meter",onConfirm:Je,onCancel:Xe,"confirm-text":"Delete","cancel-text":"Cancel","confirm-variant":"error",loading:K.value},{default:r(()=>{var e;return[l("p",null,'Are you sure you want to delete the meter "'+m((e=E.value)==null?void 0:e.name)+'"? This action cannot be undone and will remove all associated readings.',1)]}),_:1},8,["modelValue","loading"])]),_:1}))}};export{It as default}; +import{r as d,c as V,o as la,s as oa,v as sa,i as P,w as r,l as na,g as i,b as l,d as s,e as t,F as b,n as B,k as C,h as Y,a as p,j as k,af as ra,aR as ia,aS as ua,t as m,ae as pe,aV as ge}from"./index-QAlcqU00.js";import{u as da,a as ma,M as X,b as fe,U as va,c as Z,d as ca,e as ee,f as U}from"./useMeterManagement-Ckbf_zVR.js";import{u as pa}from"./assets-CvfPiugk.js";import{u as ga}from"./locations-ElrWcwNd.js";import{u as fa}from"./useFormAutoSave-BrW9Wl2Q.js";import{F as ya,a as ba}from"./FPPageHeader-CFIwZZgQ.js";import{F as M}from"./FPInput-D5RURom0.js";import{F as L}from"./FPCheckbox-DcRYwN3n.js";import{F as R}from"./FPSelect-j7n_x8eB.js";import{F as ha}from"./FPStats-DOY0PQQF.js";import{F as xa}from"./FPTable-CWvngIYd.js";import{F as ae}from"./FPModal-DMoPysvU.js";import{F as ye}from"./FPBadge-DvOitM1C.js";import{F as be}from"./FPTabs-qq-Tmb7J.js";import{_ as Va}from"./FormRestoreNotification-2Wflg1mH.js";import"./FPCard-AB6NRXg5.js";const ka={class:"p-6"},Ca={class:"mb-6 grid grid-cols-1 md:grid-cols-5 gap-4"},Ma={class:"flex items-center space-x-2"},_a={class:"flex items-center space-x-3"},Fa={key:0,class:"flex-shrink-0 w-10 h-10"},Ra=["src","alt"],wa={key:1,class:"flex-shrink-0 w-10 h-10 bg-gray-100 rounded-lg flex items-center justify-center"},Ta={class:"text-sm font-medium text-gray-900"},Da={class:"text-xs text-gray-500"},Ua={class:"text-sm"},Ia={class:"font-medium text-gray-900"},Sa={class:"text-xs text-gray-500"},Aa={class:"text-sm"},Ea={key:0,class:"text-xs text-red-500 mt-1"},za={class:"flex items-center space-x-1"},Pa={key:0,class:"text-xs text-gray-500 ml-1"},Ba={key:1,class:"text-sm text-gray-400"},La={class:"flex items-center space-x-2"},Na={class:"space-y-6"},Oa={key:0,class:"space-y-4"},ja={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},qa={key:0,class:"mt-1 text-sm text-red-600"},Ha={key:1,class:"space-y-4"},$a={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},Ya={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},Wa={class:"space-y-3"},Ka={class:"flex justify-between pt-4 border-t"},Qa={key:1},Ga={class:"flex items-center justify-between"},Ja={class:"flex items-center space-x-4"},Xa={key:0,class:"flex items-center text-sm text-gray-500"},Za={key:0,class:"w-4 h-4 mr-2 text-amber-500 animate-pulse",fill:"currentColor",viewBox:"0 0 20 20"},et={key:1,class:"w-4 h-4 mr-2 text-green-500",fill:"currentColor",viewBox:"0 0 20 20"},at={key:2},tt={key:3},lt={class:"flex space-x-3"},ot={class:"space-y-4"},st={key:0},nt={class:"bg-gray-50 rounded-lg p-3 mb-4"},rt={class:"font-medium text-gray-900"},it={class:"text-sm text-gray-600"},ut={class:"text-xs text-gray-500 mt-1"},dt={class:"block text-sm font-medium text-gray-700 mb-2"},mt=["required"],vt={key:0,class:"mt-1 text-sm text-red-600"},ct={class:"space-y-2"},It={__name:"MetersListView",setup(pt){const te=oa(),W=sa(),v=da(),le=pa(),oe=ga(),{success:I,error:w}=na(),{createMeter:he,updateMeter:xe,deleteMeter:Ve,recordMeterReading:ke,formatMeterForDisplay:se,error:N}=ma(),K=d(!1),T=d("all"),D=d(!1),S=d(!1),A=d(!1),E=d(null),g=d(null),Q=d(!1),z=d("create"),h=d("basic"),n=d({...Z}),y=d({...ee}),u=d({}),_=d({}),O=d(!1),G=d(!1),f=d({search:"",type:"",asset:"",location:"",showDue:!1}),j=d({page:1,size:20,total:0,sortBy:"name",sortDirection:"asc"}),{hasUnsavedChanges:J,lastSaveTime:q,clearSavedData:ne,hasSavedData:Ce,getSavedDataInfo:Me,markUserInteraction:c,finishInitialization:_e,restoreFormData:Fe}=fa(n,{storageKey:"atlas_meter_form_data",saveInterval:3e3,excludeFields:[]}),H=d(!1),re=d(null),Re=[{key:"all",label:"All Meters",badge:V(()=>v.totalCount||0)},{key:"active",label:"Active",badge:V(()=>(v.activeMeters||[]).length)},{key:"due",label:"Due for Reading",badge:V(()=>(v.dueForReading||[]).length)},{key:"overdue",label:"Overdue",badge:V(()=>(v.overdueReadings||[]).length)}],we=[{key:"basic",label:"Basic Information",icon:"info"},{key:"config",label:"Configuration",icon:"cog"}],Te=[{key:"name",label:"Name",sortable:!0},{key:"type",label:"Type",sortable:!0},{key:"status",label:"Status",sortable:!0},{key:"currentReading",label:"Current Reading",sortable:!1},{key:"asset",label:"Asset",sortable:!1},{key:"nextReading",label:"Next Reading",sortable:!0,key:"nextReadingDate"},{key:"assignedUsers",label:"Assigned Users",sortable:!1},{key:"actions",label:"Actions",sortable:!1,width:"150px"}],De=V(()=>{let o=v.filteredMeters||[];return T.value==="active"?o=v.activeMeters||[]:T.value==="due"?o=v.dueForReading||[]:T.value==="overdue"&&(o=v.overdueReadings||[]),f.value.showDue&&(o=o.filter(a=>a&&a.isReadingDue)),o.filter(a=>a!=null).map(a=>{try{return se?se(a):a}catch(e){return console.warn("Error in formatMeterForDisplay:",e),a}}).filter(a=>a!=null)}),Ue=V(()=>[{label:"Total Meters",value:v.totalCount||0,color:"blue"},{label:"Active",value:(v.activeMeters||[]).length,color:"green"},{label:"Due for Reading",value:(v.dueForReading||[]).length,color:"orange"},{label:"Overdue",value:(v.overdueReadings||[]).length,color:"red"}]),Ie=V(()=>[{value:"",label:"All Types"},...Object.entries(X).map(([o,a])=>({value:fe[o],label:a}))]),ie=V(()=>{var a,e;const o=((e=(a=le.assets)==null?void 0:a.value)==null?void 0:e.content)||[];return[{value:"",label:"All Assets"},...o.map(x=>({value:x.id,label:x.name}))]}),ue=V(()=>{var a,e;const o=((e=(a=oe.locations)==null?void 0:a.value)==null?void 0:e.content)||[];return[{value:"",label:"All Locations"},...o.map(x=>({value:x.id,label:x.name}))]}),Se=V(()=>Object.entries(X).map(([o,a])=>({value:fe[o],label:a}))),Ae=V(()=>va.map(o=>({value:o.value,label:o.label}))),F=async()=>{try{K.value=!0,await Promise.all([v.fetchMeters(),le.fetchAssets({page:0,size:100}),oe.searchLocations({page:0,size:100})])}catch(o){w(o.message||"Failed to load data")}finally{K.value=!1}},Ee=()=>{F()},$=()=>{v.updateFilters(f.value)},ze=o=>{T.value=o},Pe=({key:o,direction:a})=>{j.value.sortBy=o,j.value.sortDirection=a,F()},Be=o=>{j.value.page=o,F()},Le=()=>{f.value.showDue=!f.value.showDue},Ne=()=>{f.value={search:"",type:"",asset:"",location:"",showDue:!1},v.updateFilters({})},Oe=async()=>{Fe()&&(H.value=!1,I("Your previously saved form data has been restored.","Form Data Restored"))},je=()=>{ne(),H.value=!1},qe=V(()=>{if(!q.value)return"";const o=new Date,a=new Date(q.value),e=Math.floor((o-a)/1e3);return e<60?`${e}s ago`:e<3600?`${Math.floor(e/60)}m ago`:`${Math.floor(e/3600)}h ago`}),de=()=>{z.value="create",n.value={...Z},h.value="basic",u.value={},D.value=!0},me=async o=>{try{z.value="edit",h.value="basic",u.value={};const a=await v.fetchMeterById(o);n.value={...a},D.value=!0}catch{w("Failed to load meter details")}},ve=o=>{W.push(`/meters/${o.id}`)},He=async()=>{try{O.value=!0,u.value={},z.value==="create"?(await he(n.value),I("Meter created successfully")):(await xe(n.value.id,n.value),I("Meter updated successfully")),ne(),D.value=!1,await F()}catch(o){N.value&&(u.value={general:N.value}),w(o.message||"Failed to save meter")}finally{O.value=!1}},ce=()=>{D.value=!1,n.value={...Z},u.value={}},$e=()=>{h.value==="basic"&&(h.value="config")},Ye=()=>{h.value==="config"&&(h.value="basic")},We=o=>{g.value=o,y.value={...ee,meterId:o.id,readingDate:new Date().toISOString().split("T")[0]},_.value={},S.value=!0},Ke=async()=>{try{G.value=!0,_.value={},await ke(g.value.id,y.value,g.value),I("Reading recorded successfully"),S.value=!1,g.value=null,await F()}catch(o){N.value&&(_.value={general:N.value}),w(o.message||"Failed to record reading")}finally{G.value=!1}},Qe=()=>{S.value=!1,g.value=null,y.value={...ee},_.value={}},Ge=o=>{E.value=o,A.value=!0},Je=async()=>{try{Q.value=!0,await Ve(E.value.id),I("Meter deleted successfully"),A.value=!1,E.value=null,await F()}catch{w("Failed to delete meter")}finally{Q.value=!1}},Xe=()=>{A.value=!1,E.value=null},Ze=async()=>{try{const o=await v.exportMeters({format:"csv",fields:["name","type","status","unit","currentReading","assetName"]}),a=window.URL.createObjectURL(o),e=document.createElement("a");e.href=a,e.download="meters.csv",document.body.appendChild(e),e.click(),window.URL.revokeObjectURL(a),document.body.removeChild(e)}catch{w("Failed to export meters")}},ea=o=>X[o]||o,aa=o=>ca[o]||o,ta=o=>({[U.ACTIVE]:"success",[U.INACTIVE]:"secondary",[U.OUT_OF_SERVICE]:"error",[U.MAINTENANCE]:"warning",[U.CALIBRATION_DUE]:"warning",[U.FAULTY]:"error"})[o]||"secondary";return la(async()=>{if(await F(),_e(),Ce()){const e=Me();re.value=e,H.value=!0}const o=te.query.edit;o&&setTimeout(()=>{me(parseInt(o)),W.replace({path:"/meters"})},500),te.query.create==="true"&&setTimeout(()=>{de(),W.replace({path:"/meters"})},500)}),(o,a)=>(i(),P(ya,null,{header:r(()=>[s(ba,{title:"Meters",description:"Manage meters and track readings for assets and locations",breadcrumbs:[{text:"Meters",to:null}]},{actions:r(()=>[s(t(b),{variant:"outline",size:"sm",onClick:Ze},{default:r(()=>a[31]||(a[31]=[l("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1),C(" Export ",-1)])),_:1,__:[31]}),s(t(b),{variant:"outline",size:"sm",onClick:Ee},{default:r(()=>a[32]||(a[32]=[l("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),C(" Refresh ",-1)])),_:1,__:[32]}),s(t(b),{variant:"primary",size:"sm",onClick:de},{default:r(()=>a[33]||(a[33]=[l("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),C(" Add Meter ",-1)])),_:1,__:[33]})]),stats:r(()=>[s(t(ha),{stats:Ue.value},null,8,["stats"])]),tabs:r(()=>[s(t(be),{modelValue:T.value,"onUpdate:modelValue":a[0]||(a[0]=e=>T.value=e),tabs:Re,onTabChange:ze},null,8,["modelValue"])]),_:1})]),default:r(()=>[l("div",ka,[l("div",Ca,[s(t(M),{modelValue:f.value.search,"onUpdate:modelValue":a[1]||(a[1]=e=>f.value.search=e),placeholder:"Search meters...",onInput:$},{prepend:r(()=>a[34]||(a[34]=[l("svg",{class:"w-4 h-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1)])),_:1},8,["modelValue"]),s(t(R),{modelValue:f.value.type,"onUpdate:modelValue":[a[2]||(a[2]=e=>f.value.type=e),$],placeholder:"Filter by Type",options:Ie.value},null,8,["modelValue","options"]),s(t(R),{modelValue:f.value.asset,"onUpdate:modelValue":[a[3]||(a[3]=e=>f.value.asset=e),$],placeholder:"Filter by Asset",options:ie.value},null,8,["modelValue","options"]),s(t(R),{modelValue:f.value.location,"onUpdate:modelValue":[a[4]||(a[4]=e=>f.value.location=e),$],placeholder:"Filter by Location",options:ue.value},null,8,["modelValue","options"]),l("div",Ma,[s(t(b),{variant:"outline",size:"sm",class:B(f.value.showDue?"bg-orange-50 border-orange-200 text-orange-700":""),onClick:Le},{default:r(()=>a[35]||(a[35]=[l("svg",{class:"w-4 h-4 mr-1",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})],-1),C(" Due ",-1)])),_:1,__:[35]},8,["class"]),s(t(b),{variant:"ghost",size:"sm",onClick:Ne},{default:r(()=>a[36]||(a[36]=[C(" Clear All ",-1)])),_:1,__:[36]})])]),s(t(xa),{columns:Te,data:De.value,loading:K.value,pagination:j.value,"empty-message":"No meters found",onSortChange:Pe,onPageChange:Be,onRowClick:ve},{name:r(({row:e})=>[l("div",_a,[e.image?(i(),p("div",Fa,[l("img",{src:e.image.url,alt:e.name,class:"w-10 h-10 rounded-lg object-cover"},null,8,Ra)])):(i(),p("div",wa,a[37]||(a[37]=[l("svg",{class:"w-5 h-5 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"})],-1)]))),l("div",null,[l("div",Ta,m(e.name),1),l("div",Da,m(e.unit),1)])])]),type:r(({row:e})=>[s(t(ye),{variant:"secondary"},{default:r(()=>[C(m(ea(e.type)),1)]),_:2},1024)]),status:r(({row:e})=>[s(t(ye),{variant:ta(e.status)},{default:r(()=>[C(m(aa(e.status)),1)]),_:2},1032,["variant"])]),currentReading:r(({row:e})=>[l("div",Ua,[l("span",Ia,m(e.formattedCurrentReading),1),l("div",Sa,m(e.unit),1)])]),asset:r(({row:e})=>[l("span",{class:B(["text-sm",e.assetName?"text-gray-900":"text-gray-400"])},m(e.assetName||"No asset"),3)]),nextReading:r(({row:e})=>[l("div",Aa,[l("span",{class:B([e.readingStatusColor,"px-2 py-1 rounded-full text-xs font-medium"])},m(e.formattedNextReadingDate),3),e.isReadingOverdue?(i(),p("div",Ea," Overdue ")):k("",!0)])]),assignedUsers:r(({row:e})=>[l("div",za,[(i(!0),p(ra,null,ia(((e==null?void 0:e.users)||[]).slice(0,3),(x,gt)=>(i(),P(t(ua),{key:x.id,user:x,size:"sm"},null,8,["user"]))),128)),((e==null?void 0:e.users)||[]).length>3?(i(),p("span",Pa," +"+m(((e==null?void 0:e.users)||[]).length-3),1)):k("",!0),((e==null?void 0:e.users)||[]).length?k("",!0):(i(),p("span",Ba," Unassigned "))])]),actions:r(({row:e})=>[l("div",La,[s(t(b),{variant:"ghost",size:"sm",onClick:Y(x=>We(e),["stop"]),disabled:!e||e.status!=="active",title:"Record Reading"},{default:r(()=>a[38]||(a[38]=[l("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15.232 5.232l3.536 3.536m-2.036-5.036a2.5 2.5 0 113.536 3.536L6.5 21.036H3v-3.572L16.732 3.732z"})],-1)])),_:2,__:[38]},1032,["onClick","disabled"]),s(t(b),{variant:"ghost",size:"sm",onClick:Y(x=>ve(e),["stop"]),disabled:!e},{default:r(()=>a[39]||(a[39]=[l("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"}),l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"})],-1)])),_:2,__:[39]},1032,["onClick","disabled"]),s(t(b),{variant:"ghost",size:"sm",onClick:Y(x=>me(e==null?void 0:e.id),["stop"]),disabled:!(e!=null&&e.id)},{default:r(()=>a[40]||(a[40]=[l("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1)])),_:2,__:[40]},1032,["onClick","disabled"]),s(t(b),{variant:"ghost",size:"sm",class:"text-red-600 hover:text-red-700",onClick:Y(x=>Ge(e),["stop"]),disabled:!e},{default:r(()=>a[41]||(a[41]=[l("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1)])),_:2,__:[41]},1032,["onClick","disabled"])])]),_:1},8,["data","loading","pagination"])]),s(t(ae),{modelValue:D.value,"onUpdate:modelValue":a[23]||(a[23]=e=>D.value=e),title:z.value==="create"?"Create Meter":"Edit Meter",size:"xl",onCancel:ce},{footer:r(()=>[l("div",Ga,[l("div",Ja,[t(J)||t(q)?(i(),p("div",Xa,[t(J)?(i(),p("svg",Za,a[45]||(a[45]=[l("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z","clip-rule":"evenodd"},null,-1)]))):(i(),p("svg",et,a[46]||(a[46]=[l("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z","clip-rule":"evenodd"},null,-1)]))),t(J)?(i(),p("span",at,"Auto-saving...")):t(q)?(i(),p("span",tt,"Last saved "+m(qe.value),1)):k("",!0)])):k("",!0)]),l("div",lt,[s(t(b),{variant:"outline",onClick:ce,disabled:O.value},{default:r(()=>a[47]||(a[47]=[C(" Cancel ",-1)])),_:1,__:[47]},8,["disabled"]),s(t(b),{variant:"primary",onClick:He,loading:O.value},{default:r(()=>[C(m(z.value==="create"?"Create Meter":"Update Meter"),1)]),_:1},8,["loading"])])])]),default:r(()=>[s(t(Va),{visible:H.value,"saved-data-info":re.value,onRestore:Oe,onDismiss:je},null,8,["visible","saved-data-info"]),l("div",Na,[s(t(be),{modelValue:h.value,"onUpdate:modelValue":a[5]||(a[5]=e=>h.value=e),tabs:we},null,8,["modelValue"]),h.value==="basic"?(i(),p("div",Oa,[l("div",ja,[s(t(M),{modelValue:n.value.name,"onUpdate:modelValue":a[6]||(a[6]=e=>n.value.name=e),label:"Meter Name",placeholder:"Enter meter name",required:"",error:u.value.name,onInput:t(c)},null,8,["modelValue","error","onInput"]),s(t(R),{modelValue:n.value.type,"onUpdate:modelValue":a[7]||(a[7]=e=>n.value.type=e),label:"Meter Type",placeholder:"Select type",options:Se.value,required:"",error:u.value.type,onChange:t(c)},null,8,["modelValue","options","error","onChange"]),s(t(M),{modelValue:n.value.unit,"onUpdate:modelValue":a[8]||(a[8]=e=>n.value.unit=e),label:"Unit",placeholder:"e.g. kWh, hours, gallons",required:"",error:u.value.unit,onInput:t(c)},null,8,["modelValue","error","onInput"]),s(t(R),{modelValue:n.value.updateFrequency,"onUpdate:modelValue":a[9]||(a[9]=e=>n.value.updateFrequency=e),label:"Reading Frequency",placeholder:"Select frequency",options:Ae.value,required:"",error:u.value.updateFrequency,onChange:t(c)},null,8,["modelValue","options","error","onChange"])]),l("div",null,[a[42]||(a[42]=l("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Description",-1)),pe(l("textarea",{"onUpdate:modelValue":a[10]||(a[10]=e=>n.value.description=e),class:B(["w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",{"border-red-300":u.value.description}]),placeholder:"Describe the meter and its purpose",rows:"3",onInput:a[11]||(a[11]=(...e)=>t(c)&&t(c)(...e))},null,34),[[ge,n.value.description]]),u.value.description?(i(),p("p",qa,m(u.value.description),1)):k("",!0)])])):k("",!0),h.value==="config"?(i(),p("div",Ha,[l("div",$a,[s(t(R),{modelValue:n.value.assetId,"onUpdate:modelValue":a[12]||(a[12]=e=>n.value.assetId=e),label:"Asset",placeholder:"Select asset (optional)",options:ie.value,error:u.value.assetId,onChange:t(c)},null,8,["modelValue","options","error","onChange"]),s(t(R),{modelValue:n.value.locationId,"onUpdate:modelValue":a[13]||(a[13]=e=>n.value.locationId=e),label:"Location",placeholder:"Select location (optional)",options:ue.value,error:u.value.locationId,onChange:t(c)},null,8,["modelValue","options","error","onChange"]),s(t(M),{modelValue:n.value.decimalPlaces,"onUpdate:modelValue":a[14]||(a[14]=e=>n.value.decimalPlaces=e),label:"Decimal Places",type:"number",min:"0",max:"6",placeholder:"2",error:u.value.decimalPlaces,onInput:t(c)},null,8,["modelValue","error","onInput"]),s(t(M),{modelValue:n.value.calibrationInterval,"onUpdate:modelValue":a[15]||(a[15]=e=>n.value.calibrationInterval=e),label:"Calibration Interval (days)",type:"number",min:"1",placeholder:"365",error:u.value.calibrationInterval,onInput:t(c)},null,8,["modelValue","error","onInput"])]),l("div",Ya,[s(t(M),{modelValue:n.value.minValue,"onUpdate:modelValue":a[16]||(a[16]=e=>n.value.minValue=e),label:"Minimum Value",type:"number",step:"0.01",placeholder:"Optional",error:u.value.minValue,onInput:t(c)},null,8,["modelValue","error","onInput"]),s(t(M),{modelValue:n.value.maxValue,"onUpdate:modelValue":a[17]||(a[17]=e=>n.value.maxValue=e),label:"Maximum Value",type:"number",step:"0.01",placeholder:"Optional",error:u.value.maxValue,onInput:t(c)},null,8,["modelValue","error","onInput"]),s(t(M),{modelValue:n.value.warningThreshold,"onUpdate:modelValue":a[18]||(a[18]=e=>n.value.warningThreshold=e),label:"Warning Threshold",type:"number",step:"0.01",placeholder:"Optional",error:u.value.warningThreshold,onInput:t(c)},null,8,["modelValue","error","onInput"]),s(t(M),{modelValue:n.value.criticalThreshold,"onUpdate:modelValue":a[19]||(a[19]=e=>n.value.criticalThreshold=e),label:"Critical Threshold",type:"number",step:"0.01",placeholder:"Optional",error:u.value.criticalThreshold,onInput:t(c)},null,8,["modelValue","error","onInput"])]),l("div",Wa,[s(t(L),{modelValue:n.value.isMonotonic,"onUpdate:modelValue":a[20]||(a[20]=e=>n.value.isMonotonic=e),label:"Monotonic (values can only increase)",onChange:t(c)},null,8,["modelValue","onChange"]),s(t(L),{modelValue:n.value.allowNegativeReadings,"onUpdate:modelValue":a[21]||(a[21]=e=>n.value.allowNegativeReadings=e),label:"Allow negative readings",onChange:t(c)},null,8,["modelValue","onChange"]),s(t(L),{modelValue:n.value.requiresComment,"onUpdate:modelValue":a[22]||(a[22]=e=>n.value.requiresComment=e),label:"Require comment with readings",onChange:t(c)},null,8,["modelValue","onChange"])])])):k("",!0),l("div",Ka,[h.value!=="basic"?(i(),P(t(b),{key:0,variant:"outline",onClick:Ye},{default:r(()=>a[43]||(a[43]=[C(" Previous ",-1)])),_:1,__:[43]})):(i(),p("div",Qa)),h.value!=="config"?(i(),P(t(b),{key:2,variant:"outline",onClick:$e},{default:r(()=>a[44]||(a[44]=[C(" Next ",-1)])),_:1,__:[44]})):k("",!0)])])]),_:1},8,["modelValue","title"]),s(t(ae),{modelValue:S.value,"onUpdate:modelValue":a[29]||(a[29]=e=>S.value=e),title:"Record Meter Reading",onConfirm:Ke,onCancel:Qe,"confirm-text":"Record Reading",loading:G.value},{default:r(()=>[l("div",ot,[g.value?(i(),p("div",st,[l("div",nt,[l("h4",rt,m(g.value.name),1),l("p",it,m(g.value.description),1),l("div",ut," Current: "+m(g.value.formattedCurrentReading)+" "+m(g.value.unit),1)]),s(t(M),{modelValue:y.value.value,"onUpdate:modelValue":a[24]||(a[24]=e=>y.value.value=e),label:"Reading Value",type:"number",step:Math.pow(10,-(g.value.decimalPlaces||2)),placeholder:"Enter reading value",required:"",error:_.value.value},null,8,["modelValue","step","error"]),s(t(M),{modelValue:y.value.readingDate,"onUpdate:modelValue":a[25]||(a[25]=e=>y.value.readingDate=e),type:"date",label:"Reading Date",placeholder:"Select reading date",error:_.value.readingDate},null,8,["modelValue","error"]),l("div",null,[l("label",dt,m(g.value.requiresComment?"Comment (Required)":"Comment (Optional)"),1),pe(l("textarea",{"onUpdate:modelValue":a[26]||(a[26]=e=>y.value.comment=e),class:B(["w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",{"border-red-300":_.value.comment}]),placeholder:"Add any notes about this reading",rows:"3",required:g.value.requiresComment},null,10,mt),[[ge,y.value.comment]]),_.value.comment?(i(),p("p",vt,m(_.value.comment),1)):k("",!0)]),l("div",ct,[s(t(L),{modelValue:y.value.isEstimated,"onUpdate:modelValue":a[27]||(a[27]=e=>y.value.isEstimated=e),label:"This is an estimated reading"},null,8,["modelValue"]),g.value.isMonotonic?(i(),P(t(L),{key:0,modelValue:y.value.isRollover,"onUpdate:modelValue":a[28]||(a[28]=e=>y.value.isRollover=e),label:"This is a rollover reading (meter reset to zero)"},null,8,["modelValue"])):k("",!0)])])):k("",!0)])]),_:1},8,["modelValue","loading"]),s(t(ae),{modelValue:A.value,"onUpdate:modelValue":a[30]||(a[30]=e=>A.value=e),title:"Delete Meter",onConfirm:Je,onCancel:Xe,"confirm-text":"Delete","cancel-text":"Cancel","confirm-variant":"error",loading:Q.value},{default:r(()=>{var e;return[l("p",null,'Are you sure you want to delete the meter "'+m((e=E.value)==null?void 0:e.name)+'"? This action cannot be undone and will remove all associated readings.',1)]}),_:1},8,["modelValue","loading"])]),_:1}))}};export{It as default}; diff --git a/frontend/dist/assets/MetersView-3RpgORZ4.js b/frontend/dist/assets/MetersView-cVOIPKlq.js similarity index 62% rename from frontend/dist/assets/MetersView-3RpgORZ4.js rename to frontend/dist/assets/MetersView-cVOIPKlq.js index 96e993e5..2b6c38fa 100644 --- a/frontend/dist/assets/MetersView-3RpgORZ4.js +++ b/frontend/dist/assets/MetersView-cVOIPKlq.js @@ -1 +1 @@ -import{i as o,f as r,g as t}from"./index-BUdRbiwj.js";const a={__name:"MetersView",setup(n){return(s,_)=>{const e=r("router-view");return t(),o(e)}}};export{a as default}; +import{i as o,f as r,g as t}from"./index-QAlcqU00.js";const a={__name:"MetersView",setup(n){return(s,_)=>{const e=r("router-view");return t(),o(e)}}};export{a as default}; diff --git a/frontend/dist/assets/NotFoundView-ChJiJ8lW.js b/frontend/dist/assets/NotFoundView-CoAE6lPw.js similarity index 80% rename from frontend/dist/assets/NotFoundView-ChJiJ8lW.js rename to frontend/dist/assets/NotFoundView-CoAE6lPw.js index c61c6aa3..919a0916 100644 --- a/frontend/dist/assets/NotFoundView-ChJiJ8lW.js +++ b/frontend/dist/assets/NotFoundView-CoAE6lPw.js @@ -1 +1 @@ -import{_ as a,i as n,w as t,g as d,d as e,b as s,a2 as i,k as r,V as l}from"./index-BUdRbiwj.js";import{V as f}from"./VContainer-Cf71ALK9.js";const u={};function _(m,o){return d(),n(f,{class:"text-center"},{default:t(()=>[e(i,{size:"120",color:"grey"},{default:t(()=>o[0]||(o[0]=[r("mdi-file-question",-1)])),_:1,__:[0]}),o[2]||(o[2]=s("h1",{class:"text-h2 mb-4"},"404 - Page Not Found",-1)),o[3]||(o[3]=s("p",{class:"text-h6 mb-6"},"The page you're looking for doesn't exist.",-1)),e(l,{color:"primary",to:"/dashboard"},{default:t(()=>o[1]||(o[1]=[r("Go to Dashboard",-1)])),_:1,__:[1]})]),_:1,__:[2,3]})}const p=a(u,[["render",_]]);export{p as default}; +import{_ as a,i as n,w as t,g as d,d as e,b as s,a2 as i,k as r,V as l}from"./index-QAlcqU00.js";import{V as f}from"./VContainer-DnjqAjRY.js";const u={};function _(m,o){return d(),n(f,{class:"text-center"},{default:t(()=>[e(i,{size:"120",color:"grey"},{default:t(()=>o[0]||(o[0]=[r("mdi-file-question",-1)])),_:1,__:[0]}),o[2]||(o[2]=s("h1",{class:"text-h2 mb-4"},"404 - Page Not Found",-1)),o[3]||(o[3]=s("p",{class:"text-h6 mb-6"},"The page you're looking for doesn't exist.",-1)),e(l,{color:"primary",to:"/dashboard"},{default:t(()=>o[1]||(o[1]=[r("Go to Dashboard",-1)])),_:1,__:[1]})]),_:1,__:[2,3]})}const p=a(u,[["render",_]]);export{p as default}; diff --git a/frontend/dist/assets/PartDetailView-BURhvJ9p.js b/frontend/dist/assets/PartDetailView-9j9nkS1s.js similarity index 97% rename from frontend/dist/assets/PartDetailView-BURhvJ9p.js rename to frontend/dist/assets/PartDetailView-9j9nkS1s.js index cca25ed4..ee5f973c 100644 --- a/frontend/dist/assets/PartDetailView-BURhvJ9p.js +++ b/frontend/dist/assets/PartDetailView-9j9nkS1s.js @@ -1 +1 @@ -import{r as p,c as z,o as H,i as A,b9 as E,w as r,s as U,v as $,g as n,d as i,e as o,F as v,b as t,k as d,a as u,j as c,t as a}from"./index-BUdRbiwj.js";import{u as T}from"./parts-B3aeW8xP.js";import{u as O,a as Q}from"./usePartDisplay-D-mkc8An.js";import{F as W,a as q}from"./FPPageHeader-CTG2L28r.js";import{F as w}from"./FPBadge-BKY5dPnL.js";const G={key:0,class:"flex justify-center items-center min-h-96"},J={key:1,class:"text-center py-12"},K={class:"text-gray-600 mb-6"},X={key:2,class:"px-6 py-8"},Y={class:"max-w-7xl mx-auto"},Z={class:"grid grid-cols-1 lg:grid-cols-3 gap-8"},tt={class:"lg:col-span-2 space-y-8"},et={class:"bg-white shadow rounded-lg p-6"},st={class:"grid grid-cols-1 sm:grid-cols-2 gap-4"},ot={class:"mt-1 text-sm text-gray-900"},at={class:"mt-1"},rt={class:"mt-1 text-sm text-gray-900"},lt={class:"mt-1 text-sm text-gray-900"},it={class:"mt-1 text-sm text-gray-900"},nt={class:"mt-1 text-sm text-gray-900"},dt={key:0,class:"mt-6"},ut={class:"mt-1 text-sm text-gray-900"},mt={class:"bg-white shadow rounded-lg p-6"},vt={class:"grid grid-cols-1 sm:grid-cols-3 gap-6"},ct={class:"text-center p-4 bg-blue-50 rounded-lg"},gt={class:"text-2xl font-semibold text-blue-600"},xt={class:"text-center p-4 bg-orange-50 rounded-lg"},pt={class:"text-2xl font-semibold text-orange-600"},ft={class:"text-center p-4 bg-green-50 rounded-lg"},yt={class:"text-2xl font-semibold text-green-600"},kt={class:"mt-4 flex items-center justify-center"},_t={key:0,class:"bg-white shadow rounded-lg p-6"},wt={key:0,class:"mb-6"},bt={class:"text-sm text-gray-900 whitespace-pre-wrap"},ht={key:1},Pt={class:"text-sm text-gray-900 whitespace-pre-wrap"},Ct={class:"space-y-6"},St={class:"bg-white shadow rounded-lg p-6"},Bt={class:"space-y-3"},jt={class:"bg-white shadow rounded-lg p-6"},Lt={class:"space-y-3 text-sm"},Mt={class:"flex justify-between"},Nt={class:"text-gray-900"},Vt={class:"flex justify-between"},Dt={class:"text-gray-900"},Rt={class:"flex justify-between"},Ft={class:"text-gray-900"},Tt={__name:"PartDetailView",setup(It){const b=U(),h=$(),f=T(),{getCategoryVariant:P,getStockLevelVariant:C,formatCategory:S,formatStockLevel:B,formatCurrency:y,formatPartNumber:j,formatSupplier:L,formatLocation:M,calculatePartValue:N}=Q(),{calculateStockLevel:k}=O(),g=p(!0),m=p(null),s=p(null),V=z(()=>{var l;return[{text:"Inventory",to:"/inventory"},{text:"Parts",to:"/inventory/parts"},{text:((l=s.value)==null?void 0:l.name)||"Part Details",to:null}]}),D=async()=>{const l=parseInt(b.params.id);try{g.value=!0,m.value=null,s.value=f.getPartById(l),s.value||(s.value=await f.fetchPartById(l)),s.value||(m.value="Part not found")}catch(e){m.value=e.message||"Failed to load part",console.error("Error loading part:",e)}finally{g.value=!1}},R=()=>{h.push(`/inventory/parts?edit=${s.value.id}`)},_=()=>{console.log("Restock part:",s.value.id)},F=()=>{console.log("Reserve part:",s.value.id)},I=()=>{console.log("View history for part:",s.value.id)},x=l=>l?new Date(l).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}):null;return H(()=>{D()}),(l,e)=>(n(),A(W,null,E({default:r(()=>[g.value?(n(),u("div",G,e[1]||(e[1]=[t("div",{class:"animate-spin rounded-full h-12 w-12 border-b-2 border-primary-600"},null,-1)]))):m.value?(n(),u("div",J,[e[3]||(e[3]=t("div",{class:"text-red-600 mb-4"},[t("svg",{class:"w-16 h-16 mx-auto",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})])],-1)),e[4]||(e[4]=t("h3",{class:"text-lg font-medium text-gray-900 mb-2"},"Part Not Found",-1)),t("p",K,a(m.value),1),i(o(v),{onClick:e[0]||(e[0]=zt=>l.$router.push("/inventory/parts"))},{default:r(()=>e[2]||(e[2]=[d(" Back to Parts List ",-1)])),_:1,__:[2]})])):c("",!0),s.value?(n(),u("div",X,[t("div",Y,[t("div",Z,[t("div",tt,[t("div",et,[e[14]||(e[14]=t("h3",{class:"text-lg font-medium text-gray-900 mb-4"},"Basic Information",-1)),t("dl",st,[t("div",null,[e[7]||(e[7]=t("dt",{class:"text-sm font-medium text-gray-500"},"Part Number",-1)),t("dd",ot,a(o(j)(s.value.partNumber)),1)]),t("div",null,[e[8]||(e[8]=t("dt",{class:"text-sm font-medium text-gray-500"},"Category",-1)),t("dd",at,[i(o(w),{variant:o(P)(s.value.category)},{default:r(()=>[d(a(o(S)(s.value.category)),1)]),_:1},8,["variant"])])]),t("div",null,[e[9]||(e[9]=t("dt",{class:"text-sm font-medium text-gray-500"},"Manufacturer",-1)),t("dd",rt,a(s.value.manufacturer||"Not specified"),1)]),t("div",null,[e[10]||(e[10]=t("dt",{class:"text-sm font-medium text-gray-500"},"Supplier",-1)),t("dd",lt,a(o(L)(s.value.supplier)),1)]),t("div",null,[e[11]||(e[11]=t("dt",{class:"text-sm font-medium text-gray-500"},"Storage Location",-1)),t("dd",it,a(o(M)(s.value.location)),1)]),t("div",null,[e[12]||(e[12]=t("dt",{class:"text-sm font-medium text-gray-500"},"Unit Cost",-1)),t("dd",nt,a(o(y)(s.value.unitCost)),1)])]),s.value.description?(n(),u("div",dt,[e[13]||(e[13]=t("dt",{class:"text-sm font-medium text-gray-500"},"Description",-1)),t("dd",ut,a(s.value.description),1)])):c("",!0)]),t("div",mt,[e[18]||(e[18]=t("h3",{class:"text-lg font-medium text-gray-900 mb-4"},"Inventory Status",-1)),t("div",vt,[t("div",ct,[t("div",gt,a(s.value.currentStock||0),1),e[15]||(e[15]=t("div",{class:"text-sm text-blue-600 mt-1"},"Current Stock",-1))]),t("div",xt,[t("div",pt,a(s.value.minStock||0),1),e[16]||(e[16]=t("div",{class:"text-sm text-orange-600 mt-1"},"Minimum Stock",-1))]),t("div",ft,[t("div",yt,a(o(y)(o(N)(s.value))),1),e[17]||(e[17]=t("div",{class:"text-sm text-green-600 mt-1"},"Total Value",-1))])]),t("div",kt,[i(o(w),{variant:o(C)(o(k)(s.value)),size:"lg"},{default:r(()=>[d(a(o(B)(o(k)(s.value))),1)]),_:1},8,["variant"])])]),s.value.specifications||s.value.notes?(n(),u("div",_t,[e[21]||(e[21]=t("h3",{class:"text-lg font-medium text-gray-900 mb-4"},"Additional Details",-1)),s.value.specifications?(n(),u("div",wt,[e[19]||(e[19]=t("dt",{class:"text-sm font-medium text-gray-500 mb-2"},"Specifications",-1)),t("dd",bt,a(s.value.specifications),1)])):c("",!0),s.value.notes?(n(),u("div",ht,[e[20]||(e[20]=t("dt",{class:"text-sm font-medium text-gray-500 mb-2"},"Notes",-1)),t("dd",Pt,a(s.value.notes),1)])):c("",!0)])):c("",!0)]),t("div",Ct,[t("div",St,[e[25]||(e[25]=t("h3",{class:"text-lg font-medium text-gray-900 mb-4"},"Quick Actions",-1)),t("div",Bt,[i(o(v),{variant:"outline",size:"sm",class:"w-full justify-start",onClick:_},{default:r(()=>e[22]||(e[22]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),d(" Restock Part ",-1)])),_:1,__:[22]}),i(o(v),{variant:"outline",size:"sm",class:"w-full justify-start",onClick:F},{default:r(()=>e[23]||(e[23]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M5 13l4 4L19 7"})],-1),d(" Reserve for Work Order ",-1)])),_:1,__:[23]}),i(o(v),{variant:"outline",size:"sm",class:"w-full justify-start",onClick:I},{default:r(()=>e[24]||(e[24]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})],-1),d(" View History ",-1)])),_:1,__:[24]})])]),t("div",jt,[e[29]||(e[29]=t("h3",{class:"text-lg font-medium text-gray-900 mb-4"},"Related Information",-1)),t("div",Lt,[t("div",Mt,[e[26]||(e[26]=t("span",{class:"text-gray-500"},"Last Restocked",-1)),t("span",Nt,a(x(s.value.lastRestocked)||"Never"),1)]),t("div",Vt,[e[27]||(e[27]=t("span",{class:"text-gray-500"},"Created",-1)),t("span",Dt,a(x(s.value.createdAt)),1)]),t("div",Rt,[e[28]||(e[28]=t("span",{class:"text-gray-500"},"Last Updated",-1)),t("span",Ft,a(x(s.value.updatedAt)),1)])])])])])])])):c("",!0)]),_:2},[!g.value&&!m.value&&s.value?{name:"header",fn:r(()=>[i(q,{title:s.value.name,description:s.value.description||"Part Details",breadcrumbs:V.value},{actions:r(()=>[i(o(v),{variant:"secondary",onClick:R},{default:r(()=>e[5]||(e[5]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1),d(" Edit Part ",-1)])),_:1,__:[5]}),i(o(v),{variant:"primary",onClick:_},{default:r(()=>e[6]||(e[6]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),d(" Restock ",-1)])),_:1,__:[6]})]),_:1},8,["title","description","breadcrumbs"])]),key:"0"}:void 0]),1024))}};export{Tt as default}; +import{r as p,c as z,o as H,i as A,b9 as E,w as r,s as U,v as $,g as n,d as i,e as o,F as v,b as t,k as d,a as u,j as c,t as a}from"./index-QAlcqU00.js";import{u as T}from"./parts-imZSnlsl.js";import{u as O,a as Q}from"./usePartDisplay-DgOw31kV.js";import{F as W,a as q}from"./FPPageHeader-CFIwZZgQ.js";import{F as w}from"./FPBadge-DvOitM1C.js";const G={key:0,class:"flex justify-center items-center min-h-96"},J={key:1,class:"text-center py-12"},K={class:"text-gray-600 mb-6"},X={key:2,class:"px-6 py-8"},Y={class:"max-w-7xl mx-auto"},Z={class:"grid grid-cols-1 lg:grid-cols-3 gap-8"},tt={class:"lg:col-span-2 space-y-8"},et={class:"bg-white shadow rounded-lg p-6"},st={class:"grid grid-cols-1 sm:grid-cols-2 gap-4"},ot={class:"mt-1 text-sm text-gray-900"},at={class:"mt-1"},rt={class:"mt-1 text-sm text-gray-900"},lt={class:"mt-1 text-sm text-gray-900"},it={class:"mt-1 text-sm text-gray-900"},nt={class:"mt-1 text-sm text-gray-900"},dt={key:0,class:"mt-6"},ut={class:"mt-1 text-sm text-gray-900"},mt={class:"bg-white shadow rounded-lg p-6"},vt={class:"grid grid-cols-1 sm:grid-cols-3 gap-6"},ct={class:"text-center p-4 bg-blue-50 rounded-lg"},gt={class:"text-2xl font-semibold text-blue-600"},xt={class:"text-center p-4 bg-orange-50 rounded-lg"},pt={class:"text-2xl font-semibold text-orange-600"},ft={class:"text-center p-4 bg-green-50 rounded-lg"},yt={class:"text-2xl font-semibold text-green-600"},kt={class:"mt-4 flex items-center justify-center"},_t={key:0,class:"bg-white shadow rounded-lg p-6"},wt={key:0,class:"mb-6"},bt={class:"text-sm text-gray-900 whitespace-pre-wrap"},ht={key:1},Pt={class:"text-sm text-gray-900 whitespace-pre-wrap"},Ct={class:"space-y-6"},St={class:"bg-white shadow rounded-lg p-6"},Bt={class:"space-y-3"},jt={class:"bg-white shadow rounded-lg p-6"},Lt={class:"space-y-3 text-sm"},Mt={class:"flex justify-between"},Nt={class:"text-gray-900"},Vt={class:"flex justify-between"},Dt={class:"text-gray-900"},Rt={class:"flex justify-between"},Ft={class:"text-gray-900"},Tt={__name:"PartDetailView",setup(It){const b=U(),h=$(),f=T(),{getCategoryVariant:P,getStockLevelVariant:C,formatCategory:S,formatStockLevel:B,formatCurrency:y,formatPartNumber:j,formatSupplier:L,formatLocation:M,calculatePartValue:N}=Q(),{calculateStockLevel:k}=O(),g=p(!0),m=p(null),s=p(null),V=z(()=>{var l;return[{text:"Inventory",to:"/inventory"},{text:"Parts",to:"/inventory/parts"},{text:((l=s.value)==null?void 0:l.name)||"Part Details",to:null}]}),D=async()=>{const l=parseInt(b.params.id);try{g.value=!0,m.value=null,s.value=f.getPartById(l),s.value||(s.value=await f.fetchPartById(l)),s.value||(m.value="Part not found")}catch(e){m.value=e.message||"Failed to load part",console.error("Error loading part:",e)}finally{g.value=!1}},R=()=>{h.push(`/inventory/parts?edit=${s.value.id}`)},_=()=>{console.log("Restock part:",s.value.id)},F=()=>{console.log("Reserve part:",s.value.id)},I=()=>{console.log("View history for part:",s.value.id)},x=l=>l?new Date(l).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}):null;return H(()=>{D()}),(l,e)=>(n(),A(W,null,E({default:r(()=>[g.value?(n(),u("div",G,e[1]||(e[1]=[t("div",{class:"animate-spin rounded-full h-12 w-12 border-b-2 border-primary-600"},null,-1)]))):m.value?(n(),u("div",J,[e[3]||(e[3]=t("div",{class:"text-red-600 mb-4"},[t("svg",{class:"w-16 h-16 mx-auto",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})])],-1)),e[4]||(e[4]=t("h3",{class:"text-lg font-medium text-gray-900 mb-2"},"Part Not Found",-1)),t("p",K,a(m.value),1),i(o(v),{onClick:e[0]||(e[0]=zt=>l.$router.push("/inventory/parts"))},{default:r(()=>e[2]||(e[2]=[d(" Back to Parts List ",-1)])),_:1,__:[2]})])):c("",!0),s.value?(n(),u("div",X,[t("div",Y,[t("div",Z,[t("div",tt,[t("div",et,[e[14]||(e[14]=t("h3",{class:"text-lg font-medium text-gray-900 mb-4"},"Basic Information",-1)),t("dl",st,[t("div",null,[e[7]||(e[7]=t("dt",{class:"text-sm font-medium text-gray-500"},"Part Number",-1)),t("dd",ot,a(o(j)(s.value.partNumber)),1)]),t("div",null,[e[8]||(e[8]=t("dt",{class:"text-sm font-medium text-gray-500"},"Category",-1)),t("dd",at,[i(o(w),{variant:o(P)(s.value.category)},{default:r(()=>[d(a(o(S)(s.value.category)),1)]),_:1},8,["variant"])])]),t("div",null,[e[9]||(e[9]=t("dt",{class:"text-sm font-medium text-gray-500"},"Manufacturer",-1)),t("dd",rt,a(s.value.manufacturer||"Not specified"),1)]),t("div",null,[e[10]||(e[10]=t("dt",{class:"text-sm font-medium text-gray-500"},"Supplier",-1)),t("dd",lt,a(o(L)(s.value.supplier)),1)]),t("div",null,[e[11]||(e[11]=t("dt",{class:"text-sm font-medium text-gray-500"},"Storage Location",-1)),t("dd",it,a(o(M)(s.value.location)),1)]),t("div",null,[e[12]||(e[12]=t("dt",{class:"text-sm font-medium text-gray-500"},"Unit Cost",-1)),t("dd",nt,a(o(y)(s.value.unitCost)),1)])]),s.value.description?(n(),u("div",dt,[e[13]||(e[13]=t("dt",{class:"text-sm font-medium text-gray-500"},"Description",-1)),t("dd",ut,a(s.value.description),1)])):c("",!0)]),t("div",mt,[e[18]||(e[18]=t("h3",{class:"text-lg font-medium text-gray-900 mb-4"},"Inventory Status",-1)),t("div",vt,[t("div",ct,[t("div",gt,a(s.value.currentStock||0),1),e[15]||(e[15]=t("div",{class:"text-sm text-blue-600 mt-1"},"Current Stock",-1))]),t("div",xt,[t("div",pt,a(s.value.minStock||0),1),e[16]||(e[16]=t("div",{class:"text-sm text-orange-600 mt-1"},"Minimum Stock",-1))]),t("div",ft,[t("div",yt,a(o(y)(o(N)(s.value))),1),e[17]||(e[17]=t("div",{class:"text-sm text-green-600 mt-1"},"Total Value",-1))])]),t("div",kt,[i(o(w),{variant:o(C)(o(k)(s.value)),size:"lg"},{default:r(()=>[d(a(o(B)(o(k)(s.value))),1)]),_:1},8,["variant"])])]),s.value.specifications||s.value.notes?(n(),u("div",_t,[e[21]||(e[21]=t("h3",{class:"text-lg font-medium text-gray-900 mb-4"},"Additional Details",-1)),s.value.specifications?(n(),u("div",wt,[e[19]||(e[19]=t("dt",{class:"text-sm font-medium text-gray-500 mb-2"},"Specifications",-1)),t("dd",bt,a(s.value.specifications),1)])):c("",!0),s.value.notes?(n(),u("div",ht,[e[20]||(e[20]=t("dt",{class:"text-sm font-medium text-gray-500 mb-2"},"Notes",-1)),t("dd",Pt,a(s.value.notes),1)])):c("",!0)])):c("",!0)]),t("div",Ct,[t("div",St,[e[25]||(e[25]=t("h3",{class:"text-lg font-medium text-gray-900 mb-4"},"Quick Actions",-1)),t("div",Bt,[i(o(v),{variant:"outline",size:"sm",class:"w-full justify-start",onClick:_},{default:r(()=>e[22]||(e[22]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),d(" Restock Part ",-1)])),_:1,__:[22]}),i(o(v),{variant:"outline",size:"sm",class:"w-full justify-start",onClick:F},{default:r(()=>e[23]||(e[23]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M5 13l4 4L19 7"})],-1),d(" Reserve for Work Order ",-1)])),_:1,__:[23]}),i(o(v),{variant:"outline",size:"sm",class:"w-full justify-start",onClick:I},{default:r(()=>e[24]||(e[24]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})],-1),d(" View History ",-1)])),_:1,__:[24]})])]),t("div",jt,[e[29]||(e[29]=t("h3",{class:"text-lg font-medium text-gray-900 mb-4"},"Related Information",-1)),t("div",Lt,[t("div",Mt,[e[26]||(e[26]=t("span",{class:"text-gray-500"},"Last Restocked",-1)),t("span",Nt,a(x(s.value.lastRestocked)||"Never"),1)]),t("div",Vt,[e[27]||(e[27]=t("span",{class:"text-gray-500"},"Created",-1)),t("span",Dt,a(x(s.value.createdAt)),1)]),t("div",Rt,[e[28]||(e[28]=t("span",{class:"text-gray-500"},"Last Updated",-1)),t("span",Ft,a(x(s.value.updatedAt)),1)])])])])])])])):c("",!0)]),_:2},[!g.value&&!m.value&&s.value?{name:"header",fn:r(()=>[i(q,{title:s.value.name,description:s.value.description||"Part Details",breadcrumbs:V.value},{actions:r(()=>[i(o(v),{variant:"secondary",onClick:R},{default:r(()=>e[5]||(e[5]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1),d(" Edit Part ",-1)])),_:1,__:[5]}),i(o(v),{variant:"primary",onClick:_},{default:r(()=>e[6]||(e[6]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),d(" Restock ",-1)])),_:1,__:[6]})]),_:1},8,["title","description","breadcrumbs"])]),key:"0"}:void 0]),1024))}};export{Tt as default}; diff --git a/frontend/dist/assets/PartsListView-BrMDoBjw.js b/frontend/dist/assets/PartsListView-fCKSmo2E.js similarity index 96% rename from frontend/dist/assets/PartsListView-BrMDoBjw.js rename to frontend/dist/assets/PartsListView-fCKSmo2E.js index 679d01ae..2fcf5fd0 100644 --- a/frontend/dist/assets/PartsListView-BrMDoBjw.js +++ b/frontend/dist/assets/PartsListView-fCKSmo2E.js @@ -1 +1 @@ -import{r as y,c as k,l as ct,o as mt,m as vt,i as ue,w as m,s as pt,v as ft,g as S,b as r,d as c,e,F as C,h as de,t as x,k as w,a as F,j as N,aV as gt,ae as ce,n as yt,aU as me}from"./index-BUdRbiwj.js";import{u as Ie}from"./parts-B3aeW8xP.js";import{u as ht}from"./useFormAutoSave-Jaawgo91.js";import{u as Ve,a as Pt}from"./usePartDisplay-D-mkc8An.js";import{l as bt}from"./lodash-RqMXHFU9.js";import{F as kt,a as St}from"./FPPageHeader-CTG2L28r.js";import{F as _}from"./FPInput-CzR_dWoe.js";import{F as E}from"./FPSelect-C7p47Ma2.js";import{F as xt}from"./FPStats-BGfZcDZc.js";import{F as wt}from"./FPTable-CU8C_NYc.js";import{F as Fe}from"./FPModal-DWGF1LV8.js";import{F as Te}from"./FPBadge-BKY5dPnL.js";import{F as _e}from"./FPTabs-R71V25QN.js";import{_ as Ct}from"./FormRestoreNotification-DYBlXhOP.js";import"./_commonjsHelpers-NT8qMgGI.js";import"./FPCard-qHzcEQAE.js";function Vt(g={}){const l=y({name:"",partNumber:"",manufacturer:"",description:"",category:"",currentStock:"",minStock:"",unitCost:"",supplier:"",location:"",parentPartId:null,...g}),i=y({}),s=y("basic"),P=[{key:"basic",label:"Basic Information"},{key:"inventory",label:"Inventory & Pricing"},{key:"details",label:"Details & Specifications"}],z=[{label:"Parts",value:"PARTS"},{label:"Tools",value:"TOOLS"},{label:"Supplies",value:"SUPPLIES"},{label:"Equipment",value:"EQUIPMENT"},{label:"Consumables",value:"CONSUMABLES"}],R=k(()=>[{label:"HVAC Supply Co",value:"HVAC Supply Co"},{label:"Elevator Parts Inc",value:"Elevator Parts Inc"},{label:"Safety Equipment Ltd",value:"Safety Equipment Ltd"},{label:"Tool Supply Co",value:"Tool Supply Co"},{label:"General Parts Supplier",value:"General Parts Supplier"}]),B=k(()=>[{label:"Warehouse A1",value:"Warehouse A1"},{label:"Warehouse B2",value:"Warehouse B2"},{label:"Storage Room C",value:"Storage Room C"},{label:"Tool Room",value:"Tool Room"},{label:"Main Storage",value:"Main Storage"}]),I=()=>{if(i.value={},!l.value.name||l.value.name.trim().length===0?i.value.name="Part name is required":l.value.name.trim().length<2&&(i.value.name="Part name must be at least 2 characters"),l.value.category||(i.value.category="Category is required"),(!l.value.location||l.value.location.trim().length===0)&&(i.value.location="Storage location is required"),l.value.currentStock!==""&&l.value.currentStock!==null&&l.value.currentStock!==void 0){const o=parseFloat(l.value.currentStock);(isNaN(o)||o<0)&&(i.value.currentStock="Current stock must be a non-negative number")}if(l.value.minStock!==""&&l.value.minStock!==null&&l.value.minStock!==void 0){const o=parseFloat(l.value.minStock);(isNaN(o)||o<0)&&(i.value.minStock="Minimum stock must be a non-negative number")}if(l.value.unitCost!==""&&l.value.unitCost!==null&&l.value.unitCost!==void 0){const o=parseFloat(l.value.unitCost);(isNaN(o)||o<0)&&(i.value.unitCost="Unit cost must be a non-negative number")}return Object.keys(i.value).length===0},M=o=>i.value[o]||null,H=()=>{i.value={}},$=o=>{i.value[o]&&delete i.value[o]},W=k(()=>I()),Q=k(()=>s.value===P[0].key),G=k(()=>s.value===P[P.length-1].key);return{formData:l,errors:i,activeTab:s,formTabs:P,categoryOptions:z,supplierOptions:R,locationOptions:B,isValid:W,isFirstTab:Q,isLastTab:G,validateForm:I,getFieldError:M,clearErrors:H,clearFieldError:$,nextTab:()=>{const o=P.findIndex(p=>p.key===s.value);o{const o=P.findIndex(p=>p.key===s.value);o>0&&(s.value=P[o-1].key)},resetForm:()=>{l.value={name:"",partNumber:"",manufacturer:"",description:"",category:"",currentStock:"",minStock:"",unitCost:"",supplier:"",location:"",parentPartId:null},i.value={},s.value="basic"},getFormData:()=>l.value,populateForm:o=>{var p,T,L;l.value={name:o.name||"",partNumber:o.partNumber||"",manufacturer:o.manufacturer||"",description:o.description||"",category:o.category||"",currentStock:((p=o.currentStock)==null?void 0:p.toString())||"",minStock:((T=o.minStock)==null?void 0:T.toString())||"",unitCost:((L=o.unitCost)==null?void 0:L.toString())||"",supplier:o.supplier||"",location:o.location||"",parentPartId:o.parentPartId||null},i.value={}}}}function Ft(){const g=Ie(),{showNotification:l}=ct(),i=y(!1),s=y(null),P=async(d,n=!1,o=null)=>{i.value=!0,s.value=null;try{let p;return n&&o?(p=await g.updatePart(o,d),l("success","Part updated successfully")):(p=await g.createPart(d),l("success","Part created successfully")),p}catch(p){const T=n?"Failed to update part":"Failed to create part";throw s.value=p.message,l("error",T),console.error("Part submission error:",p),p}finally{i.value=!1}},z=async d=>{i.value=!0,s.value=null;try{await g.deletePart(d),l("success","Part deleted successfully")}catch(n){throw s.value=n.message,l("error","Failed to delete part"),console.error("Part deletion error:",n),n}finally{i.value=!1}},R=async d=>{i.value=!0,s.value=null;try{return await g.getPartById(parseInt(d))}catch(n){throw s.value=n.message,l("error","Failed to load part for editing"),console.error("Part load error:",n),n}finally{i.value=!1}},B=async()=>{i.value=!0,s.value=null;try{await g.refreshParts(),l("success","Parts refreshed successfully")}catch(d){throw s.value=d.message,l("error","Failed to refresh parts"),console.error("Parts refresh error:",d),d}finally{i.value=!1}},I=async(d={})=>{i.value=!0,s.value=null;try{await g.exportParts(d),l("success","Parts exported successfully")}catch(n){throw s.value=n.message,l("error","Failed to export parts"),console.error("Part export error:",n),n}finally{i.value=!1}},M=async(d,n,o)=>{if(!d())return{isValid:!1,type:"form",message:"Please fix the validation errors before submitting"};const p=n(o);return p.isValid?{isValid:!0}:{isValid:!1,type:"business",message:p.errors.join(", ")}};return{isProcessing:i,error:s,handlePartSubmission:P,handlePartDeletion:z,handlePartLoad:R,handlePartsRefresh:B,handlePartExport:I,handleStockUpdate:async(d,n,o)=>{i.value=!0,s.value=null;try{await g.updateStock(d,n,o),l("success","Stock updated successfully")}catch(p){throw s.value=p.message,l("error","Failed to update stock"),console.error("Stock update error:",p),p}finally{i.value=!1}},handlePartsReservation:async(d,n)=>{i.value=!0,s.value=null;try{await g.reserveParts(d,n),l("success","Parts reserved successfully")}catch(o){throw s.value=o.message,l("error","Failed to reserve parts"),console.error("Parts reservation error:",o),o}finally{i.value=!1}},handlePartsRelease:async d=>{i.value=!0,s.value=null;try{await g.releaseParts(d),l("success","Parts released successfully")}catch(n){throw s.value=n.message,l("error","Failed to release parts"),console.error("Parts release error:",n),n}finally{i.value=!1}},submitPart:async({validateForm:d,validateBusinessRules:n,getFormData:o,processPartData:p,isEditMode:T=!1,partId:L=null,onSuccess:A=null,onError:U=null})=>{try{const D=o(),v=p(D),f=await M(d,n,v);if(!f.isValid)return l("error",f.message),U&&U(new Error(f.message)),{success:!1,error:f.message};const V=await P(v,T,L);return A&&A(V),{success:!0,data:V}}catch(D){return U&&U(D),{success:!1,error:D.message}}},validatePartSubmission:M,handlePartSearch:async(d,n={})=>{try{await g.updateSearchTerm(d),Object.keys(n).length>0&&await g.updateFilters(n)}catch(o){s.value=o.message,console.error("Part search error:",o)}},handlePartPagination:async d=>{try{await g.changePage(d-1)}catch(n){s.value=n.message,console.error("Part pagination error:",n)}},handlePartSorting:async d=>{try{await g.changeSorting(d.column,d.direction)}catch(n){s.value=n.message,console.error("Part sorting error:",n)}},clearError:()=>{s.value=null}}}const Tt={class:"p-6"},_t={class:"mb-6 grid grid-cols-1 md:grid-cols-4 gap-4"},It={class:"bg-white shadow rounded-lg overflow-hidden"},Mt={class:"flex items-center space-x-3"},Lt={class:"w-8 h-8 bg-blue-100 rounded-lg flex items-center justify-center"},Ut={class:"w-4 h-4 text-blue-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},Dt=["d"],Nt={class:"font-medium text-gray-900"},Et={class:"text-sm text-gray-500"},zt={class:"flex items-center space-x-2"},Rt={class:"font-medium text-gray-900"},Bt={class:"text-sm font-medium text-gray-900"},Ht={class:"text-sm font-medium text-gray-900"},At={class:"text-sm text-gray-900"},jt={class:"text-sm text-gray-900"},Ot={class:"flex items-center space-x-2"},qt={class:"border-b border-gray-200 mb-6"},$t={key:0,class:"space-y-6"},Wt={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},Qt={class:"md:col-span-2"},Gt={key:0,class:"mt-1 text-sm text-red-600"},Jt={key:1,class:"space-y-6"},Xt={class:"grid grid-cols-1 md:grid-cols-3 gap-6"},Yt={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},Zt={key:2,class:"space-y-6"},Kt={class:"space-y-4"},ea={class:"flex items-center justify-between"},ta={class:"flex items-center space-x-4"},aa={key:0,class:"flex items-center text-sm text-gray-500"},ra={key:0,class:"w-4 h-4 mr-2 text-amber-500 animate-pulse",fill:"currentColor",viewBox:"0 0 20 20"},oa={key:1,class:"w-4 h-4 mr-2 text-green-500",fill:"currentColor",viewBox:"0 0 20 20"},la={key:2},sa={key:3},na={class:"flex space-x-3"},ia={class:"space-y-4"},ua={class:"text-gray-600"},da={class:"text-gray-900"},ca={class:"flex justify-end space-x-3"},Ta={__name:"PartsListView",setup(g){const l=ft(),i=pt(),s=Ie(),{processPartData:P,validatePartBusinessRules:z}=Ve(),{getCategoryVariant:R,getStockLevelVariant:B,formatCategory:I,formatStockLevel:M,formatCurrency:H,formatPartNumber:$,formatSupplier:W,formatLocation:Q,formatStockDisplay:G,calculatePartValue:ee,formatInventoryStats:te,getCategoryTabs:ae,getPartTableColumns:d}=Pt(),{submitPart:n,handlePartDeletion:o,handlePartsRefresh:p,handlePartExport:T,handlePartLoad:L,handlePartSearch:A,handlePartPagination:U,handlePartSorting:D}=Ft(),{formData:v,errors:f,activeTab:V,formTabs:Me,categoryOptions:Le,supplierOptions:ve,locationOptions:pe,isLastTab:Ue,validateForm:De,resetForm:fe,getFormData:Ne,populateForm:Ee,nextTab:ze}=Vt(),{hasUnsavedChanges:re,lastSaveTime:J,restoreFormData:Re,clearSavedData:ge,hasSavedData:ye,getSavedDataInfo:Be,markUserInteraction:He,finishInitialization:Ae}=ht(v,{storageKey:"atlas_part_form_data",saveInterval:3e3,excludeFields:[]}),j=y(!1),he=y(null),oe=y("all"),h=y({search:"",supplier:"",location:"",stockLevel:""}),O=y(!1),X=y("create"),Y=y(null),q=y(!1),Z=y(null),le=y(!1);y(!1);const je=k(()=>s.loading),Oe=k(()=>s.filteredParts),Pe=k(()=>s.inventoryStats),se=k(()=>X.value==="edit"),qe=k(()=>te(Pe.value)),$e=k(()=>J.value?new Date(J.value).toLocaleTimeString():""),We=k(()=>ae(Pe.value)),Qe=k(()=>{var u,t;return{currentPage:(((u=s.searchCriteria)==null?void 0:u.page)||0)+1,totalPages:s.totalPages||0,totalItems:s.totalElements||0,pageSize:((t=s.searchCriteria)==null?void 0:t.size)||10}}),Ge=k(()=>d(!1)),Je=[{label:"All Levels",value:""},{label:"Low Stock",value:"low"},{label:"Normal Stock",value:"normal"},{label:"Overstocked",value:"over"}],Xe=bt.debounce(u=>{A(u,h.value)},300),K=()=>{A(h.value.search,{supplier:h.value.supplier,location:h.value.location,stockLevel:h.value.stockLevel})},Ye=u=>{oe.value=u,h.value.category=u==="all"?"":u,K()},Ze=u=>{D(u)},Ke=u=>{U(u)},et=u=>{ke(u)},ne=async()=>{await p()},be=()=>{Y.value=null,X.value="create",tt(),ye()||fe(),O.value=!0},tt=()=>{X.value==="create"&&ye()&&(he.value=Be(),j.value=!0,console.log("✅ Found saved part data, showing restore notification"))},ke=u=>{l.push(`/inventory/parts/${u.id}`)},Se=u=>{Y.value=u,X.value="edit",Ee(u),Ae(),O.value=!0},at=u=>{Z.value=u,q.value=!0},rt=async()=>{try{await o(Z.value.id),q.value=!1,Z.value=null,await ne()}catch{}},ie=()=>{O.value=!1,Y.value=null,j.value=!1},ot=async()=>{var u;le.value=!0;try{(await n({validateForm:De,validateBusinessRules:z,getFormData:Ne,processPartData:P,isEditMode:se.value,partId:(u=Y.value)==null?void 0:u.id})).success&&(ge(),ie(),await ne())}finally{le.value=!1}},lt=u=>{b(),ze()},st=()=>{Re(),j.value=!1,console.log("Part form data restored successfully")},nt=()=>{ge(),j.value=!1,fe(),console.log("Part auto-saved data dismissed")},it=async()=>{await T(h.value)},b=()=>{console.log("🔥 Part user interaction detected!"),He()},ut=u=>{V.value=u,b()},{calculateStockLevel:xe}=Ve(),dt=u=>{const t={PARTS:"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z",TOOLS:"M11 4a2 2 0 114 0v1a1 1 0 001 1h3a1 1 0 011 1v3a1 1 0 01-1 1h-1a2 2 0 100 4h1a1 1 0 011 1v3a1 1 0 01-1 1h-3a1 1 0 01-1-1v-1a2 2 0 10-4 0v1a1 1 0 01-1 1H7a1 1 0 01-1-1v-3a1 1 0 00-1-1H4a1 1 0 01-1-1V9a1 1 0 011-1h1a2 2 0 100-4H4a1 1 0 01-1-1V4a1 1 0 011-1h3a1 1 0 011 1v1a2 2 0 104 0V4z",SUPPLIES:"M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4",EQUIPMENT:"M9 3v2m6-2v2M9 19v2m6-2v2M5 9H3m2 6H3m18-6h-2m2 6h-2M7 19h10a2 2 0 002-2V7a2 2 0 00-2-2H7a2 2 0 00-2 2v10a2 2 0 002 2zM9 9h6v6H9V9z"};return t[u]||t.PARTS},we=()=>{const u=i.query.edit,t=i.query.create==="true";try{u?setTimeout(async()=>{try{const a=await L(parseInt(u));Se(a),l.replace({path:"/inventory/parts"})}catch{l.replace({path:"/inventory/parts"})}},500):t&&setTimeout(()=>{be(),l.replace({path:"/inventory/parts"})},500)}catch{l.replace({path:"/inventory/parts"})}};return mt(async()=>{await s.initializeParts(),we()}),vt(()=>i.query,we),(u,t)=>(S(),ue(kt,null,{header:m(()=>[c(St,{title:"Parts & Inventory",description:"Manage parts, supplies, and inventory stock levels",breadcrumbs:[{text:"Inventory",to:"/inventory"},{text:"Parts",to:null}]},{actions:m(()=>[c(e(C),{variant:"outline",size:"sm",onClick:it},{default:m(()=>t[22]||(t[22]=[r("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1),w(" Export ",-1)])),_:1,__:[22]}),c(e(C),{variant:"outline",size:"sm",onClick:ne},{default:m(()=>t[23]||(t[23]=[r("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),w(" Refresh ",-1)])),_:1,__:[23]}),c(e(C),{variant:"primary",size:"sm",onClick:be},{default:m(()=>t[24]||(t[24]=[r("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),w(" Add Part ",-1)])),_:1,__:[24]})]),stats:m(()=>[c(e(xt),{stats:qe.value},null,8,["stats"])]),tabs:m(()=>[c(e(_e),{modelValue:oe.value,"onUpdate:modelValue":t[0]||(t[0]=a=>oe.value=a),tabs:We.value,onTabChange:Ye},null,8,["modelValue","tabs"])]),_:1})]),default:m(()=>[r("div",Tt,[r("div",_t,[c(e(_),{modelValue:h.value.search,"onUpdate:modelValue":t[1]||(t[1]=a=>h.value.search=a),placeholder:"Search parts...",onInput:e(Xe)},{prepend:m(()=>t[25]||(t[25]=[r("svg",{class:"w-4 h-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1)])),_:1},8,["modelValue","onInput"]),c(e(E),{modelValue:h.value.supplier,"onUpdate:modelValue":[t[2]||(t[2]=a=>h.value.supplier=a),K],placeholder:"Filter by Supplier",options:e(ve)},null,8,["modelValue","options"]),c(e(E),{modelValue:h.value.location,"onUpdate:modelValue":[t[3]||(t[3]=a=>h.value.location=a),K],placeholder:"Filter by Location",options:e(pe)},null,8,["modelValue","options"]),c(e(E),{modelValue:h.value.stockLevel,"onUpdate:modelValue":[t[4]||(t[4]=a=>h.value.stockLevel=a),K],placeholder:"Filter by Stock Level",options:Je},null,8,["modelValue"])]),r("div",It,[c(e(wt),{columns:Ge.value,data:Oe.value,loading:je.value,pagination:Qe.value,"empty-message":"No parts found",onSortChange:Ze,onPageChange:Ke,onRowClick:et},{"column-name":m(({row:a})=>[r("div",Mt,[r("div",Lt,[(S(),F("svg",Ut,[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:dt(a.category)},null,8,Dt)]))]),r("div",null,[r("h4",Nt,x(a.name),1),r("p",Et,x(e($)(a.partNumber)),1)])])]),"column-category":m(({row:a})=>[c(e(Te),{variant:e(R)(a.category)},{default:m(()=>[w(x(e(I)(a.category)),1)]),_:2},1032,["variant"])]),"column-stock":m(({row:a})=>[r("div",zt,[r("span",Rt,x(e(G)(a)),1),c(e(Te),{variant:e(B)(e(xe)(a)),size:"sm"},{default:m(()=>[w(x(e(M)(e(xe)(a))),1)]),_:2},1032,["variant"])])]),"column-unitCost":m(({row:a})=>[r("div",Bt,x(e(H)(a.unitCost)),1)]),"column-totalValue":m(({row:a})=>[r("div",Ht,x(e(H)(e(ee)(a))),1)]),"column-supplier":m(({row:a})=>[r("div",At,x(e(W)(a.supplier)),1)]),"column-location":m(({row:a})=>[r("div",jt,x(e(Q)(a.location)),1)]),"column-actions":m(({row:a})=>[r("div",Ot,[c(e(C),{variant:"ghost",size:"xs",onClick:de(Ce=>ke(a),["stop"]),title:"View Details"},{default:m(()=>t[26]||(t[26]=[r("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"}),r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"})],-1)])),_:2,__:[26]},1032,["onClick"]),c(e(C),{variant:"ghost",size:"xs",onClick:de(Ce=>Se(a),["stop"]),title:"Edit Part"},{default:m(()=>t[27]||(t[27]=[r("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1)])),_:2,__:[27]},1032,["onClick"]),c(e(C),{variant:"ghost",size:"xs",onClick:de(Ce=>at(a),["stop"]),title:"Delete Part",class:"text-red-600 hover:text-red-700"},{default:m(()=>t[28]||(t[28]=[r("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1)])),_:2,__:[28]},1032,["onClick"])])]),_:1},8,["columns","data","loading","pagination"])]),c(e(Fe),{modelValue:O.value,"onUpdate:modelValue":t[19]||(t[19]=a=>O.value=a),title:se.value?"Edit Part":"Create Part",size:"xl",onCancel:ie},{footer:m(()=>[r("div",ea,[r("div",ta,[e(re)||e(J)?(S(),F("div",aa,[e(re)?(S(),F("svg",ra,t[32]||(t[32]=[r("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z","clip-rule":"evenodd"},null,-1)]))):(S(),F("svg",oa,t[33]||(t[33]=[r("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z","clip-rule":"evenodd"},null,-1)]))),e(re)?(S(),F("span",la,"Auto-saving...")):e(J)?(S(),F("span",sa,"Last saved "+x($e.value),1)):N("",!0)])):N("",!0)]),r("div",na,[c(e(C),{variant:"secondary",onClick:ie},{default:m(()=>t[34]||(t[34]=[w(" Cancel ",-1)])),_:1,__:[34]}),e(Ue)?(S(),ue(e(C),{key:1,variant:"primary",loading:le.value,onClick:ot},{default:m(()=>[w(x(se.value?"Update Part":"Create Part"),1)]),_:1},8,["loading"])):(S(),ue(e(C),{key:0,variant:"primary",onClick:t[18]||(t[18]=a=>lt("next"))},{default:m(()=>t[35]||(t[35]=[w(" Next ",-1)])),_:1,__:[35]}))])])]),default:m(()=>[c(e(Ct),{visible:j.value,"saved-data-info":he.value,onRestore:st,onDismiss:nt},null,8,["visible","saved-data-info"]),r("div",qt,[c(e(_e),{modelValue:e(V),"onUpdate:modelValue":t[5]||(t[5]=a=>gt(V)?V.value=a:null),tabs:e(Me),onTabChange:ut},null,8,["modelValue","tabs"])]),e(V)==="basic"?(S(),F("div",$t,[r("div",Wt,[c(e(_),{modelValue:e(v).name,"onUpdate:modelValue":t[6]||(t[6]=a=>e(v).name=a),label:"Part Name",placeholder:"Enter part name",required:"",error:e(f).name,onInput:b},null,8,["modelValue","error"]),c(e(_),{modelValue:e(v).partNumber,"onUpdate:modelValue":t[7]||(t[7]=a=>e(v).partNumber=a),label:"Part Number",placeholder:"Enter part number",error:e(f).partNumber,onInput:b},null,8,["modelValue","error"]),c(e(E),{modelValue:e(v).category,"onUpdate:modelValue":t[8]||(t[8]=a=>e(v).category=a),label:"Category",placeholder:"Select category",options:e(Le),required:"",error:e(f).category,onChange:b},null,8,["modelValue","options","error"]),c(e(_),{modelValue:e(v).manufacturer,"onUpdate:modelValue":t[9]||(t[9]=a=>e(v).manufacturer=a),label:"Manufacturer",placeholder:"Enter manufacturer",error:e(f).manufacturer,onInput:b},null,8,["modelValue","error"]),r("div",Qt,[t[29]||(t[29]=r("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Description",-1)),ce(r("textarea",{"onUpdate:modelValue":t[10]||(t[10]=a=>e(v).description=a),class:yt(["w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",{"border-red-300":e(f).description}]),placeholder:"Describe the part...",rows:"3",onInput:b},null,34),[[me,e(v).description]]),e(f).description?(S(),F("p",Gt,x(e(f).description),1)):N("",!0)])])])):N("",!0),e(V)==="inventory"?(S(),F("div",Jt,[r("div",Xt,[c(e(_),{modelValue:e(v).currentStock,"onUpdate:modelValue":t[11]||(t[11]=a=>e(v).currentStock=a),label:"Current Stock",placeholder:"0",type:"number",required:"",error:e(f).currentStock,onInput:b},null,8,["modelValue","error"]),c(e(_),{modelValue:e(v).minStock,"onUpdate:modelValue":t[12]||(t[12]=a=>e(v).minStock=a),label:"Minimum Stock",placeholder:"0",type:"number",required:"",error:e(f).minStock,onInput:b},null,8,["modelValue","error"]),c(e(_),{modelValue:e(v).unitCost,"onUpdate:modelValue":t[13]||(t[13]=a=>e(v).unitCost=a),label:"Unit Cost",placeholder:"0.00",type:"number",step:"0.01",required:"",error:e(f).unitCost,onInput:b},null,8,["modelValue","error"])]),r("div",Yt,[c(e(E),{modelValue:e(v).supplier,"onUpdate:modelValue":t[14]||(t[14]=a=>e(v).supplier=a),label:"Supplier",placeholder:"Select supplier",options:e(ve),error:e(f).supplier,onChange:b},null,8,["modelValue","options","error"]),c(e(E),{modelValue:e(v).location,"onUpdate:modelValue":t[15]||(t[15]=a=>e(v).location=a),label:"Storage Location",placeholder:"Select storage location",options:e(pe),required:"",error:e(f).location,onChange:b},null,8,["modelValue","options","error"])])])):N("",!0),e(V)==="details"?(S(),F("div",Zt,[r("div",Kt,[r("div",null,[t[30]||(t[30]=r("label",{class:"block text-sm font-medium text-gray-700 mb-2"}," Additional Specifications ",-1)),ce(r("textarea",{"onUpdate:modelValue":t[16]||(t[16]=a=>e(v).specifications=a),class:"w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",placeholder:"Enter technical specifications, dimensions, materials, etc.",rows:"4",onInput:b},null,544),[[me,e(v).specifications]])]),r("div",null,[t[31]||(t[31]=r("label",{class:"block text-sm font-medium text-gray-700 mb-2"}," Notes ",-1)),ce(r("textarea",{"onUpdate:modelValue":t[17]||(t[17]=a=>e(v).notes=a),class:"w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",placeholder:"Additional notes, usage instructions, etc.",rows:"3",onInput:b},null,544),[[me,e(v).notes]])])])])):N("",!0)]),_:1},8,["modelValue","title"]),c(e(Fe),{modelValue:q.value,"onUpdate:modelValue":t[21]||(t[21]=a=>q.value=a),title:"Delete Part",size:"md"},{footer:m(()=>[r("div",ca,[c(e(C),{variant:"secondary",onClick:t[20]||(t[20]=a=>q.value=!1)},{default:m(()=>t[38]||(t[38]=[w(" Cancel ",-1)])),_:1,__:[38]}),c(e(C),{variant:"danger",onClick:rt},{default:m(()=>t[39]||(t[39]=[w(" Delete Part ",-1)])),_:1,__:[39]})])]),default:m(()=>{var a;return[r("div",ia,[r("p",ua,[t[36]||(t[36]=w(" Are you sure you want to delete ",-1)),r("strong",da,"'"+x((a=Z.value)==null?void 0:a.name)+"'",1),t[37]||(t[37]=w("? This action cannot be undone. ",-1))])])]}),_:1},8,["modelValue"])])]),_:1}))}};export{Ta as default}; +import{r as y,c as k,l as ct,o as mt,m as vt,i as ue,w as m,s as pt,v as ft,g as S,b as r,d as c,e,F as C,h as de,t as x,k as w,a as F,j as N,aW as gt,ae as ce,n as yt,aV as me}from"./index-QAlcqU00.js";import{u as Ie}from"./parts-imZSnlsl.js";import{u as ht}from"./useFormAutoSave-BrW9Wl2Q.js";import{u as Ve,a as Pt}from"./usePartDisplay-DgOw31kV.js";import{l as bt}from"./lodash-RqMXHFU9.js";import{F as kt,a as St}from"./FPPageHeader-CFIwZZgQ.js";import{F as _}from"./FPInput-D5RURom0.js";import{F as E}from"./FPSelect-j7n_x8eB.js";import{F as xt}from"./FPStats-DOY0PQQF.js";import{F as wt}from"./FPTable-CWvngIYd.js";import{F as Fe}from"./FPModal-DMoPysvU.js";import{F as Te}from"./FPBadge-DvOitM1C.js";import{F as _e}from"./FPTabs-qq-Tmb7J.js";import{_ as Ct}from"./FormRestoreNotification-2Wflg1mH.js";import"./_commonjsHelpers-NT8qMgGI.js";import"./FPCard-AB6NRXg5.js";function Vt(g={}){const l=y({name:"",partNumber:"",manufacturer:"",description:"",category:"",currentStock:"",minStock:"",unitCost:"",supplier:"",location:"",parentPartId:null,...g}),i=y({}),s=y("basic"),P=[{key:"basic",label:"Basic Information"},{key:"inventory",label:"Inventory & Pricing"},{key:"details",label:"Details & Specifications"}],z=[{label:"Parts",value:"PARTS"},{label:"Tools",value:"TOOLS"},{label:"Supplies",value:"SUPPLIES"},{label:"Equipment",value:"EQUIPMENT"},{label:"Consumables",value:"CONSUMABLES"}],R=k(()=>[{label:"HVAC Supply Co",value:"HVAC Supply Co"},{label:"Elevator Parts Inc",value:"Elevator Parts Inc"},{label:"Safety Equipment Ltd",value:"Safety Equipment Ltd"},{label:"Tool Supply Co",value:"Tool Supply Co"},{label:"General Parts Supplier",value:"General Parts Supplier"}]),B=k(()=>[{label:"Warehouse A1",value:"Warehouse A1"},{label:"Warehouse B2",value:"Warehouse B2"},{label:"Storage Room C",value:"Storage Room C"},{label:"Tool Room",value:"Tool Room"},{label:"Main Storage",value:"Main Storage"}]),I=()=>{if(i.value={},!l.value.name||l.value.name.trim().length===0?i.value.name="Part name is required":l.value.name.trim().length<2&&(i.value.name="Part name must be at least 2 characters"),l.value.category||(i.value.category="Category is required"),(!l.value.location||l.value.location.trim().length===0)&&(i.value.location="Storage location is required"),l.value.currentStock!==""&&l.value.currentStock!==null&&l.value.currentStock!==void 0){const o=parseFloat(l.value.currentStock);(isNaN(o)||o<0)&&(i.value.currentStock="Current stock must be a non-negative number")}if(l.value.minStock!==""&&l.value.minStock!==null&&l.value.minStock!==void 0){const o=parseFloat(l.value.minStock);(isNaN(o)||o<0)&&(i.value.minStock="Minimum stock must be a non-negative number")}if(l.value.unitCost!==""&&l.value.unitCost!==null&&l.value.unitCost!==void 0){const o=parseFloat(l.value.unitCost);(isNaN(o)||o<0)&&(i.value.unitCost="Unit cost must be a non-negative number")}return Object.keys(i.value).length===0},M=o=>i.value[o]||null,H=()=>{i.value={}},$=o=>{i.value[o]&&delete i.value[o]},W=k(()=>I()),Q=k(()=>s.value===P[0].key),G=k(()=>s.value===P[P.length-1].key);return{formData:l,errors:i,activeTab:s,formTabs:P,categoryOptions:z,supplierOptions:R,locationOptions:B,isValid:W,isFirstTab:Q,isLastTab:G,validateForm:I,getFieldError:M,clearErrors:H,clearFieldError:$,nextTab:()=>{const o=P.findIndex(p=>p.key===s.value);o{const o=P.findIndex(p=>p.key===s.value);o>0&&(s.value=P[o-1].key)},resetForm:()=>{l.value={name:"",partNumber:"",manufacturer:"",description:"",category:"",currentStock:"",minStock:"",unitCost:"",supplier:"",location:"",parentPartId:null},i.value={},s.value="basic"},getFormData:()=>l.value,populateForm:o=>{var p,T,L;l.value={name:o.name||"",partNumber:o.partNumber||"",manufacturer:o.manufacturer||"",description:o.description||"",category:o.category||"",currentStock:((p=o.currentStock)==null?void 0:p.toString())||"",minStock:((T=o.minStock)==null?void 0:T.toString())||"",unitCost:((L=o.unitCost)==null?void 0:L.toString())||"",supplier:o.supplier||"",location:o.location||"",parentPartId:o.parentPartId||null},i.value={}}}}function Ft(){const g=Ie(),{showNotification:l}=ct(),i=y(!1),s=y(null),P=async(d,n=!1,o=null)=>{i.value=!0,s.value=null;try{let p;return n&&o?(p=await g.updatePart(o,d),l("success","Part updated successfully")):(p=await g.createPart(d),l("success","Part created successfully")),p}catch(p){const T=n?"Failed to update part":"Failed to create part";throw s.value=p.message,l("error",T),console.error("Part submission error:",p),p}finally{i.value=!1}},z=async d=>{i.value=!0,s.value=null;try{await g.deletePart(d),l("success","Part deleted successfully")}catch(n){throw s.value=n.message,l("error","Failed to delete part"),console.error("Part deletion error:",n),n}finally{i.value=!1}},R=async d=>{i.value=!0,s.value=null;try{return await g.getPartById(parseInt(d))}catch(n){throw s.value=n.message,l("error","Failed to load part for editing"),console.error("Part load error:",n),n}finally{i.value=!1}},B=async()=>{i.value=!0,s.value=null;try{await g.refreshParts(),l("success","Parts refreshed successfully")}catch(d){throw s.value=d.message,l("error","Failed to refresh parts"),console.error("Parts refresh error:",d),d}finally{i.value=!1}},I=async(d={})=>{i.value=!0,s.value=null;try{await g.exportParts(d),l("success","Parts exported successfully")}catch(n){throw s.value=n.message,l("error","Failed to export parts"),console.error("Part export error:",n),n}finally{i.value=!1}},M=async(d,n,o)=>{if(!d())return{isValid:!1,type:"form",message:"Please fix the validation errors before submitting"};const p=n(o);return p.isValid?{isValid:!0}:{isValid:!1,type:"business",message:p.errors.join(", ")}};return{isProcessing:i,error:s,handlePartSubmission:P,handlePartDeletion:z,handlePartLoad:R,handlePartsRefresh:B,handlePartExport:I,handleStockUpdate:async(d,n,o)=>{i.value=!0,s.value=null;try{await g.updateStock(d,n,o),l("success","Stock updated successfully")}catch(p){throw s.value=p.message,l("error","Failed to update stock"),console.error("Stock update error:",p),p}finally{i.value=!1}},handlePartsReservation:async(d,n)=>{i.value=!0,s.value=null;try{await g.reserveParts(d,n),l("success","Parts reserved successfully")}catch(o){throw s.value=o.message,l("error","Failed to reserve parts"),console.error("Parts reservation error:",o),o}finally{i.value=!1}},handlePartsRelease:async d=>{i.value=!0,s.value=null;try{await g.releaseParts(d),l("success","Parts released successfully")}catch(n){throw s.value=n.message,l("error","Failed to release parts"),console.error("Parts release error:",n),n}finally{i.value=!1}},submitPart:async({validateForm:d,validateBusinessRules:n,getFormData:o,processPartData:p,isEditMode:T=!1,partId:L=null,onSuccess:A=null,onError:U=null})=>{try{const D=o(),v=p(D),f=await M(d,n,v);if(!f.isValid)return l("error",f.message),U&&U(new Error(f.message)),{success:!1,error:f.message};const V=await P(v,T,L);return A&&A(V),{success:!0,data:V}}catch(D){return U&&U(D),{success:!1,error:D.message}}},validatePartSubmission:M,handlePartSearch:async(d,n={})=>{try{await g.updateSearchTerm(d),Object.keys(n).length>0&&await g.updateFilters(n)}catch(o){s.value=o.message,console.error("Part search error:",o)}},handlePartPagination:async d=>{try{await g.changePage(d-1)}catch(n){s.value=n.message,console.error("Part pagination error:",n)}},handlePartSorting:async d=>{try{await g.changeSorting(d.column,d.direction)}catch(n){s.value=n.message,console.error("Part sorting error:",n)}},clearError:()=>{s.value=null}}}const Tt={class:"p-6"},_t={class:"mb-6 grid grid-cols-1 md:grid-cols-4 gap-4"},It={class:"bg-white shadow rounded-lg overflow-hidden"},Mt={class:"flex items-center space-x-3"},Lt={class:"w-8 h-8 bg-blue-100 rounded-lg flex items-center justify-center"},Ut={class:"w-4 h-4 text-blue-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},Dt=["d"],Nt={class:"font-medium text-gray-900"},Et={class:"text-sm text-gray-500"},zt={class:"flex items-center space-x-2"},Rt={class:"font-medium text-gray-900"},Bt={class:"text-sm font-medium text-gray-900"},Ht={class:"text-sm font-medium text-gray-900"},At={class:"text-sm text-gray-900"},jt={class:"text-sm text-gray-900"},Ot={class:"flex items-center space-x-2"},qt={class:"border-b border-gray-200 mb-6"},$t={key:0,class:"space-y-6"},Wt={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},Qt={class:"md:col-span-2"},Gt={key:0,class:"mt-1 text-sm text-red-600"},Jt={key:1,class:"space-y-6"},Xt={class:"grid grid-cols-1 md:grid-cols-3 gap-6"},Yt={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},Zt={key:2,class:"space-y-6"},Kt={class:"space-y-4"},ea={class:"flex items-center justify-between"},ta={class:"flex items-center space-x-4"},aa={key:0,class:"flex items-center text-sm text-gray-500"},ra={key:0,class:"w-4 h-4 mr-2 text-amber-500 animate-pulse",fill:"currentColor",viewBox:"0 0 20 20"},oa={key:1,class:"w-4 h-4 mr-2 text-green-500",fill:"currentColor",viewBox:"0 0 20 20"},la={key:2},sa={key:3},na={class:"flex space-x-3"},ia={class:"space-y-4"},ua={class:"text-gray-600"},da={class:"text-gray-900"},ca={class:"flex justify-end space-x-3"},Ta={__name:"PartsListView",setup(g){const l=ft(),i=pt(),s=Ie(),{processPartData:P,validatePartBusinessRules:z}=Ve(),{getCategoryVariant:R,getStockLevelVariant:B,formatCategory:I,formatStockLevel:M,formatCurrency:H,formatPartNumber:$,formatSupplier:W,formatLocation:Q,formatStockDisplay:G,calculatePartValue:ee,formatInventoryStats:te,getCategoryTabs:ae,getPartTableColumns:d}=Pt(),{submitPart:n,handlePartDeletion:o,handlePartsRefresh:p,handlePartExport:T,handlePartLoad:L,handlePartSearch:A,handlePartPagination:U,handlePartSorting:D}=Ft(),{formData:v,errors:f,activeTab:V,formTabs:Me,categoryOptions:Le,supplierOptions:ve,locationOptions:pe,isLastTab:Ue,validateForm:De,resetForm:fe,getFormData:Ne,populateForm:Ee,nextTab:ze}=Vt(),{hasUnsavedChanges:re,lastSaveTime:J,restoreFormData:Re,clearSavedData:ge,hasSavedData:ye,getSavedDataInfo:Be,markUserInteraction:He,finishInitialization:Ae}=ht(v,{storageKey:"atlas_part_form_data",saveInterval:3e3,excludeFields:[]}),j=y(!1),he=y(null),oe=y("all"),h=y({search:"",supplier:"",location:"",stockLevel:""}),O=y(!1),X=y("create"),Y=y(null),q=y(!1),Z=y(null),le=y(!1);y(!1);const je=k(()=>s.loading),Oe=k(()=>s.filteredParts),Pe=k(()=>s.inventoryStats),se=k(()=>X.value==="edit"),qe=k(()=>te(Pe.value)),$e=k(()=>J.value?new Date(J.value).toLocaleTimeString():""),We=k(()=>ae(Pe.value)),Qe=k(()=>{var u,t;return{currentPage:(((u=s.searchCriteria)==null?void 0:u.page)||0)+1,totalPages:s.totalPages||0,totalItems:s.totalElements||0,pageSize:((t=s.searchCriteria)==null?void 0:t.size)||10}}),Ge=k(()=>d(!1)),Je=[{label:"All Levels",value:""},{label:"Low Stock",value:"low"},{label:"Normal Stock",value:"normal"},{label:"Overstocked",value:"over"}],Xe=bt.debounce(u=>{A(u,h.value)},300),K=()=>{A(h.value.search,{supplier:h.value.supplier,location:h.value.location,stockLevel:h.value.stockLevel})},Ye=u=>{oe.value=u,h.value.category=u==="all"?"":u,K()},Ze=u=>{D(u)},Ke=u=>{U(u)},et=u=>{ke(u)},ne=async()=>{await p()},be=()=>{Y.value=null,X.value="create",tt(),ye()||fe(),O.value=!0},tt=()=>{X.value==="create"&&ye()&&(he.value=Be(),j.value=!0,console.log("✅ Found saved part data, showing restore notification"))},ke=u=>{l.push(`/inventory/parts/${u.id}`)},Se=u=>{Y.value=u,X.value="edit",Ee(u),Ae(),O.value=!0},at=u=>{Z.value=u,q.value=!0},rt=async()=>{try{await o(Z.value.id),q.value=!1,Z.value=null,await ne()}catch{}},ie=()=>{O.value=!1,Y.value=null,j.value=!1},ot=async()=>{var u;le.value=!0;try{(await n({validateForm:De,validateBusinessRules:z,getFormData:Ne,processPartData:P,isEditMode:se.value,partId:(u=Y.value)==null?void 0:u.id})).success&&(ge(),ie(),await ne())}finally{le.value=!1}},lt=u=>{b(),ze()},st=()=>{Re(),j.value=!1,console.log("Part form data restored successfully")},nt=()=>{ge(),j.value=!1,fe(),console.log("Part auto-saved data dismissed")},it=async()=>{await T(h.value)},b=()=>{console.log("🔥 Part user interaction detected!"),He()},ut=u=>{V.value=u,b()},{calculateStockLevel:xe}=Ve(),dt=u=>{const t={PARTS:"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z",TOOLS:"M11 4a2 2 0 114 0v1a1 1 0 001 1h3a1 1 0 011 1v3a1 1 0 01-1 1h-1a2 2 0 100 4h1a1 1 0 011 1v3a1 1 0 01-1 1h-3a1 1 0 01-1-1v-1a2 2 0 10-4 0v1a1 1 0 01-1 1H7a1 1 0 01-1-1v-3a1 1 0 00-1-1H4a1 1 0 01-1-1V9a1 1 0 011-1h1a2 2 0 100-4H4a1 1 0 01-1-1V4a1 1 0 011-1h3a1 1 0 011 1v1a2 2 0 104 0V4z",SUPPLIES:"M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4",EQUIPMENT:"M9 3v2m6-2v2M9 19v2m6-2v2M5 9H3m2 6H3m18-6h-2m2 6h-2M7 19h10a2 2 0 002-2V7a2 2 0 00-2-2H7a2 2 0 00-2 2v10a2 2 0 002 2zM9 9h6v6H9V9z"};return t[u]||t.PARTS},we=()=>{const u=i.query.edit,t=i.query.create==="true";try{u?setTimeout(async()=>{try{const a=await L(parseInt(u));Se(a),l.replace({path:"/inventory/parts"})}catch{l.replace({path:"/inventory/parts"})}},500):t&&setTimeout(()=>{be(),l.replace({path:"/inventory/parts"})},500)}catch{l.replace({path:"/inventory/parts"})}};return mt(async()=>{await s.initializeParts(),we()}),vt(()=>i.query,we),(u,t)=>(S(),ue(kt,null,{header:m(()=>[c(St,{title:"Parts & Inventory",description:"Manage parts, supplies, and inventory stock levels",breadcrumbs:[{text:"Inventory",to:"/inventory"},{text:"Parts",to:null}]},{actions:m(()=>[c(e(C),{variant:"outline",size:"sm",onClick:it},{default:m(()=>t[22]||(t[22]=[r("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1),w(" Export ",-1)])),_:1,__:[22]}),c(e(C),{variant:"outline",size:"sm",onClick:ne},{default:m(()=>t[23]||(t[23]=[r("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),w(" Refresh ",-1)])),_:1,__:[23]}),c(e(C),{variant:"primary",size:"sm",onClick:be},{default:m(()=>t[24]||(t[24]=[r("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),w(" Add Part ",-1)])),_:1,__:[24]})]),stats:m(()=>[c(e(xt),{stats:qe.value},null,8,["stats"])]),tabs:m(()=>[c(e(_e),{modelValue:oe.value,"onUpdate:modelValue":t[0]||(t[0]=a=>oe.value=a),tabs:We.value,onTabChange:Ye},null,8,["modelValue","tabs"])]),_:1})]),default:m(()=>[r("div",Tt,[r("div",_t,[c(e(_),{modelValue:h.value.search,"onUpdate:modelValue":t[1]||(t[1]=a=>h.value.search=a),placeholder:"Search parts...",onInput:e(Xe)},{prepend:m(()=>t[25]||(t[25]=[r("svg",{class:"w-4 h-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1)])),_:1},8,["modelValue","onInput"]),c(e(E),{modelValue:h.value.supplier,"onUpdate:modelValue":[t[2]||(t[2]=a=>h.value.supplier=a),K],placeholder:"Filter by Supplier",options:e(ve)},null,8,["modelValue","options"]),c(e(E),{modelValue:h.value.location,"onUpdate:modelValue":[t[3]||(t[3]=a=>h.value.location=a),K],placeholder:"Filter by Location",options:e(pe)},null,8,["modelValue","options"]),c(e(E),{modelValue:h.value.stockLevel,"onUpdate:modelValue":[t[4]||(t[4]=a=>h.value.stockLevel=a),K],placeholder:"Filter by Stock Level",options:Je},null,8,["modelValue"])]),r("div",It,[c(e(wt),{columns:Ge.value,data:Oe.value,loading:je.value,pagination:Qe.value,"empty-message":"No parts found",onSortChange:Ze,onPageChange:Ke,onRowClick:et},{"column-name":m(({row:a})=>[r("div",Mt,[r("div",Lt,[(S(),F("svg",Ut,[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:dt(a.category)},null,8,Dt)]))]),r("div",null,[r("h4",Nt,x(a.name),1),r("p",Et,x(e($)(a.partNumber)),1)])])]),"column-category":m(({row:a})=>[c(e(Te),{variant:e(R)(a.category)},{default:m(()=>[w(x(e(I)(a.category)),1)]),_:2},1032,["variant"])]),"column-stock":m(({row:a})=>[r("div",zt,[r("span",Rt,x(e(G)(a)),1),c(e(Te),{variant:e(B)(e(xe)(a)),size:"sm"},{default:m(()=>[w(x(e(M)(e(xe)(a))),1)]),_:2},1032,["variant"])])]),"column-unitCost":m(({row:a})=>[r("div",Bt,x(e(H)(a.unitCost)),1)]),"column-totalValue":m(({row:a})=>[r("div",Ht,x(e(H)(e(ee)(a))),1)]),"column-supplier":m(({row:a})=>[r("div",At,x(e(W)(a.supplier)),1)]),"column-location":m(({row:a})=>[r("div",jt,x(e(Q)(a.location)),1)]),"column-actions":m(({row:a})=>[r("div",Ot,[c(e(C),{variant:"ghost",size:"xs",onClick:de(Ce=>ke(a),["stop"]),title:"View Details"},{default:m(()=>t[26]||(t[26]=[r("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"}),r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"})],-1)])),_:2,__:[26]},1032,["onClick"]),c(e(C),{variant:"ghost",size:"xs",onClick:de(Ce=>Se(a),["stop"]),title:"Edit Part"},{default:m(()=>t[27]||(t[27]=[r("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1)])),_:2,__:[27]},1032,["onClick"]),c(e(C),{variant:"ghost",size:"xs",onClick:de(Ce=>at(a),["stop"]),title:"Delete Part",class:"text-red-600 hover:text-red-700"},{default:m(()=>t[28]||(t[28]=[r("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1)])),_:2,__:[28]},1032,["onClick"])])]),_:1},8,["columns","data","loading","pagination"])]),c(e(Fe),{modelValue:O.value,"onUpdate:modelValue":t[19]||(t[19]=a=>O.value=a),title:se.value?"Edit Part":"Create Part",size:"xl",onCancel:ie},{footer:m(()=>[r("div",ea,[r("div",ta,[e(re)||e(J)?(S(),F("div",aa,[e(re)?(S(),F("svg",ra,t[32]||(t[32]=[r("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z","clip-rule":"evenodd"},null,-1)]))):(S(),F("svg",oa,t[33]||(t[33]=[r("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z","clip-rule":"evenodd"},null,-1)]))),e(re)?(S(),F("span",la,"Auto-saving...")):e(J)?(S(),F("span",sa,"Last saved "+x($e.value),1)):N("",!0)])):N("",!0)]),r("div",na,[c(e(C),{variant:"secondary",onClick:ie},{default:m(()=>t[34]||(t[34]=[w(" Cancel ",-1)])),_:1,__:[34]}),e(Ue)?(S(),ue(e(C),{key:1,variant:"primary",loading:le.value,onClick:ot},{default:m(()=>[w(x(se.value?"Update Part":"Create Part"),1)]),_:1},8,["loading"])):(S(),ue(e(C),{key:0,variant:"primary",onClick:t[18]||(t[18]=a=>lt("next"))},{default:m(()=>t[35]||(t[35]=[w(" Next ",-1)])),_:1,__:[35]}))])])]),default:m(()=>[c(e(Ct),{visible:j.value,"saved-data-info":he.value,onRestore:st,onDismiss:nt},null,8,["visible","saved-data-info"]),r("div",qt,[c(e(_e),{modelValue:e(V),"onUpdate:modelValue":t[5]||(t[5]=a=>gt(V)?V.value=a:null),tabs:e(Me),onTabChange:ut},null,8,["modelValue","tabs"])]),e(V)==="basic"?(S(),F("div",$t,[r("div",Wt,[c(e(_),{modelValue:e(v).name,"onUpdate:modelValue":t[6]||(t[6]=a=>e(v).name=a),label:"Part Name",placeholder:"Enter part name",required:"",error:e(f).name,onInput:b},null,8,["modelValue","error"]),c(e(_),{modelValue:e(v).partNumber,"onUpdate:modelValue":t[7]||(t[7]=a=>e(v).partNumber=a),label:"Part Number",placeholder:"Enter part number",error:e(f).partNumber,onInput:b},null,8,["modelValue","error"]),c(e(E),{modelValue:e(v).category,"onUpdate:modelValue":t[8]||(t[8]=a=>e(v).category=a),label:"Category",placeholder:"Select category",options:e(Le),required:"",error:e(f).category,onChange:b},null,8,["modelValue","options","error"]),c(e(_),{modelValue:e(v).manufacturer,"onUpdate:modelValue":t[9]||(t[9]=a=>e(v).manufacturer=a),label:"Manufacturer",placeholder:"Enter manufacturer",error:e(f).manufacturer,onInput:b},null,8,["modelValue","error"]),r("div",Qt,[t[29]||(t[29]=r("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Description",-1)),ce(r("textarea",{"onUpdate:modelValue":t[10]||(t[10]=a=>e(v).description=a),class:yt(["w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",{"border-red-300":e(f).description}]),placeholder:"Describe the part...",rows:"3",onInput:b},null,34),[[me,e(v).description]]),e(f).description?(S(),F("p",Gt,x(e(f).description),1)):N("",!0)])])])):N("",!0),e(V)==="inventory"?(S(),F("div",Jt,[r("div",Xt,[c(e(_),{modelValue:e(v).currentStock,"onUpdate:modelValue":t[11]||(t[11]=a=>e(v).currentStock=a),label:"Current Stock",placeholder:"0",type:"number",required:"",error:e(f).currentStock,onInput:b},null,8,["modelValue","error"]),c(e(_),{modelValue:e(v).minStock,"onUpdate:modelValue":t[12]||(t[12]=a=>e(v).minStock=a),label:"Minimum Stock",placeholder:"0",type:"number",required:"",error:e(f).minStock,onInput:b},null,8,["modelValue","error"]),c(e(_),{modelValue:e(v).unitCost,"onUpdate:modelValue":t[13]||(t[13]=a=>e(v).unitCost=a),label:"Unit Cost",placeholder:"0.00",type:"number",step:"0.01",required:"",error:e(f).unitCost,onInput:b},null,8,["modelValue","error"])]),r("div",Yt,[c(e(E),{modelValue:e(v).supplier,"onUpdate:modelValue":t[14]||(t[14]=a=>e(v).supplier=a),label:"Supplier",placeholder:"Select supplier",options:e(ve),error:e(f).supplier,onChange:b},null,8,["modelValue","options","error"]),c(e(E),{modelValue:e(v).location,"onUpdate:modelValue":t[15]||(t[15]=a=>e(v).location=a),label:"Storage Location",placeholder:"Select storage location",options:e(pe),required:"",error:e(f).location,onChange:b},null,8,["modelValue","options","error"])])])):N("",!0),e(V)==="details"?(S(),F("div",Zt,[r("div",Kt,[r("div",null,[t[30]||(t[30]=r("label",{class:"block text-sm font-medium text-gray-700 mb-2"}," Additional Specifications ",-1)),ce(r("textarea",{"onUpdate:modelValue":t[16]||(t[16]=a=>e(v).specifications=a),class:"w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",placeholder:"Enter technical specifications, dimensions, materials, etc.",rows:"4",onInput:b},null,544),[[me,e(v).specifications]])]),r("div",null,[t[31]||(t[31]=r("label",{class:"block text-sm font-medium text-gray-700 mb-2"}," Notes ",-1)),ce(r("textarea",{"onUpdate:modelValue":t[17]||(t[17]=a=>e(v).notes=a),class:"w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",placeholder:"Additional notes, usage instructions, etc.",rows:"3",onInput:b},null,544),[[me,e(v).notes]])])])])):N("",!0)]),_:1},8,["modelValue","title"]),c(e(Fe),{modelValue:q.value,"onUpdate:modelValue":t[21]||(t[21]=a=>q.value=a),title:"Delete Part",size:"md"},{footer:m(()=>[r("div",ca,[c(e(C),{variant:"secondary",onClick:t[20]||(t[20]=a=>q.value=!1)},{default:m(()=>t[38]||(t[38]=[w(" Cancel ",-1)])),_:1,__:[38]}),c(e(C),{variant:"danger",onClick:rt},{default:m(()=>t[39]||(t[39]=[w(" Delete Part ",-1)])),_:1,__:[39]})])]),default:m(()=>{var a;return[r("div",ia,[r("p",ua,[t[36]||(t[36]=w(" Are you sure you want to delete ",-1)),r("strong",da,"'"+x((a=Z.value)==null?void 0:a.name)+"'",1),t[37]||(t[37]=w("? This action cannot be undone. ",-1))])])]}),_:1},8,["modelValue"])])]),_:1}))}};export{Ta as default}; diff --git a/frontend/dist/assets/PartsView-sO6yRU0X.js b/frontend/dist/assets/PartsView-alieN3OC.js similarity index 62% rename from frontend/dist/assets/PartsView-sO6yRU0X.js rename to frontend/dist/assets/PartsView-alieN3OC.js index e5284e1c..ce8b5c28 100644 --- a/frontend/dist/assets/PartsView-sO6yRU0X.js +++ b/frontend/dist/assets/PartsView-alieN3OC.js @@ -1 +1 @@ -import{i as o,f as r,g as t}from"./index-BUdRbiwj.js";const c={__name:"PartsView",setup(n){return(s,_)=>{const e=r("router-view");return t(),o(e)}}};export{c as default}; +import{i as o,f as r,g as t}from"./index-QAlcqU00.js";const c={__name:"PartsView",setup(n){return(s,_)=>{const e=r("router-view");return t(),o(e)}}};export{c as default}; diff --git a/frontend/dist/assets/PeopleListView-B0nZJzbG.js b/frontend/dist/assets/PeopleListView-Cmts--ZM.js similarity index 94% rename from frontend/dist/assets/PeopleListView-B0nZJzbG.js rename to frontend/dist/assets/PeopleListView-Cmts--ZM.js index f7914129..90bc6af6 100644 --- a/frontend/dist/assets/PeopleListView-B0nZJzbG.js +++ b/frontend/dist/assets/PeopleListView-Cmts--ZM.js @@ -1 +1 @@ -import{q as $e,r as c,c as f,o as He,i as P,w as s,s as Oe,v as qe,g as i,b as a,d as n,a as p,j as b,ae as O,t as d,e as o,F as g,k as u,af as Z,aQ as ee,ai as Ge,ba as le}from"./index-BUdRbiwj.js";import{F as Qe,a as We}from"./FPPageHeader-CTG2L28r.js";import{F as B}from"./FPInput-CzR_dWoe.js";import{F as q}from"./FPSelect-C7p47Ma2.js";import{F as Ye}from"./FPStats-BGfZcDZc.js";import{F as Je}from"./FPTable-CU8C_NYc.js";import{F as G}from"./FPModal-DWGF1LV8.js";import{F as V}from"./FPBadge-BKY5dPnL.js";import{F as Ke}from"./FPTabs-R71V25QN.js";import{u as Xe}from"./users-DxH_c7oY.js";import{u as Ze,a as el}from"./roles-f1XEGBFr.js";import"./FPCard-qHzcEQAE.js";const ll={class:"p-6"},al={key:0,class:"flex justify-center py-12"},tl={key:1,class:"bg-red-50 border border-red-200 rounded-lg p-6 mb-6"},sl={class:"flex items-start"},ol={class:"text-red-700 mb-4"},nl={class:"mb-6 grid grid-cols-1 md:grid-cols-4 gap-4"},rl={class:"flex items-center"},il={class:"w-10 h-10 rounded-full bg-primary-100 flex items-center justify-center mr-3"},ul={class:"text-sm font-medium text-primary-600"},dl={class:"font-medium text-gray-900"},vl={class:"text-sm text-gray-600"},ml={key:0,class:"flex flex-wrap gap-1"},cl={key:1,class:"text-sm text-gray-400"},pl={key:0,class:"text-sm text-gray-900"},gl={key:1,class:"text-sm text-gray-400"},fl={class:"flex items-center space-x-2"},bl={key:0},yl={key:0},kl={key:0},xl={key:0},hl={key:0,class:"space-y-6"},wl={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},Cl={class:"md:col-span-2"},Ul={class:"flex justify-end space-x-2"},Vl={key:0,class:"space-y-4"},Ml={class:"text-sm text-gray-600"},Sl={class:"flex justify-end space-x-2"},Fl={key:0,class:"space-y-4"},_l={class:"text-sm text-gray-600"},Rl={key:0,class:"flex flex-wrap gap-2"},Tl={key:1,class:"text-sm text-gray-400"},zl={class:"space-y-3"},Nl={class:"flex items-center space-x-3"},Il={class:"flex items-center space-x-3"},Pl={class:"flex items-center space-x-3"},Ll={class:"flex justify-end space-x-2"},jl={class:"space-y-6"},El={key:0,class:"space-y-1"},Al={class:"text-sm"},Bl={class:"flex justify-end space-x-2"},ea={__name:"PeopleListView",setup(Dl){const ae=Oe(),Q=qe(),te=$e(),v=Xe(),ce=Ze(),h=el(),L=c("all"),M=c(""),w=c(""),C=c("all"),j=c(!1),R=c(!1),E=c(!1),A=c(!1),U=c("view"),r=c(null),D=c(window.innerWidth<768),k=c(""),y=c([]),S=c(""),F=c(""),x=c([]),T=c(!1),z=c(!1);c(!1);const N=c(!1);let se=null;const W=f(()=>v.loading),oe=f(()=>v.error);f(()=>h.userPermissions.canViewUsers),f(()=>h.userPermissions.canCreateUsers);const I=f(()=>h.userPermissions.canEditUsers);f(()=>h.userPermissions.canDeleteUsers);const pe=f(()=>h.userPermissions.canCreateUsers),ge=f(()=>M.value||w.value||C.value!=="all"),fe=f(()=>{const t=v.users.content||[];return[{name:"Total Users",value:v.users.totalElements||t.length,variant:"primary"},{name:"Active",value:t.filter(e=>e.enabled).length,variant:"success"},{name:"Inactive",value:t.filter(e=>!e.enabled).length,variant:"error"},{name:"Pending",value:t.filter(e=>e.status==="PENDING").length,variant:"warning"}]}),be=f(()=>{const t=v.users.content||[];return[{key:"all",label:"All Users",count:t.length},{key:"active",label:"Active",count:t.filter(e=>e.enabled).length},{key:"inactive",label:"Inactive",count:t.filter(e=>!e.enabled).length},{key:"pending",label:"Pending",count:t.filter(e=>e.status==="PENDING").length}]}),Y=f(()=>{const t=h.roles||[];return[{value:"",label:"All Roles"},...t.map(e=>({value:e.code,label:e.name}))]}),ye=[{value:"all",label:"All Status"},{value:"enabled",label:"Active"},{value:"disabled",label:"Inactive"}],$=f(()=>{let t=v.users.content||[];if(M.value){const e=M.value.toLowerCase();t=t.filter(l=>{var m,X,de,ve,me;return((m=l.firstName)==null?void 0:m.toLowerCase().includes(e))||((X=l.lastName)==null?void 0:X.toLowerCase().includes(e))||((de=l.email)==null?void 0:de.toLowerCase().includes(e))||((ve=l.phone)==null?void 0:ve.toLowerCase().includes(e))||((me=l.jobTitle)==null?void 0:me.toLowerCase().includes(e))})}return w.value&&(t=t.filter(e=>{var l;return((l=e.role)==null?void 0:l.code)===w.value})),C.value==="enabled"?t=t.filter(e=>e.enabled):C.value==="disabled"&&(t=t.filter(e=>!e.enabled)),L.value==="active"?t=t.filter(e=>e.enabled):L.value==="inactive"?t=t.filter(e=>!e.enabled):L.value==="pending"&&(t=t.filter(e=>e.status==="PENDING")),t}),ke=[{key:"user",label:"User",sortable:!0},{key:"role",label:"Role",sortable:!0},{key:"status",label:"Status",sortable:!0},{key:"teams",label:"Teams",sortable:!1},{key:"lastLogin",label:"Last Login",sortable:!0}],xe=f(()=>({currentPage:v.users.currentPage+1,total:v.users.totalElements,pageSize:v.users.pageSize||10})),ne=async()=>{try{console.log("Initializing user management data..."),te.user&&h.setCurrentUser(te.user),await Promise.all([v.searchUsers(),h.loadRoles(),ce.loadTeams()]),console.log("User management data loaded successfully")}catch(t){console.error("Failed to initialize data:",t)}},H=async()=>{console.log("Refreshing user data..."),await v.searchUsers()},he=async()=>{try{await ne()}catch(t){console.error("Retry failed:",t)}},we=()=>{clearTimeout(se),se=setTimeout(async()=>{await v.searchUsers({searchValue:M.value,page:0})},300)},Ce=async()=>{await v.searchUsers({filterFields:w.value?[{field:"role.code",value:w.value}]:[],page:0})},Ue=async()=>{const t=C.value==="enabled"?!0:C.value==="disabled"?!1:null;await v.searchUsers({filterFields:t!==null?[{field:"enabled",value:t}]:[],page:0})},Ve=async()=>{M.value="",w.value="",C.value="all",await v.searchUsers({page:0})},Me=async({column:t,direction:e})=>{console.log("Sort:",t,e);const m={user:"lastName",role:"role.name",status:"enabled",lastLogin:"lastLogin"}[t]||t;await v.searchUsers({sortBy:m,direction:e.toUpperCase()})},Se=async t=>{console.log("Page change:",t),await v.searchUsers({page:t-1})},Fe=()=>{},_e=t=>{re(t)},re=t=>{r.value={...t},U.value="view",R.value=!0},ie=t=>{I.value&&(r.value={...t},U.value="edit",R.value=!0)},Re=t=>{I.value&&(r.value={...t},F.value="",E.value=!0)},Te=t=>{if(!I.value)return;r.value={...t};const e=_(t.id);x.value=e.map(l=>l.name==="Engineering"?"engineering":l.name==="Maintenance"?"maintenance":l.name==="Operations"?"operations":l.name.toLowerCase()),A.value=!0},ue=()=>{k.value="",y.value=[],S.value="",j.value=!0},ze=()=>{k.value&&Ae(k.value)&&!y.value.includes(k.value)&&(y.value.push(k.value),k.value="")},Ne=t=>{y.value.splice(t,1)},Ie=async()=>{try{N.value=!0,console.log("Sending invites to:",y.value,"with role:",S.value),await v.inviteUsers({emails:y.value,roleCode:S.value}),j.value=!1,y.value=[],k.value="",S.value="",await H()}catch(t){console.error("Failed to send invites:",t)}finally{N.value=!1}},Pe=async()=>{try{T.value=!0,console.log("Saving user changes:",r.value),await v.updateUserProfile(r.value.id,{firstName:r.value.firstName,lastName:r.value.lastName,email:r.value.email,phone:r.value.phone,jobTitle:r.value.jobTitle}),R.value=!1,await H()}catch(t){console.error("Failed to save user:",t)}finally{T.value=!1}},Le=async()=>{try{z.value=!0,console.log("Changing role for user:",r.value.email,"to:",F.value),await v.updateUserRole(r.value.id,F.value),E.value=!1,F.value="",await H()}catch(t){console.error("Failed to change user role:",t)}finally{z.value=!1}},je=()=>{console.log("Saving team assignments for user:",r.value.email),console.log("Selected teams:",x.value),A.value=!1,x.value=[]},Ee=(t,e)=>`${(t==null?void 0:t.charAt(0))||""}${(e==null?void 0:e.charAt(0))||""}`.toUpperCase(),Ae=t=>/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(t),_=t=>{var l;const e=(l=v.users.content)==null?void 0:l.find(m=>m.id===t);return(e==null?void 0:e.teams)||[]},J=t=>{switch(t==null?void 0:t.code){case"ADMIN":return"error";case"TECHNICIAN":return"primary";case"VIEW_ONLY":return"secondary";default:return"secondary"}},K=t=>(t==null?void 0:t.name)||"Unknown",Be=t=>t?new Date(t).toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"}):"",De=()=>{const t=ae.query.edit;t&&setTimeout(()=>{const l=mockUsers.value.find(m=>m.id===parseInt(t));l&&ie(l),Q.replace({path:"/people"})},500),ae.query.invite==="true"&&setTimeout(()=>{ue(),Q.replace({path:"/people"})},500)};return He(async()=>{await ne(),De()}),(t,e)=>(i(),P(Qe,null,{header:s(()=>[n(We,{title:"People & Teams",description:"Manage users, roles, and team assignments",breadcrumbs:[{text:"People",to:null}]},{actions:s(()=>[n(o(g),{variant:"outline",size:"sm",onClick:e[0]||(e[0]=l=>o(Q).push("/people/teams"))},{default:s(()=>e[22]||(e[22]=[a("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"})],-1),u(" Manage Teams ",-1)])),_:1,__:[22]}),n(o(g),{variant:"outline",size:"sm",onClick:H},{default:s(()=>e[23]||(e[23]=[a("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),u(" Refresh ",-1)])),_:1,__:[23]}),n(o(g),{variant:"primary",size:"sm",onClick:ue,disabled:!pe.value},{default:s(()=>e[24]||(e[24]=[a("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),u(" Invite Users ",-1)])),_:1,__:[24]},8,["disabled"])]),stats:s(()=>[n(o(Ye),{stats:fe.value},null,8,["stats"])]),tabs:s(()=>[n(o(Ke),{modelValue:L.value,"onUpdate:modelValue":e[1]||(e[1]=l=>L.value=l),tabs:be.value,onTabChange:Fe},null,8,["modelValue","tabs"])]),_:1})]),default:s(()=>[a("div",ll,[W.value&&!$.value.length?(i(),p("div",al,e[25]||(e[25]=[a("div",{class:"text-center"},[a("div",{class:"animate-spin rounded-full h-8 w-8 border-b-2 border-primary-600 mx-auto mb-4"}),a("p",{class:"text-gray-600"},"Loading users...")],-1)]))):oe.value&&!$.value.length?(i(),p("div",tl,[a("div",sl,[e[28]||(e[28]=a("svg",{class:"w-6 h-6 text-red-400 mr-3 mt-1",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.728-.833-2.498 0L4.316 16.5c-.77.833.192 2.5 1.732 2.5z"})],-1)),a("div",null,[e[27]||(e[27]=a("h3",{class:"text-lg font-medium text-red-800 mb-2"},"Failed to Load Users",-1)),a("p",ol,d(oe.value),1),n(o(g),{variant:"outline",size:"sm",onClick:he},{default:s(()=>e[26]||(e[26]=[a("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),u(" Retry ",-1)])),_:1,__:[26]})])])])):b("",!0),O(a("div",null,[a("div",nl,[n(o(B),{modelValue:M.value,"onUpdate:modelValue":e[2]||(e[2]=l=>M.value=l),placeholder:"Search users...",onInput:we},{prepend:s(()=>e[29]||(e[29]=[a("svg",{class:"w-4 h-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1)])),_:1},8,["modelValue"]),n(o(q),{modelValue:w.value,"onUpdate:modelValue":[e[3]||(e[3]=l=>w.value=l),Ce],placeholder:"Filter by Role",options:Y.value},null,8,["modelValue","options"]),n(o(q),{modelValue:C.value,"onUpdate:modelValue":[e[4]||(e[4]=l=>C.value=l),Ue],placeholder:"Filter by Status",options:ye},null,8,["modelValue"]),ge.value?(i(),P(o(g),{key:0,variant:"outline",size:"sm",onClick:Ve},{default:s(()=>e[30]||(e[30]=[a("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})],-1),u(" Clear Filters ",-1)])),_:1,__:[30]})):b("",!0)]),n(o(Je),{columns:ke,data:$.value,loading:W.value,pagination:xe.value,"empty-message":"No users found",onSortChange:Me,onPageChange:Se,onRowClick:_e},{"column-user":s(({row:l})=>[a("div",rl,[a("div",il,[a("span",ul,d(Ee(l.firstName,l.lastName)),1)]),a("div",null,[a("h4",dl,d(`${l.firstName} ${l.lastName}`),1),a("p",vl,d(l.email),1)])])]),"column-role":s(({row:l})=>[n(o(V),{variant:J(l.role)},{default:s(()=>[u(d(K(l.role)),1)]),_:2},1032,["variant"])]),"column-status":s(({row:l})=>[n(o(V),{variant:l.enabled?"success":"error"},{default:s(()=>[u(d(l.enabled?"Active":"Inactive"),1)]),_:2},1032,["variant"])]),"column-teams":s(({row:l})=>[_(l.id).length>0?(i(),p("div",ml,[(i(!0),p(Z,null,ee(_(l.id).slice(0,2),m=>(i(),P(o(V),{key:m.id,variant:"info",size:"sm"},{default:s(()=>[u(d(m.name),1)]),_:2},1024))),128)),_(l.id).length>2?(i(),P(o(V),{key:0,variant:"secondary",size:"sm"},{default:s(()=>[u(" +"+d(_(l.id).length-2),1)]),_:2},1024)):b("",!0)])):(i(),p("span",cl,"No teams"))]),"column-lastLogin":s(({row:l})=>[l.lastLogin?(i(),p("div",pl,d(Be(l.lastLogin)),1)):(i(),p("span",gl,"Never"))]),"row-actions":s(({row:l})=>[a("div",fl,[n(o(g),{variant:"ghost",size:"sm",onClick:m=>re(l),title:"View Details"},{default:s(()=>[e[31]||(e[31]=a("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"}),a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"})],-1)),D.value?b("",!0):(i(),p("span",bl,"View"))]),_:2,__:[31]},1032,["onClick"]),n(o(g),{variant:"ghost",size:"sm",onClick:m=>ie(l),title:"Edit User",disabled:!I.value},{default:s(()=>[e[32]||(e[32]=a("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1)),D.value?b("",!0):(i(),p("span",yl,"Edit"))]),_:2,__:[32]},1032,["onClick","disabled"]),n(o(g),{variant:"ghost",size:"sm",onClick:m=>Re(l),title:"Change Role",disabled:!I.value},{default:s(()=>[e[33]||(e[33]=a("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 7a2 2 0 012 2m4 0a6 6 0 01-7.743 5.743L11 17H9v-2L2.257 8.257a6 6 0 018.486-8.486L18 7z"})],-1)),D.value?b("",!0):(i(),p("span",kl,"Role"))]),_:2,__:[33]},1032,["onClick","disabled"]),n(o(g),{variant:"ghost",size:"sm",onClick:m=>Te(l),title:"Manage Teams",disabled:!I.value},{default:s(()=>[e[34]||(e[34]=a("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"})],-1)),D.value?b("",!0):(i(),p("span",xl,"Teams"))]),_:2,__:[34]},1032,["onClick","disabled"])])]),_:1},8,["data","loading","pagination"])],512),[[Ge,!W.value||$.value.length]])]),n(o(G),{modelValue:R.value,"onUpdate:modelValue":e[9]||(e[9]=l=>R.value=l),title:U.value==="view"?"User Details":"Edit User",size:"lg"},{footer:s(()=>[a("div",Ul,[n(o(g),{variant:"outline",onClick:e[8]||(e[8]=l=>R.value=!1),disabled:T.value},{default:s(()=>[u(d(U.value==="view"?"Close":"Cancel"),1)]),_:1},8,["disabled"]),U.value==="edit"?(i(),P(o(g),{key:0,variant:"primary",onClick:Pe,loading:T.value,disabled:T.value},{default:s(()=>[u(d(T.value?"Saving...":"Save Changes"),1)]),_:1},8,["loading","disabled"])):b("",!0)])]),default:s(()=>[r.value?(i(),p("div",hl,[a("div",wl,[a("div",null,[e[35]||(e[35]=a("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"First Name",-1)),n(o(B),{modelValue:r.value.firstName,"onUpdate:modelValue":e[5]||(e[5]=l=>r.value.firstName=l),readonly:U.value==="view"},null,8,["modelValue","readonly"])]),a("div",null,[e[36]||(e[36]=a("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Last Name",-1)),n(o(B),{modelValue:r.value.lastName,"onUpdate:modelValue":e[6]||(e[6]=l=>r.value.lastName=l),readonly:U.value==="view"},null,8,["modelValue","readonly"])]),a("div",Cl,[e[37]||(e[37]=a("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Email",-1)),n(o(B),{modelValue:r.value.email,"onUpdate:modelValue":e[7]||(e[7]=l=>r.value.email=l),readonly:U.value==="view"},null,8,["modelValue","readonly"])]),a("div",null,[e[38]||(e[38]=a("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Role",-1)),n(o(V),{variant:J(r.value.role)},{default:s(()=>[u(d(K(r.value.role)),1)]),_:1},8,["variant"])]),a("div",null,[e[39]||(e[39]=a("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Status",-1)),n(o(V),{variant:r.value.enabled?"success":"error"},{default:s(()=>[u(d(r.value.enabled?"Active":"Inactive"),1)]),_:1},8,["variant"])])])])):b("",!0)]),_:1},8,["modelValue","title"]),n(o(G),{modelValue:E.value,"onUpdate:modelValue":e[12]||(e[12]=l=>E.value=l),title:"Change User Role",size:"md"},{footer:s(()=>[a("div",Sl,[n(o(g),{variant:"outline",onClick:e[11]||(e[11]=l=>E.value=!1),disabled:z.value},{default:s(()=>e[43]||(e[43]=[u("Cancel",-1)])),_:1,__:[43]},8,["disabled"]),n(o(g),{variant:"primary",onClick:Le,disabled:!F.value||z.value,loading:z.value},{default:s(()=>[u(d(z.value?"Changing...":"Change Role"),1)]),_:1},8,["disabled","loading"])])]),default:s(()=>[r.value?(i(),p("div",Vl,[a("p",Ml,[e[40]||(e[40]=u(" Change role for ",-1)),a("strong",null,d(r.value.firstName)+" "+d(r.value.lastName),1)]),a("div",null,[e[41]||(e[41]=a("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Current Role",-1)),n(o(V),{variant:J(r.value.role)},{default:s(()=>[u(d(K(r.value.role)),1)]),_:1},8,["variant"])]),a("div",null,[e[42]||(e[42]=a("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"New Role",-1)),n(o(q),{modelValue:F.value,"onUpdate:modelValue":e[10]||(e[10]=l=>F.value=l),options:Y.value.filter(l=>{var m;return l.value!==((m=r.value.role)==null?void 0:m.code)}),placeholder:"Select new role"},null,8,["modelValue","options"])])])):b("",!0)]),_:1},8,["modelValue"]),n(o(G),{modelValue:A.value,"onUpdate:modelValue":e[17]||(e[17]=l=>A.value=l),title:"Manage User Teams",size:"md"},{footer:s(()=>[a("div",Ll,[n(o(g),{variant:"outline",onClick:e[16]||(e[16]=l=>A.value=!1)},{default:s(()=>e[50]||(e[50]=[u("Cancel",-1)])),_:1,__:[50]}),n(o(g),{variant:"primary",onClick:je},{default:s(()=>e[51]||(e[51]=[u(" Save Teams ",-1)])),_:1,__:[51]})])]),default:s(()=>[r.value?(i(),p("div",Fl,[a("p",_l,[e[44]||(e[44]=u(" Manage team assignments for ",-1)),a("strong",null,d(r.value.firstName)+" "+d(r.value.lastName),1)]),a("div",null,[e[45]||(e[45]=a("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Current Teams",-1)),_(r.value.id).length>0?(i(),p("div",Rl,[(i(!0),p(Z,null,ee(_(r.value.id),l=>(i(),P(o(V),{key:l.id,variant:"info"},{default:s(()=>[u(d(l.name),1)]),_:2},1024))),128))])):(i(),p("p",Tl,"No teams assigned"))]),a("div",null,[e[49]||(e[49]=a("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Available Teams",-1)),a("div",zl,[a("div",Nl,[O(a("input",{type:"checkbox",id:"engineering",class:"w-5 h-5 rounded border-3 border-gray-800 text-primary-600 focus:ring-primary-500 focus:border-primary-600 bg-white",style:{"border-width":"3px !important","border-color":"#374151 !important"},"onUpdate:modelValue":e[13]||(e[13]=l=>x.value=l),value:"engineering"},null,512),[[le,x.value]]),e[46]||(e[46]=a("label",{for:"engineering",class:"text-sm font-medium text-gray-700 cursor-pointer"},"Engineering",-1))]),a("div",Il,[O(a("input",{type:"checkbox",id:"maintenance",class:"w-5 h-5 rounded border-3 border-gray-800 text-primary-600 focus:ring-primary-500 focus:border-primary-600 bg-white",style:{"border-width":"3px !important","border-color":"#374151 !important"},"onUpdate:modelValue":e[14]||(e[14]=l=>x.value=l),value:"maintenance"},null,512),[[le,x.value]]),e[47]||(e[47]=a("label",{for:"maintenance",class:"text-sm font-medium text-gray-700 cursor-pointer"},"Maintenance",-1))]),a("div",Pl,[O(a("input",{type:"checkbox",id:"operations",class:"w-5 h-5 rounded border-3 border-gray-800 text-primary-600 focus:ring-primary-500 focus:border-primary-600 bg-white",style:{"border-width":"3px !important","border-color":"#374151 !important"},"onUpdate:modelValue":e[15]||(e[15]=l=>x.value=l),value:"operations"},null,512),[[le,x.value]]),e[48]||(e[48]=a("label",{for:"operations",class:"text-sm font-medium text-gray-700 cursor-pointer"},"Operations",-1))])])])])):b("",!0)]),_:1},8,["modelValue"]),n(o(G),{modelValue:j.value,"onUpdate:modelValue":e[21]||(e[21]=l=>j.value=l),title:"Invite Users",size:"lg"},{footer:s(()=>[a("div",Bl,[n(o(g),{variant:"outline",onClick:e[20]||(e[20]=l=>j.value=!1),disabled:N.value},{default:s(()=>e[57]||(e[57]=[u("Cancel",-1)])),_:1,__:[57]},8,["disabled"]),n(o(g),{variant:"primary",onClick:Ie,disabled:y.value.length===0||!S.value||N.value,loading:N.value},{default:s(()=>[u(d(N.value?"Sending...":`Send ${y.value.length>1?"Invitations":"Invitation"}`),1)]),_:1},8,["disabled","loading"])])]),default:s(()=>[a("div",jl,[a("div",null,[e[54]||(e[54]=a("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Email Addresses",-1)),n(o(B),{modelValue:k.value,"onUpdate:modelValue":e[18]||(e[18]=l=>k.value=l),type:"email",placeholder:"Enter email address",class:"mb-2"},null,8,["modelValue"]),y.value.length>0?(i(),p("div",El,[(i(!0),p(Z,null,ee(y.value,(l,m)=>(i(),p("div",{key:m,class:"flex items-center justify-between bg-gray-50 px-3 py-2 rounded"},[a("span",Al,d(l),1),n(o(g),{variant:"ghost",size:"sm",onClick:X=>Ne(m)},{default:s(()=>e[52]||(e[52]=[u("×",-1)])),_:2,__:[52]},1032,["onClick"])]))),128))])):b("",!0),n(o(g),{variant:"outline",size:"sm",onClick:ze,class:"mt-2"},{default:s(()=>e[53]||(e[53]=[u(" Add Email ",-1)])),_:1,__:[53]})]),a("div",null,[e[55]||(e[55]=a("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Assign Role",-1)),n(o(q),{modelValue:S.value,"onUpdate:modelValue":e[19]||(e[19]=l=>S.value=l),options:Y.value,placeholder:"Select role for invited users"},null,8,["modelValue","options"])]),e[56]||(e[56]=a("div",{class:"bg-blue-50 p-3 rounded"},[a("p",{class:"text-sm text-blue-800"}," Users will receive an email invitation to join the system ")],-1))])]),_:1},8,["modelValue"])]),_:1}))}};export{ea as default}; +import{q as $e,r as c,c as f,o as He,i as P,w as s,s as Oe,v as qe,g as i,b as a,d as n,a as p,j as b,ae as O,t as d,e as o,F as g,k as u,af as Z,aR as ee,ai as Ge,ba as le}from"./index-QAlcqU00.js";import{F as We,a as Qe}from"./FPPageHeader-CFIwZZgQ.js";import{F as B}from"./FPInput-D5RURom0.js";import{F as q}from"./FPSelect-j7n_x8eB.js";import{F as Ye}from"./FPStats-DOY0PQQF.js";import{F as Je}from"./FPTable-CWvngIYd.js";import{F as G}from"./FPModal-DMoPysvU.js";import{F as V}from"./FPBadge-DvOitM1C.js";import{F as Ke}from"./FPTabs-qq-Tmb7J.js";import{u as Xe}from"./users-DgNL-A0F.js";import{u as Ze,a as el}from"./roles-BzkoUpaM.js";import"./FPCard-AB6NRXg5.js";const ll={class:"p-6"},al={key:0,class:"flex justify-center py-12"},tl={key:1,class:"bg-red-50 border border-red-200 rounded-lg p-6 mb-6"},sl={class:"flex items-start"},ol={class:"text-red-700 mb-4"},nl={class:"mb-6 grid grid-cols-1 md:grid-cols-4 gap-4"},rl={class:"flex items-center"},il={class:"w-10 h-10 rounded-full bg-primary-100 flex items-center justify-center mr-3"},ul={class:"text-sm font-medium text-primary-600"},dl={class:"font-medium text-gray-900"},vl={class:"text-sm text-gray-600"},ml={key:0,class:"flex flex-wrap gap-1"},cl={key:1,class:"text-sm text-gray-400"},pl={key:0,class:"text-sm text-gray-900"},gl={key:1,class:"text-sm text-gray-400"},fl={class:"flex items-center space-x-2"},bl={key:0},yl={key:0},kl={key:0},xl={key:0},hl={key:0,class:"space-y-6"},wl={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},Cl={class:"md:col-span-2"},Ul={class:"flex justify-end space-x-2"},Vl={key:0,class:"space-y-4"},Ml={class:"text-sm text-gray-600"},Sl={class:"flex justify-end space-x-2"},Fl={key:0,class:"space-y-4"},_l={class:"text-sm text-gray-600"},Rl={key:0,class:"flex flex-wrap gap-2"},Tl={key:1,class:"text-sm text-gray-400"},zl={class:"space-y-3"},Nl={class:"flex items-center space-x-3"},Il={class:"flex items-center space-x-3"},Pl={class:"flex items-center space-x-3"},Ll={class:"flex justify-end space-x-2"},jl={class:"space-y-6"},El={key:0,class:"space-y-1"},Al={class:"text-sm"},Bl={class:"flex justify-end space-x-2"},ea={__name:"PeopleListView",setup(Dl){const ae=Oe(),W=qe(),te=$e(),v=Xe(),ce=Ze(),h=el(),L=c("all"),M=c(""),w=c(""),C=c("all"),j=c(!1),R=c(!1),E=c(!1),A=c(!1),U=c("view"),r=c(null),D=c(window.innerWidth<768),k=c(""),y=c([]),S=c(""),F=c(""),x=c([]),T=c(!1),z=c(!1);c(!1);const N=c(!1);let se=null;const Q=f(()=>v.loading),oe=f(()=>v.error);f(()=>h.userPermissions.canViewUsers),f(()=>h.userPermissions.canCreateUsers);const I=f(()=>h.userPermissions.canEditUsers);f(()=>h.userPermissions.canDeleteUsers);const pe=f(()=>h.userPermissions.canCreateUsers),ge=f(()=>M.value||w.value||C.value!=="all"),fe=f(()=>{const t=v.users.content||[];return[{name:"Total Users",value:v.users.totalElements||t.length,variant:"primary"},{name:"Active",value:t.filter(e=>e.enabled).length,variant:"success"},{name:"Inactive",value:t.filter(e=>!e.enabled).length,variant:"error"},{name:"Pending",value:t.filter(e=>e.status==="PENDING").length,variant:"warning"}]}),be=f(()=>{const t=v.users.content||[];return[{key:"all",label:"All Users",count:t.length},{key:"active",label:"Active",count:t.filter(e=>e.enabled).length},{key:"inactive",label:"Inactive",count:t.filter(e=>!e.enabled).length},{key:"pending",label:"Pending",count:t.filter(e=>e.status==="PENDING").length}]}),Y=f(()=>{const t=h.roles||[];return[{value:"",label:"All Roles"},...t.map(e=>({value:e.code,label:e.name}))]}),ye=[{value:"all",label:"All Status"},{value:"enabled",label:"Active"},{value:"disabled",label:"Inactive"}],$=f(()=>{let t=v.users.content||[];if(M.value){const e=M.value.toLowerCase();t=t.filter(l=>{var m,X,de,ve,me;return((m=l.firstName)==null?void 0:m.toLowerCase().includes(e))||((X=l.lastName)==null?void 0:X.toLowerCase().includes(e))||((de=l.email)==null?void 0:de.toLowerCase().includes(e))||((ve=l.phone)==null?void 0:ve.toLowerCase().includes(e))||((me=l.jobTitle)==null?void 0:me.toLowerCase().includes(e))})}return w.value&&(t=t.filter(e=>{var l;return((l=e.role)==null?void 0:l.code)===w.value})),C.value==="enabled"?t=t.filter(e=>e.enabled):C.value==="disabled"&&(t=t.filter(e=>!e.enabled)),L.value==="active"?t=t.filter(e=>e.enabled):L.value==="inactive"?t=t.filter(e=>!e.enabled):L.value==="pending"&&(t=t.filter(e=>e.status==="PENDING")),t}),ke=[{key:"user",label:"User",sortable:!0},{key:"role",label:"Role",sortable:!0},{key:"status",label:"Status",sortable:!0},{key:"teams",label:"Teams",sortable:!1},{key:"lastLogin",label:"Last Login",sortable:!0}],xe=f(()=>({currentPage:v.users.currentPage+1,total:v.users.totalElements,pageSize:v.users.pageSize||10})),ne=async()=>{try{console.log("Initializing user management data..."),te.user&&h.setCurrentUser(te.user),await Promise.all([v.searchUsers(),h.loadRoles(),ce.loadTeams()]),console.log("User management data loaded successfully")}catch(t){console.error("Failed to initialize data:",t)}},H=async()=>{console.log("Refreshing user data..."),await v.searchUsers()},he=async()=>{try{await ne()}catch(t){console.error("Retry failed:",t)}},we=()=>{clearTimeout(se),se=setTimeout(async()=>{await v.searchUsers({searchValue:M.value,page:0})},300)},Ce=async()=>{await v.searchUsers({filterFields:w.value?[{field:"role.code",value:w.value}]:[],page:0})},Ue=async()=>{const t=C.value==="enabled"?!0:C.value==="disabled"?!1:null;await v.searchUsers({filterFields:t!==null?[{field:"enabled",value:t}]:[],page:0})},Ve=async()=>{M.value="",w.value="",C.value="all",await v.searchUsers({page:0})},Me=async({column:t,direction:e})=>{console.log("Sort:",t,e);const m={user:"lastName",role:"role.name",status:"enabled",lastLogin:"lastLogin"}[t]||t;await v.searchUsers({sortBy:m,direction:e.toUpperCase()})},Se=async t=>{console.log("Page change:",t),await v.searchUsers({page:t-1})},Fe=()=>{},_e=t=>{re(t)},re=t=>{r.value={...t},U.value="view",R.value=!0},ie=t=>{I.value&&(r.value={...t},U.value="edit",R.value=!0)},Re=t=>{I.value&&(r.value={...t},F.value="",E.value=!0)},Te=t=>{if(!I.value)return;r.value={...t};const e=_(t.id);x.value=e.map(l=>l.name==="Engineering"?"engineering":l.name==="Maintenance"?"maintenance":l.name==="Operations"?"operations":l.name.toLowerCase()),A.value=!0},ue=()=>{k.value="",y.value=[],S.value="",j.value=!0},ze=()=>{k.value&&Ae(k.value)&&!y.value.includes(k.value)&&(y.value.push(k.value),k.value="")},Ne=t=>{y.value.splice(t,1)},Ie=async()=>{try{N.value=!0,console.log("Sending invites to:",y.value,"with role:",S.value),await v.inviteUsers({emails:y.value,roleCode:S.value}),j.value=!1,y.value=[],k.value="",S.value="",await H()}catch(t){console.error("Failed to send invites:",t)}finally{N.value=!1}},Pe=async()=>{try{T.value=!0,console.log("Saving user changes:",r.value),await v.updateUserProfile(r.value.id,{firstName:r.value.firstName,lastName:r.value.lastName,email:r.value.email,phone:r.value.phone,jobTitle:r.value.jobTitle}),R.value=!1,await H()}catch(t){console.error("Failed to save user:",t)}finally{T.value=!1}},Le=async()=>{try{z.value=!0,console.log("Changing role for user:",r.value.email,"to:",F.value),await v.updateUserRole(r.value.id,F.value),E.value=!1,F.value="",await H()}catch(t){console.error("Failed to change user role:",t)}finally{z.value=!1}},je=()=>{console.log("Saving team assignments for user:",r.value.email),console.log("Selected teams:",x.value),A.value=!1,x.value=[]},Ee=(t,e)=>`${(t==null?void 0:t.charAt(0))||""}${(e==null?void 0:e.charAt(0))||""}`.toUpperCase(),Ae=t=>/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(t),_=t=>{var l;const e=(l=v.users.content)==null?void 0:l.find(m=>m.id===t);return(e==null?void 0:e.teams)||[]},J=t=>{switch(t==null?void 0:t.code){case"ADMIN":return"error";case"TECHNICIAN":return"primary";case"VIEW_ONLY":return"secondary";default:return"secondary"}},K=t=>(t==null?void 0:t.name)||"Unknown",Be=t=>t?new Date(t).toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"}):"",De=()=>{const t=ae.query.edit;t&&setTimeout(()=>{const l=mockUsers.value.find(m=>m.id===parseInt(t));l&&ie(l),W.replace({path:"/people"})},500),ae.query.invite==="true"&&setTimeout(()=>{ue(),W.replace({path:"/people"})},500)};return He(async()=>{await ne(),De()}),(t,e)=>(i(),P(We,null,{header:s(()=>[n(Qe,{title:"People & Teams",description:"Manage users, roles, and team assignments",breadcrumbs:[{text:"People",to:null}]},{actions:s(()=>[n(o(g),{variant:"outline",size:"sm",onClick:e[0]||(e[0]=l=>o(W).push("/people/teams"))},{default:s(()=>e[22]||(e[22]=[a("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"})],-1),u(" Manage Teams ",-1)])),_:1,__:[22]}),n(o(g),{variant:"outline",size:"sm",onClick:H},{default:s(()=>e[23]||(e[23]=[a("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),u(" Refresh ",-1)])),_:1,__:[23]}),n(o(g),{variant:"primary",size:"sm",onClick:ue,disabled:!pe.value},{default:s(()=>e[24]||(e[24]=[a("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),u(" Invite Users ",-1)])),_:1,__:[24]},8,["disabled"])]),stats:s(()=>[n(o(Ye),{stats:fe.value},null,8,["stats"])]),tabs:s(()=>[n(o(Ke),{modelValue:L.value,"onUpdate:modelValue":e[1]||(e[1]=l=>L.value=l),tabs:be.value,onTabChange:Fe},null,8,["modelValue","tabs"])]),_:1})]),default:s(()=>[a("div",ll,[Q.value&&!$.value.length?(i(),p("div",al,e[25]||(e[25]=[a("div",{class:"text-center"},[a("div",{class:"animate-spin rounded-full h-8 w-8 border-b-2 border-primary-600 mx-auto mb-4"}),a("p",{class:"text-gray-600"},"Loading users...")],-1)]))):oe.value&&!$.value.length?(i(),p("div",tl,[a("div",sl,[e[28]||(e[28]=a("svg",{class:"w-6 h-6 text-red-400 mr-3 mt-1",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.728-.833-2.498 0L4.316 16.5c-.77.833.192 2.5 1.732 2.5z"})],-1)),a("div",null,[e[27]||(e[27]=a("h3",{class:"text-lg font-medium text-red-800 mb-2"},"Failed to Load Users",-1)),a("p",ol,d(oe.value),1),n(o(g),{variant:"outline",size:"sm",onClick:he},{default:s(()=>e[26]||(e[26]=[a("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),u(" Retry ",-1)])),_:1,__:[26]})])])])):b("",!0),O(a("div",null,[a("div",nl,[n(o(B),{modelValue:M.value,"onUpdate:modelValue":e[2]||(e[2]=l=>M.value=l),placeholder:"Search users...",onInput:we},{prepend:s(()=>e[29]||(e[29]=[a("svg",{class:"w-4 h-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1)])),_:1},8,["modelValue"]),n(o(q),{modelValue:w.value,"onUpdate:modelValue":[e[3]||(e[3]=l=>w.value=l),Ce],placeholder:"Filter by Role",options:Y.value},null,8,["modelValue","options"]),n(o(q),{modelValue:C.value,"onUpdate:modelValue":[e[4]||(e[4]=l=>C.value=l),Ue],placeholder:"Filter by Status",options:ye},null,8,["modelValue"]),ge.value?(i(),P(o(g),{key:0,variant:"outline",size:"sm",onClick:Ve},{default:s(()=>e[30]||(e[30]=[a("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})],-1),u(" Clear Filters ",-1)])),_:1,__:[30]})):b("",!0)]),n(o(Je),{columns:ke,data:$.value,loading:Q.value,pagination:xe.value,"empty-message":"No users found",onSortChange:Me,onPageChange:Se,onRowClick:_e},{"column-user":s(({row:l})=>[a("div",rl,[a("div",il,[a("span",ul,d(Ee(l.firstName,l.lastName)),1)]),a("div",null,[a("h4",dl,d(`${l.firstName} ${l.lastName}`),1),a("p",vl,d(l.email),1)])])]),"column-role":s(({row:l})=>[n(o(V),{variant:J(l.role)},{default:s(()=>[u(d(K(l.role)),1)]),_:2},1032,["variant"])]),"column-status":s(({row:l})=>[n(o(V),{variant:l.enabled?"success":"error"},{default:s(()=>[u(d(l.enabled?"Active":"Inactive"),1)]),_:2},1032,["variant"])]),"column-teams":s(({row:l})=>[_(l.id).length>0?(i(),p("div",ml,[(i(!0),p(Z,null,ee(_(l.id).slice(0,2),m=>(i(),P(o(V),{key:m.id,variant:"info",size:"sm"},{default:s(()=>[u(d(m.name),1)]),_:2},1024))),128)),_(l.id).length>2?(i(),P(o(V),{key:0,variant:"secondary",size:"sm"},{default:s(()=>[u(" +"+d(_(l.id).length-2),1)]),_:2},1024)):b("",!0)])):(i(),p("span",cl,"No teams"))]),"column-lastLogin":s(({row:l})=>[l.lastLogin?(i(),p("div",pl,d(Be(l.lastLogin)),1)):(i(),p("span",gl,"Never"))]),"row-actions":s(({row:l})=>[a("div",fl,[n(o(g),{variant:"ghost",size:"sm",onClick:m=>re(l),title:"View Details"},{default:s(()=>[e[31]||(e[31]=a("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"}),a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"})],-1)),D.value?b("",!0):(i(),p("span",bl,"View"))]),_:2,__:[31]},1032,["onClick"]),n(o(g),{variant:"ghost",size:"sm",onClick:m=>ie(l),title:"Edit User",disabled:!I.value},{default:s(()=>[e[32]||(e[32]=a("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1)),D.value?b("",!0):(i(),p("span",yl,"Edit"))]),_:2,__:[32]},1032,["onClick","disabled"]),n(o(g),{variant:"ghost",size:"sm",onClick:m=>Re(l),title:"Change Role",disabled:!I.value},{default:s(()=>[e[33]||(e[33]=a("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 7a2 2 0 012 2m4 0a6 6 0 01-7.743 5.743L11 17H9v-2L2.257 8.257a6 6 0 018.486-8.486L18 7z"})],-1)),D.value?b("",!0):(i(),p("span",kl,"Role"))]),_:2,__:[33]},1032,["onClick","disabled"]),n(o(g),{variant:"ghost",size:"sm",onClick:m=>Te(l),title:"Manage Teams",disabled:!I.value},{default:s(()=>[e[34]||(e[34]=a("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"})],-1)),D.value?b("",!0):(i(),p("span",xl,"Teams"))]),_:2,__:[34]},1032,["onClick","disabled"])])]),_:1},8,["data","loading","pagination"])],512),[[Ge,!Q.value||$.value.length]])]),n(o(G),{modelValue:R.value,"onUpdate:modelValue":e[9]||(e[9]=l=>R.value=l),title:U.value==="view"?"User Details":"Edit User",size:"lg"},{footer:s(()=>[a("div",Ul,[n(o(g),{variant:"outline",onClick:e[8]||(e[8]=l=>R.value=!1),disabled:T.value},{default:s(()=>[u(d(U.value==="view"?"Close":"Cancel"),1)]),_:1},8,["disabled"]),U.value==="edit"?(i(),P(o(g),{key:0,variant:"primary",onClick:Pe,loading:T.value,disabled:T.value},{default:s(()=>[u(d(T.value?"Saving...":"Save Changes"),1)]),_:1},8,["loading","disabled"])):b("",!0)])]),default:s(()=>[r.value?(i(),p("div",hl,[a("div",wl,[a("div",null,[e[35]||(e[35]=a("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"First Name",-1)),n(o(B),{modelValue:r.value.firstName,"onUpdate:modelValue":e[5]||(e[5]=l=>r.value.firstName=l),readonly:U.value==="view"},null,8,["modelValue","readonly"])]),a("div",null,[e[36]||(e[36]=a("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Last Name",-1)),n(o(B),{modelValue:r.value.lastName,"onUpdate:modelValue":e[6]||(e[6]=l=>r.value.lastName=l),readonly:U.value==="view"},null,8,["modelValue","readonly"])]),a("div",Cl,[e[37]||(e[37]=a("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Email",-1)),n(o(B),{modelValue:r.value.email,"onUpdate:modelValue":e[7]||(e[7]=l=>r.value.email=l),readonly:U.value==="view"},null,8,["modelValue","readonly"])]),a("div",null,[e[38]||(e[38]=a("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Role",-1)),n(o(V),{variant:J(r.value.role)},{default:s(()=>[u(d(K(r.value.role)),1)]),_:1},8,["variant"])]),a("div",null,[e[39]||(e[39]=a("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Status",-1)),n(o(V),{variant:r.value.enabled?"success":"error"},{default:s(()=>[u(d(r.value.enabled?"Active":"Inactive"),1)]),_:1},8,["variant"])])])])):b("",!0)]),_:1},8,["modelValue","title"]),n(o(G),{modelValue:E.value,"onUpdate:modelValue":e[12]||(e[12]=l=>E.value=l),title:"Change User Role",size:"md"},{footer:s(()=>[a("div",Sl,[n(o(g),{variant:"outline",onClick:e[11]||(e[11]=l=>E.value=!1),disabled:z.value},{default:s(()=>e[43]||(e[43]=[u("Cancel",-1)])),_:1,__:[43]},8,["disabled"]),n(o(g),{variant:"primary",onClick:Le,disabled:!F.value||z.value,loading:z.value},{default:s(()=>[u(d(z.value?"Changing...":"Change Role"),1)]),_:1},8,["disabled","loading"])])]),default:s(()=>[r.value?(i(),p("div",Vl,[a("p",Ml,[e[40]||(e[40]=u(" Change role for ",-1)),a("strong",null,d(r.value.firstName)+" "+d(r.value.lastName),1)]),a("div",null,[e[41]||(e[41]=a("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Current Role",-1)),n(o(V),{variant:J(r.value.role)},{default:s(()=>[u(d(K(r.value.role)),1)]),_:1},8,["variant"])]),a("div",null,[e[42]||(e[42]=a("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"New Role",-1)),n(o(q),{modelValue:F.value,"onUpdate:modelValue":e[10]||(e[10]=l=>F.value=l),options:Y.value.filter(l=>{var m;return l.value!==((m=r.value.role)==null?void 0:m.code)}),placeholder:"Select new role"},null,8,["modelValue","options"])])])):b("",!0)]),_:1},8,["modelValue"]),n(o(G),{modelValue:A.value,"onUpdate:modelValue":e[17]||(e[17]=l=>A.value=l),title:"Manage User Teams",size:"md"},{footer:s(()=>[a("div",Ll,[n(o(g),{variant:"outline",onClick:e[16]||(e[16]=l=>A.value=!1)},{default:s(()=>e[50]||(e[50]=[u("Cancel",-1)])),_:1,__:[50]}),n(o(g),{variant:"primary",onClick:je},{default:s(()=>e[51]||(e[51]=[u(" Save Teams ",-1)])),_:1,__:[51]})])]),default:s(()=>[r.value?(i(),p("div",Fl,[a("p",_l,[e[44]||(e[44]=u(" Manage team assignments for ",-1)),a("strong",null,d(r.value.firstName)+" "+d(r.value.lastName),1)]),a("div",null,[e[45]||(e[45]=a("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Current Teams",-1)),_(r.value.id).length>0?(i(),p("div",Rl,[(i(!0),p(Z,null,ee(_(r.value.id),l=>(i(),P(o(V),{key:l.id,variant:"info"},{default:s(()=>[u(d(l.name),1)]),_:2},1024))),128))])):(i(),p("p",Tl,"No teams assigned"))]),a("div",null,[e[49]||(e[49]=a("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Available Teams",-1)),a("div",zl,[a("div",Nl,[O(a("input",{type:"checkbox",id:"engineering",class:"w-5 h-5 rounded border-3 border-gray-800 text-primary-600 focus:ring-primary-500 focus:border-primary-600 bg-white",style:{"border-width":"3px !important","border-color":"#374151 !important"},"onUpdate:modelValue":e[13]||(e[13]=l=>x.value=l),value:"engineering"},null,512),[[le,x.value]]),e[46]||(e[46]=a("label",{for:"engineering",class:"text-sm font-medium text-gray-700 cursor-pointer"},"Engineering",-1))]),a("div",Il,[O(a("input",{type:"checkbox",id:"maintenance",class:"w-5 h-5 rounded border-3 border-gray-800 text-primary-600 focus:ring-primary-500 focus:border-primary-600 bg-white",style:{"border-width":"3px !important","border-color":"#374151 !important"},"onUpdate:modelValue":e[14]||(e[14]=l=>x.value=l),value:"maintenance"},null,512),[[le,x.value]]),e[47]||(e[47]=a("label",{for:"maintenance",class:"text-sm font-medium text-gray-700 cursor-pointer"},"Maintenance",-1))]),a("div",Pl,[O(a("input",{type:"checkbox",id:"operations",class:"w-5 h-5 rounded border-3 border-gray-800 text-primary-600 focus:ring-primary-500 focus:border-primary-600 bg-white",style:{"border-width":"3px !important","border-color":"#374151 !important"},"onUpdate:modelValue":e[15]||(e[15]=l=>x.value=l),value:"operations"},null,512),[[le,x.value]]),e[48]||(e[48]=a("label",{for:"operations",class:"text-sm font-medium text-gray-700 cursor-pointer"},"Operations",-1))])])])])):b("",!0)]),_:1},8,["modelValue"]),n(o(G),{modelValue:j.value,"onUpdate:modelValue":e[21]||(e[21]=l=>j.value=l),title:"Invite Users",size:"lg"},{footer:s(()=>[a("div",Bl,[n(o(g),{variant:"outline",onClick:e[20]||(e[20]=l=>j.value=!1),disabled:N.value},{default:s(()=>e[57]||(e[57]=[u("Cancel",-1)])),_:1,__:[57]},8,["disabled"]),n(o(g),{variant:"primary",onClick:Ie,disabled:y.value.length===0||!S.value||N.value,loading:N.value},{default:s(()=>[u(d(N.value?"Sending...":`Send ${y.value.length>1?"Invitations":"Invitation"}`),1)]),_:1},8,["disabled","loading"])])]),default:s(()=>[a("div",jl,[a("div",null,[e[54]||(e[54]=a("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Email Addresses",-1)),n(o(B),{modelValue:k.value,"onUpdate:modelValue":e[18]||(e[18]=l=>k.value=l),type:"email",placeholder:"Enter email address",class:"mb-2"},null,8,["modelValue"]),y.value.length>0?(i(),p("div",El,[(i(!0),p(Z,null,ee(y.value,(l,m)=>(i(),p("div",{key:m,class:"flex items-center justify-between bg-gray-50 px-3 py-2 rounded"},[a("span",Al,d(l),1),n(o(g),{variant:"ghost",size:"sm",onClick:X=>Ne(m)},{default:s(()=>e[52]||(e[52]=[u("×",-1)])),_:2,__:[52]},1032,["onClick"])]))),128))])):b("",!0),n(o(g),{variant:"outline",size:"sm",onClick:ze,class:"mt-2"},{default:s(()=>e[53]||(e[53]=[u(" Add Email ",-1)])),_:1,__:[53]})]),a("div",null,[e[55]||(e[55]=a("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Assign Role",-1)),n(o(q),{modelValue:S.value,"onUpdate:modelValue":e[19]||(e[19]=l=>S.value=l),options:Y.value,placeholder:"Select role for invited users"},null,8,["modelValue","options"])]),e[56]||(e[56]=a("div",{class:"bg-blue-50 p-3 rounded"},[a("p",{class:"text-sm text-blue-800"}," Users will receive an email invitation to join the system ")],-1))])]),_:1},8,["modelValue"])]),_:1}))}};export{ea as default}; diff --git a/frontend/dist/assets/PeopleView-CYrsa8L-.js b/frontend/dist/assets/PeopleView-ZO1Y3BMt.js similarity index 75% rename from frontend/dist/assets/PeopleView-CYrsa8L-.js rename to frontend/dist/assets/PeopleView-ZO1Y3BMt.js index 61cd15b0..16be65c6 100644 --- a/frontend/dist/assets/PeopleView-CYrsa8L-.js +++ b/frontend/dist/assets/PeopleView-ZO1Y3BMt.js @@ -1 +1 @@ -import{_ as o,a as t,d as s,f as _,g as c}from"./index-BUdRbiwj.js";const a={class:"people-view"},r={__name:"PeopleView",setup(n){return(p,i)=>{const e=_("router-view");return c(),t("div",a,[s(e)])}}},d=o(r,[["__scopeId","data-v-3c12d62b"]]);export{d as default}; +import{_ as o,a as t,d as s,f as _,g as c}from"./index-QAlcqU00.js";const a={class:"people-view"},r={__name:"PeopleView",setup(n){return(p,i)=>{const e=_("router-view");return c(),t("div",a,[s(e)])}}},d=o(r,[["__scopeId","data-v-3c12d62b"]]);export{d as default}; diff --git a/frontend/dist/assets/PreventiveMaintenanceDetailView-C9-E0bMm.js b/frontend/dist/assets/PreventiveMaintenanceDetailView-C_K8Kyaz.js similarity index 88% rename from frontend/dist/assets/PreventiveMaintenanceDetailView-C9-E0bMm.js rename to frontend/dist/assets/PreventiveMaintenanceDetailView-C_K8Kyaz.js index 37b5524a..07f23754 100644 --- a/frontend/dist/assets/PreventiveMaintenanceDetailView-C9-E0bMm.js +++ b/frontend/dist/assets/PreventiveMaintenanceDetailView-C_K8Kyaz.js @@ -1 +1 @@ -import{r as _,c as se,s as De,o as ke,m as _e,i as ae,w as u,l as be,v as Ce,g as y,a as x,j as M,d as c,b as e,e as o,k as g,t as l,F as D,af as le,aQ as ie}from"./index-BUdRbiwj.js";import{u as Me,a as Se}from"./usePreventiveMaintenanceDisplay-Bhncwa9c.js";import{u as Ve,a as Ee}from"./usePreventiveMaintenanceOperations-LTA5pnar.js";import{F as Pe,a as Ie}from"./FPPageHeader-CTG2L28r.js";import{F as J}from"./FPInput-CzR_dWoe.js";import{F as oe}from"./FPModal-DWGF1LV8.js";import{F as ne}from"./FPBadge-BKY5dPnL.js";function Ae(){const re=_(new Date),z=_("month"),N=i=>!i||!Array.isArray(i)?[]:i.map(a=>({id:`pm-${a.id}`,title:a.name,start:new Date(a.nextDue),end:new Date(new Date(a.nextDue).getTime()+(a.estimatedDuration||30)*6e4),backgroundColor:A(a.priority),borderColor:A(a.priority,!0),textColor:"#FFFFFF",extendedProps:{type:"preventive-maintenance",scheduleId:a.id,assetId:a.assetId,assetName:a.assetName,priority:a.priority,status:a.status,frequency:a.frequency,estimatedDuration:a.estimatedDuration,instructions:a.instructions,description:a.description}})),A=(i,a=!1)=>{const v={LOW:a?"#059669":"#10B981",MEDIUM:a?"#2563EB":"#3B82F6",HIGH:a?"#D97706":"#F59E0B",CRITICAL:a?"#DC2626":"#EF4444"};return v[i]||v.MEDIUM},U=(i="month")=>({...{initialView:`${i}View`,headerToolbar:{left:"prev,next today",center:"title",right:"dayGridMonth,timeGridWeek,timeGridDay"},height:"auto",nowIndicator:!0,editable:!0,droppable:!0,eventResizable:!0,eventDurationEditable:!0,eventStartEditable:!0,slotMinTime:"06:00:00",slotMaxTime:"22:00:00",slotDuration:"00:30:00",scrollTime:"08:00:00",businessHours:{daysOfWeek:[1,2,3,4,5],startTime:"08:00",endTime:"17:00"}},...{month:{dayMaxEvents:3,moreLinkClick:"popover",eventDisplay:"block"},week:{allDaySlot:!1,eventMinHeight:15},day:{allDaySlot:!1,eventMinHeight:20}}[i]}),G=(i,a)=>{if(!i||!a)return[];const v=new Date(a.start),f=new Date(a.end);return i.filter(r=>{var p,k;if(r.id===a.id||((p=r.extendedProps)==null?void 0:p.assetId)!==((k=a.extendedProps)==null?void 0:k.assetId))return!1;const h=new Date(r.start),m=new Date(r.end);return vh})},Y=(i,a=60,v=[],f={})=>{const{startHour:r=8,endHour:h=17,slotInterval:m=30,bufferTime:p=15}=f,k=[],s=new Date(i);for(let w=r;wh)continue;v.some(I=>{const F=new Date(I.start),O=new Date(I.end),W=new Date(F.getTime()-p*6e4),q=new Date(O.getTime()+p*6e4);return VW})||k.push({start:new Date(V),end:new Date(P),score:Z(V,f)})}return k.sort((w,S)=>S.score-w.score)},Z=(i,a={})=>{const{preferredHours:v=[8,9,10,14,15],avoidHours:f=[12,13],weekdayBonus:r=10,preferredHourBonus:h=20,avoidHourPenalty:m=-15}=a;let p=0;const k=i.getHours(),s=i.getDay();return s>=1&&s<=5&&(p+=r),v.includes(k)&&(p+=h),f.includes(k)&&(p+=m),p+=(17-k)*2,p},K=(i,a=new Date,v=12)=>{const f=[];let r=new Date(a);const{frequency:h,frequencyValue:m=1}=i;for(let p=0;p{const{event:a,delta:v,revert:f}=i,r=a.extendedProps.scheduleId,h=a.start,m=a.end;return h{const{event:a,revert:v}=i,f=a.extendedProps.scheduleId,r=(a.end-a.start)/6e4;return r<15?(v(),{success:!1,error:"Minimum maintenance duration is 15 minutes"}):r>8*60?(v(),{success:!1,error:"Maximum maintenance duration is 8 hours"}):{success:!0,scheduleId:f,newDuration:r,originalEvent:a}},Q=(i,a,v)=>!i||!Array.isArray(i)?[]:i.filter(f=>{if(!f.nextDue)return!1;const r=new Date(f.nextDue);return r>=a&&r<=v});return{selectedDate:re,viewMode:z,convertSchedulesToEvents:N,getPriorityColor:A,getCalendarConfig:U,findSchedulingConflicts:G,findAvailableTimeSlots:Y,generateRecurringSchedule:K,handleEventDrop:X,handleEventResize:ee,filterSchedulesByDateRange:Q,getScheduleStatistics:(i,a,v)=>{const f=Q(i,a,v),r={total:f.length,overdue:0,dueToday:0,dueSoon:0,scheduled:0,byPriority:{LOW:0,MEDIUM:0,HIGH:0,CRITICAL:0},byAsset:{},totalDuration:0},h=new Date;return h.setHours(0,0,0,0),f.forEach(m=>{const p=new Date(m.nextDue),k=Math.ceil((p-h)/(1e3*60*60*24));k<0?r.overdue++:k===0?r.dueToday++:k<=3?r.dueSoon++:r.scheduled++,m.priority&&r.byPriority[m.priority]!==void 0&&r.byPriority[m.priority]++;const s=m.assetName||`Asset ${m.assetId}`;r.byAsset[s]=(r.byAsset[s]||0)+1,r.totalDuration+=m.estimatedDuration||30}),r}}}const Te={key:0,class:"p-6"},Fe={class:"grid grid-cols-1 xl:grid-cols-3 gap-6"},He={class:"xl:col-span-2 space-y-6"},Le={class:"bg-white shadow rounded-lg p-6"},Re={class:"flex items-center justify-between mb-4"},je={class:"flex items-center space-x-2"},Be={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},ze={class:"mt-1 text-sm text-gray-900"},Ne={class:"mt-1 text-sm text-gray-900"},Oe={class:"mt-1 text-sm text-gray-900"},We={class:"mt-1 text-sm text-gray-900"},qe={class:"mt-1 text-sm"},$e={class:"text-gray-900"},Ue={class:"text-gray-500"},Ge={class:"mt-1 text-sm text-gray-900"},Ye={key:0,class:"md:col-span-2"},Ze={class:"mt-1 text-sm text-gray-900"},Qe={key:0,class:"bg-white shadow rounded-lg p-6"},Je={class:"space-y-6"},Ke={key:0},Xe={class:"text-sm text-gray-900 whitespace-pre-wrap bg-gray-50 rounded-md p-3"},et={key:1},tt={class:"text-sm text-gray-900 whitespace-pre-wrap bg-gray-50 rounded-md p-3"},st={key:2},at={class:"text-sm text-gray-900 whitespace-pre-wrap bg-gray-50 rounded-md p-3"},ot={class:"bg-white shadow rounded-lg p-6"},nt={class:"flex items-center justify-between mb-4"},rt={key:0,class:"text-center py-8"},lt={key:1,class:"text-center py-8"},it={key:2,class:"space-y-4"},dt={class:"flex items-center justify-between mb-2"},ut={class:"flex items-center space-x-2"},ct={class:"font-medium text-gray-900"},mt={class:"text-sm text-gray-500"},vt={class:"text-sm text-gray-600 space-y-1"},ft={key:0},yt={key:1},gt={key:0,class:"mt-2 text-sm text-gray-600 bg-gray-50 rounded-md p-2"},pt={class:"space-y-6"},ht={class:"bg-white shadow rounded-lg p-6"},xt={class:"space-y-4"},wt={class:"flex justify-between"},Dt={class:"text-sm text-gray-900"},kt={class:"flex justify-between"},_t={class:"text-sm text-gray-900"},bt={class:"flex justify-between"},Ct={class:"text-sm text-gray-900"},Mt={class:"flex justify-between"},St={class:"text-sm text-gray-900"},Vt={class:"flex justify-between"},Et={class:"text-sm text-gray-900"},Pt={class:"bg-white shadow rounded-lg p-6"},It={class:"space-y-3"},At={class:"text-sm text-gray-900"},Tt={class:"text-xs text-gray-500"},Ft={class:"text-xs text-gray-500"},Ht={class:"bg-white shadow rounded-lg p-6"},Lt={class:"space-y-3"},Rt={key:1,class:"p-6"},jt={key:2,class:"p-6"},Bt={class:"text-center py-12"},zt={class:"mt-1 text-sm text-gray-500"},Nt={class:"mt-6"},Ot={class:"space-y-4"},Wt={class:"bg-gray-50 rounded-lg p-4"},qt={class:"font-medium text-gray-900"},$t={class:"text-sm text-gray-600 mt-1"},Ut={class:"text-sm text-gray-600"},Gt={class:"flex justify-end space-x-3"},Yt={class:"space-y-4"},Zt={class:"flex justify-end space-x-3"},Qt={class:"space-y-4"},Jt={class:"flex"},Kt={class:"ml-3"},Xt={class:"mt-2"},es={class:"text-sm text-gray-500"},ts={class:"flex justify-end space-x-3"},ds={__name:"PreventiveMaintenanceDetailView",setup(re){const z=Ce(),N=De(),A=Me(),{showSuccess:U,showError:G}=be(),{calculateScheduleStatus:Y}=Ve(),{formatFrequency:Z,getPriorityVariant:K,getStatusVariant:X,formatPriority:ee,formatStatus:Q,formatDate:T,formatRelativeTime:i,formatDuration:a,formatAssetDisplay:v}=Se(),{handleScheduleDeletion:f,handleWorkOrderGeneration:r,handleSchedulePause:h,handleScheduleResume:m,handleScheduleDuplication:p}=Ee(A),{generateRecurringSchedule:k}=Ae(),s=_(null),w=_([]),S=_(!1),V=_(!1),P=_(null),R=_(!1),I=_(!1),F=_(!1),O=_(!1),W=_(!1),q=_(!1),H=_({scheduledDate:"",notes:""}),j=_({newDate:"",reason:""}),C=se(()=>N.params.id),$=se(()=>{if(!w.value.length)return{};const d=w.value.filter(b=>b.status==="COMPLETED"),t=w.value.reduce((b,E)=>b+(E.actualDuration||0),0),n=w.value.reduce((b,E)=>b+(E.totalCost||0),0);return{totalWorkOrders:w.value.length,completedWorkOrders:d.length,completionRate:w.value.length?Math.round(d.length/w.value.length*100):0,avgDuration:d.length?Math.round(t/d.length):0,totalCost:n}}),de=se(()=>s.value?k({id:s.value.id,frequency:s.value.frequency,frequencyValue:s.value.frequencyValue},new Date(s.value.nextDue),5):[]),L=async()=>{if(C.value){S.value=!0,P.value=null;try{if(s.value=await A.fetchScheduleById(parseInt(C.value)),!s.value)throw new Error("Schedule not found")}catch(d){console.error("Failed to load schedule:",d),P.value=d.message||"Failed to load schedule"}finally{S.value=!1}}},te=async()=>{var d,t;if(C.value){V.value=!0;try{w.value=[{id:1001,title:`PM: ${(d=s.value)==null?void 0:d.name}`,status:"COMPLETED",scheduledDate:"2024-01-15T09:00:00Z",completedAt:"2024-01-15T11:30:00Z",assignedTo:"John Smith",actualDuration:150,totalCost:250,notes:"All filters replaced successfully. Found minor wear on belt - noted for next maintenance.",createdAt:"2024-01-10T10:00:00Z"},{id:1002,title:`PM: ${(t=s.value)==null?void 0:t.name}`,status:"IN_PROGRESS",scheduledDate:"2024-02-15T09:00:00Z",assignedTo:"Mike Johnson",notes:"Scheduled maintenance check",createdAt:"2024-02-10T10:00:00Z"}]}catch(n){console.error("Failed to load work orders:",n),G("Failed to load work orders")}finally{V.value=!1}}},ue=()=>{te()},ce=()=>{z.push(`/maintenance/preventive/${C.value}/edit`)},me=()=>{s.value&&(H.value={scheduledDate:s.value.nextDue?new Date(s.value.nextDue).toISOString().slice(0,16):"",notes:""},R.value=!0)},ve=async()=>{O.value=!0;try{(await r(parseInt(C.value),{scheduledDate:new Date(H.value.scheduledDate),notes:H.value.notes})).success&&(R.value=!1,te(),L())}finally{O.value=!1}},fe=async()=>{try{(await h(parseInt(C.value),"Paused from detail view")).success&&L()}catch(d){console.error("Failed to pause schedule:",d)}},ye=async()=>{try{(await m(parseInt(C.value))).success&&L()}catch(d){console.error("Failed to resume schedule:",d)}},ge=async()=>{try{const d=await p(parseInt(C.value),{name:`${s.value.name} (Copy)`});d.success&&(U("Schedule duplicated successfully"),z.push(`/maintenance/preventive/${d.data.id}`))}catch(d){console.error("Failed to duplicate schedule:",d)}},pe=async()=>{W.value=!0;try{await A.rescheduleMaintenacne(parseInt(C.value),new Date(j.value.newDate),j.value.reason),U("Schedule rescheduled successfully"),I.value=!1,L()}catch(d){console.error("Failed to reschedule:",d),G("Failed to reschedule maintenance")}finally{W.value=!1}},he=async()=>{q.value=!0;try{(await f(parseInt(C.value))).success&&(F.value=!1,z.push("/maintenance/preventive"))}finally{q.value=!1}},xe=()=>{console.log("Exporting schedule details...")},we=d=>({PENDING:"warning",IN_PROGRESS:"info",COMPLETED:"success",CANCELLED:"error",ON_HOLD:"secondary"})[d]||"secondary";return ke(async()=>{await L(),s.value&&te()}),_e(()=>N.params.id,()=>{N.params.id&&L()}),(d,t)=>(y(),ae(Pe,null,{header:u(()=>{var n,b;return[c(Ie,{title:((n=s.value)==null?void 0:n.name)||"Schedule Details",description:s.value?`${s.value.assetName||"Asset"} - ${o(Z)(s.value.frequency,s.value.frequencyValue)}`:"Loading schedule details...",breadcrumbs:[{text:"Maintenance",to:"/maintenance"},{text:"Preventive Maintenance",to:"/maintenance/preventive"},{text:((b=s.value)==null?void 0:b.name)||"Details",to:null}]},{actions:u(()=>{var E,B;return[c(o(D),{variant:"outline",size:"sm",onClick:me,disabled:!s.value},{default:u(()=>t[12]||(t[12]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5H7a2 2 0 00-2 2v10a2 2 0 002 2h8a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"})],-1),g(" Generate Work Order ",-1)])),_:1,__:[12]},8,["disabled"]),c(o(D),{variant:"outline",size:"sm",onClick:ge,disabled:!s.value},{default:u(()=>t[13]||(t[13]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"})],-1),g(" Duplicate ",-1)])),_:1,__:[13]},8,["disabled"]),c(o(D),{variant:"outline",size:"sm",onClick:ce,disabled:!s.value},{default:u(()=>t[14]||(t[14]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1),g(" Edit ",-1)])),_:1,__:[14]},8,["disabled"]),((E=s.value)==null?void 0:E.status)==="ACTIVE"?(y(),ae(o(D),{key:0,variant:"outline",size:"sm",onClick:fe},{default:u(()=>t[15]||(t[15]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M10 9v6m4-6v6m7-3a9 9 0 11-18 0 9 9 0 0118 0z"})],-1),g(" Pause ",-1)])),_:1,__:[15]})):((B=s.value)==null?void 0:B.status)==="PAUSED"?(y(),ae(o(D),{key:1,variant:"outline",size:"sm",onClick:ye},{default:u(()=>t[16]||(t[16]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M14.828 14.828a4 4 0 01-5.656 0M9 10h1m4 0h1m-6 4h8m-5-4v4m0 0V8a2 2 0 012-2h2a2 2 0 012 2v12l-4-4z"})],-1),g(" Resume ",-1)])),_:1,__:[16]})):M("",!0)]}),_:1},8,["title","description","breadcrumbs"])]}),default:u(()=>[s.value?(y(),x("div",Te,[e("div",Fe,[e("div",He,[e("div",Le,[e("div",Re,[t[17]||(t[17]=e("h3",{class:"text-lg font-medium text-gray-900"},"Schedule Information",-1)),e("div",je,[c(o(ne),{variant:o(K)(s.value.priority)},{default:u(()=>[g(l(o(ee)(s.value.priority)),1)]),_:1},8,["variant"]),c(o(ne),{variant:o(X)(o(Y)(s.value))},{default:u(()=>[g(l(o(Q)(o(Y)(s.value))),1)]),_:1},8,["variant"])])]),e("dl",Be,[e("div",null,[t[18]||(t[18]=e("dt",{class:"text-sm font-medium text-gray-500"},"Schedule Name",-1)),e("dd",ze,l(s.value.name),1)]),e("div",null,[t[19]||(t[19]=e("dt",{class:"text-sm font-medium text-gray-500"},"Asset",-1)),e("dd",Ne,l(o(v)(s.value.assetName||s.value.asset)),1)]),e("div",null,[t[20]||(t[20]=e("dt",{class:"text-sm font-medium text-gray-500"},"Frequency",-1)),e("dd",Oe,l(o(Z)(s.value.frequency,s.value.frequencyValue)),1)]),e("div",null,[t[21]||(t[21]=e("dt",{class:"text-sm font-medium text-gray-500"},"Estimated Duration",-1)),e("dd",We,l(o(a)(s.value.estimatedDuration)),1)]),e("div",null,[t[22]||(t[22]=e("dt",{class:"text-sm font-medium text-gray-500"},"Next Due",-1)),e("dd",qe,[e("div",$e,l(o(T)(s.value.nextDue)),1),e("div",Ue,l(o(i)(s.value.nextDue)),1)])]),e("div",null,[t[23]||(t[23]=e("dt",{class:"text-sm font-medium text-gray-500"},"Last Completed",-1)),e("dd",Ge,l(s.value.lastCompleted?o(T)(s.value.lastCompleted):"Never"),1)]),s.value.description?(y(),x("div",Ye,[t[24]||(t[24]=e("dt",{class:"text-sm font-medium text-gray-500"},"Description",-1)),e("dd",Ze,l(s.value.description),1)])):M("",!0)])]),s.value.instructions||s.value.notes||s.value.requiredParts?(y(),x("div",Qe,[t[28]||(t[28]=e("h3",{class:"text-lg font-medium text-gray-900 mb-4"},"Instructions & Details",-1)),e("div",Je,[s.value.instructions?(y(),x("div",Ke,[t[25]||(t[25]=e("dt",{class:"text-sm font-medium text-gray-500 mb-2"},"Maintenance Instructions",-1)),e("dd",Xe,l(s.value.instructions),1)])):M("",!0),s.value.requiredParts?(y(),x("div",et,[t[26]||(t[26]=e("dt",{class:"text-sm font-medium text-gray-500 mb-2"},"Required Parts",-1)),e("dd",tt,l(s.value.requiredParts),1)])):M("",!0),s.value.notes?(y(),x("div",st,[t[27]||(t[27]=e("dt",{class:"text-sm font-medium text-gray-500 mb-2"},"Additional Notes",-1)),e("dd",at,l(s.value.notes),1)])):M("",!0)])])):M("",!0),e("div",ot,[e("div",nt,[t[30]||(t[30]=e("h3",{class:"text-lg font-medium text-gray-900"},"Work Order History",-1)),c(o(D),{variant:"outline",size:"sm",onClick:ue},{default:u(()=>t[29]||(t[29]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),g(" Refresh ",-1)])),_:1,__:[29]})]),V.value?(y(),x("div",rt,t[31]||(t[31]=[e("div",{class:"inline-flex items-center"},[e("svg",{class:"animate-spin -ml-1 mr-3 h-5 w-5 text-gray-500",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},[e("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"}),e("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]),g(" Loading work orders... ")],-1)]))):w.value.length===0?(y(),x("div",lt,t[32]||(t[32]=[e("svg",{class:"mx-auto h-12 w-12 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5H7a2 2 0 00-2 2v10a2 2 0 002 2h8a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01"})],-1),e("p",{class:"mt-2 text-sm text-gray-600"},"No work orders generated yet",-1)]))):(y(),x("div",it,[(y(!0),x(le,null,ie(w.value,n=>(y(),x("div",{key:n.id,class:"border border-gray-200 rounded-lg p-4 hover:border-gray-300 transition-colors"},[e("div",dt,[e("div",ut,[e("h4",ct,l(n.title||`Work Order #${n.id}`),1),c(o(ne),{variant:we(n.status)},{default:u(()=>[g(l(n.status),1)]),_:2},1032,["variant"])]),e("span",mt,l(o(T)(n.createdAt)),1)]),e("div",vt,[e("div",null,"Scheduled: "+l(o(T)(n.scheduledDate)),1),n.assignedTo?(y(),x("div",ft,"Assigned to: "+l(n.assignedTo),1)):M("",!0),n.completedAt?(y(),x("div",yt,"Completed: "+l(o(T)(n.completedAt)),1)):M("",!0)]),n.notes?(y(),x("div",gt,l(n.notes),1)):M("",!0)]))),128))]))])]),e("div",pt,[e("div",ht,[t[38]||(t[38]=e("h3",{class:"text-lg font-medium text-gray-900 mb-4"},"Quick Stats",-1)),e("dl",xt,[e("div",wt,[t[33]||(t[33]=e("dt",{class:"text-sm font-medium text-gray-500"},"Total Work Orders",-1)),e("dd",Dt,l($.value.totalWorkOrders||0),1)]),e("div",kt,[t[34]||(t[34]=e("dt",{class:"text-sm font-medium text-gray-500"},"Completed",-1)),e("dd",_t,l($.value.completedWorkOrders||0),1)]),e("div",bt,[t[35]||(t[35]=e("dt",{class:"text-sm font-medium text-gray-500"},"Completion Rate",-1)),e("dd",Ct,l($.value.completionRate||0)+"%",1)]),e("div",Mt,[t[36]||(t[36]=e("dt",{class:"text-sm font-medium text-gray-500"},"Avg. Duration",-1)),e("dd",St,l(o(a)($.value.avgDuration)||"N/A"),1)]),e("div",Vt,[t[37]||(t[37]=e("dt",{class:"text-sm font-medium text-gray-500"},"Total Cost",-1)),e("dd",Et,"$"+l(($.value.totalCost||0).toLocaleString()),1)])])]),e("div",Pt,[t[39]||(t[39]=e("h3",{class:"text-lg font-medium text-gray-900 mb-4"},"Upcoming Occurrences",-1)),e("div",It,[(y(!0),x(le,null,ie(de.value,(n,b)=>(y(),x("div",{key:b,class:"flex justify-between items-center py-2 border-b border-gray-100 last:border-b-0"},[e("div",null,[e("div",At,l(o(T)(n.date)),1),e("div",Tt,l(o(i)(n.date)),1)]),e("div",Ft," #"+l(n.occurrence),1)]))),128))])]),e("div",Ht,[t[43]||(t[43]=e("h3",{class:"text-lg font-medium text-gray-900 mb-4"},"Actions",-1)),e("div",Lt,[c(o(D),{variant:"outline",size:"sm",class:"w-full justify-start",onClick:t[0]||(t[0]=n=>I.value=!0)},{default:u(()=>t[40]||(t[40]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"})],-1),g(" Reschedule ",-1)])),_:1,__:[40]}),c(o(D),{variant:"outline",size:"sm",class:"w-full justify-start",onClick:xe},{default:u(()=>t[41]||(t[41]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1),g(" Export Details ",-1)])),_:1,__:[41]}),c(o(D),{variant:"outline",size:"sm",class:"w-full justify-start text-red-600 hover:text-red-700",onClick:t[1]||(t[1]=n=>F.value=!0)},{default:u(()=>t[42]||(t[42]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1),g(" Delete Schedule ",-1)])),_:1,__:[42]})])])])])])):S.value?(y(),x("div",Rt,t[44]||(t[44]=[e("div",{class:"text-center py-12"},[e("div",{class:"inline-flex items-center"},[e("svg",{class:"animate-spin -ml-1 mr-3 h-8 w-8 text-gray-500",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},[e("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"}),e("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]),e("span",{class:"text-lg text-gray-600"},"Loading schedule details...")])],-1)]))):P.value?(y(),x("div",jt,[e("div",Bt,[t[46]||(t[46]=e("svg",{class:"mx-auto h-12 w-12 text-red-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L4.268 16.5c-.77.833.192 2.5 1.732 2.5z"})],-1)),t[47]||(t[47]=e("h3",{class:"mt-2 text-sm font-medium text-gray-900"},"Error loading schedule",-1)),e("p",zt,l(P.value),1),e("div",Nt,[c(o(D),{variant:"primary",onClick:L},{default:u(()=>t[45]||(t[45]=[g(" Try Again ",-1)])),_:1,__:[45]})])])])):M("",!0),c(o(oe),{modelValue:R.value,"onUpdate:modelValue":t[5]||(t[5]=n=>R.value=n),title:"Generate Work Order",size:"md"},{footer:u(()=>[e("div",Gt,[c(o(D),{variant:"secondary",onClick:t[4]||(t[4]=n=>R.value=!1)},{default:u(()=>t[48]||(t[48]=[g(" Cancel ",-1)])),_:1,__:[48]}),c(o(D),{variant:"primary",loading:O.value,onClick:ve},{default:u(()=>t[49]||(t[49]=[g(" Generate Work Order ",-1)])),_:1,__:[49]},8,["loading"])])]),default:u(()=>{var n,b,E;return[e("div",Ot,[e("div",Wt,[e("h4",qt,l((n=s.value)==null?void 0:n.name),1),e("p",$t,l(o(v)((b=s.value)==null?void 0:b.assetName)),1),e("p",Ut,"Estimated Duration: "+l(o(a)((E=s.value)==null?void 0:E.estimatedDuration)),1)]),c(o(J),{modelValue:H.value.scheduledDate,"onUpdate:modelValue":t[2]||(t[2]=B=>H.value.scheduledDate=B),label:"Scheduled Date",type:"datetime-local",required:""},null,8,["modelValue"]),c(o(J),{modelValue:H.value.notes,"onUpdate:modelValue":t[3]||(t[3]=B=>H.value.notes=B),label:"Work Order Notes",type:"textarea",placeholder:"Additional notes for this work order...",rows:"3"},null,8,["modelValue"])])]}),_:1},8,["modelValue"]),c(o(oe),{modelValue:I.value,"onUpdate:modelValue":t[9]||(t[9]=n=>I.value=n),title:"Reschedule Maintenance",size:"md"},{footer:u(()=>[e("div",Zt,[c(o(D),{variant:"secondary",onClick:t[8]||(t[8]=n=>I.value=!1)},{default:u(()=>t[50]||(t[50]=[g(" Cancel ",-1)])),_:1,__:[50]}),c(o(D),{variant:"primary",loading:W.value,onClick:pe},{default:u(()=>t[51]||(t[51]=[g(" Reschedule ",-1)])),_:1,__:[51]},8,["loading"])])]),default:u(()=>[e("div",Yt,[c(o(J),{modelValue:j.value.newDate,"onUpdate:modelValue":t[6]||(t[6]=n=>j.value.newDate=n),label:"New Due Date",type:"datetime-local",required:""},null,8,["modelValue"]),c(o(J),{modelValue:j.value.reason,"onUpdate:modelValue":t[7]||(t[7]=n=>j.value.reason=n),label:"Reason for Rescheduling",type:"textarea",placeholder:"Explain why this maintenance is being rescheduled...",rows:"3",required:""},null,8,["modelValue"])])]),_:1},8,["modelValue"]),c(o(oe),{modelValue:F.value,"onUpdate:modelValue":t[11]||(t[11]=n=>F.value=n),title:"Delete Schedule",size:"sm"},{footer:u(()=>[e("div",ts,[c(o(D),{variant:"secondary",onClick:t[10]||(t[10]=n=>F.value=!1)},{default:u(()=>t[54]||(t[54]=[g(" Cancel ",-1)])),_:1,__:[54]}),c(o(D),{variant:"danger",loading:q.value,onClick:he},{default:u(()=>t[55]||(t[55]=[g(" Delete Schedule ",-1)])),_:1,__:[55]},8,["loading"])])]),default:u(()=>{var n;return[e("div",Qt,[e("div",Jt,[t[53]||(t[53]=e("div",{class:"flex-shrink-0"},[e("svg",{class:"h-6 w-6 text-red-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L4.268 16.5c-.77.833.192 2.5 1.732 2.5z"})])],-1)),e("div",Kt,[t[52]||(t[52]=e("h3",{class:"text-lg font-medium text-gray-900"},"Delete Schedule",-1)),e("div",Xt,[e("p",es,' Are you sure you want to delete "'+l((n=s.value)==null?void 0:n.name)+'"? This action cannot be undone and will remove all associated work orders and history. ',1)])])])])]}),_:1},8,["modelValue"])]),_:1}))}};export{ds as default}; +import{r as _,c as se,s as De,o as ke,m as _e,i as ae,w as u,l as be,v as Ce,g as y,a as x,j as M,d as c,b as e,e as o,k as g,t as l,F as D,af as le,aR as ie}from"./index-QAlcqU00.js";import{u as Me,a as Se}from"./usePreventiveMaintenanceDisplay-DE1jAbPb.js";import{u as Ve,a as Ee}from"./usePreventiveMaintenanceOperations-Dd7Aro2G.js";import{F as Pe,a as Ie}from"./FPPageHeader-CFIwZZgQ.js";import{F as K}from"./FPInput-D5RURom0.js";import{F as oe}from"./FPModal-DMoPysvU.js";import{F as ne}from"./FPBadge-DvOitM1C.js";function Ae(){const re=_(new Date),z=_("month"),N=i=>!i||!Array.isArray(i)?[]:i.map(a=>({id:`pm-${a.id}`,title:a.name,start:new Date(a.nextDue),end:new Date(new Date(a.nextDue).getTime()+(a.estimatedDuration||30)*6e4),backgroundColor:A(a.priority),borderColor:A(a.priority,!0),textColor:"#FFFFFF",extendedProps:{type:"preventive-maintenance",scheduleId:a.id,assetId:a.assetId,assetName:a.assetName,priority:a.priority,status:a.status,frequency:a.frequency,estimatedDuration:a.estimatedDuration,instructions:a.instructions,description:a.description}})),A=(i,a=!1)=>{const v={LOW:a?"#059669":"#10B981",MEDIUM:a?"#2563EB":"#3B82F6",HIGH:a?"#D97706":"#F59E0B",CRITICAL:a?"#DC2626":"#EF4444"};return v[i]||v.MEDIUM},U=(i="month")=>({...{initialView:`${i}View`,headerToolbar:{left:"prev,next today",center:"title",right:"dayGridMonth,timeGridWeek,timeGridDay"},height:"auto",nowIndicator:!0,editable:!0,droppable:!0,eventResizable:!0,eventDurationEditable:!0,eventStartEditable:!0,slotMinTime:"06:00:00",slotMaxTime:"22:00:00",slotDuration:"00:30:00",scrollTime:"08:00:00",businessHours:{daysOfWeek:[1,2,3,4,5],startTime:"08:00",endTime:"17:00"}},...{month:{dayMaxEvents:3,moreLinkClick:"popover",eventDisplay:"block"},week:{allDaySlot:!1,eventMinHeight:15},day:{allDaySlot:!1,eventMinHeight:20}}[i]}),G=(i,a)=>{if(!i||!a)return[];const v=new Date(a.start),f=new Date(a.end);return i.filter(r=>{var p,k;if(r.id===a.id||((p=r.extendedProps)==null?void 0:p.assetId)!==((k=a.extendedProps)==null?void 0:k.assetId))return!1;const h=new Date(r.start),m=new Date(r.end);return vh})},Y=(i,a=60,v=[],f={})=>{const{startHour:r=8,endHour:h=17,slotInterval:m=30,bufferTime:p=15}=f,k=[],s=new Date(i);for(let w=r;wh)continue;v.some(I=>{const F=new Date(I.start),O=new Date(I.end),W=new Date(F.getTime()-p*6e4),q=new Date(O.getTime()+p*6e4);return VW})||k.push({start:new Date(V),end:new Date(P),score:Z(V,f)})}return k.sort((w,S)=>S.score-w.score)},Z=(i,a={})=>{const{preferredHours:v=[8,9,10,14,15],avoidHours:f=[12,13],weekdayBonus:r=10,preferredHourBonus:h=20,avoidHourPenalty:m=-15}=a;let p=0;const k=i.getHours(),s=i.getDay();return s>=1&&s<=5&&(p+=r),v.includes(k)&&(p+=h),f.includes(k)&&(p+=m),p+=(17-k)*2,p},Q=(i,a=new Date,v=12)=>{const f=[];let r=new Date(a);const{frequency:h,frequencyValue:m=1}=i;for(let p=0;p{const{event:a,delta:v,revert:f}=i,r=a.extendedProps.scheduleId,h=a.start,m=a.end;return h{const{event:a,revert:v}=i,f=a.extendedProps.scheduleId,r=(a.end-a.start)/6e4;return r<15?(v(),{success:!1,error:"Minimum maintenance duration is 15 minutes"}):r>8*60?(v(),{success:!1,error:"Maximum maintenance duration is 8 hours"}):{success:!0,scheduleId:f,newDuration:r,originalEvent:a}},J=(i,a,v)=>!i||!Array.isArray(i)?[]:i.filter(f=>{if(!f.nextDue)return!1;const r=new Date(f.nextDue);return r>=a&&r<=v});return{selectedDate:re,viewMode:z,convertSchedulesToEvents:N,getPriorityColor:A,getCalendarConfig:U,findSchedulingConflicts:G,findAvailableTimeSlots:Y,generateRecurringSchedule:Q,handleEventDrop:X,handleEventResize:ee,filterSchedulesByDateRange:J,getScheduleStatistics:(i,a,v)=>{const f=J(i,a,v),r={total:f.length,overdue:0,dueToday:0,dueSoon:0,scheduled:0,byPriority:{LOW:0,MEDIUM:0,HIGH:0,CRITICAL:0},byAsset:{},totalDuration:0},h=new Date;return h.setHours(0,0,0,0),f.forEach(m=>{const p=new Date(m.nextDue),k=Math.ceil((p-h)/(1e3*60*60*24));k<0?r.overdue++:k===0?r.dueToday++:k<=3?r.dueSoon++:r.scheduled++,m.priority&&r.byPriority[m.priority]!==void 0&&r.byPriority[m.priority]++;const s=m.assetName||`Asset ${m.assetId}`;r.byAsset[s]=(r.byAsset[s]||0)+1,r.totalDuration+=m.estimatedDuration||30}),r}}}const Te={key:0,class:"p-6"},Fe={class:"grid grid-cols-1 xl:grid-cols-3 gap-6"},He={class:"xl:col-span-2 space-y-6"},Re={class:"bg-white shadow rounded-lg p-6"},Le={class:"flex items-center justify-between mb-4"},je={class:"flex items-center space-x-2"},Be={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},ze={class:"mt-1 text-sm text-gray-900"},Ne={class:"mt-1 text-sm text-gray-900"},Oe={class:"mt-1 text-sm text-gray-900"},We={class:"mt-1 text-sm text-gray-900"},qe={class:"mt-1 text-sm"},$e={class:"text-gray-900"},Ue={class:"text-gray-500"},Ge={class:"mt-1 text-sm text-gray-900"},Ye={key:0,class:"md:col-span-2"},Ze={class:"mt-1 text-sm text-gray-900"},Je={key:0,class:"bg-white shadow rounded-lg p-6"},Ke={class:"space-y-6"},Qe={key:0},Xe={class:"text-sm text-gray-900 whitespace-pre-wrap bg-gray-50 rounded-md p-3"},et={key:1},tt={class:"text-sm text-gray-900 whitespace-pre-wrap bg-gray-50 rounded-md p-3"},st={key:2},at={class:"text-sm text-gray-900 whitespace-pre-wrap bg-gray-50 rounded-md p-3"},ot={class:"bg-white shadow rounded-lg p-6"},nt={class:"flex items-center justify-between mb-4"},rt={key:0,class:"text-center py-8"},lt={key:1,class:"text-center py-8"},it={key:2,class:"space-y-4"},dt={class:"flex items-center justify-between mb-2"},ut={class:"flex items-center space-x-2"},ct={class:"font-medium text-gray-900"},mt={class:"text-sm text-gray-500"},vt={class:"text-sm text-gray-600 space-y-1"},ft={key:0},yt={key:1},gt={key:0,class:"mt-2 text-sm text-gray-600 bg-gray-50 rounded-md p-2"},pt={class:"space-y-6"},ht={class:"bg-white shadow rounded-lg p-6"},xt={class:"space-y-4"},wt={class:"flex justify-between"},Dt={class:"text-sm text-gray-900"},kt={class:"flex justify-between"},_t={class:"text-sm text-gray-900"},bt={class:"flex justify-between"},Ct={class:"text-sm text-gray-900"},Mt={class:"flex justify-between"},St={class:"text-sm text-gray-900"},Vt={class:"flex justify-between"},Et={class:"text-sm text-gray-900"},Pt={class:"bg-white shadow rounded-lg p-6"},It={class:"space-y-3"},At={class:"text-sm text-gray-900"},Tt={class:"text-xs text-gray-500"},Ft={class:"text-xs text-gray-500"},Ht={class:"bg-white shadow rounded-lg p-6"},Rt={class:"space-y-3"},Lt={key:1,class:"p-6"},jt={key:2,class:"p-6"},Bt={class:"text-center py-12"},zt={class:"mt-1 text-sm text-gray-500"},Nt={class:"mt-6"},Ot={class:"space-y-4"},Wt={class:"bg-gray-50 rounded-lg p-4"},qt={class:"font-medium text-gray-900"},$t={class:"text-sm text-gray-600 mt-1"},Ut={class:"text-sm text-gray-600"},Gt={class:"flex justify-end space-x-3"},Yt={class:"space-y-4"},Zt={class:"flex justify-end space-x-3"},Jt={class:"space-y-4"},Kt={class:"flex"},Qt={class:"ml-3"},Xt={class:"mt-2"},es={class:"text-sm text-gray-500"},ts={class:"flex justify-end space-x-3"},ds={__name:"PreventiveMaintenanceDetailView",setup(re){const z=Ce(),N=De(),A=Me(),{showSuccess:U,showError:G}=be(),{calculateScheduleStatus:Y}=Ve(),{formatFrequency:Z,getPriorityVariant:Q,getStatusVariant:X,formatPriority:ee,formatStatus:J,formatDate:T,formatRelativeTime:i,formatDuration:a,formatAssetDisplay:v}=Se(),{handleScheduleDeletion:f,handleWorkOrderGeneration:r,handleSchedulePause:h,handleScheduleResume:m,handleScheduleDuplication:p}=Ee(A),{generateRecurringSchedule:k}=Ae(),s=_(null),w=_([]),S=_(!1),V=_(!1),P=_(null),L=_(!1),I=_(!1),F=_(!1),O=_(!1),W=_(!1),q=_(!1),H=_({scheduledDate:"",notes:""}),j=_({newDate:"",reason:""}),C=se(()=>N.params.id),$=se(()=>{if(!w.value.length)return{};const d=w.value.filter(b=>b.status==="COMPLETED"),t=w.value.reduce((b,E)=>b+(E.actualDuration||0),0),n=w.value.reduce((b,E)=>b+(E.totalCost||0),0);return{totalWorkOrders:w.value.length,completedWorkOrders:d.length,completionRate:w.value.length?Math.round(d.length/w.value.length*100):0,avgDuration:d.length?Math.round(t/d.length):0,totalCost:n}}),de=se(()=>s.value?k({id:s.value.id,frequency:s.value.frequency,frequencyValue:s.value.frequencyValue},new Date(s.value.nextDue),5):[]),R=async()=>{if(C.value){S.value=!0,P.value=null;try{if(s.value=await A.fetchScheduleById(parseInt(C.value)),!s.value)throw new Error("Schedule not found")}catch(d){console.error("Failed to load schedule:",d),P.value=d.message||"Failed to load schedule"}finally{S.value=!1}}},te=async()=>{var d,t;if(C.value){V.value=!0;try{w.value=[{id:1001,title:`PM: ${(d=s.value)==null?void 0:d.name}`,status:"COMPLETED",scheduledDate:"2024-01-15T09:00:00Z",completedAt:"2024-01-15T11:30:00Z",assignedTo:"John Smith",actualDuration:150,totalCost:250,notes:"All filters replaced successfully. Found minor wear on belt - noted for next maintenance.",createdAt:"2024-01-10T10:00:00Z"},{id:1002,title:`PM: ${(t=s.value)==null?void 0:t.name}`,status:"IN_PROGRESS",scheduledDate:"2024-02-15T09:00:00Z",assignedTo:"Mike Johnson",notes:"Scheduled maintenance check",createdAt:"2024-02-10T10:00:00Z"}]}catch(n){console.error("Failed to load work orders:",n),G("Failed to load work orders")}finally{V.value=!1}}},ue=()=>{te()},ce=()=>{z.push(`/maintenance/preventive/${C.value}/edit`)},me=()=>{s.value&&(H.value={scheduledDate:s.value.nextDue?new Date(s.value.nextDue).toISOString().slice(0,16):"",notes:""},L.value=!0)},ve=async()=>{O.value=!0;try{(await r(parseInt(C.value),{scheduledDate:new Date(H.value.scheduledDate),notes:H.value.notes})).success&&(L.value=!1,te(),R())}finally{O.value=!1}},fe=async()=>{try{(await h(parseInt(C.value),"Paused from detail view")).success&&R()}catch(d){console.error("Failed to pause schedule:",d)}},ye=async()=>{try{(await m(parseInt(C.value))).success&&R()}catch(d){console.error("Failed to resume schedule:",d)}},ge=async()=>{try{const d=await p(parseInt(C.value),{name:`${s.value.name} (Copy)`});d.success&&(U("Schedule duplicated successfully"),z.push(`/maintenance/preventive/${d.data.id}`))}catch(d){console.error("Failed to duplicate schedule:",d)}},pe=async()=>{W.value=!0;try{await A.rescheduleMaintenacne(parseInt(C.value),new Date(j.value.newDate),j.value.reason),U("Schedule rescheduled successfully"),I.value=!1,R()}catch(d){console.error("Failed to reschedule:",d),G("Failed to reschedule maintenance")}finally{W.value=!1}},he=async()=>{q.value=!0;try{(await f(parseInt(C.value))).success&&(F.value=!1,z.push("/maintenance/preventive"))}finally{q.value=!1}},xe=()=>{console.log("Exporting schedule details...")},we=d=>({PENDING:"warning",IN_PROGRESS:"info",COMPLETED:"success",CANCELLED:"error",ON_HOLD:"secondary"})[d]||"secondary";return ke(async()=>{await R(),s.value&&te()}),_e(()=>N.params.id,()=>{N.params.id&&R()}),(d,t)=>(y(),ae(Pe,null,{header:u(()=>{var n,b;return[c(Ie,{title:((n=s.value)==null?void 0:n.name)||"Schedule Details",description:s.value?`${s.value.assetName||"Asset"} - ${o(Z)(s.value.frequency,s.value.frequencyValue)}`:"Loading schedule details...",breadcrumbs:[{text:"Maintenance",to:"/maintenance"},{text:"Preventive Maintenance",to:"/maintenance/preventive"},{text:((b=s.value)==null?void 0:b.name)||"Details",to:null}]},{actions:u(()=>{var E,B;return[c(o(D),{variant:"outline",size:"sm",onClick:me,disabled:!s.value},{default:u(()=>t[12]||(t[12]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5H7a2 2 0 00-2 2v10a2 2 0 002 2h8a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"})],-1),g(" Generate Work Order ",-1)])),_:1,__:[12]},8,["disabled"]),c(o(D),{variant:"outline",size:"sm",onClick:ge,disabled:!s.value},{default:u(()=>t[13]||(t[13]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"})],-1),g(" Duplicate ",-1)])),_:1,__:[13]},8,["disabled"]),c(o(D),{variant:"outline",size:"sm",onClick:ce,disabled:!s.value},{default:u(()=>t[14]||(t[14]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1),g(" Edit ",-1)])),_:1,__:[14]},8,["disabled"]),((E=s.value)==null?void 0:E.status)==="ACTIVE"?(y(),ae(o(D),{key:0,variant:"outline",size:"sm",onClick:fe},{default:u(()=>t[15]||(t[15]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M10 9v6m4-6v6m7-3a9 9 0 11-18 0 9 9 0 0118 0z"})],-1),g(" Pause ",-1)])),_:1,__:[15]})):((B=s.value)==null?void 0:B.status)==="PAUSED"?(y(),ae(o(D),{key:1,variant:"outline",size:"sm",onClick:ye},{default:u(()=>t[16]||(t[16]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M14.828 14.828a4 4 0 01-5.656 0M9 10h1m4 0h1m-6 4h8m-5-4v4m0 0V8a2 2 0 012-2h2a2 2 0 012 2v12l-4-4z"})],-1),g(" Resume ",-1)])),_:1,__:[16]})):M("",!0)]}),_:1},8,["title","description","breadcrumbs"])]}),default:u(()=>[s.value?(y(),x("div",Te,[e("div",Fe,[e("div",He,[e("div",Re,[e("div",Le,[t[17]||(t[17]=e("h3",{class:"text-lg font-medium text-gray-900"},"Schedule Information",-1)),e("div",je,[c(o(ne),{variant:o(Q)(s.value.priority)},{default:u(()=>[g(l(o(ee)(s.value.priority)),1)]),_:1},8,["variant"]),c(o(ne),{variant:o(X)(o(Y)(s.value))},{default:u(()=>[g(l(o(J)(o(Y)(s.value))),1)]),_:1},8,["variant"])])]),e("dl",Be,[e("div",null,[t[18]||(t[18]=e("dt",{class:"text-sm font-medium text-gray-500"},"Schedule Name",-1)),e("dd",ze,l(s.value.name),1)]),e("div",null,[t[19]||(t[19]=e("dt",{class:"text-sm font-medium text-gray-500"},"Asset",-1)),e("dd",Ne,l(o(v)(s.value.assetName||s.value.asset)),1)]),e("div",null,[t[20]||(t[20]=e("dt",{class:"text-sm font-medium text-gray-500"},"Frequency",-1)),e("dd",Oe,l(o(Z)(s.value.frequency,s.value.frequencyValue)),1)]),e("div",null,[t[21]||(t[21]=e("dt",{class:"text-sm font-medium text-gray-500"},"Estimated Duration",-1)),e("dd",We,l(o(a)(s.value.estimatedDuration)),1)]),e("div",null,[t[22]||(t[22]=e("dt",{class:"text-sm font-medium text-gray-500"},"Next Due",-1)),e("dd",qe,[e("div",$e,l(o(T)(s.value.nextDue)),1),e("div",Ue,l(o(i)(s.value.nextDue)),1)])]),e("div",null,[t[23]||(t[23]=e("dt",{class:"text-sm font-medium text-gray-500"},"Last Completed",-1)),e("dd",Ge,l(s.value.lastCompleted?o(T)(s.value.lastCompleted):"Never"),1)]),s.value.description?(y(),x("div",Ye,[t[24]||(t[24]=e("dt",{class:"text-sm font-medium text-gray-500"},"Description",-1)),e("dd",Ze,l(s.value.description),1)])):M("",!0)])]),s.value.instructions||s.value.notes||s.value.requiredParts?(y(),x("div",Je,[t[28]||(t[28]=e("h3",{class:"text-lg font-medium text-gray-900 mb-4"},"Instructions & Details",-1)),e("div",Ke,[s.value.instructions?(y(),x("div",Qe,[t[25]||(t[25]=e("dt",{class:"text-sm font-medium text-gray-500 mb-2"},"Maintenance Instructions",-1)),e("dd",Xe,l(s.value.instructions),1)])):M("",!0),s.value.requiredParts?(y(),x("div",et,[t[26]||(t[26]=e("dt",{class:"text-sm font-medium text-gray-500 mb-2"},"Required Parts",-1)),e("dd",tt,l(s.value.requiredParts),1)])):M("",!0),s.value.notes?(y(),x("div",st,[t[27]||(t[27]=e("dt",{class:"text-sm font-medium text-gray-500 mb-2"},"Additional Notes",-1)),e("dd",at,l(s.value.notes),1)])):M("",!0)])])):M("",!0),e("div",ot,[e("div",nt,[t[30]||(t[30]=e("h3",{class:"text-lg font-medium text-gray-900"},"Work Order History",-1)),c(o(D),{variant:"outline",size:"sm",onClick:ue},{default:u(()=>t[29]||(t[29]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),g(" Refresh ",-1)])),_:1,__:[29]})]),V.value?(y(),x("div",rt,t[31]||(t[31]=[e("div",{class:"inline-flex items-center"},[e("svg",{class:"animate-spin -ml-1 mr-3 h-5 w-5 text-gray-500",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},[e("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"}),e("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]),g(" Loading work orders... ")],-1)]))):w.value.length===0?(y(),x("div",lt,t[32]||(t[32]=[e("svg",{class:"mx-auto h-12 w-12 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5H7a2 2 0 00-2 2v10a2 2 0 002 2h8a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01"})],-1),e("p",{class:"mt-2 text-sm text-gray-600"},"No work orders generated yet",-1)]))):(y(),x("div",it,[(y(!0),x(le,null,ie(w.value,n=>(y(),x("div",{key:n.id,class:"border border-gray-200 rounded-lg p-4 hover:border-gray-300 transition-colors"},[e("div",dt,[e("div",ut,[e("h4",ct,l(n.title||`Work Order #${n.id}`),1),c(o(ne),{variant:we(n.status)},{default:u(()=>[g(l(n.status),1)]),_:2},1032,["variant"])]),e("span",mt,l(o(T)(n.createdAt)),1)]),e("div",vt,[e("div",null,"Scheduled: "+l(o(T)(n.scheduledDate)),1),n.assignedTo?(y(),x("div",ft,"Assigned to: "+l(n.assignedTo),1)):M("",!0),n.completedAt?(y(),x("div",yt,"Completed: "+l(o(T)(n.completedAt)),1)):M("",!0)]),n.notes?(y(),x("div",gt,l(n.notes),1)):M("",!0)]))),128))]))])]),e("div",pt,[e("div",ht,[t[38]||(t[38]=e("h3",{class:"text-lg font-medium text-gray-900 mb-4"},"Quick Stats",-1)),e("dl",xt,[e("div",wt,[t[33]||(t[33]=e("dt",{class:"text-sm font-medium text-gray-500"},"Total Work Orders",-1)),e("dd",Dt,l($.value.totalWorkOrders||0),1)]),e("div",kt,[t[34]||(t[34]=e("dt",{class:"text-sm font-medium text-gray-500"},"Completed",-1)),e("dd",_t,l($.value.completedWorkOrders||0),1)]),e("div",bt,[t[35]||(t[35]=e("dt",{class:"text-sm font-medium text-gray-500"},"Completion Rate",-1)),e("dd",Ct,l($.value.completionRate||0)+"%",1)]),e("div",Mt,[t[36]||(t[36]=e("dt",{class:"text-sm font-medium text-gray-500"},"Avg. Duration",-1)),e("dd",St,l(o(a)($.value.avgDuration)||"N/A"),1)]),e("div",Vt,[t[37]||(t[37]=e("dt",{class:"text-sm font-medium text-gray-500"},"Total Cost",-1)),e("dd",Et,"$"+l(($.value.totalCost||0).toLocaleString()),1)])])]),e("div",Pt,[t[39]||(t[39]=e("h3",{class:"text-lg font-medium text-gray-900 mb-4"},"Upcoming Occurrences",-1)),e("div",It,[(y(!0),x(le,null,ie(de.value,(n,b)=>(y(),x("div",{key:b,class:"flex justify-between items-center py-2 border-b border-gray-100 last:border-b-0"},[e("div",null,[e("div",At,l(o(T)(n.date)),1),e("div",Tt,l(o(i)(n.date)),1)]),e("div",Ft," #"+l(n.occurrence),1)]))),128))])]),e("div",Ht,[t[43]||(t[43]=e("h3",{class:"text-lg font-medium text-gray-900 mb-4"},"Actions",-1)),e("div",Rt,[c(o(D),{variant:"outline",size:"sm",class:"w-full justify-start",onClick:t[0]||(t[0]=n=>I.value=!0)},{default:u(()=>t[40]||(t[40]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"})],-1),g(" Reschedule ",-1)])),_:1,__:[40]}),c(o(D),{variant:"outline",size:"sm",class:"w-full justify-start",onClick:xe},{default:u(()=>t[41]||(t[41]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1),g(" Export Details ",-1)])),_:1,__:[41]}),c(o(D),{variant:"outline",size:"sm",class:"w-full justify-start text-red-600 hover:text-red-700",onClick:t[1]||(t[1]=n=>F.value=!0)},{default:u(()=>t[42]||(t[42]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1),g(" Delete Schedule ",-1)])),_:1,__:[42]})])])])])])):S.value?(y(),x("div",Lt,t[44]||(t[44]=[e("div",{class:"text-center py-12"},[e("div",{class:"inline-flex items-center"},[e("svg",{class:"animate-spin -ml-1 mr-3 h-8 w-8 text-gray-500",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},[e("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"}),e("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]),e("span",{class:"text-lg text-gray-600"},"Loading schedule details...")])],-1)]))):P.value?(y(),x("div",jt,[e("div",Bt,[t[46]||(t[46]=e("svg",{class:"mx-auto h-12 w-12 text-red-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L4.268 16.5c-.77.833.192 2.5 1.732 2.5z"})],-1)),t[47]||(t[47]=e("h3",{class:"mt-2 text-sm font-medium text-gray-900"},"Error loading schedule",-1)),e("p",zt,l(P.value),1),e("div",Nt,[c(o(D),{variant:"primary",onClick:R},{default:u(()=>t[45]||(t[45]=[g(" Try Again ",-1)])),_:1,__:[45]})])])])):M("",!0),c(o(oe),{modelValue:L.value,"onUpdate:modelValue":t[5]||(t[5]=n=>L.value=n),title:"Generate Work Order",size:"md"},{footer:u(()=>[e("div",Gt,[c(o(D),{variant:"secondary",onClick:t[4]||(t[4]=n=>L.value=!1)},{default:u(()=>t[48]||(t[48]=[g(" Cancel ",-1)])),_:1,__:[48]}),c(o(D),{variant:"primary",loading:O.value,onClick:ve},{default:u(()=>t[49]||(t[49]=[g(" Generate Work Order ",-1)])),_:1,__:[49]},8,["loading"])])]),default:u(()=>{var n,b,E;return[e("div",Ot,[e("div",Wt,[e("h4",qt,l((n=s.value)==null?void 0:n.name),1),e("p",$t,l(o(v)((b=s.value)==null?void 0:b.assetName)),1),e("p",Ut,"Estimated Duration: "+l(o(a)((E=s.value)==null?void 0:E.estimatedDuration)),1)]),c(o(K),{modelValue:H.value.scheduledDate,"onUpdate:modelValue":t[2]||(t[2]=B=>H.value.scheduledDate=B),label:"Scheduled Date",type:"datetime-local",required:""},null,8,["modelValue"]),c(o(K),{modelValue:H.value.notes,"onUpdate:modelValue":t[3]||(t[3]=B=>H.value.notes=B),label:"Work Order Notes",type:"textarea",placeholder:"Additional notes for this work order...",rows:"3"},null,8,["modelValue"])])]}),_:1},8,["modelValue"]),c(o(oe),{modelValue:I.value,"onUpdate:modelValue":t[9]||(t[9]=n=>I.value=n),title:"Reschedule Maintenance",size:"md"},{footer:u(()=>[e("div",Zt,[c(o(D),{variant:"secondary",onClick:t[8]||(t[8]=n=>I.value=!1)},{default:u(()=>t[50]||(t[50]=[g(" Cancel ",-1)])),_:1,__:[50]}),c(o(D),{variant:"primary",loading:W.value,onClick:pe},{default:u(()=>t[51]||(t[51]=[g(" Reschedule ",-1)])),_:1,__:[51]},8,["loading"])])]),default:u(()=>[e("div",Yt,[c(o(K),{modelValue:j.value.newDate,"onUpdate:modelValue":t[6]||(t[6]=n=>j.value.newDate=n),label:"New Due Date",type:"datetime-local",required:""},null,8,["modelValue"]),c(o(K),{modelValue:j.value.reason,"onUpdate:modelValue":t[7]||(t[7]=n=>j.value.reason=n),label:"Reason for Rescheduling",type:"textarea",placeholder:"Explain why this maintenance is being rescheduled...",rows:"3",required:""},null,8,["modelValue"])])]),_:1},8,["modelValue"]),c(o(oe),{modelValue:F.value,"onUpdate:modelValue":t[11]||(t[11]=n=>F.value=n),title:"Delete Schedule",size:"sm"},{footer:u(()=>[e("div",ts,[c(o(D),{variant:"secondary",onClick:t[10]||(t[10]=n=>F.value=!1)},{default:u(()=>t[54]||(t[54]=[g(" Cancel ",-1)])),_:1,__:[54]}),c(o(D),{variant:"danger",loading:q.value,onClick:he},{default:u(()=>t[55]||(t[55]=[g(" Delete Schedule ",-1)])),_:1,__:[55]},8,["loading"])])]),default:u(()=>{var n;return[e("div",Jt,[e("div",Kt,[t[53]||(t[53]=e("div",{class:"flex-shrink-0"},[e("svg",{class:"h-6 w-6 text-red-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L4.268 16.5c-.77.833.192 2.5 1.732 2.5z"})])],-1)),e("div",Qt,[t[52]||(t[52]=e("h3",{class:"text-lg font-medium text-gray-900"},"Delete Schedule",-1)),e("div",Xt,[e("p",es,' Are you sure you want to delete "'+l((n=s.value)==null?void 0:n.name)+'"? This action cannot be undone and will remove all associated work orders and history. ',1)])])])])]}),_:1},8,["modelValue"])]),_:1}))}};export{ds as default}; diff --git a/frontend/dist/assets/PreventiveMaintenanceListView-BhRxnL6J.js b/frontend/dist/assets/PreventiveMaintenanceListView-Dycb2ZSP.js similarity index 96% rename from frontend/dist/assets/PreventiveMaintenanceListView-BhRxnL6J.js rename to frontend/dist/assets/PreventiveMaintenanceListView-Dycb2ZSP.js index de9448a2..93da07e9 100644 --- a/frontend/dist/assets/PreventiveMaintenanceListView-BhRxnL6J.js +++ b/frontend/dist/assets/PreventiveMaintenanceListView-Dycb2ZSP.js @@ -1 +1 @@ -import{r as u,c as h,o as st,i as W,w as r,v as ot,s as nt,g as v,b as t,d as n,e as l,F as g,h as Y,t as i,a as y,j as k,k as m,ae as T,n as rt,aU as E}from"./index-BUdRbiwj.js";import{u as it,a as ut}from"./usePreventiveMaintenanceDisplay-Bhncwa9c.js";import{u as dt}from"./useFormAutoSave-Jaawgo91.js";import{u as ct,a as vt}from"./usePreventiveMaintenanceOperations-LTA5pnar.js";import{l as mt}from"./lodash-RqMXHFU9.js";import{F as pt,a as ft}from"./FPPageHeader-CTG2L28r.js";import{F as V}from"./FPInput-CzR_dWoe.js";import{F as D}from"./FPSelect-C7p47Ma2.js";import{F as gt}from"./FPStats-BGfZcDZc.js";import{F as yt}from"./FPTable-CU8C_NYc.js";import{F as ie}from"./FPModal-DWGF1LV8.js";import{F as ue}from"./FPBadge-BKY5dPnL.js";import{F as de}from"./FPTabs-R71V25QN.js";import{_ as ht}from"./FormRestoreNotification-DYBlXhOP.js";import"./_commonjsHelpers-NT8qMgGI.js";import"./FPCard-qHzcEQAE.js";const bt={class:"p-6"},xt={class:"mb-6 grid grid-cols-1 md:grid-cols-4 gap-4"},kt={class:"bg-white shadow rounded-lg overflow-hidden"},St={class:"flex items-center space-x-3"},Vt={class:"font-medium text-gray-900"},Dt={class:"text-sm text-gray-500"},wt={class:"text-sm text-gray-900"},Ct={class:"text-sm"},It={class:"text-gray-900"},Mt={class:"text-gray-500"},qt={class:"flex items-center space-x-2"},Ft={key:0,class:"text-xs text-red-600"},Pt={class:"text-sm text-gray-900"},_t={class:"flex items-center space-x-2"},Ut={class:"border-b border-gray-200 mb-6"},Tt={key:0,class:"space-y-6"},Et={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},Ot={class:"md:col-span-2"},At={key:0,class:"mt-1 text-sm text-red-600"},Lt={key:1,class:"space-y-6"},zt={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},Bt={class:"bg-blue-50 border border-blue-200 rounded-lg p-4"},Nt={class:"text-sm text-blue-700"},Ht={key:2,class:"space-y-6"},Rt={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},jt={key:3,class:"space-y-6"},Wt={class:"space-y-4"},Yt={class:"flex items-center justify-between"},Gt={class:"flex items-center space-x-4"},$t={key:0,class:"flex items-center text-sm text-gray-500"},Qt={key:0,class:"w-4 h-4 mr-2 text-amber-500 animate-pulse",fill:"currentColor",viewBox:"0 0 20 20"},Jt={key:1,class:"w-4 h-4 mr-2 text-green-500",fill:"currentColor",viewBox:"0 0 20 20"},Kt={key:2},Xt={key:3},Zt={class:"flex space-x-3"},ea={class:"space-y-4"},ta={class:"bg-gray-50 rounded-lg p-4"},aa={class:"font-medium text-gray-900"},la={class:"text-sm text-gray-600 mt-1"},sa={class:"text-sm text-gray-600"},oa={class:"flex justify-end space-x-3"},Va={__name:"PreventiveMaintenanceListView",setup(na){const ce=ot();nt();const b=it(),{processScheduleData:ve,validateSchedule:me,calculateScheduleStatus:G,calculateOverdueDays:$}=ct(),{formatFrequency:Q,getPriorityVariant:pe,getStatusVariant:fe,formatPriority:ge,formatStatus:ye,formatDate:he,formatRelativeTime:be,formatDuration:J,formatAssetDisplay:K,getOverdueIndicator:X,formatMaintenanceStats:xe,getScheduleTableColumns:ke,getScheduleTabs:Se}=ut(),{submitSchedule:Ve,handleScheduleRefresh:De,handleWorkOrderGeneration:we,handleScheduleSearch:Z,handleSchedulePagination:Ce,handleScheduleSorting:Ie}=vt(b),o=u({name:"",assetId:null,priority:"MEDIUM",frequency:"MONTHLY",frequencyValue:1,estimatedDuration:60,description:"",instructions:"",notes:"",requiredParts:"",nextDue:"",status:"ACTIVE"}),p=u({}),f=u("basic"),{hasUnsavedChanges:C,lastSaveTime:P,restoreFormData:Me,clearSavedData:O,hasSavedData:ee,getSavedDataInfo:qe,markUserInteraction:Fe}=dt(o,{storageKey:"atlas_schedule_form_data",saveInterval:3e3,excludeFields:[]}),I=u(!1),te=u(null),A=u("all"),d=u({search:"",priority:"",frequency:"",assetId:null}),M=u(!1),_=u("create"),x=u(null),q=u(!1),L=u(!1),z=u(!1),S=u({scheduledDate:"",notes:""}),Pe=h(()=>b.loading),_e=h(()=>b.filteredSchedules),ae=h(()=>b.inventoryStats),B=h(()=>_.value==="edit"),Ue=h(()=>xe(ae.value)),Te=h(()=>P.value?new Date(P.value).toLocaleTimeString():""),Ee=h(()=>Se(ae.value)),Oe=h(()=>{var s,e;return{currentPage:(((s=b.searchCriteria)==null?void 0:s.page)||0)+1,totalPages:b.totalPages||0,totalItems:b.totalElements||0,pageSize:((e=b.searchCriteria)==null?void 0:e.size)||10}}),w=[{key:"basic",label:"Basic Information",icon:"info"},{key:"frequency",label:"Frequency & Scheduling",icon:"calendar"},{key:"preventive",label:"Preventive Maintenance",icon:"cog"},{key:"details",label:"Instructions & Details",icon:"document"}],Ae=h(()=>w.findIndex(e=>e.key===f.value)===w.length-1),Le=h(()=>ke(!1)),le=[{label:"Low",value:"LOW"},{label:"Medium",value:"MEDIUM"},{label:"High",value:"HIGH"},{label:"Critical",value:"CRITICAL"}],se=[{label:"Daily",value:"DAILY"},{label:"Weekly",value:"WEEKLY"},{label:"Monthly",value:"MONTHLY"},{label:"Quarterly",value:"QUARTERLY"},{label:"Yearly",value:"YEARLY"}],ze=[{label:"Active",value:"ACTIVE"},{label:"Paused",value:"PAUSED"},{label:"Inactive",value:"INACTIVE"}],oe=u([{label:"HVAC Unit #1",value:1},{label:"Generator #1",value:2},{label:"Elevator A",value:3},{label:"Boiler #1",value:4}]),Be=mt.debounce(s=>{Z(s,d.value)},300),U=()=>{Z(d.value.search,{priority:d.value.priority,frequency:d.value.frequency,assetId:d.value.assetId})},Ne=s=>{A.value=s,d.value.status=s==="all"?"":s,U()},He=s=>{Ie(s)},Re=s=>{Ce(s)},je=s=>{ne(s)},N=async()=>{await De()},We=()=>{x.value=null,_.value="create",Ye(),ee()||H(),M.value=!0},Ye=()=>{_.value==="create"&&ee()&&(te.value=qe(),I.value=!0,console.log("✅ Found saved schedule data, showing restore notification"))},ne=s=>{ce.push(`/maintenance/preventive/${s.id}`)},Ge=s=>{x.value=s,_.value="edit",$e(s),M.value=!0},$e=s=>{o.value={name:s.name||"",assetId:s.assetId||null,priority:s.priority||"MEDIUM",frequency:s.frequency||"MONTHLY",frequencyValue:s.frequencyValue||1,estimatedDuration:s.estimatedDuration||60,description:s.description||"",instructions:s.instructions||"",notes:s.notes||"",requiredParts:s.requiredParts||"",nextDue:s.nextDue?new Date(s.nextDue).toISOString().slice(0,16):"",status:s.status||"ACTIVE"}},H=()=>{o.value={name:"",assetId:null,priority:"MEDIUM",frequency:"MONTHLY",frequencyValue:1,estimatedDuration:60,description:"",instructions:"",notes:"",requiredParts:"",nextDue:"",status:"ACTIVE"},p.value={},f.value="basic"},R=()=>{O(),M.value=!1,x.value=null,H(),I.value=!1},Qe=async()=>{var s;L.value=!0;try{(await Ve({validateForm:()=>me(o.value),validateBusinessRules:()=>!0,getFormData:()=>o.value,processScheduleData:ve,isEditMode:B.value,scheduleId:(s=x.value)==null?void 0:s.id})).success&&(O(),R(),await N())}finally{L.value=!1}},Je=s=>{c();{const e=w.findIndex(a=>a.key===f.value);e{x.value=s,S.value={scheduledDate:s.nextDue?new Date(s.nextDue).toISOString().slice(0,16):"",notes:""},q.value=!0},Xe=async()=>{z.value=!0;try{(await we(x.value.id,{scheduledDate:new Date(S.value.scheduledDate),notes:S.value.notes})).success&&(q.value=!1,await N())}finally{z.value=!1}},Ze=async()=>{console.log("Exporting schedules...")},et=()=>!o.value.frequency||!o.value.frequencyValue?"Select frequency to see preview":Q(o.value.frequency,o.value.frequencyValue),c=()=>{console.log("🔥 Schedule user interaction detected!"),console.log("Form data before interaction:",o.value),console.log("hasUnsavedChanges before:",C.value),Fe(),console.log("hasUnsavedChanges after:",C.value)},tt=()=>{Me(),I.value=!1,console.log("Schedule form data restored successfully")},at=()=>{O(),I.value=!1,H(),console.log("Schedule auto-saved data dismissed")},lt=s=>{f.value=s,c()};return st(async()=>{await b.initializeSchedules()}),(s,e)=>(v(),W(pt,null,{header:r(()=>[n(ft,{title:"Maintenance Management",description:"Create and manage maintenance schedules - from quick tasks to comprehensive preventive maintenance programs",breadcrumbs:[{text:"Maintenance",to:null}]},{actions:r(()=>[n(l(g),{variant:"outline",size:"sm",onClick:Ze},{default:r(()=>e[24]||(e[24]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1),m(" Export ",-1)])),_:1,__:[24]}),n(l(g),{variant:"outline",size:"sm",onClick:N},{default:r(()=>e[25]||(e[25]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),m(" Refresh ",-1)])),_:1,__:[25]}),n(l(g),{variant:"primary",size:"sm",onClick:We},{default:r(()=>e[26]||(e[26]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),m(" Create Maintenance ",-1)])),_:1,__:[26]})]),stats:r(()=>[n(l(gt),{stats:Ue.value},null,8,["stats"])]),tabs:r(()=>[n(l(de),{modelValue:A.value,"onUpdate:modelValue":e[0]||(e[0]=a=>A.value=a),tabs:Ee.value,onTabChange:Ne},null,8,["modelValue","tabs"])]),_:1})]),default:r(()=>[t("div",bt,[t("div",xt,[n(l(V),{modelValue:d.value.search,"onUpdate:modelValue":e[1]||(e[1]=a=>d.value.search=a),placeholder:"Search schedules...",onInput:l(Be)},{prepend:r(()=>e[27]||(e[27]=[t("svg",{class:"w-4 h-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1)])),_:1},8,["modelValue","onInput"]),n(l(D),{modelValue:d.value.priority,"onUpdate:modelValue":[e[2]||(e[2]=a=>d.value.priority=a),U],placeholder:"Filter by Priority",options:le},null,8,["modelValue"]),n(l(D),{modelValue:d.value.frequency,"onUpdate:modelValue":[e[3]||(e[3]=a=>d.value.frequency=a),U],placeholder:"Filter by Frequency",options:se},null,8,["modelValue"]),n(l(D),{modelValue:d.value.assetId,"onUpdate:modelValue":[e[4]||(e[4]=a=>d.value.assetId=a),U],placeholder:"Filter by Asset",options:oe.value},null,8,["modelValue","options"])]),t("div",kt,[n(l(yt),{columns:Le.value,data:_e.value,loading:Pe.value,pagination:Oe.value,"empty-message":"No maintenance schedules found",onSortChange:He,onPageChange:Re,onRowClick:je},{"column-name":r(({row:a})=>[t("div",St,[e[28]||(e[28]=t("div",{class:"w-8 h-8 bg-green-100 rounded-lg flex items-center justify-center"},[t("svg",{class:"w-4 h-4 text-green-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5H7a2 2 0 00-2 2v10a2 2 0 002 2h8a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01"})])],-1)),t("div",null,[t("h4",Vt,i(a.name),1),t("p",Dt,i(l(K)(a.assetName||a.asset)),1)])])]),"column-frequency":r(({row:a})=>[t("div",wt,i(l(Q)(a.frequency,a.frequencyValue)),1)]),"column-priority":r(({row:a})=>[n(l(ue),{variant:l(pe)(a.priority)},{default:r(()=>[m(i(l(ge)(a.priority)),1)]),_:2},1032,["variant"])]),"column-nextDue":r(({row:a})=>[t("div",Ct,[t("div",It,i(l(he)(a.nextDue)),1),t("div",Mt,i(l(be)(a.nextDue)),1)])]),"column-status":r(({row:a})=>[t("div",qt,[n(l(ue),{variant:l(fe)(l(G)(a))},{default:r(()=>[m(i(l(ye)(l(G)(a))),1)]),_:2},1032,["variant"]),l(X)(l($)(a)).show?(v(),y("div",Ft,i(l(X)(l($)(a)).text),1)):k("",!0)])]),"column-estimatedDuration":r(({row:a})=>[t("div",Pt,i(l(J)(a.estimatedDuration)),1)]),"column-actions":r(({row:a})=>[t("div",_t,[n(l(g),{variant:"ghost",size:"xs",onClick:Y(F=>ne(a),["stop"]),title:"View Details"},{default:r(()=>e[29]||(e[29]=[t("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"}),t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"})],-1)])),_:2,__:[29]},1032,["onClick"]),n(l(g),{variant:"ghost",size:"xs",onClick:Y(F=>Ge(a),["stop"]),title:"Edit Schedule"},{default:r(()=>e[30]||(e[30]=[t("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1)])),_:2,__:[30]},1032,["onClick"]),n(l(g),{variant:"ghost",size:"xs",onClick:Y(F=>Ke(a),["stop"]),title:"Generate Work Order",class:"text-blue-600 hover:text-blue-700"},{default:r(()=>e[31]||(e[31]=[t("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5H7a2 2 0 00-2 2v10a2 2 0 002 2h8a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"})],-1)])),_:2,__:[31]},1032,["onClick"])])]),_:1},8,["columns","data","loading","pagination"])]),n(l(ie),{modelValue:M.value,"onUpdate:modelValue":e[19]||(e[19]=a=>M.value=a),title:B.value?"Edit Schedule":"Create Schedule",size:"xl",onCancel:R},{footer:r(()=>[t("div",Yt,[t("div",Gt,[l(C)||l(P)?(v(),y("div",$t,[l(C)?(v(),y("svg",Qt,e[41]||(e[41]=[t("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z","clip-rule":"evenodd"},null,-1)]))):(v(),y("svg",Jt,e[42]||(e[42]=[t("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z","clip-rule":"evenodd"},null,-1)]))),l(C)?(v(),y("span",Kt,"Auto-saving...")):l(P)?(v(),y("span",Xt,"Last saved "+i(Te.value),1)):k("",!0)])):k("",!0)]),t("div",Zt,[n(l(g),{variant:"secondary",onClick:R},{default:r(()=>e[43]||(e[43]=[m(" Cancel ",-1)])),_:1,__:[43]}),Ae.value?(v(),W(l(g),{key:1,variant:"primary",loading:L.value,onClick:Qe},{default:r(()=>[m(i(B.value?"Update Schedule":"Create Schedule"),1)]),_:1},8,["loading"])):(v(),W(l(g),{key:0,variant:"primary",onClick:e[18]||(e[18]=a=>Je("next"))},{default:r(()=>e[44]||(e[44]=[m(" Next ",-1)])),_:1,__:[44]}))])])]),default:r(()=>[n(l(ht),{visible:I.value,"saved-data-info":te.value,onRestore:tt,onDismiss:at},null,8,["visible","saved-data-info"]),t("div",Ut,[n(l(de),{modelValue:f.value,"onUpdate:modelValue":e[5]||(e[5]=a=>f.value=a),tabs:w,onTabChange:lt},null,8,["modelValue"])]),f.value==="basic"?(v(),y("div",Tt,[e[33]||(e[33]=t("div",{class:"mb-4 p-4 bg-blue-50 border border-blue-200 rounded-lg"},[t("p",{class:"text-sm text-blue-700"},[t("strong",null,"Quick Entry:"),m(" Fill out these essential fields for a simple maintenance task. Use the additional tabs for advanced preventive maintenance features and detailed planning. ")])],-1)),t("div",Et,[n(l(V),{modelValue:o.value.name,"onUpdate:modelValue":e[6]||(e[6]=a=>o.value.name=a),label:"Schedule Name",placeholder:"Enter schedule name",required:"",error:p.value.name,onInput:c},null,8,["modelValue","error"]),n(l(D),{modelValue:o.value.assetId,"onUpdate:modelValue":e[7]||(e[7]=a=>o.value.assetId=a),label:"Asset",placeholder:"Select asset",options:oe.value,required:"",error:p.value.assetId,onChange:c},null,8,["modelValue","options","error"]),n(l(V),{modelValue:o.value.nextDue,"onUpdate:modelValue":e[8]||(e[8]=a=>o.value.nextDue=a),label:"Due Date",type:"datetime-local",required:"",error:p.value.nextDue,onInput:c},null,8,["modelValue","error"]),n(l(V),{modelValue:o.value.estimatedDuration,"onUpdate:modelValue":e[9]||(e[9]=a=>o.value.estimatedDuration=a),label:"Estimated Duration (minutes)",placeholder:"60",type:"number",error:p.value.estimatedDuration,onInput:c},null,8,["modelValue","error"]),t("div",Ot,[e[32]||(e[32]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Description",-1)),T(t("textarea",{"onUpdate:modelValue":e[10]||(e[10]=a=>o.value.description=a),class:rt(["w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",{"border-red-300":p.value.description}]),placeholder:"Describe the maintenance schedule...",rows:"3",onInput:c},null,34),[[E,o.value.description]]),p.value.description?(v(),y("p",At,i(p.value.description),1)):k("",!0)])])])):k("",!0),f.value==="frequency"?(v(),y("div",Lt,[t("div",zt,[n(l(D),{modelValue:o.value.frequency,"onUpdate:modelValue":e[11]||(e[11]=a=>o.value.frequency=a),label:"Frequency",placeholder:"Select frequency",options:se,required:"",error:p.value.frequency,onChange:c},null,8,["modelValue","error"]),n(l(V),{modelValue:o.value.frequencyValue,"onUpdate:modelValue":e[12]||(e[12]=a=>o.value.frequencyValue=a),label:"Every",placeholder:"1",type:"number",min:"1",required:"",error:p.value.frequencyValue,onInput:c},null,8,["modelValue","error"]),e[34]||(e[34]=t("div",{class:"md:col-span-2"},[t("div",{class:"bg-gray-50 border border-gray-200 rounded-lg p-4"},[t("p",{class:"text-sm text-gray-600"},[t("strong",null,"Note:"),m(" For one-time maintenance tasks, you can skip the frequency settings above. The due date is set in the Basic Information tab. ")])])],-1))]),t("div",Bt,[e[35]||(e[35]=t("h4",{class:"text-sm font-medium text-blue-900 mb-2"},"Frequency Preview",-1)),t("p",Nt,i(et()),1)])])):k("",!0),f.value==="preventive"?(v(),y("div",Ht,[e[36]||(e[36]=t("div",{class:"mb-4 p-4 bg-green-50 border border-green-200 rounded-lg"},[t("p",{class:"text-sm text-green-700"},[t("strong",null,"Preventive Maintenance:"),m(" Configure these settings to create a comprehensive preventive maintenance program with automated scheduling and advanced tracking. ")])],-1)),t("div",Rt,[n(l(D),{modelValue:o.value.priority,"onUpdate:modelValue":e[13]||(e[13]=a=>o.value.priority=a),label:"Priority Level",placeholder:"Select priority",options:le,error:p.value.priority,onChange:c},null,8,["modelValue","error"]),n(l(D),{modelValue:o.value.status,"onUpdate:modelValue":e[14]||(e[14]=a=>o.value.status=a),label:"Schedule Status",placeholder:"Select status",options:ze,error:p.value.status,onChange:c},null,8,["modelValue","error"])]),e[37]||(e[37]=t("div",{class:"bg-amber-50 border border-amber-200 rounded-lg p-4"},[t("h4",{class:"text-sm font-medium text-amber-900 mb-2"},"Preventive Maintenance Benefits"),t("ul",{class:"text-sm text-amber-700 space-y-1"},[t("li",null,"• Automated recurring schedules based on frequency settings"),t("li",null,"• Priority-based work order generation"),t("li",null,"• Advanced tracking and compliance reporting"),t("li",null,"• Integration with inventory and parts management")])],-1))])):k("",!0),f.value==="details"?(v(),y("div",jt,[t("div",Wt,[t("div",null,[e[38]||(e[38]=t("label",{class:"block text-sm font-medium text-gray-700 mb-2"}," Maintenance Instructions ",-1)),T(t("textarea",{"onUpdate:modelValue":e[15]||(e[15]=a=>o.value.instructions=a),class:"w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",placeholder:"Step-by-step maintenance instructions...",rows:"4",onInput:c},null,544),[[E,o.value.instructions]])]),t("div",null,[e[39]||(e[39]=t("label",{class:"block text-sm font-medium text-gray-700 mb-2"}," Additional Notes ",-1)),T(t("textarea",{"onUpdate:modelValue":e[16]||(e[16]=a=>o.value.notes=a),class:"w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",placeholder:"Additional notes, safety requirements, etc.",rows:"3",onInput:c},null,544),[[E,o.value.notes]])]),t("div",null,[e[40]||(e[40]=t("label",{class:"block text-sm font-medium text-gray-700 mb-2"}," Required Parts (Optional) ",-1)),T(t("textarea",{"onUpdate:modelValue":e[17]||(e[17]=a=>o.value.requiredParts=a),class:"w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",placeholder:"List required parts and quantities...",rows:"2",onInput:c},null,544),[[E,o.value.requiredParts]])])])])):k("",!0)]),_:1},8,["modelValue","title"]),n(l(ie),{modelValue:q.value,"onUpdate:modelValue":e[23]||(e[23]=a=>q.value=a),title:"Generate Work Order",size:"md"},{footer:r(()=>[t("div",oa,[n(l(g),{variant:"secondary",onClick:e[22]||(e[22]=a=>q.value=!1)},{default:r(()=>e[45]||(e[45]=[m(" Cancel ",-1)])),_:1,__:[45]}),n(l(g),{variant:"primary",loading:z.value,onClick:Xe},{default:r(()=>e[46]||(e[46]=[m(" Generate Work Order ",-1)])),_:1,__:[46]},8,["loading"])])]),default:r(()=>{var a,F,re;return[t("div",ea,[t("div",ta,[t("h4",aa,i((a=x.value)==null?void 0:a.name),1),t("p",la,i(l(K)((F=x.value)==null?void 0:F.assetName)),1),t("p",sa,"Estimated Duration: "+i(l(J)((re=x.value)==null?void 0:re.estimatedDuration)),1)]),n(l(V),{modelValue:S.value.scheduledDate,"onUpdate:modelValue":e[20]||(e[20]=j=>S.value.scheduledDate=j),label:"Scheduled Date",type:"datetime-local",required:""},null,8,["modelValue"]),n(l(V),{modelValue:S.value.notes,"onUpdate:modelValue":e[21]||(e[21]=j=>S.value.notes=j),label:"Work Order Notes",type:"textarea",placeholder:"Additional notes for this work order...",rows:"3"},null,8,["modelValue"])])]}),_:1},8,["modelValue"])])]),_:1}))}};export{Va as default}; +import{r as u,c as h,o as st,i as W,w as r,v as ot,s as nt,g as v,b as t,d as n,e as l,F as g,h as Y,t as i,a as y,j as k,k as m,ae as T,n as rt,aV as E}from"./index-QAlcqU00.js";import{u as it,a as ut}from"./usePreventiveMaintenanceDisplay-DE1jAbPb.js";import{u as dt}from"./useFormAutoSave-BrW9Wl2Q.js";import{u as ct,a as vt}from"./usePreventiveMaintenanceOperations-Dd7Aro2G.js";import{l as mt}from"./lodash-RqMXHFU9.js";import{F as pt,a as ft}from"./FPPageHeader-CFIwZZgQ.js";import{F as V}from"./FPInput-D5RURom0.js";import{F as D}from"./FPSelect-j7n_x8eB.js";import{F as gt}from"./FPStats-DOY0PQQF.js";import{F as yt}from"./FPTable-CWvngIYd.js";import{F as ie}from"./FPModal-DMoPysvU.js";import{F as ue}from"./FPBadge-DvOitM1C.js";import{F as de}from"./FPTabs-qq-Tmb7J.js";import{_ as ht}from"./FormRestoreNotification-2Wflg1mH.js";import"./_commonjsHelpers-NT8qMgGI.js";import"./FPCard-AB6NRXg5.js";const bt={class:"p-6"},xt={class:"mb-6 grid grid-cols-1 md:grid-cols-4 gap-4"},kt={class:"bg-white shadow rounded-lg overflow-hidden"},St={class:"flex items-center space-x-3"},Vt={class:"font-medium text-gray-900"},Dt={class:"text-sm text-gray-500"},wt={class:"text-sm text-gray-900"},Ct={class:"text-sm"},It={class:"text-gray-900"},Mt={class:"text-gray-500"},qt={class:"flex items-center space-x-2"},Ft={key:0,class:"text-xs text-red-600"},Pt={class:"text-sm text-gray-900"},_t={class:"flex items-center space-x-2"},Ut={class:"border-b border-gray-200 mb-6"},Tt={key:0,class:"space-y-6"},Et={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},Ot={class:"md:col-span-2"},At={key:0,class:"mt-1 text-sm text-red-600"},Lt={key:1,class:"space-y-6"},zt={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},Bt={class:"bg-blue-50 border border-blue-200 rounded-lg p-4"},Nt={class:"text-sm text-blue-700"},Ht={key:2,class:"space-y-6"},Rt={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},jt={key:3,class:"space-y-6"},Wt={class:"space-y-4"},Yt={class:"flex items-center justify-between"},Gt={class:"flex items-center space-x-4"},$t={key:0,class:"flex items-center text-sm text-gray-500"},Qt={key:0,class:"w-4 h-4 mr-2 text-amber-500 animate-pulse",fill:"currentColor",viewBox:"0 0 20 20"},Jt={key:1,class:"w-4 h-4 mr-2 text-green-500",fill:"currentColor",viewBox:"0 0 20 20"},Kt={key:2},Xt={key:3},Zt={class:"flex space-x-3"},ea={class:"space-y-4"},ta={class:"bg-gray-50 rounded-lg p-4"},aa={class:"font-medium text-gray-900"},la={class:"text-sm text-gray-600 mt-1"},sa={class:"text-sm text-gray-600"},oa={class:"flex justify-end space-x-3"},Va={__name:"PreventiveMaintenanceListView",setup(na){const ce=ot();nt();const b=it(),{processScheduleData:ve,validateSchedule:me,calculateScheduleStatus:G,calculateOverdueDays:$}=ct(),{formatFrequency:Q,getPriorityVariant:pe,getStatusVariant:fe,formatPriority:ge,formatStatus:ye,formatDate:he,formatRelativeTime:be,formatDuration:J,formatAssetDisplay:K,getOverdueIndicator:X,formatMaintenanceStats:xe,getScheduleTableColumns:ke,getScheduleTabs:Se}=ut(),{submitSchedule:Ve,handleScheduleRefresh:De,handleWorkOrderGeneration:we,handleScheduleSearch:Z,handleSchedulePagination:Ce,handleScheduleSorting:Ie}=vt(b),o=u({name:"",assetId:null,priority:"MEDIUM",frequency:"MONTHLY",frequencyValue:1,estimatedDuration:60,description:"",instructions:"",notes:"",requiredParts:"",nextDue:"",status:"ACTIVE"}),p=u({}),f=u("basic"),{hasUnsavedChanges:C,lastSaveTime:P,restoreFormData:Me,clearSavedData:O,hasSavedData:ee,getSavedDataInfo:qe,markUserInteraction:Fe}=dt(o,{storageKey:"atlas_schedule_form_data",saveInterval:3e3,excludeFields:[]}),I=u(!1),te=u(null),A=u("all"),d=u({search:"",priority:"",frequency:"",assetId:null}),M=u(!1),_=u("create"),x=u(null),q=u(!1),L=u(!1),z=u(!1),S=u({scheduledDate:"",notes:""}),Pe=h(()=>b.loading),_e=h(()=>b.filteredSchedules),ae=h(()=>b.inventoryStats),B=h(()=>_.value==="edit"),Ue=h(()=>xe(ae.value)),Te=h(()=>P.value?new Date(P.value).toLocaleTimeString():""),Ee=h(()=>Se(ae.value)),Oe=h(()=>{var s,e;return{currentPage:(((s=b.searchCriteria)==null?void 0:s.page)||0)+1,totalPages:b.totalPages||0,totalItems:b.totalElements||0,pageSize:((e=b.searchCriteria)==null?void 0:e.size)||10}}),w=[{key:"basic",label:"Basic Information",icon:"info"},{key:"frequency",label:"Frequency & Scheduling",icon:"calendar"},{key:"preventive",label:"Preventive Maintenance",icon:"cog"},{key:"details",label:"Instructions & Details",icon:"document"}],Ae=h(()=>w.findIndex(e=>e.key===f.value)===w.length-1),Le=h(()=>ke(!1)),le=[{label:"Low",value:"LOW"},{label:"Medium",value:"MEDIUM"},{label:"High",value:"HIGH"},{label:"Critical",value:"CRITICAL"}],se=[{label:"Daily",value:"DAILY"},{label:"Weekly",value:"WEEKLY"},{label:"Monthly",value:"MONTHLY"},{label:"Quarterly",value:"QUARTERLY"},{label:"Yearly",value:"YEARLY"}],ze=[{label:"Active",value:"ACTIVE"},{label:"Paused",value:"PAUSED"},{label:"Inactive",value:"INACTIVE"}],oe=u([{label:"HVAC Unit #1",value:1},{label:"Generator #1",value:2},{label:"Elevator A",value:3},{label:"Boiler #1",value:4}]),Be=mt.debounce(s=>{Z(s,d.value)},300),U=()=>{Z(d.value.search,{priority:d.value.priority,frequency:d.value.frequency,assetId:d.value.assetId})},Ne=s=>{A.value=s,d.value.status=s==="all"?"":s,U()},He=s=>{Ie(s)},Re=s=>{Ce(s)},je=s=>{ne(s)},N=async()=>{await De()},We=()=>{x.value=null,_.value="create",Ye(),ee()||H(),M.value=!0},Ye=()=>{_.value==="create"&&ee()&&(te.value=qe(),I.value=!0,console.log("✅ Found saved schedule data, showing restore notification"))},ne=s=>{ce.push(`/maintenance/preventive/${s.id}`)},Ge=s=>{x.value=s,_.value="edit",$e(s),M.value=!0},$e=s=>{o.value={name:s.name||"",assetId:s.assetId||null,priority:s.priority||"MEDIUM",frequency:s.frequency||"MONTHLY",frequencyValue:s.frequencyValue||1,estimatedDuration:s.estimatedDuration||60,description:s.description||"",instructions:s.instructions||"",notes:s.notes||"",requiredParts:s.requiredParts||"",nextDue:s.nextDue?new Date(s.nextDue).toISOString().slice(0,16):"",status:s.status||"ACTIVE"}},H=()=>{o.value={name:"",assetId:null,priority:"MEDIUM",frequency:"MONTHLY",frequencyValue:1,estimatedDuration:60,description:"",instructions:"",notes:"",requiredParts:"",nextDue:"",status:"ACTIVE"},p.value={},f.value="basic"},R=()=>{O(),M.value=!1,x.value=null,H(),I.value=!1},Qe=async()=>{var s;L.value=!0;try{(await Ve({validateForm:()=>me(o.value),validateBusinessRules:()=>!0,getFormData:()=>o.value,processScheduleData:ve,isEditMode:B.value,scheduleId:(s=x.value)==null?void 0:s.id})).success&&(O(),R(),await N())}finally{L.value=!1}},Je=s=>{c();{const e=w.findIndex(a=>a.key===f.value);e{x.value=s,S.value={scheduledDate:s.nextDue?new Date(s.nextDue).toISOString().slice(0,16):"",notes:""},q.value=!0},Xe=async()=>{z.value=!0;try{(await we(x.value.id,{scheduledDate:new Date(S.value.scheduledDate),notes:S.value.notes})).success&&(q.value=!1,await N())}finally{z.value=!1}},Ze=async()=>{console.log("Exporting schedules...")},et=()=>!o.value.frequency||!o.value.frequencyValue?"Select frequency to see preview":Q(o.value.frequency,o.value.frequencyValue),c=()=>{console.log("🔥 Schedule user interaction detected!"),console.log("Form data before interaction:",o.value),console.log("hasUnsavedChanges before:",C.value),Fe(),console.log("hasUnsavedChanges after:",C.value)},tt=()=>{Me(),I.value=!1,console.log("Schedule form data restored successfully")},at=()=>{O(),I.value=!1,H(),console.log("Schedule auto-saved data dismissed")},lt=s=>{f.value=s,c()};return st(async()=>{await b.initializeSchedules()}),(s,e)=>(v(),W(pt,null,{header:r(()=>[n(ft,{title:"Maintenance Management",description:"Create and manage maintenance schedules - from quick tasks to comprehensive preventive maintenance programs",breadcrumbs:[{text:"Maintenance",to:null}]},{actions:r(()=>[n(l(g),{variant:"outline",size:"sm",onClick:Ze},{default:r(()=>e[24]||(e[24]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1),m(" Export ",-1)])),_:1,__:[24]}),n(l(g),{variant:"outline",size:"sm",onClick:N},{default:r(()=>e[25]||(e[25]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),m(" Refresh ",-1)])),_:1,__:[25]}),n(l(g),{variant:"primary",size:"sm",onClick:We},{default:r(()=>e[26]||(e[26]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),m(" Create Maintenance ",-1)])),_:1,__:[26]})]),stats:r(()=>[n(l(gt),{stats:Ue.value},null,8,["stats"])]),tabs:r(()=>[n(l(de),{modelValue:A.value,"onUpdate:modelValue":e[0]||(e[0]=a=>A.value=a),tabs:Ee.value,onTabChange:Ne},null,8,["modelValue","tabs"])]),_:1})]),default:r(()=>[t("div",bt,[t("div",xt,[n(l(V),{modelValue:d.value.search,"onUpdate:modelValue":e[1]||(e[1]=a=>d.value.search=a),placeholder:"Search schedules...",onInput:l(Be)},{prepend:r(()=>e[27]||(e[27]=[t("svg",{class:"w-4 h-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1)])),_:1},8,["modelValue","onInput"]),n(l(D),{modelValue:d.value.priority,"onUpdate:modelValue":[e[2]||(e[2]=a=>d.value.priority=a),U],placeholder:"Filter by Priority",options:le},null,8,["modelValue"]),n(l(D),{modelValue:d.value.frequency,"onUpdate:modelValue":[e[3]||(e[3]=a=>d.value.frequency=a),U],placeholder:"Filter by Frequency",options:se},null,8,["modelValue"]),n(l(D),{modelValue:d.value.assetId,"onUpdate:modelValue":[e[4]||(e[4]=a=>d.value.assetId=a),U],placeholder:"Filter by Asset",options:oe.value},null,8,["modelValue","options"])]),t("div",kt,[n(l(yt),{columns:Le.value,data:_e.value,loading:Pe.value,pagination:Oe.value,"empty-message":"No maintenance schedules found",onSortChange:He,onPageChange:Re,onRowClick:je},{"column-name":r(({row:a})=>[t("div",St,[e[28]||(e[28]=t("div",{class:"w-8 h-8 bg-green-100 rounded-lg flex items-center justify-center"},[t("svg",{class:"w-4 h-4 text-green-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5H7a2 2 0 00-2 2v10a2 2 0 002 2h8a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01"})])],-1)),t("div",null,[t("h4",Vt,i(a.name),1),t("p",Dt,i(l(K)(a.assetName||a.asset)),1)])])]),"column-frequency":r(({row:a})=>[t("div",wt,i(l(Q)(a.frequency,a.frequencyValue)),1)]),"column-priority":r(({row:a})=>[n(l(ue),{variant:l(pe)(a.priority)},{default:r(()=>[m(i(l(ge)(a.priority)),1)]),_:2},1032,["variant"])]),"column-nextDue":r(({row:a})=>[t("div",Ct,[t("div",It,i(l(he)(a.nextDue)),1),t("div",Mt,i(l(be)(a.nextDue)),1)])]),"column-status":r(({row:a})=>[t("div",qt,[n(l(ue),{variant:l(fe)(l(G)(a))},{default:r(()=>[m(i(l(ye)(l(G)(a))),1)]),_:2},1032,["variant"]),l(X)(l($)(a)).show?(v(),y("div",Ft,i(l(X)(l($)(a)).text),1)):k("",!0)])]),"column-estimatedDuration":r(({row:a})=>[t("div",Pt,i(l(J)(a.estimatedDuration)),1)]),"column-actions":r(({row:a})=>[t("div",_t,[n(l(g),{variant:"ghost",size:"xs",onClick:Y(F=>ne(a),["stop"]),title:"View Details"},{default:r(()=>e[29]||(e[29]=[t("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"}),t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"})],-1)])),_:2,__:[29]},1032,["onClick"]),n(l(g),{variant:"ghost",size:"xs",onClick:Y(F=>Ge(a),["stop"]),title:"Edit Schedule"},{default:r(()=>e[30]||(e[30]=[t("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1)])),_:2,__:[30]},1032,["onClick"]),n(l(g),{variant:"ghost",size:"xs",onClick:Y(F=>Ke(a),["stop"]),title:"Generate Work Order",class:"text-blue-600 hover:text-blue-700"},{default:r(()=>e[31]||(e[31]=[t("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5H7a2 2 0 00-2 2v10a2 2 0 002 2h8a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"})],-1)])),_:2,__:[31]},1032,["onClick"])])]),_:1},8,["columns","data","loading","pagination"])]),n(l(ie),{modelValue:M.value,"onUpdate:modelValue":e[19]||(e[19]=a=>M.value=a),title:B.value?"Edit Schedule":"Create Schedule",size:"xl",onCancel:R},{footer:r(()=>[t("div",Yt,[t("div",Gt,[l(C)||l(P)?(v(),y("div",$t,[l(C)?(v(),y("svg",Qt,e[41]||(e[41]=[t("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z","clip-rule":"evenodd"},null,-1)]))):(v(),y("svg",Jt,e[42]||(e[42]=[t("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z","clip-rule":"evenodd"},null,-1)]))),l(C)?(v(),y("span",Kt,"Auto-saving...")):l(P)?(v(),y("span",Xt,"Last saved "+i(Te.value),1)):k("",!0)])):k("",!0)]),t("div",Zt,[n(l(g),{variant:"secondary",onClick:R},{default:r(()=>e[43]||(e[43]=[m(" Cancel ",-1)])),_:1,__:[43]}),Ae.value?(v(),W(l(g),{key:1,variant:"primary",loading:L.value,onClick:Qe},{default:r(()=>[m(i(B.value?"Update Schedule":"Create Schedule"),1)]),_:1},8,["loading"])):(v(),W(l(g),{key:0,variant:"primary",onClick:e[18]||(e[18]=a=>Je("next"))},{default:r(()=>e[44]||(e[44]=[m(" Next ",-1)])),_:1,__:[44]}))])])]),default:r(()=>[n(l(ht),{visible:I.value,"saved-data-info":te.value,onRestore:tt,onDismiss:at},null,8,["visible","saved-data-info"]),t("div",Ut,[n(l(de),{modelValue:f.value,"onUpdate:modelValue":e[5]||(e[5]=a=>f.value=a),tabs:w,onTabChange:lt},null,8,["modelValue"])]),f.value==="basic"?(v(),y("div",Tt,[e[33]||(e[33]=t("div",{class:"mb-4 p-4 bg-blue-50 border border-blue-200 rounded-lg"},[t("p",{class:"text-sm text-blue-700"},[t("strong",null,"Quick Entry:"),m(" Fill out these essential fields for a simple maintenance task. Use the additional tabs for advanced preventive maintenance features and detailed planning. ")])],-1)),t("div",Et,[n(l(V),{modelValue:o.value.name,"onUpdate:modelValue":e[6]||(e[6]=a=>o.value.name=a),label:"Schedule Name",placeholder:"Enter schedule name",required:"",error:p.value.name,onInput:c},null,8,["modelValue","error"]),n(l(D),{modelValue:o.value.assetId,"onUpdate:modelValue":e[7]||(e[7]=a=>o.value.assetId=a),label:"Asset",placeholder:"Select asset",options:oe.value,required:"",error:p.value.assetId,onChange:c},null,8,["modelValue","options","error"]),n(l(V),{modelValue:o.value.nextDue,"onUpdate:modelValue":e[8]||(e[8]=a=>o.value.nextDue=a),label:"Due Date",type:"datetime-local",required:"",error:p.value.nextDue,onInput:c},null,8,["modelValue","error"]),n(l(V),{modelValue:o.value.estimatedDuration,"onUpdate:modelValue":e[9]||(e[9]=a=>o.value.estimatedDuration=a),label:"Estimated Duration (minutes)",placeholder:"60",type:"number",error:p.value.estimatedDuration,onInput:c},null,8,["modelValue","error"]),t("div",Ot,[e[32]||(e[32]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Description",-1)),T(t("textarea",{"onUpdate:modelValue":e[10]||(e[10]=a=>o.value.description=a),class:rt(["w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",{"border-red-300":p.value.description}]),placeholder:"Describe the maintenance schedule...",rows:"3",onInput:c},null,34),[[E,o.value.description]]),p.value.description?(v(),y("p",At,i(p.value.description),1)):k("",!0)])])])):k("",!0),f.value==="frequency"?(v(),y("div",Lt,[t("div",zt,[n(l(D),{modelValue:o.value.frequency,"onUpdate:modelValue":e[11]||(e[11]=a=>o.value.frequency=a),label:"Frequency",placeholder:"Select frequency",options:se,required:"",error:p.value.frequency,onChange:c},null,8,["modelValue","error"]),n(l(V),{modelValue:o.value.frequencyValue,"onUpdate:modelValue":e[12]||(e[12]=a=>o.value.frequencyValue=a),label:"Every",placeholder:"1",type:"number",min:"1",required:"",error:p.value.frequencyValue,onInput:c},null,8,["modelValue","error"]),e[34]||(e[34]=t("div",{class:"md:col-span-2"},[t("div",{class:"bg-gray-50 border border-gray-200 rounded-lg p-4"},[t("p",{class:"text-sm text-gray-600"},[t("strong",null,"Note:"),m(" For one-time maintenance tasks, you can skip the frequency settings above. The due date is set in the Basic Information tab. ")])])],-1))]),t("div",Bt,[e[35]||(e[35]=t("h4",{class:"text-sm font-medium text-blue-900 mb-2"},"Frequency Preview",-1)),t("p",Nt,i(et()),1)])])):k("",!0),f.value==="preventive"?(v(),y("div",Ht,[e[36]||(e[36]=t("div",{class:"mb-4 p-4 bg-green-50 border border-green-200 rounded-lg"},[t("p",{class:"text-sm text-green-700"},[t("strong",null,"Preventive Maintenance:"),m(" Configure these settings to create a comprehensive preventive maintenance program with automated scheduling and advanced tracking. ")])],-1)),t("div",Rt,[n(l(D),{modelValue:o.value.priority,"onUpdate:modelValue":e[13]||(e[13]=a=>o.value.priority=a),label:"Priority Level",placeholder:"Select priority",options:le,error:p.value.priority,onChange:c},null,8,["modelValue","error"]),n(l(D),{modelValue:o.value.status,"onUpdate:modelValue":e[14]||(e[14]=a=>o.value.status=a),label:"Schedule Status",placeholder:"Select status",options:ze,error:p.value.status,onChange:c},null,8,["modelValue","error"])]),e[37]||(e[37]=t("div",{class:"bg-amber-50 border border-amber-200 rounded-lg p-4"},[t("h4",{class:"text-sm font-medium text-amber-900 mb-2"},"Preventive Maintenance Benefits"),t("ul",{class:"text-sm text-amber-700 space-y-1"},[t("li",null,"• Automated recurring schedules based on frequency settings"),t("li",null,"• Priority-based work order generation"),t("li",null,"• Advanced tracking and compliance reporting"),t("li",null,"• Integration with inventory and parts management")])],-1))])):k("",!0),f.value==="details"?(v(),y("div",jt,[t("div",Wt,[t("div",null,[e[38]||(e[38]=t("label",{class:"block text-sm font-medium text-gray-700 mb-2"}," Maintenance Instructions ",-1)),T(t("textarea",{"onUpdate:modelValue":e[15]||(e[15]=a=>o.value.instructions=a),class:"w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",placeholder:"Step-by-step maintenance instructions...",rows:"4",onInput:c},null,544),[[E,o.value.instructions]])]),t("div",null,[e[39]||(e[39]=t("label",{class:"block text-sm font-medium text-gray-700 mb-2"}," Additional Notes ",-1)),T(t("textarea",{"onUpdate:modelValue":e[16]||(e[16]=a=>o.value.notes=a),class:"w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",placeholder:"Additional notes, safety requirements, etc.",rows:"3",onInput:c},null,544),[[E,o.value.notes]])]),t("div",null,[e[40]||(e[40]=t("label",{class:"block text-sm font-medium text-gray-700 mb-2"}," Required Parts (Optional) ",-1)),T(t("textarea",{"onUpdate:modelValue":e[17]||(e[17]=a=>o.value.requiredParts=a),class:"w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",placeholder:"List required parts and quantities...",rows:"2",onInput:c},null,544),[[E,o.value.requiredParts]])])])])):k("",!0)]),_:1},8,["modelValue","title"]),n(l(ie),{modelValue:q.value,"onUpdate:modelValue":e[23]||(e[23]=a=>q.value=a),title:"Generate Work Order",size:"md"},{footer:r(()=>[t("div",oa,[n(l(g),{variant:"secondary",onClick:e[22]||(e[22]=a=>q.value=!1)},{default:r(()=>e[45]||(e[45]=[m(" Cancel ",-1)])),_:1,__:[45]}),n(l(g),{variant:"primary",loading:z.value,onClick:Xe},{default:r(()=>e[46]||(e[46]=[m(" Generate Work Order ",-1)])),_:1,__:[46]},8,["loading"])])]),default:r(()=>{var a,F,re;return[t("div",ea,[t("div",ta,[t("h4",aa,i((a=x.value)==null?void 0:a.name),1),t("p",la,i(l(K)((F=x.value)==null?void 0:F.assetName)),1),t("p",sa,"Estimated Duration: "+i(l(J)((re=x.value)==null?void 0:re.estimatedDuration)),1)]),n(l(V),{modelValue:S.value.scheduledDate,"onUpdate:modelValue":e[20]||(e[20]=j=>S.value.scheduledDate=j),label:"Scheduled Date",type:"datetime-local",required:""},null,8,["modelValue"]),n(l(V),{modelValue:S.value.notes,"onUpdate:modelValue":e[21]||(e[21]=j=>S.value.notes=j),label:"Work Order Notes",type:"textarea",placeholder:"Additional notes for this work order...",rows:"3"},null,8,["modelValue"])])]}),_:1},8,["modelValue"])])]),_:1}))}};export{Va as default}; diff --git a/frontend/dist/assets/PreventiveMaintenanceView-UjhmzhEW.js b/frontend/dist/assets/PreventiveMaintenanceView-DXXgUjJk.js similarity index 65% rename from frontend/dist/assets/PreventiveMaintenanceView-UjhmzhEW.js rename to frontend/dist/assets/PreventiveMaintenanceView-DXXgUjJk.js index 1f6a211f..5a01d744 100644 --- a/frontend/dist/assets/PreventiveMaintenanceView-UjhmzhEW.js +++ b/frontend/dist/assets/PreventiveMaintenanceView-DXXgUjJk.js @@ -1 +1 @@ -import{i as o,f as t,g as n}from"./index-BUdRbiwj.js";const s={__name:"PreventiveMaintenanceView",setup(r){return(a,c)=>{const e=t("router-view");return n(),o(e)}}};export{s as default}; +import{i as o,f as t,g as n}from"./index-QAlcqU00.js";const s={__name:"PreventiveMaintenanceView",setup(r){return(a,c)=>{const e=t("router-view");return n(),o(e)}}};export{s as default}; diff --git a/frontend/dist/assets/ProfileView-B6ls_uOw.js b/frontend/dist/assets/ProfileView-B9z7U8vB.js similarity index 87% rename from frontend/dist/assets/ProfileView-B6ls_uOw.js rename to frontend/dist/assets/ProfileView-B9z7U8vB.js index 813ff620..f2511fdf 100644 --- a/frontend/dist/assets/ProfileView-B6ls_uOw.js +++ b/frontend/dist/assets/ProfileView-B9z7U8vB.js @@ -1 +1 @@ -import{F as te,a as ae}from"./FPPageHeader-CTG2L28r.js";import{_ as le,r as c,c as oe,o as se,i as g,w as i,g as d,b as a,d as s,e as o,aR as ne,F as w,k as v,t as m,a as b,af as N,aQ as A,aW as D,j as F}from"./index-BUdRbiwj.js";import{F as u}from"./FPInput-CzR_dWoe.js";import{F as h}from"./FPCard-qHzcEQAE.js";import{F as V}from"./FPCheckbox-Bu8jNAEW.js";import{F as k}from"./FPSelect-C7p47Ma2.js";import{F as re}from"./FPModal-DWGF1LV8.js";import{F as ie}from"./FPBadge-BKY5dPnL.js";const de={class:"p-6"},ue={class:"max-w-4xl mx-auto space-y-8"},me={class:"flex items-start space-x-6"},ce={class:"flex flex-col items-center space-y-4"},pe={class:"flex-1 space-y-6"},ve={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},fe={class:"space-y-6"},ge={class:"p-4 border border-gray-200 rounded"},we={class:"flex items-center justify-between"},ye={class:"p-4 border border-gray-200 rounded"},xe={class:"flex items-center justify-between"},be={class:"text-sm text-gray-600"},he={class:"p-4 border border-gray-200 rounded"},Ve={class:"flex items-center justify-between mb-4"},ke={class:"text-sm text-gray-600"},Ce={class:"space-y-3"},_e={class:"flex items-center space-x-3"},Fe={class:"w-8 h-8 rounded bg-gray-100 flex items-center justify-center"},Me={class:"text-sm font-medium text-gray-900"},Pe={class:"text-xs text-gray-600"},Ye={class:"flex items-center space-x-2"},Ne={class:"space-y-6"},Ae={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},De={class:"space-y-4"},Te={class:"space-y-3"},Ue={class:"space-y-4"},Ee={class:"w-8 h-8 rounded-full bg-primary-100 flex items-center justify-center mt-1"},je={class:"flex-1"},ze={class:"text-sm text-gray-900"},Ie={class:"text-xs text-gray-600 mt-1"},Se={class:"space-y-4"},Be={__name:"ProfileView",setup(Le){const C=c(!1),y=c(!1),x=c(!1),l=c({firstName:"John",lastName:"Smith",email:"john.smith@facilityplus.com",phone:"(555) 123-4567",jobTitle:"Facility Manager",department:"Operations",bio:"Experienced facility manager with 10+ years in maintenance operations.",twoFactorEnabled:!1,preferences:{language:"en",timezone:"America/New_York",dateFormat:"MM/DD/YYYY",theme:"light",emailNotifications:!0,pushNotifications:!1,weeklyReports:!0,maintenanceReminders:!0}}),M=c({...l.value}),p=c({current:"",new:"",confirm:""}),f=c([{id:1,device:"Chrome on MacOS",location:"New York, NY",lastActive:"2024-01-20T10:00:00Z",current:!0},{id:2,device:"Safari on iPhone",location:"New York, NY",lastActive:"2024-01-19T15:30:00Z",current:!1},{id:3,device:"Firefox on Windows",location:"New York, NY",lastActive:"2024-01-18T09:00:00Z",current:!1}]),T=c([{id:1,type:"login",description:"Signed in from Chrome on MacOS",timestamp:"2024-01-20T10:00:00Z"},{id:2,type:"profile",description:"Updated profile information",timestamp:"2024-01-19T14:30:00Z"},{id:3,type:"password",description:"Changed account password",timestamp:"2024-01-15T11:00:00Z"},{id:4,type:"workorder",description:"Created work order WO-12345",timestamp:"2024-01-14T16:45:00Z"}]),U=[{title:"English",value:"en"},{title:"Spanish",value:"es"},{title:"French",value:"fr"}],E=[{title:"Eastern Time (ET)",value:"America/New_York"},{title:"Central Time (CT)",value:"America/Chicago"},{title:"Mountain Time (MT)",value:"America/Denver"},{title:"Pacific Time (PT)",value:"America/Los_Angeles"}],j=[{title:"MM/DD/YYYY",value:"MM/DD/YYYY"},{title:"DD/MM/YYYY",value:"DD/MM/YYYY"},{title:"YYYY-MM-DD",value:"YYYY-MM-DD"}],z=[{title:"Light",value:"light"},{title:"Dark",value:"dark"},{title:"Auto",value:"auto"}],I={template:''},S={template:''},B={template:''},P={template:''},L={template:''},R={template:''};oe(()=>{var t,_;const n=((t=l.value.firstName)==null?void 0:t[0])||"",e=((_=l.value.lastName)==null?void 0:_[0])||"";return(n+e).toUpperCase()});const r=()=>{y.value=!0},O=async()=>{C.value=!0,setTimeout(()=>{C.value=!1,y.value=!1,M.value={...l.value},console.log("Profile saved:",l.value)},1e3)},H=()=>{l.value={...M.value},y.value=!1},Z=({file:n,url:e})=>{console.log("Avatar uploaded:",n.name,e),l.value.avatar=e,r()},q=n=>{console.error("Avatar upload failed:",n)},W=()=>{l.value.twoFactorEnabled=!l.value.twoFactorEnabled,r()},J=n=>{const e=f.value.findIndex(t=>t.id===n);e>-1&&f.value.splice(e,1)},$=()=>{f.value=f.value.filter(n=>n.current)},Y=()=>{x.value=!1,p.value={current:"",new:"",confirm:""}},Q=()=>{console.log("Changing password..."),Y()},G=n=>n.includes("iPhone")||n.includes("Android")?S:I,K=n=>({login:B,profile:P,password:L,workorder:R})[n]||P,X=n=>new Date(n).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}),ee=n=>new Date(n).toLocaleString("en-US",{month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"2-digit"});return se(()=>{}),(n,e)=>(d(),g(te,null,{header:i(()=>[s(ae,{title:"Profile",description:"Manage your personal account settings and preferences",breadcrumbs:[{text:"Profile",to:null}]},{actions:i(()=>[y.value?(d(),g(o(w),{key:0,variant:"outline",size:"sm",onClick:H},{default:i(()=>e[20]||(e[20]=[v(" Cancel ",-1)])),_:1,__:[20]})):F("",!0),y.value?(d(),g(o(w),{key:1,variant:"primary",size:"sm",onClick:O,loading:C.value},{default:i(()=>e[21]||(e[21]=[v(" Save Changes ",-1)])),_:1,__:[21]},8,["loading"])):F("",!0)]),_:1})]),default:i(()=>[a("div",de,[a("div",ue,[s(o(h),{padding:"lg"},{default:i(()=>[a("div",me,[a("div",ce,[s(o(ne),{user:l.value,size:"2xl",editable:!0,onUpload:Z,onError:q},null,8,["user"]),e[22]||(e[22]=a("p",{class:"text-xs text-gray-500 text-center max-w-32"}," Click to upload a new photo or we'll use a random one from Pexels ",-1))]),a("div",pe,[a("div",ve,[s(o(u),{modelValue:l.value.firstName,"onUpdate:modelValue":e[0]||(e[0]=t=>l.value.firstName=t),label:"First Name",placeholder:"Enter first name",required:"",onInput:r},null,8,["modelValue"]),s(o(u),{modelValue:l.value.lastName,"onUpdate:modelValue":e[1]||(e[1]=t=>l.value.lastName=t),label:"Last Name",placeholder:"Enter last name",required:"",onInput:r},null,8,["modelValue"]),s(o(u),{modelValue:l.value.email,"onUpdate:modelValue":e[2]||(e[2]=t=>l.value.email=t),label:"Email Address",type:"email",placeholder:"Enter email",required:"",onInput:r},null,8,["modelValue"]),s(o(u),{modelValue:l.value.phone,"onUpdate:modelValue":e[3]||(e[3]=t=>l.value.phone=t),label:"Phone Number",type:"tel",placeholder:"(555) 123-4567",onInput:r},null,8,["modelValue"]),s(o(u),{modelValue:l.value.jobTitle,"onUpdate:modelValue":e[4]||(e[4]=t=>l.value.jobTitle=t),label:"Job Title",placeholder:"Enter job title",onInput:r},null,8,["modelValue"]),s(o(u),{modelValue:l.value.department,"onUpdate:modelValue":e[5]||(e[5]=t=>l.value.department=t),label:"Department",placeholder:"Enter department",onInput:r},null,8,["modelValue"])]),s(o(u),{modelValue:l.value.bio,"onUpdate:modelValue":e[6]||(e[6]=t=>l.value.bio=t),label:"Bio",placeholder:"Tell us about yourself",type:"textarea",onInput:r},null,8,["modelValue"])])])]),_:1}),s(o(h),{padding:"lg"},{default:i(()=>[e[29]||(e[29]=a("h3",{class:"text-lg font-semibold text-gray-900 mb-6"},"Account Security",-1)),a("div",fe,[a("div",ge,[a("div",we,[e[24]||(e[24]=a("div",null,[a("h4",{class:"font-medium text-gray-900"},"Password"),a("p",{class:"text-sm text-gray-600"},"Last changed 30 days ago")],-1)),s(o(w),{variant:"outline",size:"sm",onClick:e[7]||(e[7]=t=>x.value=!0)},{default:i(()=>e[23]||(e[23]=[v(" Change Password ",-1)])),_:1,__:[23]})])]),a("div",ye,[a("div",xe,[a("div",null,[e[25]||(e[25]=a("h4",{class:"font-medium text-gray-900"},"Two-Factor Authentication",-1)),a("p",be,m(l.value.twoFactorEnabled?"Enabled":"Add an extra layer of security"),1)]),s(o(w),{variant:l.value.twoFactorEnabled?"outline":"primary",size:"sm",onClick:W},{default:i(()=>[v(m(l.value.twoFactorEnabled?"Disable":"Enable"),1)]),_:1},8,["variant"])])]),a("div",he,[a("div",Ve,[a("div",null,[e[26]||(e[26]=a("h4",{class:"font-medium text-gray-900"},"Active Sessions",-1)),a("p",ke,m(f.value.length)+" active sessions",1)]),s(o(w),{variant:"outline",size:"sm",onClick:$},{default:i(()=>e[27]||(e[27]=[v(" Revoke All ",-1)])),_:1,__:[27]})]),a("div",Ce,[(d(!0),b(N,null,A(f.value,t=>(d(),b("div",{key:t.id,class:"flex items-center justify-between py-2"},[a("div",_e,[a("div",Fe,[(d(),g(D(G(t.device)),{class:"w-4 h-4 text-gray-600"}))]),a("div",null,[a("div",Me,m(t.device),1),a("div",Pe,m(t.location)+" • "+m(X(t.lastActive)),1)])]),a("div",Ye,[s(o(ie),{variant:t.current?"success":"secondary",size:"sm"},{default:i(()=>[v(m(t.current?"Current":"Active"),1)]),_:2},1032,["variant"]),t.current?F("",!0):(d(),g(o(w),{key:0,variant:"ghost",size:"sm",onClick:_=>J(t.id)},{default:i(()=>e[28]||(e[28]=[v(" Revoke ",-1)])),_:2,__:[28]},1032,["onClick"]))])]))),128))])])])]),_:1,__:[29]}),s(o(h),{padding:"lg"},{default:i(()=>[e[31]||(e[31]=a("h3",{class:"text-lg font-semibold text-gray-900 mb-6"},"Preferences",-1)),a("div",Ne,[a("div",Ae,[s(o(k),{modelValue:l.value.preferences.language,"onUpdate:modelValue":[e[8]||(e[8]=t=>l.value.preferences.language=t),r],label:"Language",options:U},null,8,["modelValue"]),s(o(k),{modelValue:l.value.preferences.timezone,"onUpdate:modelValue":[e[9]||(e[9]=t=>l.value.preferences.timezone=t),r],label:"Timezone",options:E},null,8,["modelValue"]),s(o(k),{modelValue:l.value.preferences.dateFormat,"onUpdate:modelValue":[e[10]||(e[10]=t=>l.value.preferences.dateFormat=t),r],label:"Date Format",options:j},null,8,["modelValue"]),s(o(k),{modelValue:l.value.preferences.theme,"onUpdate:modelValue":[e[11]||(e[11]=t=>l.value.preferences.theme=t),r],label:"Theme",options:z},null,8,["modelValue"])]),a("div",De,[e[30]||(e[30]=a("h4",{class:"font-medium text-gray-900"},"Notifications",-1)),a("div",Te,[s(o(V),{modelValue:l.value.preferences.emailNotifications,"onUpdate:modelValue":[e[12]||(e[12]=t=>l.value.preferences.emailNotifications=t),r],label:"Email notifications for work order updates"},null,8,["modelValue"]),s(o(V),{modelValue:l.value.preferences.pushNotifications,"onUpdate:modelValue":[e[13]||(e[13]=t=>l.value.preferences.pushNotifications=t),r],label:"Browser push notifications"},null,8,["modelValue"]),s(o(V),{modelValue:l.value.preferences.weeklyReports,"onUpdate:modelValue":[e[14]||(e[14]=t=>l.value.preferences.weeklyReports=t),r],label:"Weekly summary reports"},null,8,["modelValue"]),s(o(V),{modelValue:l.value.preferences.maintenanceReminders,"onUpdate:modelValue":[e[15]||(e[15]=t=>l.value.preferences.maintenanceReminders=t),r],label:"Maintenance reminders"},null,8,["modelValue"])])])])]),_:1,__:[31]}),s(o(h),{padding:"lg"},{default:i(()=>[e[32]||(e[32]=a("h3",{class:"text-lg font-semibold text-gray-900 mb-6"},"Recent Activity",-1)),a("div",Ue,[(d(!0),b(N,null,A(T.value,t=>(d(),b("div",{key:t.id,class:"flex items-start space-x-3 py-3 border-b border-gray-100 last:border-b-0"},[a("div",Ee,[(d(),g(D(K(t.type)),{class:"w-4 h-4 text-primary-600"}))]),a("div",je,[a("p",ze,m(t.description),1),a("p",Ie,m(ee(t.timestamp)),1)])]))),128))])]),_:1,__:[32]})])]),s(o(re),{modelValue:x.value,"onUpdate:modelValue":e[19]||(e[19]=t=>x.value=t),title:"Change Password",onConfirm:Q,onCancel:Y},{default:i(()=>[a("div",Se,[s(o(u),{modelValue:p.value.current,"onUpdate:modelValue":e[16]||(e[16]=t=>p.value.current=t),label:"Current Password",type:"password",placeholder:"Enter current password",required:""},null,8,["modelValue"]),s(o(u),{modelValue:p.value.new,"onUpdate:modelValue":e[17]||(e[17]=t=>p.value.new=t),label:"New Password",type:"password",placeholder:"Enter new password",required:""},null,8,["modelValue"]),s(o(u),{modelValue:p.value.confirm,"onUpdate:modelValue":e[18]||(e[18]=t=>p.value.confirm=t),label:"Confirm New Password",type:"password",placeholder:"Confirm new password",required:""},null,8,["modelValue"])])]),_:1},8,["modelValue"])]),_:1}))}},Qe=le(Be,[["__scopeId","data-v-b3be30e1"]]);export{Qe as default}; +import{F as te,a as ae}from"./FPPageHeader-CFIwZZgQ.js";import{_ as le,r as c,c as oe,o as se,i as g,w as i,g as d,b as a,d as s,e as o,aS as ne,F as w,k as v,t as m,a as b,af as N,aR as A,aX as D,j as F}from"./index-QAlcqU00.js";import{F as u}from"./FPInput-D5RURom0.js";import{F as h}from"./FPCard-AB6NRXg5.js";import{F as V}from"./FPCheckbox-DcRYwN3n.js";import{F as k}from"./FPSelect-j7n_x8eB.js";import{F as re}from"./FPModal-DMoPysvU.js";import{F as ie}from"./FPBadge-DvOitM1C.js";const de={class:"p-6"},ue={class:"max-w-4xl mx-auto space-y-8"},me={class:"flex items-start space-x-6"},ce={class:"flex flex-col items-center space-y-4"},pe={class:"flex-1 space-y-6"},ve={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},fe={class:"space-y-6"},ge={class:"p-4 border border-gray-200 rounded"},we={class:"flex items-center justify-between"},ye={class:"p-4 border border-gray-200 rounded"},xe={class:"flex items-center justify-between"},be={class:"text-sm text-gray-600"},he={class:"p-4 border border-gray-200 rounded"},Ve={class:"flex items-center justify-between mb-4"},ke={class:"text-sm text-gray-600"},Ce={class:"space-y-3"},_e={class:"flex items-center space-x-3"},Fe={class:"w-8 h-8 rounded bg-gray-100 flex items-center justify-center"},Me={class:"text-sm font-medium text-gray-900"},Pe={class:"text-xs text-gray-600"},Ye={class:"flex items-center space-x-2"},Ne={class:"space-y-6"},Ae={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},De={class:"space-y-4"},Te={class:"space-y-3"},Ue={class:"space-y-4"},Ee={class:"w-8 h-8 rounded-full bg-primary-100 flex items-center justify-center mt-1"},Se={class:"flex-1"},je={class:"text-sm text-gray-900"},ze={class:"text-xs text-gray-600 mt-1"},Ie={class:"space-y-4"},Be={__name:"ProfileView",setup(Le){const C=c(!1),y=c(!1),x=c(!1),l=c({firstName:"John",lastName:"Smith",email:"john.smith@facilityplus.com",phone:"(555) 123-4567",jobTitle:"Facility Manager",department:"Operations",bio:"Experienced facility manager with 10+ years in maintenance operations.",twoFactorEnabled:!1,preferences:{language:"en",timezone:"America/New_York",dateFormat:"MM/DD/YYYY",theme:"light",emailNotifications:!0,pushNotifications:!1,weeklyReports:!0,maintenanceReminders:!0}}),M=c({...l.value}),p=c({current:"",new:"",confirm:""}),f=c([{id:1,device:"Chrome on MacOS",location:"New York, NY",lastActive:"2024-01-20T10:00:00Z",current:!0},{id:2,device:"Safari on iPhone",location:"New York, NY",lastActive:"2024-01-19T15:30:00Z",current:!1},{id:3,device:"Firefox on Windows",location:"New York, NY",lastActive:"2024-01-18T09:00:00Z",current:!1}]),T=c([{id:1,type:"login",description:"Signed in from Chrome on MacOS",timestamp:"2024-01-20T10:00:00Z"},{id:2,type:"profile",description:"Updated profile information",timestamp:"2024-01-19T14:30:00Z"},{id:3,type:"password",description:"Changed account password",timestamp:"2024-01-15T11:00:00Z"},{id:4,type:"workorder",description:"Created work order WO-12345",timestamp:"2024-01-14T16:45:00Z"}]),U=[{title:"English",value:"en"},{title:"Spanish",value:"es"},{title:"French",value:"fr"}],E=[{title:"Eastern Time (ET)",value:"America/New_York"},{title:"Central Time (CT)",value:"America/Chicago"},{title:"Mountain Time (MT)",value:"America/Denver"},{title:"Pacific Time (PT)",value:"America/Los_Angeles"}],S=[{title:"MM/DD/YYYY",value:"MM/DD/YYYY"},{title:"DD/MM/YYYY",value:"DD/MM/YYYY"},{title:"YYYY-MM-DD",value:"YYYY-MM-DD"}],j=[{title:"Light",value:"light"},{title:"Dark",value:"dark"},{title:"Auto",value:"auto"}],z={template:''},I={template:''},B={template:''},P={template:''},L={template:''},R={template:''};oe(()=>{var t,_;const n=((t=l.value.firstName)==null?void 0:t[0])||"",e=((_=l.value.lastName)==null?void 0:_[0])||"";return(n+e).toUpperCase()});const r=()=>{y.value=!0},O=async()=>{C.value=!0,setTimeout(()=>{C.value=!1,y.value=!1,M.value={...l.value},console.log("Profile saved:",l.value)},1e3)},H=()=>{l.value={...M.value},y.value=!1},Z=({file:n,url:e})=>{console.log("Avatar uploaded:",n.name,e),l.value.avatar=e,r()},q=n=>{console.error("Avatar upload failed:",n)},W=()=>{l.value.twoFactorEnabled=!l.value.twoFactorEnabled,r()},J=n=>{const e=f.value.findIndex(t=>t.id===n);e>-1&&f.value.splice(e,1)},$=()=>{f.value=f.value.filter(n=>n.current)},Y=()=>{x.value=!1,p.value={current:"",new:"",confirm:""}},X=()=>{console.log("Changing password..."),Y()},G=n=>n.includes("iPhone")||n.includes("Android")?I:z,K=n=>({login:B,profile:P,password:L,workorder:R})[n]||P,Q=n=>new Date(n).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}),ee=n=>new Date(n).toLocaleString("en-US",{month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"2-digit"});return se(()=>{}),(n,e)=>(d(),g(te,null,{header:i(()=>[s(ae,{title:"Profile",description:"Manage your personal account settings and preferences",breadcrumbs:[{text:"Profile",to:null}]},{actions:i(()=>[y.value?(d(),g(o(w),{key:0,variant:"outline",size:"sm",onClick:H},{default:i(()=>e[20]||(e[20]=[v(" Cancel ",-1)])),_:1,__:[20]})):F("",!0),y.value?(d(),g(o(w),{key:1,variant:"primary",size:"sm",onClick:O,loading:C.value},{default:i(()=>e[21]||(e[21]=[v(" Save Changes ",-1)])),_:1,__:[21]},8,["loading"])):F("",!0)]),_:1})]),default:i(()=>[a("div",de,[a("div",ue,[s(o(h),{padding:"lg"},{default:i(()=>[a("div",me,[a("div",ce,[s(o(ne),{user:l.value,size:"2xl",editable:!0,onUpload:Z,onError:q},null,8,["user"]),e[22]||(e[22]=a("p",{class:"text-xs text-gray-500 text-center max-w-32"}," Click to upload a new photo or we'll use a random one from Pexels ",-1))]),a("div",pe,[a("div",ve,[s(o(u),{modelValue:l.value.firstName,"onUpdate:modelValue":e[0]||(e[0]=t=>l.value.firstName=t),label:"First Name",placeholder:"Enter first name",required:"",onInput:r},null,8,["modelValue"]),s(o(u),{modelValue:l.value.lastName,"onUpdate:modelValue":e[1]||(e[1]=t=>l.value.lastName=t),label:"Last Name",placeholder:"Enter last name",required:"",onInput:r},null,8,["modelValue"]),s(o(u),{modelValue:l.value.email,"onUpdate:modelValue":e[2]||(e[2]=t=>l.value.email=t),label:"Email Address",type:"email",placeholder:"Enter email",required:"",onInput:r},null,8,["modelValue"]),s(o(u),{modelValue:l.value.phone,"onUpdate:modelValue":e[3]||(e[3]=t=>l.value.phone=t),label:"Phone Number",type:"tel",placeholder:"(555) 123-4567",onInput:r},null,8,["modelValue"]),s(o(u),{modelValue:l.value.jobTitle,"onUpdate:modelValue":e[4]||(e[4]=t=>l.value.jobTitle=t),label:"Job Title",placeholder:"Enter job title",onInput:r},null,8,["modelValue"]),s(o(u),{modelValue:l.value.department,"onUpdate:modelValue":e[5]||(e[5]=t=>l.value.department=t),label:"Department",placeholder:"Enter department",onInput:r},null,8,["modelValue"])]),s(o(u),{modelValue:l.value.bio,"onUpdate:modelValue":e[6]||(e[6]=t=>l.value.bio=t),label:"Bio",placeholder:"Tell us about yourself",type:"textarea",onInput:r},null,8,["modelValue"])])])]),_:1}),s(o(h),{padding:"lg"},{default:i(()=>[e[29]||(e[29]=a("h3",{class:"text-lg font-semibold text-gray-900 mb-6"},"Account Security",-1)),a("div",fe,[a("div",ge,[a("div",we,[e[24]||(e[24]=a("div",null,[a("h4",{class:"font-medium text-gray-900"},"Password"),a("p",{class:"text-sm text-gray-600"},"Last changed 30 days ago")],-1)),s(o(w),{variant:"outline",size:"sm",onClick:e[7]||(e[7]=t=>x.value=!0)},{default:i(()=>e[23]||(e[23]=[v(" Change Password ",-1)])),_:1,__:[23]})])]),a("div",ye,[a("div",xe,[a("div",null,[e[25]||(e[25]=a("h4",{class:"font-medium text-gray-900"},"Two-Factor Authentication",-1)),a("p",be,m(l.value.twoFactorEnabled?"Enabled":"Add an extra layer of security"),1)]),s(o(w),{variant:l.value.twoFactorEnabled?"outline":"primary",size:"sm",onClick:W},{default:i(()=>[v(m(l.value.twoFactorEnabled?"Disable":"Enable"),1)]),_:1},8,["variant"])])]),a("div",he,[a("div",Ve,[a("div",null,[e[26]||(e[26]=a("h4",{class:"font-medium text-gray-900"},"Active Sessions",-1)),a("p",ke,m(f.value.length)+" active sessions",1)]),s(o(w),{variant:"outline",size:"sm",onClick:$},{default:i(()=>e[27]||(e[27]=[v(" Revoke All ",-1)])),_:1,__:[27]})]),a("div",Ce,[(d(!0),b(N,null,A(f.value,t=>(d(),b("div",{key:t.id,class:"flex items-center justify-between py-2"},[a("div",_e,[a("div",Fe,[(d(),g(D(G(t.device)),{class:"w-4 h-4 text-gray-600"}))]),a("div",null,[a("div",Me,m(t.device),1),a("div",Pe,m(t.location)+" • "+m(Q(t.lastActive)),1)])]),a("div",Ye,[s(o(ie),{variant:t.current?"success":"secondary",size:"sm"},{default:i(()=>[v(m(t.current?"Current":"Active"),1)]),_:2},1032,["variant"]),t.current?F("",!0):(d(),g(o(w),{key:0,variant:"ghost",size:"sm",onClick:_=>J(t.id)},{default:i(()=>e[28]||(e[28]=[v(" Revoke ",-1)])),_:2,__:[28]},1032,["onClick"]))])]))),128))])])])]),_:1,__:[29]}),s(o(h),{padding:"lg"},{default:i(()=>[e[31]||(e[31]=a("h3",{class:"text-lg font-semibold text-gray-900 mb-6"},"Preferences",-1)),a("div",Ne,[a("div",Ae,[s(o(k),{modelValue:l.value.preferences.language,"onUpdate:modelValue":[e[8]||(e[8]=t=>l.value.preferences.language=t),r],label:"Language",options:U},null,8,["modelValue"]),s(o(k),{modelValue:l.value.preferences.timezone,"onUpdate:modelValue":[e[9]||(e[9]=t=>l.value.preferences.timezone=t),r],label:"Timezone",options:E},null,8,["modelValue"]),s(o(k),{modelValue:l.value.preferences.dateFormat,"onUpdate:modelValue":[e[10]||(e[10]=t=>l.value.preferences.dateFormat=t),r],label:"Date Format",options:S},null,8,["modelValue"]),s(o(k),{modelValue:l.value.preferences.theme,"onUpdate:modelValue":[e[11]||(e[11]=t=>l.value.preferences.theme=t),r],label:"Theme",options:j},null,8,["modelValue"])]),a("div",De,[e[30]||(e[30]=a("h4",{class:"font-medium text-gray-900"},"Notifications",-1)),a("div",Te,[s(o(V),{modelValue:l.value.preferences.emailNotifications,"onUpdate:modelValue":[e[12]||(e[12]=t=>l.value.preferences.emailNotifications=t),r],label:"Email notifications for work order updates"},null,8,["modelValue"]),s(o(V),{modelValue:l.value.preferences.pushNotifications,"onUpdate:modelValue":[e[13]||(e[13]=t=>l.value.preferences.pushNotifications=t),r],label:"Browser push notifications"},null,8,["modelValue"]),s(o(V),{modelValue:l.value.preferences.weeklyReports,"onUpdate:modelValue":[e[14]||(e[14]=t=>l.value.preferences.weeklyReports=t),r],label:"Weekly summary reports"},null,8,["modelValue"]),s(o(V),{modelValue:l.value.preferences.maintenanceReminders,"onUpdate:modelValue":[e[15]||(e[15]=t=>l.value.preferences.maintenanceReminders=t),r],label:"Maintenance reminders"},null,8,["modelValue"])])])])]),_:1,__:[31]}),s(o(h),{padding:"lg"},{default:i(()=>[e[32]||(e[32]=a("h3",{class:"text-lg font-semibold text-gray-900 mb-6"},"Recent Activity",-1)),a("div",Ue,[(d(!0),b(N,null,A(T.value,t=>(d(),b("div",{key:t.id,class:"flex items-start space-x-3 py-3 border-b border-gray-100 last:border-b-0"},[a("div",Ee,[(d(),g(D(K(t.type)),{class:"w-4 h-4 text-primary-600"}))]),a("div",Se,[a("p",je,m(t.description),1),a("p",ze,m(ee(t.timestamp)),1)])]))),128))])]),_:1,__:[32]})])]),s(o(re),{modelValue:x.value,"onUpdate:modelValue":e[19]||(e[19]=t=>x.value=t),title:"Change Password",onConfirm:X,onCancel:Y},{default:i(()=>[a("div",Ie,[s(o(u),{modelValue:p.value.current,"onUpdate:modelValue":e[16]||(e[16]=t=>p.value.current=t),label:"Current Password",type:"password",placeholder:"Enter current password",required:""},null,8,["modelValue"]),s(o(u),{modelValue:p.value.new,"onUpdate:modelValue":e[17]||(e[17]=t=>p.value.new=t),label:"New Password",type:"password",placeholder:"Enter new password",required:""},null,8,["modelValue"]),s(o(u),{modelValue:p.value.confirm,"onUpdate:modelValue":e[18]||(e[18]=t=>p.value.confirm=t),label:"Confirm New Password",type:"password",placeholder:"Confirm new password",required:""},null,8,["modelValue"])])]),_:1},8,["modelValue"])]),_:1}))}},Xe=le(Be,[["__scopeId","data-v-b3be30e1"]]);export{Xe as default}; diff --git a/frontend/dist/assets/RegisterView-BAfp3jPJ.js b/frontend/dist/assets/RegisterView-B1dtlGYy.js similarity index 96% rename from frontend/dist/assets/RegisterView-BAfp3jPJ.js rename to frontend/dist/assets/RegisterView-B1dtlGYy.js index fac91b08..144be76b 100644 --- a/frontend/dist/assets/RegisterView-BAfp3jPJ.js +++ b/frontend/dist/assets/RegisterView-B1dtlGYy.js @@ -1 +1 @@ -import{_ as B,u as I,r as N,c as n,o as z,a as c,b as l,d as o,w as v,e as r,t as R,f as j,g as m,h as M,i as T,j as D,F as L,k as d,l as O}from"./index-BUdRbiwj.js";import{r as p,e as b,p as C,a as P}from"./validators-BsFa-KD7.js";import{F as u}from"./FPInput-CzR_dWoe.js";import{F as Y}from"./FPCard-qHzcEQAE.js";import{F as G}from"./FPAlert-qtmRrGXf.js";import{F}from"./FPSelect-C7p47Ma2.js";const H={class:"min-h-screen flex items-center justify-center bg-gradient-to-br from-primary-600 to-primary-800 py-12 px-4 sm:px-6 lg:px-8"},J={class:"max-w-lg w-full space-y-8"},$={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},K={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},Q={key:0},W={key:1,class:"flex items-center"},X={class:"text-center"},Z={class:"text-center"},ee={class:"text-primary-100 text-sm"},ae={__name:"RegisterView",setup(le){const{register:k,loading:g,error:y}=I(),{success:E}=O(),e=N({firstName:"",lastName:"",email:"",password:"",phone:"",companyName:"",employeesCount:null,language:"",subscriptionPlanId:null}),i=N(!1),A=[{title:"1-10 employees",value:10},{title:"11-50 employees",value:50},{title:"51-200 employees",value:200},{title:"201-500 employees",value:500},{title:"500+ employees",value:1e3}],_=[{title:"English",value:"en"},{title:"Spanish",value:"es"},{title:"French",value:"fr"},{title:"German",value:"de"},{title:"Portuguese",value:"pt"},{title:"Italian",value:"it"}],f=n(()=>{const t=[];return e.value.firstName&&p(e.value.firstName)!==!0&&t.push(p(e.value.firstName)),t}),h=n(()=>{const t=[];return e.value.lastName&&p(e.value.lastName)!==!0&&t.push(p(e.value.lastName)),t}),x=n(()=>{const t=[];return e.value.email&&b(e.value.email)!==!0&&t.push(b(e.value.email)),t}),w=n(()=>{const t=[];return e.value.password&&C(e.value.password)!==!0&&t.push(C(e.value.password)),t}),V=n(()=>{const t=[];return e.value.phone&&P(e.value.phone)!==!0&&t.push(P(e.value.phone)),t}),S=n(()=>new Date().getFullYear()),U=async()=>{try{await k(e.value),E("Account created successfully!")}catch(t){console.error("Registration error:",t)}};return z(()=>{const t=document.querySelector('input[placeholder="Enter first name"]');t&&t.focus()}),(t,a)=>{const q=j("router-link");return m(),c("div",H,[l("div",J,[a[13]||(a[13]=l("div",{class:"text-center"},[l("h2",{class:"text-3xl font-bold text-white mb-2"}," Create Account "),l("p",{class:"text-primary-100"}," Join Facility Plus to manage your assets ")],-1)),o(r(Y),{padding:"lg",class:"bg-white shadow-2xl"},{default:v(()=>[l("form",{onSubmit:M(U,["prevent"]),class:"space-y-6"},[l("div",$,[o(r(u),{modelValue:e.value.firstName,"onUpdate:modelValue":a[0]||(a[0]=s=>e.value.firstName=s),label:"First Name",placeholder:"Enter first name","error-message":f.value.length>0?f.value[0]:"",required:""},null,8,["modelValue","error-message"]),o(r(u),{modelValue:e.value.lastName,"onUpdate:modelValue":a[1]||(a[1]=s=>e.value.lastName=s),label:"Last Name",placeholder:"Enter last name","error-message":h.value.length>0?h.value[0]:"",required:""},null,8,["modelValue","error-message"])]),o(r(u),{modelValue:e.value.email,"onUpdate:modelValue":a[2]||(a[2]=s=>e.value.email=s),label:"Email Address",type:"email",placeholder:"Enter your email","error-message":x.value.length>0?x.value[0]:"",required:""},null,8,["modelValue","error-message"]),o(r(u),{modelValue:e.value.password,"onUpdate:modelValue":a[3]||(a[3]=s=>e.value.password=s),label:"Password",type:i.value?"text":"password","append-icon":i.value?"mdi-eye":"mdi-eye-off","append-icon-clickable":"",placeholder:"Create a strong password","error-message":w.value.length>0?w.value[0]:"","help-text":"Password must be at least 8 characters with uppercase, lowercase, number and special character",required:"",onAppendIconClick:a[4]||(a[4]=s=>i.value=!i.value)},null,8,["modelValue","type","append-icon","error-message"]),o(r(u),{modelValue:e.value.phone,"onUpdate:modelValue":a[5]||(a[5]=s=>e.value.phone=s),label:"Phone Number",type:"tel",placeholder:"(555) 123-4567","error-message":V.value.length>0?V.value[0]:"",required:""},null,8,["modelValue","error-message"]),o(r(u),{modelValue:e.value.companyName,"onUpdate:modelValue":a[6]||(a[6]=s=>e.value.companyName=s),label:"Company Name",placeholder:"Enter company name (optional)","help-text":"This helps us customize your experience"},null,8,["modelValue"]),l("div",K,[o(r(F),{modelValue:e.value.employeesCount,"onUpdate:modelValue":a[7]||(a[7]=s=>e.value.employeesCount=s),label:"Company Size",placeholder:"Select employee count",options:A},null,8,["modelValue"]),o(r(F),{modelValue:e.value.language,"onUpdate:modelValue":a[8]||(a[8]=s=>e.value.language=s),label:"Preferred Language",placeholder:"Select language",options:_},null,8,["modelValue"])]),r(y)?(m(),T(r(G),{key:0,type:"error",message:r(y)},null,8,["message"])):D("",!0),o(r(L),{type:"submit",variant:"primary",size:"lg",block:"",loading:r(g),class:"w-full"},{default:v(()=>[r(g)?(m(),c("span",W,a[9]||(a[9]=[l("svg",{class:"animate-spin -ml-1 mr-3 h-4 w-4 text-white",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},[l("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"}),l("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})],-1),d(" Creating Account... ",-1)]))):(m(),c("span",Q,"Create Account"))]),_:1},8,["loading"]),a[11]||(a[11]=l("div",{class:"text-center"},[l("p",{class:"text-xs text-gray-500"},[d(" By creating an account, you agree to our "),l("a",{href:"#",class:"text-primary-600 hover:text-primary-700 underline"},"Terms of Service"),d(" and "),l("a",{href:"#",class:"text-primary-600 hover:text-primary-700 underline"},"Privacy Policy")])],-1)),a[12]||(a[12]=l("div",{class:"relative"},[l("div",{class:"absolute inset-0 flex items-center"},[l("div",{class:"w-full border-t border-gray-300"})]),l("div",{class:"relative flex justify-center text-sm"},[l("span",{class:"px-2 bg-white text-gray-500"},"Already have an account?")])],-1)),l("div",X,[o(q,{to:"/login",class:"text-primary-600 hover:text-primary-700 font-medium transition-colors"},{default:v(()=>a[10]||(a[10]=[d(" Sign in to your account ",-1)])),_:1,__:[10]})])],32)]),_:1}),l("div",Z,[l("p",ee," © "+R(S.value)+" Facility Plus. All rights reserved. ",1)])])])}}},ie=B(ae,[["__scopeId","data-v-d44df5a0"]]);export{ie as default}; +import{_ as B,u as I,r as N,c as n,o as z,a as c,b as l,d as o,w as v,e as r,t as R,f as j,g as m,h as M,i as T,j as D,F as L,k as d,l as O}from"./index-QAlcqU00.js";import{r as p,e as b,p as C,a as P}from"./validators-BsFa-KD7.js";import{F as u}from"./FPInput-D5RURom0.js";import{F as Y}from"./FPCard-AB6NRXg5.js";import{F as G}from"./FPAlert-CZx0ew6-.js";import{F}from"./FPSelect-j7n_x8eB.js";const H={class:"min-h-screen flex items-center justify-center bg-gradient-to-br from-primary-600 to-primary-800 py-12 px-4 sm:px-6 lg:px-8"},J={class:"max-w-lg w-full space-y-8"},$={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},K={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},Q={key:0},W={key:1,class:"flex items-center"},X={class:"text-center"},Z={class:"text-center"},ee={class:"text-primary-100 text-sm"},ae={__name:"RegisterView",setup(le){const{register:k,loading:g,error:y}=I(),{success:E}=O(),e=N({firstName:"",lastName:"",email:"",password:"",phone:"",companyName:"",employeesCount:null,language:"",subscriptionPlanId:null}),i=N(!1),A=[{title:"1-10 employees",value:10},{title:"11-50 employees",value:50},{title:"51-200 employees",value:200},{title:"201-500 employees",value:500},{title:"500+ employees",value:1e3}],_=[{title:"English",value:"en"},{title:"Spanish",value:"es"},{title:"French",value:"fr"},{title:"German",value:"de"},{title:"Portuguese",value:"pt"},{title:"Italian",value:"it"}],f=n(()=>{const t=[];return e.value.firstName&&p(e.value.firstName)!==!0&&t.push(p(e.value.firstName)),t}),h=n(()=>{const t=[];return e.value.lastName&&p(e.value.lastName)!==!0&&t.push(p(e.value.lastName)),t}),x=n(()=>{const t=[];return e.value.email&&b(e.value.email)!==!0&&t.push(b(e.value.email)),t}),w=n(()=>{const t=[];return e.value.password&&C(e.value.password)!==!0&&t.push(C(e.value.password)),t}),V=n(()=>{const t=[];return e.value.phone&&P(e.value.phone)!==!0&&t.push(P(e.value.phone)),t}),S=n(()=>new Date().getFullYear()),U=async()=>{try{await k(e.value),E("Account created successfully!")}catch(t){console.error("Registration error:",t)}};return z(()=>{const t=document.querySelector('input[placeholder="Enter first name"]');t&&t.focus()}),(t,a)=>{const q=j("router-link");return m(),c("div",H,[l("div",J,[a[13]||(a[13]=l("div",{class:"text-center"},[l("h2",{class:"text-3xl font-bold text-white mb-2"}," Create Account "),l("p",{class:"text-primary-100"}," Join Facility Plus to manage your assets ")],-1)),o(r(Y),{padding:"lg",class:"bg-white shadow-2xl"},{default:v(()=>[l("form",{onSubmit:M(U,["prevent"]),class:"space-y-6"},[l("div",$,[o(r(u),{modelValue:e.value.firstName,"onUpdate:modelValue":a[0]||(a[0]=s=>e.value.firstName=s),label:"First Name",placeholder:"Enter first name","error-message":f.value.length>0?f.value[0]:"",required:""},null,8,["modelValue","error-message"]),o(r(u),{modelValue:e.value.lastName,"onUpdate:modelValue":a[1]||(a[1]=s=>e.value.lastName=s),label:"Last Name",placeholder:"Enter last name","error-message":h.value.length>0?h.value[0]:"",required:""},null,8,["modelValue","error-message"])]),o(r(u),{modelValue:e.value.email,"onUpdate:modelValue":a[2]||(a[2]=s=>e.value.email=s),label:"Email Address",type:"email",placeholder:"Enter your email","error-message":x.value.length>0?x.value[0]:"",required:""},null,8,["modelValue","error-message"]),o(r(u),{modelValue:e.value.password,"onUpdate:modelValue":a[3]||(a[3]=s=>e.value.password=s),label:"Password",type:i.value?"text":"password","append-icon":i.value?"mdi-eye":"mdi-eye-off","append-icon-clickable":"",placeholder:"Create a strong password","error-message":w.value.length>0?w.value[0]:"","help-text":"Password must be at least 8 characters with uppercase, lowercase, number and special character",required:"",onAppendIconClick:a[4]||(a[4]=s=>i.value=!i.value)},null,8,["modelValue","type","append-icon","error-message"]),o(r(u),{modelValue:e.value.phone,"onUpdate:modelValue":a[5]||(a[5]=s=>e.value.phone=s),label:"Phone Number",type:"tel",placeholder:"(555) 123-4567","error-message":V.value.length>0?V.value[0]:"",required:""},null,8,["modelValue","error-message"]),o(r(u),{modelValue:e.value.companyName,"onUpdate:modelValue":a[6]||(a[6]=s=>e.value.companyName=s),label:"Company Name",placeholder:"Enter company name (optional)","help-text":"This helps us customize your experience"},null,8,["modelValue"]),l("div",K,[o(r(F),{modelValue:e.value.employeesCount,"onUpdate:modelValue":a[7]||(a[7]=s=>e.value.employeesCount=s),label:"Company Size",placeholder:"Select employee count",options:A},null,8,["modelValue"]),o(r(F),{modelValue:e.value.language,"onUpdate:modelValue":a[8]||(a[8]=s=>e.value.language=s),label:"Preferred Language",placeholder:"Select language",options:_},null,8,["modelValue"])]),r(y)?(m(),T(r(G),{key:0,type:"error",message:r(y)},null,8,["message"])):D("",!0),o(r(L),{type:"submit",variant:"primary",size:"lg",block:"",loading:r(g),class:"w-full"},{default:v(()=>[r(g)?(m(),c("span",W,a[9]||(a[9]=[l("svg",{class:"animate-spin -ml-1 mr-3 h-4 w-4 text-white",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},[l("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"}),l("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})],-1),d(" Creating Account... ",-1)]))):(m(),c("span",Q,"Create Account"))]),_:1},8,["loading"]),a[11]||(a[11]=l("div",{class:"text-center"},[l("p",{class:"text-xs text-gray-500"},[d(" By creating an account, you agree to our "),l("a",{href:"#",class:"text-primary-600 hover:text-primary-700 underline"},"Terms of Service"),d(" and "),l("a",{href:"#",class:"text-primary-600 hover:text-primary-700 underline"},"Privacy Policy")])],-1)),a[12]||(a[12]=l("div",{class:"relative"},[l("div",{class:"absolute inset-0 flex items-center"},[l("div",{class:"w-full border-t border-gray-300"})]),l("div",{class:"relative flex justify-center text-sm"},[l("span",{class:"px-2 bg-white text-gray-500"},"Already have an account?")])],-1)),l("div",X,[o(q,{to:"/login",class:"text-primary-600 hover:text-primary-700 font-medium transition-colors"},{default:v(()=>a[10]||(a[10]=[d(" Sign in to your account ",-1)])),_:1,__:[10]})])],32)]),_:1}),l("div",Z,[l("p",ee," © "+R(S.value)+" Facility Plus. All rights reserved. ",1)])])])}}},ie=B(ae,[["__scopeId","data-v-d44df5a0"]]);export{ie as default}; diff --git a/frontend/dist/assets/ReportGenerator-CjXdt1Qp.js b/frontend/dist/assets/ReportGenerator-Dld_SPXF.js similarity index 94% rename from frontend/dist/assets/ReportGenerator-CjXdt1Qp.js rename to frontend/dist/assets/ReportGenerator-Dld_SPXF.js index a93f1339..7aa2c191 100644 --- a/frontend/dist/assets/ReportGenerator-CjXdt1Qp.js +++ b/frontend/dist/assets/ReportGenerator-Dld_SPXF.js @@ -1 +1 @@ -import{_ as ae,r as O,c as x,o as ne,a as i,g as n,b as t,aS as ie,j as m,d as c,w as C,k as u,t as o,e as g,F as S,af as b,aQ as k,i as de,aW as ue,n as me}from"./index-BUdRbiwj.js";import{F as Q}from"./FPInput-CzR_dWoe.js";import{F as R}from"./FPCheckbox-Bu8jNAEW.js";import{F as Y}from"./FPSelect-C7p47Ma2.js";import{S as ce,P as ge}from"./workOrder-jNxj_kjQ.js";import{u as ve}from"./useWorkOrders-B61P5JA7.js";const ye={class:"report-generator"},be={class:"flex items-center justify-between mb-4"},ke={class:"flex items-center space-x-2"},xe={class:"mb-6 p-4 bg-gray-50 border border-gray-200 rounded-lg"},we={class:"grid grid-cols-1 md:grid-cols-2 gap-4 mb-4"},fe={class:"grid grid-cols-1 md:grid-cols-3 gap-4 mb-4"},pe={class:"mb-4"},he={class:"grid grid-cols-2 md:grid-cols-4 gap-2"},Oe={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},Ce={class:"mb-6"},Se={class:"grid grid-cols-1 md:grid-cols-3 gap-3"},Re=["onClick"],Te={class:"flex items-center mb-2"},Ve={class:"font-medium text-gray-900"},De={class:"text-xs text-gray-600"},Fe={key:0,class:"mb-6 border border-gray-200 rounded-lg overflow-hidden"},Ie={class:"p-6 bg-white max-h-96 overflow-y-auto"},Ae={class:"report-preview"},Pe={class:"mb-6 text-center border-b border-gray-200 pb-4"},Me={class:"text-2xl font-bold text-gray-900"},Ne={key:0,class:"text-gray-600 mt-1"},$e={class:"mt-2 text-sm text-gray-500"},Ue={key:0,class:"mb-6"},Be={class:"grid grid-cols-2 gap-4 text-sm"},Le={key:0,class:"mt-3"},je={class:"mt-1 text-gray-700"},He={key:1,class:"mb-6"},ze={class:"grid grid-cols-2 gap-4 text-sm"},We={key:0},Ge={class:"text-gray-600"},Ee={key:1},qe={class:"text-gray-600"},Qe={key:2,class:"mb-6"},Ye={class:"text-sm space-y-2"},Je={key:0},Ke={key:1},Xe={key:2},Ze={class:"list-disc list-inside ml-4"},_e={key:3,class:"mb-6"},et={class:"space-y-2 text-sm"},tt={class:"mr-2"},st={class:"mt-2 text-sm text-gray-600"},ot={key:4,class:"mb-6"},rt={class:"overflow-x-auto"},lt={class:"w-full text-sm"},at={class:"py-2"},nt={class:"py-2"},it={class:"text-right py-2"},dt={class:"text-right py-2"},ut={class:"text-right py-2"},mt={key:5,class:"mb-6"},ct={class:"overflow-x-auto"},gt={class:"w-full text-sm"},vt={class:"py-2"},yt={class:"py-2"},bt={class:"text-right py-2"},kt={class:"text-right py-2"},xt={class:"text-right py-2"},wt={key:6,class:"mb-6"},ft={class:"bg-gray-50 p-4 rounded"},pt={class:"grid grid-cols-2 gap-4 text-sm"},ht={class:"text-lg col-span-2 text-center border-t pt-2 mt-2"},Ot={key:7,class:"mb-6"},Ct={class:"space-y-2 text-sm"},St={class:"text-gray-600"},Rt={key:0,class:"text-gray-700 italic"},Tt={class:"text-gray-500"},Vt={class:"mt-8 pt-4 border-t border-gray-200 text-center text-xs text-gray-500"},Dt={key:1,class:"mb-4"},Ft={class:"space-y-2"},It={class:"flex items-center"},At={class:"text-sm font-medium text-gray-900"},Pt={class:"text-xs text-gray-500"},Mt={class:"flex items-center space-x-2"},Nt={__name:"ReportGenerator",props:{workOrder:{type:Object,required:!0},disabled:{type:Boolean,default:!1}},emits:["report-generated"],setup(l,{emit:$t}){const w=l,p=ve(),F=O(!1),h=O(!1),T=O([]),r=O({template:"complete",format:"pdf",title:"Work Order Report",subtitle:"Generated on {date}",includeImages:!0,includeAttachments:!1,includeSignature:!0,sections:{basic:!0,asset:!0,assignment:!0,tasks:!0,parts:!0,time:!0,costs:!0,history:!0}}),J=[{value:"summary",title:"Summary Report"},{value:"complete",title:"Complete Report"},{value:"maintenance",title:"Maintenance Report"},{value:"cost",title:"Cost Report"},{value:"custom",title:"Custom Report"}],K=[{value:"pdf",title:"PDF Document"},{value:"html",title:"HTML Page"},{value:"excel",title:"Excel Spreadsheet"}],X=[{key:"basic",label:"Basic Info"},{key:"asset",label:"Asset & Location"},{key:"assignment",label:"Assignment"},{key:"tasks",label:"Tasks"},{key:"parts",label:"Parts"},{key:"time",label:"Time Tracking"},{key:"costs",label:"Cost Summary"},{key:"history",label:"Status History"}],Z=[{key:"maintenance",name:"Maintenance Report",description:"Focus on tasks, parts, and completion",icon:"svg",sections:{basic:!0,asset:!0,tasks:!0,parts:!0,history:!0}},{key:"cost",name:"Cost Analysis",description:"Detailed cost breakdown and labor",icon:"svg",sections:{basic:!0,parts:!0,time:!0,costs:!0}},{key:"summary",name:"Executive Summary",description:"High-level overview for management",icon:"svg",sections:{basic:!0,assignment:!0,costs:!0}}],_=x(()=>{var a;return((a=w.workOrder.tasks)==null?void 0:a.filter(e=>e.completed).length)||0}),I=x(()=>{var a;return((a=w.workOrder.timeEntries)==null?void 0:a.reduce((e,d)=>e+d.duration*(d.hourlyRate||0),0))||0}),A=x(()=>{var a;return((a=w.workOrder.parts)==null?void 0:a.reduce((e,d)=>e+d.quantity*(d.unitCost||0),0))||0}),P=x(()=>{var a,e;return((e=(a=w.workOrder.costTracking)==null?void 0:a.costs)==null?void 0:e.filter(d=>d.category==="Material").reduce((d,v)=>d+(v.amount||0),0))||0}),M=x(()=>{var a,e;return((e=(a=w.workOrder.costTracking)==null?void 0:a.costs)==null?void 0:e.filter(d=>d.category==="Labor").reduce((d,v)=>d+(v.amount||0),0))||0}),N=x(()=>{var a,e;return((e=(a=w.workOrder.costTracking)==null?void 0:a.costs)==null?void 0:e.filter(d=>d.category==="Other").reduce((d,v)=>d+(v.amount||0),0))||0}),ee=x(()=>I.value+A.value+P.value+M.value+N.value),te=async a=>{try{if(!p){console.error("Work orders composable not available");return}const e={template:r.value.template,format:r.value.format,sections:r.value.sections,title:r.value.customTitle,subtitle:r.value.customSubtitle,includeImages:r.value.includeImages,includeAttachments:r.value.includeAttachments,includeSignatures:r.value.includeSignatures},d=new Date().toISOString().slice(0,19).replace(/:/g,"-"),v=`${a.name}-${d}.${a.format}`;await p.downloadReport(a.workOrderId,e,v),console.log("Report downloaded successfully")}catch(e){throw console.error("Download failed:",e),e}},$=async a=>{try{await te(a)}catch(e){console.error("Report download error:",e)}},se=async a=>{try{if(!p){console.error("Work orders composable not available");return}const e={template:r.value.template,format:"PDF",sections:r.value.sections,title:r.value.customTitle,subtitle:r.value.customSubtitle,includeImages:r.value.includeImages,includeAttachments:r.value.includeAttachments,includeSignatures:r.value.includeSignatures};await p.previewReport(a.workOrderId,e),console.log("Report preview opened")}catch(e){console.error("Preview failed:",e)}},oe=a=>{r.value.sections={...a.sections},r.value.template=a.key},U=a=>{var e;return((e=ce[a])==null?void 0:e.label)||a},re=a=>{var e;return((e=ge[a])==null?void 0:e.label)||a},V=a=>a?new Date(a).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"}):"",D=a=>a?new Date(a).toLocaleString("en-US",{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}):"",le=a=>{if(!a)return"0:00";const e=Math.floor(a),d=Math.round((a-e)*60);return`${e}:${d.toString().padStart(2,"0")}`};return ne(()=>{T.value=[{id:1,name:"Complete Report - WO-1244",createdAt:new Date(Date.now()-864e5).toISOString(),format:"pdf"},{id:2,name:"Cost Analysis - WO-1243",createdAt:new Date(Date.now()-1728e5).toISOString(),format:"pdf"}]}),(a,e)=>{var d,v,B,L,j,H,z,W,G,E,q;return n(),i("div",ye,[t("div",be,[e[13]||(e[13]=t("div",{class:"flex items-center space-x-3"},[t("h3",{class:"text-lg font-medium text-gray-900"},"Report Generation"),t("div",{class:"px-2 py-1 bg-blue-100 text-blue-800 text-xs font-medium rounded-full"}," 🎭 Demo Mode ")],-1)),t("div",ke,[c(g(S),{variant:"outline",size:"sm",onClick:e[0]||(e[0]=s=>h.value=!h.value)},{default:C(()=>[e[10]||(e[10]=t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"}),t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"})],-1)),u(" "+o(h.value?"Hide Preview":"Show Preview"),1)]),_:1,__:[10]}),c(g(S),{variant:"secondary",size:"sm",onClick:e[1]||(e[1]=s=>se({workOrderId:l.workOrder.id,name:r.value.title})),loading:F.value,disabled:l.disabled},{default:C(()=>e[11]||(e[11]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"})],-1),u(" Preview ",-1)])),_:1,__:[11]},8,["loading","disabled"]),c(g(S),{variant:"primary",size:"sm",onClick:e[2]||(e[2]=s=>$({workOrderId:l.workOrder.id,name:r.value.title})),loading:F.value,disabled:l.disabled},{default:C(()=>e[12]||(e[12]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1),u(" Download PDF ",-1)])),_:1,__:[12]},8,["loading","disabled"])])]),e[49]||(e[49]=ie('

Demo Mode: PDF reports will be generated using sample data since no backend is connected. The generated PDFs are fully functional and can be downloaded and opened in any PDF viewer.

',1)),t("div",xe,[e[15]||(e[15]=t("h4",{class:"text-sm font-medium text-gray-900 mb-3"},"Report Configuration",-1)),t("div",we,[c(g(Y),{modelValue:r.value.template,"onUpdate:modelValue":e[3]||(e[3]=s=>r.value.template=s),label:"Report Template",options:J},null,8,["modelValue"]),c(g(Y),{modelValue:r.value.format,"onUpdate:modelValue":e[4]||(e[4]=s=>r.value.format=s),label:"Format",options:K},null,8,["modelValue"])]),t("div",fe,[c(g(R),{modelValue:r.value.includeImages,"onUpdate:modelValue":e[5]||(e[5]=s=>r.value.includeImages=s),label:"Include Images"},null,8,["modelValue"]),c(g(R),{modelValue:r.value.includeAttachments,"onUpdate:modelValue":e[6]||(e[6]=s=>r.value.includeAttachments=s),label:"Include Attachments"},null,8,["modelValue"]),c(g(R),{modelValue:r.value.includeSignature,"onUpdate:modelValue":e[7]||(e[7]=s=>r.value.includeSignature=s),label:"Include Signature"},null,8,["modelValue"])]),t("div",pe,[e[14]||(e[14]=t("h5",{class:"text-sm font-medium text-gray-900 mb-2"},"Include Sections",-1)),t("div",he,[(n(),i(b,null,k(X,s=>c(g(R),{key:s.key,modelValue:r.value.sections[s.key],"onUpdate:modelValue":y=>r.value.sections[s.key]=y,label:s.label},null,8,["modelValue","onUpdate:modelValue","label"])),64))])]),t("div",Oe,[c(g(Q),{modelValue:r.value.title,"onUpdate:modelValue":e[8]||(e[8]=s=>r.value.title=s),label:"Report Title",placeholder:"Work Order Report"},null,8,["modelValue"]),c(g(Q),{modelValue:r.value.subtitle,"onUpdate:modelValue":e[9]||(e[9]=s=>r.value.subtitle=s),label:"Subtitle (Optional)",placeholder:"Generated on {date}"},null,8,["modelValue"])])]),t("div",Ce,[e[16]||(e[16]=t("h4",{class:"text-sm font-medium text-gray-900 mb-3"},"Quick Templates",-1)),t("div",Se,[(n(),i(b,null,k(Z,s=>t("div",{key:s.key,class:"p-3 border border-gray-200 rounded-lg cursor-pointer hover:border-primary-300 hover:bg-primary-50 transition-colors",onClick:y=>oe(s)},[t("div",Te,[(n(),de(ue(s.icon),{class:"w-5 h-5 text-gray-600 mr-2"})),t("span",Ve,o(s.name),1)]),t("p",De,o(s.description),1)],8,Re)),64))])]),h.value?(n(),i("div",Fe,[e[45]||(e[45]=t("div",{class:"bg-gray-50 px-4 py-2 border-b border-gray-200"},[t("h4",{class:"text-sm font-medium text-gray-900"},"Report Preview")],-1)),t("div",Ie,[t("div",Ae,[t("div",Pe,[t("h1",Me,o(r.value.title||"Work Order Report"),1),r.value.subtitle?(n(),i("p",Ne,o(r.value.subtitle.replace("{date}",V(new Date))),1)):m("",!0),t("div",$e," Work Order ID: "+o(l.workOrder.workOrderId||l.workOrder.id),1)]),r.value.sections.basic?(n(),i("div",Ue,[e[24]||(e[24]=t("h2",{class:"text-lg font-semibold text-gray-900 mb-3"},"Basic Information",-1)),t("div",Be,[t("div",null,[e[17]||(e[17]=t("strong",null,"Title:",-1)),u(" "+o(l.workOrder.title),1)]),t("div",null,[e[18]||(e[18]=t("strong",null,"Status:",-1)),u(" "+o(U(l.workOrder.status)),1)]),t("div",null,[e[19]||(e[19]=t("strong",null,"Priority:",-1)),u(" "+o(re(l.workOrder.priority)),1)]),t("div",null,[e[20]||(e[20]=t("strong",null,"Category:",-1)),u(" "+o(((d=l.workOrder.category)==null?void 0:d.name)||"Not specified"),1)]),t("div",null,[e[21]||(e[21]=t("strong",null,"Created:",-1)),u(" "+o(V(l.workOrder.createdAt)),1)]),t("div",null,[e[22]||(e[22]=t("strong",null,"Due Date:",-1)),u(" "+o(V(l.workOrder.dueDate)||"Not set"),1)])]),l.workOrder.description?(n(),i("div",Le,[e[23]||(e[23]=t("strong",null,"Description:",-1)),t("p",je,o(l.workOrder.description),1)])):m("",!0)])):m("",!0),r.value.sections.asset&&(l.workOrder.asset||l.workOrder.location)?(n(),i("div",He,[e[27]||(e[27]=t("h2",{class:"text-lg font-semibold text-gray-900 mb-3"},"Asset & Location",-1)),t("div",ze,[l.workOrder.asset?(n(),i("div",We,[e[25]||(e[25]=t("strong",null,"Asset:",-1)),u(" "+o(l.workOrder.asset.name)+" ",1),t("div",Ge,o(l.workOrder.asset.model||""),1)])):m("",!0),l.workOrder.location?(n(),i("div",Ee,[e[26]||(e[26]=t("strong",null,"Location:",-1)),u(" "+o(l.workOrder.location.name)+" ",1),t("div",qe,o(l.workOrder.location.address||""),1)])):m("",!0)])])):m("",!0),r.value.sections.assignment&&(l.workOrder.primaryUser||(v=l.workOrder.assignedTo)!=null&&v.length||l.workOrder.team)?(n(),i("div",Qe,[e[31]||(e[31]=t("h2",{class:"text-lg font-semibold text-gray-900 mb-3"},"Assignment",-1)),t("div",Ye,[l.workOrder.primaryUser?(n(),i("div",Je,[e[28]||(e[28]=t("strong",null,"Primary Assignee:",-1)),u(" "+o(l.workOrder.primaryUser.firstName)+" "+o(l.workOrder.primaryUser.lastName),1)])):m("",!0),l.workOrder.team?(n(),i("div",Ke,[e[29]||(e[29]=t("strong",null,"Team:",-1)),u(" "+o(l.workOrder.team.name),1)])):m("",!0),(B=l.workOrder.assignedTo)!=null&&B.length?(n(),i("div",Xe,[e[30]||(e[30]=t("strong",null,"Additional Assignees:",-1)),t("ul",Ze,[(n(!0),i(b,null,k(l.workOrder.assignedTo,s=>(n(),i("li",{key:s.id},o(s.firstName)+" "+o(s.lastName),1))),128))])])):m("",!0)])])):m("",!0),r.value.sections.tasks&&((L=l.workOrder.tasks)!=null&&L.length)?(n(),i("div",_e,[e[32]||(e[32]=t("h2",{class:"text-lg font-semibold text-gray-900 mb-3"},"Tasks & Checklist",-1)),t("div",et,[(n(!0),i(b,null,k(l.workOrder.tasks,s=>(n(),i("div",{key:s.id,class:"flex items-center"},[t("span",tt,o(s.completed?"✓":"○"),1),t("span",{class:me({"line-through text-gray-500":s.completed})},o(s.name),3)]))),128))]),t("div",st," Progress: "+o(_.value)+"/"+o(l.workOrder.tasks.length)+" completed ",1)])):m("",!0),r.value.sections.parts&&((j=l.workOrder.parts)!=null&&j.length)?(n(),i("div",ot,[e[34]||(e[34]=t("h2",{class:"text-lg font-semibold text-gray-900 mb-3"},"Parts & Materials",-1)),t("div",rt,[t("table",lt,[e[33]||(e[33]=t("thead",null,[t("tr",{class:"border-b"},[t("th",{class:"text-left py-2"},"Part Number"),t("th",{class:"text-left py-2"},"Name"),t("th",{class:"text-right py-2"},"Qty"),t("th",{class:"text-right py-2"},"Unit Cost"),t("th",{class:"text-right py-2"},"Total")])],-1)),t("tbody",null,[(n(!0),i(b,null,k(l.workOrder.parts,s=>(n(),i("tr",{key:s.id,class:"border-b"},[t("td",at,o(s.partNumber),1),t("td",nt,o(s.name),1),t("td",it,o(s.quantity),1),t("td",dt,"$"+o((s.unitCost||0).toFixed(2)),1),t("td",ut,"$"+o((s.quantity*(s.unitCost||0)).toFixed(2)),1)]))),128))])])])])):m("",!0),r.value.sections.time&&((H=l.workOrder.timeEntries)!=null&&H.length)?(n(),i("div",mt,[e[36]||(e[36]=t("h2",{class:"text-lg font-semibold text-gray-900 mb-3"},"Labor Time",-1)),t("div",ct,[t("table",gt,[e[35]||(e[35]=t("thead",null,[t("tr",{class:"border-b"},[t("th",{class:"text-left py-2"},"User"),t("th",{class:"text-left py-2"},"Description"),t("th",{class:"text-right py-2"},"Hours"),t("th",{class:"text-right py-2"},"Rate"),t("th",{class:"text-right py-2"},"Cost")])],-1)),t("tbody",null,[(n(!0),i(b,null,k(l.workOrder.timeEntries,s=>{var y,f;return n(),i("tr",{key:s.id,class:"border-b"},[t("td",vt,o((y=s.user)==null?void 0:y.firstName)+" "+o((f=s.user)==null?void 0:f.lastName),1),t("td",yt,o(s.description),1),t("td",bt,o(le(s.duration)),1),t("td",kt,"$"+o((s.hourlyRate||0).toFixed(2)),1),t("td",xt,"$"+o((s.duration*(s.hourlyRate||0)).toFixed(2)),1)])}),128))])])])])):m("",!0),r.value.sections.costs&&((z=l.workOrder.parts)!=null&&z.length||(W=l.workOrder.timeEntries)!=null&&W.length||(E=(G=l.workOrder.costTracking)==null?void 0:G.costs)!=null&&E.length)?(n(),i("div",wt,[e[43]||(e[43]=t("h2",{class:"text-lg font-semibold text-gray-900 mb-3"},"Cost Summary",-1)),t("div",ft,[t("div",pt,[t("div",null,[e[37]||(e[37]=t("strong",null,"Auto Labor:",-1)),u(" $"+o(I.value.toFixed(2)),1)]),t("div",null,[e[38]||(e[38]=t("strong",null,"Auto Parts:",-1)),u(" $"+o(A.value.toFixed(2)),1)]),t("div",null,[e[39]||(e[39]=t("strong",null,"Materials:",-1)),u(" $"+o(P.value.toFixed(2)),1)]),t("div",null,[e[40]||(e[40]=t("strong",null,"Add'l Labor:",-1)),u(" $"+o(M.value.toFixed(2)),1)]),t("div",null,[e[41]||(e[41]=t("strong",null,"Other Costs:",-1)),u(" $"+o(N.value.toFixed(2)),1)]),t("div",ht,[e[42]||(e[42]=t("strong",null,"Total Cost:",-1)),u(" $"+o(ee.value.toFixed(2)),1)])])])])):m("",!0),r.value.sections.history&&((q=l.workOrder.statusHistory)!=null&&q.length)?(n(),i("div",Ot,[e[44]||(e[44]=t("h2",{class:"text-lg font-semibold text-gray-900 mb-3"},"Status History",-1)),t("div",Ct,[(n(!0),i(b,null,k(l.workOrder.statusHistory,s=>{var y,f;return n(),i("div",{key:s.id,class:"flex justify-between border-b pb-2"},[t("div",null,[t("strong",null,o(U(s.status)),1),t("div",St,o((y=s.user)==null?void 0:y.firstName)+" "+o((f=s.user)==null?void 0:f.lastName),1),s.comment?(n(),i("div",Rt,o(s.comment),1)):m("",!0)]),t("div",Tt,o(D(s.timestamp)),1)])}),128))])])):m("",!0),t("div",Vt," Generated on "+o(D(new Date))+" | CMMS Work Order Report ",1)])])])):m("",!0),T.value.length>0?(n(),i("div",Dt,[e[48]||(e[48]=t("h4",{class:"text-sm font-medium text-gray-900 mb-2"},"Recent Reports",-1)),t("div",Ft,[(n(!0),i(b,null,k(T.value.slice(0,3),s=>(n(),i("div",{key:s.id,class:"flex items-center justify-between p-3 bg-gray-50 rounded-lg"},[t("div",It,[e[46]||(e[46]=t("svg",{class:"w-4 h-4 text-red-500 mr-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z"})],-1)),t("div",null,[t("p",At,o(s.name),1),t("p",Pt,o(D(s.createdAt)),1)])]),t("div",Mt,[c(g(S),{variant:"ghost",size:"sm",onClick:y=>$(s)},{default:C(()=>e[47]||(e[47]=[t("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1)])),_:2,__:[47]},1032,["onClick"])])]))),128))])])):m("",!0)])}}},Wt=ae(Nt,[["__scopeId","data-v-7a89fb10"]]);export{Wt as R}; +import{_ as ae,r as O,c as x,o as ne,a as i,g as n,b as t,aT as ie,j as m,d as c,w as C,k as u,t as o,e as g,F as S,af as b,aR as k,i as de,aX as ue,n as me}from"./index-QAlcqU00.js";import{F as Q}from"./FPInput-D5RURom0.js";import{F as R}from"./FPCheckbox-DcRYwN3n.js";import{F as X}from"./FPSelect-j7n_x8eB.js";import{S as ce,P as ge}from"./workOrder-jNxj_kjQ.js";import{u as ve}from"./useWorkOrders-CVmaGBfy.js";const ye={class:"report-generator"},be={class:"flex items-center justify-between mb-4"},ke={class:"flex items-center space-x-2"},xe={class:"mb-6 p-4 bg-gray-50 border border-gray-200 rounded-lg"},we={class:"grid grid-cols-1 md:grid-cols-2 gap-4 mb-4"},fe={class:"grid grid-cols-1 md:grid-cols-3 gap-4 mb-4"},pe={class:"mb-4"},he={class:"grid grid-cols-2 md:grid-cols-4 gap-2"},Oe={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},Ce={class:"mb-6"},Se={class:"grid grid-cols-1 md:grid-cols-3 gap-3"},Re=["onClick"],Te={class:"flex items-center mb-2"},Ve={class:"font-medium text-gray-900"},De={class:"text-xs text-gray-600"},Fe={key:0,class:"mb-6 border border-gray-200 rounded-lg overflow-hidden"},Ie={class:"p-6 bg-white max-h-96 overflow-y-auto"},Ae={class:"report-preview"},Pe={class:"mb-6 text-center border-b border-gray-200 pb-4"},Me={class:"text-2xl font-bold text-gray-900"},Ne={key:0,class:"text-gray-600 mt-1"},$e={class:"mt-2 text-sm text-gray-500"},Ue={key:0,class:"mb-6"},Be={class:"grid grid-cols-2 gap-4 text-sm"},Le={key:0,class:"mt-3"},je={class:"mt-1 text-gray-700"},He={key:1,class:"mb-6"},ze={class:"grid grid-cols-2 gap-4 text-sm"},We={key:0},Ge={class:"text-gray-600"},Ee={key:1},qe={class:"text-gray-600"},Qe={key:2,class:"mb-6"},Xe={class:"text-sm space-y-2"},Ye={key:0},Je={key:1},Ke={key:2},Ze={class:"list-disc list-inside ml-4"},_e={key:3,class:"mb-6"},et={class:"space-y-2 text-sm"},tt={class:"mr-2"},st={class:"mt-2 text-sm text-gray-600"},ot={key:4,class:"mb-6"},rt={class:"overflow-x-auto"},lt={class:"w-full text-sm"},at={class:"py-2"},nt={class:"py-2"},it={class:"text-right py-2"},dt={class:"text-right py-2"},ut={class:"text-right py-2"},mt={key:5,class:"mb-6"},ct={class:"overflow-x-auto"},gt={class:"w-full text-sm"},vt={class:"py-2"},yt={class:"py-2"},bt={class:"text-right py-2"},kt={class:"text-right py-2"},xt={class:"text-right py-2"},wt={key:6,class:"mb-6"},ft={class:"bg-gray-50 p-4 rounded"},pt={class:"grid grid-cols-2 gap-4 text-sm"},ht={class:"text-lg col-span-2 text-center border-t pt-2 mt-2"},Ot={key:7,class:"mb-6"},Ct={class:"space-y-2 text-sm"},St={class:"text-gray-600"},Rt={key:0,class:"text-gray-700 italic"},Tt={class:"text-gray-500"},Vt={class:"mt-8 pt-4 border-t border-gray-200 text-center text-xs text-gray-500"},Dt={key:1,class:"mb-4"},Ft={class:"space-y-2"},It={class:"flex items-center"},At={class:"text-sm font-medium text-gray-900"},Pt={class:"text-xs text-gray-500"},Mt={class:"flex items-center space-x-2"},Nt={__name:"ReportGenerator",props:{workOrder:{type:Object,required:!0},disabled:{type:Boolean,default:!1}},emits:["report-generated"],setup(l,{emit:$t}){const w=l,p=ve(),F=O(!1),h=O(!1),T=O([]),r=O({template:"complete",format:"pdf",title:"Work Order Report",subtitle:"Generated on {date}",includeImages:!0,includeAttachments:!1,includeSignature:!0,sections:{basic:!0,asset:!0,assignment:!0,tasks:!0,parts:!0,time:!0,costs:!0,history:!0}}),Y=[{value:"summary",title:"Summary Report"},{value:"complete",title:"Complete Report"},{value:"maintenance",title:"Maintenance Report"},{value:"cost",title:"Cost Report"},{value:"custom",title:"Custom Report"}],J=[{value:"pdf",title:"PDF Document"},{value:"html",title:"HTML Page"},{value:"excel",title:"Excel Spreadsheet"}],K=[{key:"basic",label:"Basic Info"},{key:"asset",label:"Asset & Location"},{key:"assignment",label:"Assignment"},{key:"tasks",label:"Tasks"},{key:"parts",label:"Parts"},{key:"time",label:"Time Tracking"},{key:"costs",label:"Cost Summary"},{key:"history",label:"Status History"}],Z=[{key:"maintenance",name:"Maintenance Report",description:"Focus on tasks, parts, and completion",icon:"svg",sections:{basic:!0,asset:!0,tasks:!0,parts:!0,history:!0}},{key:"cost",name:"Cost Analysis",description:"Detailed cost breakdown and labor",icon:"svg",sections:{basic:!0,parts:!0,time:!0,costs:!0}},{key:"summary",name:"Executive Summary",description:"High-level overview for management",icon:"svg",sections:{basic:!0,assignment:!0,costs:!0}}],_=x(()=>{var a;return((a=w.workOrder.tasks)==null?void 0:a.filter(e=>e.completed).length)||0}),I=x(()=>{var a;return((a=w.workOrder.timeEntries)==null?void 0:a.reduce((e,d)=>e+d.duration*(d.hourlyRate||0),0))||0}),A=x(()=>{var a;return((a=w.workOrder.parts)==null?void 0:a.reduce((e,d)=>e+d.quantity*(d.unitCost||0),0))||0}),P=x(()=>{var a,e;return((e=(a=w.workOrder.costTracking)==null?void 0:a.costs)==null?void 0:e.filter(d=>d.category==="Material").reduce((d,v)=>d+(v.amount||0),0))||0}),M=x(()=>{var a,e;return((e=(a=w.workOrder.costTracking)==null?void 0:a.costs)==null?void 0:e.filter(d=>d.category==="Labor").reduce((d,v)=>d+(v.amount||0),0))||0}),N=x(()=>{var a,e;return((e=(a=w.workOrder.costTracking)==null?void 0:a.costs)==null?void 0:e.filter(d=>d.category==="Other").reduce((d,v)=>d+(v.amount||0),0))||0}),ee=x(()=>I.value+A.value+P.value+M.value+N.value),te=async a=>{try{if(!p){console.error("Work orders composable not available");return}const e={template:r.value.template,format:r.value.format,sections:r.value.sections,title:r.value.customTitle,subtitle:r.value.customSubtitle,includeImages:r.value.includeImages,includeAttachments:r.value.includeAttachments,includeSignatures:r.value.includeSignatures},d=new Date().toISOString().slice(0,19).replace(/:/g,"-"),v=`${a.name}-${d}.${a.format}`;await p.downloadReport(a.workOrderId,e,v),console.log("Report downloaded successfully")}catch(e){throw console.error("Download failed:",e),e}},$=async a=>{try{await te(a)}catch(e){console.error("Report download error:",e)}},se=async a=>{try{if(!p){console.error("Work orders composable not available");return}const e={template:r.value.template,format:"PDF",sections:r.value.sections,title:r.value.customTitle,subtitle:r.value.customSubtitle,includeImages:r.value.includeImages,includeAttachments:r.value.includeAttachments,includeSignatures:r.value.includeSignatures};await p.previewReport(a.workOrderId,e),console.log("Report preview opened")}catch(e){console.error("Preview failed:",e)}},oe=a=>{r.value.sections={...a.sections},r.value.template=a.key},U=a=>{var e;return((e=ce[a])==null?void 0:e.label)||a},re=a=>{var e;return((e=ge[a])==null?void 0:e.label)||a},V=a=>a?new Date(a).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"}):"",D=a=>a?new Date(a).toLocaleString("en-US",{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}):"",le=a=>{if(!a)return"0:00";const e=Math.floor(a),d=Math.round((a-e)*60);return`${e}:${d.toString().padStart(2,"0")}`};return ne(()=>{T.value=[{id:1,name:"Complete Report - WO-1244",createdAt:new Date(Date.now()-864e5).toISOString(),format:"pdf"},{id:2,name:"Cost Analysis - WO-1243",createdAt:new Date(Date.now()-1728e5).toISOString(),format:"pdf"}]}),(a,e)=>{var d,v,B,L,j,H,z,W,G,E,q;return n(),i("div",ye,[t("div",be,[e[13]||(e[13]=t("div",{class:"flex items-center space-x-3"},[t("h3",{class:"text-lg font-medium text-gray-900"},"Report Generation"),t("div",{class:"px-2 py-1 bg-blue-100 text-blue-800 text-xs font-medium rounded-full"}," 🎭 Demo Mode ")],-1)),t("div",ke,[c(g(S),{variant:"outline",size:"sm",onClick:e[0]||(e[0]=s=>h.value=!h.value)},{default:C(()=>[e[10]||(e[10]=t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"}),t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"})],-1)),u(" "+o(h.value?"Hide Preview":"Show Preview"),1)]),_:1,__:[10]}),c(g(S),{variant:"secondary",size:"sm",onClick:e[1]||(e[1]=s=>se({workOrderId:l.workOrder.id,name:r.value.title})),loading:F.value,disabled:l.disabled},{default:C(()=>e[11]||(e[11]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"})],-1),u(" Preview ",-1)])),_:1,__:[11]},8,["loading","disabled"]),c(g(S),{variant:"primary",size:"sm",onClick:e[2]||(e[2]=s=>$({workOrderId:l.workOrder.id,name:r.value.title})),loading:F.value,disabled:l.disabled},{default:C(()=>e[12]||(e[12]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1),u(" Download PDF ",-1)])),_:1,__:[12]},8,["loading","disabled"])])]),e[49]||(e[49]=ie('

Demo Mode: PDF reports will be generated using sample data since no backend is connected. The generated PDFs are fully functional and can be downloaded and opened in any PDF viewer.

',1)),t("div",xe,[e[15]||(e[15]=t("h4",{class:"text-sm font-medium text-gray-900 mb-3"},"Report Configuration",-1)),t("div",we,[c(g(X),{modelValue:r.value.template,"onUpdate:modelValue":e[3]||(e[3]=s=>r.value.template=s),label:"Report Template",options:Y},null,8,["modelValue"]),c(g(X),{modelValue:r.value.format,"onUpdate:modelValue":e[4]||(e[4]=s=>r.value.format=s),label:"Format",options:J},null,8,["modelValue"])]),t("div",fe,[c(g(R),{modelValue:r.value.includeImages,"onUpdate:modelValue":e[5]||(e[5]=s=>r.value.includeImages=s),label:"Include Images"},null,8,["modelValue"]),c(g(R),{modelValue:r.value.includeAttachments,"onUpdate:modelValue":e[6]||(e[6]=s=>r.value.includeAttachments=s),label:"Include Attachments"},null,8,["modelValue"]),c(g(R),{modelValue:r.value.includeSignature,"onUpdate:modelValue":e[7]||(e[7]=s=>r.value.includeSignature=s),label:"Include Signature"},null,8,["modelValue"])]),t("div",pe,[e[14]||(e[14]=t("h5",{class:"text-sm font-medium text-gray-900 mb-2"},"Include Sections",-1)),t("div",he,[(n(),i(b,null,k(K,s=>c(g(R),{key:s.key,modelValue:r.value.sections[s.key],"onUpdate:modelValue":y=>r.value.sections[s.key]=y,label:s.label},null,8,["modelValue","onUpdate:modelValue","label"])),64))])]),t("div",Oe,[c(g(Q),{modelValue:r.value.title,"onUpdate:modelValue":e[8]||(e[8]=s=>r.value.title=s),label:"Report Title",placeholder:"Work Order Report"},null,8,["modelValue"]),c(g(Q),{modelValue:r.value.subtitle,"onUpdate:modelValue":e[9]||(e[9]=s=>r.value.subtitle=s),label:"Subtitle (Optional)",placeholder:"Generated on {date}"},null,8,["modelValue"])])]),t("div",Ce,[e[16]||(e[16]=t("h4",{class:"text-sm font-medium text-gray-900 mb-3"},"Quick Templates",-1)),t("div",Se,[(n(),i(b,null,k(Z,s=>t("div",{key:s.key,class:"p-3 border border-gray-200 rounded-lg cursor-pointer hover:border-primary-300 hover:bg-primary-50 transition-colors",onClick:y=>oe(s)},[t("div",Te,[(n(),de(ue(s.icon),{class:"w-5 h-5 text-gray-600 mr-2"})),t("span",Ve,o(s.name),1)]),t("p",De,o(s.description),1)],8,Re)),64))])]),h.value?(n(),i("div",Fe,[e[45]||(e[45]=t("div",{class:"bg-gray-50 px-4 py-2 border-b border-gray-200"},[t("h4",{class:"text-sm font-medium text-gray-900"},"Report Preview")],-1)),t("div",Ie,[t("div",Ae,[t("div",Pe,[t("h1",Me,o(r.value.title||"Work Order Report"),1),r.value.subtitle?(n(),i("p",Ne,o(r.value.subtitle.replace("{date}",V(new Date))),1)):m("",!0),t("div",$e," Work Order ID: "+o(l.workOrder.workOrderId||l.workOrder.id),1)]),r.value.sections.basic?(n(),i("div",Ue,[e[24]||(e[24]=t("h2",{class:"text-lg font-semibold text-gray-900 mb-3"},"Basic Information",-1)),t("div",Be,[t("div",null,[e[17]||(e[17]=t("strong",null,"Title:",-1)),u(" "+o(l.workOrder.title),1)]),t("div",null,[e[18]||(e[18]=t("strong",null,"Status:",-1)),u(" "+o(U(l.workOrder.status)),1)]),t("div",null,[e[19]||(e[19]=t("strong",null,"Priority:",-1)),u(" "+o(re(l.workOrder.priority)),1)]),t("div",null,[e[20]||(e[20]=t("strong",null,"Category:",-1)),u(" "+o(((d=l.workOrder.category)==null?void 0:d.name)||"Not specified"),1)]),t("div",null,[e[21]||(e[21]=t("strong",null,"Created:",-1)),u(" "+o(V(l.workOrder.createdAt)),1)]),t("div",null,[e[22]||(e[22]=t("strong",null,"Due Date:",-1)),u(" "+o(V(l.workOrder.dueDate)||"Not set"),1)])]),l.workOrder.description?(n(),i("div",Le,[e[23]||(e[23]=t("strong",null,"Description:",-1)),t("p",je,o(l.workOrder.description),1)])):m("",!0)])):m("",!0),r.value.sections.asset&&(l.workOrder.asset||l.workOrder.location)?(n(),i("div",He,[e[27]||(e[27]=t("h2",{class:"text-lg font-semibold text-gray-900 mb-3"},"Asset & Location",-1)),t("div",ze,[l.workOrder.asset?(n(),i("div",We,[e[25]||(e[25]=t("strong",null,"Asset:",-1)),u(" "+o(l.workOrder.asset.name)+" ",1),t("div",Ge,o(l.workOrder.asset.model||""),1)])):m("",!0),l.workOrder.location?(n(),i("div",Ee,[e[26]||(e[26]=t("strong",null,"Location:",-1)),u(" "+o(l.workOrder.location.name)+" ",1),t("div",qe,o(l.workOrder.location.address||""),1)])):m("",!0)])])):m("",!0),r.value.sections.assignment&&(l.workOrder.primaryUser||(v=l.workOrder.assignedTo)!=null&&v.length||l.workOrder.team)?(n(),i("div",Qe,[e[31]||(e[31]=t("h2",{class:"text-lg font-semibold text-gray-900 mb-3"},"Assignment",-1)),t("div",Xe,[l.workOrder.primaryUser?(n(),i("div",Ye,[e[28]||(e[28]=t("strong",null,"Primary Assignee:",-1)),u(" "+o(l.workOrder.primaryUser.firstName)+" "+o(l.workOrder.primaryUser.lastName),1)])):m("",!0),l.workOrder.team?(n(),i("div",Je,[e[29]||(e[29]=t("strong",null,"Team:",-1)),u(" "+o(l.workOrder.team.name),1)])):m("",!0),(B=l.workOrder.assignedTo)!=null&&B.length?(n(),i("div",Ke,[e[30]||(e[30]=t("strong",null,"Additional Assignees:",-1)),t("ul",Ze,[(n(!0),i(b,null,k(l.workOrder.assignedTo,s=>(n(),i("li",{key:s.id},o(s.firstName)+" "+o(s.lastName),1))),128))])])):m("",!0)])])):m("",!0),r.value.sections.tasks&&((L=l.workOrder.tasks)!=null&&L.length)?(n(),i("div",_e,[e[32]||(e[32]=t("h2",{class:"text-lg font-semibold text-gray-900 mb-3"},"Tasks & Checklist",-1)),t("div",et,[(n(!0),i(b,null,k(l.workOrder.tasks,s=>(n(),i("div",{key:s.id,class:"flex items-center"},[t("span",tt,o(s.completed?"✓":"○"),1),t("span",{class:me({"line-through text-gray-500":s.completed})},o(s.name),3)]))),128))]),t("div",st," Progress: "+o(_.value)+"/"+o(l.workOrder.tasks.length)+" completed ",1)])):m("",!0),r.value.sections.parts&&((j=l.workOrder.parts)!=null&&j.length)?(n(),i("div",ot,[e[34]||(e[34]=t("h2",{class:"text-lg font-semibold text-gray-900 mb-3"},"Parts & Materials",-1)),t("div",rt,[t("table",lt,[e[33]||(e[33]=t("thead",null,[t("tr",{class:"border-b"},[t("th",{class:"text-left py-2"},"Part Number"),t("th",{class:"text-left py-2"},"Name"),t("th",{class:"text-right py-2"},"Qty"),t("th",{class:"text-right py-2"},"Unit Cost"),t("th",{class:"text-right py-2"},"Total")])],-1)),t("tbody",null,[(n(!0),i(b,null,k(l.workOrder.parts,s=>(n(),i("tr",{key:s.id,class:"border-b"},[t("td",at,o(s.partNumber),1),t("td",nt,o(s.name),1),t("td",it,o(s.quantity),1),t("td",dt,"$"+o((s.unitCost||0).toFixed(2)),1),t("td",ut,"$"+o((s.quantity*(s.unitCost||0)).toFixed(2)),1)]))),128))])])])])):m("",!0),r.value.sections.time&&((H=l.workOrder.timeEntries)!=null&&H.length)?(n(),i("div",mt,[e[36]||(e[36]=t("h2",{class:"text-lg font-semibold text-gray-900 mb-3"},"Labor Time",-1)),t("div",ct,[t("table",gt,[e[35]||(e[35]=t("thead",null,[t("tr",{class:"border-b"},[t("th",{class:"text-left py-2"},"User"),t("th",{class:"text-left py-2"},"Description"),t("th",{class:"text-right py-2"},"Hours"),t("th",{class:"text-right py-2"},"Rate"),t("th",{class:"text-right py-2"},"Cost")])],-1)),t("tbody",null,[(n(!0),i(b,null,k(l.workOrder.timeEntries,s=>{var y,f;return n(),i("tr",{key:s.id,class:"border-b"},[t("td",vt,o((y=s.user)==null?void 0:y.firstName)+" "+o((f=s.user)==null?void 0:f.lastName),1),t("td",yt,o(s.description),1),t("td",bt,o(le(s.duration)),1),t("td",kt,"$"+o((s.hourlyRate||0).toFixed(2)),1),t("td",xt,"$"+o((s.duration*(s.hourlyRate||0)).toFixed(2)),1)])}),128))])])])])):m("",!0),r.value.sections.costs&&((z=l.workOrder.parts)!=null&&z.length||(W=l.workOrder.timeEntries)!=null&&W.length||(E=(G=l.workOrder.costTracking)==null?void 0:G.costs)!=null&&E.length)?(n(),i("div",wt,[e[43]||(e[43]=t("h2",{class:"text-lg font-semibold text-gray-900 mb-3"},"Cost Summary",-1)),t("div",ft,[t("div",pt,[t("div",null,[e[37]||(e[37]=t("strong",null,"Auto Labor:",-1)),u(" $"+o(I.value.toFixed(2)),1)]),t("div",null,[e[38]||(e[38]=t("strong",null,"Auto Parts:",-1)),u(" $"+o(A.value.toFixed(2)),1)]),t("div",null,[e[39]||(e[39]=t("strong",null,"Materials:",-1)),u(" $"+o(P.value.toFixed(2)),1)]),t("div",null,[e[40]||(e[40]=t("strong",null,"Add'l Labor:",-1)),u(" $"+o(M.value.toFixed(2)),1)]),t("div",null,[e[41]||(e[41]=t("strong",null,"Other Costs:",-1)),u(" $"+o(N.value.toFixed(2)),1)]),t("div",ht,[e[42]||(e[42]=t("strong",null,"Total Cost:",-1)),u(" $"+o(ee.value.toFixed(2)),1)])])])])):m("",!0),r.value.sections.history&&((q=l.workOrder.statusHistory)!=null&&q.length)?(n(),i("div",Ot,[e[44]||(e[44]=t("h2",{class:"text-lg font-semibold text-gray-900 mb-3"},"Status History",-1)),t("div",Ct,[(n(!0),i(b,null,k(l.workOrder.statusHistory,s=>{var y,f;return n(),i("div",{key:s.id,class:"flex justify-between border-b pb-2"},[t("div",null,[t("strong",null,o(U(s.status)),1),t("div",St,o((y=s.user)==null?void 0:y.firstName)+" "+o((f=s.user)==null?void 0:f.lastName),1),s.comment?(n(),i("div",Rt,o(s.comment),1)):m("",!0)]),t("div",Tt,o(D(s.timestamp)),1)])}),128))])])):m("",!0),t("div",Vt," Generated on "+o(D(new Date))+" | CMMS Work Order Report ",1)])])])):m("",!0),T.value.length>0?(n(),i("div",Dt,[e[48]||(e[48]=t("h4",{class:"text-sm font-medium text-gray-900 mb-2"},"Recent Reports",-1)),t("div",Ft,[(n(!0),i(b,null,k(T.value.slice(0,3),s=>(n(),i("div",{key:s.id,class:"flex items-center justify-between p-3 bg-gray-50 rounded-lg"},[t("div",It,[e[46]||(e[46]=t("svg",{class:"w-4 h-4 text-red-500 mr-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z"})],-1)),t("div",null,[t("p",At,o(s.name),1),t("p",Pt,o(D(s.createdAt)),1)])]),t("div",Mt,[c(g(S),{variant:"ghost",size:"sm",onClick:y=>$(s)},{default:C(()=>e[47]||(e[47]=[t("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1)])),_:2,__:[47]},1032,["onClick"])])]))),128))])])):m("",!0)])}}},Wt=ae(Nt,[["__scopeId","data-v-7a89fb10"]]);export{Wt as R}; diff --git a/frontend/dist/assets/ReportsView-CBYhF-qa.js b/frontend/dist/assets/ReportsView-RBaluUKL.js similarity index 98% rename from frontend/dist/assets/ReportsView-CBYhF-qa.js rename to frontend/dist/assets/ReportsView-RBaluUKL.js index f7ff399d..3a2f78d8 100644 --- a/frontend/dist/assets/ReportsView-CBYhF-qa.js +++ b/frontend/dist/assets/ReportsView-RBaluUKL.js @@ -1 +1 @@ -import{bc as ze,aO as He,r as F,c as U,l as qe,_ as We,m as Me,o as Ne,b4 as Je,i as me,w as I,bl as Ge,g as x,b as e,d as R,a as P,j as te,e as y,t as f,af as oe,aQ as ne,n as Z,k as N,Q as Ve,F as ae}from"./index-BUdRbiwj.js";import{u as Ye}from"./useFormAutoSave-Jaawgo91.js";import{F as Qe,a as Ze}from"./FPPageHeader-CTG2L28r.js";import{F as se}from"./FPInput-CzR_dWoe.js";import{F as H}from"./FPCard-qHzcEQAE.js";import{F as Ee}from"./FPSelect-C7p47Ma2.js";import{F as Xe}from"./FPModal-DWGF1LV8.js";import{F as ue}from"./FPBadge-BKY5dPnL.js";import{F as et}from"./FPTabs-R71V25QN.js";import{_ as tt}from"./FormRestoreNotification-DYBlXhOP.js";class at extends ze{constructor(){super(),this.baseURL="/reports"}async getReports(t={}){const n=new URLSearchParams;t.page!==void 0&&n.set("page",t.page),t.size!==void 0&&n.set("size",t.size),t.search&&n.set("search",t.search),t.type&&n.set("type",t.type),t.status&&n.set("status",t.status),t.createdBy&&n.set("createdBy",t.createdBy),t.tags&&n.set("tags",t.tags.join(",")),t.sortBy&&n.set("sortBy",t.sortBy),t.sortDirection&&n.set("sortDirection",t.sortDirection);const b=n.toString()?`${this.baseURL}?${n}`:this.baseURL;return this.get(b)}async getReportById(t){return this.get(`${this.baseURL}/${t}`)}async createReport(t){return this.post(this.baseURL,t)}async updateReport(t,n){return this.put(`${this.baseURL}/${t}`,n)}async deleteReport(t){return this.delete(`${this.baseURL}/${t}`)}async duplicateReport(t,n={}){return this.post(`${this.baseURL}/${t}/duplicate`,n)}async executeReport(t,n={}){return this.post(`${this.baseURL}/${t}/execute`,n)}async previewReport(t,n={}){return this.post(`${this.baseURL}/preview`,{...t,...n})}async exportReport(t,n={}){return await this.request({url:`${this.baseURL}/${t}/export`,method:"POST",data:n,responseType:"blob"})}async getReportTemplates(t={}){const n=new URLSearchParams;t.type&&n.set("type",t.type),t.category&&n.set("category",t.category);const b=n.toString()?`${this.baseURL}/templates?${n}`:`${this.baseURL}/templates`;return this.get(b)}async createReportFromTemplate(t,n={}){return this.post(`${this.baseURL}/templates/${t}/create`,n)}async getDataSources(){return this.get(`${this.baseURL}/data-sources`)}async getDataSourceFields(t){return this.get(`${this.baseURL}/data-sources/${t}/fields`)}async getDataSourceSample(t,n={}){const b=new URLSearchParams;n.limit&&b.set("limit",n.limit);const E=b.toString()?`${this.baseURL}/data-sources/${t}/sample?${b}`:`${this.baseURL}/data-sources/${t}/sample`;return this.get(E)}async getReportSchedules(t={}){const n=new URLSearchParams;t.reportId&&n.set("reportId",t.reportId),t.isActive!==void 0&&n.set("isActive",t.isActive);const b=n.toString()?`${this.baseURL}/schedules?${n}`:`${this.baseURL}/schedules`;return this.get(b)}async createReportSchedule(t){return this.post(`${this.baseURL}/schedules`,t)}async updateReportSchedule(t,n){return this.put(`${this.baseURL}/schedules/${t}`,n)}async deleteReportSchedule(t){return this.delete(`${this.baseURL}/schedules/${t}`)}async testReportSchedule(t){return this.post(`${this.baseURL}/schedules/${t}/test`)}async getKPIs(t={}){const n=new URLSearchParams;t.category&&n.set("category",t.category),t.isActive!==void 0&&n.set("isActive",t.isActive),t.dashboardId&&n.set("dashboardId",t.dashboardId);const b=n.toString()?`/kpis?${n}`:"/kpis";return this.get(b)}async getKPIById(t){return this.get(`/kpis/${t}`)}async createKPI(t){return this.post("/kpis",t)}async updateKPI(t,n){return this.put(`/kpis/${t}`,n)}async deleteKPI(t){return this.delete(`/kpis/${t}`)}async calculateKPI(t,n={}){return this.post(`/kpis/${t}/calculate`,n)}async getKPIHistory(t,n={}){const b=new URLSearchParams;n.startDate&&b.set("startDate",n.startDate),n.endDate&&b.set("endDate",n.endDate),n.interval&&b.set("interval",n.interval);const E=b.toString()?`/kpis/${t}/history?${b}`:`/kpis/${t}/history`;return this.get(E)}async getDashboards(t={}){const n=new URLSearchParams;t.isPublic!==void 0&&n.set("isPublic",t.isPublic),t.createdBy&&n.set("createdBy",t.createdBy);const b=n.toString()?"/dashboards?${queryParams}":"/dashboards";return this.get(b)}async getDashboardById(t){return this.get(`/dashboards/${t}`)}async createDashboard(t){return this.post("/dashboards",t)}async updateDashboard(t,n){return this.put(`/dashboards/${t}`,n)}async deleteDashboard(t){return this.delete(`/dashboards/${t}`)}async duplicateDashboard(t,n={}){return this.post(`/dashboards/${t}/duplicate`,n)}async getDashboardData(t,n={}){return this.post(`/dashboards/${t}/data`,n)}async bulkDeleteReports(t){return this.post(`${this.baseURL}/bulk-delete`,{ids:t})}async bulkUpdateReportStatus(t,n){return this.post(`${this.baseURL}/bulk-update-status`,{ids:t,status:n})}async bulkExportReports(t,n={}){return await this.request({url:`${this.baseURL}/bulk-export`,method:"POST",data:{ids:t,...n},responseType:"blob"})}async getReportAnalytics(t={}){const n=new URLSearchParams;t.startDate&&n.set("startDate",t.startDate),t.endDate&&n.set("endDate",t.endDate),t.reportId&&n.set("reportId",t.reportId);const b=n.toString()?`${this.baseURL}/analytics?${n}`:`${this.baseURL}/analytics`;return this.get(b)}async getSystemMetrics(t={}){return this.get("/system/metrics",t)}}const k=new at,ye={DRAFT:"draft",PUBLISHED:"published",ARCHIVED:"archived"},Be=He("reports",()=>{const u=F(null),t=F(null),n=F([]),b=F([]),E=F({}),T=F([]),L=F(null),G=F({}),$=F([]),O=F(null),Y=F({}),J=F({}),M=F(null),l=F(!1),i=F(null),q=F({search:"",type:"",status:"",createdBy:"",tags:[]}),B=F(null),V=F(null),d=U(()=>{var a;return((a=u.value)==null?void 0:a.totalElements)||0}),h=U(()=>{var a,r;return((r=(a=u.value)==null?void 0:a.content)==null?void 0:r.filter(o=>o.status===ye.PUBLISHED))||[]}),_=U(()=>{var a,r;return((r=(a=u.value)==null?void 0:a.content)==null?void 0:r.filter(o=>o.status===ye.DRAFT))||[]}),w=U(()=>{var a,r;return((r=(a=u.value)==null?void 0:a.content)==null?void 0:r.filter(o=>o.status===ye.ARCHIVED))||[]}),S=U(()=>{var r,o;const a={};return(o=(r=u.value)==null?void 0:r.content)==null||o.forEach(m=>{a[m.type]||(a[m.type]=[]),a[m.type].push(m)}),a}),p=U(()=>{var a;return((a=T.value)==null?void 0:a.filter(r=>r.isActive))||[]}),g=U(()=>{var r;const a={};return(r=T.value)==null||r.forEach(o=>{a[o.category]||(a[o.category]=[]),a[o.category].push(o)}),a}),A=U(()=>{var a;return((a=$.value)==null?void 0:a.filter(r=>r.isPublic))||[]});return{reports:u,currentReport:t,reportTemplates:n,dataSources:b,dataSourceFields:E,kpis:T,currentKPI:L,kpiCalculations:G,dashboards:$,currentDashboard:O,dashboardData:Y,reportExecutions:J,previewData:M,loading:l,error:i,filters:q,reportAnalytics:B,systemMetrics:V,totalCount:d,publishedReports:h,draftReports:_,archivedReports:w,reportsByType:S,activeKPIs:p,kpisByCategory:g,publicDashboards:A,fetchReports:async(a={})=>{try{l.value=!0,i.value=null;const r={...a,...q.value};return u.value=await k.getReports(r),u.value}catch(r){throw i.value=r.message||"Failed to fetch reports",r}finally{l.value=!1}},fetchReportById:async a=>{try{return l.value=!0,i.value=null,t.value=await k.getReportById(a),t.value}catch(r){throw i.value=r.message||"Failed to fetch report",r}finally{l.value=!1}},createReport:async a=>{var r;try{l.value=!0,i.value=null;const o=await k.createReport(a);return(r=u.value)!=null&&r.content&&(u.value.content.unshift(o),u.value.totalElements++),t.value=o,o}catch(o){throw i.value=o.message||"Failed to create report",o}finally{l.value=!1}},updateReport:async(a,r)=>{var o,m;try{l.value=!0,i.value=null;const C=await k.updateReport(a,r);if((o=u.value)!=null&&o.content){const v=u.value.content.findIndex(s=>s.id===a);v!==-1&&(u.value.content[v]=C)}return((m=t.value)==null?void 0:m.id)===a&&(t.value=C),C}catch(C){throw i.value=C.message||"Failed to update report",C}finally{l.value=!1}},deleteReport:async a=>{var r,o;try{l.value=!0,i.value=null,await k.deleteReport(a),(r=u.value)!=null&&r.content&&(u.value.content=u.value.content.filter(m=>m.id!==a),u.value.totalElements--),((o=t.value)==null?void 0:o.id)===a&&(t.value=null),delete J.value[a]}catch(m){throw i.value=m.message||"Failed to delete report",m}finally{l.value=!1}},executeReport:async(a,r={})=>{try{l.value=!0,i.value=null;const o=await k.executeReport(a,r);return J.value[a]={...o,executedAt:new Date().toISOString(),params:r},o}catch(o){throw i.value=o.message||"Failed to execute report",o}finally{l.value=!1}},previewReport:async(a,r={})=>{try{return l.value=!0,i.value=null,M.value=await k.previewReport(a,r),M.value}catch(o){throw i.value=o.message||"Failed to preview report",o}finally{l.value=!1}},exportReport:async(a,r={})=>{var o,m;try{l.value=!0,i.value=null;const C=await k.exportReport(a,r),v=window.URL.createObjectURL(C),s=document.createElement("a");s.href=v;const c=new Date().toISOString().slice(0,10),Q=(m=(o=u.value)==null?void 0:o.content)==null?void 0:m.find(je=>je.id===a),Ke=`${(Q==null?void 0:Q.name)||"report"}_${c}.${r.format||"pdf"}`;return s.download=Ke,document.body.appendChild(s),s.click(),window.URL.revokeObjectURL(v),document.body.removeChild(s),C}catch(C){throw i.value=C.message||"Failed to export report",C}finally{l.value=!1}},fetchKPIs:async(a={})=>{try{return l.value=!0,i.value=null,T.value=await k.getKPIs(a),T.value}catch(r){throw i.value=r.message||"Failed to fetch KPIs",r}finally{l.value=!1}},fetchKPIById:async a=>{try{return l.value=!0,i.value=null,L.value=await k.getKPIById(a),L.value}catch(r){throw i.value=r.message||"Failed to fetch KPI",r}finally{l.value=!1}},createKPI:async a=>{try{l.value=!0,i.value=null;const r=await k.createKPI(a);return Array.isArray(T.value)&&T.value.unshift(r),L.value=r,r}catch(r){throw i.value=r.message||"Failed to create KPI",r}finally{l.value=!1}},updateKPI:async(a,r)=>{var o;try{l.value=!0,i.value=null;const m=await k.updateKPI(a,r);if(Array.isArray(T.value)){const C=T.value.findIndex(v=>v.id===a);C!==-1&&(T.value[C]=m)}return((o=L.value)==null?void 0:o.id)===a&&(L.value=m),m}catch(m){throw i.value=m.message||"Failed to update KPI",m}finally{l.value=!1}},deleteKPI:async a=>{var r;try{l.value=!0,i.value=null,await k.deleteKPI(a),Array.isArray(T.value)&&(T.value=T.value.filter(o=>o.id!==a)),((r=L.value)==null?void 0:r.id)===a&&(L.value=null),delete G.value[a]}catch(o){throw i.value=o.message||"Failed to delete KPI",o}finally{l.value=!1}},calculateKPI:async(a,r={})=>{try{l.value=!0,i.value=null;const o=await k.calculateKPI(a,r);return G.value[a]={...o,calculatedAt:new Date().toISOString(),params:r},o}catch(o){throw i.value=o.message||"Failed to calculate KPI",o}finally{l.value=!1}},getKPIHistory:async(a,r={})=>{try{return l.value=!0,i.value=null,await k.getKPIHistory(a,r)}catch(o){throw i.value=o.message||"Failed to fetch KPI history",o}finally{l.value=!1}},fetchDashboards:async(a={})=>{try{return l.value=!0,i.value=null,$.value=await k.getDashboards(a),$.value}catch(r){throw i.value=r.message||"Failed to fetch dashboards",r}finally{l.value=!1}},fetchDashboardById:async a=>{try{return l.value=!0,i.value=null,O.value=await k.getDashboardById(a),O.value}catch(r){throw i.value=r.message||"Failed to fetch dashboard",r}finally{l.value=!1}},createDashboard:async a=>{try{l.value=!0,i.value=null;const r=await k.createDashboard(a);return Array.isArray($.value)&&$.value.unshift(r),O.value=r,r}catch(r){throw i.value=r.message||"Failed to create dashboard",r}finally{l.value=!1}},updateDashboard:async(a,r)=>{var o;try{l.value=!0,i.value=null;const m=await k.updateDashboard(a,r);if(Array.isArray($.value)){const C=$.value.findIndex(v=>v.id===a);C!==-1&&($.value[C]=m)}return((o=O.value)==null?void 0:o.id)===a&&(O.value=m),m}catch(m){throw i.value=m.message||"Failed to update dashboard",m}finally{l.value=!1}},deleteDashboard:async a=>{var r;try{l.value=!0,i.value=null,await k.deleteDashboard(a),Array.isArray($.value)&&($.value=$.value.filter(o=>o.id!==a)),((r=O.value)==null?void 0:r.id)===a&&(O.value=null),delete Y.value[a]}catch(o){throw i.value=o.message||"Failed to delete dashboard",o}finally{l.value=!1}},duplicateDashboard:async(a,r={})=>{try{l.value=!0,i.value=null;const o=await k.duplicateDashboard(a,r);return Array.isArray($.value)&&$.value.unshift(o),o}catch(o){throw i.value=o.message||"Failed to duplicate dashboard",o}finally{l.value=!1}},getDashboardData:async(a,r={})=>{try{l.value=!0,i.value=null;const o=await k.getDashboardData(a,r);return Y.value[a]={...o,loadedAt:new Date().toISOString(),params:r},o}catch(o){throw i.value=o.message||"Failed to fetch dashboard data",o}finally{l.value=!1}},fetchDataSources:async()=>{try{return l.value=!0,i.value=null,b.value=await k.getDataSources(),b.value}catch(a){throw i.value=a.message||"Failed to fetch data sources",a}finally{l.value=!1}},fetchDataSourceFields:async a=>{try{l.value=!0,i.value=null;const r=await k.getDataSourceFields(a);return E.value[a]=r,r}catch(r){throw i.value=r.message||"Failed to fetch data source fields",r}finally{l.value=!1}},fetchDataSourceSample:async(a,r={})=>{try{return l.value=!0,i.value=null,await k.getDataSourceSample(a,r)}catch(o){throw i.value=o.message||"Failed to fetch data source sample",o}finally{l.value=!1}},fetchReportTemplates:async(a={})=>{try{return l.value=!0,i.value=null,n.value=await k.getReportTemplates(a),n.value}catch(r){throw i.value=r.message||"Failed to fetch report templates",r}finally{l.value=!1}},createReportFromTemplate:async(a,r={})=>{var o;try{l.value=!0,i.value=null;const m=await k.createReportFromTemplate(a,r);return(o=u.value)!=null&&o.content&&(u.value.content.unshift(m),u.value.totalElements++),t.value=m,m}catch(m){throw i.value=m.message||"Failed to create report from template",m}finally{l.value=!1}},fetchReportAnalytics:async(a={})=>{try{return l.value=!0,i.value=null,B.value=await k.getReportAnalytics(a),B.value}catch(r){throw i.value=r.message||"Failed to fetch report analytics",r}finally{l.value=!1}},fetchSystemMetrics:async(a={})=>{try{return l.value=!0,i.value=null,V.value=await k.getSystemMetrics(a),V.value}catch(r){throw i.value=r.message||"Failed to fetch system metrics",r}finally{l.value=!1}},bulkDeleteReports:async a=>{var r;try{l.value=!0,i.value=null;const o=await k.bulkDeleteReports(a);return(r=u.value)!=null&&r.content&&(u.value.content=u.value.content.filter(m=>!a.includes(m.id)),u.value.totalElements-=o.deleted||a.length),a.forEach(m=>{delete J.value[m]}),o}catch(o){throw i.value=o.message||"Failed to bulk delete reports",o}finally{l.value=!1}},bulkUpdateReportStatus:async(a,r)=>{var o;try{l.value=!0,i.value=null;const m=await k.bulkUpdateReportStatus(a,r);return(o=u.value)!=null&&o.content&&(u.value.content=u.value.content.map(C=>a.includes(C.id)?{...C,status:r}:C)),m}catch(m){throw i.value=m.message||"Failed to bulk update report status",m}finally{l.value=!1}},bulkExportReports:async(a,r={})=>{try{l.value=!0,i.value=null;const o=await k.bulkExportReports(a,r),m=window.URL.createObjectURL(o),C=document.createElement("a");C.href=m;const s=`reports_bulk_${new Date().toISOString().slice(0,10)}.zip`;return C.download=s,document.body.appendChild(C),C.click(),window.URL.revokeObjectURL(m),document.body.removeChild(C),o}catch(o){throw i.value=o.message||"Failed to bulk export reports",o}finally{l.value=!1}},updateFilters:a=>{q.value={...q.value,...a}},clearFilters:()=>{q.value={search:"",type:"",status:"",createdBy:"",tags:[]}},clearCurrentSelections:()=>{t.value=null,L.value=null,O.value=null,M.value=null}}});function st(){const u=Be(),t=U(()=>u.loading),n=U(()=>u.error),b=async()=>{try{const d=new Date,h=new Date(d.getFullYear(),d.getMonth(),1),_=new Date(d.getFullYear(),d.getMonth()+1,0);u.setDateRange(h.toISOString().split("T")[0],_.toISOString().split("T")[0]),await u.calculateKPIs(),await u.generateWorkOrderTrends(),await u.generateAssetPerformance()}catch(d){console.error("Failed to initialize analytics:",d)}},E=async()=>{await u.calculateKPIs(),await u.generateWorkOrderTrends(),await u.generateAssetPerformance()},T=async(d,h)=>{u.setDateRange(d,h),await E()},L=U(()=>{const d=u.kpis||{};return!d.workOrders||!d.maintenance||!d.costs?[]:[{id:"work-orders-total",title:"Total Work Orders",value:d.workOrders.total||0,subtitle:"This period",change:M(d.workOrders.total||0,145),icon:"clipboard-list",color:"blue",trend:(d.workOrders.total||0)>145?"up":"down"},{id:"work-orders-completion",title:"Completion Rate",value:`${u.workOrderCompletionRate||0}%`,subtitle:"Work orders completed",change:M(u.workOrderCompletionRate||0,87),icon:"check-circle",color:"green",trend:(u.workOrderCompletionRate||0)>87?"up":"down"},{id:"assets-operational",title:"Asset Uptime",value:`${u.assetOperationalRate||0}%`,subtitle:"Assets operational",change:M(u.assetOperationalRate||0,92),icon:"cpu",color:"purple",trend:(u.assetOperationalRate||0)>92?"up":"down"},{id:"maintenance-compliance",title:"PM Compliance",value:`${d.maintenance.preventiveCompliance||0}%`,subtitle:"On-time maintenance",change:M(d.maintenance.preventiveCompliance||0,89),icon:"shield-check",color:"indigo",trend:(d.maintenance.preventiveCompliance||0)>89?"up":"down"},{id:"avg-response-time",title:"Avg Response Time",value:`${d.maintenance.avgResponseTime||0}h`,subtitle:"Time to start work",change:M(d.maintenance.avgResponseTime||0,2.8,!0),icon:"clock",color:"orange",trend:(d.maintenance.avgResponseTime||0)<2.8?"up":"down"},{id:"total-costs",title:"Total Costs",value:V(d.costs.totalCosts||0),subtitle:"This period",change:M(d.costs.totalCosts||0,32450),icon:"currency-dollar",color:"yellow",trend:(d.costs.totalCosts||0)<32450?"up":"down"}]}),G=U(()=>{const d=u.workOrderTrends||[];return{labels:d.map(h=>h.period||""),datasets:[{label:"Work Orders Created",data:d.map(h=>h.count||0),borderColor:"rgb(59, 130, 246)",backgroundColor:"rgba(59, 130, 246, 0.1)",tension:.4}]}}),$=U(()=>(u.assetPerformance||[]).map(h=>({...h,healthColor:l(h.healthScore||0),uptimeColor:l(h.uptime||0),status:B(h.healthScore||0,h.uptime||0)}))),O=U(()=>{var S;const d=((S=u.kpis)==null?void 0:S.maintenance)||{},h=u.preventiveMaintenanceRatio||{preventive:0,reactive:0},_=d.preventiveCompliance||0,w=d.avgResponseTime||0;return{compliance:{rate:_,color:i(_),status:_>=95?"excellent":_>=85?"good":"needs-improvement"},responseTime:{hours:w,color:w<=2?"green":w<=4?"yellow":"red",status:w<=2?"excellent":w<=4?"good":"needs-improvement"},preventiveRatio:{preventive:h.preventive,reactive:h.reactive,color:h.preventive>=70?"green":h.preventive>=50?"yellow":"red",status:h.preventive>=70?"excellent":h.preventive>=50?"good":"needs-improvement"}}}),Y=U(()=>{var S;const d=((S=u.kpis)==null?void 0:S.costs)||{},h=u.costBreakdown||[],_=d.totalCosts||0,w=d.avgCostPerWorkOrder||0;return{total:V(_),avgPerWorkOrder:V(w),breakdown:h.map(p=>({...p,formattedAmount:V(p.amount||0),color:q(p.category)})),trends:{labels:["Jan","Feb","Mar","Apr","May","Jun"],data:[28e3,32e3,29e3,35e3,_,0]}}}),J=U(()=>{var _,w;const d=u.systemHealthScore||0,h=u.kpis||{};return{score:d,status:d>=90?"excellent":d>=75?"good":d>=60?"fair":"poor",color:l(d),components:{assets:{score:((_=h.assets)==null?void 0:_.avgHealth)||0,status:"Assets"},workOrders:{score:u.workOrderCompletionRate||0,status:"Work Orders"},maintenance:{score:((w=h.maintenance)==null?void 0:w.preventiveCompliance)||0,status:"Maintenance"}}}}),M=(d,h,_=!1)=>{if(h===0)return 0;const w=(d-h)/h*100;return _?-w:w},l=d=>d>=90?"green":d>=75?"yellow":d>=60?"orange":"red",i=d=>d>=95?"green":d>=85?"yellow":"red",q=d=>({Labor:"blue",Parts:"green",Contractors:"purple",Utilities:"orange"})[d]||"gray",B=(d,h)=>d>=90&&h>=95?"excellent":d>=75&&h>=85?"good":d>=60&&h>=70?"fair":"poor",V=d=>new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:0,maximumFractionDigits:0}).format(d);return{loading:t,error:n,initializeAnalytics:b,refreshAnalytics:E,updateDateRange:T,getKPIWidgets:L,getWorkOrderTrends:G,getAssetPerformanceData:$,getMaintenanceMetrics:O,getCostAnalysis:Y,getSystemHealth:J}}function rt(){const u=Be(),{addNotification:t}=qe(),n=F(!1),b=F(!1),E=[{value:"work-orders-summary",label:"Work Orders Summary",description:"Comprehensive overview of work order performance and trends",requiredData:["workOrders","assets"],defaultFields:["id","title","status","priority","assignee","createdAt","completedAt"]},{value:"asset-performance",label:"Asset Performance Report",description:"Asset health, uptime, and maintenance history analysis",requiredData:["assets","workOrders","maintenance"],defaultFields:["name","category","status","healthScore","uptime","lastMaintenance"]},{value:"maintenance-compliance",label:"Maintenance Compliance Report",description:"Preventive maintenance schedule adherence and compliance metrics",requiredData:["preventiveMaintenance","workOrders"],defaultFields:["schedule","asset","frequency","lastCompleted","nextDue","status"]},{value:"cost-analysis",label:"Cost Analysis Report",description:"Detailed breakdown of maintenance costs and budget analysis",requiredData:["workOrders","parts","labor"],defaultFields:["workOrder","category","laborCost","partsCost","totalCost","date"]},{value:"technician-performance",label:"Technician Performance Report",description:"Individual technician productivity and performance metrics",requiredData:["workOrders","users"],defaultFields:["technician","completedTasks","avgCompletionTime","qualityScore"]},{value:"inventory-usage",label:"Inventory Usage Report",description:"Parts consumption, stock levels, and procurement analysis",requiredData:["parts","workOrders","inventory"],defaultFields:["partName","category","quantityUsed","currentStock","reorderPoint"]}],T=[{value:"csv",label:"CSV",description:"Comma-separated values for spreadsheet analysis"},{value:"xlsx",label:"Excel",description:"Microsoft Excel workbook with formatting"},{value:"pdf",label:"PDF",description:"Formatted PDF document for sharing"},{value:"json",label:"JSON",description:"Structured data for API integration"}],L=async p=>{n.value=!0;try{M(p);const g={...p,generatedAt:new Date().toISOString(),generatedBy:l(),version:"1.0"},A=await u.createCustomReport(g);return t({type:"success",title:"Report Generated",message:`${p.name} has been generated successfully`}),A}catch(g){throw console.error("Failed to generate report:",g),t({type:"error",title:"Report Generation Failed",message:g.message}),g}finally{n.value=!1}},G=async(p,g="csv",A={})=>{b.value=!0;try{const D=await u.exportReport(p,g);switch(g){case"csv":await i(p,D,A);break;case"xlsx":await q(p,D,A);break;case"pdf":await B(p,D,A);break;case"json":await V(p,D,A);break;default:throw new Error(`Unsupported export format: ${g}`)}return t({type:"success",title:"Export Successful",message:`Report exported as ${D}`}),D}catch(D){throw console.error("Failed to export report:",D),t({type:"error",title:"Export Failed",message:D.message}),D}finally{b.value=!1}},$=U(()=>Object.values(u.customReports).map(p=>({...p,formattedDate:w(p.createdAt),canExport:!0,canDelete:!0}))),O=U(()=>u.exportHistory.map(p=>({...p,formattedDate:S(p.timestamp)}))),Y=async p=>{try{const g=`schedule_${Date.now()}`;return t({type:"success",title:"Report Scheduled",message:`${p.name} will run ${p.schedule.frequency}`}),g}catch(g){throw console.error("Failed to schedule report:",g),t({type:"error",title:"Schedule Failed",message:g.message}),g}},J=async p=>{try{delete u.customReports[p],t({type:"success",title:"Report Deleted",message:"Custom report has been removed"})}catch(g){throw console.error("Failed to delete report:",g),t({type:"error",title:"Delete Failed",message:g.message}),g}},M=p=>{if(!p.name||p.name.trim().length===0)throw new Error("Report name is required");if(!p.type||!E.find(g=>g.value===p.type))throw new Error("Valid report type is required");if(!p.dateRange||!p.dateRange.start||!p.dateRange.end)throw new Error("Date range is required");if(new Date(p.dateRange.start)>=new Date(p.dateRange.end))throw new Error("End date must be after start date")},l=()=>({id:1,name:"Current User",email:"user@example.com"}),i=async(p,g,A)=>{const D=u.customReports[p];if(!D)throw new Error("Report not found");const j=d(D.data,A);_(j,g,"text/csv")},q=async(p,g,A)=>{if(!u.customReports[p])throw new Error("Report not found");console.log("Excel export would be implemented with SheetJS or similar"),await i(p,g.replace(".xlsx",".csv"),A)},B=async(p,g,A)=>{const D=u.customReports[p];if(!D)throw new Error("Report not found");console.log("PDF export would be implemented with jsPDF or Puppeteer");const j=h(D);_(j,g,"application/pdf")},V=async(p,g,A)=>{const D=u.customReports[p];if(!D)throw new Error("Report not found");const j=JSON.stringify(D,null,2);_(j,g,"application/json")},d=(p,g={})=>{if(!p||!p.details||p.details.length===0)return"No data available";const A=p.details,D=Object.keys(A[0]);return[D.join(","),...A.map(W=>D.map(le=>{const z=W[le];return typeof z=="string"&&(z.includes(",")||z.includes('"'))?`"${z.replace(/"/g,'""')}"`:z}).join(","))].join("\\n")},h=(p,g)=>`PDF Report: ${p.name}\\nGenerated: ${p.createdAt}\\n\\nContent would be formatted here...`,_=(p,g,A)=>{const D=new Blob([p],{type:A}),j=URL.createObjectURL(D),W=document.createElement("a");W.href=j,W.download=g,W.style.display="none",document.body.appendChild(W),W.click(),document.body.removeChild(W),URL.revokeObjectURL(j)},w=p=>new Date(p).toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"}),S=p=>new Date(p).toLocaleString("en-US",{year:"numeric",month:"short",day:"numeric",hour:"numeric",minute:"2-digit"});return{generatingReport:n,exportingReport:b,reportTypes:E,exportFormats:T,generateReport:L,exportReport:G,scheduleReport:Y,deleteReport:J,getCustomReports:$,getExportHistory:O}}const ot={class:"flex items-center space-x-3"},nt={class:"border-l border-gray-300 pl-3 ml-3"},lt={class:"flex items-center space-x-2 -mt-5"},it={class:"mt-5"},ct={class:"p-6"},ut={key:0,class:"flex items-center justify-center py-12"},dt={key:1,class:"rounded-lg bg-red-50 border border-red-200 p-4 mb-6"},pt={class:"flex"},vt={class:"ml-3"},mt={class:"mt-1 text-sm text-red-700"},yt={key:2,class:"space-y-8"},ht={class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6"},gt={class:"flex items-center"},ft={class:"flex-shrink-0"},bt={key:0,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5H7a2 2 0 00-2 2v10a2 2 0 002 2h8a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01"},wt={key:1,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"},xt={key:2,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 3v2m6-2v2M9 19v2m6-2v2M5 9H3m2 6H3m18-6h-2m2 6h-2M7 19h10a2 2 0 002-2V7a2 2 0 00-2-2H7a2 2 0 00-2 2v10a2 2 0 002 2zM9 9h6v6H9V9z"},Rt={key:3,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z"},kt={key:4,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"},_t={key:5,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8c-1.657 0-3 .895-3 2s1.343 2 3 2 3 .895 3 2-1.343 2-3 2m0-8c1.11 0 2.08.402 2.599 1M12 8V7m0 1v8m0 0v1m0-1c-1.11 0-2.08-.402-2.599-1"},Dt={class:"ml-4 flex-1"},Ct={class:"text-sm font-medium text-gray-600"},St={class:"flex items-baseline"},Pt={class:"text-2xl font-semibold text-gray-900"},Ft={key:0,class:"self-center flex-shrink-0 h-4 w-4",fill:"currentColor",viewBox:"0 0 20 20"},It={key:1,class:"self-center flex-shrink-0 h-4 w-4",fill:"currentColor",viewBox:"0 0 20 20"},Ut={class:"sr-only"},At={key:0,class:"text-xs text-gray-500 mt-1"},$t={class:"grid grid-cols-1 lg:grid-cols-2 gap-8"},Tt={class:"flex items-center justify-between mb-6"},Lt={class:"h-64"},Ot={class:"flex items-center justify-between mb-6"},Mt={class:"flex items-center"},Vt={class:"text-sm font-medium"},Et={class:"text-center mb-6"},Bt={class:"text-4xl font-bold text-gray-900 mb-2"},Kt={class:"space-y-3"},jt={class:"text-sm text-gray-600"},zt={class:"flex items-center"},Ht={class:"w-16 bg-gray-200 rounded-full h-2 mr-3"},qt={class:"text-sm font-medium text-gray-900 w-8"},Wt={class:"overflow-x-auto"},Nt={class:"min-w-full divide-y divide-gray-200"},Jt={class:"bg-white divide-y divide-gray-200"},Gt={class:"px-6 py-4 whitespace-nowrap"},Yt={class:"text-sm font-medium text-gray-900"},Qt={class:"text-sm text-gray-500"},Zt={class:"px-6 py-4 whitespace-nowrap"},Xt={class:"flex items-center"},ea={class:"w-16 bg-gray-200 rounded-full h-2 mr-3"},ta={class:"text-sm text-gray-900"},aa={class:"px-6 py-4 whitespace-nowrap text-sm text-gray-900"},sa={class:"px-6 py-4 whitespace-nowrap text-sm text-gray-900"},ra={class:"px-6 py-4 whitespace-nowrap"},oa={key:3,class:"space-y-8"},na={class:"grid grid-cols-1 md:grid-cols-3 gap-6"},la={class:"flex items-center"},ia={class:"text-3xl font-bold text-gray-900"},ca={class:"ml-3"},ua={class:"flex items-center"},da={class:"text-3xl font-bold text-gray-900"},pa={class:"ml-3"},va={class:"flex items-center"},ma={class:"text-3xl font-bold text-gray-900"},ya={class:"ml-3"},ha={class:"grid grid-cols-1 lg:grid-cols-2 gap-8"},ga={class:"space-y-3"},fa={class:"flex items-center justify-between"},ba={class:"text-sm font-medium text-gray-900"},wa={class:"flex items-center justify-between"},xa={class:"text-sm font-medium text-gray-900"},Ra={class:"space-y-3"},ka={class:"flex justify-between"},_a={class:"text-sm font-medium text-gray-900"},Da={class:"flex justify-between"},Ca={class:"text-sm font-medium text-gray-900"},Sa={class:"flex justify-between"},Pa={class:"text-sm font-medium text-gray-900"},Fa={key:4,class:"space-y-8"},Ia={class:"grid grid-cols-1 md:grid-cols-4 gap-6"},Ua={class:"text-3xl font-bold text-gray-900"},Aa={class:"text-3xl font-bold text-gray-900"},$a={class:"text-sm font-medium text-gray-600 mb-2"},Ta={class:"text-3xl font-bold text-gray-900"},La={class:"text-sm text-gray-500 mt-1"},Oa={class:"space-y-4"},Ma={class:"flex items-center"},Va={class:"font-medium text-gray-900"},Ea={class:"text-sm text-gray-600"},Ba={class:"text-right"},Ka={class:"text-lg font-bold text-gray-900"},ja={class:"space-y-4"},za={class:"grid grid-cols-2 gap-4"},Ha={class:"flex items-center justify-between"},qa={class:"flex items-center space-x-4"},Wa={key:0,class:"flex items-center text-sm text-gray-500"},Na={key:0,class:"w-4 h-4 mr-2 text-amber-500 animate-pulse",fill:"currentColor",viewBox:"0 0 20 20"},Ja={key:1,class:"w-4 h-4 mr-2 text-green-500",fill:"currentColor",viewBox:"0 0 20 20"},Ga={key:2},Ya={key:3},Qa={class:"flex space-x-3"},Za={__name:"ReportsView",setup(u){const{loading:t,error:n,initializeAnalytics:b,refreshAnalytics:E,updateDateRange:T,getKPIWidgets:L,getWorkOrderTrends:G,getAssetPerformanceData:$,getMaintenanceMetrics:O,getCostAnalysis:Y,getSystemHealth:J}=st(),{generatingReport:M,exportingReport:l,reportTypes:i,generateReport:q}=rt(),B=F("overview"),V=F(!1),d=F("30d"),h=F(null),_=F(null),w=F({start:"",end:""}),S=F({name:"",type:"",startDate:"",endDate:"",description:""}),{hasUnsavedChanges:p,lastSaveTime:g,restoreFormData:A,clearSavedData:D,hasSavedData:j,getSavedDataInfo:W,markUserInteraction:le}=Ye(S,{storageKey:"atlas_custom_report_form_data",saveInterval:3e3,excludeFields:[]}),z=F(!1),de=F(null),pe=U(()=>L.value),ie=U(()=>G.value),he=U(()=>$.value),K=U(()=>O.value),re=U(()=>Y.value),X=U(()=>J.value),ge=[{key:"overview",label:"Overview"},{key:"maintenance",label:"Maintenance"},{key:"costs",label:"Cost Analysis"}],fe=[{label:"Last 7 days",value:"7d"},{label:"Last 30 days",value:"30d"},{label:"Last 90 days",value:"90d"},{label:"Last year",value:"1y"}],be=U(()=>i.map(v=>({label:v.label,value:v.value}))),we=U(()=>g.value?new Date(g.value).toLocaleTimeString():""),xe=async()=>{await E()},Re=async()=>{console.log("Exporting all reports...")},ke=()=>{_e(),j()||(S.value={name:"",type:"",startDate:w.value.start,endDate:w.value.end,description:""}),V.value=!0},_e=()=>{j()&&(de.value=W(),z.value=!0,console.log("✅ Found saved report data, showing restore notification"))},ce=()=>{D(),V.value=!1,z.value=!1,S.value={name:"",type:"",startDate:"",endDate:"",description:""}},ve=async()=>{try{await q({name:S.value.name,type:S.value.type,dateRange:{start:S.value.startDate,end:S.value.endDate},description:S.value.description}),D(),ce()}catch(v){console.error("Failed to create custom report:",v)}},De=()=>{A(),z.value=!1,console.log("Report form data restored successfully")},Ce=()=>{D(),z.value=!1,S.value={name:"",type:"",startDate:w.value.start,endDate:w.value.end,description:""},console.log("Report auto-saved data dismissed")},ee=()=>{console.log("🔥 Report user interaction detected!"),le()},Se=async()=>{w.value.start&&w.value.end&&(await T(w.value.start,w.value.end),m())},Pe=v=>{B.value=v},Fe=v=>({blue:"bg-blue-100",green:"bg-green-100",purple:"bg-purple-100",indigo:"bg-indigo-100",orange:"bg-orange-100",yellow:"bg-yellow-100"})[v]||"bg-gray-100",Ie=v=>({blue:"text-blue-600",green:"text-green-600",purple:"text-purple-600",indigo:"text-indigo-600",orange:"text-orange-600",yellow:"text-yellow-600"})[v]||"text-gray-600",Ue=(v,s)=>s==="up"?"text-green-600":s==="down"?"text-red-600":"text-gray-500",Ae=v=>v>=90?"bg-green-500":v>=75?"bg-yellow-500":v>=60?"bg-orange-500":"bg-red-500",$e=v=>v>=90?"bg-green-500":v>=75?"bg-yellow-500":v>=60?"bg-orange-500":"bg-red-500",Te=v=>({excellent:"success",good:"info",fair:"warning",poor:"error"})[v]||"secondary",Le=v=>v>=95?"success":v>=85?"warning":"error",Oe=v=>v<=2?"success":v<=4?"warning":"error",a=v=>v>=70?"success":v>=50?"warning":"error",r=v=>({blue:"bg-blue-500",green:"bg-green-500",purple:"bg-purple-500",orange:"bg-orange-500"})[v]||"bg-gray-500",o=async()=>{if(!(!h.value||!window.Chart))try{const v=h.value.getContext("2d");_.value&&_.value.destroy(),_.value=new window.Chart(v,{type:"line",data:ie.value,options:{responsive:!0,maintainAspectRatio:!1,scales:{y:{beginAtZero:!0,grid:{color:"rgba(0, 0, 0, 0.1)"}},x:{grid:{display:!1}}},plugins:{legend:{display:!1}},elements:{point:{radius:4,hoverRadius:6}}}})}catch(v){console.error("Failed to initialize chart:",v)}},m=()=>{_.value&&(_.value.data=ie.value,_.value.update())},C=async()=>{if(!window.Chart)try{const{Chart:v,registerables:s}=await Ge(async()=>{const{Chart:c,registerables:Q}=await import("./chart-C0bvbYRK.js");return{Chart:c,registerables:Q}},[]);v.register(...s),window.Chart=v}catch(v){console.error("Failed to load Chart.js:",v)}};return Me(()=>ie.value,()=>{_.value&&m()},{deep:!0}),Me(()=>d.value,()=>{console.log("Chart period changed:",d.value)}),Ne(async()=>{const v=new Date,s=new Date(v.getFullYear(),v.getMonth(),1);w.value.start=s.toISOString().split("T")[0],w.value.end=v.toISOString().split("T")[0],await b(),await C(),setTimeout(()=>{o()},100)}),Je(()=>{_.value&&_.value.destroy()}),(v,s)=>(x(),me(Qe,null,{header:I(()=>[R(Ze,{title:"Reports & Analytics",description:"Real-time analytics and insights for facility management operations",breadcrumbs:[{text:"Reports",to:null}]},{actions:I(()=>[e("div",ot,[R(y(ae),{variant:"outline",size:"sm",onClick:Re,loading:y(l)},{default:I(()=>s[10]||(s[10]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1),N(" Export All ",-1)])),_:1,__:[10]},8,["loading"]),R(y(ae),{variant:"outline",size:"sm",onClick:xe,loading:y(t)},{default:I(()=>s[11]||(s[11]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),N(" Refresh ",-1)])),_:1,__:[11]},8,["loading"]),R(y(ae),{variant:"primary",size:"sm",onClick:ke},{default:I(()=>s[12]||(s[12]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),N(" Custom Report ",-1)])),_:1,__:[12]}),e("div",nt,[e("div",lt,[e("div",null,[s[13]||(s[13]=e("label",{class:"block text-xs font-medium text-gray-700 mb-1"},"From",-1)),R(y(se),{modelValue:w.value.start,"onUpdate:modelValue":s[0]||(s[0]=c=>w.value.start=c),type:"date",size:"sm"},null,8,["modelValue"])]),e("div",null,[s[14]||(s[14]=e("label",{class:"block text-xs font-medium text-gray-700 mb-1"},"To",-1)),R(y(se),{modelValue:w.value.end,"onUpdate:modelValue":s[1]||(s[1]=c=>w.value.end=c),type:"date",size:"sm"},null,8,["modelValue"])]),e("div",it,[R(y(ae),{variant:"outline",size:"sm",onClick:Se},{default:I(()=>s[15]||(s[15]=[N(" Apply ",-1)])),_:1,__:[15]})])])])])]),tabs:I(()=>[R(y(et),{modelValue:B.value,"onUpdate:modelValue":s[2]||(s[2]=c=>B.value=c),tabs:ge,onTabChange:Pe},null,8,["modelValue"])]),_:1})]),default:I(()=>[e("div",ct,[y(t)&&!pe.value.length?(x(),P("div",ut,s[16]||(s[16]=[e("div",{class:"text-center"},[e("div",{class:"animate-spin rounded-full h-12 w-12 border-b-2 border-primary-600 mx-auto"}),e("p",{class:"mt-4 text-gray-600"},"Loading analytics...")],-1)]))):y(n)?(x(),P("div",dt,[e("div",pt,[s[18]||(s[18]=e("div",{class:"flex-shrink-0"},[e("svg",{class:"h-5 w-5 text-red-400",viewBox:"0 0 20 20",fill:"currentColor"},[e("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z","clip-rule":"evenodd"})])],-1)),e("div",vt,[s[17]||(s[17]=e("h3",{class:"text-sm font-medium text-red-800"},"Analytics Error",-1)),e("p",mt,f(y(n)),1)])])])):B.value==="overview"?(x(),P("div",yt,[e("div",ht,[(x(!0),P(oe,null,ne(pe.value,c=>(x(),me(y(H),{padding:"lg",key:c.id},{default:I(()=>[e("div",gt,[e("div",ft,[e("div",{class:Z(["w-10 h-10 rounded-lg flex items-center justify-center",Fe(c.color)])},[(x(),P("svg",{class:Z(["w-5 h-5",Ie(c.color)]),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[c.icon==="clipboard-list"?(x(),P("path",bt)):c.icon==="check-circle"?(x(),P("path",wt)):c.icon==="cpu"?(x(),P("path",xt)):c.icon==="shield-check"?(x(),P("path",Rt)):c.icon==="clock"?(x(),P("path",kt)):c.icon==="currency-dollar"?(x(),P("path",_t)):te("",!0)],2))],2)]),e("div",Dt,[e("p",Ct,f(c.title),1),e("div",St,[e("p",Pt,f(c.value),1),c.change!==void 0?(x(),P("p",{key:0,class:Z(["ml-2 flex items-baseline text-sm font-semibold",Ue(c.change,c.trend)])},[c.trend==="up"?(x(),P("svg",Ft,s[19]||(s[19]=[e("path",{"fill-rule":"evenodd",d:"M3.293 9.707a1 1 0 010-1.414l6-6a1 1 0 011.414 0l6 6a1 1 0 01-1.414 1.414L11 5.414V17a1 1 0 11-2 0V5.414L4.707 9.707a1 1 0 01-1.414 0z","clip-rule":"evenodd"},null,-1)]))):(x(),P("svg",It,s[20]||(s[20]=[e("path",{"fill-rule":"evenodd",d:"M16.707 10.293a1 1 0 010 1.414l-6 6a1 1 0 01-1.414 0l-6-6a1 1 0 111.414-1.414L9 14.586V3a1 1 0 012 0v11.586l4.293-4.293a1 1 0 011.414 0z","clip-rule":"evenodd"},null,-1)]))),e("span",Ut,f(c.trend==="up"?"Increased":"Decreased")+" by",1),N(" "+f(Math.abs(c.change).toFixed(1))+"% ",1)],2)):te("",!0)]),c.subtitle?(x(),P("p",At,f(c.subtitle),1)):te("",!0)])])]),_:2},1024))),128))]),e("div",$t,[R(y(H),{padding:"lg"},{default:I(()=>[e("div",Tt,[s[21]||(s[21]=e("h3",{class:"text-lg font-semibold text-gray-900"},"Work Orders Over Time",-1)),R(y(Ee),{modelValue:d.value,"onUpdate:modelValue":s[3]||(s[3]=c=>d.value=c),options:fe,size:"sm"},null,8,["modelValue"])]),e("div",Lt,[e("canvas",{ref_key:"workOrdersChart",ref:h},null,512)])]),_:1}),R(y(H),{padding:"lg"},{default:I(()=>[e("div",Ot,[s[22]||(s[22]=e("h3",{class:"text-lg font-semibold text-gray-900"},"System Health",-1)),e("div",Mt,[e("div",{class:Z(["w-3 h-3 rounded-full mr-2",Ae(X.value.score)])},null,2),e("span",Vt,f(X.value.status.toUpperCase()),1)])]),e("div",Et,[e("div",Bt,f(X.value.score)+"%",1),s[23]||(s[23]=e("p",{class:"text-gray-600"},"Overall System Health",-1))]),e("div",Kt,[(x(!0),P(oe,null,ne(X.value.components,(c,Q)=>(x(),P("div",{key:Q,class:"flex items-center justify-between"},[e("span",jt,f(c.status),1),e("div",zt,[e("div",Ht,[e("div",{class:Z(["h-2 rounded-full",$e(c.score)]),style:Ve({width:`${c.score}%`})},null,6)]),e("span",qt,f(c.score)+"%",1)])]))),128))])]),_:1})]),R(y(H),{padding:"lg"},{default:I(()=>[s[25]||(s[25]=e("h3",{class:"text-lg font-semibold text-gray-900 mb-6"},"Asset Performance Overview",-1)),e("div",Wt,[e("table",Nt,[s[24]||(s[24]=e("thead",{class:"bg-gray-50"},[e("tr",null,[e("th",{class:"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"},"Asset"),e("th",{class:"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"},"Health Score"),e("th",{class:"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"},"Uptime"),e("th",{class:"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"},"MTTR"),e("th",{class:"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"},"Status")])],-1)),e("tbody",Jt,[(x(!0),P(oe,null,ne(he.value.slice(0,5),c=>(x(),P("tr",{key:c.id},[e("td",Gt,[e("div",Yt,f(c.name),1),e("div",Qt,f(c.category),1)]),e("td",Zt,[e("div",Xt,[e("div",ea,[e("div",{class:Z(["h-2 rounded-full",c.healthColor]),style:Ve({width:`${c.healthScore}%`})},null,6)]),e("span",ta,f(c.healthScore)+"%",1)])]),e("td",aa,f(c.uptime)+"%",1),e("td",sa,f(c.mttr)+"h",1),e("td",ra,[R(y(ue),{variant:Te(c.status)},{default:I(()=>[N(f(c.status),1)]),_:2},1032,["variant"])])]))),128))])])])]),_:1,__:[25]})])):B.value==="maintenance"?(x(),P("div",oa,[e("div",na,[R(y(H),{padding:"lg"},{default:I(()=>[s[26]||(s[26]=e("h4",{class:"text-sm font-medium text-gray-600 mb-2"},"Preventive Maintenance Compliance",-1)),e("div",la,[e("div",ia,f(K.value.compliance.rate)+"%",1),e("div",ca,[R(y(ue),{variant:Le(K.value.compliance.rate)},{default:I(()=>[N(f(K.value.compliance.status),1)]),_:1},8,["variant"])])]),s[27]||(s[27]=e("p",{class:"text-sm text-gray-500 mt-1"},"On-time maintenance tasks",-1))]),_:1,__:[26,27]}),R(y(H),{padding:"lg"},{default:I(()=>[s[28]||(s[28]=e("h4",{class:"text-sm font-medium text-gray-600 mb-2"},"Average Response Time",-1)),e("div",ua,[e("div",da,f(K.value.responseTime.hours)+"h",1),e("div",pa,[R(y(ue),{variant:Oe(K.value.responseTime.hours)},{default:I(()=>[N(f(K.value.responseTime.status),1)]),_:1},8,["variant"])])]),s[29]||(s[29]=e("p",{class:"text-sm text-gray-500 mt-1"},"Time to start work",-1))]),_:1,__:[28,29]}),R(y(H),{padding:"lg"},{default:I(()=>[s[30]||(s[30]=e("h4",{class:"text-sm font-medium text-gray-600 mb-2"},"Preventive vs Reactive",-1)),e("div",va,[e("div",ma,f(K.value.preventiveRatio.preventive)+"%",1),e("div",ya,[R(y(ue),{variant:a(K.value.preventiveRatio.preventive)},{default:I(()=>[N(f(K.value.preventiveRatio.status),1)]),_:1},8,["variant"])])]),s[31]||(s[31]=e("p",{class:"text-sm text-gray-500 mt-1"},"Preventive maintenance ratio",-1))]),_:1,__:[30,31]})]),R(y(H),{padding:"lg"},{default:I(()=>[s[39]||(s[39]=e("h3",{class:"text-lg font-semibold text-gray-900 mb-6"},"Maintenance Performance Details",-1)),e("div",ha,[e("div",null,[s[34]||(s[34]=e("h4",{class:"text-md font-medium text-gray-900 mb-4"},"Preventive vs Reactive Breakdown",-1)),e("div",ga,[e("div",fa,[s[32]||(s[32]=e("div",{class:"flex items-center"},[e("div",{class:"w-3 h-3 bg-green-500 rounded-full mr-3"}),e("span",{class:"text-sm text-gray-700"},"Preventive Maintenance")],-1)),e("span",ba,f(K.value.preventiveRatio.preventive)+"%",1)]),e("div",wa,[s[33]||(s[33]=e("div",{class:"flex items-center"},[e("div",{class:"w-3 h-3 bg-red-500 rounded-full mr-3"}),e("span",{class:"text-sm text-gray-700"},"Reactive Maintenance")],-1)),e("span",xa,f(K.value.preventiveRatio.reactive)+"%",1)])])]),e("div",null,[s[38]||(s[38]=e("h4",{class:"text-md font-medium text-gray-900 mb-4"},"Performance Indicators",-1)),e("div",Ra,[e("div",ka,[s[35]||(s[35]=e("span",{class:"text-sm text-gray-600"},"Compliance Rate",-1)),e("span",_a,f(K.value.compliance.rate)+"%",1)]),e("div",Da,[s[36]||(s[36]=e("span",{class:"text-sm text-gray-600"},"Avg Response Time",-1)),e("span",Ca,f(K.value.responseTime.hours)+"h",1)]),e("div",Sa,[s[37]||(s[37]=e("span",{class:"text-sm text-gray-600"},"System Health",-1)),e("span",Pa,f(X.value.score)+"%",1)])])])])]),_:1,__:[39]})])):B.value==="costs"?(x(),P("div",Fa,[e("div",Ia,[R(y(H),{padding:"lg"},{default:I(()=>[s[40]||(s[40]=e("h4",{class:"text-sm font-medium text-gray-600 mb-2"},"Total Costs",-1)),e("p",Ua,f(re.value.total),1),s[41]||(s[41]=e("p",{class:"text-sm text-gray-500 mt-1"},"This period",-1))]),_:1,__:[40,41]}),R(y(H),{padding:"lg"},{default:I(()=>[s[42]||(s[42]=e("h4",{class:"text-sm font-medium text-gray-600 mb-2"},"Avg per Work Order",-1)),e("p",Aa,f(re.value.avgPerWorkOrder),1),s[43]||(s[43]=e("p",{class:"text-sm text-gray-500 mt-1"},"Average cost",-1))]),_:1,__:[42,43]}),(x(!0),P(oe,null,ne(re.value.breakdown.slice(0,2),c=>(x(),me(y(H),{padding:"lg",key:c.category},{default:I(()=>[e("h4",$a,f(c.category),1),e("p",Ta,f(c.formattedAmount),1),e("p",La,f(c.percentage)+"% of total",1)]),_:2},1024))),128))]),R(y(H),{padding:"lg"},{default:I(()=>[s[44]||(s[44]=e("h3",{class:"text-lg font-semibold text-gray-900 mb-6"},"Cost Breakdown by Category",-1)),e("div",Oa,[(x(!0),P(oe,null,ne(re.value.breakdown,c=>(x(),P("div",{key:c.category,class:"flex items-center justify-between p-4 bg-gray-50 rounded-lg"},[e("div",Ma,[e("div",{class:Z(["w-4 h-4 rounded-full mr-4",r(c.color)])},null,2),e("div",null,[e("h4",Va,f(c.category),1),e("p",Ea,f(c.percentage)+"% of total costs",1)])]),e("div",Ba,[e("p",Ka,f(c.formattedAmount),1)])]))),128))])]),_:1,__:[44]})])):te("",!0)]),R(y(Xe),{modelValue:V.value,"onUpdate:modelValue":s[9]||(s[9]=c=>V.value=c),title:"Create Custom Report",size:"lg",onConfirm:ve,onCancel:ce},{footer:I(()=>[e("div",Ha,[e("div",qa,[y(p)||y(g)?(x(),P("div",Wa,[y(p)?(x(),P("svg",Na,s[45]||(s[45]=[e("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z","clip-rule":"evenodd"},null,-1)]))):(x(),P("svg",Ja,s[46]||(s[46]=[e("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z","clip-rule":"evenodd"},null,-1)]))),y(p)?(x(),P("span",Ga,"Auto-saving...")):y(g)?(x(),P("span",Ya,"Last saved "+f(we.value),1)):te("",!0)])):te("",!0)]),e("div",Qa,[R(y(ae),{variant:"secondary",onClick:ce},{default:I(()=>s[47]||(s[47]=[N(" Cancel ",-1)])),_:1,__:[47]}),R(y(ae),{variant:"primary",loading:y(M),onClick:ve},{default:I(()=>s[48]||(s[48]=[N(" Create Report ",-1)])),_:1,__:[48]},8,["loading"])])])]),default:I(()=>[R(y(tt),{visible:z.value,"saved-data-info":de.value,onRestore:De,onDismiss:Ce},null,8,["visible","saved-data-info"]),e("div",ja,[R(y(se),{modelValue:S.value.name,"onUpdate:modelValue":s[4]||(s[4]=c=>S.value.name=c),label:"Report Name",placeholder:"Enter report name",required:"",onInput:ee},null,8,["modelValue"]),R(y(Ee),{modelValue:S.value.type,"onUpdate:modelValue":s[5]||(s[5]=c=>S.value.type=c),label:"Report Type",options:be.value,required:"",onChange:ee},null,8,["modelValue","options"]),e("div",za,[R(y(se),{modelValue:S.value.startDate,"onUpdate:modelValue":s[6]||(s[6]=c=>S.value.startDate=c),label:"Start Date",type:"date",required:"",onInput:ee},null,8,["modelValue"]),R(y(se),{modelValue:S.value.endDate,"onUpdate:modelValue":s[7]||(s[7]=c=>S.value.endDate=c),label:"End Date",type:"date",required:"",onInput:ee},null,8,["modelValue"])]),R(y(se),{modelValue:S.value.description,"onUpdate:modelValue":s[8]||(s[8]=c=>S.value.description=c),label:"Description",placeholder:"Describe what this report should include",type:"textarea",onInput:ee},null,8,["modelValue"])])]),_:1},8,["modelValue"])]),_:1}))}},cs=We(Za,[["__scopeId","data-v-0db11884"]]);export{cs as default}; +import{bc as ze,aP as He,r as F,c as U,l as qe,_ as We,m as Me,o as Ne,aO as Je,i as me,w as I,bl as Ge,g as x,b as e,d as R,a as P,j as te,e as y,t as f,af as oe,aR as ne,n as Z,k as N,Q as Ve,F as ae}from"./index-QAlcqU00.js";import{u as Ye}from"./useFormAutoSave-BrW9Wl2Q.js";import{F as Qe,a as Ze}from"./FPPageHeader-CFIwZZgQ.js";import{F as se}from"./FPInput-D5RURom0.js";import{F as H}from"./FPCard-AB6NRXg5.js";import{F as Ee}from"./FPSelect-j7n_x8eB.js";import{F as Xe}from"./FPModal-DMoPysvU.js";import{F as ue}from"./FPBadge-DvOitM1C.js";import{F as et}from"./FPTabs-qq-Tmb7J.js";import{_ as tt}from"./FormRestoreNotification-2Wflg1mH.js";class at extends ze{constructor(){super(),this.baseURL="/reports"}async getReports(t={}){const n=new URLSearchParams;t.page!==void 0&&n.set("page",t.page),t.size!==void 0&&n.set("size",t.size),t.search&&n.set("search",t.search),t.type&&n.set("type",t.type),t.status&&n.set("status",t.status),t.createdBy&&n.set("createdBy",t.createdBy),t.tags&&n.set("tags",t.tags.join(",")),t.sortBy&&n.set("sortBy",t.sortBy),t.sortDirection&&n.set("sortDirection",t.sortDirection);const b=n.toString()?`${this.baseURL}?${n}`:this.baseURL;return this.get(b)}async getReportById(t){return this.get(`${this.baseURL}/${t}`)}async createReport(t){return this.post(this.baseURL,t)}async updateReport(t,n){return this.put(`${this.baseURL}/${t}`,n)}async deleteReport(t){return this.delete(`${this.baseURL}/${t}`)}async duplicateReport(t,n={}){return this.post(`${this.baseURL}/${t}/duplicate`,n)}async executeReport(t,n={}){return this.post(`${this.baseURL}/${t}/execute`,n)}async previewReport(t,n={}){return this.post(`${this.baseURL}/preview`,{...t,...n})}async exportReport(t,n={}){return await this.request({url:`${this.baseURL}/${t}/export`,method:"POST",data:n,responseType:"blob"})}async getReportTemplates(t={}){const n=new URLSearchParams;t.type&&n.set("type",t.type),t.category&&n.set("category",t.category);const b=n.toString()?`${this.baseURL}/templates?${n}`:`${this.baseURL}/templates`;return this.get(b)}async createReportFromTemplate(t,n={}){return this.post(`${this.baseURL}/templates/${t}/create`,n)}async getDataSources(){return this.get(`${this.baseURL}/data-sources`)}async getDataSourceFields(t){return this.get(`${this.baseURL}/data-sources/${t}/fields`)}async getDataSourceSample(t,n={}){const b=new URLSearchParams;n.limit&&b.set("limit",n.limit);const E=b.toString()?`${this.baseURL}/data-sources/${t}/sample?${b}`:`${this.baseURL}/data-sources/${t}/sample`;return this.get(E)}async getReportSchedules(t={}){const n=new URLSearchParams;t.reportId&&n.set("reportId",t.reportId),t.isActive!==void 0&&n.set("isActive",t.isActive);const b=n.toString()?`${this.baseURL}/schedules?${n}`:`${this.baseURL}/schedules`;return this.get(b)}async createReportSchedule(t){return this.post(`${this.baseURL}/schedules`,t)}async updateReportSchedule(t,n){return this.put(`${this.baseURL}/schedules/${t}`,n)}async deleteReportSchedule(t){return this.delete(`${this.baseURL}/schedules/${t}`)}async testReportSchedule(t){return this.post(`${this.baseURL}/schedules/${t}/test`)}async getKPIs(t={}){const n=new URLSearchParams;t.category&&n.set("category",t.category),t.isActive!==void 0&&n.set("isActive",t.isActive),t.dashboardId&&n.set("dashboardId",t.dashboardId);const b=n.toString()?`/kpis?${n}`:"/kpis";return this.get(b)}async getKPIById(t){return this.get(`/kpis/${t}`)}async createKPI(t){return this.post("/kpis",t)}async updateKPI(t,n){return this.put(`/kpis/${t}`,n)}async deleteKPI(t){return this.delete(`/kpis/${t}`)}async calculateKPI(t,n={}){return this.post(`/kpis/${t}/calculate`,n)}async getKPIHistory(t,n={}){const b=new URLSearchParams;n.startDate&&b.set("startDate",n.startDate),n.endDate&&b.set("endDate",n.endDate),n.interval&&b.set("interval",n.interval);const E=b.toString()?`/kpis/${t}/history?${b}`:`/kpis/${t}/history`;return this.get(E)}async getDashboards(t={}){const n=new URLSearchParams;t.isPublic!==void 0&&n.set("isPublic",t.isPublic),t.createdBy&&n.set("createdBy",t.createdBy);const b=n.toString()?"/dashboards?${queryParams}":"/dashboards";return this.get(b)}async getDashboardById(t){return this.get(`/dashboards/${t}`)}async createDashboard(t){return this.post("/dashboards",t)}async updateDashboard(t,n){return this.put(`/dashboards/${t}`,n)}async deleteDashboard(t){return this.delete(`/dashboards/${t}`)}async duplicateDashboard(t,n={}){return this.post(`/dashboards/${t}/duplicate`,n)}async getDashboardData(t,n={}){return this.post(`/dashboards/${t}/data`,n)}async bulkDeleteReports(t){return this.post(`${this.baseURL}/bulk-delete`,{ids:t})}async bulkUpdateReportStatus(t,n){return this.post(`${this.baseURL}/bulk-update-status`,{ids:t,status:n})}async bulkExportReports(t,n={}){return await this.request({url:`${this.baseURL}/bulk-export`,method:"POST",data:{ids:t,...n},responseType:"blob"})}async getReportAnalytics(t={}){const n=new URLSearchParams;t.startDate&&n.set("startDate",t.startDate),t.endDate&&n.set("endDate",t.endDate),t.reportId&&n.set("reportId",t.reportId);const b=n.toString()?`${this.baseURL}/analytics?${n}`:`${this.baseURL}/analytics`;return this.get(b)}async getSystemMetrics(t={}){return this.get("/system/metrics",t)}}const k=new at,ye={DRAFT:"draft",PUBLISHED:"published",ARCHIVED:"archived"},Be=He("reports",()=>{const u=F(null),t=F(null),n=F([]),b=F([]),E=F({}),T=F([]),L=F(null),G=F({}),$=F([]),O=F(null),Y=F({}),J=F({}),M=F(null),l=F(!1),i=F(null),q=F({search:"",type:"",status:"",createdBy:"",tags:[]}),B=F(null),V=F(null),d=U(()=>{var a;return((a=u.value)==null?void 0:a.totalElements)||0}),h=U(()=>{var a,r;return((r=(a=u.value)==null?void 0:a.content)==null?void 0:r.filter(o=>o.status===ye.PUBLISHED))||[]}),_=U(()=>{var a,r;return((r=(a=u.value)==null?void 0:a.content)==null?void 0:r.filter(o=>o.status===ye.DRAFT))||[]}),w=U(()=>{var a,r;return((r=(a=u.value)==null?void 0:a.content)==null?void 0:r.filter(o=>o.status===ye.ARCHIVED))||[]}),S=U(()=>{var r,o;const a={};return(o=(r=u.value)==null?void 0:r.content)==null||o.forEach(m=>{a[m.type]||(a[m.type]=[]),a[m.type].push(m)}),a}),p=U(()=>{var a;return((a=T.value)==null?void 0:a.filter(r=>r.isActive))||[]}),g=U(()=>{var r;const a={};return(r=T.value)==null||r.forEach(o=>{a[o.category]||(a[o.category]=[]),a[o.category].push(o)}),a}),A=U(()=>{var a;return((a=$.value)==null?void 0:a.filter(r=>r.isPublic))||[]});return{reports:u,currentReport:t,reportTemplates:n,dataSources:b,dataSourceFields:E,kpis:T,currentKPI:L,kpiCalculations:G,dashboards:$,currentDashboard:O,dashboardData:Y,reportExecutions:J,previewData:M,loading:l,error:i,filters:q,reportAnalytics:B,systemMetrics:V,totalCount:d,publishedReports:h,draftReports:_,archivedReports:w,reportsByType:S,activeKPIs:p,kpisByCategory:g,publicDashboards:A,fetchReports:async(a={})=>{try{l.value=!0,i.value=null;const r={...a,...q.value};return u.value=await k.getReports(r),u.value}catch(r){throw i.value=r.message||"Failed to fetch reports",r}finally{l.value=!1}},fetchReportById:async a=>{try{return l.value=!0,i.value=null,t.value=await k.getReportById(a),t.value}catch(r){throw i.value=r.message||"Failed to fetch report",r}finally{l.value=!1}},createReport:async a=>{var r;try{l.value=!0,i.value=null;const o=await k.createReport(a);return(r=u.value)!=null&&r.content&&(u.value.content.unshift(o),u.value.totalElements++),t.value=o,o}catch(o){throw i.value=o.message||"Failed to create report",o}finally{l.value=!1}},updateReport:async(a,r)=>{var o,m;try{l.value=!0,i.value=null;const C=await k.updateReport(a,r);if((o=u.value)!=null&&o.content){const v=u.value.content.findIndex(s=>s.id===a);v!==-1&&(u.value.content[v]=C)}return((m=t.value)==null?void 0:m.id)===a&&(t.value=C),C}catch(C){throw i.value=C.message||"Failed to update report",C}finally{l.value=!1}},deleteReport:async a=>{var r,o;try{l.value=!0,i.value=null,await k.deleteReport(a),(r=u.value)!=null&&r.content&&(u.value.content=u.value.content.filter(m=>m.id!==a),u.value.totalElements--),((o=t.value)==null?void 0:o.id)===a&&(t.value=null),delete J.value[a]}catch(m){throw i.value=m.message||"Failed to delete report",m}finally{l.value=!1}},executeReport:async(a,r={})=>{try{l.value=!0,i.value=null;const o=await k.executeReport(a,r);return J.value[a]={...o,executedAt:new Date().toISOString(),params:r},o}catch(o){throw i.value=o.message||"Failed to execute report",o}finally{l.value=!1}},previewReport:async(a,r={})=>{try{return l.value=!0,i.value=null,M.value=await k.previewReport(a,r),M.value}catch(o){throw i.value=o.message||"Failed to preview report",o}finally{l.value=!1}},exportReport:async(a,r={})=>{var o,m;try{l.value=!0,i.value=null;const C=await k.exportReport(a,r),v=window.URL.createObjectURL(C),s=document.createElement("a");s.href=v;const c=new Date().toISOString().slice(0,10),Q=(m=(o=u.value)==null?void 0:o.content)==null?void 0:m.find(je=>je.id===a),Ke=`${(Q==null?void 0:Q.name)||"report"}_${c}.${r.format||"pdf"}`;return s.download=Ke,document.body.appendChild(s),s.click(),window.URL.revokeObjectURL(v),document.body.removeChild(s),C}catch(C){throw i.value=C.message||"Failed to export report",C}finally{l.value=!1}},fetchKPIs:async(a={})=>{try{return l.value=!0,i.value=null,T.value=await k.getKPIs(a),T.value}catch(r){throw i.value=r.message||"Failed to fetch KPIs",r}finally{l.value=!1}},fetchKPIById:async a=>{try{return l.value=!0,i.value=null,L.value=await k.getKPIById(a),L.value}catch(r){throw i.value=r.message||"Failed to fetch KPI",r}finally{l.value=!1}},createKPI:async a=>{try{l.value=!0,i.value=null;const r=await k.createKPI(a);return Array.isArray(T.value)&&T.value.unshift(r),L.value=r,r}catch(r){throw i.value=r.message||"Failed to create KPI",r}finally{l.value=!1}},updateKPI:async(a,r)=>{var o;try{l.value=!0,i.value=null;const m=await k.updateKPI(a,r);if(Array.isArray(T.value)){const C=T.value.findIndex(v=>v.id===a);C!==-1&&(T.value[C]=m)}return((o=L.value)==null?void 0:o.id)===a&&(L.value=m),m}catch(m){throw i.value=m.message||"Failed to update KPI",m}finally{l.value=!1}},deleteKPI:async a=>{var r;try{l.value=!0,i.value=null,await k.deleteKPI(a),Array.isArray(T.value)&&(T.value=T.value.filter(o=>o.id!==a)),((r=L.value)==null?void 0:r.id)===a&&(L.value=null),delete G.value[a]}catch(o){throw i.value=o.message||"Failed to delete KPI",o}finally{l.value=!1}},calculateKPI:async(a,r={})=>{try{l.value=!0,i.value=null;const o=await k.calculateKPI(a,r);return G.value[a]={...o,calculatedAt:new Date().toISOString(),params:r},o}catch(o){throw i.value=o.message||"Failed to calculate KPI",o}finally{l.value=!1}},getKPIHistory:async(a,r={})=>{try{return l.value=!0,i.value=null,await k.getKPIHistory(a,r)}catch(o){throw i.value=o.message||"Failed to fetch KPI history",o}finally{l.value=!1}},fetchDashboards:async(a={})=>{try{return l.value=!0,i.value=null,$.value=await k.getDashboards(a),$.value}catch(r){throw i.value=r.message||"Failed to fetch dashboards",r}finally{l.value=!1}},fetchDashboardById:async a=>{try{return l.value=!0,i.value=null,O.value=await k.getDashboardById(a),O.value}catch(r){throw i.value=r.message||"Failed to fetch dashboard",r}finally{l.value=!1}},createDashboard:async a=>{try{l.value=!0,i.value=null;const r=await k.createDashboard(a);return Array.isArray($.value)&&$.value.unshift(r),O.value=r,r}catch(r){throw i.value=r.message||"Failed to create dashboard",r}finally{l.value=!1}},updateDashboard:async(a,r)=>{var o;try{l.value=!0,i.value=null;const m=await k.updateDashboard(a,r);if(Array.isArray($.value)){const C=$.value.findIndex(v=>v.id===a);C!==-1&&($.value[C]=m)}return((o=O.value)==null?void 0:o.id)===a&&(O.value=m),m}catch(m){throw i.value=m.message||"Failed to update dashboard",m}finally{l.value=!1}},deleteDashboard:async a=>{var r;try{l.value=!0,i.value=null,await k.deleteDashboard(a),Array.isArray($.value)&&($.value=$.value.filter(o=>o.id!==a)),((r=O.value)==null?void 0:r.id)===a&&(O.value=null),delete Y.value[a]}catch(o){throw i.value=o.message||"Failed to delete dashboard",o}finally{l.value=!1}},duplicateDashboard:async(a,r={})=>{try{l.value=!0,i.value=null;const o=await k.duplicateDashboard(a,r);return Array.isArray($.value)&&$.value.unshift(o),o}catch(o){throw i.value=o.message||"Failed to duplicate dashboard",o}finally{l.value=!1}},getDashboardData:async(a,r={})=>{try{l.value=!0,i.value=null;const o=await k.getDashboardData(a,r);return Y.value[a]={...o,loadedAt:new Date().toISOString(),params:r},o}catch(o){throw i.value=o.message||"Failed to fetch dashboard data",o}finally{l.value=!1}},fetchDataSources:async()=>{try{return l.value=!0,i.value=null,b.value=await k.getDataSources(),b.value}catch(a){throw i.value=a.message||"Failed to fetch data sources",a}finally{l.value=!1}},fetchDataSourceFields:async a=>{try{l.value=!0,i.value=null;const r=await k.getDataSourceFields(a);return E.value[a]=r,r}catch(r){throw i.value=r.message||"Failed to fetch data source fields",r}finally{l.value=!1}},fetchDataSourceSample:async(a,r={})=>{try{return l.value=!0,i.value=null,await k.getDataSourceSample(a,r)}catch(o){throw i.value=o.message||"Failed to fetch data source sample",o}finally{l.value=!1}},fetchReportTemplates:async(a={})=>{try{return l.value=!0,i.value=null,n.value=await k.getReportTemplates(a),n.value}catch(r){throw i.value=r.message||"Failed to fetch report templates",r}finally{l.value=!1}},createReportFromTemplate:async(a,r={})=>{var o;try{l.value=!0,i.value=null;const m=await k.createReportFromTemplate(a,r);return(o=u.value)!=null&&o.content&&(u.value.content.unshift(m),u.value.totalElements++),t.value=m,m}catch(m){throw i.value=m.message||"Failed to create report from template",m}finally{l.value=!1}},fetchReportAnalytics:async(a={})=>{try{return l.value=!0,i.value=null,B.value=await k.getReportAnalytics(a),B.value}catch(r){throw i.value=r.message||"Failed to fetch report analytics",r}finally{l.value=!1}},fetchSystemMetrics:async(a={})=>{try{return l.value=!0,i.value=null,V.value=await k.getSystemMetrics(a),V.value}catch(r){throw i.value=r.message||"Failed to fetch system metrics",r}finally{l.value=!1}},bulkDeleteReports:async a=>{var r;try{l.value=!0,i.value=null;const o=await k.bulkDeleteReports(a);return(r=u.value)!=null&&r.content&&(u.value.content=u.value.content.filter(m=>!a.includes(m.id)),u.value.totalElements-=o.deleted||a.length),a.forEach(m=>{delete J.value[m]}),o}catch(o){throw i.value=o.message||"Failed to bulk delete reports",o}finally{l.value=!1}},bulkUpdateReportStatus:async(a,r)=>{var o;try{l.value=!0,i.value=null;const m=await k.bulkUpdateReportStatus(a,r);return(o=u.value)!=null&&o.content&&(u.value.content=u.value.content.map(C=>a.includes(C.id)?{...C,status:r}:C)),m}catch(m){throw i.value=m.message||"Failed to bulk update report status",m}finally{l.value=!1}},bulkExportReports:async(a,r={})=>{try{l.value=!0,i.value=null;const o=await k.bulkExportReports(a,r),m=window.URL.createObjectURL(o),C=document.createElement("a");C.href=m;const s=`reports_bulk_${new Date().toISOString().slice(0,10)}.zip`;return C.download=s,document.body.appendChild(C),C.click(),window.URL.revokeObjectURL(m),document.body.removeChild(C),o}catch(o){throw i.value=o.message||"Failed to bulk export reports",o}finally{l.value=!1}},updateFilters:a=>{q.value={...q.value,...a}},clearFilters:()=>{q.value={search:"",type:"",status:"",createdBy:"",tags:[]}},clearCurrentSelections:()=>{t.value=null,L.value=null,O.value=null,M.value=null}}});function st(){const u=Be(),t=U(()=>u.loading),n=U(()=>u.error),b=async()=>{try{const d=new Date,h=new Date(d.getFullYear(),d.getMonth(),1),_=new Date(d.getFullYear(),d.getMonth()+1,0);u.setDateRange(h.toISOString().split("T")[0],_.toISOString().split("T")[0]),await u.calculateKPIs(),await u.generateWorkOrderTrends(),await u.generateAssetPerformance()}catch(d){console.error("Failed to initialize analytics:",d)}},E=async()=>{await u.calculateKPIs(),await u.generateWorkOrderTrends(),await u.generateAssetPerformance()},T=async(d,h)=>{u.setDateRange(d,h),await E()},L=U(()=>{const d=u.kpis||{};return!d.workOrders||!d.maintenance||!d.costs?[]:[{id:"work-orders-total",title:"Total Work Orders",value:d.workOrders.total||0,subtitle:"This period",change:M(d.workOrders.total||0,145),icon:"clipboard-list",color:"blue",trend:(d.workOrders.total||0)>145?"up":"down"},{id:"work-orders-completion",title:"Completion Rate",value:`${u.workOrderCompletionRate||0}%`,subtitle:"Work orders completed",change:M(u.workOrderCompletionRate||0,87),icon:"check-circle",color:"green",trend:(u.workOrderCompletionRate||0)>87?"up":"down"},{id:"assets-operational",title:"Asset Uptime",value:`${u.assetOperationalRate||0}%`,subtitle:"Assets operational",change:M(u.assetOperationalRate||0,92),icon:"cpu",color:"purple",trend:(u.assetOperationalRate||0)>92?"up":"down"},{id:"maintenance-compliance",title:"PM Compliance",value:`${d.maintenance.preventiveCompliance||0}%`,subtitle:"On-time maintenance",change:M(d.maintenance.preventiveCompliance||0,89),icon:"shield-check",color:"indigo",trend:(d.maintenance.preventiveCompliance||0)>89?"up":"down"},{id:"avg-response-time",title:"Avg Response Time",value:`${d.maintenance.avgResponseTime||0}h`,subtitle:"Time to start work",change:M(d.maintenance.avgResponseTime||0,2.8,!0),icon:"clock",color:"orange",trend:(d.maintenance.avgResponseTime||0)<2.8?"up":"down"},{id:"total-costs",title:"Total Costs",value:V(d.costs.totalCosts||0),subtitle:"This period",change:M(d.costs.totalCosts||0,32450),icon:"currency-dollar",color:"yellow",trend:(d.costs.totalCosts||0)<32450?"up":"down"}]}),G=U(()=>{const d=u.workOrderTrends||[];return{labels:d.map(h=>h.period||""),datasets:[{label:"Work Orders Created",data:d.map(h=>h.count||0),borderColor:"rgb(59, 130, 246)",backgroundColor:"rgba(59, 130, 246, 0.1)",tension:.4}]}}),$=U(()=>(u.assetPerformance||[]).map(h=>({...h,healthColor:l(h.healthScore||0),uptimeColor:l(h.uptime||0),status:B(h.healthScore||0,h.uptime||0)}))),O=U(()=>{var S;const d=((S=u.kpis)==null?void 0:S.maintenance)||{},h=u.preventiveMaintenanceRatio||{preventive:0,reactive:0},_=d.preventiveCompliance||0,w=d.avgResponseTime||0;return{compliance:{rate:_,color:i(_),status:_>=95?"excellent":_>=85?"good":"needs-improvement"},responseTime:{hours:w,color:w<=2?"green":w<=4?"yellow":"red",status:w<=2?"excellent":w<=4?"good":"needs-improvement"},preventiveRatio:{preventive:h.preventive,reactive:h.reactive,color:h.preventive>=70?"green":h.preventive>=50?"yellow":"red",status:h.preventive>=70?"excellent":h.preventive>=50?"good":"needs-improvement"}}}),Y=U(()=>{var S;const d=((S=u.kpis)==null?void 0:S.costs)||{},h=u.costBreakdown||[],_=d.totalCosts||0,w=d.avgCostPerWorkOrder||0;return{total:V(_),avgPerWorkOrder:V(w),breakdown:h.map(p=>({...p,formattedAmount:V(p.amount||0),color:q(p.category)})),trends:{labels:["Jan","Feb","Mar","Apr","May","Jun"],data:[28e3,32e3,29e3,35e3,_,0]}}}),J=U(()=>{var _,w;const d=u.systemHealthScore||0,h=u.kpis||{};return{score:d,status:d>=90?"excellent":d>=75?"good":d>=60?"fair":"poor",color:l(d),components:{assets:{score:((_=h.assets)==null?void 0:_.avgHealth)||0,status:"Assets"},workOrders:{score:u.workOrderCompletionRate||0,status:"Work Orders"},maintenance:{score:((w=h.maintenance)==null?void 0:w.preventiveCompliance)||0,status:"Maintenance"}}}}),M=(d,h,_=!1)=>{if(h===0)return 0;const w=(d-h)/h*100;return _?-w:w},l=d=>d>=90?"green":d>=75?"yellow":d>=60?"orange":"red",i=d=>d>=95?"green":d>=85?"yellow":"red",q=d=>({Labor:"blue",Parts:"green",Contractors:"purple",Utilities:"orange"})[d]||"gray",B=(d,h)=>d>=90&&h>=95?"excellent":d>=75&&h>=85?"good":d>=60&&h>=70?"fair":"poor",V=d=>new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:0,maximumFractionDigits:0}).format(d);return{loading:t,error:n,initializeAnalytics:b,refreshAnalytics:E,updateDateRange:T,getKPIWidgets:L,getWorkOrderTrends:G,getAssetPerformanceData:$,getMaintenanceMetrics:O,getCostAnalysis:Y,getSystemHealth:J}}function rt(){const u=Be(),{addNotification:t}=qe(),n=F(!1),b=F(!1),E=[{value:"work-orders-summary",label:"Work Orders Summary",description:"Comprehensive overview of work order performance and trends",requiredData:["workOrders","assets"],defaultFields:["id","title","status","priority","assignee","createdAt","completedAt"]},{value:"asset-performance",label:"Asset Performance Report",description:"Asset health, uptime, and maintenance history analysis",requiredData:["assets","workOrders","maintenance"],defaultFields:["name","category","status","healthScore","uptime","lastMaintenance"]},{value:"maintenance-compliance",label:"Maintenance Compliance Report",description:"Preventive maintenance schedule adherence and compliance metrics",requiredData:["preventiveMaintenance","workOrders"],defaultFields:["schedule","asset","frequency","lastCompleted","nextDue","status"]},{value:"cost-analysis",label:"Cost Analysis Report",description:"Detailed breakdown of maintenance costs and budget analysis",requiredData:["workOrders","parts","labor"],defaultFields:["workOrder","category","laborCost","partsCost","totalCost","date"]},{value:"technician-performance",label:"Technician Performance Report",description:"Individual technician productivity and performance metrics",requiredData:["workOrders","users"],defaultFields:["technician","completedTasks","avgCompletionTime","qualityScore"]},{value:"inventory-usage",label:"Inventory Usage Report",description:"Parts consumption, stock levels, and procurement analysis",requiredData:["parts","workOrders","inventory"],defaultFields:["partName","category","quantityUsed","currentStock","reorderPoint"]}],T=[{value:"csv",label:"CSV",description:"Comma-separated values for spreadsheet analysis"},{value:"xlsx",label:"Excel",description:"Microsoft Excel workbook with formatting"},{value:"pdf",label:"PDF",description:"Formatted PDF document for sharing"},{value:"json",label:"JSON",description:"Structured data for API integration"}],L=async p=>{n.value=!0;try{M(p);const g={...p,generatedAt:new Date().toISOString(),generatedBy:l(),version:"1.0"},A=await u.createCustomReport(g);return t({type:"success",title:"Report Generated",message:`${p.name} has been generated successfully`}),A}catch(g){throw console.error("Failed to generate report:",g),t({type:"error",title:"Report Generation Failed",message:g.message}),g}finally{n.value=!1}},G=async(p,g="csv",A={})=>{b.value=!0;try{const D=await u.exportReport(p,g);switch(g){case"csv":await i(p,D,A);break;case"xlsx":await q(p,D,A);break;case"pdf":await B(p,D,A);break;case"json":await V(p,D,A);break;default:throw new Error(`Unsupported export format: ${g}`)}return t({type:"success",title:"Export Successful",message:`Report exported as ${D}`}),D}catch(D){throw console.error("Failed to export report:",D),t({type:"error",title:"Export Failed",message:D.message}),D}finally{b.value=!1}},$=U(()=>Object.values(u.customReports).map(p=>({...p,formattedDate:w(p.createdAt),canExport:!0,canDelete:!0}))),O=U(()=>u.exportHistory.map(p=>({...p,formattedDate:S(p.timestamp)}))),Y=async p=>{try{const g=`schedule_${Date.now()}`;return t({type:"success",title:"Report Scheduled",message:`${p.name} will run ${p.schedule.frequency}`}),g}catch(g){throw console.error("Failed to schedule report:",g),t({type:"error",title:"Schedule Failed",message:g.message}),g}},J=async p=>{try{delete u.customReports[p],t({type:"success",title:"Report Deleted",message:"Custom report has been removed"})}catch(g){throw console.error("Failed to delete report:",g),t({type:"error",title:"Delete Failed",message:g.message}),g}},M=p=>{if(!p.name||p.name.trim().length===0)throw new Error("Report name is required");if(!p.type||!E.find(g=>g.value===p.type))throw new Error("Valid report type is required");if(!p.dateRange||!p.dateRange.start||!p.dateRange.end)throw new Error("Date range is required");if(new Date(p.dateRange.start)>=new Date(p.dateRange.end))throw new Error("End date must be after start date")},l=()=>({id:1,name:"Current User",email:"user@example.com"}),i=async(p,g,A)=>{const D=u.customReports[p];if(!D)throw new Error("Report not found");const j=d(D.data,A);_(j,g,"text/csv")},q=async(p,g,A)=>{if(!u.customReports[p])throw new Error("Report not found");console.log("Excel export would be implemented with SheetJS or similar"),await i(p,g.replace(".xlsx",".csv"),A)},B=async(p,g,A)=>{const D=u.customReports[p];if(!D)throw new Error("Report not found");console.log("PDF export would be implemented with jsPDF or Puppeteer");const j=h(D);_(j,g,"application/pdf")},V=async(p,g,A)=>{const D=u.customReports[p];if(!D)throw new Error("Report not found");const j=JSON.stringify(D,null,2);_(j,g,"application/json")},d=(p,g={})=>{if(!p||!p.details||p.details.length===0)return"No data available";const A=p.details,D=Object.keys(A[0]);return[D.join(","),...A.map(W=>D.map(le=>{const z=W[le];return typeof z=="string"&&(z.includes(",")||z.includes('"'))?`"${z.replace(/"/g,'""')}"`:z}).join(","))].join("\\n")},h=(p,g)=>`PDF Report: ${p.name}\\nGenerated: ${p.createdAt}\\n\\nContent would be formatted here...`,_=(p,g,A)=>{const D=new Blob([p],{type:A}),j=URL.createObjectURL(D),W=document.createElement("a");W.href=j,W.download=g,W.style.display="none",document.body.appendChild(W),W.click(),document.body.removeChild(W),URL.revokeObjectURL(j)},w=p=>new Date(p).toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"}),S=p=>new Date(p).toLocaleString("en-US",{year:"numeric",month:"short",day:"numeric",hour:"numeric",minute:"2-digit"});return{generatingReport:n,exportingReport:b,reportTypes:E,exportFormats:T,generateReport:L,exportReport:G,scheduleReport:Y,deleteReport:J,getCustomReports:$,getExportHistory:O}}const ot={class:"flex items-center space-x-3"},nt={class:"border-l border-gray-300 pl-3 ml-3"},lt={class:"flex items-center space-x-2 -mt-5"},it={class:"mt-5"},ct={class:"p-6"},ut={key:0,class:"flex items-center justify-center py-12"},dt={key:1,class:"rounded-lg bg-red-50 border border-red-200 p-4 mb-6"},pt={class:"flex"},vt={class:"ml-3"},mt={class:"mt-1 text-sm text-red-700"},yt={key:2,class:"space-y-8"},ht={class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6"},gt={class:"flex items-center"},ft={class:"flex-shrink-0"},bt={key:0,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5H7a2 2 0 00-2 2v10a2 2 0 002 2h8a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01"},wt={key:1,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"},xt={key:2,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 3v2m6-2v2M9 19v2m6-2v2M5 9H3m2 6H3m18-6h-2m2 6h-2M7 19h10a2 2 0 002-2V7a2 2 0 00-2-2H7a2 2 0 00-2 2v10a2 2 0 002 2zM9 9h6v6H9V9z"},Rt={key:3,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z"},kt={key:4,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"},_t={key:5,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8c-1.657 0-3 .895-3 2s1.343 2 3 2 3 .895 3 2-1.343 2-3 2m0-8c1.11 0 2.08.402 2.599 1M12 8V7m0 1v8m0 0v1m0-1c-1.11 0-2.08-.402-2.599-1"},Dt={class:"ml-4 flex-1"},Ct={class:"text-sm font-medium text-gray-600"},St={class:"flex items-baseline"},Pt={class:"text-2xl font-semibold text-gray-900"},Ft={key:0,class:"self-center flex-shrink-0 h-4 w-4",fill:"currentColor",viewBox:"0 0 20 20"},It={key:1,class:"self-center flex-shrink-0 h-4 w-4",fill:"currentColor",viewBox:"0 0 20 20"},Ut={class:"sr-only"},At={key:0,class:"text-xs text-gray-500 mt-1"},$t={class:"grid grid-cols-1 lg:grid-cols-2 gap-8"},Tt={class:"flex items-center justify-between mb-6"},Lt={class:"h-64"},Ot={class:"flex items-center justify-between mb-6"},Mt={class:"flex items-center"},Vt={class:"text-sm font-medium"},Et={class:"text-center mb-6"},Bt={class:"text-4xl font-bold text-gray-900 mb-2"},Kt={class:"space-y-3"},jt={class:"text-sm text-gray-600"},zt={class:"flex items-center"},Ht={class:"w-16 bg-gray-200 rounded-full h-2 mr-3"},qt={class:"text-sm font-medium text-gray-900 w-8"},Wt={class:"overflow-x-auto"},Nt={class:"min-w-full divide-y divide-gray-200"},Jt={class:"bg-white divide-y divide-gray-200"},Gt={class:"px-6 py-4 whitespace-nowrap"},Yt={class:"text-sm font-medium text-gray-900"},Qt={class:"text-sm text-gray-500"},Zt={class:"px-6 py-4 whitespace-nowrap"},Xt={class:"flex items-center"},ea={class:"w-16 bg-gray-200 rounded-full h-2 mr-3"},ta={class:"text-sm text-gray-900"},aa={class:"px-6 py-4 whitespace-nowrap text-sm text-gray-900"},sa={class:"px-6 py-4 whitespace-nowrap text-sm text-gray-900"},ra={class:"px-6 py-4 whitespace-nowrap"},oa={key:3,class:"space-y-8"},na={class:"grid grid-cols-1 md:grid-cols-3 gap-6"},la={class:"flex items-center"},ia={class:"text-3xl font-bold text-gray-900"},ca={class:"ml-3"},ua={class:"flex items-center"},da={class:"text-3xl font-bold text-gray-900"},pa={class:"ml-3"},va={class:"flex items-center"},ma={class:"text-3xl font-bold text-gray-900"},ya={class:"ml-3"},ha={class:"grid grid-cols-1 lg:grid-cols-2 gap-8"},ga={class:"space-y-3"},fa={class:"flex items-center justify-between"},ba={class:"text-sm font-medium text-gray-900"},wa={class:"flex items-center justify-between"},xa={class:"text-sm font-medium text-gray-900"},Ra={class:"space-y-3"},ka={class:"flex justify-between"},_a={class:"text-sm font-medium text-gray-900"},Da={class:"flex justify-between"},Ca={class:"text-sm font-medium text-gray-900"},Sa={class:"flex justify-between"},Pa={class:"text-sm font-medium text-gray-900"},Fa={key:4,class:"space-y-8"},Ia={class:"grid grid-cols-1 md:grid-cols-4 gap-6"},Ua={class:"text-3xl font-bold text-gray-900"},Aa={class:"text-3xl font-bold text-gray-900"},$a={class:"text-sm font-medium text-gray-600 mb-2"},Ta={class:"text-3xl font-bold text-gray-900"},La={class:"text-sm text-gray-500 mt-1"},Oa={class:"space-y-4"},Ma={class:"flex items-center"},Va={class:"font-medium text-gray-900"},Ea={class:"text-sm text-gray-600"},Ba={class:"text-right"},Ka={class:"text-lg font-bold text-gray-900"},ja={class:"space-y-4"},za={class:"grid grid-cols-2 gap-4"},Ha={class:"flex items-center justify-between"},qa={class:"flex items-center space-x-4"},Wa={key:0,class:"flex items-center text-sm text-gray-500"},Na={key:0,class:"w-4 h-4 mr-2 text-amber-500 animate-pulse",fill:"currentColor",viewBox:"0 0 20 20"},Ja={key:1,class:"w-4 h-4 mr-2 text-green-500",fill:"currentColor",viewBox:"0 0 20 20"},Ga={key:2},Ya={key:3},Qa={class:"flex space-x-3"},Za={__name:"ReportsView",setup(u){const{loading:t,error:n,initializeAnalytics:b,refreshAnalytics:E,updateDateRange:T,getKPIWidgets:L,getWorkOrderTrends:G,getAssetPerformanceData:$,getMaintenanceMetrics:O,getCostAnalysis:Y,getSystemHealth:J}=st(),{generatingReport:M,exportingReport:l,reportTypes:i,generateReport:q}=rt(),B=F("overview"),V=F(!1),d=F("30d"),h=F(null),_=F(null),w=F({start:"",end:""}),S=F({name:"",type:"",startDate:"",endDate:"",description:""}),{hasUnsavedChanges:p,lastSaveTime:g,restoreFormData:A,clearSavedData:D,hasSavedData:j,getSavedDataInfo:W,markUserInteraction:le}=Ye(S,{storageKey:"atlas_custom_report_form_data",saveInterval:3e3,excludeFields:[]}),z=F(!1),de=F(null),pe=U(()=>L.value),ie=U(()=>G.value),he=U(()=>$.value),K=U(()=>O.value),re=U(()=>Y.value),X=U(()=>J.value),ge=[{key:"overview",label:"Overview"},{key:"maintenance",label:"Maintenance"},{key:"costs",label:"Cost Analysis"}],fe=[{label:"Last 7 days",value:"7d"},{label:"Last 30 days",value:"30d"},{label:"Last 90 days",value:"90d"},{label:"Last year",value:"1y"}],be=U(()=>i.map(v=>({label:v.label,value:v.value}))),we=U(()=>g.value?new Date(g.value).toLocaleTimeString():""),xe=async()=>{await E()},Re=async()=>{console.log("Exporting all reports...")},ke=()=>{_e(),j()||(S.value={name:"",type:"",startDate:w.value.start,endDate:w.value.end,description:""}),V.value=!0},_e=()=>{j()&&(de.value=W(),z.value=!0,console.log("✅ Found saved report data, showing restore notification"))},ce=()=>{D(),V.value=!1,z.value=!1,S.value={name:"",type:"",startDate:"",endDate:"",description:""}},ve=async()=>{try{await q({name:S.value.name,type:S.value.type,dateRange:{start:S.value.startDate,end:S.value.endDate},description:S.value.description}),D(),ce()}catch(v){console.error("Failed to create custom report:",v)}},De=()=>{A(),z.value=!1,console.log("Report form data restored successfully")},Ce=()=>{D(),z.value=!1,S.value={name:"",type:"",startDate:w.value.start,endDate:w.value.end,description:""},console.log("Report auto-saved data dismissed")},ee=()=>{console.log("🔥 Report user interaction detected!"),le()},Se=async()=>{w.value.start&&w.value.end&&(await T(w.value.start,w.value.end),m())},Pe=v=>{B.value=v},Fe=v=>({blue:"bg-blue-100",green:"bg-green-100",purple:"bg-purple-100",indigo:"bg-indigo-100",orange:"bg-orange-100",yellow:"bg-yellow-100"})[v]||"bg-gray-100",Ie=v=>({blue:"text-blue-600",green:"text-green-600",purple:"text-purple-600",indigo:"text-indigo-600",orange:"text-orange-600",yellow:"text-yellow-600"})[v]||"text-gray-600",Ue=(v,s)=>s==="up"?"text-green-600":s==="down"?"text-red-600":"text-gray-500",Ae=v=>v>=90?"bg-green-500":v>=75?"bg-yellow-500":v>=60?"bg-orange-500":"bg-red-500",$e=v=>v>=90?"bg-green-500":v>=75?"bg-yellow-500":v>=60?"bg-orange-500":"bg-red-500",Te=v=>({excellent:"success",good:"info",fair:"warning",poor:"error"})[v]||"secondary",Le=v=>v>=95?"success":v>=85?"warning":"error",Oe=v=>v<=2?"success":v<=4?"warning":"error",a=v=>v>=70?"success":v>=50?"warning":"error",r=v=>({blue:"bg-blue-500",green:"bg-green-500",purple:"bg-purple-500",orange:"bg-orange-500"})[v]||"bg-gray-500",o=async()=>{if(!(!h.value||!window.Chart))try{const v=h.value.getContext("2d");_.value&&_.value.destroy(),_.value=new window.Chart(v,{type:"line",data:ie.value,options:{responsive:!0,maintainAspectRatio:!1,scales:{y:{beginAtZero:!0,grid:{color:"rgba(0, 0, 0, 0.1)"}},x:{grid:{display:!1}}},plugins:{legend:{display:!1}},elements:{point:{radius:4,hoverRadius:6}}}})}catch(v){console.error("Failed to initialize chart:",v)}},m=()=>{_.value&&(_.value.data=ie.value,_.value.update())},C=async()=>{if(!window.Chart)try{const{Chart:v,registerables:s}=await Ge(async()=>{const{Chart:c,registerables:Q}=await import("./chart-C0bvbYRK.js");return{Chart:c,registerables:Q}},[]);v.register(...s),window.Chart=v}catch(v){console.error("Failed to load Chart.js:",v)}};return Me(()=>ie.value,()=>{_.value&&m()},{deep:!0}),Me(()=>d.value,()=>{console.log("Chart period changed:",d.value)}),Ne(async()=>{const v=new Date,s=new Date(v.getFullYear(),v.getMonth(),1);w.value.start=s.toISOString().split("T")[0],w.value.end=v.toISOString().split("T")[0],await b(),await C(),setTimeout(()=>{o()},100)}),Je(()=>{_.value&&_.value.destroy()}),(v,s)=>(x(),me(Qe,null,{header:I(()=>[R(Ze,{title:"Reports & Analytics",description:"Real-time analytics and insights for facility management operations",breadcrumbs:[{text:"Reports",to:null}]},{actions:I(()=>[e("div",ot,[R(y(ae),{variant:"outline",size:"sm",onClick:Re,loading:y(l)},{default:I(()=>s[10]||(s[10]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1),N(" Export All ",-1)])),_:1,__:[10]},8,["loading"]),R(y(ae),{variant:"outline",size:"sm",onClick:xe,loading:y(t)},{default:I(()=>s[11]||(s[11]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),N(" Refresh ",-1)])),_:1,__:[11]},8,["loading"]),R(y(ae),{variant:"primary",size:"sm",onClick:ke},{default:I(()=>s[12]||(s[12]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),N(" Custom Report ",-1)])),_:1,__:[12]}),e("div",nt,[e("div",lt,[e("div",null,[s[13]||(s[13]=e("label",{class:"block text-xs font-medium text-gray-700 mb-1"},"From",-1)),R(y(se),{modelValue:w.value.start,"onUpdate:modelValue":s[0]||(s[0]=c=>w.value.start=c),type:"date",size:"sm"},null,8,["modelValue"])]),e("div",null,[s[14]||(s[14]=e("label",{class:"block text-xs font-medium text-gray-700 mb-1"},"To",-1)),R(y(se),{modelValue:w.value.end,"onUpdate:modelValue":s[1]||(s[1]=c=>w.value.end=c),type:"date",size:"sm"},null,8,["modelValue"])]),e("div",it,[R(y(ae),{variant:"outline",size:"sm",onClick:Se},{default:I(()=>s[15]||(s[15]=[N(" Apply ",-1)])),_:1,__:[15]})])])])])]),tabs:I(()=>[R(y(et),{modelValue:B.value,"onUpdate:modelValue":s[2]||(s[2]=c=>B.value=c),tabs:ge,onTabChange:Pe},null,8,["modelValue"])]),_:1})]),default:I(()=>[e("div",ct,[y(t)&&!pe.value.length?(x(),P("div",ut,s[16]||(s[16]=[e("div",{class:"text-center"},[e("div",{class:"animate-spin rounded-full h-12 w-12 border-b-2 border-primary-600 mx-auto"}),e("p",{class:"mt-4 text-gray-600"},"Loading analytics...")],-1)]))):y(n)?(x(),P("div",dt,[e("div",pt,[s[18]||(s[18]=e("div",{class:"flex-shrink-0"},[e("svg",{class:"h-5 w-5 text-red-400",viewBox:"0 0 20 20",fill:"currentColor"},[e("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z","clip-rule":"evenodd"})])],-1)),e("div",vt,[s[17]||(s[17]=e("h3",{class:"text-sm font-medium text-red-800"},"Analytics Error",-1)),e("p",mt,f(y(n)),1)])])])):B.value==="overview"?(x(),P("div",yt,[e("div",ht,[(x(!0),P(oe,null,ne(pe.value,c=>(x(),me(y(H),{padding:"lg",key:c.id},{default:I(()=>[e("div",gt,[e("div",ft,[e("div",{class:Z(["w-10 h-10 rounded-lg flex items-center justify-center",Fe(c.color)])},[(x(),P("svg",{class:Z(["w-5 h-5",Ie(c.color)]),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[c.icon==="clipboard-list"?(x(),P("path",bt)):c.icon==="check-circle"?(x(),P("path",wt)):c.icon==="cpu"?(x(),P("path",xt)):c.icon==="shield-check"?(x(),P("path",Rt)):c.icon==="clock"?(x(),P("path",kt)):c.icon==="currency-dollar"?(x(),P("path",_t)):te("",!0)],2))],2)]),e("div",Dt,[e("p",Ct,f(c.title),1),e("div",St,[e("p",Pt,f(c.value),1),c.change!==void 0?(x(),P("p",{key:0,class:Z(["ml-2 flex items-baseline text-sm font-semibold",Ue(c.change,c.trend)])},[c.trend==="up"?(x(),P("svg",Ft,s[19]||(s[19]=[e("path",{"fill-rule":"evenodd",d:"M3.293 9.707a1 1 0 010-1.414l6-6a1 1 0 011.414 0l6 6a1 1 0 01-1.414 1.414L11 5.414V17a1 1 0 11-2 0V5.414L4.707 9.707a1 1 0 01-1.414 0z","clip-rule":"evenodd"},null,-1)]))):(x(),P("svg",It,s[20]||(s[20]=[e("path",{"fill-rule":"evenodd",d:"M16.707 10.293a1 1 0 010 1.414l-6 6a1 1 0 01-1.414 0l-6-6a1 1 0 111.414-1.414L9 14.586V3a1 1 0 012 0v11.586l4.293-4.293a1 1 0 011.414 0z","clip-rule":"evenodd"},null,-1)]))),e("span",Ut,f(c.trend==="up"?"Increased":"Decreased")+" by",1),N(" "+f(Math.abs(c.change).toFixed(1))+"% ",1)],2)):te("",!0)]),c.subtitle?(x(),P("p",At,f(c.subtitle),1)):te("",!0)])])]),_:2},1024))),128))]),e("div",$t,[R(y(H),{padding:"lg"},{default:I(()=>[e("div",Tt,[s[21]||(s[21]=e("h3",{class:"text-lg font-semibold text-gray-900"},"Work Orders Over Time",-1)),R(y(Ee),{modelValue:d.value,"onUpdate:modelValue":s[3]||(s[3]=c=>d.value=c),options:fe,size:"sm"},null,8,["modelValue"])]),e("div",Lt,[e("canvas",{ref_key:"workOrdersChart",ref:h},null,512)])]),_:1}),R(y(H),{padding:"lg"},{default:I(()=>[e("div",Ot,[s[22]||(s[22]=e("h3",{class:"text-lg font-semibold text-gray-900"},"System Health",-1)),e("div",Mt,[e("div",{class:Z(["w-3 h-3 rounded-full mr-2",Ae(X.value.score)])},null,2),e("span",Vt,f(X.value.status.toUpperCase()),1)])]),e("div",Et,[e("div",Bt,f(X.value.score)+"%",1),s[23]||(s[23]=e("p",{class:"text-gray-600"},"Overall System Health",-1))]),e("div",Kt,[(x(!0),P(oe,null,ne(X.value.components,(c,Q)=>(x(),P("div",{key:Q,class:"flex items-center justify-between"},[e("span",jt,f(c.status),1),e("div",zt,[e("div",Ht,[e("div",{class:Z(["h-2 rounded-full",$e(c.score)]),style:Ve({width:`${c.score}%`})},null,6)]),e("span",qt,f(c.score)+"%",1)])]))),128))])]),_:1})]),R(y(H),{padding:"lg"},{default:I(()=>[s[25]||(s[25]=e("h3",{class:"text-lg font-semibold text-gray-900 mb-6"},"Asset Performance Overview",-1)),e("div",Wt,[e("table",Nt,[s[24]||(s[24]=e("thead",{class:"bg-gray-50"},[e("tr",null,[e("th",{class:"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"},"Asset"),e("th",{class:"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"},"Health Score"),e("th",{class:"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"},"Uptime"),e("th",{class:"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"},"MTTR"),e("th",{class:"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"},"Status")])],-1)),e("tbody",Jt,[(x(!0),P(oe,null,ne(he.value.slice(0,5),c=>(x(),P("tr",{key:c.id},[e("td",Gt,[e("div",Yt,f(c.name),1),e("div",Qt,f(c.category),1)]),e("td",Zt,[e("div",Xt,[e("div",ea,[e("div",{class:Z(["h-2 rounded-full",c.healthColor]),style:Ve({width:`${c.healthScore}%`})},null,6)]),e("span",ta,f(c.healthScore)+"%",1)])]),e("td",aa,f(c.uptime)+"%",1),e("td",sa,f(c.mttr)+"h",1),e("td",ra,[R(y(ue),{variant:Te(c.status)},{default:I(()=>[N(f(c.status),1)]),_:2},1032,["variant"])])]))),128))])])])]),_:1,__:[25]})])):B.value==="maintenance"?(x(),P("div",oa,[e("div",na,[R(y(H),{padding:"lg"},{default:I(()=>[s[26]||(s[26]=e("h4",{class:"text-sm font-medium text-gray-600 mb-2"},"Preventive Maintenance Compliance",-1)),e("div",la,[e("div",ia,f(K.value.compliance.rate)+"%",1),e("div",ca,[R(y(ue),{variant:Le(K.value.compliance.rate)},{default:I(()=>[N(f(K.value.compliance.status),1)]),_:1},8,["variant"])])]),s[27]||(s[27]=e("p",{class:"text-sm text-gray-500 mt-1"},"On-time maintenance tasks",-1))]),_:1,__:[26,27]}),R(y(H),{padding:"lg"},{default:I(()=>[s[28]||(s[28]=e("h4",{class:"text-sm font-medium text-gray-600 mb-2"},"Average Response Time",-1)),e("div",ua,[e("div",da,f(K.value.responseTime.hours)+"h",1),e("div",pa,[R(y(ue),{variant:Oe(K.value.responseTime.hours)},{default:I(()=>[N(f(K.value.responseTime.status),1)]),_:1},8,["variant"])])]),s[29]||(s[29]=e("p",{class:"text-sm text-gray-500 mt-1"},"Time to start work",-1))]),_:1,__:[28,29]}),R(y(H),{padding:"lg"},{default:I(()=>[s[30]||(s[30]=e("h4",{class:"text-sm font-medium text-gray-600 mb-2"},"Preventive vs Reactive",-1)),e("div",va,[e("div",ma,f(K.value.preventiveRatio.preventive)+"%",1),e("div",ya,[R(y(ue),{variant:a(K.value.preventiveRatio.preventive)},{default:I(()=>[N(f(K.value.preventiveRatio.status),1)]),_:1},8,["variant"])])]),s[31]||(s[31]=e("p",{class:"text-sm text-gray-500 mt-1"},"Preventive maintenance ratio",-1))]),_:1,__:[30,31]})]),R(y(H),{padding:"lg"},{default:I(()=>[s[39]||(s[39]=e("h3",{class:"text-lg font-semibold text-gray-900 mb-6"},"Maintenance Performance Details",-1)),e("div",ha,[e("div",null,[s[34]||(s[34]=e("h4",{class:"text-md font-medium text-gray-900 mb-4"},"Preventive vs Reactive Breakdown",-1)),e("div",ga,[e("div",fa,[s[32]||(s[32]=e("div",{class:"flex items-center"},[e("div",{class:"w-3 h-3 bg-green-500 rounded-full mr-3"}),e("span",{class:"text-sm text-gray-700"},"Preventive Maintenance")],-1)),e("span",ba,f(K.value.preventiveRatio.preventive)+"%",1)]),e("div",wa,[s[33]||(s[33]=e("div",{class:"flex items-center"},[e("div",{class:"w-3 h-3 bg-red-500 rounded-full mr-3"}),e("span",{class:"text-sm text-gray-700"},"Reactive Maintenance")],-1)),e("span",xa,f(K.value.preventiveRatio.reactive)+"%",1)])])]),e("div",null,[s[38]||(s[38]=e("h4",{class:"text-md font-medium text-gray-900 mb-4"},"Performance Indicators",-1)),e("div",Ra,[e("div",ka,[s[35]||(s[35]=e("span",{class:"text-sm text-gray-600"},"Compliance Rate",-1)),e("span",_a,f(K.value.compliance.rate)+"%",1)]),e("div",Da,[s[36]||(s[36]=e("span",{class:"text-sm text-gray-600"},"Avg Response Time",-1)),e("span",Ca,f(K.value.responseTime.hours)+"h",1)]),e("div",Sa,[s[37]||(s[37]=e("span",{class:"text-sm text-gray-600"},"System Health",-1)),e("span",Pa,f(X.value.score)+"%",1)])])])])]),_:1,__:[39]})])):B.value==="costs"?(x(),P("div",Fa,[e("div",Ia,[R(y(H),{padding:"lg"},{default:I(()=>[s[40]||(s[40]=e("h4",{class:"text-sm font-medium text-gray-600 mb-2"},"Total Costs",-1)),e("p",Ua,f(re.value.total),1),s[41]||(s[41]=e("p",{class:"text-sm text-gray-500 mt-1"},"This period",-1))]),_:1,__:[40,41]}),R(y(H),{padding:"lg"},{default:I(()=>[s[42]||(s[42]=e("h4",{class:"text-sm font-medium text-gray-600 mb-2"},"Avg per Work Order",-1)),e("p",Aa,f(re.value.avgPerWorkOrder),1),s[43]||(s[43]=e("p",{class:"text-sm text-gray-500 mt-1"},"Average cost",-1))]),_:1,__:[42,43]}),(x(!0),P(oe,null,ne(re.value.breakdown.slice(0,2),c=>(x(),me(y(H),{padding:"lg",key:c.category},{default:I(()=>[e("h4",$a,f(c.category),1),e("p",Ta,f(c.formattedAmount),1),e("p",La,f(c.percentage)+"% of total",1)]),_:2},1024))),128))]),R(y(H),{padding:"lg"},{default:I(()=>[s[44]||(s[44]=e("h3",{class:"text-lg font-semibold text-gray-900 mb-6"},"Cost Breakdown by Category",-1)),e("div",Oa,[(x(!0),P(oe,null,ne(re.value.breakdown,c=>(x(),P("div",{key:c.category,class:"flex items-center justify-between p-4 bg-gray-50 rounded-lg"},[e("div",Ma,[e("div",{class:Z(["w-4 h-4 rounded-full mr-4",r(c.color)])},null,2),e("div",null,[e("h4",Va,f(c.category),1),e("p",Ea,f(c.percentage)+"% of total costs",1)])]),e("div",Ba,[e("p",Ka,f(c.formattedAmount),1)])]))),128))])]),_:1,__:[44]})])):te("",!0)]),R(y(Xe),{modelValue:V.value,"onUpdate:modelValue":s[9]||(s[9]=c=>V.value=c),title:"Create Custom Report",size:"lg",onConfirm:ve,onCancel:ce},{footer:I(()=>[e("div",Ha,[e("div",qa,[y(p)||y(g)?(x(),P("div",Wa,[y(p)?(x(),P("svg",Na,s[45]||(s[45]=[e("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z","clip-rule":"evenodd"},null,-1)]))):(x(),P("svg",Ja,s[46]||(s[46]=[e("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z","clip-rule":"evenodd"},null,-1)]))),y(p)?(x(),P("span",Ga,"Auto-saving...")):y(g)?(x(),P("span",Ya,"Last saved "+f(we.value),1)):te("",!0)])):te("",!0)]),e("div",Qa,[R(y(ae),{variant:"secondary",onClick:ce},{default:I(()=>s[47]||(s[47]=[N(" Cancel ",-1)])),_:1,__:[47]}),R(y(ae),{variant:"primary",loading:y(M),onClick:ve},{default:I(()=>s[48]||(s[48]=[N(" Create Report ",-1)])),_:1,__:[48]},8,["loading"])])])]),default:I(()=>[R(y(tt),{visible:z.value,"saved-data-info":de.value,onRestore:De,onDismiss:Ce},null,8,["visible","saved-data-info"]),e("div",ja,[R(y(se),{modelValue:S.value.name,"onUpdate:modelValue":s[4]||(s[4]=c=>S.value.name=c),label:"Report Name",placeholder:"Enter report name",required:"",onInput:ee},null,8,["modelValue"]),R(y(Ee),{modelValue:S.value.type,"onUpdate:modelValue":s[5]||(s[5]=c=>S.value.type=c),label:"Report Type",options:be.value,required:"",onChange:ee},null,8,["modelValue","options"]),e("div",za,[R(y(se),{modelValue:S.value.startDate,"onUpdate:modelValue":s[6]||(s[6]=c=>S.value.startDate=c),label:"Start Date",type:"date",required:"",onInput:ee},null,8,["modelValue"]),R(y(se),{modelValue:S.value.endDate,"onUpdate:modelValue":s[7]||(s[7]=c=>S.value.endDate=c),label:"End Date",type:"date",required:"",onInput:ee},null,8,["modelValue"])]),R(y(se),{modelValue:S.value.description,"onUpdate:modelValue":s[8]||(s[8]=c=>S.value.description=c),label:"Description",placeholder:"Describe what this report should include",type:"textarea",onInput:ee},null,8,["modelValue"])])]),_:1},8,["modelValue"])]),_:1}))}},cs=We(Za,[["__scopeId","data-v-0db11884"]]);export{cs as default}; diff --git a/frontend/dist/assets/RequestDetailView-BkDwCZ7I.js b/frontend/dist/assets/RequestDetailView-yLJ0QKmY.js similarity index 94% rename from frontend/dist/assets/RequestDetailView-BkDwCZ7I.js rename to frontend/dist/assets/RequestDetailView-yLJ0QKmY.js index 594a0ca9..c6c272e7 100644 --- a/frontend/dist/assets/RequestDetailView-BkDwCZ7I.js +++ b/frontend/dist/assets/RequestDetailView-yLJ0QKmY.js @@ -1 +1 @@ -import{r as c,c as P,s as te,o as se,i as B,w as i,v as re,g as l,b as e,d as u,a,j as d,t as o,e as n,F as h,k as m,n as x,aR as E,ae as oe,aU as le,l as ae}from"./index-BUdRbiwj.js";import{u as ie,a as de,f as ne,R as ue,c as me}from"./useRequestManagement-aHkLwKaS.js";import{F as ve,a as ce}from"./FPPageHeader-CTG2L28r.js";import{F as k}from"./FPCard-qHzcEQAE.js";import{F as xe}from"./FPModal-DWGF1LV8.js";import{F as b}from"./FPBadge-BKY5dPnL.js";import{F as ge}from"./FPTabs-R71V25QN.js";const pe={class:"px-6 py-8"},ye={key:0,class:"flex items-center justify-center h-64"},fe={key:1,class:"text-center py-12"},ke={class:"text-gray-600 mb-6"},be={key:2,class:"space-y-8"},we={class:"grid grid-cols-1 md:grid-cols-4 gap-6"},_e={class:"flex items-center"},he={class:"flex-shrink-0"},qe={class:"ml-4"},Re={class:"text-2xl font-bold text-gray-900"},Be={class:"flex items-center"},Ce={class:"flex-shrink-0"},De={class:"ml-4"},Te={class:"text-2xl font-bold text-gray-900"},Ae={class:"flex items-center"},Se={class:"ml-4"},je={class:"text-lg font-semibold text-gray-900"},Fe={class:"flex items-center"},Ne={class:"ml-4"},Oe={key:0,class:"text-xs text-red-500"},Le={key:0,class:"space-y-6"},Me={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},Pe={class:"space-y-2"},Ee={class:"text-sm font-medium text-gray-900"},Ve={class:"text-sm font-medium text-gray-900"},ze={class:"space-y-2"},Ue={class:"flex items-center space-x-2"},$e={class:"text-sm font-medium text-gray-900"},Ie={key:0},He={class:"flex items-center space-x-2"},We={class:"text-sm font-medium text-gray-900"},Je={key:1},Qe={class:"text-sm font-medium text-gray-900"},Ye={key:2},Ke={class:"text-sm font-medium text-gray-900"},Ge={class:"text-sm text-gray-700 leading-relaxed"},Xe={key:0,class:"bg-orange-50 border border-orange-200 rounded-lg p-4"},Ze={class:"text-sm text-orange-700"},et={key:1,class:"bg-blue-50 border border-blue-200 rounded-lg p-4"},tt={class:"text-sm text-blue-700"},st={key:1,class:"space-y-6"},rt={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},ot={class:"space-y-3"},lt={class:"text-sm font-medium text-gray-900"},at={key:0},it={key:0,class:"text-xs text-red-500 ml-2"},dt={key:1},nt={class:"text-sm font-medium text-gray-900"},ut={class:"text-sm font-medium text-gray-900"},mt={key:0},vt={class:"space-y-3"},ct={key:0},xt={class:"text-sm font-medium text-gray-900"},gt={key:1},pt={class:"text-sm font-medium text-gray-900"},yt={class:"border-t pt-6"},ft={class:"space-y-4"},kt={class:"flex items-start space-x-3"},bt={class:"text-xs text-gray-500"},wt={key:0,class:"flex items-start space-x-3"},_t={class:"text-xs text-gray-500"},ht={key:2,class:"space-y-6"},qt={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},Rt={class:"space-y-3"},Bt={class:"text-sm font-medium text-gray-900"},Ct={class:"text-sm font-medium text-gray-900"},Dt={class:"flex items-center justify-center"},Tt={class:"space-y-4"},Pt={__name:"RequestDetailView",setup(At){const V=te(),C=re(),z=ie(),{approveRequest:U}=de(),{showNotification:D}=ae(),q=c(!1),w=c(null),s=c(null),g=c("basic"),p=c(!1),R=c(!1),y=c(""),$=P(()=>parseInt(V.params.id)),I=P(()=>{var t;const r=[{key:"basic",label:"Basic Information",icon:"info"},{key:"timeline",label:"Timeline",icon:"clock"}];return(t=s.value)!=null&&t.workOrder&&r.push({key:"workorder",label:"Work Order",icon:"clipboard"}),r}),T=async()=>{try{q.value=!0,w.value=null;const r=await z.fetchRequestById($.value);s.value=r}catch(r){w.value=r.message||"Failed to load request details"}finally{q.value=!1}},H=()=>{C.push(`/requests?edit=${s.value.id}`)},W=()=>{p.value=!0},J=async()=>{try{R.value=!0,await U(s.value.id,{comments:y.value.trim()}),D({type:"success",title:"Success",message:"Request approved successfully"}),p.value=!1,y.value="",await T()}catch(r){D({type:"error",title:"Error",message:r.message||"Failed to approve request"})}finally{R.value=!1}},Q=()=>{p.value=!1,y.value=""},Y=()=>{var r;(r=s.value)!=null&&r.workOrder&&C.push(`/work-orders/${s.value.workOrder.id}`)},A=r=>ne[r]||r,S=r=>ue[r]||r,j=r=>me[r]||r,F=r=>r?new Date(r).toLocaleDateString():null,f=r=>r?new Date(r).toLocaleString():"Not set",_=r=>r?new Date(r)r?`${r.firstName} ${r.lastName}`:"Unknown",K=r=>r?`${r.firstName} ${r.lastName}`:"Unassigned",O=r=>({pending:"warning",under_review:"primary",approved:"success",rejected:"error",in_progress:"primary",completed:"success",cancelled:"secondary"})[r]||"secondary",L=r=>({low:"secondary",medium:"primary",high:"warning",critical:"error",emergency:"error"})[r]||"secondary",G=r=>({pending:"bg-yellow-100",under_review:"bg-blue-100",approved:"bg-green-100",rejected:"bg-red-100",in_progress:"bg-purple-100",completed:"bg-green-200",cancelled:"bg-gray-100"})[r]||"bg-gray-100",X=r=>({pending:"text-yellow-600",under_review:"text-blue-600",approved:"text-green-600",rejected:"text-red-600",in_progress:"text-purple-600",completed:"text-green-700",cancelled:"text-gray-600"})[r]||"text-gray-600",Z=r=>({low:"bg-green-100",medium:"bg-blue-100",high:"bg-orange-100",critical:"bg-red-100",emergency:"bg-red-200"})[r]||"bg-gray-100",ee=r=>({low:"text-green-600",medium:"text-blue-600",high:"text-orange-600",critical:"text-red-600",emergency:"text-red-700"})[r]||"text-gray-600";return se(()=>{T()}),(r,t)=>(l(),B(ve,null,{header:i(()=>{var v,M;return[u(ce,{title:((v=s.value)==null?void 0:v.title)||"Request Details",description:s.value?`Request #${s.value.customId||s.value.id}`:"Loading request details...",breadcrumbs:[{text:"Requests",to:"/requests"},{text:((M=s.value)==null?void 0:M.title)||"Details",to:null}]},{actions:i(()=>[s.value?(l(),B(n(h),{key:0,variant:"outline",size:"sm",onClick:H},{default:i(()=>t[4]||(t[4]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1),m(" Edit Request ",-1)])),_:1,__:[4]})):d("",!0),s.value&&["pending","under_review"].includes(s.value.status)?(l(),B(n(h),{key:1,variant:"primary",size:"sm",onClick:W},{default:i(()=>t[5]||(t[5]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})],-1),m(" Approve Request ",-1)])),_:1,__:[5]})):d("",!0)]),_:1},8,["title","description","breadcrumbs"])]}),default:i(()=>[e("div",pe,[q.value?(l(),a("div",ye,t[6]||(t[6]=[e("div",{class:"animate-spin rounded-full h-12 w-12 border-b-2 border-primary-600"},null,-1)]))):w.value?(l(),a("div",fe,[t[8]||(t[8]=e("svg",{class:"w-16 h-16 mx-auto text-gray-300 mb-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),t[9]||(t[9]=e("h3",{class:"text-lg font-medium text-gray-900 mb-2"},"Failed to load request",-1)),e("p",ke,o(w.value),1),u(n(h),{variant:"outline",onClick:t[0]||(t[0]=v=>r.$router.push("/requests"))},{default:i(()=>t[7]||(t[7]=[m(" Back to Requests ",-1)])),_:1,__:[7]})])):s.value?(l(),a("div",be,[e("div",we,[u(n(k),null,{default:i(()=>[e("div",_e,[e("div",he,[e("div",{class:x(["w-8 h-8 rounded-lg flex items-center justify-center",G(s.value.status)])},[(l(),a("svg",{class:x(["w-5 h-5",X(s.value.status)]),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},t[10]||(t[10]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"},null,-1)]),2))],2)]),e("div",qe,[t[11]||(t[11]=e("div",{class:"text-sm font-medium text-gray-500"},"Status",-1)),e("div",Re,[u(n(b),{variant:O(s.value.status)},{default:i(()=>[m(o(A(s.value.status)),1)]),_:1},8,["variant"])])])])]),_:1}),u(n(k),null,{default:i(()=>[e("div",Be,[e("div",Ce,[e("div",{class:x(["w-8 h-8 rounded-lg flex items-center justify-center",Z(s.value.priority)])},[(l(),a("svg",{class:x(["w-5 h-5",ee(s.value.priority)]),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},t[12]||(t[12]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.854-.833-2.598 0L3.732 16.5c-.77.833.192 2.5 1.732 2.5z"},null,-1)]),2))],2)]),e("div",De,[t[13]||(t[13]=e("div",{class:"text-sm font-medium text-gray-500"},"Priority",-1)),e("div",Te,[u(n(b),{variant:L(s.value.priority)},{default:i(()=>[m(o(S(s.value.priority)),1)]),_:1},8,["variant"])])])])]),_:1}),u(n(k),null,{default:i(()=>[e("div",Ae,[t[15]||(t[15]=e("div",{class:"flex-shrink-0"},[e("div",{class:"w-8 h-8 rounded-lg bg-blue-100 flex items-center justify-center"},[e("svg",{class:"w-5 h-5 text-blue-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A1.994 1.994 0 013 12V7a4 4 0 014-4z"})])])],-1)),e("div",Se,[t[14]||(t[14]=e("div",{class:"text-sm font-medium text-gray-500"},"Type",-1)),e("div",je,o(j(s.value.type)),1)])])]),_:1}),u(n(k),null,{default:i(()=>[e("div",Fe,[t[17]||(t[17]=e("div",{class:"flex-shrink-0"},[e("div",{class:"w-8 h-8 rounded-lg bg-purple-100 flex items-center justify-center"},[e("svg",{class:"w-5 h-5 text-purple-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})])])],-1)),e("div",Ne,[t[16]||(t[16]=e("div",{class:"text-sm font-medium text-gray-500"},"Required Date",-1)),e("div",{class:x(["text-lg font-semibold text-gray-900",_(s.value.requiredDate)?"text-red-600":""])},o(F(s.value.requiredDate)||"Not set"),3),_(s.value.requiredDate)?(l(),a("div",Oe," Overdue ")):d("",!0)])])]),_:1})]),u(n(k),null,{default:i(()=>[u(n(ge),{modelValue:g.value,"onUpdate:modelValue":t[1]||(t[1]=v=>g.value=v),tabs:I.value},{default:i(()=>[g.value==="basic"?(l(),a("div",Le,[e("div",Me,[e("div",null,[t[22]||(t[22]=e("h4",{class:"text-sm font-medium text-gray-900 mb-2"},"Request Information",-1)),e("dl",Pe,[e("div",null,[t[18]||(t[18]=e("dt",{class:"text-sm text-gray-500"},"Title",-1)),e("dd",Ee,o(s.value.title),1)]),e("div",null,[t[19]||(t[19]=e("dt",{class:"text-sm text-gray-500"},"Type",-1)),e("dd",Ve,o(j(s.value.type)),1)]),e("div",null,[t[20]||(t[20]=e("dt",{class:"text-sm text-gray-500"},"Priority",-1)),e("dd",null,[u(n(b),{variant:L(s.value.priority)},{default:i(()=>[m(o(S(s.value.priority)),1)]),_:1},8,["variant"])])]),e("div",null,[t[21]||(t[21]=e("dt",{class:"text-sm text-gray-500"},"Status",-1)),e("dd",null,[u(n(b),{variant:O(s.value.status)},{default:i(()=>[m(o(A(s.value.status)),1)]),_:1},8,["variant"])])])])]),e("div",null,[t[27]||(t[27]=e("h4",{class:"text-sm font-medium text-gray-900 mb-2"},"Assignment & Location",-1)),e("dl",ze,[e("div",null,[t[23]||(t[23]=e("dt",{class:"text-sm text-gray-500"},"Requested By",-1)),e("dd",Ue,[u(n(E),{user:s.value.requestedBy,size:"sm"},null,8,["user"]),e("span",$e,o(N(s.value.requestedBy)),1)])]),s.value.assignedTo?(l(),a("div",Ie,[t[24]||(t[24]=e("dt",{class:"text-sm text-gray-500"},"Assigned To",-1)),e("dd",He,[u(n(E),{user:s.value.assignedTo,size:"sm"},null,8,["user"]),e("span",We,o(K(s.value.assignedTo)),1)])])):d("",!0),s.value.assetName?(l(),a("div",Je,[t[25]||(t[25]=e("dt",{class:"text-sm text-gray-500"},"Asset",-1)),e("dd",Qe,o(s.value.assetName),1)])):d("",!0),s.value.locationName?(l(),a("div",Ye,[t[26]||(t[26]=e("dt",{class:"text-sm text-gray-500"},"Location",-1)),e("dd",Ke,o(s.value.locationName),1)])):d("",!0)])])]),e("div",null,[t[28]||(t[28]=e("h4",{class:"text-sm font-medium text-gray-900 mb-2"},"Description",-1)),e("p",Ge,o(s.value.description),1)]),s.value.urgencyReason?(l(),a("div",Xe,[t[29]||(t[29]=e("h4",{class:"text-sm font-medium text-orange-800 mb-2"},"Urgency Reason",-1)),e("p",Ze,o(s.value.urgencyReason),1)])):d("",!0),s.value.businessJustification?(l(),a("div",et,[t[30]||(t[30]=e("h4",{class:"text-sm font-medium text-blue-800 mb-2"},"Business Justification",-1)),e("p",tt,o(s.value.businessJustification),1)])):d("",!0)])):d("",!0),g.value==="timeline"?(l(),a("div",st,[e("div",rt,[e("div",null,[t[35]||(t[35]=e("h4",{class:"text-sm font-medium text-gray-900 mb-4"},"Key Dates",-1)),e("dl",ot,[e("div",null,[t[31]||(t[31]=e("dt",{class:"text-sm text-gray-500"},"Created",-1)),e("dd",lt,o(f(s.value.createdAt)),1)]),s.value.requiredDate?(l(),a("div",at,[t[32]||(t[32]=e("dt",{class:"text-sm text-gray-500"},"Required Date",-1)),e("dd",{class:x(["text-sm font-medium",_(s.value.requiredDate)?"text-red-600":"text-gray-900"])},[m(o(F(s.value.requiredDate))+" ",1),_(s.value.requiredDate)?(l(),a("span",it,"(Overdue)")):d("",!0)],2)])):d("",!0),s.value.approvedDate?(l(),a("div",dt,[t[33]||(t[33]=e("dt",{class:"text-sm text-gray-500"},"Approved",-1)),e("dd",nt,o(f(s.value.approvedDate)),1)])):d("",!0),e("div",null,[t[34]||(t[34]=e("dt",{class:"text-sm text-gray-500"},"Last Updated",-1)),e("dd",ut,o(f(s.value.updatedAt)),1)])])]),s.value.estimatedHours||s.value.estimatedCost?(l(),a("div",mt,[t[38]||(t[38]=e("h4",{class:"text-sm font-medium text-gray-900 mb-4"},"Estimates",-1)),e("dl",vt,[s.value.estimatedHours?(l(),a("div",ct,[t[36]||(t[36]=e("dt",{class:"text-sm text-gray-500"},"Estimated Hours",-1)),e("dd",xt,o(s.value.estimatedHours)+" hours",1)])):d("",!0),s.value.estimatedCost?(l(),a("div",gt,[t[37]||(t[37]=e("dt",{class:"text-sm text-gray-500"},"Estimated Cost",-1)),e("dd",pt,"$"+o(s.value.estimatedCost.toFixed(2)),1)])):d("",!0)])])):d("",!0)]),e("div",yt,[t[43]||(t[43]=e("h4",{class:"text-sm font-medium text-gray-900 mb-4"},"Activity Timeline",-1)),e("div",ft,[e("div",kt,[t[40]||(t[40]=e("div",{class:"flex-shrink-0 w-2 h-2 rounded-full bg-blue-600 mt-2"},null,-1)),e("div",null,[t[39]||(t[39]=e("p",{class:"text-sm font-medium text-gray-900"},"Request created",-1)),e("p",bt,o(f(s.value.createdAt))+" by "+o(N(s.value.requestedBy)),1)])]),s.value.approvedDate?(l(),a("div",wt,[t[42]||(t[42]=e("div",{class:"flex-shrink-0 w-2 h-2 rounded-full bg-green-600 mt-2"},null,-1)),e("div",null,[t[41]||(t[41]=e("p",{class:"text-sm font-medium text-gray-900"},"Request approved",-1)),e("p",_t,o(f(s.value.approvedDate)),1)])])):d("",!0)])])])):d("",!0),g.value==="workorder"&&s.value.workOrder?(l(),a("div",ht,[t[49]||(t[49]=e("div",{class:"bg-green-50 border border-green-200 rounded-lg p-4"},[e("div",{class:"flex items-center"},[e("svg",{class:"w-5 h-5 text-green-600 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})]),e("span",{class:"text-sm font-medium text-green-800"},"Work Order Created")])],-1)),e("div",qt,[e("div",null,[t[47]||(t[47]=e("h4",{class:"text-sm font-medium text-gray-900 mb-4"},"Work Order Details",-1)),e("dl",Rt,[e("div",null,[t[44]||(t[44]=e("dt",{class:"text-sm text-gray-500"},"Work Order ID",-1)),e("dd",Bt,o(s.value.workOrder.id),1)]),e("div",null,[t[45]||(t[45]=e("dt",{class:"text-sm text-gray-500"},"Title",-1)),e("dd",Ct,o(s.value.workOrder.title),1)]),e("div",null,[t[46]||(t[46]=e("dt",{class:"text-sm text-gray-500"},"Status",-1)),e("dd",null,[u(n(b),{variant:"primary"},{default:i(()=>[m(o(s.value.workOrder.status),1)]),_:1})])])])]),e("div",Dt,[u(n(h),{variant:"primary",onClick:Y},{default:i(()=>t[48]||(t[48]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"})],-1),m(" View Work Order ",-1)])),_:1,__:[48]})])])])):d("",!0)]),_:1},8,["modelValue","tabs"])]),_:1})])):d("",!0)]),u(n(xe),{modelValue:p.value,"onUpdate:modelValue":t[3]||(t[3]=v=>p.value=v),title:"Approve Request",onConfirm:J,onCancel:Q,"confirm-text":"Approve",loading:R.value},{default:i(()=>[e("div",Tt,[t[51]||(t[51]=e("p",null,"Are you sure you want to approve this request? This will create a new work order.",-1)),e("div",null,[t[50]||(t[50]=e("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Approval Comments (Optional)",-1)),oe(e("textarea",{"onUpdate:modelValue":t[2]||(t[2]=v=>y.value=v),class:"w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",placeholder:"Add any comments about the approval...",rows:"3"},null,512),[[le,y.value]])])])]),_:1},8,["modelValue","loading"])]),_:1}))}};export{Pt as default}; +import{r as c,c as P,s as te,o as se,i as B,w as i,v as re,g as l,b as e,d as u,a,j as d,t as o,e as n,F as h,k as m,n as x,aS as V,ae as oe,aV as le,l as ae}from"./index-QAlcqU00.js";import{u as ie,a as de,f as ne,R as ue,c as me}from"./useRequestManagement-BaHfQU2h.js";import{F as ve,a as ce}from"./FPPageHeader-CFIwZZgQ.js";import{F as k}from"./FPCard-AB6NRXg5.js";import{F as xe}from"./FPModal-DMoPysvU.js";import{F as b}from"./FPBadge-DvOitM1C.js";import{F as ge}from"./FPTabs-qq-Tmb7J.js";const pe={class:"px-6 py-8"},ye={key:0,class:"flex items-center justify-center h-64"},fe={key:1,class:"text-center py-12"},ke={class:"text-gray-600 mb-6"},be={key:2,class:"space-y-8"},we={class:"grid grid-cols-1 md:grid-cols-4 gap-6"},_e={class:"flex items-center"},he={class:"flex-shrink-0"},qe={class:"ml-4"},Re={class:"text-2xl font-bold text-gray-900"},Be={class:"flex items-center"},Ce={class:"flex-shrink-0"},De={class:"ml-4"},Te={class:"text-2xl font-bold text-gray-900"},Ae={class:"flex items-center"},Se={class:"ml-4"},je={class:"text-lg font-semibold text-gray-900"},Fe={class:"flex items-center"},Ne={class:"ml-4"},Oe={key:0,class:"text-xs text-red-500"},Le={key:0,class:"space-y-6"},Me={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},Pe={class:"space-y-2"},Ve={class:"text-sm font-medium text-gray-900"},Ee={class:"text-sm font-medium text-gray-900"},ze={class:"space-y-2"},Ue={class:"flex items-center space-x-2"},$e={class:"text-sm font-medium text-gray-900"},Ie={key:0},He={class:"flex items-center space-x-2"},We={class:"text-sm font-medium text-gray-900"},Je={key:1},Qe={class:"text-sm font-medium text-gray-900"},Ye={key:2},Ke={class:"text-sm font-medium text-gray-900"},Ge={class:"text-sm text-gray-700 leading-relaxed"},Xe={key:0,class:"bg-orange-50 border border-orange-200 rounded-lg p-4"},Ze={class:"text-sm text-orange-700"},et={key:1,class:"bg-blue-50 border border-blue-200 rounded-lg p-4"},tt={class:"text-sm text-blue-700"},st={key:1,class:"space-y-6"},rt={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},ot={class:"space-y-3"},lt={class:"text-sm font-medium text-gray-900"},at={key:0},it={key:0,class:"text-xs text-red-500 ml-2"},dt={key:1},nt={class:"text-sm font-medium text-gray-900"},ut={class:"text-sm font-medium text-gray-900"},mt={key:0},vt={class:"space-y-3"},ct={key:0},xt={class:"text-sm font-medium text-gray-900"},gt={key:1},pt={class:"text-sm font-medium text-gray-900"},yt={class:"border-t pt-6"},ft={class:"space-y-4"},kt={class:"flex items-start space-x-3"},bt={class:"text-xs text-gray-500"},wt={key:0,class:"flex items-start space-x-3"},_t={class:"text-xs text-gray-500"},ht={key:2,class:"space-y-6"},qt={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},Rt={class:"space-y-3"},Bt={class:"text-sm font-medium text-gray-900"},Ct={class:"text-sm font-medium text-gray-900"},Dt={class:"flex items-center justify-center"},Tt={class:"space-y-4"},Pt={__name:"RequestDetailView",setup(At){const E=te(),C=re(),z=ie(),{approveRequest:U}=de(),{showNotification:D}=ae(),q=c(!1),w=c(null),s=c(null),g=c("basic"),p=c(!1),R=c(!1),y=c(""),$=P(()=>parseInt(E.params.id)),I=P(()=>{var t;const r=[{key:"basic",label:"Basic Information",icon:"info"},{key:"timeline",label:"Timeline",icon:"clock"}];return(t=s.value)!=null&&t.workOrder&&r.push({key:"workorder",label:"Work Order",icon:"clipboard"}),r}),T=async()=>{try{q.value=!0,w.value=null;const r=await z.fetchRequestById($.value);s.value=r}catch(r){w.value=r.message||"Failed to load request details"}finally{q.value=!1}},H=()=>{C.push(`/requests?edit=${s.value.id}`)},W=()=>{p.value=!0},J=async()=>{try{R.value=!0,await U(s.value.id,{comments:y.value.trim()}),D({type:"success",title:"Success",message:"Request approved successfully"}),p.value=!1,y.value="",await T()}catch(r){D({type:"error",title:"Error",message:r.message||"Failed to approve request"})}finally{R.value=!1}},Q=()=>{p.value=!1,y.value=""},Y=()=>{var r;(r=s.value)!=null&&r.workOrder&&C.push(`/work-orders/${s.value.workOrder.id}`)},A=r=>ne[r]||r,S=r=>ue[r]||r,j=r=>me[r]||r,F=r=>r?new Date(r).toLocaleDateString():null,f=r=>r?new Date(r).toLocaleString():"Not set",_=r=>r?new Date(r)r?`${r.firstName} ${r.lastName}`:"Unknown",K=r=>r?`${r.firstName} ${r.lastName}`:"Unassigned",O=r=>({pending:"warning",under_review:"primary",approved:"success",rejected:"error",in_progress:"primary",completed:"success",cancelled:"secondary"})[r]||"secondary",L=r=>({low:"secondary",medium:"primary",high:"warning",critical:"error",emergency:"error"})[r]||"secondary",G=r=>({pending:"bg-yellow-100",under_review:"bg-blue-100",approved:"bg-green-100",rejected:"bg-red-100",in_progress:"bg-purple-100",completed:"bg-green-200",cancelled:"bg-gray-100"})[r]||"bg-gray-100",X=r=>({pending:"text-yellow-600",under_review:"text-blue-600",approved:"text-green-600",rejected:"text-red-600",in_progress:"text-purple-600",completed:"text-green-700",cancelled:"text-gray-600"})[r]||"text-gray-600",Z=r=>({low:"bg-green-100",medium:"bg-blue-100",high:"bg-orange-100",critical:"bg-red-100",emergency:"bg-red-200"})[r]||"bg-gray-100",ee=r=>({low:"text-green-600",medium:"text-blue-600",high:"text-orange-600",critical:"text-red-600",emergency:"text-red-700"})[r]||"text-gray-600";return se(()=>{T()}),(r,t)=>(l(),B(ve,null,{header:i(()=>{var v,M;return[u(ce,{title:((v=s.value)==null?void 0:v.title)||"Request Details",description:s.value?`Request #${s.value.customId||s.value.id}`:"Loading request details...",breadcrumbs:[{text:"Requests",to:"/requests"},{text:((M=s.value)==null?void 0:M.title)||"Details",to:null}]},{actions:i(()=>[s.value?(l(),B(n(h),{key:0,variant:"outline",size:"sm",onClick:H},{default:i(()=>t[4]||(t[4]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1),m(" Edit Request ",-1)])),_:1,__:[4]})):d("",!0),s.value&&["pending","under_review"].includes(s.value.status)?(l(),B(n(h),{key:1,variant:"primary",size:"sm",onClick:W},{default:i(()=>t[5]||(t[5]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})],-1),m(" Approve Request ",-1)])),_:1,__:[5]})):d("",!0)]),_:1},8,["title","description","breadcrumbs"])]}),default:i(()=>[e("div",pe,[q.value?(l(),a("div",ye,t[6]||(t[6]=[e("div",{class:"animate-spin rounded-full h-12 w-12 border-b-2 border-primary-600"},null,-1)]))):w.value?(l(),a("div",fe,[t[8]||(t[8]=e("svg",{class:"w-16 h-16 mx-auto text-gray-300 mb-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),t[9]||(t[9]=e("h3",{class:"text-lg font-medium text-gray-900 mb-2"},"Failed to load request",-1)),e("p",ke,o(w.value),1),u(n(h),{variant:"outline",onClick:t[0]||(t[0]=v=>r.$router.push("/requests"))},{default:i(()=>t[7]||(t[7]=[m(" Back to Requests ",-1)])),_:1,__:[7]})])):s.value?(l(),a("div",be,[e("div",we,[u(n(k),null,{default:i(()=>[e("div",_e,[e("div",he,[e("div",{class:x(["w-8 h-8 rounded-lg flex items-center justify-center",G(s.value.status)])},[(l(),a("svg",{class:x(["w-5 h-5",X(s.value.status)]),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},t[10]||(t[10]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"},null,-1)]),2))],2)]),e("div",qe,[t[11]||(t[11]=e("div",{class:"text-sm font-medium text-gray-500"},"Status",-1)),e("div",Re,[u(n(b),{variant:O(s.value.status)},{default:i(()=>[m(o(A(s.value.status)),1)]),_:1},8,["variant"])])])])]),_:1}),u(n(k),null,{default:i(()=>[e("div",Be,[e("div",Ce,[e("div",{class:x(["w-8 h-8 rounded-lg flex items-center justify-center",Z(s.value.priority)])},[(l(),a("svg",{class:x(["w-5 h-5",ee(s.value.priority)]),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},t[12]||(t[12]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.854-.833-2.598 0L3.732 16.5c-.77.833.192 2.5 1.732 2.5z"},null,-1)]),2))],2)]),e("div",De,[t[13]||(t[13]=e("div",{class:"text-sm font-medium text-gray-500"},"Priority",-1)),e("div",Te,[u(n(b),{variant:L(s.value.priority)},{default:i(()=>[m(o(S(s.value.priority)),1)]),_:1},8,["variant"])])])])]),_:1}),u(n(k),null,{default:i(()=>[e("div",Ae,[t[15]||(t[15]=e("div",{class:"flex-shrink-0"},[e("div",{class:"w-8 h-8 rounded-lg bg-blue-100 flex items-center justify-center"},[e("svg",{class:"w-5 h-5 text-blue-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A1.994 1.994 0 013 12V7a4 4 0 014-4z"})])])],-1)),e("div",Se,[t[14]||(t[14]=e("div",{class:"text-sm font-medium text-gray-500"},"Type",-1)),e("div",je,o(j(s.value.type)),1)])])]),_:1}),u(n(k),null,{default:i(()=>[e("div",Fe,[t[17]||(t[17]=e("div",{class:"flex-shrink-0"},[e("div",{class:"w-8 h-8 rounded-lg bg-purple-100 flex items-center justify-center"},[e("svg",{class:"w-5 h-5 text-purple-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})])])],-1)),e("div",Ne,[t[16]||(t[16]=e("div",{class:"text-sm font-medium text-gray-500"},"Required Date",-1)),e("div",{class:x(["text-lg font-semibold text-gray-900",_(s.value.requiredDate)?"text-red-600":""])},o(F(s.value.requiredDate)||"Not set"),3),_(s.value.requiredDate)?(l(),a("div",Oe," Overdue ")):d("",!0)])])]),_:1})]),u(n(k),null,{default:i(()=>[u(n(ge),{modelValue:g.value,"onUpdate:modelValue":t[1]||(t[1]=v=>g.value=v),tabs:I.value},{default:i(()=>[g.value==="basic"?(l(),a("div",Le,[e("div",Me,[e("div",null,[t[22]||(t[22]=e("h4",{class:"text-sm font-medium text-gray-900 mb-2"},"Request Information",-1)),e("dl",Pe,[e("div",null,[t[18]||(t[18]=e("dt",{class:"text-sm text-gray-500"},"Title",-1)),e("dd",Ve,o(s.value.title),1)]),e("div",null,[t[19]||(t[19]=e("dt",{class:"text-sm text-gray-500"},"Type",-1)),e("dd",Ee,o(j(s.value.type)),1)]),e("div",null,[t[20]||(t[20]=e("dt",{class:"text-sm text-gray-500"},"Priority",-1)),e("dd",null,[u(n(b),{variant:L(s.value.priority)},{default:i(()=>[m(o(S(s.value.priority)),1)]),_:1},8,["variant"])])]),e("div",null,[t[21]||(t[21]=e("dt",{class:"text-sm text-gray-500"},"Status",-1)),e("dd",null,[u(n(b),{variant:O(s.value.status)},{default:i(()=>[m(o(A(s.value.status)),1)]),_:1},8,["variant"])])])])]),e("div",null,[t[27]||(t[27]=e("h4",{class:"text-sm font-medium text-gray-900 mb-2"},"Assignment & Location",-1)),e("dl",ze,[e("div",null,[t[23]||(t[23]=e("dt",{class:"text-sm text-gray-500"},"Requested By",-1)),e("dd",Ue,[u(n(V),{user:s.value.requestedBy,size:"sm"},null,8,["user"]),e("span",$e,o(N(s.value.requestedBy)),1)])]),s.value.assignedTo?(l(),a("div",Ie,[t[24]||(t[24]=e("dt",{class:"text-sm text-gray-500"},"Assigned To",-1)),e("dd",He,[u(n(V),{user:s.value.assignedTo,size:"sm"},null,8,["user"]),e("span",We,o(K(s.value.assignedTo)),1)])])):d("",!0),s.value.assetName?(l(),a("div",Je,[t[25]||(t[25]=e("dt",{class:"text-sm text-gray-500"},"Asset",-1)),e("dd",Qe,o(s.value.assetName),1)])):d("",!0),s.value.locationName?(l(),a("div",Ye,[t[26]||(t[26]=e("dt",{class:"text-sm text-gray-500"},"Location",-1)),e("dd",Ke,o(s.value.locationName),1)])):d("",!0)])])]),e("div",null,[t[28]||(t[28]=e("h4",{class:"text-sm font-medium text-gray-900 mb-2"},"Description",-1)),e("p",Ge,o(s.value.description),1)]),s.value.urgencyReason?(l(),a("div",Xe,[t[29]||(t[29]=e("h4",{class:"text-sm font-medium text-orange-800 mb-2"},"Urgency Reason",-1)),e("p",Ze,o(s.value.urgencyReason),1)])):d("",!0),s.value.businessJustification?(l(),a("div",et,[t[30]||(t[30]=e("h4",{class:"text-sm font-medium text-blue-800 mb-2"},"Business Justification",-1)),e("p",tt,o(s.value.businessJustification),1)])):d("",!0)])):d("",!0),g.value==="timeline"?(l(),a("div",st,[e("div",rt,[e("div",null,[t[35]||(t[35]=e("h4",{class:"text-sm font-medium text-gray-900 mb-4"},"Key Dates",-1)),e("dl",ot,[e("div",null,[t[31]||(t[31]=e("dt",{class:"text-sm text-gray-500"},"Created",-1)),e("dd",lt,o(f(s.value.createdAt)),1)]),s.value.requiredDate?(l(),a("div",at,[t[32]||(t[32]=e("dt",{class:"text-sm text-gray-500"},"Required Date",-1)),e("dd",{class:x(["text-sm font-medium",_(s.value.requiredDate)?"text-red-600":"text-gray-900"])},[m(o(F(s.value.requiredDate))+" ",1),_(s.value.requiredDate)?(l(),a("span",it,"(Overdue)")):d("",!0)],2)])):d("",!0),s.value.approvedDate?(l(),a("div",dt,[t[33]||(t[33]=e("dt",{class:"text-sm text-gray-500"},"Approved",-1)),e("dd",nt,o(f(s.value.approvedDate)),1)])):d("",!0),e("div",null,[t[34]||(t[34]=e("dt",{class:"text-sm text-gray-500"},"Last Updated",-1)),e("dd",ut,o(f(s.value.updatedAt)),1)])])]),s.value.estimatedHours||s.value.estimatedCost?(l(),a("div",mt,[t[38]||(t[38]=e("h4",{class:"text-sm font-medium text-gray-900 mb-4"},"Estimates",-1)),e("dl",vt,[s.value.estimatedHours?(l(),a("div",ct,[t[36]||(t[36]=e("dt",{class:"text-sm text-gray-500"},"Estimated Hours",-1)),e("dd",xt,o(s.value.estimatedHours)+" hours",1)])):d("",!0),s.value.estimatedCost?(l(),a("div",gt,[t[37]||(t[37]=e("dt",{class:"text-sm text-gray-500"},"Estimated Cost",-1)),e("dd",pt,"$"+o(s.value.estimatedCost.toFixed(2)),1)])):d("",!0)])])):d("",!0)]),e("div",yt,[t[43]||(t[43]=e("h4",{class:"text-sm font-medium text-gray-900 mb-4"},"Activity Timeline",-1)),e("div",ft,[e("div",kt,[t[40]||(t[40]=e("div",{class:"flex-shrink-0 w-2 h-2 rounded-full bg-blue-600 mt-2"},null,-1)),e("div",null,[t[39]||(t[39]=e("p",{class:"text-sm font-medium text-gray-900"},"Request created",-1)),e("p",bt,o(f(s.value.createdAt))+" by "+o(N(s.value.requestedBy)),1)])]),s.value.approvedDate?(l(),a("div",wt,[t[42]||(t[42]=e("div",{class:"flex-shrink-0 w-2 h-2 rounded-full bg-green-600 mt-2"},null,-1)),e("div",null,[t[41]||(t[41]=e("p",{class:"text-sm font-medium text-gray-900"},"Request approved",-1)),e("p",_t,o(f(s.value.approvedDate)),1)])])):d("",!0)])])])):d("",!0),g.value==="workorder"&&s.value.workOrder?(l(),a("div",ht,[t[49]||(t[49]=e("div",{class:"bg-green-50 border border-green-200 rounded-lg p-4"},[e("div",{class:"flex items-center"},[e("svg",{class:"w-5 h-5 text-green-600 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})]),e("span",{class:"text-sm font-medium text-green-800"},"Work Order Created")])],-1)),e("div",qt,[e("div",null,[t[47]||(t[47]=e("h4",{class:"text-sm font-medium text-gray-900 mb-4"},"Work Order Details",-1)),e("dl",Rt,[e("div",null,[t[44]||(t[44]=e("dt",{class:"text-sm text-gray-500"},"Work Order ID",-1)),e("dd",Bt,o(s.value.workOrder.id),1)]),e("div",null,[t[45]||(t[45]=e("dt",{class:"text-sm text-gray-500"},"Title",-1)),e("dd",Ct,o(s.value.workOrder.title),1)]),e("div",null,[t[46]||(t[46]=e("dt",{class:"text-sm text-gray-500"},"Status",-1)),e("dd",null,[u(n(b),{variant:"primary"},{default:i(()=>[m(o(s.value.workOrder.status),1)]),_:1})])])])]),e("div",Dt,[u(n(h),{variant:"primary",onClick:Y},{default:i(()=>t[48]||(t[48]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"})],-1),m(" View Work Order ",-1)])),_:1,__:[48]})])])])):d("",!0)]),_:1},8,["modelValue","tabs"])]),_:1})])):d("",!0)]),u(n(xe),{modelValue:p.value,"onUpdate:modelValue":t[3]||(t[3]=v=>p.value=v),title:"Approve Request",onConfirm:J,onCancel:Q,"confirm-text":"Approve",loading:R.value},{default:i(()=>[e("div",Tt,[t[51]||(t[51]=e("p",null,"Are you sure you want to approve this request? This will create a new work order.",-1)),e("div",null,[t[50]||(t[50]=e("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Approval Comments (Optional)",-1)),oe(e("textarea",{"onUpdate:modelValue":t[2]||(t[2]=v=>y.value=v),class:"w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",placeholder:"Add any comments about the approval...",rows:"3"},null,512),[[le,y.value]])])])]),_:1},8,["modelValue","loading"])]),_:1}))}};export{Pt as default}; diff --git a/frontend/dist/assets/RequestsListView-01sUQsK4.js b/frontend/dist/assets/RequestsListView-ChMnc6ly.js similarity index 90% rename from frontend/dist/assets/RequestsListView-01sUQsK4.js rename to frontend/dist/assets/RequestsListView-ChMnc6ly.js index 1d19ae77..973eca67 100644 --- a/frontend/dist/assets/RequestsListView-01sUQsK4.js +++ b/frontend/dist/assets/RequestsListView-ChMnc6ly.js @@ -1 +1 @@ -import{r as d,c as p,o as at,s as st,v as ot,i as $,w as r,l as lt,g as v,b as o,d as l,e as s,F as g,n as S,k as R,h as J,a as b,j as h,t as q,aR as rt,ae as Q,aU as Y}from"./index-BUdRbiwj.js";import{u as nt,a as ut,R as G,b as k,c as W,d as ie,e as K,f as it,g as x}from"./useRequestManagement-aHkLwKaS.js";import{u as dt}from"./assets-eZiqmOvX.js";import{u as vt}from"./locations-IQR_pcEX.js";import{u as ct}from"./users-DxH_c7oY.js";import{u as mt}from"./useFormAutoSave-Jaawgo91.js";import{F as pt,a as ft}from"./FPPageHeader-CTG2L28r.js";import{F as I}from"./FPInput-CzR_dWoe.js";import{F as w}from"./FPSelect-C7p47Ma2.js";import{F as yt}from"./FPStats-BGfZcDZc.js";import{F as gt}from"./FPTable-CU8C_NYc.js";import{F as de}from"./FPModal-DWGF1LV8.js";import{F as ve}from"./FPBadge-BKY5dPnL.js";import{F as ce}from"./FPTabs-R71V25QN.js";import{_ as bt}from"./FormRestoreNotification-DYBlXhOP.js";import"./FPCard-qHzcEQAE.js";const qt={class:"p-6"},Rt={class:"mb-6 grid grid-cols-1 md:grid-cols-5 gap-4"},ht={class:"flex items-center space-x-2"},kt={class:"text-sm text-gray-600"},xt={class:"flex items-center space-x-2"},wt={class:"text-sm font-medium"},Ct={class:"text-sm"},Vt={key:0,class:"text-xs text-red-500"},Dt={class:"flex items-center space-x-2"},St={class:"space-y-6"},Ft={key:0,class:"space-y-4"},Tt={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},Et={key:0,class:"mt-1 text-sm text-red-600"},Ut={key:1,class:"space-y-4"},It={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},_t={key:0,class:"mt-1 text-sm text-red-600"},Pt={key:0,class:"mt-1 text-sm text-red-600"},Bt={class:"flex justify-between pt-4 border-t"},At={key:1},Ot={class:"flex items-center justify-between"},Lt={class:"flex items-center space-x-4"},zt={key:0,class:"flex items-center text-sm text-gray-500"},Mt={key:0,class:"w-4 h-4 mr-2 text-amber-500 animate-pulse",fill:"currentColor",viewBox:"0 0 20 20"},Nt={key:1,class:"w-4 h-4 mr-2 text-green-500",fill:"currentColor",viewBox:"0 0 20 20"},jt={key:2},Ht={key:3},$t={class:"flex space-x-3"},ia={__name:"RequestsListView",setup(Jt){const X=st(),z=ot(),i=nt(),Z=dt(),ee=vt(),te=ct(),{success:_,error:F}=lt(),{createRequest:me,updateRequest:pe,deleteRequest:fe,formatRequestForDisplay:ye,error:ae}=ut(),M=d(!1),C=d("all"),V=d(!1),T=d(!1),E=d(null),N=d(!1),U=d("create"),f=d("basic"),n=d({...K}),u=d({}),P=d(!1),c=d({search:"",priority:"",type:"",assignee:"",showOverdue:!1}),B=d({page:1,size:20,total:0,sortBy:"createdAt",sortDirection:"desc"}),{hasUnsavedChanges:j,lastSaveTime:A,clearSavedData:se,hasSavedData:ge,getSavedDataInfo:be,markUserInteraction:m,finishInitialization:qe,restoreFormData:Re}=mt(n,{storageKey:"atlas_request_form_data",saveInterval:3e3,excludeFields:[]}),O=d(!1),oe=d(null),he=[{key:"all",label:"All Requests",badge:p(()=>i.totalCount)},{key:"pending",label:"Pending",badge:p(()=>i.pendingRequests.length)},{key:"approved",label:"Approved",badge:p(()=>i.approvedRequests.length)},{key:"overdue",label:"Overdue",badge:p(()=>i.overdueRequests.length)}],ke=[{key:"basic",label:"Basic Information",icon:"info"},{key:"details",label:"Details",icon:"document"}],xe=[{key:"title",label:"Title",sortable:!0},{key:"type",label:"Type",sortable:!0},{key:"priority",label:"Priority",sortable:!0},{key:"status",label:"Status",sortable:!0},{key:"requestedBy",label:"Requested By",sortable:!1},{key:"asset",label:"Asset",sortable:!1},{key:"dueDate",label:"Required Date",sortable:!0,key:"requiredDate"},{key:"actions",label:"Actions",sortable:!1,width:"120px"}],we=p(()=>{let a=i.filteredRequests;return C.value==="pending"?a=i.pendingRequests:C.value==="approved"?a=i.approvedRequests:C.value==="overdue"&&(a=i.overdueRequests),c.value.showOverdue&&(a=a.filter(e=>H(e.requiredDate))),a.map(ye)}),Ce=p(()=>[{label:"Total Requests",value:i.totalCount,color:"blue"},{label:"Pending",value:i.pendingRequests.length,color:"yellow"},{label:"High Priority",value:i.highPriorityRequests.length,color:"red"},{label:"Overdue",value:i.overdueRequests.length,color:"red"}]),Ve=p(()=>[{value:"",label:"All Priorities"},...Object.entries(G).map(([a,e])=>({value:k[a],label:e}))]),De=p(()=>[{value:"",label:"All Types"},...Object.entries(W).map(([a,e])=>({value:ie[a],label:e}))]),Se=p(()=>{var e,t;const a=((t=(e=te.users)==null?void 0:e.value)==null?void 0:t.content)||[];return[{value:"",label:"All Users"},...a.map(y=>({value:y.id,label:`${y.firstName} ${y.lastName}`}))]}),Fe=p(()=>Object.entries(G).map(([a,e])=>({value:k[a],label:e}))),Te=p(()=>Object.entries(W).map(([a,e])=>({value:ie[a],label:e}))),Ee=p(()=>{var e,t;const a=((t=(e=Z.assets)==null?void 0:e.value)==null?void 0:t.content)||[];return[{value:null,label:"No asset"},...a.map(y=>({value:y.id,label:y.name}))]}),Ue=p(()=>{var e,t;const a=((t=(e=ee.locations)==null?void 0:e.value)==null?void 0:t.content)||[];return[{value:null,label:"No location"},...a.map(y=>({value:y.id,label:y.name}))]}),D=async()=>{try{M.value=!0,await Promise.all([i.fetchRequests(),Z.fetchAssets({page:0,size:100}),ee.searchLocations({page:0,size:100}),te.searchUsers({page:0,size:100})])}catch(a){F(a.message||"Failed to load data")}finally{M.value=!1}},Ie=()=>{D()},L=()=>{i.updateFilters(c.value)},_e=a=>{C.value=a},Pe=({key:a,direction:e})=>{B.value.sortBy=a,B.value.sortDirection=e,D()},Be=a=>{B.value.page=a,D()},Ae=()=>{c.value.showOverdue=!c.value.showOverdue},Oe=()=>{c.value={search:"",priority:"",type:"",assignee:"",showOverdue:!1},i.updateFilters({})},Le=async()=>{Re()&&(O.value=!1,_("Your previously saved form data has been restored.","Form Data Restored"))},ze=()=>{se(),O.value=!1},Me=p(()=>{if(!A.value)return"";const a=new Date,e=new Date(A.value),t=Math.floor((a-e)/1e3);return t<60?`${t}s ago`:t<3600?`${Math.floor(t/60)}m ago`:`${Math.floor(t/3600)}h ago`}),le=()=>{U.value="create",n.value={...K},f.value="basic",u.value={},V.value=!0},re=async a=>{try{U.value="edit",f.value="basic",u.value={};const e=await i.fetchRequestById(a);n.value={...e},V.value=!0}catch{F("Failed to load request details")}},ne=a=>{z.push(`/requests/${a.id}`)},Ne=async()=>{try{P.value=!0,u.value={},U.value==="create"?(await me(n.value),_("Request created successfully")):(await pe(n.value.id,n.value),_("Request updated successfully")),se(),V.value=!1,await D()}catch(a){ae.value&&(u.value={general:ae.value}),F(a.message||"Failed to save request")}finally{P.value=!1}},ue=()=>{V.value=!1,n.value={...K},u.value={}},je=()=>{f.value==="basic"&&(f.value="details")},He=()=>{f.value==="details"&&(f.value="basic")},$e=a=>{E.value=a,T.value=!0},Je=async()=>{try{N.value=!0,await fe(E.value.id),_("Request deleted successfully"),T.value=!1,E.value=null,await D()}catch{F("Failed to delete request")}finally{N.value=!1}},Qe=()=>{T.value=!1,E.value=null},Ye=async()=>{try{const a=await i.exportRequests({format:"csv",fields:["title","type","priority","status","requiredDate"]}),e=window.URL.createObjectURL(a),t=document.createElement("a");t.href=e,t.download="requests.csv",document.body.appendChild(t),t.click(),window.URL.revokeObjectURL(e),document.body.removeChild(t)}catch{F("Failed to export requests")}},Ge=a=>G[a]||a,We=a=>it[a]||a,Ke=a=>W[a]||a,Xe=a=>a?new Date(a).toLocaleDateString():"Not set",H=a=>a?new Date(a)a?`${a.firstName} ${a.lastName}`:"Unknown",et=a=>({[k.LOW]:"secondary",[k.MEDIUM]:"primary",[k.HIGH]:"warning",[k.CRITICAL]:"error",[k.EMERGENCY]:"error"})[a]||"secondary",tt=a=>({[x.PENDING]:"warning",[x.UNDER_REVIEW]:"primary",[x.APPROVED]:"success",[x.REJECTED]:"error",[x.IN_PROGRESS]:"primary",[x.COMPLETED]:"success",[x.CANCELLED]:"secondary"})[a]||"secondary";return at(async()=>{if(await D(),qe(),ge()){const t=be();oe.value=t,O.value=!0}const a=X.query.edit;a&&setTimeout(()=>{re(parseInt(a)),z.replace({path:"/requests"})},500),X.query.create==="true"&&setTimeout(()=>{le(),z.replace({path:"/requests"})},500)}),(a,e)=>(v(),$(pt,null,{header:r(()=>[l(ft,{title:"Requests",description:"Manage maintenance and service requests from users",breadcrumbs:[{text:"Requests",to:null}]},{actions:r(()=>[l(s(g),{variant:"outline",size:"sm",onClick:Ye},{default:r(()=>e[22]||(e[22]=[o("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1),R(" Export ",-1)])),_:1,__:[22]}),l(s(g),{variant:"outline",size:"sm",onClick:Ie},{default:r(()=>e[23]||(e[23]=[o("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),R(" Refresh ",-1)])),_:1,__:[23]}),l(s(g),{variant:"primary",size:"sm",onClick:le},{default:r(()=>e[24]||(e[24]=[o("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),R(" Create Request ",-1)])),_:1,__:[24]})]),stats:r(()=>[l(s(yt),{stats:Ce.value},null,8,["stats"])]),tabs:r(()=>[l(s(ce),{modelValue:C.value,"onUpdate:modelValue":e[0]||(e[0]=t=>C.value=t),tabs:he,onTabChange:_e},null,8,["modelValue"])]),_:1})]),default:r(()=>[o("div",qt,[o("div",Rt,[l(s(I),{modelValue:c.value.search,"onUpdate:modelValue":e[1]||(e[1]=t=>c.value.search=t),placeholder:"Search requests...",onInput:L},{prepend:r(()=>e[25]||(e[25]=[o("svg",{class:"w-4 h-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1)])),_:1},8,["modelValue"]),l(s(w),{modelValue:c.value.priority,"onUpdate:modelValue":[e[2]||(e[2]=t=>c.value.priority=t),L],placeholder:"Filter by Priority",options:Ve.value},null,8,["modelValue","options"]),l(s(w),{modelValue:c.value.type,"onUpdate:modelValue":[e[3]||(e[3]=t=>c.value.type=t),L],placeholder:"Filter by Type",options:De.value},null,8,["modelValue","options"]),l(s(w),{modelValue:c.value.assignee,"onUpdate:modelValue":[e[4]||(e[4]=t=>c.value.assignee=t),L],placeholder:"Filter by Assignee",options:Se.value},null,8,["modelValue","options"]),o("div",ht,[l(s(g),{variant:"outline",size:"sm",class:S(c.value.showOverdue?"bg-red-50 border-red-200 text-red-700":""),onClick:Ae},{default:r(()=>e[26]||(e[26]=[o("svg",{class:"w-4 h-4 mr-1",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})],-1),R(" Overdue ",-1)])),_:1,__:[26]},8,["class"]),l(s(g),{variant:"ghost",size:"sm",onClick:Oe},{default:r(()=>e[27]||(e[27]=[R(" Clear All ",-1)])),_:1,__:[27]})])]),l(s(gt),{columns:xe,data:we.value,loading:M.value,pagination:B.value,"empty-message":"No requests found",onSortChange:Pe,onPageChange:Be,onRowClick:ne},{priority:r(({row:t})=>[l(s(ve),{variant:et(t.priority)},{default:r(()=>[R(q(Ge(t.priority)),1)]),_:2},1032,["variant"])]),status:r(({row:t})=>[l(s(ve),{variant:tt(t.status)},{default:r(()=>[R(q(We(t.status)),1)]),_:2},1032,["variant"])]),type:r(({row:t})=>[o("span",kt,q(Ke(t.type)),1)]),requestedBy:r(({row:t})=>[o("div",xt,[l(s(rt),{user:t.requestedBy,size:"sm"},null,8,["user"]),o("span",wt,q(Ze(t.requestedBy)),1)])]),asset:r(({row:t})=>[o("span",{class:S(["text-sm",t.assetName?"text-gray-900":"text-gray-400"])},q(t.assetName||"No asset"),3)]),dueDate:r(({row:t})=>[o("div",Ct,[o("span",{class:S(H(t.requiredDate)?"text-red-600 font-medium":"text-gray-900")},q(Xe(t.requiredDate)),3),H(t.requiredDate)?(v(),b("div",Vt," Overdue ")):h("",!0)])]),actions:r(({row:t})=>[o("div",Dt,[l(s(g),{variant:"ghost",size:"sm",onClick:J(y=>ne(t),["stop"])},{default:r(()=>e[28]||(e[28]=[o("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"}),o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"})],-1)])),_:2,__:[28]},1032,["onClick"]),l(s(g),{variant:"ghost",size:"sm",onClick:J(y=>re(t.id),["stop"])},{default:r(()=>e[29]||(e[29]=[o("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1)])),_:2,__:[29]},1032,["onClick"]),l(s(g),{variant:"ghost",size:"sm",class:"text-red-600 hover:text-red-700",onClick:J(y=>$e(t),["stop"])},{default:r(()=>e[30]||(e[30]=[o("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1)])),_:2,__:[30]},1032,["onClick"])])]),_:1},8,["data","loading","pagination"])]),l(s(de),{modelValue:V.value,"onUpdate:modelValue":e[20]||(e[20]=t=>V.value=t),title:U.value==="create"?"Create Request":"Edit Request",size:"xl",onCancel:ue},{footer:r(()=>[o("div",Ot,[o("div",Lt,[s(j)||s(A)?(v(),b("div",zt,[s(j)?(v(),b("svg",Mt,e[36]||(e[36]=[o("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z","clip-rule":"evenodd"},null,-1)]))):(v(),b("svg",Nt,e[37]||(e[37]=[o("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z","clip-rule":"evenodd"},null,-1)]))),s(j)?(v(),b("span",jt,"Auto-saving...")):s(A)?(v(),b("span",Ht,"Last saved "+q(Me.value),1)):h("",!0)])):h("",!0)]),o("div",$t,[l(s(g),{variant:"outline",onClick:ue,disabled:P.value},{default:r(()=>e[38]||(e[38]=[R(" Cancel ",-1)])),_:1,__:[38]},8,["disabled"]),l(s(g),{variant:"primary",onClick:Ne,loading:P.value},{default:r(()=>[R(q(U.value==="create"?"Create Request":"Update Request"),1)]),_:1},8,["loading"])])])]),default:r(()=>[l(s(bt),{visible:O.value,"saved-data-info":oe.value,onRestore:Le,onDismiss:ze},null,8,["visible","saved-data-info"]),o("div",St,[l(s(ce),{modelValue:f.value,"onUpdate:modelValue":e[5]||(e[5]=t=>f.value=t),tabs:ke},null,8,["modelValue"]),f.value==="basic"?(v(),b("div",Ft,[o("div",Tt,[l(s(I),{modelValue:n.value.title,"onUpdate:modelValue":e[6]||(e[6]=t=>n.value.title=t),label:"Request Title",placeholder:"Enter request title",required:"",error:u.value.title,onInput:s(m)},null,8,["modelValue","error","onInput"]),l(s(w),{modelValue:n.value.type,"onUpdate:modelValue":e[7]||(e[7]=t=>n.value.type=t),label:"Request Type",placeholder:"Select type",options:Te.value,required:"",error:u.value.type,onChange:s(m)},null,8,["modelValue","options","error","onChange"]),l(s(w),{modelValue:n.value.priority,"onUpdate:modelValue":e[8]||(e[8]=t=>n.value.priority=t),label:"Priority",placeholder:"Select priority",options:Fe.value,required:"",error:u.value.priority,onChange:s(m)},null,8,["modelValue","options","error","onChange"]),l(s(I),{modelValue:n.value.requiredDate,"onUpdate:modelValue":e[9]||(e[9]=t=>n.value.requiredDate=t),type:"date",label:"Required Date",placeholder:"Select required date",error:u.value.requiredDate,onInput:s(m)},null,8,["modelValue","error","onInput"])]),o("div",null,[e[31]||(e[31]=o("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Description *",-1)),Q(o("textarea",{"onUpdate:modelValue":e[10]||(e[10]=t=>n.value.description=t),class:S(["w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",{"border-red-300":u.value.description}]),placeholder:"Describe the request in detail",rows:"4",required:"",onInput:e[11]||(e[11]=(...t)=>s(m)&&s(m)(...t))},null,34),[[Y,n.value.description]]),u.value.description?(v(),b("p",Et,q(u.value.description),1)):h("",!0)])])):h("",!0),f.value==="details"?(v(),b("div",Ut,[o("div",It,[l(s(w),{modelValue:n.value.assetId,"onUpdate:modelValue":e[12]||(e[12]=t=>n.value.assetId=t),label:"Asset",placeholder:"Select asset (optional)",options:Ee.value,error:u.value.assetId,onChange:s(m)},null,8,["modelValue","options","error","onChange"]),l(s(w),{modelValue:n.value.locationId,"onUpdate:modelValue":e[13]||(e[13]=t=>n.value.locationId=t),label:"Location",placeholder:"Select location (optional)",options:Ue.value,error:u.value.locationId,onChange:s(m)},null,8,["modelValue","options","error","onChange"]),l(s(I),{modelValue:n.value.estimatedHours,"onUpdate:modelValue":e[14]||(e[14]=t=>n.value.estimatedHours=t),label:"Estimated Hours",type:"number",step:"0.25",min:"0",placeholder:"0.0",error:u.value.estimatedHours,onInput:s(m)},null,8,["modelValue","error","onInput"]),l(s(I),{modelValue:n.value.estimatedCost,"onUpdate:modelValue":e[15]||(e[15]=t=>n.value.estimatedCost=t),label:"Estimated Cost",type:"number",step:"0.01",min:"0",placeholder:"0.00",error:u.value.estimatedCost,onInput:s(m)},null,8,["modelValue","error","onInput"])]),o("div",null,[e[32]||(e[32]=o("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Urgency Reason",-1)),Q(o("textarea",{"onUpdate:modelValue":e[16]||(e[16]=t=>n.value.urgencyReason=t),class:S(["w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",{"border-red-300":u.value.urgencyReason}]),placeholder:"Explain why this request is urgent (optional)",rows:"3",onInput:e[17]||(e[17]=(...t)=>s(m)&&s(m)(...t))},null,34),[[Y,n.value.urgencyReason]]),u.value.urgencyReason?(v(),b("p",_t,q(u.value.urgencyReason),1)):h("",!0)]),o("div",null,[e[33]||(e[33]=o("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Business Justification",-1)),Q(o("textarea",{"onUpdate:modelValue":e[18]||(e[18]=t=>n.value.businessJustification=t),class:S(["w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",{"border-red-300":u.value.businessJustification}]),placeholder:"Provide business justification for this request (optional)",rows:"3",onInput:e[19]||(e[19]=(...t)=>s(m)&&s(m)(...t))},null,34),[[Y,n.value.businessJustification]]),u.value.businessJustification?(v(),b("p",Pt,q(u.value.businessJustification),1)):h("",!0)])])):h("",!0),o("div",Bt,[f.value!=="basic"?(v(),$(s(g),{key:0,variant:"outline",onClick:He},{default:r(()=>e[34]||(e[34]=[R(" Previous ",-1)])),_:1,__:[34]})):(v(),b("div",At)),f.value!=="details"?(v(),$(s(g),{key:2,variant:"outline",onClick:je},{default:r(()=>e[35]||(e[35]=[R(" Next ",-1)])),_:1,__:[35]})):h("",!0)])])]),_:1},8,["modelValue","title"]),l(s(de),{modelValue:T.value,"onUpdate:modelValue":e[21]||(e[21]=t=>T.value=t),title:"Delete Request",onConfirm:Je,onCancel:Qe,"confirm-text":"Delete","cancel-text":"Cancel","confirm-variant":"error",loading:N.value},{default:r(()=>{var t;return[o("p",null,'Are you sure you want to delete the request "'+q((t=E.value)==null?void 0:t.title)+'"? This action cannot be undone.',1)]}),_:1},8,["modelValue","loading"])]),_:1}))}};export{ia as default}; +import{r as d,c as p,o as at,s as st,v as ot,i as $,w as r,l as lt,g as v,b as o,d as l,e as s,F as g,n as S,k as R,h as J,a as b,j as h,t as q,aS as rt,ae as Q,aV as Y}from"./index-QAlcqU00.js";import{u as nt,a as ut,R as G,b as k,c as W,d as ie,e as K,f as it,g as x}from"./useRequestManagement-BaHfQU2h.js";import{u as dt}from"./assets-CvfPiugk.js";import{u as vt}from"./locations-ElrWcwNd.js";import{u as ct}from"./users-DgNL-A0F.js";import{u as mt}from"./useFormAutoSave-BrW9Wl2Q.js";import{F as pt,a as ft}from"./FPPageHeader-CFIwZZgQ.js";import{F as U}from"./FPInput-D5RURom0.js";import{F as w}from"./FPSelect-j7n_x8eB.js";import{F as yt}from"./FPStats-DOY0PQQF.js";import{F as gt}from"./FPTable-CWvngIYd.js";import{F as de}from"./FPModal-DMoPysvU.js";import{F as ve}from"./FPBadge-DvOitM1C.js";import{F as ce}from"./FPTabs-qq-Tmb7J.js";import{_ as bt}from"./FormRestoreNotification-2Wflg1mH.js";import"./FPCard-AB6NRXg5.js";const qt={class:"p-6"},Rt={class:"mb-6 grid grid-cols-1 md:grid-cols-5 gap-4"},ht={class:"flex items-center space-x-2"},kt={class:"text-sm text-gray-600"},xt={class:"flex items-center space-x-2"},wt={class:"text-sm font-medium"},Ct={class:"text-sm"},Vt={key:0,class:"text-xs text-red-500"},Dt={class:"flex items-center space-x-2"},St={class:"space-y-6"},Ft={key:0,class:"space-y-4"},Tt={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},Et={key:0,class:"mt-1 text-sm text-red-600"},It={key:1,class:"space-y-4"},Ut={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},_t={key:0,class:"mt-1 text-sm text-red-600"},Pt={key:0,class:"mt-1 text-sm text-red-600"},Bt={class:"flex justify-between pt-4 border-t"},At={key:1},Ot={class:"flex items-center justify-between"},Lt={class:"flex items-center space-x-4"},zt={key:0,class:"flex items-center text-sm text-gray-500"},Mt={key:0,class:"w-4 h-4 mr-2 text-amber-500 animate-pulse",fill:"currentColor",viewBox:"0 0 20 20"},Nt={key:1,class:"w-4 h-4 mr-2 text-green-500",fill:"currentColor",viewBox:"0 0 20 20"},jt={key:2},Ht={key:3},$t={class:"flex space-x-3"},ia={__name:"RequestsListView",setup(Jt){const X=st(),z=ot(),i=nt(),Z=dt(),ee=vt(),te=ct(),{success:_,error:F}=lt(),{createRequest:me,updateRequest:pe,deleteRequest:fe,formatRequestForDisplay:ye,error:ae}=ut(),M=d(!1),C=d("all"),V=d(!1),T=d(!1),E=d(null),N=d(!1),I=d("create"),f=d("basic"),n=d({...K}),u=d({}),P=d(!1),c=d({search:"",priority:"",type:"",assignee:"",showOverdue:!1}),B=d({page:1,size:20,total:0,sortBy:"createdAt",sortDirection:"desc"}),{hasUnsavedChanges:j,lastSaveTime:A,clearSavedData:se,hasSavedData:ge,getSavedDataInfo:be,markUserInteraction:m,finishInitialization:qe,restoreFormData:Re}=mt(n,{storageKey:"atlas_request_form_data",saveInterval:3e3,excludeFields:[]}),O=d(!1),oe=d(null),he=[{key:"all",label:"All Requests",badge:p(()=>i.totalCount)},{key:"pending",label:"Pending",badge:p(()=>i.pendingRequests.length)},{key:"approved",label:"Approved",badge:p(()=>i.approvedRequests.length)},{key:"overdue",label:"Overdue",badge:p(()=>i.overdueRequests.length)}],ke=[{key:"basic",label:"Basic Information",icon:"info"},{key:"details",label:"Details",icon:"document"}],xe=[{key:"title",label:"Title",sortable:!0},{key:"type",label:"Type",sortable:!0},{key:"priority",label:"Priority",sortable:!0},{key:"status",label:"Status",sortable:!0},{key:"requestedBy",label:"Requested By",sortable:!1},{key:"asset",label:"Asset",sortable:!1},{key:"dueDate",label:"Required Date",sortable:!0,key:"requiredDate"},{key:"actions",label:"Actions",sortable:!1,width:"120px"}],we=p(()=>{let a=i.filteredRequests;return C.value==="pending"?a=i.pendingRequests:C.value==="approved"?a=i.approvedRequests:C.value==="overdue"&&(a=i.overdueRequests),c.value.showOverdue&&(a=a.filter(e=>H(e.requiredDate))),a.map(ye)}),Ce=p(()=>[{label:"Total Requests",value:i.totalCount,color:"blue"},{label:"Pending",value:i.pendingRequests.length,color:"yellow"},{label:"High Priority",value:i.highPriorityRequests.length,color:"red"},{label:"Overdue",value:i.overdueRequests.length,color:"red"}]),Ve=p(()=>[{value:"",label:"All Priorities"},...Object.entries(G).map(([a,e])=>({value:k[a],label:e}))]),De=p(()=>[{value:"",label:"All Types"},...Object.entries(W).map(([a,e])=>({value:ie[a],label:e}))]),Se=p(()=>{var e,t;const a=((t=(e=te.users)==null?void 0:e.value)==null?void 0:t.content)||[];return[{value:"",label:"All Users"},...a.map(y=>({value:y.id,label:`${y.firstName} ${y.lastName}`}))]}),Fe=p(()=>Object.entries(G).map(([a,e])=>({value:k[a],label:e}))),Te=p(()=>Object.entries(W).map(([a,e])=>({value:ie[a],label:e}))),Ee=p(()=>{var e,t;const a=((t=(e=Z.assets)==null?void 0:e.value)==null?void 0:t.content)||[];return[{value:null,label:"No asset"},...a.map(y=>({value:y.id,label:y.name}))]}),Ie=p(()=>{var e,t;const a=((t=(e=ee.locations)==null?void 0:e.value)==null?void 0:t.content)||[];return[{value:null,label:"No location"},...a.map(y=>({value:y.id,label:y.name}))]}),D=async()=>{try{M.value=!0,await Promise.all([i.fetchRequests(),Z.fetchAssets({page:0,size:100}),ee.searchLocations({page:0,size:100}),te.searchUsers({page:0,size:100})])}catch(a){F(a.message||"Failed to load data")}finally{M.value=!1}},Ue=()=>{D()},L=()=>{i.updateFilters(c.value)},_e=a=>{C.value=a},Pe=({key:a,direction:e})=>{B.value.sortBy=a,B.value.sortDirection=e,D()},Be=a=>{B.value.page=a,D()},Ae=()=>{c.value.showOverdue=!c.value.showOverdue},Oe=()=>{c.value={search:"",priority:"",type:"",assignee:"",showOverdue:!1},i.updateFilters({})},Le=async()=>{Re()&&(O.value=!1,_("Your previously saved form data has been restored.","Form Data Restored"))},ze=()=>{se(),O.value=!1},Me=p(()=>{if(!A.value)return"";const a=new Date,e=new Date(A.value),t=Math.floor((a-e)/1e3);return t<60?`${t}s ago`:t<3600?`${Math.floor(t/60)}m ago`:`${Math.floor(t/3600)}h ago`}),le=()=>{I.value="create",n.value={...K},f.value="basic",u.value={},V.value=!0},re=async a=>{try{I.value="edit",f.value="basic",u.value={};const e=await i.fetchRequestById(a);n.value={...e},V.value=!0}catch{F("Failed to load request details")}},ne=a=>{z.push(`/requests/${a.id}`)},Ne=async()=>{try{P.value=!0,u.value={},I.value==="create"?(await me(n.value),_("Request created successfully")):(await pe(n.value.id,n.value),_("Request updated successfully")),se(),V.value=!1,await D()}catch(a){ae.value&&(u.value={general:ae.value}),F(a.message||"Failed to save request")}finally{P.value=!1}},ue=()=>{V.value=!1,n.value={...K},u.value={}},je=()=>{f.value==="basic"&&(f.value="details")},He=()=>{f.value==="details"&&(f.value="basic")},$e=a=>{E.value=a,T.value=!0},Je=async()=>{try{N.value=!0,await fe(E.value.id),_("Request deleted successfully"),T.value=!1,E.value=null,await D()}catch{F("Failed to delete request")}finally{N.value=!1}},Qe=()=>{T.value=!1,E.value=null},Ye=async()=>{try{const a=await i.exportRequests({format:"csv",fields:["title","type","priority","status","requiredDate"]}),e=window.URL.createObjectURL(a),t=document.createElement("a");t.href=e,t.download="requests.csv",document.body.appendChild(t),t.click(),window.URL.revokeObjectURL(e),document.body.removeChild(t)}catch{F("Failed to export requests")}},Ge=a=>G[a]||a,We=a=>it[a]||a,Ke=a=>W[a]||a,Xe=a=>a?new Date(a).toLocaleDateString():"Not set",H=a=>a?new Date(a)a?`${a.firstName} ${a.lastName}`:"Unknown",et=a=>({[k.LOW]:"secondary",[k.MEDIUM]:"primary",[k.HIGH]:"warning",[k.CRITICAL]:"error",[k.EMERGENCY]:"error"})[a]||"secondary",tt=a=>({[x.PENDING]:"warning",[x.UNDER_REVIEW]:"primary",[x.APPROVED]:"success",[x.REJECTED]:"error",[x.IN_PROGRESS]:"primary",[x.COMPLETED]:"success",[x.CANCELLED]:"secondary"})[a]||"secondary";return at(async()=>{if(await D(),qe(),ge()){const t=be();oe.value=t,O.value=!0}const a=X.query.edit;a&&setTimeout(()=>{re(parseInt(a)),z.replace({path:"/requests"})},500),X.query.create==="true"&&setTimeout(()=>{le(),z.replace({path:"/requests"})},500)}),(a,e)=>(v(),$(pt,null,{header:r(()=>[l(ft,{title:"Requests",description:"Manage maintenance and service requests from users",breadcrumbs:[{text:"Requests",to:null}]},{actions:r(()=>[l(s(g),{variant:"outline",size:"sm",onClick:Ye},{default:r(()=>e[22]||(e[22]=[o("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1),R(" Export ",-1)])),_:1,__:[22]}),l(s(g),{variant:"outline",size:"sm",onClick:Ue},{default:r(()=>e[23]||(e[23]=[o("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),R(" Refresh ",-1)])),_:1,__:[23]}),l(s(g),{variant:"primary",size:"sm",onClick:le},{default:r(()=>e[24]||(e[24]=[o("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),R(" Create Request ",-1)])),_:1,__:[24]})]),stats:r(()=>[l(s(yt),{stats:Ce.value},null,8,["stats"])]),tabs:r(()=>[l(s(ce),{modelValue:C.value,"onUpdate:modelValue":e[0]||(e[0]=t=>C.value=t),tabs:he,onTabChange:_e},null,8,["modelValue"])]),_:1})]),default:r(()=>[o("div",qt,[o("div",Rt,[l(s(U),{modelValue:c.value.search,"onUpdate:modelValue":e[1]||(e[1]=t=>c.value.search=t),placeholder:"Search requests...",onInput:L},{prepend:r(()=>e[25]||(e[25]=[o("svg",{class:"w-4 h-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1)])),_:1},8,["modelValue"]),l(s(w),{modelValue:c.value.priority,"onUpdate:modelValue":[e[2]||(e[2]=t=>c.value.priority=t),L],placeholder:"Filter by Priority",options:Ve.value},null,8,["modelValue","options"]),l(s(w),{modelValue:c.value.type,"onUpdate:modelValue":[e[3]||(e[3]=t=>c.value.type=t),L],placeholder:"Filter by Type",options:De.value},null,8,["modelValue","options"]),l(s(w),{modelValue:c.value.assignee,"onUpdate:modelValue":[e[4]||(e[4]=t=>c.value.assignee=t),L],placeholder:"Filter by Assignee",options:Se.value},null,8,["modelValue","options"]),o("div",ht,[l(s(g),{variant:"outline",size:"sm",class:S(c.value.showOverdue?"bg-red-50 border-red-200 text-red-700":""),onClick:Ae},{default:r(()=>e[26]||(e[26]=[o("svg",{class:"w-4 h-4 mr-1",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})],-1),R(" Overdue ",-1)])),_:1,__:[26]},8,["class"]),l(s(g),{variant:"ghost",size:"sm",onClick:Oe},{default:r(()=>e[27]||(e[27]=[R(" Clear All ",-1)])),_:1,__:[27]})])]),l(s(gt),{columns:xe,data:we.value,loading:M.value,pagination:B.value,"empty-message":"No requests found",onSortChange:Pe,onPageChange:Be,onRowClick:ne},{priority:r(({row:t})=>[l(s(ve),{variant:et(t.priority)},{default:r(()=>[R(q(Ge(t.priority)),1)]),_:2},1032,["variant"])]),status:r(({row:t})=>[l(s(ve),{variant:tt(t.status)},{default:r(()=>[R(q(We(t.status)),1)]),_:2},1032,["variant"])]),type:r(({row:t})=>[o("span",kt,q(Ke(t.type)),1)]),requestedBy:r(({row:t})=>[o("div",xt,[l(s(rt),{user:t.requestedBy,size:"sm"},null,8,["user"]),o("span",wt,q(Ze(t.requestedBy)),1)])]),asset:r(({row:t})=>[o("span",{class:S(["text-sm",t.assetName?"text-gray-900":"text-gray-400"])},q(t.assetName||"No asset"),3)]),dueDate:r(({row:t})=>[o("div",Ct,[o("span",{class:S(H(t.requiredDate)?"text-red-600 font-medium":"text-gray-900")},q(Xe(t.requiredDate)),3),H(t.requiredDate)?(v(),b("div",Vt," Overdue ")):h("",!0)])]),actions:r(({row:t})=>[o("div",Dt,[l(s(g),{variant:"ghost",size:"sm",onClick:J(y=>ne(t),["stop"])},{default:r(()=>e[28]||(e[28]=[o("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"}),o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"})],-1)])),_:2,__:[28]},1032,["onClick"]),l(s(g),{variant:"ghost",size:"sm",onClick:J(y=>re(t.id),["stop"])},{default:r(()=>e[29]||(e[29]=[o("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1)])),_:2,__:[29]},1032,["onClick"]),l(s(g),{variant:"ghost",size:"sm",class:"text-red-600 hover:text-red-700",onClick:J(y=>$e(t),["stop"])},{default:r(()=>e[30]||(e[30]=[o("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[o("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1)])),_:2,__:[30]},1032,["onClick"])])]),_:1},8,["data","loading","pagination"])]),l(s(de),{modelValue:V.value,"onUpdate:modelValue":e[20]||(e[20]=t=>V.value=t),title:I.value==="create"?"Create Request":"Edit Request",size:"xl",onCancel:ue},{footer:r(()=>[o("div",Ot,[o("div",Lt,[s(j)||s(A)?(v(),b("div",zt,[s(j)?(v(),b("svg",Mt,e[36]||(e[36]=[o("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z","clip-rule":"evenodd"},null,-1)]))):(v(),b("svg",Nt,e[37]||(e[37]=[o("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z","clip-rule":"evenodd"},null,-1)]))),s(j)?(v(),b("span",jt,"Auto-saving...")):s(A)?(v(),b("span",Ht,"Last saved "+q(Me.value),1)):h("",!0)])):h("",!0)]),o("div",$t,[l(s(g),{variant:"outline",onClick:ue,disabled:P.value},{default:r(()=>e[38]||(e[38]=[R(" Cancel ",-1)])),_:1,__:[38]},8,["disabled"]),l(s(g),{variant:"primary",onClick:Ne,loading:P.value},{default:r(()=>[R(q(I.value==="create"?"Create Request":"Update Request"),1)]),_:1},8,["loading"])])])]),default:r(()=>[l(s(bt),{visible:O.value,"saved-data-info":oe.value,onRestore:Le,onDismiss:ze},null,8,["visible","saved-data-info"]),o("div",St,[l(s(ce),{modelValue:f.value,"onUpdate:modelValue":e[5]||(e[5]=t=>f.value=t),tabs:ke},null,8,["modelValue"]),f.value==="basic"?(v(),b("div",Ft,[o("div",Tt,[l(s(U),{modelValue:n.value.title,"onUpdate:modelValue":e[6]||(e[6]=t=>n.value.title=t),label:"Request Title",placeholder:"Enter request title",required:"",error:u.value.title,onInput:s(m)},null,8,["modelValue","error","onInput"]),l(s(w),{modelValue:n.value.type,"onUpdate:modelValue":e[7]||(e[7]=t=>n.value.type=t),label:"Request Type",placeholder:"Select type",options:Te.value,required:"",error:u.value.type,onChange:s(m)},null,8,["modelValue","options","error","onChange"]),l(s(w),{modelValue:n.value.priority,"onUpdate:modelValue":e[8]||(e[8]=t=>n.value.priority=t),label:"Priority",placeholder:"Select priority",options:Fe.value,required:"",error:u.value.priority,onChange:s(m)},null,8,["modelValue","options","error","onChange"]),l(s(U),{modelValue:n.value.requiredDate,"onUpdate:modelValue":e[9]||(e[9]=t=>n.value.requiredDate=t),type:"date",label:"Required Date",placeholder:"Select required date",error:u.value.requiredDate,onInput:s(m)},null,8,["modelValue","error","onInput"])]),o("div",null,[e[31]||(e[31]=o("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Description *",-1)),Q(o("textarea",{"onUpdate:modelValue":e[10]||(e[10]=t=>n.value.description=t),class:S(["w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",{"border-red-300":u.value.description}]),placeholder:"Describe the request in detail",rows:"4",required:"",onInput:e[11]||(e[11]=(...t)=>s(m)&&s(m)(...t))},null,34),[[Y,n.value.description]]),u.value.description?(v(),b("p",Et,q(u.value.description),1)):h("",!0)])])):h("",!0),f.value==="details"?(v(),b("div",It,[o("div",Ut,[l(s(w),{modelValue:n.value.assetId,"onUpdate:modelValue":e[12]||(e[12]=t=>n.value.assetId=t),label:"Asset",placeholder:"Select asset (optional)",options:Ee.value,error:u.value.assetId,onChange:s(m)},null,8,["modelValue","options","error","onChange"]),l(s(w),{modelValue:n.value.locationId,"onUpdate:modelValue":e[13]||(e[13]=t=>n.value.locationId=t),label:"Location",placeholder:"Select location (optional)",options:Ie.value,error:u.value.locationId,onChange:s(m)},null,8,["modelValue","options","error","onChange"]),l(s(U),{modelValue:n.value.estimatedHours,"onUpdate:modelValue":e[14]||(e[14]=t=>n.value.estimatedHours=t),label:"Estimated Hours",type:"number",step:"0.25",min:"0",placeholder:"0.0",error:u.value.estimatedHours,onInput:s(m)},null,8,["modelValue","error","onInput"]),l(s(U),{modelValue:n.value.estimatedCost,"onUpdate:modelValue":e[15]||(e[15]=t=>n.value.estimatedCost=t),label:"Estimated Cost",type:"number",step:"0.01",min:"0",placeholder:"0.00",error:u.value.estimatedCost,onInput:s(m)},null,8,["modelValue","error","onInput"])]),o("div",null,[e[32]||(e[32]=o("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Urgency Reason",-1)),Q(o("textarea",{"onUpdate:modelValue":e[16]||(e[16]=t=>n.value.urgencyReason=t),class:S(["w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",{"border-red-300":u.value.urgencyReason}]),placeholder:"Explain why this request is urgent (optional)",rows:"3",onInput:e[17]||(e[17]=(...t)=>s(m)&&s(m)(...t))},null,34),[[Y,n.value.urgencyReason]]),u.value.urgencyReason?(v(),b("p",_t,q(u.value.urgencyReason),1)):h("",!0)]),o("div",null,[e[33]||(e[33]=o("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Business Justification",-1)),Q(o("textarea",{"onUpdate:modelValue":e[18]||(e[18]=t=>n.value.businessJustification=t),class:S(["w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",{"border-red-300":u.value.businessJustification}]),placeholder:"Provide business justification for this request (optional)",rows:"3",onInput:e[19]||(e[19]=(...t)=>s(m)&&s(m)(...t))},null,34),[[Y,n.value.businessJustification]]),u.value.businessJustification?(v(),b("p",Pt,q(u.value.businessJustification),1)):h("",!0)])])):h("",!0),o("div",Bt,[f.value!=="basic"?(v(),$(s(g),{key:0,variant:"outline",onClick:He},{default:r(()=>e[34]||(e[34]=[R(" Previous ",-1)])),_:1,__:[34]})):(v(),b("div",At)),f.value!=="details"?(v(),$(s(g),{key:2,variant:"outline",onClick:je},{default:r(()=>e[35]||(e[35]=[R(" Next ",-1)])),_:1,__:[35]})):h("",!0)])])]),_:1},8,["modelValue","title"]),l(s(de),{modelValue:T.value,"onUpdate:modelValue":e[21]||(e[21]=t=>T.value=t),title:"Delete Request",onConfirm:Je,onCancel:Qe,"confirm-text":"Delete","cancel-text":"Cancel","confirm-variant":"error",loading:N.value},{default:r(()=>{var t;return[o("p",null,'Are you sure you want to delete the request "'+q((t=E.value)==null?void 0:t.title)+'"? This action cannot be undone.',1)]}),_:1},8,["modelValue","loading"])]),_:1}))}};export{ia as default}; diff --git a/frontend/dist/assets/RequestsView-9xBIesQz.js b/frontend/dist/assets/RequestsView-BNuSwOXJ.js similarity index 63% rename from frontend/dist/assets/RequestsView-9xBIesQz.js rename to frontend/dist/assets/RequestsView-BNuSwOXJ.js index 0b3e1375..c5efd816 100644 --- a/frontend/dist/assets/RequestsView-9xBIesQz.js +++ b/frontend/dist/assets/RequestsView-BNuSwOXJ.js @@ -1 +1 @@ -import{i as o,f as t,g as r}from"./index-BUdRbiwj.js";const a={__name:"RequestsView",setup(s){return(n,_)=>{const e=t("router-view");return r(),o(e)}}};export{a as default}; +import{i as o,f as t,g as r}from"./index-QAlcqU00.js";const a={__name:"RequestsView",setup(s){return(n,_)=>{const e=t("router-view");return r(),o(e)}}};export{a as default}; diff --git a/frontend/dist/assets/ResetPasswordView-DU40_52o.js b/frontend/dist/assets/ResetPasswordView-7Zg8RSWn.js similarity index 90% rename from frontend/dist/assets/ResetPasswordView-DU40_52o.js rename to frontend/dist/assets/ResetPasswordView-7Zg8RSWn.js index b9e9623a..867515a6 100644 --- a/frontend/dist/assets/ResetPasswordView-DU40_52o.js +++ b/frontend/dist/assets/ResetPasswordView-7Zg8RSWn.js @@ -1 +1 @@ -import{_ as g,q as b,r as t,o as k,s as x,i as m,w as s,v as C,g as p,d as a,k as i,h as R,j as N,e as l,t as S,V as h,l as q}from"./index-BUdRbiwj.js";import{r as f,p as B,c as F}from"./validators-BsFa-KD7.js";import{V as T}from"./VContainer-Cf71ALK9.js";import{V as j,a as A,b as I,c as M,e as U,f as w,g as z}from"./VTextField-CU5R_EKn.js";const D={__name:"ResetPasswordView",setup(E){const v=x(),V=C(),_=b(),{success:y}=q(),o=t({password:"",confirmPassword:""}),u=t(!1),r=t(null),d=t(""),P=async()=>{try{u.value=!0,r.value=null,await _.resetPassword(d.value,o.value.password),y("Password reset successfully!"),V.push("/login")}catch(c){r.value=c.message||"Failed to reset password"}finally{u.value=!1}};return k(()=>{d.value=v.query.token||"",d.value||(r.value="Invalid reset token")}),(c,e)=>(p(),m(T,{fluid:"",class:"fill-height"},{default:s(()=>[a(j,{justify:"center",align:"center"},{default:s(()=>[a(A,{cols:"12",sm:"8",md:"6",lg:"4"},{default:s(()=>[a(I,{class:"pa-6"},{default:s(()=>[a(M,{class:"text-center text-h4 mb-6"},{default:s(()=>e[2]||(e[2]=[i(" Set New Password ",-1)])),_:1,__:[2]}),a(U,{onSubmit:R(P,["prevent"])},{default:s(()=>[a(w,{modelValue:o.value.password,"onUpdate:modelValue":e[0]||(e[0]=n=>o.value.password=n),label:"New Password",type:"password","prepend-inner-icon":"mdi-lock",rules:[l(f),l(B)],variant:"outlined",class:"mb-3"},null,8,["modelValue","rules"]),a(w,{modelValue:o.value.confirmPassword,"onUpdate:modelValue":e[1]||(e[1]=n=>o.value.confirmPassword=n),label:"Confirm Password",type:"password","prepend-inner-icon":"mdi-lock",rules:[l(f),l(F)(o.value.password)],variant:"outlined",class:"mb-3"},null,8,["modelValue","rules"]),r.value?(p(),m(z,{key:0,type:"error",class:"mb-4"},{default:s(()=>[i(S(r.value),1)]),_:1})):N("",!0),a(h,{type:"submit",color:"primary",size:"large",block:"",loading:u.value,class:"mb-4"},{default:s(()=>e[3]||(e[3]=[i(" Reset Password ",-1)])),_:1,__:[3]},8,["loading"])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}))}},L=g(D,[["__scopeId","data-v-d769999f"]]);export{L as default}; +import{_ as g,q as b,r as t,o as k,s as x,i as m,w as s,v as C,g as p,d as a,k as i,h as R,j as N,e as l,t as S,V as h,l as q}from"./index-QAlcqU00.js";import{r as f,p as B,c as F}from"./validators-BsFa-KD7.js";import{V as T}from"./VContainer-DnjqAjRY.js";import{V as j,a as A,b as I,c as M,e as U,f as w,g as z}from"./VTextField-BNQ_nyd-.js";const D={__name:"ResetPasswordView",setup(E){const v=x(),V=C(),_=b(),{success:y}=q(),o=t({password:"",confirmPassword:""}),u=t(!1),r=t(null),d=t(""),P=async()=>{try{u.value=!0,r.value=null,await _.resetPassword(d.value,o.value.password),y("Password reset successfully!"),V.push("/login")}catch(c){r.value=c.message||"Failed to reset password"}finally{u.value=!1}};return k(()=>{d.value=v.query.token||"",d.value||(r.value="Invalid reset token")}),(c,e)=>(p(),m(T,{fluid:"",class:"fill-height"},{default:s(()=>[a(j,{justify:"center",align:"center"},{default:s(()=>[a(A,{cols:"12",sm:"8",md:"6",lg:"4"},{default:s(()=>[a(I,{class:"pa-6"},{default:s(()=>[a(M,{class:"text-center text-h4 mb-6"},{default:s(()=>e[2]||(e[2]=[i(" Set New Password ",-1)])),_:1,__:[2]}),a(U,{onSubmit:R(P,["prevent"])},{default:s(()=>[a(w,{modelValue:o.value.password,"onUpdate:modelValue":e[0]||(e[0]=n=>o.value.password=n),label:"New Password",type:"password","prepend-inner-icon":"mdi-lock",rules:[l(f),l(B)],variant:"outlined",class:"mb-3"},null,8,["modelValue","rules"]),a(w,{modelValue:o.value.confirmPassword,"onUpdate:modelValue":e[1]||(e[1]=n=>o.value.confirmPassword=n),label:"Confirm Password",type:"password","prepend-inner-icon":"mdi-lock",rules:[l(f),l(F)(o.value.password)],variant:"outlined",class:"mb-3"},null,8,["modelValue","rules"]),r.value?(p(),m(z,{key:0,type:"error",class:"mb-4"},{default:s(()=>[i(S(r.value),1)]),_:1})):N("",!0),a(h,{type:"submit",color:"primary",size:"large",block:"",loading:u.value,class:"mb-4"},{default:s(()=>e[3]||(e[3]=[i(" Reset Password ",-1)])),_:1,__:[3]},8,["loading"])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}))}},L=g(D,[["__scopeId","data-v-d769999f"]]);export{L as default}; diff --git a/frontend/dist/assets/SettingsView-CAdpolKN.js b/frontend/dist/assets/SettingsView-osLRBmGa.js similarity index 93% rename from frontend/dist/assets/SettingsView-CAdpolKN.js rename to frontend/dist/assets/SettingsView-osLRBmGa.js index 2450a67d..82f81e19 100644 --- a/frontend/dist/assets/SettingsView-CAdpolKN.js +++ b/frontend/dist/assets/SettingsView-osLRBmGa.js @@ -1,2 +1,2 @@ -import{F as re,a as de}from"./FPPageHeader-CTG2L28r.js";import{_ as ue,r as p,o as me,i as M,w as n,g as d,b as a,d as t,e as o,a as c,j as V,F as g,k as r,t as u,af as x,aQ as C,aW as pe,n as ce}from"./index-BUdRbiwj.js";import{F as m}from"./FPInput-CzR_dWoe.js";import{F as f}from"./FPCard-qHzcEQAE.js";import{F as w}from"./FPCheckbox-Bu8jNAEW.js";import{F as b}from"./FPSelect-C7p47Ma2.js";import{F as ge}from"./FPTable-CU8C_NYc.js";import{F as ve}from"./FPModal-DWGF1LV8.js";import{F as U}from"./FPBadge-BKY5dPnL.js";import{F as fe}from"./FPTabs-R71V25QN.js";const ye={class:"p-6"},ke={key:0,class:"space-y-8"},be={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},_e={class:"md:col-span-2"},Ve={class:"space-y-6"},xe={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},Ce={class:"space-y-4"},we={key:1,class:"space-y-8"},Ue={class:"flex items-center justify-between mb-6"},Ne={class:"flex items-center"},Me={class:"w-8 h-8 rounded-full bg-primary-100 flex items-center justify-center mr-3"},De={class:"text-primary-600 font-medium text-sm"},Ae={class:"font-medium text-gray-900"},Fe={class:"text-sm text-gray-600"},Ee={class:"flex items-center space-x-2"},Te={class:"space-y-6"},Pe={class:"flex items-center justify-between mb-4"},he={class:"font-medium text-gray-900"},Ye={class:"grid grid-cols-2 md:grid-cols-3 gap-3"},Re={key:2,class:"space-y-8"},Ie={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},Se={class:"md:col-span-2"},Le={class:"mt-6"},Oe={class:"space-y-6"},Be={class:"flex items-center"},ze={class:"w-10 h-10 rounded bg-gray-100 flex items-center justify-center mr-4"},je={class:"font-medium text-gray-900"},We={class:"text-sm text-gray-600"},qe={class:"flex items-center space-x-3"},He={key:3,class:"space-y-8"},Ge={class:"space-y-6"},Ze={class:"flex items-center justify-between p-4 border border-gray-200 rounded"},Je={class:"flex items-center justify-between p-4 border border-gray-200 rounded"},$e={class:"space-y-4"},Qe={class:"flex items-center justify-between"},Ke={class:"flex items-center space-x-4"},Xe={class:"bg-gray-50 rounded p-4 h-64 overflow-y-auto"},el={class:"text-gray-500"},ll={class:"ml-2 text-gray-900"},al={class:"space-y-4"},tl={__name:"SettingsView",setup(ol){const N=p(!1),y=p("general"),_=p(!1),D=p("all"),s=p({general:{companyName:"Facility Plus Corp",contactEmail:"admin@facilityplus.com",phone:"(555) 123-4567",timezone:"America/New_York",address:`123 Business Ave -New York, NY 10001`,defaultLanguage:"en",dateFormat:"MM/DD/YYYY",currency:"USD",workOrderPrefix:"WO-",enableNotifications:!0,enableAutoBackup:!0,requireApproval:!1},email:{smtpHost:"smtp.gmail.com",smtpPort:587,username:"",password:"",fromEmail:"noreply@facilityplus.com"}}),v=p({email:"",firstName:"",lastName:"",role:""}),A=p([{id:1,name:"John Smith",email:"john@facilityplus.com",role:"ADMIN",active:!0,lastLogin:"2024-01-20T10:00:00Z"},{id:2,name:"Sarah Johnson",email:"sarah@facilityplus.com",role:"MANAGER",active:!0,lastLogin:"2024-01-19T15:30:00Z"},{id:3,name:"Mike Wilson",email:"mike@facilityplus.com",role:"TECHNICIAN",active:!1,lastLogin:"2024-01-15T09:00:00Z"}]),E=p([{id:1,name:"Administrator",userCount:1,permissions:["read_all","write_all","delete_all","manage_users"]},{id:2,name:"Manager",userCount:2,permissions:["read_all","write_workorders","manage_assets"]},{id:3,name:"Technician",userCount:5,permissions:["read_workorders","update_workorders"]}]),T=p([{key:"read_all",name:"View All Data"},{key:"write_all",name:"Edit All Data"},{key:"delete_all",name:"Delete Data"},{key:"manage_users",name:"Manage Users"},{key:"read_workorders",name:"View Work Orders"},{key:"write_workorders",name:"Edit Work Orders"},{key:"manage_assets",name:"Manage Assets"},{key:"update_workorders",name:"Update Work Orders"}]),P=p([{id:1,timestamp:"2024-01-20T10:00:00Z",level:"INFO",message:"User john@facilityplus.com logged in"},{id:2,timestamp:"2024-01-20T09:45:00Z",level:"WARN",message:"Work order WO-123 is overdue"},{id:3,timestamp:"2024-01-20T09:30:00Z",level:"ERROR",message:"Failed to send notification email"}]),h=p([{key:"slack",name:"Slack",description:"Send notifications to Slack channels",connected:!0,icon:{template:''}},{key:"teams",name:"Microsoft Teams",description:"Send notifications to Teams channels",connected:!1,icon:{template:''}}]),Y=[{key:"general",label:"General"},{key:"users",label:"Users & Permissions"},{key:"integrations",label:"Integrations"},{key:"maintenance",label:"Maintenance"}],R=[{key:"name",label:"User"},{key:"role",label:"Role"},{key:"status",label:"Status"},{key:"lastLogin",label:"Last Login"}],I=[{title:"Eastern Time (ET)",value:"America/New_York"},{title:"Central Time (CT)",value:"America/Chicago"},{title:"Mountain Time (MT)",value:"America/Denver"},{title:"Pacific Time (PT)",value:"America/Los_Angeles"}],S=[{title:"English",value:"en"},{title:"Spanish",value:"es"},{title:"French",value:"fr"}],L=[{title:"MM/DD/YYYY",value:"MM/DD/YYYY"},{title:"DD/MM/YYYY",value:"DD/MM/YYYY"},{title:"YYYY-MM-DD",value:"YYYY-MM-DD"}],O=[{title:"US Dollar (USD)",value:"USD"},{title:"Euro (EUR)",value:"EUR"},{title:"British Pound (GBP)",value:"GBP"}],B=[{title:"Administrator",value:"ADMIN"},{title:"Manager",value:"MANAGER"},{title:"Technician",value:"TECHNICIAN"}],z=[{title:"All Logs",value:"all"},{title:"Errors Only",value:"error"},{title:"Warnings",value:"warn"},{title:"Info",value:"info"}],j=async()=>{N.value=!0,setTimeout(()=>{N.value=!1,console.log("Settings saved:",s.value)},1e3)},W=()=>{console.log("Resetting to defaults...")},q=i=>{y.value=i},H=()=>{v.value={email:"",firstName:"",lastName:"",role:""},_.value=!0},F=()=>{_.value=!1},G=()=>{console.log("Inviting user:",v.value),F()},Z=i=>{console.log("Editing user:",i)},J=i=>{const e=A.value.find(l=>l.id===i);e&&(e.active=!e.active)},$=()=>{console.log("Testing email settings...")},Q=i=>{console.log("Configuring integration:",i)},K=()=>{console.log("Creating backup...")},X=()=>{console.log("Restoring data...")},ee=()=>{console.log("Refreshing logs...")},le=()=>{console.log("Downloading logs...")},ae=i=>i.split(" ").map(e=>e[0]).join("").toUpperCase(),te=i=>({ADMIN:"error",MANAGER:"warning",TECHNICIAN:"info"})[i]||"secondary",oe=i=>i.toLowerCase().replace(/\b\w/g,e=>e.toUpperCase()),se=i=>new Date(i).toLocaleString(),ne=i=>({ERROR:"text-red-600",WARN:"text-yellow-600",INFO:"text-blue-600"})[i]||"text-gray-600";return me(()=>{}),(i,e)=>(d(),M(re,null,{header:n(()=>[t(de,{title:"Settings",description:"Manage application settings and preferences",breadcrumbs:[{text:"Settings",to:null}]},{actions:n(()=>[t(o(g),{variant:"outline",size:"sm",onClick:W},{default:n(()=>e[24]||(e[24]=[r(" Reset to Defaults ",-1)])),_:1,__:[24]}),t(o(g),{variant:"primary",size:"sm",onClick:j,loading:N.value},{default:n(()=>e[25]||(e[25]=[r(" Save Changes ",-1)])),_:1,__:[25]},8,["loading"])]),_:1})]),default:n(()=>[a("div",ye,[t(o(fe),{modelValue:y.value,"onUpdate:modelValue":e[18]||(e[18]=l=>y.value=l),tabs:Y,onTabChange:q},{default:n(()=>[y.value==="general"?(d(),c("div",ke,[t(o(f),{padding:"lg"},{default:n(()=>[e[26]||(e[26]=a("h3",{class:"text-lg font-semibold text-gray-900 mb-6"},"Company Information",-1)),a("div",be,[t(o(m),{modelValue:s.value.general.companyName,"onUpdate:modelValue":e[0]||(e[0]=l=>s.value.general.companyName=l),label:"Company Name",placeholder:"Enter company name",required:""},null,8,["modelValue"]),t(o(m),{modelValue:s.value.general.contactEmail,"onUpdate:modelValue":e[1]||(e[1]=l=>s.value.general.contactEmail=l),label:"Contact Email",type:"email",placeholder:"contact@company.com",required:""},null,8,["modelValue"]),t(o(m),{modelValue:s.value.general.phone,"onUpdate:modelValue":e[2]||(e[2]=l=>s.value.general.phone=l),label:"Phone Number",type:"tel",placeholder:"(555) 123-4567"},null,8,["modelValue"]),t(o(b),{modelValue:s.value.general.timezone,"onUpdate:modelValue":e[3]||(e[3]=l=>s.value.general.timezone=l),label:"Timezone",options:I,required:""},null,8,["modelValue"]),a("div",_e,[t(o(m),{modelValue:s.value.general.address,"onUpdate:modelValue":e[4]||(e[4]=l=>s.value.general.address=l),label:"Address",placeholder:"Enter company address",type:"textarea"},null,8,["modelValue"])])])]),_:1,__:[26]}),t(o(f),{padding:"lg"},{default:n(()=>[e[27]||(e[27]=a("h3",{class:"text-lg font-semibold text-gray-900 mb-6"},"Application Preferences",-1)),a("div",Ve,[a("div",xe,[t(o(b),{modelValue:s.value.general.defaultLanguage,"onUpdate:modelValue":e[5]||(e[5]=l=>s.value.general.defaultLanguage=l),label:"Default Language",options:S},null,8,["modelValue"]),t(o(b),{modelValue:s.value.general.dateFormat,"onUpdate:modelValue":e[6]||(e[6]=l=>s.value.general.dateFormat=l),label:"Date Format",options:L},null,8,["modelValue"]),t(o(b),{modelValue:s.value.general.currency,"onUpdate:modelValue":e[7]||(e[7]=l=>s.value.general.currency=l),label:"Currency",options:O},null,8,["modelValue"]),t(o(m),{modelValue:s.value.general.workOrderPrefix,"onUpdate:modelValue":e[8]||(e[8]=l=>s.value.general.workOrderPrefix=l),label:"Work Order Prefix",placeholder:"WO-"},null,8,["modelValue"])]),a("div",Ce,[t(o(w),{modelValue:s.value.general.enableNotifications,"onUpdate:modelValue":e[9]||(e[9]=l=>s.value.general.enableNotifications=l),label:"Enable email notifications"},null,8,["modelValue"]),t(o(w),{modelValue:s.value.general.enableAutoBackup,"onUpdate:modelValue":e[10]||(e[10]=l=>s.value.general.enableAutoBackup=l),label:"Enable automatic data backup"},null,8,["modelValue"]),t(o(w),{modelValue:s.value.general.requireApproval,"onUpdate:modelValue":e[11]||(e[11]=l=>s.value.general.requireApproval=l),label:"Require approval for work orders"},null,8,["modelValue"])])])]),_:1,__:[27]})])):V("",!0),y.value==="users"?(d(),c("div",we,[t(o(f),{padding:"lg"},{default:n(()=>[a("div",Ue,[e[29]||(e[29]=a("h3",{class:"text-lg font-semibold text-gray-900"},"User Management",-1)),t(o(g),{variant:"primary",size:"sm",onClick:H},{default:n(()=>e[28]||(e[28]=[a("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),r(" Invite User ",-1)])),_:1,__:[28]})]),t(o(ge),{columns:R,data:A.value,loading:!1,"empty-message":"No users found"},{"column-name":n(({row:l})=>[a("div",Ne,[a("div",Me,[a("span",De,u(ae(l.name)),1)]),a("div",null,[a("div",Ae,u(l.name),1),a("div",Fe,u(l.email),1)])])]),"column-role":n(({row:l})=>[t(o(U),{variant:te(l.role)},{default:n(()=>[r(u(oe(l.role)),1)]),_:2},1032,["variant"])]),"column-status":n(({row:l})=>[t(o(U),{variant:l.active?"success":"secondary"},{default:n(()=>[r(u(l.active?"Active":"Inactive"),1)]),_:2},1032,["variant"])]),"row-actions":n(({row:l})=>[a("div",Ee,[t(o(g),{variant:"ghost",size:"sm",onClick:k=>Z(l.id)},{default:n(()=>e[30]||(e[30]=[r(" Edit ",-1)])),_:2,__:[30]},1032,["onClick"]),t(o(g),{variant:"ghost",size:"sm",onClick:k=>J(l.id)},{default:n(()=>[r(u(l.active?"Deactivate":"Activate"),1)]),_:2},1032,["onClick"])])]),_:1},8,["data"])]),_:1}),t(o(f),{padding:"lg"},{default:n(()=>[e[31]||(e[31]=a("h3",{class:"text-lg font-semibold text-gray-900 mb-6"},"Role Permissions",-1)),a("div",Te,[(d(!0),c(x,null,C(E.value,l=>(d(),c("div",{key:l.id,class:"border border-gray-200 rounded p-4"},[a("div",Pe,[a("h4",he,u(l.name),1),t(o(U),{variant:"secondary"},{default:n(()=>[r(u(l.userCount)+" users",1)]),_:2},1024)]),a("div",Ye,[(d(!0),c(x,null,C(T.value,k=>(d(),M(o(w),{key:k.key,modelValue:l.permissions,"onUpdate:modelValue":ie=>l.permissions=ie,value:k.key,label:k.name},null,8,["modelValue","onUpdate:modelValue","value","label"]))),128))])]))),128))])]),_:1,__:[31]})])):V("",!0),y.value==="integrations"?(d(),c("div",Re,[t(o(f),{padding:"lg"},{default:n(()=>[e[33]||(e[33]=a("h3",{class:"text-lg font-semibold text-gray-900 mb-6"},"Email Configuration",-1)),a("div",Ie,[t(o(m),{modelValue:s.value.email.smtpHost,"onUpdate:modelValue":e[12]||(e[12]=l=>s.value.email.smtpHost=l),label:"SMTP Host",placeholder:"smtp.gmail.com"},null,8,["modelValue"]),t(o(m),{modelValue:s.value.email.smtpPort,"onUpdate:modelValue":e[13]||(e[13]=l=>s.value.email.smtpPort=l),label:"SMTP Port",type:"number",placeholder:"587"},null,8,["modelValue"]),t(o(m),{modelValue:s.value.email.username,"onUpdate:modelValue":e[14]||(e[14]=l=>s.value.email.username=l),label:"Username",placeholder:"your-email@gmail.com"},null,8,["modelValue"]),t(o(m),{modelValue:s.value.email.password,"onUpdate:modelValue":e[15]||(e[15]=l=>s.value.email.password=l),label:"Password",type:"password",placeholder:"App password"},null,8,["modelValue"]),a("div",Se,[t(o(m),{modelValue:s.value.email.fromEmail,"onUpdate:modelValue":e[16]||(e[16]=l=>s.value.email.fromEmail=l),label:"From Email",type:"email",placeholder:"noreply@company.com"},null,8,["modelValue"])])]),a("div",Le,[t(o(g),{variant:"outline",size:"sm",onClick:$},{default:n(()=>e[32]||(e[32]=[r(" Test Email Configuration ",-1)])),_:1,__:[32]})])]),_:1,__:[33]}),t(o(f),{padding:"lg"},{default:n(()=>[e[35]||(e[35]=a("h3",{class:"text-lg font-semibold text-gray-900 mb-6"},"API Integrations",-1)),a("div",Oe,[(d(!0),c(x,null,C(h.value,l=>(d(),c("div",{key:l.key,class:"flex items-center justify-between p-4 border border-gray-200 rounded"},[a("div",Be,[a("div",ze,[(d(),M(pe(l.icon),{class:"w-5 h-5 text-gray-600"}))]),a("div",null,[a("h4",je,u(l.name),1),a("p",We,u(l.description),1)])]),a("div",qe,[t(o(U),{variant:l.connected?"success":"secondary"},{default:n(()=>[r(u(l.connected?"Connected":"Not Connected"),1)]),_:2},1032,["variant"]),t(o(g),{variant:"outline",size:"sm",onClick:k=>Q(l.key)},{default:n(()=>e[34]||(e[34]=[r(" Configure ",-1)])),_:2,__:[34]},1032,["onClick"])])]))),128))])]),_:1,__:[35]})])):V("",!0),y.value==="maintenance"?(d(),c("div",He,[t(o(f),{padding:"lg"},{default:n(()=>[e[40]||(e[40]=a("h3",{class:"text-lg font-semibold text-gray-900 mb-6"},"Backup & Restore",-1)),a("div",Ge,[a("div",Ze,[e[37]||(e[37]=a("div",null,[a("h4",{class:"font-medium text-gray-900"},"Create Backup"),a("p",{class:"text-sm text-gray-600"},"Download a complete backup of your data")],-1)),t(o(g),{variant:"primary",size:"sm",onClick:K},{default:n(()=>e[36]||(e[36]=[r(" Create Backup ",-1)])),_:1,__:[36]})]),a("div",Je,[e[39]||(e[39]=a("div",null,[a("h4",{class:"font-medium text-gray-900"},"Restore Data"),a("p",{class:"text-sm text-gray-600"},"Restore data from a previous backup")],-1)),t(o(g),{variant:"outline",size:"sm",onClick:X},{default:n(()=>e[38]||(e[38]=[r(" Restore Data ",-1)])),_:1,__:[38]})])])]),_:1,__:[40]}),t(o(f),{padding:"lg"},{default:n(()=>[e[43]||(e[43]=a("h3",{class:"text-lg font-semibold text-gray-900 mb-6"},"System Logs",-1)),a("div",$e,[a("div",Qe,[a("div",Ke,[t(o(b),{modelValue:D.value,"onUpdate:modelValue":e[17]||(e[17]=l=>D.value=l),placeholder:"Filter logs",options:z},null,8,["modelValue"]),t(o(g),{variant:"outline",size:"sm",onClick:ee},{default:n(()=>e[41]||(e[41]=[r(" Refresh ",-1)])),_:1,__:[41]})]),t(o(g),{variant:"outline",size:"sm",onClick:le},{default:n(()=>e[42]||(e[42]=[r(" Download Logs ",-1)])),_:1,__:[42]})]),a("div",Xe,[(d(!0),c(x,null,C(P.value,l=>(d(),c("div",{key:l.id,class:"text-sm font-mono mb-2"},[a("span",el,u(se(l.timestamp)),1),a("span",{class:ce([ne(l.level),"ml-2"])},"["+u(l.level)+"]",3),a("span",ll,u(l.message),1)]))),128))])])]),_:1,__:[43]})])):V("",!0)]),_:1},8,["modelValue"])]),t(o(ve),{modelValue:_.value,"onUpdate:modelValue":e[23]||(e[23]=l=>_.value=l),title:"Invite New User",onConfirm:G,onCancel:F},{default:n(()=>[a("div",al,[t(o(m),{modelValue:v.value.email,"onUpdate:modelValue":e[19]||(e[19]=l=>v.value.email=l),label:"Email Address",type:"email",placeholder:"user@company.com",required:""},null,8,["modelValue"]),t(o(m),{modelValue:v.value.firstName,"onUpdate:modelValue":e[20]||(e[20]=l=>v.value.firstName=l),label:"First Name",placeholder:"John",required:""},null,8,["modelValue"]),t(o(m),{modelValue:v.value.lastName,"onUpdate:modelValue":e[21]||(e[21]=l=>v.value.lastName=l),label:"Last Name",placeholder:"Doe",required:""},null,8,["modelValue"]),t(o(b),{modelValue:v.value.role,"onUpdate:modelValue":e[22]||(e[22]=l=>v.value.role=l),label:"Role",options:B,required:""},null,8,["modelValue"])])]),_:1},8,["modelValue"])]),_:1}))}},vl=ue(tl,[["__scopeId","data-v-096e2542"]]);export{vl as default}; +import{F as re,a as de}from"./FPPageHeader-CFIwZZgQ.js";import{_ as ue,r as p,o as me,i as M,w as n,g as d,b as a,d as t,e as o,a as c,j as V,F as g,k as r,t as u,af as x,aR as C,aX as pe,n as ce}from"./index-QAlcqU00.js";import{F as m}from"./FPInput-D5RURom0.js";import{F as f}from"./FPCard-AB6NRXg5.js";import{F as w}from"./FPCheckbox-DcRYwN3n.js";import{F as b}from"./FPSelect-j7n_x8eB.js";import{F as ge}from"./FPTable-CWvngIYd.js";import{F as ve}from"./FPModal-DMoPysvU.js";import{F as U}from"./FPBadge-DvOitM1C.js";import{F as fe}from"./FPTabs-qq-Tmb7J.js";const ye={class:"p-6"},ke={key:0,class:"space-y-8"},be={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},_e={class:"md:col-span-2"},Ve={class:"space-y-6"},xe={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},Ce={class:"space-y-4"},we={key:1,class:"space-y-8"},Ue={class:"flex items-center justify-between mb-6"},Ne={class:"flex items-center"},Me={class:"w-8 h-8 rounded-full bg-primary-100 flex items-center justify-center mr-3"},De={class:"text-primary-600 font-medium text-sm"},Ae={class:"font-medium text-gray-900"},Fe={class:"text-sm text-gray-600"},Ee={class:"flex items-center space-x-2"},Te={class:"space-y-6"},Pe={class:"flex items-center justify-between mb-4"},he={class:"font-medium text-gray-900"},Ye={class:"grid grid-cols-2 md:grid-cols-3 gap-3"},Re={key:2,class:"space-y-8"},Ie={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},Se={class:"md:col-span-2"},Le={class:"mt-6"},Oe={class:"space-y-6"},Be={class:"flex items-center"},ze={class:"w-10 h-10 rounded bg-gray-100 flex items-center justify-center mr-4"},je={class:"font-medium text-gray-900"},We={class:"text-sm text-gray-600"},qe={class:"flex items-center space-x-3"},He={key:3,class:"space-y-8"},Ge={class:"space-y-6"},Ze={class:"flex items-center justify-between p-4 border border-gray-200 rounded"},Je={class:"flex items-center justify-between p-4 border border-gray-200 rounded"},$e={class:"space-y-4"},Xe={class:"flex items-center justify-between"},Ke={class:"flex items-center space-x-4"},Qe={class:"bg-gray-50 rounded p-4 h-64 overflow-y-auto"},el={class:"text-gray-500"},ll={class:"ml-2 text-gray-900"},al={class:"space-y-4"},tl={__name:"SettingsView",setup(ol){const N=p(!1),y=p("general"),_=p(!1),D=p("all"),s=p({general:{companyName:"Facility Plus Corp",contactEmail:"admin@facilityplus.com",phone:"(555) 123-4567",timezone:"America/New_York",address:`123 Business Ave +New York, NY 10001`,defaultLanguage:"en",dateFormat:"MM/DD/YYYY",currency:"USD",workOrderPrefix:"WO-",enableNotifications:!0,enableAutoBackup:!0,requireApproval:!1},email:{smtpHost:"smtp.gmail.com",smtpPort:587,username:"",password:"",fromEmail:"noreply@facilityplus.com"}}),v=p({email:"",firstName:"",lastName:"",role:""}),A=p([{id:1,name:"John Smith",email:"john@facilityplus.com",role:"ADMIN",active:!0,lastLogin:"2024-01-20T10:00:00Z"},{id:2,name:"Sarah Johnson",email:"sarah@facilityplus.com",role:"MANAGER",active:!0,lastLogin:"2024-01-19T15:30:00Z"},{id:3,name:"Mike Wilson",email:"mike@facilityplus.com",role:"TECHNICIAN",active:!1,lastLogin:"2024-01-15T09:00:00Z"}]),E=p([{id:1,name:"Administrator",userCount:1,permissions:["read_all","write_all","delete_all","manage_users"]},{id:2,name:"Manager",userCount:2,permissions:["read_all","write_workorders","manage_assets"]},{id:3,name:"Technician",userCount:5,permissions:["read_workorders","update_workorders"]}]),T=p([{key:"read_all",name:"View All Data"},{key:"write_all",name:"Edit All Data"},{key:"delete_all",name:"Delete Data"},{key:"manage_users",name:"Manage Users"},{key:"read_workorders",name:"View Work Orders"},{key:"write_workorders",name:"Edit Work Orders"},{key:"manage_assets",name:"Manage Assets"},{key:"update_workorders",name:"Update Work Orders"}]),P=p([{id:1,timestamp:"2024-01-20T10:00:00Z",level:"INFO",message:"User john@facilityplus.com logged in"},{id:2,timestamp:"2024-01-20T09:45:00Z",level:"WARN",message:"Work order WO-123 is overdue"},{id:3,timestamp:"2024-01-20T09:30:00Z",level:"ERROR",message:"Failed to send notification email"}]),h=p([{key:"slack",name:"Slack",description:"Send notifications to Slack channels",connected:!0,icon:{template:''}},{key:"teams",name:"Microsoft Teams",description:"Send notifications to Teams channels",connected:!1,icon:{template:''}}]),Y=[{key:"general",label:"General"},{key:"users",label:"Users & Permissions"},{key:"integrations",label:"Integrations"},{key:"maintenance",label:"Maintenance"}],R=[{key:"name",label:"User"},{key:"role",label:"Role"},{key:"status",label:"Status"},{key:"lastLogin",label:"Last Login"}],I=[{title:"Eastern Time (ET)",value:"America/New_York"},{title:"Central Time (CT)",value:"America/Chicago"},{title:"Mountain Time (MT)",value:"America/Denver"},{title:"Pacific Time (PT)",value:"America/Los_Angeles"}],S=[{title:"English",value:"en"},{title:"Spanish",value:"es"},{title:"French",value:"fr"}],L=[{title:"MM/DD/YYYY",value:"MM/DD/YYYY"},{title:"DD/MM/YYYY",value:"DD/MM/YYYY"},{title:"YYYY-MM-DD",value:"YYYY-MM-DD"}],O=[{title:"US Dollar (USD)",value:"USD"},{title:"Euro (EUR)",value:"EUR"},{title:"British Pound (GBP)",value:"GBP"}],B=[{title:"Administrator",value:"ADMIN"},{title:"Manager",value:"MANAGER"},{title:"Technician",value:"TECHNICIAN"}],z=[{title:"All Logs",value:"all"},{title:"Errors Only",value:"error"},{title:"Warnings",value:"warn"},{title:"Info",value:"info"}],j=async()=>{N.value=!0,setTimeout(()=>{N.value=!1,console.log("Settings saved:",s.value)},1e3)},W=()=>{console.log("Resetting to defaults...")},q=i=>{y.value=i},H=()=>{v.value={email:"",firstName:"",lastName:"",role:""},_.value=!0},F=()=>{_.value=!1},G=()=>{console.log("Inviting user:",v.value),F()},Z=i=>{console.log("Editing user:",i)},J=i=>{const e=A.value.find(l=>l.id===i);e&&(e.active=!e.active)},$=()=>{console.log("Testing email settings...")},X=i=>{console.log("Configuring integration:",i)},K=()=>{console.log("Creating backup...")},Q=()=>{console.log("Restoring data...")},ee=()=>{console.log("Refreshing logs...")},le=()=>{console.log("Downloading logs...")},ae=i=>i.split(" ").map(e=>e[0]).join("").toUpperCase(),te=i=>({ADMIN:"error",MANAGER:"warning",TECHNICIAN:"info"})[i]||"secondary",oe=i=>i.toLowerCase().replace(/\b\w/g,e=>e.toUpperCase()),se=i=>new Date(i).toLocaleString(),ne=i=>({ERROR:"text-red-600",WARN:"text-yellow-600",INFO:"text-blue-600"})[i]||"text-gray-600";return me(()=>{}),(i,e)=>(d(),M(re,null,{header:n(()=>[t(de,{title:"Settings",description:"Manage application settings and preferences",breadcrumbs:[{text:"Settings",to:null}]},{actions:n(()=>[t(o(g),{variant:"outline",size:"sm",onClick:W},{default:n(()=>e[24]||(e[24]=[r(" Reset to Defaults ",-1)])),_:1,__:[24]}),t(o(g),{variant:"primary",size:"sm",onClick:j,loading:N.value},{default:n(()=>e[25]||(e[25]=[r(" Save Changes ",-1)])),_:1,__:[25]},8,["loading"])]),_:1})]),default:n(()=>[a("div",ye,[t(o(fe),{modelValue:y.value,"onUpdate:modelValue":e[18]||(e[18]=l=>y.value=l),tabs:Y,onTabChange:q},{default:n(()=>[y.value==="general"?(d(),c("div",ke,[t(o(f),{padding:"lg"},{default:n(()=>[e[26]||(e[26]=a("h3",{class:"text-lg font-semibold text-gray-900 mb-6"},"Company Information",-1)),a("div",be,[t(o(m),{modelValue:s.value.general.companyName,"onUpdate:modelValue":e[0]||(e[0]=l=>s.value.general.companyName=l),label:"Company Name",placeholder:"Enter company name",required:""},null,8,["modelValue"]),t(o(m),{modelValue:s.value.general.contactEmail,"onUpdate:modelValue":e[1]||(e[1]=l=>s.value.general.contactEmail=l),label:"Contact Email",type:"email",placeholder:"contact@company.com",required:""},null,8,["modelValue"]),t(o(m),{modelValue:s.value.general.phone,"onUpdate:modelValue":e[2]||(e[2]=l=>s.value.general.phone=l),label:"Phone Number",type:"tel",placeholder:"(555) 123-4567"},null,8,["modelValue"]),t(o(b),{modelValue:s.value.general.timezone,"onUpdate:modelValue":e[3]||(e[3]=l=>s.value.general.timezone=l),label:"Timezone",options:I,required:""},null,8,["modelValue"]),a("div",_e,[t(o(m),{modelValue:s.value.general.address,"onUpdate:modelValue":e[4]||(e[4]=l=>s.value.general.address=l),label:"Address",placeholder:"Enter company address",type:"textarea"},null,8,["modelValue"])])])]),_:1,__:[26]}),t(o(f),{padding:"lg"},{default:n(()=>[e[27]||(e[27]=a("h3",{class:"text-lg font-semibold text-gray-900 mb-6"},"Application Preferences",-1)),a("div",Ve,[a("div",xe,[t(o(b),{modelValue:s.value.general.defaultLanguage,"onUpdate:modelValue":e[5]||(e[5]=l=>s.value.general.defaultLanguage=l),label:"Default Language",options:S},null,8,["modelValue"]),t(o(b),{modelValue:s.value.general.dateFormat,"onUpdate:modelValue":e[6]||(e[6]=l=>s.value.general.dateFormat=l),label:"Date Format",options:L},null,8,["modelValue"]),t(o(b),{modelValue:s.value.general.currency,"onUpdate:modelValue":e[7]||(e[7]=l=>s.value.general.currency=l),label:"Currency",options:O},null,8,["modelValue"]),t(o(m),{modelValue:s.value.general.workOrderPrefix,"onUpdate:modelValue":e[8]||(e[8]=l=>s.value.general.workOrderPrefix=l),label:"Work Order Prefix",placeholder:"WO-"},null,8,["modelValue"])]),a("div",Ce,[t(o(w),{modelValue:s.value.general.enableNotifications,"onUpdate:modelValue":e[9]||(e[9]=l=>s.value.general.enableNotifications=l),label:"Enable email notifications"},null,8,["modelValue"]),t(o(w),{modelValue:s.value.general.enableAutoBackup,"onUpdate:modelValue":e[10]||(e[10]=l=>s.value.general.enableAutoBackup=l),label:"Enable automatic data backup"},null,8,["modelValue"]),t(o(w),{modelValue:s.value.general.requireApproval,"onUpdate:modelValue":e[11]||(e[11]=l=>s.value.general.requireApproval=l),label:"Require approval for work orders"},null,8,["modelValue"])])])]),_:1,__:[27]})])):V("",!0),y.value==="users"?(d(),c("div",we,[t(o(f),{padding:"lg"},{default:n(()=>[a("div",Ue,[e[29]||(e[29]=a("h3",{class:"text-lg font-semibold text-gray-900"},"User Management",-1)),t(o(g),{variant:"primary",size:"sm",onClick:H},{default:n(()=>e[28]||(e[28]=[a("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),r(" Invite User ",-1)])),_:1,__:[28]})]),t(o(ge),{columns:R,data:A.value,loading:!1,"empty-message":"No users found"},{"column-name":n(({row:l})=>[a("div",Ne,[a("div",Me,[a("span",De,u(ae(l.name)),1)]),a("div",null,[a("div",Ae,u(l.name),1),a("div",Fe,u(l.email),1)])])]),"column-role":n(({row:l})=>[t(o(U),{variant:te(l.role)},{default:n(()=>[r(u(oe(l.role)),1)]),_:2},1032,["variant"])]),"column-status":n(({row:l})=>[t(o(U),{variant:l.active?"success":"secondary"},{default:n(()=>[r(u(l.active?"Active":"Inactive"),1)]),_:2},1032,["variant"])]),"row-actions":n(({row:l})=>[a("div",Ee,[t(o(g),{variant:"ghost",size:"sm",onClick:k=>Z(l.id)},{default:n(()=>e[30]||(e[30]=[r(" Edit ",-1)])),_:2,__:[30]},1032,["onClick"]),t(o(g),{variant:"ghost",size:"sm",onClick:k=>J(l.id)},{default:n(()=>[r(u(l.active?"Deactivate":"Activate"),1)]),_:2},1032,["onClick"])])]),_:1},8,["data"])]),_:1}),t(o(f),{padding:"lg"},{default:n(()=>[e[31]||(e[31]=a("h3",{class:"text-lg font-semibold text-gray-900 mb-6"},"Role Permissions",-1)),a("div",Te,[(d(!0),c(x,null,C(E.value,l=>(d(),c("div",{key:l.id,class:"border border-gray-200 rounded p-4"},[a("div",Pe,[a("h4",he,u(l.name),1),t(o(U),{variant:"secondary"},{default:n(()=>[r(u(l.userCount)+" users",1)]),_:2},1024)]),a("div",Ye,[(d(!0),c(x,null,C(T.value,k=>(d(),M(o(w),{key:k.key,modelValue:l.permissions,"onUpdate:modelValue":ie=>l.permissions=ie,value:k.key,label:k.name},null,8,["modelValue","onUpdate:modelValue","value","label"]))),128))])]))),128))])]),_:1,__:[31]})])):V("",!0),y.value==="integrations"?(d(),c("div",Re,[t(o(f),{padding:"lg"},{default:n(()=>[e[33]||(e[33]=a("h3",{class:"text-lg font-semibold text-gray-900 mb-6"},"Email Configuration",-1)),a("div",Ie,[t(o(m),{modelValue:s.value.email.smtpHost,"onUpdate:modelValue":e[12]||(e[12]=l=>s.value.email.smtpHost=l),label:"SMTP Host",placeholder:"smtp.gmail.com"},null,8,["modelValue"]),t(o(m),{modelValue:s.value.email.smtpPort,"onUpdate:modelValue":e[13]||(e[13]=l=>s.value.email.smtpPort=l),label:"SMTP Port",type:"number",placeholder:"587"},null,8,["modelValue"]),t(o(m),{modelValue:s.value.email.username,"onUpdate:modelValue":e[14]||(e[14]=l=>s.value.email.username=l),label:"Username",placeholder:"your-email@gmail.com"},null,8,["modelValue"]),t(o(m),{modelValue:s.value.email.password,"onUpdate:modelValue":e[15]||(e[15]=l=>s.value.email.password=l),label:"Password",type:"password",placeholder:"App password"},null,8,["modelValue"]),a("div",Se,[t(o(m),{modelValue:s.value.email.fromEmail,"onUpdate:modelValue":e[16]||(e[16]=l=>s.value.email.fromEmail=l),label:"From Email",type:"email",placeholder:"noreply@company.com"},null,8,["modelValue"])])]),a("div",Le,[t(o(g),{variant:"outline",size:"sm",onClick:$},{default:n(()=>e[32]||(e[32]=[r(" Test Email Configuration ",-1)])),_:1,__:[32]})])]),_:1,__:[33]}),t(o(f),{padding:"lg"},{default:n(()=>[e[35]||(e[35]=a("h3",{class:"text-lg font-semibold text-gray-900 mb-6"},"API Integrations",-1)),a("div",Oe,[(d(!0),c(x,null,C(h.value,l=>(d(),c("div",{key:l.key,class:"flex items-center justify-between p-4 border border-gray-200 rounded"},[a("div",Be,[a("div",ze,[(d(),M(pe(l.icon),{class:"w-5 h-5 text-gray-600"}))]),a("div",null,[a("h4",je,u(l.name),1),a("p",We,u(l.description),1)])]),a("div",qe,[t(o(U),{variant:l.connected?"success":"secondary"},{default:n(()=>[r(u(l.connected?"Connected":"Not Connected"),1)]),_:2},1032,["variant"]),t(o(g),{variant:"outline",size:"sm",onClick:k=>X(l.key)},{default:n(()=>e[34]||(e[34]=[r(" Configure ",-1)])),_:2,__:[34]},1032,["onClick"])])]))),128))])]),_:1,__:[35]})])):V("",!0),y.value==="maintenance"?(d(),c("div",He,[t(o(f),{padding:"lg"},{default:n(()=>[e[40]||(e[40]=a("h3",{class:"text-lg font-semibold text-gray-900 mb-6"},"Backup & Restore",-1)),a("div",Ge,[a("div",Ze,[e[37]||(e[37]=a("div",null,[a("h4",{class:"font-medium text-gray-900"},"Create Backup"),a("p",{class:"text-sm text-gray-600"},"Download a complete backup of your data")],-1)),t(o(g),{variant:"primary",size:"sm",onClick:K},{default:n(()=>e[36]||(e[36]=[r(" Create Backup ",-1)])),_:1,__:[36]})]),a("div",Je,[e[39]||(e[39]=a("div",null,[a("h4",{class:"font-medium text-gray-900"},"Restore Data"),a("p",{class:"text-sm text-gray-600"},"Restore data from a previous backup")],-1)),t(o(g),{variant:"outline",size:"sm",onClick:Q},{default:n(()=>e[38]||(e[38]=[r(" Restore Data ",-1)])),_:1,__:[38]})])])]),_:1,__:[40]}),t(o(f),{padding:"lg"},{default:n(()=>[e[43]||(e[43]=a("h3",{class:"text-lg font-semibold text-gray-900 mb-6"},"System Logs",-1)),a("div",$e,[a("div",Xe,[a("div",Ke,[t(o(b),{modelValue:D.value,"onUpdate:modelValue":e[17]||(e[17]=l=>D.value=l),placeholder:"Filter logs",options:z},null,8,["modelValue"]),t(o(g),{variant:"outline",size:"sm",onClick:ee},{default:n(()=>e[41]||(e[41]=[r(" Refresh ",-1)])),_:1,__:[41]})]),t(o(g),{variant:"outline",size:"sm",onClick:le},{default:n(()=>e[42]||(e[42]=[r(" Download Logs ",-1)])),_:1,__:[42]})]),a("div",Qe,[(d(!0),c(x,null,C(P.value,l=>(d(),c("div",{key:l.id,class:"text-sm font-mono mb-2"},[a("span",el,u(se(l.timestamp)),1),a("span",{class:ce([ne(l.level),"ml-2"])},"["+u(l.level)+"]",3),a("span",ll,u(l.message),1)]))),128))])])]),_:1,__:[43]})])):V("",!0)]),_:1},8,["modelValue"])]),t(o(ve),{modelValue:_.value,"onUpdate:modelValue":e[23]||(e[23]=l=>_.value=l),title:"Invite New User",onConfirm:G,onCancel:F},{default:n(()=>[a("div",al,[t(o(m),{modelValue:v.value.email,"onUpdate:modelValue":e[19]||(e[19]=l=>v.value.email=l),label:"Email Address",type:"email",placeholder:"user@company.com",required:""},null,8,["modelValue"]),t(o(m),{modelValue:v.value.firstName,"onUpdate:modelValue":e[20]||(e[20]=l=>v.value.firstName=l),label:"First Name",placeholder:"John",required:""},null,8,["modelValue"]),t(o(m),{modelValue:v.value.lastName,"onUpdate:modelValue":e[21]||(e[21]=l=>v.value.lastName=l),label:"Last Name",placeholder:"Doe",required:""},null,8,["modelValue"]),t(o(b),{modelValue:v.value.role,"onUpdate:modelValue":e[22]||(e[22]=l=>v.value.role=l),label:"Role",options:B,required:""},null,8,["modelValue"])])]),_:1},8,["modelValue"])]),_:1}))}},vl=ue(tl,[["__scopeId","data-v-096e2542"]]);export{vl as default}; diff --git a/frontend/dist/assets/SimpleDemo-BNaqYHXS.js b/frontend/dist/assets/SimpleDemo-DQQNE0yU.js similarity index 99% rename from frontend/dist/assets/SimpleDemo-BNaqYHXS.js rename to frontend/dist/assets/SimpleDemo-DQQNE0yU.js index 23b58323..998770d8 100644 --- a/frontend/dist/assets/SimpleDemo-BNaqYHXS.js +++ b/frontend/dist/assets/SimpleDemo-DQQNE0yU.js @@ -1,4 +1,4 @@ -var mH=Object.defineProperty;var gH=(r,e,t)=>e in r?mH(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var Rt=(r,e,t)=>gH(r,typeof e!="symbol"?e+"":e,t);import{g as yH,c as bH}from"./_commonjsHelpers-NT8qMgGI.js";import{A as so,a3 as rr,bv as Ke,a as ae,g as Y,b as Z,Q as Sa,av as _H,au as $x,af as oi,aa as zl,bw as lo,bx as Nr,by as BS,bz as zS,m as Nt,bA as Ta,bB as p3,bC as v3,ad as xH,bD as xu,r as te,c as de,o as zi,e as H,ac as Ca,bE as wH,B as m3,E as ag,b4 as Ss,aF as SH,bF as FS,bG as g3,aN as TH,p as Je,i as $e,w as _e,aX as wu,d as Ie,j as ct,bi as VS,bH as r0,bI as n0,bJ as y3,bK as Vu,bL as CH,bg as i0,k as Di,t as qt,h as At,aW as Bh,bM as AH,n as kt,v as MH,aV as b3,aw as vt,bN as _3,f as kH,aQ as cp,_ as DH,ae as og,ai as EH,bO as MM,aU as Hx,bP as bm,aA as x3,bQ as w3,b5 as Ac,bR as LH,aS as kM}from"./index-BUdRbiwj.js";var Mn="top",di="bottom",pi="right",kn="left",$S="auto",fp=[Mn,di,pi,kn],$c="start",md="end",IH="clippingParents",S3="viewport",Rf="popper",PH="reference",DM=fp.reduce(function(r,e){return r.concat([e+"-"+$c,e+"-"+md])},[]),T3=[].concat(fp,[$S]).reduce(function(r,e){return r.concat([e,e+"-"+$c,e+"-"+md])},[]),RH="beforeRead",OH="read",jH="afterRead",NH="beforeMain",BH="main",zH="afterMain",FH="beforeWrite",VH="write",$H="afterWrite",HH=[RH,OH,jH,NH,BH,zH,FH,VH,$H];function Aa(r){return r?(r.nodeName||"").toLowerCase():null}function $n(r){if(r==null)return window;if(r.toString()!=="[object Window]"){var e=r.ownerDocument;return e&&e.defaultView||window}return r}function su(r){var e=$n(r).Element;return r instanceof e||r instanceof Element}function fi(r){var e=$n(r).HTMLElement;return r instanceof e||r instanceof HTMLElement}function HS(r){if(typeof ShadowRoot>"u")return!1;var e=$n(r).ShadowRoot;return r instanceof e||r instanceof ShadowRoot}function GH(r){var e=r.state;Object.keys(e.elements).forEach(function(t){var n=e.styles[t]||{},i=e.attributes[t]||{},a=e.elements[t];!fi(a)||!Aa(a)||(Object.assign(a.style,n),Object.keys(i).forEach(function(o){var s=i[o];s===!1?a.removeAttribute(o):a.setAttribute(o,s===!0?"":s)}))})}function WH(r){var e=r.state,t={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,t.popper),e.styles=t,e.elements.arrow&&Object.assign(e.elements.arrow.style,t.arrow),function(){Object.keys(e.elements).forEach(function(n){var i=e.elements[n],a=e.attributes[n]||{},o=Object.keys(e.styles.hasOwnProperty(n)?e.styles[n]:t[n]),s=o.reduce(function(l,u){return l[u]="",l},{});!fi(i)||!Aa(i)||(Object.assign(i.style,s),Object.keys(a).forEach(function(l){i.removeAttribute(l)}))})}}const C3={name:"applyStyles",enabled:!0,phase:"write",fn:GH,effect:WH,requires:["computeStyles"]};function ya(r){return r.split("-")[0]}var Fl=Math.max,sg=Math.min,Hc=Math.round;function Gx(){var r=navigator.userAgentData;return r!=null&&r.brands&&Array.isArray(r.brands)?r.brands.map(function(e){return e.brand+"/"+e.version}).join(" "):navigator.userAgent}function A3(){return!/^((?!chrome|android).)*safari/i.test(Gx())}function Gc(r,e,t){e===void 0&&(e=!1),t===void 0&&(t=!1);var n=r.getBoundingClientRect(),i=1,a=1;e&&fi(r)&&(i=r.offsetWidth>0&&Hc(n.width)/r.offsetWidth||1,a=r.offsetHeight>0&&Hc(n.height)/r.offsetHeight||1);var o=su(r)?$n(r):window,s=o.visualViewport,l=!A3()&&t,u=(n.left+(l&&s?s.offsetLeft:0))/i,c=(n.top+(l&&s?s.offsetTop:0))/a,f=n.width/i,h=n.height/a;return{width:f,height:h,top:c,right:u+f,bottom:c+h,left:u,x:u,y:c}}function GS(r){var e=Gc(r),t=r.offsetWidth,n=r.offsetHeight;return Math.abs(e.width-t)<=1&&(t=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:r.offsetLeft,y:r.offsetTop,width:t,height:n}}function M3(r,e){var t=e.getRootNode&&e.getRootNode();if(r.contains(e))return!0;if(t&&HS(t)){var n=e;do{if(n&&r.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function mo(r){return $n(r).getComputedStyle(r)}function UH(r){return["table","td","th"].indexOf(Aa(r))>=0}function Os(r){return((su(r)?r.ownerDocument:r.document)||window.document).documentElement}function a0(r){return Aa(r)==="html"?r:r.assignedSlot||r.parentNode||(HS(r)?r.host:null)||Os(r)}function EM(r){return!fi(r)||mo(r).position==="fixed"?null:r.offsetParent}function YH(r){var e=/firefox/i.test(Gx()),t=/Trident/i.test(Gx());if(t&&fi(r)){var n=mo(r);if(n.position==="fixed")return null}var i=a0(r);for(HS(i)&&(i=i.host);fi(i)&&["html","body"].indexOf(Aa(i))<0;){var a=mo(i);if(a.transform!=="none"||a.perspective!=="none"||a.contain==="paint"||["transform","perspective"].indexOf(a.willChange)!==-1||e&&a.willChange==="filter"||e&&a.filter&&a.filter!=="none")return i;i=i.parentNode}return null}function hp(r){for(var e=$n(r),t=EM(r);t&&UH(t)&&mo(t).position==="static";)t=EM(t);return t&&(Aa(t)==="html"||Aa(t)==="body"&&mo(t).position==="static")?e:t||YH(r)||e}function WS(r){return["top","bottom"].indexOf(r)>=0?"x":"y"}function zh(r,e,t){return Fl(r,sg(e,t))}function qH(r,e,t){var n=zh(r,e,t);return n>t?t:n}function k3(){return{top:0,right:0,bottom:0,left:0}}function D3(r){return Object.assign({},k3(),r)}function E3(r,e){return e.reduce(function(t,n){return t[n]=r,t},{})}var XH=function(e,t){return e=typeof e=="function"?e(Object.assign({},t.rects,{placement:t.placement})):e,D3(typeof e!="number"?e:E3(e,fp))};function KH(r){var e,t=r.state,n=r.name,i=r.options,a=t.elements.arrow,o=t.modifiersData.popperOffsets,s=ya(t.placement),l=WS(s),u=[kn,pi].indexOf(s)>=0,c=u?"height":"width";if(!(!a||!o)){var f=XH(i.padding,t),h=GS(a),d=l==="y"?Mn:kn,p=l==="y"?di:pi,v=t.rects.reference[c]+t.rects.reference[l]-o[l]-t.rects.popper[c],m=o[l]-t.rects.reference[l],g=hp(a),y=g?l==="y"?g.clientHeight||0:g.clientWidth||0:0,b=v/2-m/2,_=f[d],x=y-h[c]-f[p],w=y/2-h[c]/2+b,S=zh(_,w,x),T=l;t.modifiersData[n]=(e={},e[T]=S,e.centerOffset=S-w,e)}}function ZH(r){var e=r.state,t=r.options,n=t.element,i=n===void 0?"[data-popper-arrow]":n;i!=null&&(typeof i=="string"&&(i=e.elements.popper.querySelector(i),!i)||M3(e.elements.popper,i)&&(e.elements.arrow=i))}const JH={name:"arrow",enabled:!0,phase:"main",fn:KH,effect:ZH,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Wc(r){return r.split("-")[1]}var QH={top:"auto",right:"auto",bottom:"auto",left:"auto"};function e7(r,e){var t=r.x,n=r.y,i=e.devicePixelRatio||1;return{x:Hc(t*i)/i||0,y:Hc(n*i)/i||0}}function LM(r){var e,t=r.popper,n=r.popperRect,i=r.placement,a=r.variation,o=r.offsets,s=r.position,l=r.gpuAcceleration,u=r.adaptive,c=r.roundOffsets,f=r.isFixed,h=o.x,d=h===void 0?0:h,p=o.y,v=p===void 0?0:p,m=typeof c=="function"?c({x:d,y:v}):{x:d,y:v};d=m.x,v=m.y;var g=o.hasOwnProperty("x"),y=o.hasOwnProperty("y"),b=kn,_=Mn,x=window;if(u){var w=hp(t),S="clientHeight",T="clientWidth";if(w===$n(t)&&(w=Os(t),mo(w).position!=="static"&&s==="absolute"&&(S="scrollHeight",T="scrollWidth")),w=w,i===Mn||(i===kn||i===pi)&&a===md){_=di;var C=f&&w===x&&x.visualViewport?x.visualViewport.height:w[S];v-=C-n.height,v*=l?1:-1}if(i===kn||(i===Mn||i===di)&&a===md){b=pi;var A=f&&w===x&&x.visualViewport?x.visualViewport.width:w[T];d-=A-n.width,d*=l?1:-1}}var M=Object.assign({position:s},u&&QH),D=c===!0?e7({x:d,y:v},$n(t)):{x:d,y:v};if(d=D.x,v=D.y,l){var E;return Object.assign({},M,(E={},E[_]=y?"0":"",E[b]=g?"0":"",E.transform=(x.devicePixelRatio||1)<=1?"translate("+d+"px, "+v+"px)":"translate3d("+d+"px, "+v+"px, 0)",E))}return Object.assign({},M,(e={},e[_]=y?v+"px":"",e[b]=g?d+"px":"",e.transform="",e))}function t7(r){var e=r.state,t=r.options,n=t.gpuAcceleration,i=n===void 0?!0:n,a=t.adaptive,o=a===void 0?!0:a,s=t.roundOffsets,l=s===void 0?!0:s,u={placement:ya(e.placement),variation:Wc(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:i,isFixed:e.options.strategy==="fixed"};e.modifiersData.popperOffsets!=null&&(e.styles.popper=Object.assign({},e.styles.popper,LM(Object.assign({},u,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:o,roundOffsets:l})))),e.modifiersData.arrow!=null&&(e.styles.arrow=Object.assign({},e.styles.arrow,LM(Object.assign({},u,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})}const r7={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:t7,data:{}};var Hp={passive:!0};function n7(r){var e=r.state,t=r.instance,n=r.options,i=n.scroll,a=i===void 0?!0:i,o=n.resize,s=o===void 0?!0:o,l=$n(e.elements.popper),u=[].concat(e.scrollParents.reference,e.scrollParents.popper);return a&&u.forEach(function(c){c.addEventListener("scroll",t.update,Hp)}),s&&l.addEventListener("resize",t.update,Hp),function(){a&&u.forEach(function(c){c.removeEventListener("scroll",t.update,Hp)}),s&&l.removeEventListener("resize",t.update,Hp)}}const i7={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:n7,data:{}};var a7={left:"right",right:"left",bottom:"top",top:"bottom"};function _m(r){return r.replace(/left|right|bottom|top/g,function(e){return a7[e]})}var o7={start:"end",end:"start"};function IM(r){return r.replace(/start|end/g,function(e){return o7[e]})}function US(r){var e=$n(r),t=e.pageXOffset,n=e.pageYOffset;return{scrollLeft:t,scrollTop:n}}function YS(r){return Gc(Os(r)).left+US(r).scrollLeft}function s7(r,e){var t=$n(r),n=Os(r),i=t.visualViewport,a=n.clientWidth,o=n.clientHeight,s=0,l=0;if(i){a=i.width,o=i.height;var u=A3();(u||!u&&e==="fixed")&&(s=i.offsetLeft,l=i.offsetTop)}return{width:a,height:o,x:s+YS(r),y:l}}function l7(r){var e,t=Os(r),n=US(r),i=(e=r.ownerDocument)==null?void 0:e.body,a=Fl(t.scrollWidth,t.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),o=Fl(t.scrollHeight,t.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0),s=-n.scrollLeft+YS(r),l=-n.scrollTop;return mo(i||t).direction==="rtl"&&(s+=Fl(t.clientWidth,i?i.clientWidth:0)-a),{width:a,height:o,x:s,y:l}}function qS(r){var e=mo(r),t=e.overflow,n=e.overflowX,i=e.overflowY;return/auto|scroll|overlay|hidden/.test(t+i+n)}function L3(r){return["html","body","#document"].indexOf(Aa(r))>=0?r.ownerDocument.body:fi(r)&&qS(r)?r:L3(a0(r))}function Fh(r,e){var t;e===void 0&&(e=[]);var n=L3(r),i=n===((t=r.ownerDocument)==null?void 0:t.body),a=$n(n),o=i?[a].concat(a.visualViewport||[],qS(n)?n:[]):n,s=e.concat(o);return i?s:s.concat(Fh(a0(o)))}function Wx(r){return Object.assign({},r,{left:r.x,top:r.y,right:r.x+r.width,bottom:r.y+r.height})}function u7(r,e){var t=Gc(r,!1,e==="fixed");return t.top=t.top+r.clientTop,t.left=t.left+r.clientLeft,t.bottom=t.top+r.clientHeight,t.right=t.left+r.clientWidth,t.width=r.clientWidth,t.height=r.clientHeight,t.x=t.left,t.y=t.top,t}function PM(r,e,t){return e===S3?Wx(s7(r,t)):su(e)?u7(e,t):Wx(l7(Os(r)))}function c7(r){var e=Fh(a0(r)),t=["absolute","fixed"].indexOf(mo(r).position)>=0,n=t&&fi(r)?hp(r):r;return su(n)?e.filter(function(i){return su(i)&&M3(i,n)&&Aa(i)!=="body"}):[]}function f7(r,e,t,n){var i=e==="clippingParents"?c7(r):[].concat(e),a=[].concat(i,[t]),o=a[0],s=a.reduce(function(l,u){var c=PM(r,u,n);return l.top=Fl(c.top,l.top),l.right=sg(c.right,l.right),l.bottom=sg(c.bottom,l.bottom),l.left=Fl(c.left,l.left),l},PM(r,o,n));return s.width=s.right-s.left,s.height=s.bottom-s.top,s.x=s.left,s.y=s.top,s}function I3(r){var e=r.reference,t=r.element,n=r.placement,i=n?ya(n):null,a=n?Wc(n):null,o=e.x+e.width/2-t.width/2,s=e.y+e.height/2-t.height/2,l;switch(i){case Mn:l={x:o,y:e.y-t.height};break;case di:l={x:o,y:e.y+e.height};break;case pi:l={x:e.x+e.width,y:s};break;case kn:l={x:e.x-t.width,y:s};break;default:l={x:e.x,y:e.y}}var u=i?WS(i):null;if(u!=null){var c=u==="y"?"height":"width";switch(a){case $c:l[u]=l[u]-(e[c]/2-t[c]/2);break;case md:l[u]=l[u]+(e[c]/2-t[c]/2);break}}return l}function gd(r,e){e===void 0&&(e={});var t=e,n=t.placement,i=n===void 0?r.placement:n,a=t.strategy,o=a===void 0?r.strategy:a,s=t.boundary,l=s===void 0?IH:s,u=t.rootBoundary,c=u===void 0?S3:u,f=t.elementContext,h=f===void 0?Rf:f,d=t.altBoundary,p=d===void 0?!1:d,v=t.padding,m=v===void 0?0:v,g=D3(typeof m!="number"?m:E3(m,fp)),y=h===Rf?PH:Rf,b=r.rects.popper,_=r.elements[p?y:h],x=f7(su(_)?_:_.contextElement||Os(r.elements.popper),l,c,o),w=Gc(r.elements.reference),S=I3({reference:w,element:b,placement:i}),T=Wx(Object.assign({},b,S)),C=h===Rf?T:w,A={top:x.top-C.top+g.top,bottom:C.bottom-x.bottom+g.bottom,left:x.left-C.left+g.left,right:C.right-x.right+g.right},M=r.modifiersData.offset;if(h===Rf&&M){var D=M[i];Object.keys(A).forEach(function(E){var L=[pi,di].indexOf(E)>=0?1:-1,I=[Mn,di].indexOf(E)>=0?"y":"x";A[E]+=D[I]*L})}return A}function h7(r,e){e===void 0&&(e={});var t=e,n=t.placement,i=t.boundary,a=t.rootBoundary,o=t.padding,s=t.flipVariations,l=t.allowedAutoPlacements,u=l===void 0?T3:l,c=Wc(n),f=c?s?DM:DM.filter(function(p){return Wc(p)===c}):fp,h=f.filter(function(p){return u.indexOf(p)>=0});h.length===0&&(h=f);var d=h.reduce(function(p,v){return p[v]=gd(r,{placement:v,boundary:i,rootBoundary:a,padding:o})[ya(v)],p},{});return Object.keys(d).sort(function(p,v){return d[p]-d[v]})}function d7(r){if(ya(r)===$S)return[];var e=_m(r);return[IM(r),e,IM(e)]}function p7(r){var e=r.state,t=r.options,n=r.name;if(!e.modifiersData[n]._skip){for(var i=t.mainAxis,a=i===void 0?!0:i,o=t.altAxis,s=o===void 0?!0:o,l=t.fallbackPlacements,u=t.padding,c=t.boundary,f=t.rootBoundary,h=t.altBoundary,d=t.flipVariations,p=d===void 0?!0:d,v=t.allowedAutoPlacements,m=e.options.placement,g=ya(m),y=g===m,b=l||(y||!p?[_m(m)]:d7(m)),_=[m].concat(b).reduce(function(J,U){return J.concat(ya(U)===$S?h7(e,{placement:U,boundary:c,rootBoundary:f,padding:u,flipVariations:p,allowedAutoPlacements:v}):U)},[]),x=e.rects.reference,w=e.rects.popper,S=new Map,T=!0,C=_[0],A=0;A<_.length;A++){var M=_[A],D=ya(M),E=Wc(M)===$c,L=[Mn,di].indexOf(D)>=0,I=L?"width":"height",R=gd(e,{placement:M,boundary:c,rootBoundary:f,altBoundary:h,padding:u}),P=L?E?pi:kn:E?di:Mn;x[I]>w[I]&&(P=_m(P));var O=_m(P),j=[];if(a&&j.push(R[D]<=0),s&&j.push(R[P]<=0,R[O]<=0),j.every(function(J){return J})){C=M,T=!1;break}S.set(M,j)}if(T)for(var F=p?3:1,N=function(U){var we=_.find(function(Ye){var ge=S.get(Ye);if(ge)return ge.slice(0,U).every(function(le){return le})});if(we)return C=we,"break"},B=F;B>0;B--){var $=N(B);if($==="break")break}e.placement!==C&&(e.modifiersData[n]._skip=!0,e.placement=C,e.reset=!0)}}const v7={name:"flip",enabled:!0,phase:"main",fn:p7,requiresIfExists:["offset"],data:{_skip:!1}};function RM(r,e,t){return t===void 0&&(t={x:0,y:0}),{top:r.top-e.height-t.y,right:r.right-e.width+t.x,bottom:r.bottom-e.height+t.y,left:r.left-e.width-t.x}}function OM(r){return[Mn,pi,di,kn].some(function(e){return r[e]>=0})}function m7(r){var e=r.state,t=r.name,n=e.rects.reference,i=e.rects.popper,a=e.modifiersData.preventOverflow,o=gd(e,{elementContext:"reference"}),s=gd(e,{altBoundary:!0}),l=RM(o,n),u=RM(s,i,a),c=OM(l),f=OM(u);e.modifiersData[t]={referenceClippingOffsets:l,popperEscapeOffsets:u,isReferenceHidden:c,hasPopperEscaped:f},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":c,"data-popper-escaped":f})}const g7={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:m7};function y7(r,e,t){var n=ya(r),i=[kn,Mn].indexOf(n)>=0?-1:1,a=typeof t=="function"?t(Object.assign({},e,{placement:r})):t,o=a[0],s=a[1];return o=o||0,s=(s||0)*i,[kn,pi].indexOf(n)>=0?{x:s,y:o}:{x:o,y:s}}function b7(r){var e=r.state,t=r.options,n=r.name,i=t.offset,a=i===void 0?[0,0]:i,o=T3.reduce(function(c,f){return c[f]=y7(f,e.rects,a),c},{}),s=o[e.placement],l=s.x,u=s.y;e.modifiersData.popperOffsets!=null&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=u),e.modifiersData[n]=o}const _7={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:b7};function x7(r){var e=r.state,t=r.name;e.modifiersData[t]=I3({reference:e.rects.reference,element:e.rects.popper,placement:e.placement})}const w7={name:"popperOffsets",enabled:!0,phase:"read",fn:x7,data:{}};function S7(r){return r==="x"?"y":"x"}function T7(r){var e=r.state,t=r.options,n=r.name,i=t.mainAxis,a=i===void 0?!0:i,o=t.altAxis,s=o===void 0?!1:o,l=t.boundary,u=t.rootBoundary,c=t.altBoundary,f=t.padding,h=t.tether,d=h===void 0?!0:h,p=t.tetherOffset,v=p===void 0?0:p,m=gd(e,{boundary:l,rootBoundary:u,padding:f,altBoundary:c}),g=ya(e.placement),y=Wc(e.placement),b=!y,_=WS(g),x=S7(_),w=e.modifiersData.popperOffsets,S=e.rects.reference,T=e.rects.popper,C=typeof v=="function"?v(Object.assign({},e.rects,{placement:e.placement})):v,A=typeof C=="number"?{mainAxis:C,altAxis:C}:Object.assign({mainAxis:0,altAxis:0},C),M=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,D={x:0,y:0};if(w){if(a){var E,L=_==="y"?Mn:kn,I=_==="y"?di:pi,R=_==="y"?"height":"width",P=w[_],O=P+m[L],j=P-m[I],F=d?-T[R]/2:0,N=y===$c?S[R]:T[R],B=y===$c?-T[R]:-S[R],$=e.elements.arrow,J=d&&$?GS($):{width:0,height:0},U=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:k3(),we=U[L],Ye=U[I],ge=zh(0,S[R],J[R]),le=b?S[R]/2-F-ge-we-A.mainAxis:N-ge-we-A.mainAxis,be=b?-S[R]/2+F+ge+Ye+A.mainAxis:B+ge+Ye+A.mainAxis,re=e.elements.arrow&&hp(e.elements.arrow),G=re?_==="y"?re.clientTop||0:re.clientLeft||0:0,ee=(E=M==null?void 0:M[_])!=null?E:0,Q=P+le-ee-G,me=P+be-ee,he=zh(d?sg(O,Q):O,P,d?Fl(j,me):j);w[_]=he,D[_]=he-P}if(s){var Se,Fe=_==="x"?Mn:kn,xe=_==="x"?di:pi,rt=w[x],at=x==="y"?"height":"width",ht=rt+m[Fe],fr=rt-m[xe],yr=[Mn,kn].indexOf(g)!==-1,en=(Se=M==null?void 0:M[x])!=null?Se:0,tn=yr?ht:rt-S[at]-T[at]-en+A.altAxis,pe=yr?rt+S[at]+T[at]-en-A.altAxis:fr,De=d&&yr?qH(tn,rt,pe):zh(d?tn:ht,rt,d?pe:fr);w[x]=De,D[x]=De-rt}e.modifiersData[n]=D}}const C7={name:"preventOverflow",enabled:!0,phase:"main",fn:T7,requiresIfExists:["offset"]};function A7(r){return{scrollLeft:r.scrollLeft,scrollTop:r.scrollTop}}function M7(r){return r===$n(r)||!fi(r)?US(r):A7(r)}function k7(r){var e=r.getBoundingClientRect(),t=Hc(e.width)/r.offsetWidth||1,n=Hc(e.height)/r.offsetHeight||1;return t!==1||n!==1}function D7(r,e,t){t===void 0&&(t=!1);var n=fi(e),i=fi(e)&&k7(e),a=Os(e),o=Gc(r,i,t),s={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(n||!n&&!t)&&((Aa(e)!=="body"||qS(a))&&(s=M7(e)),fi(e)?(l=Gc(e,!0),l.x+=e.clientLeft,l.y+=e.clientTop):a&&(l.x=YS(a))),{x:o.left+s.scrollLeft-l.x,y:o.top+s.scrollTop-l.y,width:o.width,height:o.height}}function E7(r){var e=new Map,t=new Set,n=[];r.forEach(function(a){e.set(a.name,a)});function i(a){t.add(a.name);var o=[].concat(a.requires||[],a.requiresIfExists||[]);o.forEach(function(s){if(!t.has(s)){var l=e.get(s);l&&i(l)}}),n.push(a)}return r.forEach(function(a){t.has(a.name)||i(a)}),n}function L7(r){var e=E7(r);return HH.reduce(function(t,n){return t.concat(e.filter(function(i){return i.phase===n}))},[])}function I7(r){var e;return function(){return e||(e=new Promise(function(t){Promise.resolve().then(function(){e=void 0,t(r())})})),e}}function P7(r){var e=r.reduce(function(t,n){var i=t[n.name];return t[n.name]=i?Object.assign({},i,n,{options:Object.assign({},i.options,n.options),data:Object.assign({},i.data,n.data)}):n,t},{});return Object.keys(e).map(function(t){return e[t]})}var jM={placement:"bottom",modifiers:[],strategy:"absolute"};function NM(){for(var r=arguments.length,e=new Array(r),t=0;t',airplay:'',"alert-circle":'',"alert-octagon":'',"alert-triangle":'',"align-center":'',"align-justify":'',"align-left":'',"align-right":'',anchor:'',aperture:'',archive:'',"arrow-down-circle":'',"arrow-down-left":'',"arrow-down-right":'',"arrow-down":'',"arrow-left-circle":'',"arrow-left":'',"arrow-right-circle":'',"arrow-right":'',"arrow-up-circle":'',"arrow-up-left":'',"arrow-up-right":'',"arrow-up":'',"at-sign":'',award:'',"bar-chart-2":'',"bar-chart":'',"battery-charging":'',battery:'',"bell-off":'',bell:'',bluetooth:'',bold:'',"book-open":'',book:'',bookmark:'',box:'',briefcase:'',calendar:'',"camera-off":'',camera:'',cast:'',"check-circle":'',"check-square":'',check:'',"chevron-down":'',"chevron-left":'',"chevron-right":'',"chevron-up":'',"chevrons-down":'',"chevrons-left":'',"chevrons-right":'',"chevrons-up":'',chrome:'',circle:'',clipboard:'',clock:'',"cloud-drizzle":'',"cloud-lightning":'',"cloud-off":'',"cloud-rain":'',"cloud-snow":'',cloud:'',code:'',codepen:'',codesandbox:'',coffee:'',columns:'',command:'',compass:'',copy:'',"corner-down-left":'',"corner-down-right":'',"corner-left-down":'',"corner-left-up":'',"corner-right-down":'',"corner-right-up":'',"corner-up-left":'',"corner-up-right":'',cpu:'',"credit-card":'',crop:'',crosshair:'',database:'',delete:'',disc:'',"divide-circle":'',"divide-square":'',divide:'',"dollar-sign":'',"download-cloud":'',download:'',dribbble:'',droplet:'',"edit-2":'',"edit-3":'',edit:'',"external-link":'',"eye-off":'',eye:'',facebook:'',"fast-forward":'',feather:'',figma:'',"file-minus":'',"file-plus":'',"file-text":'',file:'',film:'',filter:'',flag:'',"folder-minus":'',"folder-plus":'',folder:'',framer:'',frown:'',gift:'',"git-branch":'',"git-commit":'',"git-merge":'',"git-pull-request":'',github:'',gitlab:'',globe:'',grid:'',"hard-drive":'',hash:'',headphones:'',heart:'',"help-circle":'',hexagon:'',home:'',image:'',inbox:'',info:'',instagram:'',italic:'',key:'',layers:'',layout:'',"life-buoy":'',"link-2":'',link:'',linkedin:'',list:'',loader:'',lock:'',"log-in":'',"log-out":'',mail:'',"map-pin":'',map:'',"maximize-2":'',maximize:'',meh:'',menu:'',"message-circle":'',"message-square":'',"mic-off":'',mic:'',"minimize-2":'',minimize:'',"minus-circle":'',"minus-square":'',minus:'',monitor:'',moon:'',"more-horizontal":'',"more-vertical":'',"mouse-pointer":'',move:'',music:'',"navigation-2":'',navigation:'',octagon:'',package:'',paperclip:'',"pause-circle":'',pause:'',"pen-tool":'',percent:'',"phone-call":'',"phone-forwarded":'',"phone-incoming":'',"phone-missed":'',"phone-off":'',"phone-outgoing":'',phone:'',"pie-chart":'',"play-circle":'',play:'',"plus-circle":'',"plus-square":'',plus:'',pocket:'',power:'',printer:'',radio:'',"refresh-ccw":'',"refresh-cw":'',repeat:'',rewind:'',"rotate-ccw":'',"rotate-cw":'',rss:'',save:'',scissors:'',search:'',send:'',server:'',settings:'',"share-2":'',share:'',"shield-off":'',shield:'',"shopping-bag":'',"shopping-cart":'',shuffle:'',sidebar:'',"skip-back":'',"skip-forward":'',slack:'',slash:'',sliders:'',smartphone:'',smile:'',speaker:'',square:'',star:'',"stop-circle":'',sun:'',sunrise:'',sunset:'',table:'',tablet:'',tag:'',target:'',terminal:'',thermometer:'',"thumbs-down":'',"thumbs-up":'',"toggle-left":'',"toggle-right":'',tool:'',"trash-2":'',trash:'',trello:'',"trending-down":'',"trending-up":'',triangle:'',truck:'',tv:'',twitch:'',twitter:'',type:'',umbrella:'',underline:'',unlock:'',"upload-cloud":'',upload:'',"user-check":'',"user-minus":'',"user-plus":'',"user-x":'',user:'',users:'',"video-off":'',video:'',voicemail:'',"volume-1":'',"volume-2":'',"volume-x":'',volume:'',watch:'',"wifi-off":'',wifi:'',wind:'',"x-circle":'',"x-octagon":'',"x-square":'',x:'',youtube:'',"zap-off":'',zap:'',"zoom-in":'',"zoom-out":''}},"./node_modules/classnames/dedupe.js":function(t,n,i){var a,o;/*! +var mH=Object.defineProperty;var gH=(r,e,t)=>e in r?mH(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var Rt=(r,e,t)=>gH(r,typeof e!="symbol"?e+"":e,t);import{g as yH,c as bH}from"./_commonjsHelpers-NT8qMgGI.js";import{A as so,a3 as rr,bw as Ke,a as ae,g as Y,b as Z,Q as Sa,av as _H,au as $x,af as oi,aa as zl,bx as lo,by as Nr,bz as BS,bA as zS,m as Nt,bB as Ta,bC as p3,bD as v3,ad as xH,bE as xu,r as te,c as de,o as zi,e as H,ac as Ca,bF as wH,B as m3,E as ag,aO as Ss,aF as SH,bG as FS,bH as g3,aN as TH,p as Je,i as $e,w as _e,aY as wu,d as Ie,j as ct,bi as VS,bI as r0,bJ as n0,bK as y3,bL as Vu,bM as CH,bg as i0,k as Di,t as qt,h as At,aX as Bh,bN as AH,n as kt,v as MH,aW as b3,aw as vt,bO as _3,f as kH,aR as cp,_ as DH,ae as og,ai as EH,bP as MM,aV as Hx,bQ as bm,aA as x3,bR as w3,b5 as Ac,bS as LH,aT as kM}from"./index-QAlcqU00.js";var Mn="top",di="bottom",pi="right",kn="left",$S="auto",fp=[Mn,di,pi,kn],$c="start",md="end",IH="clippingParents",S3="viewport",Rf="popper",PH="reference",DM=fp.reduce(function(r,e){return r.concat([e+"-"+$c,e+"-"+md])},[]),T3=[].concat(fp,[$S]).reduce(function(r,e){return r.concat([e,e+"-"+$c,e+"-"+md])},[]),RH="beforeRead",OH="read",jH="afterRead",NH="beforeMain",BH="main",zH="afterMain",FH="beforeWrite",VH="write",$H="afterWrite",HH=[RH,OH,jH,NH,BH,zH,FH,VH,$H];function Aa(r){return r?(r.nodeName||"").toLowerCase():null}function $n(r){if(r==null)return window;if(r.toString()!=="[object Window]"){var e=r.ownerDocument;return e&&e.defaultView||window}return r}function su(r){var e=$n(r).Element;return r instanceof e||r instanceof Element}function fi(r){var e=$n(r).HTMLElement;return r instanceof e||r instanceof HTMLElement}function HS(r){if(typeof ShadowRoot>"u")return!1;var e=$n(r).ShadowRoot;return r instanceof e||r instanceof ShadowRoot}function GH(r){var e=r.state;Object.keys(e.elements).forEach(function(t){var n=e.styles[t]||{},i=e.attributes[t]||{},a=e.elements[t];!fi(a)||!Aa(a)||(Object.assign(a.style,n),Object.keys(i).forEach(function(o){var s=i[o];s===!1?a.removeAttribute(o):a.setAttribute(o,s===!0?"":s)}))})}function WH(r){var e=r.state,t={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,t.popper),e.styles=t,e.elements.arrow&&Object.assign(e.elements.arrow.style,t.arrow),function(){Object.keys(e.elements).forEach(function(n){var i=e.elements[n],a=e.attributes[n]||{},o=Object.keys(e.styles.hasOwnProperty(n)?e.styles[n]:t[n]),s=o.reduce(function(l,u){return l[u]="",l},{});!fi(i)||!Aa(i)||(Object.assign(i.style,s),Object.keys(a).forEach(function(l){i.removeAttribute(l)}))})}}const C3={name:"applyStyles",enabled:!0,phase:"write",fn:GH,effect:WH,requires:["computeStyles"]};function ya(r){return r.split("-")[0]}var Fl=Math.max,sg=Math.min,Hc=Math.round;function Gx(){var r=navigator.userAgentData;return r!=null&&r.brands&&Array.isArray(r.brands)?r.brands.map(function(e){return e.brand+"/"+e.version}).join(" "):navigator.userAgent}function A3(){return!/^((?!chrome|android).)*safari/i.test(Gx())}function Gc(r,e,t){e===void 0&&(e=!1),t===void 0&&(t=!1);var n=r.getBoundingClientRect(),i=1,a=1;e&&fi(r)&&(i=r.offsetWidth>0&&Hc(n.width)/r.offsetWidth||1,a=r.offsetHeight>0&&Hc(n.height)/r.offsetHeight||1);var o=su(r)?$n(r):window,s=o.visualViewport,l=!A3()&&t,u=(n.left+(l&&s?s.offsetLeft:0))/i,c=(n.top+(l&&s?s.offsetTop:0))/a,f=n.width/i,h=n.height/a;return{width:f,height:h,top:c,right:u+f,bottom:c+h,left:u,x:u,y:c}}function GS(r){var e=Gc(r),t=r.offsetWidth,n=r.offsetHeight;return Math.abs(e.width-t)<=1&&(t=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:r.offsetLeft,y:r.offsetTop,width:t,height:n}}function M3(r,e){var t=e.getRootNode&&e.getRootNode();if(r.contains(e))return!0;if(t&&HS(t)){var n=e;do{if(n&&r.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function mo(r){return $n(r).getComputedStyle(r)}function UH(r){return["table","td","th"].indexOf(Aa(r))>=0}function Os(r){return((su(r)?r.ownerDocument:r.document)||window.document).documentElement}function a0(r){return Aa(r)==="html"?r:r.assignedSlot||r.parentNode||(HS(r)?r.host:null)||Os(r)}function EM(r){return!fi(r)||mo(r).position==="fixed"?null:r.offsetParent}function YH(r){var e=/firefox/i.test(Gx()),t=/Trident/i.test(Gx());if(t&&fi(r)){var n=mo(r);if(n.position==="fixed")return null}var i=a0(r);for(HS(i)&&(i=i.host);fi(i)&&["html","body"].indexOf(Aa(i))<0;){var a=mo(i);if(a.transform!=="none"||a.perspective!=="none"||a.contain==="paint"||["transform","perspective"].indexOf(a.willChange)!==-1||e&&a.willChange==="filter"||e&&a.filter&&a.filter!=="none")return i;i=i.parentNode}return null}function hp(r){for(var e=$n(r),t=EM(r);t&&UH(t)&&mo(t).position==="static";)t=EM(t);return t&&(Aa(t)==="html"||Aa(t)==="body"&&mo(t).position==="static")?e:t||YH(r)||e}function WS(r){return["top","bottom"].indexOf(r)>=0?"x":"y"}function zh(r,e,t){return Fl(r,sg(e,t))}function qH(r,e,t){var n=zh(r,e,t);return n>t?t:n}function k3(){return{top:0,right:0,bottom:0,left:0}}function D3(r){return Object.assign({},k3(),r)}function E3(r,e){return e.reduce(function(t,n){return t[n]=r,t},{})}var XH=function(e,t){return e=typeof e=="function"?e(Object.assign({},t.rects,{placement:t.placement})):e,D3(typeof e!="number"?e:E3(e,fp))};function KH(r){var e,t=r.state,n=r.name,i=r.options,a=t.elements.arrow,o=t.modifiersData.popperOffsets,s=ya(t.placement),l=WS(s),u=[kn,pi].indexOf(s)>=0,c=u?"height":"width";if(!(!a||!o)){var f=XH(i.padding,t),h=GS(a),d=l==="y"?Mn:kn,p=l==="y"?di:pi,v=t.rects.reference[c]+t.rects.reference[l]-o[l]-t.rects.popper[c],m=o[l]-t.rects.reference[l],g=hp(a),y=g?l==="y"?g.clientHeight||0:g.clientWidth||0:0,b=v/2-m/2,_=f[d],x=y-h[c]-f[p],w=y/2-h[c]/2+b,S=zh(_,w,x),T=l;t.modifiersData[n]=(e={},e[T]=S,e.centerOffset=S-w,e)}}function ZH(r){var e=r.state,t=r.options,n=t.element,i=n===void 0?"[data-popper-arrow]":n;i!=null&&(typeof i=="string"&&(i=e.elements.popper.querySelector(i),!i)||M3(e.elements.popper,i)&&(e.elements.arrow=i))}const JH={name:"arrow",enabled:!0,phase:"main",fn:KH,effect:ZH,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Wc(r){return r.split("-")[1]}var QH={top:"auto",right:"auto",bottom:"auto",left:"auto"};function e7(r,e){var t=r.x,n=r.y,i=e.devicePixelRatio||1;return{x:Hc(t*i)/i||0,y:Hc(n*i)/i||0}}function LM(r){var e,t=r.popper,n=r.popperRect,i=r.placement,a=r.variation,o=r.offsets,s=r.position,l=r.gpuAcceleration,u=r.adaptive,c=r.roundOffsets,f=r.isFixed,h=o.x,d=h===void 0?0:h,p=o.y,v=p===void 0?0:p,m=typeof c=="function"?c({x:d,y:v}):{x:d,y:v};d=m.x,v=m.y;var g=o.hasOwnProperty("x"),y=o.hasOwnProperty("y"),b=kn,_=Mn,x=window;if(u){var w=hp(t),S="clientHeight",T="clientWidth";if(w===$n(t)&&(w=Os(t),mo(w).position!=="static"&&s==="absolute"&&(S="scrollHeight",T="scrollWidth")),w=w,i===Mn||(i===kn||i===pi)&&a===md){_=di;var C=f&&w===x&&x.visualViewport?x.visualViewport.height:w[S];v-=C-n.height,v*=l?1:-1}if(i===kn||(i===Mn||i===di)&&a===md){b=pi;var A=f&&w===x&&x.visualViewport?x.visualViewport.width:w[T];d-=A-n.width,d*=l?1:-1}}var M=Object.assign({position:s},u&&QH),D=c===!0?e7({x:d,y:v},$n(t)):{x:d,y:v};if(d=D.x,v=D.y,l){var E;return Object.assign({},M,(E={},E[_]=y?"0":"",E[b]=g?"0":"",E.transform=(x.devicePixelRatio||1)<=1?"translate("+d+"px, "+v+"px)":"translate3d("+d+"px, "+v+"px, 0)",E))}return Object.assign({},M,(e={},e[_]=y?v+"px":"",e[b]=g?d+"px":"",e.transform="",e))}function t7(r){var e=r.state,t=r.options,n=t.gpuAcceleration,i=n===void 0?!0:n,a=t.adaptive,o=a===void 0?!0:a,s=t.roundOffsets,l=s===void 0?!0:s,u={placement:ya(e.placement),variation:Wc(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:i,isFixed:e.options.strategy==="fixed"};e.modifiersData.popperOffsets!=null&&(e.styles.popper=Object.assign({},e.styles.popper,LM(Object.assign({},u,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:o,roundOffsets:l})))),e.modifiersData.arrow!=null&&(e.styles.arrow=Object.assign({},e.styles.arrow,LM(Object.assign({},u,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})}const r7={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:t7,data:{}};var Hp={passive:!0};function n7(r){var e=r.state,t=r.instance,n=r.options,i=n.scroll,a=i===void 0?!0:i,o=n.resize,s=o===void 0?!0:o,l=$n(e.elements.popper),u=[].concat(e.scrollParents.reference,e.scrollParents.popper);return a&&u.forEach(function(c){c.addEventListener("scroll",t.update,Hp)}),s&&l.addEventListener("resize",t.update,Hp),function(){a&&u.forEach(function(c){c.removeEventListener("scroll",t.update,Hp)}),s&&l.removeEventListener("resize",t.update,Hp)}}const i7={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:n7,data:{}};var a7={left:"right",right:"left",bottom:"top",top:"bottom"};function _m(r){return r.replace(/left|right|bottom|top/g,function(e){return a7[e]})}var o7={start:"end",end:"start"};function IM(r){return r.replace(/start|end/g,function(e){return o7[e]})}function US(r){var e=$n(r),t=e.pageXOffset,n=e.pageYOffset;return{scrollLeft:t,scrollTop:n}}function YS(r){return Gc(Os(r)).left+US(r).scrollLeft}function s7(r,e){var t=$n(r),n=Os(r),i=t.visualViewport,a=n.clientWidth,o=n.clientHeight,s=0,l=0;if(i){a=i.width,o=i.height;var u=A3();(u||!u&&e==="fixed")&&(s=i.offsetLeft,l=i.offsetTop)}return{width:a,height:o,x:s+YS(r),y:l}}function l7(r){var e,t=Os(r),n=US(r),i=(e=r.ownerDocument)==null?void 0:e.body,a=Fl(t.scrollWidth,t.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),o=Fl(t.scrollHeight,t.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0),s=-n.scrollLeft+YS(r),l=-n.scrollTop;return mo(i||t).direction==="rtl"&&(s+=Fl(t.clientWidth,i?i.clientWidth:0)-a),{width:a,height:o,x:s,y:l}}function qS(r){var e=mo(r),t=e.overflow,n=e.overflowX,i=e.overflowY;return/auto|scroll|overlay|hidden/.test(t+i+n)}function L3(r){return["html","body","#document"].indexOf(Aa(r))>=0?r.ownerDocument.body:fi(r)&&qS(r)?r:L3(a0(r))}function Fh(r,e){var t;e===void 0&&(e=[]);var n=L3(r),i=n===((t=r.ownerDocument)==null?void 0:t.body),a=$n(n),o=i?[a].concat(a.visualViewport||[],qS(n)?n:[]):n,s=e.concat(o);return i?s:s.concat(Fh(a0(o)))}function Wx(r){return Object.assign({},r,{left:r.x,top:r.y,right:r.x+r.width,bottom:r.y+r.height})}function u7(r,e){var t=Gc(r,!1,e==="fixed");return t.top=t.top+r.clientTop,t.left=t.left+r.clientLeft,t.bottom=t.top+r.clientHeight,t.right=t.left+r.clientWidth,t.width=r.clientWidth,t.height=r.clientHeight,t.x=t.left,t.y=t.top,t}function PM(r,e,t){return e===S3?Wx(s7(r,t)):su(e)?u7(e,t):Wx(l7(Os(r)))}function c7(r){var e=Fh(a0(r)),t=["absolute","fixed"].indexOf(mo(r).position)>=0,n=t&&fi(r)?hp(r):r;return su(n)?e.filter(function(i){return su(i)&&M3(i,n)&&Aa(i)!=="body"}):[]}function f7(r,e,t,n){var i=e==="clippingParents"?c7(r):[].concat(e),a=[].concat(i,[t]),o=a[0],s=a.reduce(function(l,u){var c=PM(r,u,n);return l.top=Fl(c.top,l.top),l.right=sg(c.right,l.right),l.bottom=sg(c.bottom,l.bottom),l.left=Fl(c.left,l.left),l},PM(r,o,n));return s.width=s.right-s.left,s.height=s.bottom-s.top,s.x=s.left,s.y=s.top,s}function I3(r){var e=r.reference,t=r.element,n=r.placement,i=n?ya(n):null,a=n?Wc(n):null,o=e.x+e.width/2-t.width/2,s=e.y+e.height/2-t.height/2,l;switch(i){case Mn:l={x:o,y:e.y-t.height};break;case di:l={x:o,y:e.y+e.height};break;case pi:l={x:e.x+e.width,y:s};break;case kn:l={x:e.x-t.width,y:s};break;default:l={x:e.x,y:e.y}}var u=i?WS(i):null;if(u!=null){var c=u==="y"?"height":"width";switch(a){case $c:l[u]=l[u]-(e[c]/2-t[c]/2);break;case md:l[u]=l[u]+(e[c]/2-t[c]/2);break}}return l}function gd(r,e){e===void 0&&(e={});var t=e,n=t.placement,i=n===void 0?r.placement:n,a=t.strategy,o=a===void 0?r.strategy:a,s=t.boundary,l=s===void 0?IH:s,u=t.rootBoundary,c=u===void 0?S3:u,f=t.elementContext,h=f===void 0?Rf:f,d=t.altBoundary,p=d===void 0?!1:d,v=t.padding,m=v===void 0?0:v,g=D3(typeof m!="number"?m:E3(m,fp)),y=h===Rf?PH:Rf,b=r.rects.popper,_=r.elements[p?y:h],x=f7(su(_)?_:_.contextElement||Os(r.elements.popper),l,c,o),w=Gc(r.elements.reference),S=I3({reference:w,element:b,placement:i}),T=Wx(Object.assign({},b,S)),C=h===Rf?T:w,A={top:x.top-C.top+g.top,bottom:C.bottom-x.bottom+g.bottom,left:x.left-C.left+g.left,right:C.right-x.right+g.right},M=r.modifiersData.offset;if(h===Rf&&M){var D=M[i];Object.keys(A).forEach(function(E){var L=[pi,di].indexOf(E)>=0?1:-1,I=[Mn,di].indexOf(E)>=0?"y":"x";A[E]+=D[I]*L})}return A}function h7(r,e){e===void 0&&(e={});var t=e,n=t.placement,i=t.boundary,a=t.rootBoundary,o=t.padding,s=t.flipVariations,l=t.allowedAutoPlacements,u=l===void 0?T3:l,c=Wc(n),f=c?s?DM:DM.filter(function(p){return Wc(p)===c}):fp,h=f.filter(function(p){return u.indexOf(p)>=0});h.length===0&&(h=f);var d=h.reduce(function(p,v){return p[v]=gd(r,{placement:v,boundary:i,rootBoundary:a,padding:o})[ya(v)],p},{});return Object.keys(d).sort(function(p,v){return d[p]-d[v]})}function d7(r){if(ya(r)===$S)return[];var e=_m(r);return[IM(r),e,IM(e)]}function p7(r){var e=r.state,t=r.options,n=r.name;if(!e.modifiersData[n]._skip){for(var i=t.mainAxis,a=i===void 0?!0:i,o=t.altAxis,s=o===void 0?!0:o,l=t.fallbackPlacements,u=t.padding,c=t.boundary,f=t.rootBoundary,h=t.altBoundary,d=t.flipVariations,p=d===void 0?!0:d,v=t.allowedAutoPlacements,m=e.options.placement,g=ya(m),y=g===m,b=l||(y||!p?[_m(m)]:d7(m)),_=[m].concat(b).reduce(function(J,U){return J.concat(ya(U)===$S?h7(e,{placement:U,boundary:c,rootBoundary:f,padding:u,flipVariations:p,allowedAutoPlacements:v}):U)},[]),x=e.rects.reference,w=e.rects.popper,S=new Map,T=!0,C=_[0],A=0;A<_.length;A++){var M=_[A],D=ya(M),E=Wc(M)===$c,L=[Mn,di].indexOf(D)>=0,I=L?"width":"height",R=gd(e,{placement:M,boundary:c,rootBoundary:f,altBoundary:h,padding:u}),P=L?E?pi:kn:E?di:Mn;x[I]>w[I]&&(P=_m(P));var O=_m(P),j=[];if(a&&j.push(R[D]<=0),s&&j.push(R[P]<=0,R[O]<=0),j.every(function(J){return J})){C=M,T=!1;break}S.set(M,j)}if(T)for(var F=p?3:1,N=function(U){var we=_.find(function(Ye){var ge=S.get(Ye);if(ge)return ge.slice(0,U).every(function(le){return le})});if(we)return C=we,"break"},B=F;B>0;B--){var $=N(B);if($==="break")break}e.placement!==C&&(e.modifiersData[n]._skip=!0,e.placement=C,e.reset=!0)}}const v7={name:"flip",enabled:!0,phase:"main",fn:p7,requiresIfExists:["offset"],data:{_skip:!1}};function RM(r,e,t){return t===void 0&&(t={x:0,y:0}),{top:r.top-e.height-t.y,right:r.right-e.width+t.x,bottom:r.bottom-e.height+t.y,left:r.left-e.width-t.x}}function OM(r){return[Mn,pi,di,kn].some(function(e){return r[e]>=0})}function m7(r){var e=r.state,t=r.name,n=e.rects.reference,i=e.rects.popper,a=e.modifiersData.preventOverflow,o=gd(e,{elementContext:"reference"}),s=gd(e,{altBoundary:!0}),l=RM(o,n),u=RM(s,i,a),c=OM(l),f=OM(u);e.modifiersData[t]={referenceClippingOffsets:l,popperEscapeOffsets:u,isReferenceHidden:c,hasPopperEscaped:f},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":c,"data-popper-escaped":f})}const g7={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:m7};function y7(r,e,t){var n=ya(r),i=[kn,Mn].indexOf(n)>=0?-1:1,a=typeof t=="function"?t(Object.assign({},e,{placement:r})):t,o=a[0],s=a[1];return o=o||0,s=(s||0)*i,[kn,pi].indexOf(n)>=0?{x:s,y:o}:{x:o,y:s}}function b7(r){var e=r.state,t=r.options,n=r.name,i=t.offset,a=i===void 0?[0,0]:i,o=T3.reduce(function(c,f){return c[f]=y7(f,e.rects,a),c},{}),s=o[e.placement],l=s.x,u=s.y;e.modifiersData.popperOffsets!=null&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=u),e.modifiersData[n]=o}const _7={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:b7};function x7(r){var e=r.state,t=r.name;e.modifiersData[t]=I3({reference:e.rects.reference,element:e.rects.popper,placement:e.placement})}const w7={name:"popperOffsets",enabled:!0,phase:"read",fn:x7,data:{}};function S7(r){return r==="x"?"y":"x"}function T7(r){var e=r.state,t=r.options,n=r.name,i=t.mainAxis,a=i===void 0?!0:i,o=t.altAxis,s=o===void 0?!1:o,l=t.boundary,u=t.rootBoundary,c=t.altBoundary,f=t.padding,h=t.tether,d=h===void 0?!0:h,p=t.tetherOffset,v=p===void 0?0:p,m=gd(e,{boundary:l,rootBoundary:u,padding:f,altBoundary:c}),g=ya(e.placement),y=Wc(e.placement),b=!y,_=WS(g),x=S7(_),w=e.modifiersData.popperOffsets,S=e.rects.reference,T=e.rects.popper,C=typeof v=="function"?v(Object.assign({},e.rects,{placement:e.placement})):v,A=typeof C=="number"?{mainAxis:C,altAxis:C}:Object.assign({mainAxis:0,altAxis:0},C),M=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,D={x:0,y:0};if(w){if(a){var E,L=_==="y"?Mn:kn,I=_==="y"?di:pi,R=_==="y"?"height":"width",P=w[_],O=P+m[L],j=P-m[I],F=d?-T[R]/2:0,N=y===$c?S[R]:T[R],B=y===$c?-T[R]:-S[R],$=e.elements.arrow,J=d&&$?GS($):{width:0,height:0},U=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:k3(),we=U[L],Ye=U[I],ge=zh(0,S[R],J[R]),le=b?S[R]/2-F-ge-we-A.mainAxis:N-ge-we-A.mainAxis,be=b?-S[R]/2+F+ge+Ye+A.mainAxis:B+ge+Ye+A.mainAxis,re=e.elements.arrow&&hp(e.elements.arrow),G=re?_==="y"?re.clientTop||0:re.clientLeft||0:0,ee=(E=M==null?void 0:M[_])!=null?E:0,Q=P+le-ee-G,me=P+be-ee,he=zh(d?sg(O,Q):O,P,d?Fl(j,me):j);w[_]=he,D[_]=he-P}if(s){var Se,Fe=_==="x"?Mn:kn,xe=_==="x"?di:pi,rt=w[x],at=x==="y"?"height":"width",ht=rt+m[Fe],fr=rt-m[xe],yr=[Mn,kn].indexOf(g)!==-1,en=(Se=M==null?void 0:M[x])!=null?Se:0,tn=yr?ht:rt-S[at]-T[at]-en+A.altAxis,pe=yr?rt+S[at]+T[at]-en-A.altAxis:fr,De=d&&yr?qH(tn,rt,pe):zh(d?tn:ht,rt,d?pe:fr);w[x]=De,D[x]=De-rt}e.modifiersData[n]=D}}const C7={name:"preventOverflow",enabled:!0,phase:"main",fn:T7,requiresIfExists:["offset"]};function A7(r){return{scrollLeft:r.scrollLeft,scrollTop:r.scrollTop}}function M7(r){return r===$n(r)||!fi(r)?US(r):A7(r)}function k7(r){var e=r.getBoundingClientRect(),t=Hc(e.width)/r.offsetWidth||1,n=Hc(e.height)/r.offsetHeight||1;return t!==1||n!==1}function D7(r,e,t){t===void 0&&(t=!1);var n=fi(e),i=fi(e)&&k7(e),a=Os(e),o=Gc(r,i,t),s={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(n||!n&&!t)&&((Aa(e)!=="body"||qS(a))&&(s=M7(e)),fi(e)?(l=Gc(e,!0),l.x+=e.clientLeft,l.y+=e.clientTop):a&&(l.x=YS(a))),{x:o.left+s.scrollLeft-l.x,y:o.top+s.scrollTop-l.y,width:o.width,height:o.height}}function E7(r){var e=new Map,t=new Set,n=[];r.forEach(function(a){e.set(a.name,a)});function i(a){t.add(a.name);var o=[].concat(a.requires||[],a.requiresIfExists||[]);o.forEach(function(s){if(!t.has(s)){var l=e.get(s);l&&i(l)}}),n.push(a)}return r.forEach(function(a){t.has(a.name)||i(a)}),n}function L7(r){var e=E7(r);return HH.reduce(function(t,n){return t.concat(e.filter(function(i){return i.phase===n}))},[])}function I7(r){var e;return function(){return e||(e=new Promise(function(t){Promise.resolve().then(function(){e=void 0,t(r())})})),e}}function P7(r){var e=r.reduce(function(t,n){var i=t[n.name];return t[n.name]=i?Object.assign({},i,n,{options:Object.assign({},i.options,n.options),data:Object.assign({},i.data,n.data)}):n,t},{});return Object.keys(e).map(function(t){return e[t]})}var jM={placement:"bottom",modifiers:[],strategy:"absolute"};function NM(){for(var r=arguments.length,e=new Array(r),t=0;t',airplay:'',"alert-circle":'',"alert-octagon":'',"alert-triangle":'',"align-center":'',"align-justify":'',"align-left":'',"align-right":'',anchor:'',aperture:'',archive:'',"arrow-down-circle":'',"arrow-down-left":'',"arrow-down-right":'',"arrow-down":'',"arrow-left-circle":'',"arrow-left":'',"arrow-right-circle":'',"arrow-right":'',"arrow-up-circle":'',"arrow-up-left":'',"arrow-up-right":'',"arrow-up":'',"at-sign":'',award:'',"bar-chart-2":'',"bar-chart":'',"battery-charging":'',battery:'',"bell-off":'',bell:'',bluetooth:'',bold:'',"book-open":'',book:'',bookmark:'',box:'',briefcase:'',calendar:'',"camera-off":'',camera:'',cast:'',"check-circle":'',"check-square":'',check:'',"chevron-down":'',"chevron-left":'',"chevron-right":'',"chevron-up":'',"chevrons-down":'',"chevrons-left":'',"chevrons-right":'',"chevrons-up":'',chrome:'',circle:'',clipboard:'',clock:'',"cloud-drizzle":'',"cloud-lightning":'',"cloud-off":'',"cloud-rain":'',"cloud-snow":'',cloud:'',code:'',codepen:'',codesandbox:'',coffee:'',columns:'',command:'',compass:'',copy:'',"corner-down-left":'',"corner-down-right":'',"corner-left-down":'',"corner-left-up":'',"corner-right-down":'',"corner-right-up":'',"corner-up-left":'',"corner-up-right":'',cpu:'',"credit-card":'',crop:'',crosshair:'',database:'',delete:'',disc:'',"divide-circle":'',"divide-square":'',divide:'',"dollar-sign":'',"download-cloud":'',download:'',dribbble:'',droplet:'',"edit-2":'',"edit-3":'',edit:'',"external-link":'',"eye-off":'',eye:'',facebook:'',"fast-forward":'',feather:'',figma:'',"file-minus":'',"file-plus":'',"file-text":'',file:'',film:'',filter:'',flag:'',"folder-minus":'',"folder-plus":'',folder:'',framer:'',frown:'',gift:'',"git-branch":'',"git-commit":'',"git-merge":'',"git-pull-request":'',github:'',gitlab:'',globe:'',grid:'',"hard-drive":'',hash:'',headphones:'',heart:'',"help-circle":'',hexagon:'',home:'',image:'',inbox:'',info:'',instagram:'',italic:'',key:'',layers:'',layout:'',"life-buoy":'',"link-2":'',link:'',linkedin:'',list:'',loader:'',lock:'',"log-in":'',"log-out":'',mail:'',"map-pin":'',map:'',"maximize-2":'',maximize:'',meh:'',menu:'',"message-circle":'',"message-square":'',"mic-off":'',mic:'',"minimize-2":'',minimize:'',"minus-circle":'',"minus-square":'',minus:'',monitor:'',moon:'',"more-horizontal":'',"more-vertical":'',"mouse-pointer":'',move:'',music:'',"navigation-2":'',navigation:'',octagon:'',package:'',paperclip:'',"pause-circle":'',pause:'',"pen-tool":'',percent:'',"phone-call":'',"phone-forwarded":'',"phone-incoming":'',"phone-missed":'',"phone-off":'',"phone-outgoing":'',phone:'',"pie-chart":'',"play-circle":'',play:'',"plus-circle":'',"plus-square":'',plus:'',pocket:'',power:'',printer:'',radio:'',"refresh-ccw":'',"refresh-cw":'',repeat:'',rewind:'',"rotate-ccw":'',"rotate-cw":'',rss:'',save:'',scissors:'',search:'',send:'',server:'',settings:'',"share-2":'',share:'',"shield-off":'',shield:'',"shopping-bag":'',"shopping-cart":'',shuffle:'',sidebar:'',"skip-back":'',"skip-forward":'',slack:'',slash:'',sliders:'',smartphone:'',smile:'',speaker:'',square:'',star:'',"stop-circle":'',sun:'',sunrise:'',sunset:'',table:'',tablet:'',tag:'',target:'',terminal:'',thermometer:'',"thumbs-down":'',"thumbs-up":'',"toggle-left":'',"toggle-right":'',tool:'',"trash-2":'',trash:'',trello:'',"trending-down":'',"trending-up":'',triangle:'',truck:'',tv:'',twitch:'',twitter:'',type:'',umbrella:'',underline:'',unlock:'',"upload-cloud":'',upload:'',"user-check":'',"user-minus":'',"user-plus":'',"user-x":'',user:'',users:'',"video-off":'',video:'',voicemail:'',"volume-1":'',"volume-2":'',"volume-x":'',volume:'',watch:'',"wifi-off":'',wifi:'',wind:'',"x-circle":'',"x-octagon":'',"x-square":'',x:'',youtube:'',"zap-off":'',zap:'',"zoom-in":'',"zoom-out":''}},"./node_modules/classnames/dedupe.js":function(t,n,i){var a,o;/*! Copyright (c) 2016 Jed Watson. Licensed under the MIT License (MIT), see http://jedwatson.github.io/classnames diff --git a/frontend/dist/assets/StatusHistory-DeozEdNs.js b/frontend/dist/assets/StatusHistory-C7FtpZlE.js similarity index 99% rename from frontend/dist/assets/StatusHistory-DeozEdNs.js rename to frontend/dist/assets/StatusHistory-C7FtpZlE.js index 98cd69e4..d20cdd45 100644 --- a/frontend/dist/assets/StatusHistory-DeozEdNs.js +++ b/frontend/dist/assets/StatusHistory-C7FtpZlE.js @@ -1 +1 @@ -import{_ as se,r as I,c,m as oe,a as n,g as l,b as e,j as m,d as b,w as _,k as h,e as v,F as C,t as d,n as q,Q as le,af as L,aQ as U,i as A,aR as ae}from"./index-BUdRbiwj.js";import{F as z}from"./FPInput-CzR_dWoe.js";import{F as te}from"./FPSelect-C7p47Ma2.js";import{F as ne}from"./FPBadge-BKY5dPnL.js";import{S as K}from"./workOrder-jNxj_kjQ.js";const re={class:"cost-tracker"},ie={class:"flex items-center justify-between mb-4"},de={class:"flex items-center space-x-2"},ue={class:"flex items-center space-x-2"},me={class:"grid grid-cols-1 md:grid-cols-5 gap-4 mb-6"},ce={class:"bg-blue-50 border border-blue-200 rounded-lg p-4"},ve={class:"flex items-center"},ge={class:"text-lg font-bold text-blue-900"},xe={class:"bg-green-50 border border-green-200 rounded-lg p-4"},pe={class:"flex items-center"},he={class:"text-lg font-bold text-green-900"},fe={class:"bg-orange-50 border border-orange-200 rounded-lg p-4"},ke={class:"flex items-center"},be={class:"text-lg font-bold text-orange-900"},ye={class:"bg-indigo-50 border border-indigo-200 rounded-lg p-4"},we={class:"flex items-center"},_e={class:"text-lg font-bold text-indigo-900"},Ce={class:"bg-purple-50 border border-purple-200 rounded-lg p-4"},Me={class:"flex items-center"},$e={class:"text-lg font-bold text-purple-900"},Ve={class:"mb-6"},Se={class:"bg-gray-50 border border-gray-200 rounded-lg p-4"},je={class:"flex items-center justify-center"},Be={class:"text-center"},ze={class:"text-2xl font-bold text-gray-900"},Ie={class:"flex items-center justify-between mb-2"},Ae={class:"text-sm"},Le={class:"w-full bg-gray-200 rounded-full h-2"},Ue={class:"bg-white border border-gray-200 rounded-lg overflow-hidden"},He={class:"divide-y divide-gray-200"},Fe={key:0,class:"p-4"},Ne={class:"space-y-2"},De={class:"flex-1"},Te={class:"text-gray-900"},Oe={class:"text-gray-500 ml-2"},Ee={class:"font-medium text-gray-900"},Pe={key:1,class:"p-4"},Re={class:"space-y-2"},qe={class:"flex-1"},Ge={class:"text-gray-900"},Qe={class:"text-gray-500 ml-2"},Je={class:"font-medium text-gray-900"},Ke={key:2,class:"p-4"},We={class:"space-y-2"},Xe={class:"flex-1"},Ye={key:0,class:"text-gray-900"},Ze={class:"flex items-center space-x-2"},et={key:0,class:"font-medium text-gray-900"},tt={class:"flex items-center space-x-1"},st=["onClick"],ot=["onClick"],lt=["onClick"],at={key:3,class:"p-4"},nt={class:"space-y-2"},rt={class:"flex-1"},it={key:0,class:"text-gray-900"},dt={class:"flex items-center space-x-2"},ut={key:0,class:"font-medium text-gray-900"},mt={class:"flex items-center space-x-1"},ct=["onClick"],vt=["onClick"],gt=["onClick"],xt={key:4,class:"p-4"},pt={class:"space-y-2"},ht={class:"flex-1"},ft={key:0,class:"text-gray-900"},kt={class:"flex items-center space-x-2"},bt={key:0,class:"font-medium text-gray-900"},yt={class:"flex items-center space-x-1"},wt=["onClick"],_t=["onClick"],Ct=["onClick"],Mt={key:5,class:"p-8 text-center text-gray-500"},$t={key:1,class:"mt-4 p-3 bg-yellow-50 border border-yellow-200 rounded-lg"},Vt={class:"flex items-center justify-between"},St={key:0,class:"mt-3 flex items-center space-x-2"},jt={__name:"CostTracker",props:{modelValue:{type:Object,default:()=>({costs:[],budget:0})},parts:{type:Array,default:()=>[]},timeEntries:{type:Array,default:()=>[]},disabled:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(f,{emit:W}){const k=f,G=W,r=I([...k.modelValue.costs]),y=I(k.modelValue.budget||0),M=I(!1),g=I(0),H=c(()=>k.timeEntries.map(a=>({id:a.id,description:a.description||"Labor time",duration:a.duration,hourlyRate:a.hourlyRate||0,cost:a.duration*(a.hourlyRate||0)}))),$=c(()=>k.parts.map(a=>({id:a.id,partNumber:a.partNumber,name:a.name,quantity:a.quantity,unitCost:a.unitCost||0,cost:a.quantity*(a.unitCost||0)}))),F=c(()=>H.value.reduce((a,t)=>a+t.cost,0)),N=c(()=>$.value.reduce((a,t)=>a+t.cost,0)),D=c(()=>r.value.map((a,t)=>({...a,originalIndex:t})).filter(a=>a.category==="Material")),T=c(()=>r.value.map((a,t)=>({...a,originalIndex:t})).filter(a=>a.category==="Labor")),O=c(()=>r.value.map((a,t)=>({...a,originalIndex:t})).filter(a=>a.category==="Other")),Q=c(()=>D.value.reduce((a,t)=>a+(t.amount||0),0)),E=c(()=>T.value.reduce((a,t)=>a+(t.amount||0),0)),J=c(()=>O.value.reduce((a,t)=>a+(t.amount||0),0)),P=c(()=>Q.value+E.value+J.value),j=c(()=>F.value+N.value+P.value),w=c(()=>y.value>0?Math.round(j.value/y.value*100):0),X=c(()=>w.value>100?"bg-red-50 border border-red-200":w.value>80?"bg-yellow-50 border border-yellow-200":"bg-green-50 border border-green-200"),Y=c(()=>w.value>100?"bg-red-500":w.value>80?"bg-yellow-500":"bg-green-500"),Z=c(()=>w.value>100?"text-red-600":w.value>80?"text-yellow-600":"text-green-600"),ee=c(()=>H.value.length>0||$.value.length>0||r.value.length>0),u=a=>{const t={material:"Material",labor:"Labor",other:"Other"},o={id:Date.now()+Math.random(),description:"",amount:0,category:t[a]||"Other",editing:!0};r.value.push(o),S()},s=a=>{r.value[a].editing=!0},x=a=>{r.value[a].editing=!1,r.value[a].description||(r.value[a].description=`${r.value[a].category} Cost`),(isNaN(r.value[a].amount)||r.value[a].amount<0)&&(r.value[a].amount=0),S()},i=a=>{r.value.splice(a,1),S()},B=()=>{y.value=g.value,M.value=!1,g.value=0,S()},V=a=>{if(!a)return"0:00";const t=Math.floor(a),o=Math.round((a-t)*60);return`${t}:${o.toString().padStart(2,"0")}`},S=()=>{G("update:modelValue",{costs:r.value,budget:y.value})};return oe(()=>k.modelValue,a=>{r.value=[...a.costs],y.value=a.budget||0},{deep:!0}),(a,t)=>(l(),n("div",re,[e("div",ie,[t[9]||(t[9]=e("h3",{class:"text-lg font-medium text-gray-900"},"Cost Tracking",-1)),e("div",de,[e("div",ue,[b(v(C),{variant:"outline",size:"sm",onClick:t[0]||(t[0]=o=>u("material")),disabled:f.disabled},{default:_(()=>t[6]||(t[6]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4"})],-1),h(" Add Material ",-1)])),_:1,__:[6]},8,["disabled"]),b(v(C),{variant:"outline",size:"sm",onClick:t[1]||(t[1]=o=>u("labor")),disabled:f.disabled},{default:_(()=>t[7]||(t[7]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z"})],-1),h(" Add Labor ",-1)])),_:1,__:[7]},8,["disabled"]),b(v(C),{variant:"outline",size:"sm",onClick:t[2]||(t[2]=o=>u("other")),disabled:f.disabled},{default:_(()=>t[8]||(t[8]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),h(" Add Other ",-1)])),_:1,__:[8]},8,["disabled"])])])]),e("div",me,[e("div",ce,[e("div",ve,[t[11]||(t[11]=e("svg",{class:"w-8 h-8 text-blue-500 mr-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),e("div",null,[t[10]||(t[10]=e("p",{class:"text-sm font-medium text-blue-900"},"Auto Labor",-1)),e("p",ge,"$"+d(F.value.toFixed(2)),1)])])]),e("div",xe,[e("div",pe,[t[13]||(t[13]=e("svg",{class:"w-8 h-8 text-green-500 mr-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4"})],-1)),e("div",null,[t[12]||(t[12]=e("p",{class:"text-sm font-medium text-green-900"},"Auto Parts",-1)),e("p",he,"$"+d(N.value.toFixed(2)),1)])])]),e("div",fe,[e("div",ke,[t[15]||(t[15]=e("svg",{class:"w-8 h-8 text-orange-500 mr-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19.428 15.428a2 2 0 00-1.022-.547l-2.387-.477a6 6 0 00-3.86.517l-.318.158a6 6 0 01-3.86.517L6.05 15.21a2 2 0 00-1.806.547M8 4h8l-1 1v5.172a2 2 0 00.586 1.414l5 5c1.26 1.26.367 3.414-1.415 3.414H4.828c-1.782 0-2.674-2.154-1.414-3.414l5-5A2 2 0 009 10.172V5L8 4z"})],-1)),e("div",null,[t[14]||(t[14]=e("p",{class:"text-sm font-medium text-orange-900"},"Materials",-1)),e("p",be,"$"+d(Q.value.toFixed(2)),1)])])]),e("div",ye,[e("div",we,[t[17]||(t[17]=e("svg",{class:"w-8 h-8 text-indigo-500 mr-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z"})],-1)),e("div",null,[t[16]||(t[16]=e("p",{class:"text-sm font-medium text-indigo-900"},"Add'l Labor",-1)),e("p",_e,"$"+d(E.value.toFixed(2)),1)])])]),e("div",Ce,[e("div",Me,[t[19]||(t[19]=e("svg",{class:"w-8 h-8 text-purple-500 mr-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 7h6m0 10v-3m-3 3h.01M9 17h.01M9 14h.01M12 14h.01M15 11h.01M12 11h.01M9 11h.01M7 21h10a2 2 0 002-2V5a2 2 0 00-2-2H7a2 2 0 00-2 2v14a2 2 0 002 2z"})],-1)),e("div",null,[t[18]||(t[18]=e("p",{class:"text-sm font-medium text-purple-900"},"Other",-1)),e("p",$e,"$"+d(J.value.toFixed(2)),1)])])])]),e("div",Ve,[e("div",Se,[e("div",je,[t[21]||(t[21]=e("svg",{class:"w-8 h-8 text-gray-500 mr-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"})],-1)),e("div",Be,[t[20]||(t[20]=e("p",{class:"text-sm font-medium text-gray-900"},"Total Project Cost",-1)),e("p",ze,"$"+d(j.value.toFixed(2)),1)])])])]),y.value>0?(l(),n("div",{key:0,class:q(["mb-6 p-4 rounded-lg",X.value])},[e("div",Ie,[t[22]||(t[22]=e("span",{class:"text-sm font-medium"},"Budget Progress",-1)),e("span",Ae," $"+d(j.value.toFixed(2))+" / $"+d(y.value.toFixed(2)),1)]),e("div",Le,[e("div",{class:q(["h-2 rounded-full transition-all duration-300",Y.value]),style:le({width:`${Math.min(w.value,100)}%`})},null,6)]),e("p",{class:q(["text-xs mt-1",Z.value])},d(w.value>100?"Over budget by":"Remaining")+": $"+d(Math.abs(y.value-j.value).toFixed(2)),3)],2)):m("",!0),e("div",Ue,[t[38]||(t[38]=e("div",{class:"px-4 py-3 border-b border-gray-200 bg-gray-50"},[e("h4",{class:"text-sm font-medium text-gray-900"},"Cost Breakdown")],-1)),e("div",He,[H.value.length>0?(l(),n("div",Fe,[t[23]||(t[23]=e("h5",{class:"text-sm font-medium text-gray-900 mb-3 flex items-center"},[e("svg",{class:"w-4 h-4 text-blue-500 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})]),h(" Labor Costs ")],-1)),e("div",Ne,[(l(!0),n(L,null,U(H.value,o=>(l(),n("div",{key:o.id,class:"flex items-center justify-between text-sm"},[e("div",De,[e("span",Te,d(o.description),1),e("span",Oe,"("+d(V(o.duration))+" @ $"+d(o.hourlyRate)+"/hr)",1)]),e("span",Ee,"$"+d(o.cost.toFixed(2)),1)]))),128))])])):m("",!0),$.value.length>0?(l(),n("div",Pe,[t[24]||(t[24]=e("h5",{class:"text-sm font-medium text-gray-900 mb-3 flex items-center"},[e("svg",{class:"w-4 h-4 text-green-500 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4"})]),h(" Parts & Materials ")],-1)),e("div",Re,[(l(!0),n(L,null,U($.value,o=>(l(),n("div",{key:o.id,class:"flex items-center justify-between text-sm"},[e("div",qe,[e("span",Ge,d(o.partNumber)+" - "+d(o.name),1),e("span",Qe,"("+d(o.quantity)+" × $"+d(o.unitCost)+")",1)]),e("span",Je,"$"+d(o.cost.toFixed(2)),1)]))),128))])])):m("",!0),D.value.length>0?(l(),n("div",Ke,[t[28]||(t[28]=e("h5",{class:"text-sm font-medium text-gray-900 mb-3 flex items-center"},[e("svg",{class:"w-4 h-4 text-orange-500 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19.428 15.428a2 2 0 00-1.022-.547l-2.387-.477a6 6 0 00-3.86.517l-.318.158a6 6 0 01-3.86.517L6.05 15.21a2 2 0 00-1.806.547M8 4h8l-1 1v5.172a2 2 0 00.586 1.414l5 5c1.26 1.26.367 3.414-1.415 3.414H4.828c-1.782 0-2.674-2.154-1.414-3.414l5-5A2 2 0 009 10.172V5L8 4z"})]),h(" Materials ")],-1)),e("div",We,[(l(!0),n(L,null,U(D.value,(o,R)=>(l(),n("div",{key:o.id||R,class:"flex items-center justify-between text-sm"},[e("div",Xe,[o.editing?(l(),A(v(z),{key:1,modelValue:r.value[o.originalIndex].description,"onUpdate:modelValue":p=>r.value[o.originalIndex].description=p,placeholder:"Material description",size:"sm",class:"mr-2"},null,8,["modelValue","onUpdate:modelValue"])):(l(),n("span",Ye,d(o.description),1))]),e("div",Ze,[o.editing?(l(),A(v(z),{key:1,modelValue:r.value[o.originalIndex].amount,"onUpdate:modelValue":p=>r.value[o.originalIndex].amount=p,modelModifiers:{number:!0},type:"number",step:"0.01",min:"0",placeholder:"0.00",size:"sm",class:"w-20"},null,8,["modelValue","onUpdate:modelValue"])):(l(),n("span",et,"$"+d(o.amount.toFixed(2)),1)),e("div",tt,[!o.editing&&!f.disabled?(l(),n("button",{key:0,onClick:p=>s(o.originalIndex),class:"p-1 text-gray-400 hover:text-gray-600 rounded"},t[25]||(t[25]=[e("svg",{class:"w-3 h-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1)]),8,st)):m("",!0),o.editing?(l(),n("button",{key:1,onClick:p=>x(o.originalIndex),class:"p-1 text-green-500 hover:text-green-600 rounded"},t[26]||(t[26]=[e("svg",{class:"w-3 h-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M5 13l4 4L19 7"})],-1)]),8,ot)):m("",!0),f.disabled?m("",!0):(l(),n("button",{key:2,onClick:p=>i(o.originalIndex),class:"p-1 text-red-400 hover:text-red-600 rounded"},t[27]||(t[27]=[e("svg",{class:"w-3 h-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1)]),8,lt))])])]))),128))])])):m("",!0),T.value.length>0?(l(),n("div",at,[t[32]||(t[32]=e("h5",{class:"text-sm font-medium text-gray-900 mb-3 flex items-center"},[e("svg",{class:"w-4 h-4 text-indigo-500 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z"})]),h(" Additional Labor ")],-1)),e("div",nt,[(l(!0),n(L,null,U(T.value,(o,R)=>(l(),n("div",{key:o.id||R,class:"flex items-center justify-between text-sm"},[e("div",rt,[o.editing?(l(),A(v(z),{key:1,modelValue:r.value[o.originalIndex].description,"onUpdate:modelValue":p=>r.value[o.originalIndex].description=p,placeholder:"Labor description",size:"sm",class:"mr-2"},null,8,["modelValue","onUpdate:modelValue"])):(l(),n("span",it,d(o.description),1))]),e("div",dt,[o.editing?(l(),A(v(z),{key:1,modelValue:r.value[o.originalIndex].amount,"onUpdate:modelValue":p=>r.value[o.originalIndex].amount=p,modelModifiers:{number:!0},type:"number",step:"0.01",min:"0",placeholder:"0.00",size:"sm",class:"w-20"},null,8,["modelValue","onUpdate:modelValue"])):(l(),n("span",ut,"$"+d(o.amount.toFixed(2)),1)),e("div",mt,[!o.editing&&!f.disabled?(l(),n("button",{key:0,onClick:p=>s(o.originalIndex),class:"p-1 text-gray-400 hover:text-gray-600 rounded"},t[29]||(t[29]=[e("svg",{class:"w-3 h-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1)]),8,ct)):m("",!0),o.editing?(l(),n("button",{key:1,onClick:p=>x(o.originalIndex),class:"p-1 text-green-500 hover:text-green-600 rounded"},t[30]||(t[30]=[e("svg",{class:"w-3 h-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M5 13l4 4L19 7"})],-1)]),8,vt)):m("",!0),f.disabled?m("",!0):(l(),n("button",{key:2,onClick:p=>i(o.originalIndex),class:"p-1 text-red-400 hover:text-red-600 rounded"},t[31]||(t[31]=[e("svg",{class:"w-3 h-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1)]),8,gt))])])]))),128))])])):m("",!0),O.value.length>0?(l(),n("div",xt,[t[36]||(t[36]=e("h5",{class:"text-sm font-medium text-gray-900 mb-3 flex items-center"},[e("svg",{class:"w-4 h-4 text-purple-500 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 7h6m0 10v-3m-3 3h.01M9 17h.01M9 14h.01M12 14h.01M15 11h.01M12 11h.01M9 11h.01M7 21h10a2 2 0 002-2V5a2 2 0 00-2-2H7a2 2 0 00-2 2v14a2 2 0 002 2z"})]),h(" Other Costs ")],-1)),e("div",pt,[(l(!0),n(L,null,U(O.value,(o,R)=>(l(),n("div",{key:o.id||R,class:"flex items-center justify-between text-sm"},[e("div",ht,[o.editing?(l(),A(v(z),{key:1,modelValue:r.value[o.originalIndex].description,"onUpdate:modelValue":p=>r.value[o.originalIndex].description=p,placeholder:"Cost description",size:"sm",class:"mr-2"},null,8,["modelValue","onUpdate:modelValue"])):(l(),n("span",ft,d(o.description),1))]),e("div",kt,[o.editing?(l(),A(v(z),{key:1,modelValue:r.value[o.originalIndex].amount,"onUpdate:modelValue":p=>r.value[o.originalIndex].amount=p,modelModifiers:{number:!0},type:"number",step:"0.01",min:"0",placeholder:"0.00",size:"sm",class:"w-20"},null,8,["modelValue","onUpdate:modelValue"])):(l(),n("span",bt,"$"+d(o.amount.toFixed(2)),1)),e("div",yt,[!o.editing&&!f.disabled?(l(),n("button",{key:0,onClick:p=>s(o.originalIndex),class:"p-1 text-gray-400 hover:text-gray-600 rounded"},t[33]||(t[33]=[e("svg",{class:"w-3 h-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1)]),8,wt)):m("",!0),o.editing?(l(),n("button",{key:1,onClick:p=>x(o.originalIndex),class:"p-1 text-green-500 hover:text-green-600 rounded"},t[34]||(t[34]=[e("svg",{class:"w-3 h-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M5 13l4 4L19 7"})],-1)]),8,_t)):m("",!0),f.disabled?m("",!0):(l(),n("button",{key:2,onClick:p=>i(o.originalIndex),class:"p-1 text-red-400 hover:text-red-600 rounded"},t[35]||(t[35]=[e("svg",{class:"w-3 h-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1)]),8,Ct))])])]))),128))])])):m("",!0),ee.value?m("",!0):(l(),n("div",Mt,t[37]||(t[37]=[e("svg",{class:"w-12 h-12 mx-auto mb-4 text-gray-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"})],-1),e("p",{class:"text-sm"},"No costs recorded yet",-1),e("p",{class:"text-xs text-gray-400 mt-1"},"Costs will appear automatically from labor and parts",-1)])))])]),!y.value||y.value===0?(l(),n("div",$t,[e("div",Vt,[t[40]||(t[40]=e("div",{class:"flex items-center"},[e("svg",{class:"w-4 h-4 text-yellow-500 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})]),e("span",{class:"text-sm text-yellow-800"},"Set a budget to track spending")],-1)),b(v(C),{variant:"outline",size:"sm",onClick:t[3]||(t[3]=o=>M.value=!0)},{default:_(()=>t[39]||(t[39]=[h(" Set Budget ",-1)])),_:1,__:[39]})]),M.value?(l(),n("div",St,[b(v(z),{modelValue:g.value,"onUpdate:modelValue":t[4]||(t[4]=o=>g.value=o),modelModifiers:{number:!0},type:"number",step:"0.01",min:"0",placeholder:"Enter budget amount",size:"sm",class:"flex-1"},null,8,["modelValue"]),b(v(C),{size:"sm",onClick:B},{default:_(()=>t[41]||(t[41]=[h("Set",-1)])),_:1,__:[41]}),b(v(C),{variant:"secondary",size:"sm",onClick:t[5]||(t[5]=o=>M.value=!1)},{default:_(()=>t[42]||(t[42]=[h("Cancel",-1)])),_:1,__:[42]})])):m("",!0)])):m("",!0)]))}},Bs=se(jt,[["__scopeId","data-v-6b62bf5a"]]),Bt={class:"status-history"},zt={class:"flex items-center justify-between mb-4"},It={class:"flex items-center space-x-2"},At={class:"mb-6 p-4 bg-blue-50 border border-blue-200 rounded-lg"},Lt={class:"flex items-center justify-between"},Ut={class:"flex items-center"},Ht={class:"text-lg font-semibold text-blue-900"},Ft={class:"text-right"},Nt={class:"text-sm font-medium text-blue-900"},Dt={key:0,class:"mb-6 p-4 bg-gray-50 border border-gray-200 rounded-lg"},Tt={class:"grid grid-cols-1 md:grid-cols-2 gap-4 mb-3"},Ot={class:"flex items-center space-x-2"},Et={class:"space-y-4"},Pt={key:0,class:"relative"},Rt={class:"w-6 h-6",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},qt={key:0,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"},Gt={key:1,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"},Qt={key:2,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M10 9v6m4-6v6m7-3a9 9 0 11-18 0 9 9 0 0118 0z"},Jt={key:3,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5H7a2 2 0 00-2 2v10a2 2 0 002 2h8a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"},Kt={class:"flex-1 min-w-0"},Wt={class:"bg-white border border-gray-200 rounded-lg p-4 shadow-sm"},Xt={class:"flex items-center justify-between mb-2"},Yt={class:"flex items-center space-x-2"},Zt={key:0,class:"text-xs text-gray-500"},es={class:"text-xs text-gray-500"},ts={class:"flex items-center space-x-3 mb-2"},ss={class:"text-sm font-medium text-gray-900"},os={class:"text-xs text-gray-500"},ls={key:0,class:"text-sm text-gray-700 mt-2"},as={key:1,class:"mt-3 pt-3 border-t border-gray-100"},ns={class:"grid grid-cols-2 gap-4 text-xs text-gray-500"},rs={key:0},is={key:1},ds={key:1,class:"text-center py-8 text-gray-500"},us={key:1,class:"mt-8 border-t pt-6"},ms={key:0,class:"space-y-2"},cs={class:"flex items-center space-x-3"},vs={class:"font-medium text-gray-900"},gs={class:"text-gray-600"},xs={key:0,class:"text-gray-500"},ps={class:"flex items-center space-x-2 text-xs text-gray-500"},hs={key:1,class:"text-center py-4 text-gray-500 text-sm"},fs={key:2,class:"mt-6 p-4 bg-gray-50 rounded-lg"},ks={class:"grid grid-cols-2 md:grid-cols-4 gap-4 text-sm"},bs={class:"ml-2 font-medium text-gray-900"},ys={class:"ml-2 font-medium text-gray-900"},ws={class:"ml-2 font-medium text-gray-900"},_s={class:"ml-2 font-medium text-gray-900"},Cs={__name:"StatusHistory",props:{modelValue:{type:Array,default:()=>[]},currentStatus:{type:String,default:"OPEN"},disabled:{type:Boolean,default:!1},userOptions:{type:Array,default:()=>[]},currentUser:{type:Object,default:null},auditEntries:{type:Array,default:()=>[]}},emits:["update:modelValue","status-change"],setup(f,{emit:W}){const k=f,G=W,r=I([...k.modelValue]),y=I(!1),M=I(!1),g=I({newStatus:"",userId:null,comment:""}),H=c(()=>Object.entries(K).map(([u,s])=>({value:u,title:s.label,badge:s.badge}))),$=c(()=>r.value.length>0?r.value[0]:null),F=c(()=>g.value.newStatus&&g.value.userId&&g.value.newStatus!==k.currentStatus),N=c(()=>{if(!$.value)return"N/A";const u=new Date,s=new Date($.value.timestamp),x=u-s;return w(x/(1e3*60*60))}),D=c(()=>{if(r.value.length<2)return"N/A";const u=new Date(r.value[r.value.length-1].timestamp),x=new Date(r.value[0].timestamp)-u;return w(x/(1e3*60*60))}),T=c(()=>{if(r.value.length<2)return"N/A";const s=r.value.reduce((x,i,B)=>{if(B===r.value.length-1)return x;const V=new Date(i.timestamp),S=new Date(r.value[B+1].timestamp);return x+(V-S)},0)/(1e3*60*60)/(r.value.length-1);return w(s)}),O=()=>{var u;k.disabled||(g.value={newStatus:"",userId:((u=k.currentUser)==null?void 0:u.id)||null,comment:""},y.value=!0)},Q=()=>{if(!F.value)return;const u=k.userOptions.find(x=>x.value===g.value.userId),s={id:Date.now()+Math.random(),status:g.value.newStatus,previousStatus:k.currentStatus,user:(u==null?void 0:u.data)||k.currentUser,timestamp:new Date().toISOString(),comment:g.value.comment,metadata:{reason:"Manual status change",duration:N.value}};r.value.unshift(s),ee(),G("status-change",{newStatus:g.value.newStatus,previousStatus:k.currentStatus,comment:g.value.comment,user:(u==null?void 0:u.data)||k.currentUser}),E()},E=()=>{y.value=!1,g.value={newStatus:"",userId:null,comment:""}},J=()=>{M.value=!M.value},P=u=>{var s;return((s=K[u])==null?void 0:s.label)||u},j=u=>u?new Date(u).toLocaleString("en-US",{month:"short",day:"numeric",year:"numeric",hour:"2-digit",minute:"2-digit"}):"",w=u=>{if(!u||isNaN(u))return"0h";if(u<1)return`${Math.round(u*60)}m`;if(u<24)return`${Math.round(u*10)/10}h`;{const s=Math.floor(u/24),x=Math.round(u%24*10)/10;return`${s}d ${x}h`}},X=u=>{var s;return((s=K[u])==null?void 0:s.badge)||"secondary"},Y=u=>{const s=K[u];if(!s)return"bg-gray-100 text-gray-600";const x={primary:"bg-blue-100 text-blue-600",success:"bg-green-100 text-green-600",warning:"bg-yellow-100 text-yellow-600",danger:"bg-red-100 text-red-600",secondary:"bg-gray-100 text-gray-600"};return x[s.badge]||x.secondary},Z=u=>u.includes("CREATE")?"bg-green-500":u.includes("UPDATE")?"bg-blue-500":u.includes("DELETE")?"bg-red-500":"bg-gray-500",ee=()=>{G("update:modelValue",r.value)};return oe(()=>k.modelValue,u=>{r.value=[...u]},{deep:!0}),(u,s)=>{var x;return l(),n("div",Bt,[e("div",zt,[s[5]||(s[5]=e("h3",{class:"text-lg font-medium text-gray-900"},"Status History & Audit Trail",-1)),e("div",It,[b(v(C),{variant:"outline",size:"sm",onClick:O,disabled:f.disabled},{default:_(()=>s[3]||(s[3]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),h(" Add Status Update ",-1)])),_:1,__:[3]},8,["disabled"]),b(v(C),{variant:"ghost",size:"sm",onClick:J},{default:_(()=>[s[4]||(s[4]=e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1)),h(" "+d(M.value?"Hide":"Show")+" Audit Trail ",1)]),_:1,__:[4]})])]),e("div",At,[e("div",Lt,[e("div",Ut,[s[7]||(s[7]=e("div",{class:"flex-shrink-0 w-10 h-10 bg-blue-100 rounded-full flex items-center justify-center mr-3"},[e("svg",{class:"w-5 h-5 text-blue-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})])],-1)),e("div",null,[s[6]||(s[6]=e("h4",{class:"text-sm font-medium text-blue-900"},"Current Status",-1)),e("p",Ht,d(P(f.currentStatus)),1)])]),e("div",Ft,[s[8]||(s[8]=e("p",{class:"text-sm text-blue-700"},"Last Updated",-1)),e("p",Nt,d($.value?j($.value.timestamp):"Never"),1)])])]),y.value?(l(),n("div",Dt,[s[11]||(s[11]=e("h4",{class:"text-sm font-medium text-gray-900 mb-3"},"Add Status Update",-1)),e("div",Tt,[b(v(te),{modelValue:g.value.newStatus,"onUpdate:modelValue":s[0]||(s[0]=i=>g.value.newStatus=i),label:"New Status",options:H.value,required:""},null,8,["modelValue","options"]),b(v(te),{modelValue:g.value.userId,"onUpdate:modelValue":s[1]||(s[1]=i=>g.value.userId=i),label:"Changed By",options:f.userOptions,value:(x=f.currentUser)==null?void 0:x.id,required:""},null,8,["modelValue","options","value"])]),b(v(z),{modelValue:g.value.comment,"onUpdate:modelValue":s[2]||(s[2]=i=>g.value.comment=i),label:"Comment",placeholder:"Add a comment about this status change...",type:"textarea",rows:"3",class:"mb-3"},null,8,["modelValue"]),e("div",Ot,[b(v(C),{onClick:Q,disabled:!F.value},{default:_(()=>s[9]||(s[9]=[h(" Save Status Change ",-1)])),_:1,__:[9]},8,["disabled"]),b(v(C),{variant:"secondary",onClick:E},{default:_(()=>s[10]||(s[10]=[h(" Cancel ",-1)])),_:1,__:[10]})])])):m("",!0),e("div",Et,[s[16]||(s[16]=e("h4",{class:"text-sm font-medium text-gray-900"},"Status Timeline",-1)),r.value.length>0?(l(),n("div",Pt,[s[14]||(s[14]=e("div",{class:"absolute left-6 top-8 bottom-0 w-0.5 bg-gray-200"},null,-1)),(l(!0),n(L,null,U(r.value,(i,B)=>{var V;return l(),n("div",{key:i.id||B,class:"relative flex items-start space-x-4 pb-6"},[e("div",{class:q(["flex-shrink-0 w-12 h-12 rounded-full flex items-center justify-center relative z-10",Y(i.status)])},[(l(),n("svg",Rt,[i.status==="COMPLETE"?(l(),n("path",qt)):i.status==="IN_PROGRESS"?(l(),n("path",Gt)):i.status==="ON_HOLD"?(l(),n("path",Qt)):(l(),n("path",Jt))]))],2),e("div",Kt,[e("div",Wt,[e("div",Xt,[e("div",Yt,[b(v(ne),{variant:X(i.status)},{default:_(()=>[h(d(P(i.status)),1)]),_:2},1032,["variant"]),i.previousStatus?(l(),n("span",Zt," from "+d(P(i.previousStatus)),1)):m("",!0)]),e("time",es,d(j(i.timestamp)),1)]),e("div",ts,[i.user?(l(),A(v(ae),{key:0,user:i.user,size:"sm"},null,8,["user"])):m("",!0),e("div",null,[e("p",ss,d(i.user?`${i.user.firstName} ${i.user.lastName}`:"System"),1),e("p",os,d(((V=i.user)==null?void 0:V.jobTitle)||"Automated change"),1)])]),i.comment?(l(),n("p",ls,d(i.comment),1)):m("",!0),i.metadata?(l(),n("div",as,[e("div",ns,[i.metadata.duration?(l(),n("div",rs,[s[12]||(s[12]=e("span",{class:"font-medium"},"Duration in status:",-1)),h(" "+d(w(i.metadata.duration)),1)])):m("",!0),i.metadata.reason?(l(),n("div",is,[s[13]||(s[13]=e("span",{class:"font-medium"},"Reason:",-1)),h(" "+d(i.metadata.reason),1)])):m("",!0)])])):m("",!0)])])])}),128))])):(l(),n("div",ds,s[15]||(s[15]=[e("svg",{class:"w-12 h-12 mx-auto mb-4 text-gray-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})],-1),e("p",{class:"text-sm"},"No status history available",-1),e("p",{class:"text-xs text-gray-400 mt-1"},"Status changes will appear here",-1)])))]),M.value?(l(),n("div",us,[s[17]||(s[17]=e("h4",{class:"text-sm font-medium text-gray-900 mb-4 flex items-center"},[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})]),h(" Complete Audit Trail ")],-1)),f.auditEntries.length>0?(l(),n("div",ms,[(l(!0),n(L,null,U(f.auditEntries,(i,B)=>{var V,S;return l(),n("div",{key:i.id||B,class:"flex items-center justify-between p-3 bg-gray-50 rounded text-sm"},[e("div",cs,[e("span",{class:q(["w-2 h-2 rounded-full",Z(i.action)])},null,2),e("span",vs,d(i.action),1),e("span",gs,d(i.field||i.description),1),i.oldValue?(l(),n("span",xs,d(i.oldValue)+" → "+d(i.newValue),1)):m("",!0)]),e("div",ps,[e("span",null,d((V=i.user)==null?void 0:V.firstName)+" "+d((S=i.user)==null?void 0:S.lastName),1),e("span",null,d(j(i.timestamp)),1)])])}),128))])):(l(),n("div",hs," No audit entries available "))])):m("",!0),r.value.length>0?(l(),n("div",fs,[s[22]||(s[22]=e("h4",{class:"text-sm font-medium text-gray-900 mb-3"},"Statistics",-1)),e("div",ks,[e("div",null,[s[18]||(s[18]=e("span",{class:"text-gray-600"},"Total Changes:",-1)),e("span",bs,d(r.value.length),1)]),e("div",null,[s[19]||(s[19]=e("span",{class:"text-gray-600"},"Time in Current:",-1)),e("span",ys,d(N.value),1)]),e("div",null,[s[20]||(s[20]=e("span",{class:"text-gray-600"},"Total Duration:",-1)),e("span",ws,d(D.value),1)]),e("div",null,[s[21]||(s[21]=e("span",{class:"text-gray-600"},"Avg per Status:",-1)),e("span",_s,d(T.value),1)])])])):m("",!0)])}}},zs=se(Cs,[["__scopeId","data-v-3389e2f3"]]);export{Bs as C,zs as S}; +import{_ as se,r as I,c,m as oe,a as n,g as l,b as e,j as m,d as b,w as _,k as h,e as v,F as C,t as d,n as q,Q as le,af as L,aR as U,i as A,aS as ae}from"./index-QAlcqU00.js";import{F as z}from"./FPInput-D5RURom0.js";import{F as te}from"./FPSelect-j7n_x8eB.js";import{F as ne}from"./FPBadge-DvOitM1C.js";import{S as K}from"./workOrder-jNxj_kjQ.js";const re={class:"cost-tracker"},ie={class:"flex items-center justify-between mb-4"},de={class:"flex items-center space-x-2"},ue={class:"flex items-center space-x-2"},me={class:"grid grid-cols-1 md:grid-cols-5 gap-4 mb-6"},ce={class:"bg-blue-50 border border-blue-200 rounded-lg p-4"},ve={class:"flex items-center"},ge={class:"text-lg font-bold text-blue-900"},xe={class:"bg-green-50 border border-green-200 rounded-lg p-4"},pe={class:"flex items-center"},he={class:"text-lg font-bold text-green-900"},fe={class:"bg-orange-50 border border-orange-200 rounded-lg p-4"},ke={class:"flex items-center"},be={class:"text-lg font-bold text-orange-900"},ye={class:"bg-indigo-50 border border-indigo-200 rounded-lg p-4"},we={class:"flex items-center"},_e={class:"text-lg font-bold text-indigo-900"},Ce={class:"bg-purple-50 border border-purple-200 rounded-lg p-4"},Me={class:"flex items-center"},$e={class:"text-lg font-bold text-purple-900"},Ve={class:"mb-6"},Se={class:"bg-gray-50 border border-gray-200 rounded-lg p-4"},je={class:"flex items-center justify-center"},Be={class:"text-center"},ze={class:"text-2xl font-bold text-gray-900"},Ie={class:"flex items-center justify-between mb-2"},Ae={class:"text-sm"},Le={class:"w-full bg-gray-200 rounded-full h-2"},Ue={class:"bg-white border border-gray-200 rounded-lg overflow-hidden"},He={class:"divide-y divide-gray-200"},Fe={key:0,class:"p-4"},Ne={class:"space-y-2"},De={class:"flex-1"},Te={class:"text-gray-900"},Oe={class:"text-gray-500 ml-2"},Ee={class:"font-medium text-gray-900"},Pe={key:1,class:"p-4"},Re={class:"space-y-2"},qe={class:"flex-1"},Ge={class:"text-gray-900"},Qe={class:"text-gray-500 ml-2"},Je={class:"font-medium text-gray-900"},Ke={key:2,class:"p-4"},We={class:"space-y-2"},Xe={class:"flex-1"},Ye={key:0,class:"text-gray-900"},Ze={class:"flex items-center space-x-2"},et={key:0,class:"font-medium text-gray-900"},tt={class:"flex items-center space-x-1"},st=["onClick"],ot=["onClick"],lt=["onClick"],at={key:3,class:"p-4"},nt={class:"space-y-2"},rt={class:"flex-1"},it={key:0,class:"text-gray-900"},dt={class:"flex items-center space-x-2"},ut={key:0,class:"font-medium text-gray-900"},mt={class:"flex items-center space-x-1"},ct=["onClick"],vt=["onClick"],gt=["onClick"],xt={key:4,class:"p-4"},pt={class:"space-y-2"},ht={class:"flex-1"},ft={key:0,class:"text-gray-900"},kt={class:"flex items-center space-x-2"},bt={key:0,class:"font-medium text-gray-900"},yt={class:"flex items-center space-x-1"},wt=["onClick"],_t=["onClick"],Ct=["onClick"],Mt={key:5,class:"p-8 text-center text-gray-500"},$t={key:1,class:"mt-4 p-3 bg-yellow-50 border border-yellow-200 rounded-lg"},Vt={class:"flex items-center justify-between"},St={key:0,class:"mt-3 flex items-center space-x-2"},jt={__name:"CostTracker",props:{modelValue:{type:Object,default:()=>({costs:[],budget:0})},parts:{type:Array,default:()=>[]},timeEntries:{type:Array,default:()=>[]},disabled:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(f,{emit:W}){const k=f,G=W,r=I([...k.modelValue.costs]),y=I(k.modelValue.budget||0),M=I(!1),g=I(0),H=c(()=>k.timeEntries.map(a=>({id:a.id,description:a.description||"Labor time",duration:a.duration,hourlyRate:a.hourlyRate||0,cost:a.duration*(a.hourlyRate||0)}))),$=c(()=>k.parts.map(a=>({id:a.id,partNumber:a.partNumber,name:a.name,quantity:a.quantity,unitCost:a.unitCost||0,cost:a.quantity*(a.unitCost||0)}))),F=c(()=>H.value.reduce((a,t)=>a+t.cost,0)),N=c(()=>$.value.reduce((a,t)=>a+t.cost,0)),D=c(()=>r.value.map((a,t)=>({...a,originalIndex:t})).filter(a=>a.category==="Material")),T=c(()=>r.value.map((a,t)=>({...a,originalIndex:t})).filter(a=>a.category==="Labor")),O=c(()=>r.value.map((a,t)=>({...a,originalIndex:t})).filter(a=>a.category==="Other")),Q=c(()=>D.value.reduce((a,t)=>a+(t.amount||0),0)),E=c(()=>T.value.reduce((a,t)=>a+(t.amount||0),0)),J=c(()=>O.value.reduce((a,t)=>a+(t.amount||0),0)),P=c(()=>Q.value+E.value+J.value),j=c(()=>F.value+N.value+P.value),w=c(()=>y.value>0?Math.round(j.value/y.value*100):0),X=c(()=>w.value>100?"bg-red-50 border border-red-200":w.value>80?"bg-yellow-50 border border-yellow-200":"bg-green-50 border border-green-200"),Y=c(()=>w.value>100?"bg-red-500":w.value>80?"bg-yellow-500":"bg-green-500"),Z=c(()=>w.value>100?"text-red-600":w.value>80?"text-yellow-600":"text-green-600"),ee=c(()=>H.value.length>0||$.value.length>0||r.value.length>0),u=a=>{const t={material:"Material",labor:"Labor",other:"Other"},o={id:Date.now()+Math.random(),description:"",amount:0,category:t[a]||"Other",editing:!0};r.value.push(o),S()},s=a=>{r.value[a].editing=!0},x=a=>{r.value[a].editing=!1,r.value[a].description||(r.value[a].description=`${r.value[a].category} Cost`),(isNaN(r.value[a].amount)||r.value[a].amount<0)&&(r.value[a].amount=0),S()},i=a=>{r.value.splice(a,1),S()},B=()=>{y.value=g.value,M.value=!1,g.value=0,S()},V=a=>{if(!a)return"0:00";const t=Math.floor(a),o=Math.round((a-t)*60);return`${t}:${o.toString().padStart(2,"0")}`},S=()=>{G("update:modelValue",{costs:r.value,budget:y.value})};return oe(()=>k.modelValue,a=>{r.value=[...a.costs],y.value=a.budget||0},{deep:!0}),(a,t)=>(l(),n("div",re,[e("div",ie,[t[9]||(t[9]=e("h3",{class:"text-lg font-medium text-gray-900"},"Cost Tracking",-1)),e("div",de,[e("div",ue,[b(v(C),{variant:"outline",size:"sm",onClick:t[0]||(t[0]=o=>u("material")),disabled:f.disabled},{default:_(()=>t[6]||(t[6]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4"})],-1),h(" Add Material ",-1)])),_:1,__:[6]},8,["disabled"]),b(v(C),{variant:"outline",size:"sm",onClick:t[1]||(t[1]=o=>u("labor")),disabled:f.disabled},{default:_(()=>t[7]||(t[7]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z"})],-1),h(" Add Labor ",-1)])),_:1,__:[7]},8,["disabled"]),b(v(C),{variant:"outline",size:"sm",onClick:t[2]||(t[2]=o=>u("other")),disabled:f.disabled},{default:_(()=>t[8]||(t[8]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),h(" Add Other ",-1)])),_:1,__:[8]},8,["disabled"])])])]),e("div",me,[e("div",ce,[e("div",ve,[t[11]||(t[11]=e("svg",{class:"w-8 h-8 text-blue-500 mr-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),e("div",null,[t[10]||(t[10]=e("p",{class:"text-sm font-medium text-blue-900"},"Auto Labor",-1)),e("p",ge,"$"+d(F.value.toFixed(2)),1)])])]),e("div",xe,[e("div",pe,[t[13]||(t[13]=e("svg",{class:"w-8 h-8 text-green-500 mr-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4"})],-1)),e("div",null,[t[12]||(t[12]=e("p",{class:"text-sm font-medium text-green-900"},"Auto Parts",-1)),e("p",he,"$"+d(N.value.toFixed(2)),1)])])]),e("div",fe,[e("div",ke,[t[15]||(t[15]=e("svg",{class:"w-8 h-8 text-orange-500 mr-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19.428 15.428a2 2 0 00-1.022-.547l-2.387-.477a6 6 0 00-3.86.517l-.318.158a6 6 0 01-3.86.517L6.05 15.21a2 2 0 00-1.806.547M8 4h8l-1 1v5.172a2 2 0 00.586 1.414l5 5c1.26 1.26.367 3.414-1.415 3.414H4.828c-1.782 0-2.674-2.154-1.414-3.414l5-5A2 2 0 009 10.172V5L8 4z"})],-1)),e("div",null,[t[14]||(t[14]=e("p",{class:"text-sm font-medium text-orange-900"},"Materials",-1)),e("p",be,"$"+d(Q.value.toFixed(2)),1)])])]),e("div",ye,[e("div",we,[t[17]||(t[17]=e("svg",{class:"w-8 h-8 text-indigo-500 mr-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z"})],-1)),e("div",null,[t[16]||(t[16]=e("p",{class:"text-sm font-medium text-indigo-900"},"Add'l Labor",-1)),e("p",_e,"$"+d(E.value.toFixed(2)),1)])])]),e("div",Ce,[e("div",Me,[t[19]||(t[19]=e("svg",{class:"w-8 h-8 text-purple-500 mr-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 7h6m0 10v-3m-3 3h.01M9 17h.01M9 14h.01M12 14h.01M15 11h.01M12 11h.01M9 11h.01M7 21h10a2 2 0 002-2V5a2 2 0 00-2-2H7a2 2 0 00-2 2v14a2 2 0 002 2z"})],-1)),e("div",null,[t[18]||(t[18]=e("p",{class:"text-sm font-medium text-purple-900"},"Other",-1)),e("p",$e,"$"+d(J.value.toFixed(2)),1)])])])]),e("div",Ve,[e("div",Se,[e("div",je,[t[21]||(t[21]=e("svg",{class:"w-8 h-8 text-gray-500 mr-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"})],-1)),e("div",Be,[t[20]||(t[20]=e("p",{class:"text-sm font-medium text-gray-900"},"Total Project Cost",-1)),e("p",ze,"$"+d(j.value.toFixed(2)),1)])])])]),y.value>0?(l(),n("div",{key:0,class:q(["mb-6 p-4 rounded-lg",X.value])},[e("div",Ie,[t[22]||(t[22]=e("span",{class:"text-sm font-medium"},"Budget Progress",-1)),e("span",Ae," $"+d(j.value.toFixed(2))+" / $"+d(y.value.toFixed(2)),1)]),e("div",Le,[e("div",{class:q(["h-2 rounded-full transition-all duration-300",Y.value]),style:le({width:`${Math.min(w.value,100)}%`})},null,6)]),e("p",{class:q(["text-xs mt-1",Z.value])},d(w.value>100?"Over budget by":"Remaining")+": $"+d(Math.abs(y.value-j.value).toFixed(2)),3)],2)):m("",!0),e("div",Ue,[t[38]||(t[38]=e("div",{class:"px-4 py-3 border-b border-gray-200 bg-gray-50"},[e("h4",{class:"text-sm font-medium text-gray-900"},"Cost Breakdown")],-1)),e("div",He,[H.value.length>0?(l(),n("div",Fe,[t[23]||(t[23]=e("h5",{class:"text-sm font-medium text-gray-900 mb-3 flex items-center"},[e("svg",{class:"w-4 h-4 text-blue-500 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})]),h(" Labor Costs ")],-1)),e("div",Ne,[(l(!0),n(L,null,U(H.value,o=>(l(),n("div",{key:o.id,class:"flex items-center justify-between text-sm"},[e("div",De,[e("span",Te,d(o.description),1),e("span",Oe,"("+d(V(o.duration))+" @ $"+d(o.hourlyRate)+"/hr)",1)]),e("span",Ee,"$"+d(o.cost.toFixed(2)),1)]))),128))])])):m("",!0),$.value.length>0?(l(),n("div",Pe,[t[24]||(t[24]=e("h5",{class:"text-sm font-medium text-gray-900 mb-3 flex items-center"},[e("svg",{class:"w-4 h-4 text-green-500 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4"})]),h(" Parts & Materials ")],-1)),e("div",Re,[(l(!0),n(L,null,U($.value,o=>(l(),n("div",{key:o.id,class:"flex items-center justify-between text-sm"},[e("div",qe,[e("span",Ge,d(o.partNumber)+" - "+d(o.name),1),e("span",Qe,"("+d(o.quantity)+" × $"+d(o.unitCost)+")",1)]),e("span",Je,"$"+d(o.cost.toFixed(2)),1)]))),128))])])):m("",!0),D.value.length>0?(l(),n("div",Ke,[t[28]||(t[28]=e("h5",{class:"text-sm font-medium text-gray-900 mb-3 flex items-center"},[e("svg",{class:"w-4 h-4 text-orange-500 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19.428 15.428a2 2 0 00-1.022-.547l-2.387-.477a6 6 0 00-3.86.517l-.318.158a6 6 0 01-3.86.517L6.05 15.21a2 2 0 00-1.806.547M8 4h8l-1 1v5.172a2 2 0 00.586 1.414l5 5c1.26 1.26.367 3.414-1.415 3.414H4.828c-1.782 0-2.674-2.154-1.414-3.414l5-5A2 2 0 009 10.172V5L8 4z"})]),h(" Materials ")],-1)),e("div",We,[(l(!0),n(L,null,U(D.value,(o,R)=>(l(),n("div",{key:o.id||R,class:"flex items-center justify-between text-sm"},[e("div",Xe,[o.editing?(l(),A(v(z),{key:1,modelValue:r.value[o.originalIndex].description,"onUpdate:modelValue":p=>r.value[o.originalIndex].description=p,placeholder:"Material description",size:"sm",class:"mr-2"},null,8,["modelValue","onUpdate:modelValue"])):(l(),n("span",Ye,d(o.description),1))]),e("div",Ze,[o.editing?(l(),A(v(z),{key:1,modelValue:r.value[o.originalIndex].amount,"onUpdate:modelValue":p=>r.value[o.originalIndex].amount=p,modelModifiers:{number:!0},type:"number",step:"0.01",min:"0",placeholder:"0.00",size:"sm",class:"w-20"},null,8,["modelValue","onUpdate:modelValue"])):(l(),n("span",et,"$"+d(o.amount.toFixed(2)),1)),e("div",tt,[!o.editing&&!f.disabled?(l(),n("button",{key:0,onClick:p=>s(o.originalIndex),class:"p-1 text-gray-400 hover:text-gray-600 rounded"},t[25]||(t[25]=[e("svg",{class:"w-3 h-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1)]),8,st)):m("",!0),o.editing?(l(),n("button",{key:1,onClick:p=>x(o.originalIndex),class:"p-1 text-green-500 hover:text-green-600 rounded"},t[26]||(t[26]=[e("svg",{class:"w-3 h-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M5 13l4 4L19 7"})],-1)]),8,ot)):m("",!0),f.disabled?m("",!0):(l(),n("button",{key:2,onClick:p=>i(o.originalIndex),class:"p-1 text-red-400 hover:text-red-600 rounded"},t[27]||(t[27]=[e("svg",{class:"w-3 h-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1)]),8,lt))])])]))),128))])])):m("",!0),T.value.length>0?(l(),n("div",at,[t[32]||(t[32]=e("h5",{class:"text-sm font-medium text-gray-900 mb-3 flex items-center"},[e("svg",{class:"w-4 h-4 text-indigo-500 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z"})]),h(" Additional Labor ")],-1)),e("div",nt,[(l(!0),n(L,null,U(T.value,(o,R)=>(l(),n("div",{key:o.id||R,class:"flex items-center justify-between text-sm"},[e("div",rt,[o.editing?(l(),A(v(z),{key:1,modelValue:r.value[o.originalIndex].description,"onUpdate:modelValue":p=>r.value[o.originalIndex].description=p,placeholder:"Labor description",size:"sm",class:"mr-2"},null,8,["modelValue","onUpdate:modelValue"])):(l(),n("span",it,d(o.description),1))]),e("div",dt,[o.editing?(l(),A(v(z),{key:1,modelValue:r.value[o.originalIndex].amount,"onUpdate:modelValue":p=>r.value[o.originalIndex].amount=p,modelModifiers:{number:!0},type:"number",step:"0.01",min:"0",placeholder:"0.00",size:"sm",class:"w-20"},null,8,["modelValue","onUpdate:modelValue"])):(l(),n("span",ut,"$"+d(o.amount.toFixed(2)),1)),e("div",mt,[!o.editing&&!f.disabled?(l(),n("button",{key:0,onClick:p=>s(o.originalIndex),class:"p-1 text-gray-400 hover:text-gray-600 rounded"},t[29]||(t[29]=[e("svg",{class:"w-3 h-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1)]),8,ct)):m("",!0),o.editing?(l(),n("button",{key:1,onClick:p=>x(o.originalIndex),class:"p-1 text-green-500 hover:text-green-600 rounded"},t[30]||(t[30]=[e("svg",{class:"w-3 h-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M5 13l4 4L19 7"})],-1)]),8,vt)):m("",!0),f.disabled?m("",!0):(l(),n("button",{key:2,onClick:p=>i(o.originalIndex),class:"p-1 text-red-400 hover:text-red-600 rounded"},t[31]||(t[31]=[e("svg",{class:"w-3 h-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1)]),8,gt))])])]))),128))])])):m("",!0),O.value.length>0?(l(),n("div",xt,[t[36]||(t[36]=e("h5",{class:"text-sm font-medium text-gray-900 mb-3 flex items-center"},[e("svg",{class:"w-4 h-4 text-purple-500 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 7h6m0 10v-3m-3 3h.01M9 17h.01M9 14h.01M12 14h.01M15 11h.01M12 11h.01M9 11h.01M7 21h10a2 2 0 002-2V5a2 2 0 00-2-2H7a2 2 0 00-2 2v14a2 2 0 002 2z"})]),h(" Other Costs ")],-1)),e("div",pt,[(l(!0),n(L,null,U(O.value,(o,R)=>(l(),n("div",{key:o.id||R,class:"flex items-center justify-between text-sm"},[e("div",ht,[o.editing?(l(),A(v(z),{key:1,modelValue:r.value[o.originalIndex].description,"onUpdate:modelValue":p=>r.value[o.originalIndex].description=p,placeholder:"Cost description",size:"sm",class:"mr-2"},null,8,["modelValue","onUpdate:modelValue"])):(l(),n("span",ft,d(o.description),1))]),e("div",kt,[o.editing?(l(),A(v(z),{key:1,modelValue:r.value[o.originalIndex].amount,"onUpdate:modelValue":p=>r.value[o.originalIndex].amount=p,modelModifiers:{number:!0},type:"number",step:"0.01",min:"0",placeholder:"0.00",size:"sm",class:"w-20"},null,8,["modelValue","onUpdate:modelValue"])):(l(),n("span",bt,"$"+d(o.amount.toFixed(2)),1)),e("div",yt,[!o.editing&&!f.disabled?(l(),n("button",{key:0,onClick:p=>s(o.originalIndex),class:"p-1 text-gray-400 hover:text-gray-600 rounded"},t[33]||(t[33]=[e("svg",{class:"w-3 h-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1)]),8,wt)):m("",!0),o.editing?(l(),n("button",{key:1,onClick:p=>x(o.originalIndex),class:"p-1 text-green-500 hover:text-green-600 rounded"},t[34]||(t[34]=[e("svg",{class:"w-3 h-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M5 13l4 4L19 7"})],-1)]),8,_t)):m("",!0),f.disabled?m("",!0):(l(),n("button",{key:2,onClick:p=>i(o.originalIndex),class:"p-1 text-red-400 hover:text-red-600 rounded"},t[35]||(t[35]=[e("svg",{class:"w-3 h-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1)]),8,Ct))])])]))),128))])])):m("",!0),ee.value?m("",!0):(l(),n("div",Mt,t[37]||(t[37]=[e("svg",{class:"w-12 h-12 mx-auto mb-4 text-gray-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"})],-1),e("p",{class:"text-sm"},"No costs recorded yet",-1),e("p",{class:"text-xs text-gray-400 mt-1"},"Costs will appear automatically from labor and parts",-1)])))])]),!y.value||y.value===0?(l(),n("div",$t,[e("div",Vt,[t[40]||(t[40]=e("div",{class:"flex items-center"},[e("svg",{class:"w-4 h-4 text-yellow-500 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})]),e("span",{class:"text-sm text-yellow-800"},"Set a budget to track spending")],-1)),b(v(C),{variant:"outline",size:"sm",onClick:t[3]||(t[3]=o=>M.value=!0)},{default:_(()=>t[39]||(t[39]=[h(" Set Budget ",-1)])),_:1,__:[39]})]),M.value?(l(),n("div",St,[b(v(z),{modelValue:g.value,"onUpdate:modelValue":t[4]||(t[4]=o=>g.value=o),modelModifiers:{number:!0},type:"number",step:"0.01",min:"0",placeholder:"Enter budget amount",size:"sm",class:"flex-1"},null,8,["modelValue"]),b(v(C),{size:"sm",onClick:B},{default:_(()=>t[41]||(t[41]=[h("Set",-1)])),_:1,__:[41]}),b(v(C),{variant:"secondary",size:"sm",onClick:t[5]||(t[5]=o=>M.value=!1)},{default:_(()=>t[42]||(t[42]=[h("Cancel",-1)])),_:1,__:[42]})])):m("",!0)])):m("",!0)]))}},Bs=se(jt,[["__scopeId","data-v-6b62bf5a"]]),Bt={class:"status-history"},zt={class:"flex items-center justify-between mb-4"},It={class:"flex items-center space-x-2"},At={class:"mb-6 p-4 bg-blue-50 border border-blue-200 rounded-lg"},Lt={class:"flex items-center justify-between"},Ut={class:"flex items-center"},Ht={class:"text-lg font-semibold text-blue-900"},Ft={class:"text-right"},Nt={class:"text-sm font-medium text-blue-900"},Dt={key:0,class:"mb-6 p-4 bg-gray-50 border border-gray-200 rounded-lg"},Tt={class:"grid grid-cols-1 md:grid-cols-2 gap-4 mb-3"},Ot={class:"flex items-center space-x-2"},Et={class:"space-y-4"},Pt={key:0,class:"relative"},Rt={class:"w-6 h-6",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},qt={key:0,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"},Gt={key:1,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"},Qt={key:2,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M10 9v6m4-6v6m7-3a9 9 0 11-18 0 9 9 0 0118 0z"},Jt={key:3,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5H7a2 2 0 00-2 2v10a2 2 0 002 2h8a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"},Kt={class:"flex-1 min-w-0"},Wt={class:"bg-white border border-gray-200 rounded-lg p-4 shadow-sm"},Xt={class:"flex items-center justify-between mb-2"},Yt={class:"flex items-center space-x-2"},Zt={key:0,class:"text-xs text-gray-500"},es={class:"text-xs text-gray-500"},ts={class:"flex items-center space-x-3 mb-2"},ss={class:"text-sm font-medium text-gray-900"},os={class:"text-xs text-gray-500"},ls={key:0,class:"text-sm text-gray-700 mt-2"},as={key:1,class:"mt-3 pt-3 border-t border-gray-100"},ns={class:"grid grid-cols-2 gap-4 text-xs text-gray-500"},rs={key:0},is={key:1},ds={key:1,class:"text-center py-8 text-gray-500"},us={key:1,class:"mt-8 border-t pt-6"},ms={key:0,class:"space-y-2"},cs={class:"flex items-center space-x-3"},vs={class:"font-medium text-gray-900"},gs={class:"text-gray-600"},xs={key:0,class:"text-gray-500"},ps={class:"flex items-center space-x-2 text-xs text-gray-500"},hs={key:1,class:"text-center py-4 text-gray-500 text-sm"},fs={key:2,class:"mt-6 p-4 bg-gray-50 rounded-lg"},ks={class:"grid grid-cols-2 md:grid-cols-4 gap-4 text-sm"},bs={class:"ml-2 font-medium text-gray-900"},ys={class:"ml-2 font-medium text-gray-900"},ws={class:"ml-2 font-medium text-gray-900"},_s={class:"ml-2 font-medium text-gray-900"},Cs={__name:"StatusHistory",props:{modelValue:{type:Array,default:()=>[]},currentStatus:{type:String,default:"OPEN"},disabled:{type:Boolean,default:!1},userOptions:{type:Array,default:()=>[]},currentUser:{type:Object,default:null},auditEntries:{type:Array,default:()=>[]}},emits:["update:modelValue","status-change"],setup(f,{emit:W}){const k=f,G=W,r=I([...k.modelValue]),y=I(!1),M=I(!1),g=I({newStatus:"",userId:null,comment:""}),H=c(()=>Object.entries(K).map(([u,s])=>({value:u,title:s.label,badge:s.badge}))),$=c(()=>r.value.length>0?r.value[0]:null),F=c(()=>g.value.newStatus&&g.value.userId&&g.value.newStatus!==k.currentStatus),N=c(()=>{if(!$.value)return"N/A";const u=new Date,s=new Date($.value.timestamp),x=u-s;return w(x/(1e3*60*60))}),D=c(()=>{if(r.value.length<2)return"N/A";const u=new Date(r.value[r.value.length-1].timestamp),x=new Date(r.value[0].timestamp)-u;return w(x/(1e3*60*60))}),T=c(()=>{if(r.value.length<2)return"N/A";const s=r.value.reduce((x,i,B)=>{if(B===r.value.length-1)return x;const V=new Date(i.timestamp),S=new Date(r.value[B+1].timestamp);return x+(V-S)},0)/(1e3*60*60)/(r.value.length-1);return w(s)}),O=()=>{var u;k.disabled||(g.value={newStatus:"",userId:((u=k.currentUser)==null?void 0:u.id)||null,comment:""},y.value=!0)},Q=()=>{if(!F.value)return;const u=k.userOptions.find(x=>x.value===g.value.userId),s={id:Date.now()+Math.random(),status:g.value.newStatus,previousStatus:k.currentStatus,user:(u==null?void 0:u.data)||k.currentUser,timestamp:new Date().toISOString(),comment:g.value.comment,metadata:{reason:"Manual status change",duration:N.value}};r.value.unshift(s),ee(),G("status-change",{newStatus:g.value.newStatus,previousStatus:k.currentStatus,comment:g.value.comment,user:(u==null?void 0:u.data)||k.currentUser}),E()},E=()=>{y.value=!1,g.value={newStatus:"",userId:null,comment:""}},J=()=>{M.value=!M.value},P=u=>{var s;return((s=K[u])==null?void 0:s.label)||u},j=u=>u?new Date(u).toLocaleString("en-US",{month:"short",day:"numeric",year:"numeric",hour:"2-digit",minute:"2-digit"}):"",w=u=>{if(!u||isNaN(u))return"0h";if(u<1)return`${Math.round(u*60)}m`;if(u<24)return`${Math.round(u*10)/10}h`;{const s=Math.floor(u/24),x=Math.round(u%24*10)/10;return`${s}d ${x}h`}},X=u=>{var s;return((s=K[u])==null?void 0:s.badge)||"secondary"},Y=u=>{const s=K[u];if(!s)return"bg-gray-100 text-gray-600";const x={primary:"bg-blue-100 text-blue-600",success:"bg-green-100 text-green-600",warning:"bg-yellow-100 text-yellow-600",danger:"bg-red-100 text-red-600",secondary:"bg-gray-100 text-gray-600"};return x[s.badge]||x.secondary},Z=u=>u.includes("CREATE")?"bg-green-500":u.includes("UPDATE")?"bg-blue-500":u.includes("DELETE")?"bg-red-500":"bg-gray-500",ee=()=>{G("update:modelValue",r.value)};return oe(()=>k.modelValue,u=>{r.value=[...u]},{deep:!0}),(u,s)=>{var x;return l(),n("div",Bt,[e("div",zt,[s[5]||(s[5]=e("h3",{class:"text-lg font-medium text-gray-900"},"Status History & Audit Trail",-1)),e("div",It,[b(v(C),{variant:"outline",size:"sm",onClick:O,disabled:f.disabled},{default:_(()=>s[3]||(s[3]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),h(" Add Status Update ",-1)])),_:1,__:[3]},8,["disabled"]),b(v(C),{variant:"ghost",size:"sm",onClick:J},{default:_(()=>[s[4]||(s[4]=e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1)),h(" "+d(M.value?"Hide":"Show")+" Audit Trail ",1)]),_:1,__:[4]})])]),e("div",At,[e("div",Lt,[e("div",Ut,[s[7]||(s[7]=e("div",{class:"flex-shrink-0 w-10 h-10 bg-blue-100 rounded-full flex items-center justify-center mr-3"},[e("svg",{class:"w-5 h-5 text-blue-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})])],-1)),e("div",null,[s[6]||(s[6]=e("h4",{class:"text-sm font-medium text-blue-900"},"Current Status",-1)),e("p",Ht,d(P(f.currentStatus)),1)])]),e("div",Ft,[s[8]||(s[8]=e("p",{class:"text-sm text-blue-700"},"Last Updated",-1)),e("p",Nt,d($.value?j($.value.timestamp):"Never"),1)])])]),y.value?(l(),n("div",Dt,[s[11]||(s[11]=e("h4",{class:"text-sm font-medium text-gray-900 mb-3"},"Add Status Update",-1)),e("div",Tt,[b(v(te),{modelValue:g.value.newStatus,"onUpdate:modelValue":s[0]||(s[0]=i=>g.value.newStatus=i),label:"New Status",options:H.value,required:""},null,8,["modelValue","options"]),b(v(te),{modelValue:g.value.userId,"onUpdate:modelValue":s[1]||(s[1]=i=>g.value.userId=i),label:"Changed By",options:f.userOptions,value:(x=f.currentUser)==null?void 0:x.id,required:""},null,8,["modelValue","options","value"])]),b(v(z),{modelValue:g.value.comment,"onUpdate:modelValue":s[2]||(s[2]=i=>g.value.comment=i),label:"Comment",placeholder:"Add a comment about this status change...",type:"textarea",rows:"3",class:"mb-3"},null,8,["modelValue"]),e("div",Ot,[b(v(C),{onClick:Q,disabled:!F.value},{default:_(()=>s[9]||(s[9]=[h(" Save Status Change ",-1)])),_:1,__:[9]},8,["disabled"]),b(v(C),{variant:"secondary",onClick:E},{default:_(()=>s[10]||(s[10]=[h(" Cancel ",-1)])),_:1,__:[10]})])])):m("",!0),e("div",Et,[s[16]||(s[16]=e("h4",{class:"text-sm font-medium text-gray-900"},"Status Timeline",-1)),r.value.length>0?(l(),n("div",Pt,[s[14]||(s[14]=e("div",{class:"absolute left-6 top-8 bottom-0 w-0.5 bg-gray-200"},null,-1)),(l(!0),n(L,null,U(r.value,(i,B)=>{var V;return l(),n("div",{key:i.id||B,class:"relative flex items-start space-x-4 pb-6"},[e("div",{class:q(["flex-shrink-0 w-12 h-12 rounded-full flex items-center justify-center relative z-10",Y(i.status)])},[(l(),n("svg",Rt,[i.status==="COMPLETE"?(l(),n("path",qt)):i.status==="IN_PROGRESS"?(l(),n("path",Gt)):i.status==="ON_HOLD"?(l(),n("path",Qt)):(l(),n("path",Jt))]))],2),e("div",Kt,[e("div",Wt,[e("div",Xt,[e("div",Yt,[b(v(ne),{variant:X(i.status)},{default:_(()=>[h(d(P(i.status)),1)]),_:2},1032,["variant"]),i.previousStatus?(l(),n("span",Zt," from "+d(P(i.previousStatus)),1)):m("",!0)]),e("time",es,d(j(i.timestamp)),1)]),e("div",ts,[i.user?(l(),A(v(ae),{key:0,user:i.user,size:"sm"},null,8,["user"])):m("",!0),e("div",null,[e("p",ss,d(i.user?`${i.user.firstName} ${i.user.lastName}`:"System"),1),e("p",os,d(((V=i.user)==null?void 0:V.jobTitle)||"Automated change"),1)])]),i.comment?(l(),n("p",ls,d(i.comment),1)):m("",!0),i.metadata?(l(),n("div",as,[e("div",ns,[i.metadata.duration?(l(),n("div",rs,[s[12]||(s[12]=e("span",{class:"font-medium"},"Duration in status:",-1)),h(" "+d(w(i.metadata.duration)),1)])):m("",!0),i.metadata.reason?(l(),n("div",is,[s[13]||(s[13]=e("span",{class:"font-medium"},"Reason:",-1)),h(" "+d(i.metadata.reason),1)])):m("",!0)])])):m("",!0)])])])}),128))])):(l(),n("div",ds,s[15]||(s[15]=[e("svg",{class:"w-12 h-12 mx-auto mb-4 text-gray-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})],-1),e("p",{class:"text-sm"},"No status history available",-1),e("p",{class:"text-xs text-gray-400 mt-1"},"Status changes will appear here",-1)])))]),M.value?(l(),n("div",us,[s[17]||(s[17]=e("h4",{class:"text-sm font-medium text-gray-900 mb-4 flex items-center"},[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})]),h(" Complete Audit Trail ")],-1)),f.auditEntries.length>0?(l(),n("div",ms,[(l(!0),n(L,null,U(f.auditEntries,(i,B)=>{var V,S;return l(),n("div",{key:i.id||B,class:"flex items-center justify-between p-3 bg-gray-50 rounded text-sm"},[e("div",cs,[e("span",{class:q(["w-2 h-2 rounded-full",Z(i.action)])},null,2),e("span",vs,d(i.action),1),e("span",gs,d(i.field||i.description),1),i.oldValue?(l(),n("span",xs,d(i.oldValue)+" → "+d(i.newValue),1)):m("",!0)]),e("div",ps,[e("span",null,d((V=i.user)==null?void 0:V.firstName)+" "+d((S=i.user)==null?void 0:S.lastName),1),e("span",null,d(j(i.timestamp)),1)])])}),128))])):(l(),n("div",hs," No audit entries available "))])):m("",!0),r.value.length>0?(l(),n("div",fs,[s[22]||(s[22]=e("h4",{class:"text-sm font-medium text-gray-900 mb-3"},"Statistics",-1)),e("div",ks,[e("div",null,[s[18]||(s[18]=e("span",{class:"text-gray-600"},"Total Changes:",-1)),e("span",bs,d(r.value.length),1)]),e("div",null,[s[19]||(s[19]=e("span",{class:"text-gray-600"},"Time in Current:",-1)),e("span",ys,d(N.value),1)]),e("div",null,[s[20]||(s[20]=e("span",{class:"text-gray-600"},"Total Duration:",-1)),e("span",ws,d(D.value),1)]),e("div",null,[s[21]||(s[21]=e("span",{class:"text-gray-600"},"Avg per Status:",-1)),e("span",_s,d(T.value),1)])])])):m("",!0)])}}},zs=se(Cs,[["__scopeId","data-v-3389e2f3"]]);export{Bs as C,zs as S}; diff --git a/frontend/dist/assets/StockAlertsView-COqyScqS.js b/frontend/dist/assets/StockAlertsView-AbF3nGDU.js similarity index 97% rename from frontend/dist/assets/StockAlertsView-COqyScqS.js rename to frontend/dist/assets/StockAlertsView-AbF3nGDU.js index 96b37f48..bd59e536 100644 --- a/frontend/dist/assets/StockAlertsView-COqyScqS.js +++ b/frontend/dist/assets/StockAlertsView-AbF3nGDU.js @@ -1 +1 @@ -import{r as k,c as p,o as at,m as ot,i as oe,w as n,s as rt,v as st,g as V,b as r,d,e as s,j as N,F as x,h as Y,t as w,k as b,n as re,a as P,ae as se,aU as ne,l as nt}from"./index-BUdRbiwj.js";import{u as it}from"./parts-B3aeW8xP.js";import{A as ut,a as y,b as S}from"./inventory-C_cwbKdQ.js";import{u as ct}from"./useFormAutoSave-Jaawgo91.js";import{l as dt}from"./lodash-RqMXHFU9.js";import{F as vt,a as mt}from"./FPPageHeader-CTG2L28r.js";import{F as J}from"./FPInput-CzR_dWoe.js";import{F as H}from"./FPSelect-C7p47Ma2.js";import{F as ft}from"./FPStats-BGfZcDZc.js";import{F as yt}from"./FPTable-CU8C_NYc.js";import{F as ie}from"./FPModal-DWGF1LV8.js";import{F as be}from"./FPBadge-BKY5dPnL.js";import{F as pt}from"./FPTabs-R71V25QN.js";import{_ as kt}from"./FormRestoreNotification-DYBlXhOP.js";import"./_commonjsHelpers-NT8qMgGI.js";import"./FPCard-qHzcEQAE.js";function gt(){const m=it(),u=k(!1),i=k(null),h=p(()=>m.stockAlerts),C=p(()=>m.stockAdjustments),O=p(()=>m.reorderPointConfigs),f=p(()=>h.value.filter(l=>l.severity==="critical")),R=p(()=>h.value.filter(l=>!l.resolved)),F=p(()=>C.value.reduce((l,o)=>{const v=(o.quantityChange||0)*(o.unitCost||0);return l+v},0)),T=p(()=>m.parts.filter(l=>(l.currentStock||0)<(l.minimumStock||0))),L=p(()=>m.parts.filter(l=>(l.currentStock||0)<=(l.reorderPoint||0)&&l.reorderPoint>0)),M=p(()=>{const l=m.parts.length;if(l===0)return 100;const o=m.parts.filter(v=>(v.currentStock||0)>=(v.minimumStock||0)).length;return Math.round(o/l*100)}),U=p(()=>{const l=h.value,o={total:l.length,bySeverity:{critical:0,high:0,medium:0,low:0},byType:{}};return l.forEach(v=>{o.bySeverity[v.severity]!==void 0&&o.bySeverity[v.severity]++;const _=v.alertType;o.byType[_]=(o.byType[_]||0)+1}),o});return{isLoading:u,error:i,stockAlerts:h,stockAdjustments:C,reorderPointConfigs:O,criticalAlerts:f,unresolvedAlerts:R,totalAdjustmentsValue:F,lowStockParts:T,partsNeedingReorder:L,inventoryHealthScore:M,alertStatistics:U,loadStockAlerts:async(l={})=>{u.value=!0,i.value=null;try{await m.fetchStockAlerts(l)}catch(o){throw i.value=o.message,o}finally{u.value=!1}},createStockAlert:async l=>{u.value=!0,i.value=null;try{return await m.createStockAlert(l)}catch(o){throw i.value=o.message,o}finally{u.value=!1}},acknowledgeAlert:async(l,o)=>{u.value=!0,i.value=null;try{await m.acknowledgeAlert(l,o)}catch(v){throw i.value=v.message,v}finally{u.value=!1}},resolveAlert:async(l,o)=>{u.value=!0,i.value=null;try{await m.resolveAlert(l,o)}catch(v){throw i.value=v.message,v}finally{u.value=!1}},loadStockAdjustments:async(l={})=>{u.value=!0,i.value=null;try{await m.fetchStockAdjustments(l)}catch(o){throw i.value=o.message,o}finally{u.value=!1}},createStockAdjustment:async l=>{u.value=!0,i.value=null;try{return await m.createStockAdjustment(l)}catch(o){throw i.value=o.message,o}finally{u.value=!1}},getAdjustmentHistory:async l=>{u.value=!0,i.value=null;try{return await m.getAdjustmentHistory(l)}catch(o){throw i.value=o.message,o}finally{u.value=!1}},loadReorderPointConfigs:async(l={})=>{u.value=!0,i.value=null;try{await m.fetchReorderPointConfigs(l)}catch(o){throw i.value=o.message,o}finally{u.value=!1}},createReorderPointConfig:async l=>{u.value=!0,i.value=null;try{return await m.createReorderPointConfig(l)}catch(o){throw i.value=o.message,o}finally{u.value=!1}},updateReorderPointConfig:async(l,o)=>{u.value=!0,i.value=null;try{await m.updateReorderPointConfig(l,o)}catch(v){throw i.value=v.message,v}finally{u.value=!1}},getStockLevelsByLocation:async l=>{u.value=!0,i.value=null;try{return await m.getStockLevelsByLocation(l)}catch(o){throw i.value=o.message,o}finally{u.value=!1}},updateStockLevel:async(l,o,v)=>{u.value=!0,i.value=null;try{await m.updateStockLevel(l,o,v)}catch(_){throw i.value=_.message,_}finally{u.value=!1}},getInventoryAnalytics:async()=>{u.value=!0,i.value=null;try{return await m.getInventoryAnalytics()}catch(l){throw i.value=l.message,l}finally{u.value=!1}},calculateReorderPoint:(l,o,v)=>l*o+v,calculateEOQ:(l,o,v)=>{const _=Math.sqrt(2*l*o/v);return Math.ceil(_)},calculateSafetyStock:(l,o)=>{const _={.9:1.28,.95:1.64,.99:2.33}[o]||1.64;return Math.ceil(_*l)},getAlertSeverity:(l,o,v)=>l<=0?S.CRITICAL:l<=v?S.HIGH:l<=o?S.MEDIUM:S.LOW,validateStockAlert:l=>{const o=[];return l.partId||o.push("Part ID is required"),(!l.alertType||!Object.values(y).includes(l.alertType))&&o.push("Valid alert type is required"),(!l.severity||!Object.values(S).includes(l.severity))&&o.push("Valid severity is required"),(l.currentStock===void 0||l.currentStock===null)&&o.push("Current stock is required"),(l.minimumStock===void 0||l.minimumStock===null)&&o.push("Minimum stock is required"),{isValid:o.length===0,errors:o}},validateStockAdjustment:l=>{const o=[];return l.partId||o.push("Part ID is required"),l.location||o.push("Location is required"),(l.previousQuantity===void 0||l.previousQuantity===null)&&o.push("Previous quantity is required"),(l.adjustedQuantity===void 0||l.adjustedQuantity===null)&&o.push("Adjusted quantity is required"),(!l.reason||!Object.values(ut).includes(l.reason))&&o.push("Valid reason is required"),{isValid:o.length===0,errors:o}},refreshAllData:async()=>{u.value=!0,i.value=null;try{await Promise.all([m.fetchStockAlerts(),m.fetchStockAdjustments(),m.fetchReorderPointConfigs()])}catch(l){throw i.value=l.message,l}finally{u.value=!1}},clearError:()=>{i.value=null},exportStockData:()=>({alerts:h.value,adjustments:C.value,reorderConfigs:O.value,analytics:{totalAdjustmentsValue:F.value,alertStatistics:U.value,inventoryHealthScore:M.value,lowStockPartsCount:T.value.length,partsNeedingReorderCount:L.value.length},exportedAt:new Date().toISOString()})}}const ht={class:"p-6"},St={class:"mb-6 grid grid-cols-1 md:grid-cols-4 gap-4"},At={class:"bg-white shadow rounded-lg overflow-hidden"},wt={class:"flex items-center space-x-2"},bt={class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},Ct=["d"],xt={class:"font-medium text-gray-900"},Tt={class:"font-medium text-gray-900"},It={class:"text-sm text-gray-500"},_t={class:"text-sm"},Vt={class:"font-medium text-gray-900"},Ot={class:"text-gray-500"},Lt={class:"text-sm text-gray-900"},Mt={class:"text-sm text-gray-900"},Pt={class:"flex items-center space-x-2"},Rt={class:"space-y-6"},Ft={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},Et={key:0,class:"mt-1 text-sm text-red-600"},Ut={class:"flex items-center justify-between"},zt={class:"flex items-center space-x-4"},jt={key:0,class:"flex items-center text-sm text-gray-500"},qt={key:0,class:"w-4 h-4 mr-2 text-amber-500 animate-pulse",fill:"currentColor",viewBox:"0 0 20 20"},Nt={key:1,class:"w-4 h-4 mr-2 text-green-500",fill:"currentColor",viewBox:"0 0 20 20"},Ht={key:2},Bt={key:3},Dt={class:"flex space-x-3"},Kt={class:"space-y-4"},Wt={class:"text-gray-600"},Gt={class:"text-gray-900"},Qt={class:"flex justify-end space-x-3"},$t={class:"space-y-4"},Xt={class:"text-gray-600"},Yt={class:"text-gray-900"},Jt={key:0,class:"mt-1 text-sm text-red-600"},Zt={class:"flex justify-end space-x-3"},pl={__name:"StockAlertsView",setup(m){const u=st(),i=rt(),h=gt(),{notify:C}=nt(),O=k("all"),f=k({search:"",alertType:"",location:"",status:""}),R=k(!1),F=k("create"),T=k(null),L=k(!1),M=k(!1),U=k(!1),K=k(!1),W=k(!1),c=k({partId:"",alertType:"",severity:"",location:"",currentStock:"",minimumStock:"",notes:""}),g=k({}),B=k({notes:""}),I=k({resolution:"",error:""}),{hasUnsavedChanges:G,lastSaveTime:D,restoreFormData:ue,clearSavedData:Z,hasSavedData:ee,getSavedDataInfo:ce,markUserInteraction:de,finishInitialization:ve}=ct(c,{storageKey:"atlas_stock_alert_form_data",saveInterval:3e3,excludeFields:[]}),z=k(!1),te=k(null),me=p(()=>h.isLoading.value),Q=p(()=>h.stockAlerts.value);p(()=>h.criticalAlerts.value);const fe=p(()=>h.unresolvedAlerts.value),j=p(()=>h.alertStatistics.value),q=p(()=>F.value==="edit"),$=p(()=>{let t=[...Q.value];if(O.value!=="all"&&(t=t.filter(e=>e.severity===O.value)),f.value.search){const e=f.value.search.toLowerCase();t=t.filter(a=>{var A,Ae,we;return((A=a.partName)==null?void 0:A.toLowerCase().includes(e))||((Ae=a.partNumber)==null?void 0:Ae.toLowerCase().includes(e))||((we=a.location)==null?void 0:we.toLowerCase().includes(e))})}return f.value.alertType&&(t=t.filter(e=>e.alertType===f.value.alertType)),f.value.location&&(t=t.filter(e=>e.location===f.value.location)),f.value.status&&(f.value.status==="unresolved"?t=t.filter(e=>!e.resolved):f.value.status==="resolved"?t=t.filter(e=>e.resolved):f.value.status==="acknowledged"?t=t.filter(e=>e.acknowledged):f.value.status==="unacknowledged"&&(t=t.filter(e=>!e.acknowledged))),t}),l=p(()=>{var e,a;const t=j.value;return[{label:"Total Alerts",value:t.total||0,icon:"bell",color:"blue"},{label:"Critical",value:((e=t.bySeverity)==null?void 0:e.critical)||0,icon:"exclamation-triangle",color:"red"},{label:"High Priority",value:((a=t.bySeverity)==null?void 0:a.high)||0,icon:"exclamation",color:"orange"},{label:"Unresolved",value:fe.value.length,icon:"clock",color:"yellow"}]}),o=p(()=>{var t,e,a,A;return[{key:"all",label:"All Alerts",count:Q.value.length},{key:"critical",label:"Critical",count:((t=j.value.bySeverity)==null?void 0:t.critical)||0},{key:"high",label:"High",count:((e=j.value.bySeverity)==null?void 0:e.high)||0},{key:"medium",label:"Medium",count:((a=j.value.bySeverity)==null?void 0:a.medium)||0},{key:"low",label:"Low",count:((A=j.value.bySeverity)==null?void 0:A.low)||0}]}),v=p(()=>({currentPage:1,totalPages:Math.ceil($.value.length/10),totalItems:$.value.length,pageSize:10})),_=p(()=>D.value?new Date(D.value).toLocaleTimeString():""),Ce=[{key:"alertType",label:"Alert Type",sortable:!0},{key:"partInfo",label:"Part",sortable:!1},{key:"severity",label:"Severity",sortable:!0},{key:"stockInfo",label:"Stock Levels",sortable:!1},{key:"location",label:"Location",sortable:!0},{key:"status",label:"Status",sortable:!1},{key:"createdAt",label:"Created",sortable:!0},{key:"actions",label:"Actions",sortable:!1}],xe=[{label:"All Types",value:""},{label:"Low Stock",value:y.LOW_STOCK},{label:"Out of Stock",value:y.OUT_OF_STOCK},{label:"Expiring",value:y.EXPIRING},{label:"Overstock",value:y.OVERSTOCK}],Te=[{label:"Low Stock",value:y.LOW_STOCK},{label:"Out of Stock",value:y.OUT_OF_STOCK},{label:"Expiring",value:y.EXPIRING},{label:"Overstock",value:y.OVERSTOCK}],Ie=[{label:"Critical",value:S.CRITICAL},{label:"High",value:S.HIGH},{label:"Medium",value:S.MEDIUM},{label:"Low",value:S.LOW}],_e=[{label:"All Status",value:""},{label:"Unresolved",value:"unresolved"},{label:"Resolved",value:"resolved"},{label:"Acknowledged",value:"acknowledged"},{label:"Unacknowledged",value:"unacknowledged"}],Ve=k([{label:"All Locations",value:""},{label:"Warehouse A",value:"warehouse_a"},{label:"Warehouse B",value:"warehouse_b"},{label:"Main Storage",value:"main_storage"}]),Oe=k([]),Le=t=>({[y.LOW_STOCK]:"Low Stock",[y.OUT_OF_STOCK]:"Out of Stock",[y.EXPIRING]:"Expiring",[y.OVERSTOCK]:"Overstock"})[t]||t,Me=t=>({[S.CRITICAL]:"Critical",[S.HIGH]:"High",[S.MEDIUM]:"Medium",[S.LOW]:"Low"})[t]||t,Pe=t=>t.resolved?"Resolved":t.acknowledged?"Acknowledged":"New",ye=t=>t!=null?t.toString():"N/A",Re=t=>t||"N/A",Fe=t=>t?new Date(t).toLocaleDateString():"N/A",Ee=t=>({[S.CRITICAL]:"danger",[S.HIGH]:"warning",[S.MEDIUM]:"info",[S.LOW]:"secondary"})[t]||"secondary",Ue=t=>t.resolved?"success":t.acknowledged?"info":"warning",ze=t=>({[y.LOW_STOCK]:"bg-orange-100 text-orange-600",[y.OUT_OF_STOCK]:"bg-red-100 text-red-600",[y.EXPIRING]:"bg-yellow-100 text-yellow-600",[y.OVERSTOCK]:"bg-blue-100 text-blue-600"})[t]||"bg-gray-100 text-gray-600",je=t=>({[y.LOW_STOCK]:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z",[y.OUT_OF_STOCK]:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z",[y.EXPIRING]:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z",[y.OVERSTOCK]:"M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4"})[t]||"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z",qe=dt.debounce(t=>{f.value.search=t},300),le=()=>{},Ne=t=>{O.value=t},He=t=>{console.log("Sort:",t)},Be=t=>{console.log("Page:",t)},De=t=>{ke(t)},X=async()=>{try{await h.loadStockAlerts(),C("Stock alerts refreshed successfully","success")}catch{C("Failed to refresh stock alerts","error")}},pe=()=>{T.value=null,F.value="create",Ke(),ee()||he(),R.value=!0},Ke=()=>{F.value==="create"&&ee()&&(te.value=ce(),z.value=!0)},ke=t=>{console.log("View alert:",t)},ge=t=>{T.value=t,F.value="edit",Je(t),ve(),R.value=!0},We=t=>{T.value=t,B.value.notes="",L.value=!0},Ge=t=>{T.value=t,I.value.resolution="",I.value.error="",M.value=!0},ae=()=>{R.value=!1,T.value=null,z.value=!1},Qe=async()=>{U.value=!0;try{if(!Ze())return;const t=et();q.value?console.log("Update alert:",t):await h.createStockAlert(t),Z(),ae(),await X(),C(q.value?"Alert updated successfully":"Alert created successfully","success")}catch{C(q.value?"Failed to update alert":"Failed to create alert","error")}finally{U.value=!1}},$e=async()=>{K.value=!0;try{await h.acknowledgeAlert(T.value.id,{acknowledgedBy:"current_user",notes:B.value.notes}),L.value=!1,await X(),C("Alert acknowledged successfully","success")}catch{C("Failed to acknowledge alert","error")}finally{K.value=!1}},Xe=async()=>{var t;if(!((t=I.value.resolution)!=null&&t.trim())){I.value.error="Resolution is required";return}I.value.error="",W.value=!0;try{await h.resolveAlert(T.value.id,{resolvedBy:"current_user",resolution:I.value.resolution}),M.value=!1,await X(),C("Alert resolved successfully","success")}catch{C("Failed to resolve alert","error")}finally{W.value=!1}},Ye=()=>{const t=h.exportStockData();console.log("Export alerts:",t),C("Alerts exported successfully","success")},he=()=>{c.value={partId:"",alertType:"",severity:"",location:"",currentStock:"",minimumStock:"",notes:""},g.value={}},Je=t=>{c.value={partId:t.partId,alertType:t.alertType,severity:t.severity,location:t.location||"",currentStock:t.currentStock,minimumStock:t.minimumStock,notes:t.notes||""},g.value={}},Ze=()=>(g.value={},c.value.partId||(g.value.partId="Part is required"),c.value.alertType||(g.value.alertType="Alert type is required"),c.value.severity||(g.value.severity="Severity is required"),(c.value.currentStock===""||c.value.currentStock===null)&&(g.value.currentStock="Current stock is required"),(c.value.minimumStock===""||c.value.minimumStock===null)&&(g.value.minimumStock="Minimum stock is required"),Object.keys(g.value).length===0),et=()=>({partId:parseInt(c.value.partId),alertType:c.value.alertType,severity:c.value.severity,location:c.value.location,currentStock:parseInt(c.value.currentStock),minimumStock:parseInt(c.value.minimumStock),notes:c.value.notes}),tt=()=>{ue(),z.value=!1},lt=()=>{Z(),z.value=!1,he()},E=()=>{de()},Se=()=>{const t=i.query.edit,e=i.query.create==="true";t?setTimeout(()=>{const a=Q.value.find(A=>A.id===parseInt(t));a&&ge(a),u.replace({path:"/inventory/stock-alerts"})},500):e&&setTimeout(()=>{pe(),u.replace({path:"/inventory/stock-alerts"})},500)};return at(async()=>{await h.loadStockAlerts(),Se()}),ot(()=>i.query,Se),(t,e)=>(V(),oe(vt,null,{header:n(()=>[d(mt,{title:"Stock Alerts",description:"Monitor and manage inventory stock alerts and notifications",breadcrumbs:[{text:"Inventory",to:"/inventory"},{text:"Stock Alerts",to:null}]},{actions:n(()=>[d(s(x),{variant:"outline",size:"sm",onClick:Ye},{default:n(()=>e[19]||(e[19]=[r("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1),b(" Export ",-1)])),_:1,__:[19]}),d(s(x),{variant:"outline",size:"sm",onClick:X},{default:n(()=>e[20]||(e[20]=[r("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),b(" Refresh ",-1)])),_:1,__:[20]}),d(s(x),{variant:"primary",size:"sm",onClick:pe},{default:n(()=>e[21]||(e[21]=[r("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),b(" Create Alert ",-1)])),_:1,__:[21]})]),stats:n(()=>[d(s(ft),{stats:l.value},null,8,["stats"])]),tabs:n(()=>[d(s(pt),{modelValue:O.value,"onUpdate:modelValue":e[0]||(e[0]=a=>O.value=a),tabs:o.value,onTabChange:Ne},null,8,["modelValue","tabs"])]),_:1})]),default:n(()=>[r("div",ht,[r("div",St,[d(s(J),{modelValue:f.value.search,"onUpdate:modelValue":e[1]||(e[1]=a=>f.value.search=a),placeholder:"Search alerts...",onInput:s(qe)},{prepend:n(()=>e[22]||(e[22]=[r("svg",{class:"w-4 h-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1)])),_:1},8,["modelValue","onInput"]),d(s(H),{modelValue:f.value.alertType,"onUpdate:modelValue":[e[2]||(e[2]=a=>f.value.alertType=a),le],placeholder:"Filter by Alert Type",options:xe},null,8,["modelValue"]),d(s(H),{modelValue:f.value.location,"onUpdate:modelValue":[e[3]||(e[3]=a=>f.value.location=a),le],placeholder:"Filter by Location",options:Ve.value},null,8,["modelValue","options"]),d(s(H),{modelValue:f.value.status,"onUpdate:modelValue":[e[4]||(e[4]=a=>f.value.status=a),le],placeholder:"Filter by Status",options:_e},null,8,["modelValue"])]),r("div",At,[d(s(yt),{columns:Ce,data:$.value,loading:me.value,pagination:v.value,"empty-message":"No stock alerts found",onSortChange:He,onPageChange:Be,onRowClick:De},{"column-alertType":n(({row:a})=>[r("div",wt,[r("div",{class:re(["w-8 h-8 rounded-lg flex items-center justify-center",ze(a.alertType)])},[(V(),P("svg",bt,[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:je(a.alertType)},null,8,Ct)]))],2),r("span",xt,w(Le(a.alertType)),1)])]),"column-partInfo":n(({row:a})=>[r("div",null,[r("h4",Tt,w(a.partName||`Part #${a.partId}`),1),r("p",It,w(a.partNumber||"N/A"),1)])]),"column-severity":n(({row:a})=>[d(s(be),{variant:Ee(a.severity),size:"sm"},{default:n(()=>[b(w(Me(a.severity)),1)]),_:2},1032,["variant"])]),"column-stockInfo":n(({row:a})=>[r("div",_t,[r("div",Vt," Current: "+w(ye(a.currentStock)),1),r("div",Ot," Min: "+w(ye(a.minimumStock)),1)])]),"column-location":n(({row:a})=>[r("div",Lt,w(Re(a.location)),1)]),"column-status":n(({row:a})=>[d(s(be),{variant:Ue(a),size:"sm"},{default:n(()=>[b(w(Pe(a)),1)]),_:2},1032,["variant"])]),"column-createdAt":n(({row:a})=>[r("div",Mt,w(Fe(a.createdAt)),1)]),"column-actions":n(({row:a})=>[r("div",Pt,[d(s(x),{variant:"ghost",size:"xs",onClick:Y(A=>ke(a),["stop"]),title:"View Details"},{default:n(()=>e[23]||(e[23]=[r("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"}),r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"})],-1)])),_:2,__:[23]},1032,["onClick"]),a.acknowledged?N("",!0):(V(),oe(s(x),{key:0,variant:"ghost",size:"xs",onClick:Y(A=>We(a),["stop"]),title:"Acknowledge Alert",class:"text-blue-600 hover:text-blue-700"},{default:n(()=>e[24]||(e[24]=[r("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)])),_:2,__:[24]},1032,["onClick"])),a.resolved?N("",!0):(V(),oe(s(x),{key:1,variant:"ghost",size:"xs",onClick:Y(A=>Ge(a),["stop"]),title:"Resolve Alert",class:"text-green-600 hover:text-green-700"},{default:n(()=>e[25]||(e[25]=[r("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M5 13l4 4L19 7"})],-1)])),_:2,__:[25]},1032,["onClick"])),d(s(x),{variant:"ghost",size:"xs",onClick:Y(A=>ge(a),["stop"]),title:"Edit Alert"},{default:n(()=>e[26]||(e[26]=[r("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1)])),_:2,__:[26]},1032,["onClick"])])]),_:1},8,["data","loading","pagination"])]),d(s(ie),{modelValue:R.value,"onUpdate:modelValue":e[12]||(e[12]=a=>R.value=a),title:q.value?"Edit Stock Alert":"Create Stock Alert",size:"lg",onCancel:ae},{footer:n(()=>[r("div",Ut,[r("div",zt,[s(G)||s(D)?(V(),P("div",jt,[s(G)?(V(),P("svg",qt,e[28]||(e[28]=[r("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z","clip-rule":"evenodd"},null,-1)]))):(V(),P("svg",Nt,e[29]||(e[29]=[r("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z","clip-rule":"evenodd"},null,-1)]))),s(G)?(V(),P("span",Ht,"Auto-saving...")):s(D)?(V(),P("span",Bt,"Last saved "+w(_.value),1)):N("",!0)])):N("",!0)]),r("div",Dt,[d(s(x),{variant:"secondary",onClick:ae},{default:n(()=>e[30]||(e[30]=[b(" Cancel ",-1)])),_:1,__:[30]}),d(s(x),{variant:"primary",loading:U.value,onClick:Qe},{default:n(()=>[b(w(q.value?"Update Alert":"Create Alert"),1)]),_:1},8,["loading"])])])]),default:n(()=>[d(s(kt),{visible:z.value,"saved-data-info":te.value,onRestore:tt,onDismiss:lt},null,8,["visible","saved-data-info"]),r("div",Rt,[r("div",Ft,[d(s(H),{modelValue:c.value.partId,"onUpdate:modelValue":e[5]||(e[5]=a=>c.value.partId=a),label:"Part",placeholder:"Select part",options:Oe.value,required:"",error:g.value.partId,onChange:E},null,8,["modelValue","options","error"]),d(s(H),{modelValue:c.value.alertType,"onUpdate:modelValue":e[6]||(e[6]=a=>c.value.alertType=a),label:"Alert Type",placeholder:"Select alert type",options:Te,required:"",error:g.value.alertType,onChange:E},null,8,["modelValue","error"]),d(s(H),{modelValue:c.value.severity,"onUpdate:modelValue":e[7]||(e[7]=a=>c.value.severity=a),label:"Severity",placeholder:"Select severity",options:Ie,required:"",error:g.value.severity,onChange:E},null,8,["modelValue","error"]),d(s(J),{modelValue:c.value.location,"onUpdate:modelValue":e[8]||(e[8]=a=>c.value.location=a),label:"Location",placeholder:"Enter location",error:g.value.location,onInput:E},null,8,["modelValue","error"]),d(s(J),{modelValue:c.value.currentStock,"onUpdate:modelValue":e[9]||(e[9]=a=>c.value.currentStock=a),label:"Current Stock",placeholder:"0",type:"number",required:"",error:g.value.currentStock,onInput:E},null,8,["modelValue","error"]),d(s(J),{modelValue:c.value.minimumStock,"onUpdate:modelValue":e[10]||(e[10]=a=>c.value.minimumStock=a),label:"Minimum Stock",placeholder:"0",type:"number",required:"",error:g.value.minimumStock,onInput:E},null,8,["modelValue","error"])]),r("div",null,[e[27]||(e[27]=r("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Notes",-1)),se(r("textarea",{"onUpdate:modelValue":e[11]||(e[11]=a=>c.value.notes=a),class:re(["w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",{"border-red-300":g.value.notes}]),placeholder:"Additional notes or description...",rows:"3",onInput:E},null,34),[[ne,c.value.notes]]),g.value.notes?(V(),P("p",Et,w(g.value.notes),1)):N("",!0)])])]),_:1},8,["modelValue","title"]),d(s(ie),{modelValue:L.value,"onUpdate:modelValue":e[15]||(e[15]=a=>L.value=a),title:"Acknowledge Stock Alert",size:"md"},{footer:n(()=>[r("div",Qt,[d(s(x),{variant:"secondary",onClick:e[14]||(e[14]=a=>L.value=!1)},{default:n(()=>e[34]||(e[34]=[b(" Cancel ",-1)])),_:1,__:[34]}),d(s(x),{variant:"primary",loading:K.value,onClick:$e},{default:n(()=>e[35]||(e[35]=[b(" Acknowledge Alert ",-1)])),_:1,__:[35]},8,["loading"])])]),default:n(()=>{var a;return[r("div",Kt,[r("p",Wt,[e[31]||(e[31]=b(" Acknowledging this alert for ",-1)),r("strong",Gt,"'"+w((a=T.value)==null?void 0:a.partName)+"'",1),e[32]||(e[32]=b(". ",-1))]),r("div",null,[e[33]||(e[33]=r("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Notes (Optional)",-1)),se(r("textarea",{"onUpdate:modelValue":e[13]||(e[13]=A=>B.value.notes=A),class:"w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",placeholder:"Add any notes about this acknowledgment...",rows:"3"},null,512),[[ne,B.value.notes]])])])]}),_:1},8,["modelValue"]),d(s(ie),{modelValue:M.value,"onUpdate:modelValue":e[18]||(e[18]=a=>M.value=a),title:"Resolve Stock Alert",size:"md"},{footer:n(()=>[r("div",Zt,[d(s(x),{variant:"secondary",onClick:e[17]||(e[17]=a=>M.value=!1)},{default:n(()=>e[39]||(e[39]=[b(" Cancel ",-1)])),_:1,__:[39]}),d(s(x),{variant:"primary",loading:W.value,onClick:Xe},{default:n(()=>e[40]||(e[40]=[b(" Resolve Alert ",-1)])),_:1,__:[40]},8,["loading"])])]),default:n(()=>{var a;return[r("div",$t,[r("p",Xt,[e[36]||(e[36]=b(" Resolving this alert for ",-1)),r("strong",Yt,"'"+w((a=T.value)==null?void 0:a.partName)+"'",1),e[37]||(e[37]=b(". ",-1))]),r("div",null,[e[38]||(e[38]=r("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Resolution (Required)",-1)),se(r("textarea",{"onUpdate:modelValue":e[16]||(e[16]=A=>I.value.resolution=A),class:re(["w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",{"border-red-300":I.value.error}]),placeholder:"Describe how this alert was resolved...",rows:"3",required:""},null,2),[[ne,I.value.resolution]]),I.value.error?(V(),P("p",Jt,w(I.value.error),1)):N("",!0)])])]}),_:1},8,["modelValue"])])]),_:1}))}};export{pl as default}; +import{r as k,c as p,o as at,m as ot,i as oe,w as n,s as rt,v as st,g as V,b as r,d,e as s,j as N,F as x,h as Y,t as w,k as b,n as re,a as P,ae as se,aV as ne,l as nt}from"./index-QAlcqU00.js";import{u as it}from"./parts-imZSnlsl.js";import{A as ut,a as y,b as S}from"./inventory-C_cwbKdQ.js";import{u as ct}from"./useFormAutoSave-BrW9Wl2Q.js";import{l as dt}from"./lodash-RqMXHFU9.js";import{F as vt,a as mt}from"./FPPageHeader-CFIwZZgQ.js";import{F as J}from"./FPInput-D5RURom0.js";import{F as H}from"./FPSelect-j7n_x8eB.js";import{F as ft}from"./FPStats-DOY0PQQF.js";import{F as yt}from"./FPTable-CWvngIYd.js";import{F as ie}from"./FPModal-DMoPysvU.js";import{F as be}from"./FPBadge-DvOitM1C.js";import{F as pt}from"./FPTabs-qq-Tmb7J.js";import{_ as kt}from"./FormRestoreNotification-2Wflg1mH.js";import"./_commonjsHelpers-NT8qMgGI.js";import"./FPCard-AB6NRXg5.js";function gt(){const m=it(),u=k(!1),i=k(null),h=p(()=>m.stockAlerts),C=p(()=>m.stockAdjustments),O=p(()=>m.reorderPointConfigs),f=p(()=>h.value.filter(l=>l.severity==="critical")),R=p(()=>h.value.filter(l=>!l.resolved)),F=p(()=>C.value.reduce((l,o)=>{const v=(o.quantityChange||0)*(o.unitCost||0);return l+v},0)),T=p(()=>m.parts.filter(l=>(l.currentStock||0)<(l.minimumStock||0))),L=p(()=>m.parts.filter(l=>(l.currentStock||0)<=(l.reorderPoint||0)&&l.reorderPoint>0)),M=p(()=>{const l=m.parts.length;if(l===0)return 100;const o=m.parts.filter(v=>(v.currentStock||0)>=(v.minimumStock||0)).length;return Math.round(o/l*100)}),U=p(()=>{const l=h.value,o={total:l.length,bySeverity:{critical:0,high:0,medium:0,low:0},byType:{}};return l.forEach(v=>{o.bySeverity[v.severity]!==void 0&&o.bySeverity[v.severity]++;const _=v.alertType;o.byType[_]=(o.byType[_]||0)+1}),o});return{isLoading:u,error:i,stockAlerts:h,stockAdjustments:C,reorderPointConfigs:O,criticalAlerts:f,unresolvedAlerts:R,totalAdjustmentsValue:F,lowStockParts:T,partsNeedingReorder:L,inventoryHealthScore:M,alertStatistics:U,loadStockAlerts:async(l={})=>{u.value=!0,i.value=null;try{await m.fetchStockAlerts(l)}catch(o){throw i.value=o.message,o}finally{u.value=!1}},createStockAlert:async l=>{u.value=!0,i.value=null;try{return await m.createStockAlert(l)}catch(o){throw i.value=o.message,o}finally{u.value=!1}},acknowledgeAlert:async(l,o)=>{u.value=!0,i.value=null;try{await m.acknowledgeAlert(l,o)}catch(v){throw i.value=v.message,v}finally{u.value=!1}},resolveAlert:async(l,o)=>{u.value=!0,i.value=null;try{await m.resolveAlert(l,o)}catch(v){throw i.value=v.message,v}finally{u.value=!1}},loadStockAdjustments:async(l={})=>{u.value=!0,i.value=null;try{await m.fetchStockAdjustments(l)}catch(o){throw i.value=o.message,o}finally{u.value=!1}},createStockAdjustment:async l=>{u.value=!0,i.value=null;try{return await m.createStockAdjustment(l)}catch(o){throw i.value=o.message,o}finally{u.value=!1}},getAdjustmentHistory:async l=>{u.value=!0,i.value=null;try{return await m.getAdjustmentHistory(l)}catch(o){throw i.value=o.message,o}finally{u.value=!1}},loadReorderPointConfigs:async(l={})=>{u.value=!0,i.value=null;try{await m.fetchReorderPointConfigs(l)}catch(o){throw i.value=o.message,o}finally{u.value=!1}},createReorderPointConfig:async l=>{u.value=!0,i.value=null;try{return await m.createReorderPointConfig(l)}catch(o){throw i.value=o.message,o}finally{u.value=!1}},updateReorderPointConfig:async(l,o)=>{u.value=!0,i.value=null;try{await m.updateReorderPointConfig(l,o)}catch(v){throw i.value=v.message,v}finally{u.value=!1}},getStockLevelsByLocation:async l=>{u.value=!0,i.value=null;try{return await m.getStockLevelsByLocation(l)}catch(o){throw i.value=o.message,o}finally{u.value=!1}},updateStockLevel:async(l,o,v)=>{u.value=!0,i.value=null;try{await m.updateStockLevel(l,o,v)}catch(_){throw i.value=_.message,_}finally{u.value=!1}},getInventoryAnalytics:async()=>{u.value=!0,i.value=null;try{return await m.getInventoryAnalytics()}catch(l){throw i.value=l.message,l}finally{u.value=!1}},calculateReorderPoint:(l,o,v)=>l*o+v,calculateEOQ:(l,o,v)=>{const _=Math.sqrt(2*l*o/v);return Math.ceil(_)},calculateSafetyStock:(l,o)=>{const _={.9:1.28,.95:1.64,.99:2.33}[o]||1.64;return Math.ceil(_*l)},getAlertSeverity:(l,o,v)=>l<=0?S.CRITICAL:l<=v?S.HIGH:l<=o?S.MEDIUM:S.LOW,validateStockAlert:l=>{const o=[];return l.partId||o.push("Part ID is required"),(!l.alertType||!Object.values(y).includes(l.alertType))&&o.push("Valid alert type is required"),(!l.severity||!Object.values(S).includes(l.severity))&&o.push("Valid severity is required"),(l.currentStock===void 0||l.currentStock===null)&&o.push("Current stock is required"),(l.minimumStock===void 0||l.minimumStock===null)&&o.push("Minimum stock is required"),{isValid:o.length===0,errors:o}},validateStockAdjustment:l=>{const o=[];return l.partId||o.push("Part ID is required"),l.location||o.push("Location is required"),(l.previousQuantity===void 0||l.previousQuantity===null)&&o.push("Previous quantity is required"),(l.adjustedQuantity===void 0||l.adjustedQuantity===null)&&o.push("Adjusted quantity is required"),(!l.reason||!Object.values(ut).includes(l.reason))&&o.push("Valid reason is required"),{isValid:o.length===0,errors:o}},refreshAllData:async()=>{u.value=!0,i.value=null;try{await Promise.all([m.fetchStockAlerts(),m.fetchStockAdjustments(),m.fetchReorderPointConfigs()])}catch(l){throw i.value=l.message,l}finally{u.value=!1}},clearError:()=>{i.value=null},exportStockData:()=>({alerts:h.value,adjustments:C.value,reorderConfigs:O.value,analytics:{totalAdjustmentsValue:F.value,alertStatistics:U.value,inventoryHealthScore:M.value,lowStockPartsCount:T.value.length,partsNeedingReorderCount:L.value.length},exportedAt:new Date().toISOString()})}}const ht={class:"p-6"},St={class:"mb-6 grid grid-cols-1 md:grid-cols-4 gap-4"},At={class:"bg-white shadow rounded-lg overflow-hidden"},wt={class:"flex items-center space-x-2"},bt={class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},Ct=["d"],xt={class:"font-medium text-gray-900"},Tt={class:"font-medium text-gray-900"},It={class:"text-sm text-gray-500"},_t={class:"text-sm"},Vt={class:"font-medium text-gray-900"},Ot={class:"text-gray-500"},Lt={class:"text-sm text-gray-900"},Mt={class:"text-sm text-gray-900"},Pt={class:"flex items-center space-x-2"},Rt={class:"space-y-6"},Ft={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},Et={key:0,class:"mt-1 text-sm text-red-600"},Ut={class:"flex items-center justify-between"},zt={class:"flex items-center space-x-4"},jt={key:0,class:"flex items-center text-sm text-gray-500"},qt={key:0,class:"w-4 h-4 mr-2 text-amber-500 animate-pulse",fill:"currentColor",viewBox:"0 0 20 20"},Nt={key:1,class:"w-4 h-4 mr-2 text-green-500",fill:"currentColor",viewBox:"0 0 20 20"},Ht={key:2},Bt={key:3},Dt={class:"flex space-x-3"},Kt={class:"space-y-4"},Wt={class:"text-gray-600"},Gt={class:"text-gray-900"},Qt={class:"flex justify-end space-x-3"},$t={class:"space-y-4"},Xt={class:"text-gray-600"},Yt={class:"text-gray-900"},Jt={key:0,class:"mt-1 text-sm text-red-600"},Zt={class:"flex justify-end space-x-3"},pl={__name:"StockAlertsView",setup(m){const u=st(),i=rt(),h=gt(),{notify:C}=nt(),O=k("all"),f=k({search:"",alertType:"",location:"",status:""}),R=k(!1),F=k("create"),T=k(null),L=k(!1),M=k(!1),U=k(!1),K=k(!1),W=k(!1),c=k({partId:"",alertType:"",severity:"",location:"",currentStock:"",minimumStock:"",notes:""}),g=k({}),B=k({notes:""}),I=k({resolution:"",error:""}),{hasUnsavedChanges:G,lastSaveTime:D,restoreFormData:ue,clearSavedData:Z,hasSavedData:ee,getSavedDataInfo:ce,markUserInteraction:de,finishInitialization:ve}=ct(c,{storageKey:"atlas_stock_alert_form_data",saveInterval:3e3,excludeFields:[]}),z=k(!1),te=k(null),me=p(()=>h.isLoading.value),Q=p(()=>h.stockAlerts.value);p(()=>h.criticalAlerts.value);const fe=p(()=>h.unresolvedAlerts.value),j=p(()=>h.alertStatistics.value),q=p(()=>F.value==="edit"),$=p(()=>{let t=[...Q.value];if(O.value!=="all"&&(t=t.filter(e=>e.severity===O.value)),f.value.search){const e=f.value.search.toLowerCase();t=t.filter(a=>{var A,Ae,we;return((A=a.partName)==null?void 0:A.toLowerCase().includes(e))||((Ae=a.partNumber)==null?void 0:Ae.toLowerCase().includes(e))||((we=a.location)==null?void 0:we.toLowerCase().includes(e))})}return f.value.alertType&&(t=t.filter(e=>e.alertType===f.value.alertType)),f.value.location&&(t=t.filter(e=>e.location===f.value.location)),f.value.status&&(f.value.status==="unresolved"?t=t.filter(e=>!e.resolved):f.value.status==="resolved"?t=t.filter(e=>e.resolved):f.value.status==="acknowledged"?t=t.filter(e=>e.acknowledged):f.value.status==="unacknowledged"&&(t=t.filter(e=>!e.acknowledged))),t}),l=p(()=>{var e,a;const t=j.value;return[{label:"Total Alerts",value:t.total||0,icon:"bell",color:"blue"},{label:"Critical",value:((e=t.bySeverity)==null?void 0:e.critical)||0,icon:"exclamation-triangle",color:"red"},{label:"High Priority",value:((a=t.bySeverity)==null?void 0:a.high)||0,icon:"exclamation",color:"orange"},{label:"Unresolved",value:fe.value.length,icon:"clock",color:"yellow"}]}),o=p(()=>{var t,e,a,A;return[{key:"all",label:"All Alerts",count:Q.value.length},{key:"critical",label:"Critical",count:((t=j.value.bySeverity)==null?void 0:t.critical)||0},{key:"high",label:"High",count:((e=j.value.bySeverity)==null?void 0:e.high)||0},{key:"medium",label:"Medium",count:((a=j.value.bySeverity)==null?void 0:a.medium)||0},{key:"low",label:"Low",count:((A=j.value.bySeverity)==null?void 0:A.low)||0}]}),v=p(()=>({currentPage:1,totalPages:Math.ceil($.value.length/10),totalItems:$.value.length,pageSize:10})),_=p(()=>D.value?new Date(D.value).toLocaleTimeString():""),Ce=[{key:"alertType",label:"Alert Type",sortable:!0},{key:"partInfo",label:"Part",sortable:!1},{key:"severity",label:"Severity",sortable:!0},{key:"stockInfo",label:"Stock Levels",sortable:!1},{key:"location",label:"Location",sortable:!0},{key:"status",label:"Status",sortable:!1},{key:"createdAt",label:"Created",sortable:!0},{key:"actions",label:"Actions",sortable:!1}],xe=[{label:"All Types",value:""},{label:"Low Stock",value:y.LOW_STOCK},{label:"Out of Stock",value:y.OUT_OF_STOCK},{label:"Expiring",value:y.EXPIRING},{label:"Overstock",value:y.OVERSTOCK}],Te=[{label:"Low Stock",value:y.LOW_STOCK},{label:"Out of Stock",value:y.OUT_OF_STOCK},{label:"Expiring",value:y.EXPIRING},{label:"Overstock",value:y.OVERSTOCK}],Ie=[{label:"Critical",value:S.CRITICAL},{label:"High",value:S.HIGH},{label:"Medium",value:S.MEDIUM},{label:"Low",value:S.LOW}],_e=[{label:"All Status",value:""},{label:"Unresolved",value:"unresolved"},{label:"Resolved",value:"resolved"},{label:"Acknowledged",value:"acknowledged"},{label:"Unacknowledged",value:"unacknowledged"}],Ve=k([{label:"All Locations",value:""},{label:"Warehouse A",value:"warehouse_a"},{label:"Warehouse B",value:"warehouse_b"},{label:"Main Storage",value:"main_storage"}]),Oe=k([]),Le=t=>({[y.LOW_STOCK]:"Low Stock",[y.OUT_OF_STOCK]:"Out of Stock",[y.EXPIRING]:"Expiring",[y.OVERSTOCK]:"Overstock"})[t]||t,Me=t=>({[S.CRITICAL]:"Critical",[S.HIGH]:"High",[S.MEDIUM]:"Medium",[S.LOW]:"Low"})[t]||t,Pe=t=>t.resolved?"Resolved":t.acknowledged?"Acknowledged":"New",ye=t=>t!=null?t.toString():"N/A",Re=t=>t||"N/A",Fe=t=>t?new Date(t).toLocaleDateString():"N/A",Ee=t=>({[S.CRITICAL]:"danger",[S.HIGH]:"warning",[S.MEDIUM]:"info",[S.LOW]:"secondary"})[t]||"secondary",Ue=t=>t.resolved?"success":t.acknowledged?"info":"warning",ze=t=>({[y.LOW_STOCK]:"bg-orange-100 text-orange-600",[y.OUT_OF_STOCK]:"bg-red-100 text-red-600",[y.EXPIRING]:"bg-yellow-100 text-yellow-600",[y.OVERSTOCK]:"bg-blue-100 text-blue-600"})[t]||"bg-gray-100 text-gray-600",je=t=>({[y.LOW_STOCK]:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z",[y.OUT_OF_STOCK]:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z",[y.EXPIRING]:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z",[y.OVERSTOCK]:"M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4"})[t]||"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z",qe=dt.debounce(t=>{f.value.search=t},300),le=()=>{},Ne=t=>{O.value=t},He=t=>{console.log("Sort:",t)},Be=t=>{console.log("Page:",t)},De=t=>{ke(t)},X=async()=>{try{await h.loadStockAlerts(),C("Stock alerts refreshed successfully","success")}catch{C("Failed to refresh stock alerts","error")}},pe=()=>{T.value=null,F.value="create",Ke(),ee()||he(),R.value=!0},Ke=()=>{F.value==="create"&&ee()&&(te.value=ce(),z.value=!0)},ke=t=>{console.log("View alert:",t)},ge=t=>{T.value=t,F.value="edit",Je(t),ve(),R.value=!0},We=t=>{T.value=t,B.value.notes="",L.value=!0},Ge=t=>{T.value=t,I.value.resolution="",I.value.error="",M.value=!0},ae=()=>{R.value=!1,T.value=null,z.value=!1},Qe=async()=>{U.value=!0;try{if(!Ze())return;const t=et();q.value?console.log("Update alert:",t):await h.createStockAlert(t),Z(),ae(),await X(),C(q.value?"Alert updated successfully":"Alert created successfully","success")}catch{C(q.value?"Failed to update alert":"Failed to create alert","error")}finally{U.value=!1}},$e=async()=>{K.value=!0;try{await h.acknowledgeAlert(T.value.id,{acknowledgedBy:"current_user",notes:B.value.notes}),L.value=!1,await X(),C("Alert acknowledged successfully","success")}catch{C("Failed to acknowledge alert","error")}finally{K.value=!1}},Xe=async()=>{var t;if(!((t=I.value.resolution)!=null&&t.trim())){I.value.error="Resolution is required";return}I.value.error="",W.value=!0;try{await h.resolveAlert(T.value.id,{resolvedBy:"current_user",resolution:I.value.resolution}),M.value=!1,await X(),C("Alert resolved successfully","success")}catch{C("Failed to resolve alert","error")}finally{W.value=!1}},Ye=()=>{const t=h.exportStockData();console.log("Export alerts:",t),C("Alerts exported successfully","success")},he=()=>{c.value={partId:"",alertType:"",severity:"",location:"",currentStock:"",minimumStock:"",notes:""},g.value={}},Je=t=>{c.value={partId:t.partId,alertType:t.alertType,severity:t.severity,location:t.location||"",currentStock:t.currentStock,minimumStock:t.minimumStock,notes:t.notes||""},g.value={}},Ze=()=>(g.value={},c.value.partId||(g.value.partId="Part is required"),c.value.alertType||(g.value.alertType="Alert type is required"),c.value.severity||(g.value.severity="Severity is required"),(c.value.currentStock===""||c.value.currentStock===null)&&(g.value.currentStock="Current stock is required"),(c.value.minimumStock===""||c.value.minimumStock===null)&&(g.value.minimumStock="Minimum stock is required"),Object.keys(g.value).length===0),et=()=>({partId:parseInt(c.value.partId),alertType:c.value.alertType,severity:c.value.severity,location:c.value.location,currentStock:parseInt(c.value.currentStock),minimumStock:parseInt(c.value.minimumStock),notes:c.value.notes}),tt=()=>{ue(),z.value=!1},lt=()=>{Z(),z.value=!1,he()},E=()=>{de()},Se=()=>{const t=i.query.edit,e=i.query.create==="true";t?setTimeout(()=>{const a=Q.value.find(A=>A.id===parseInt(t));a&&ge(a),u.replace({path:"/inventory/stock-alerts"})},500):e&&setTimeout(()=>{pe(),u.replace({path:"/inventory/stock-alerts"})},500)};return at(async()=>{await h.loadStockAlerts(),Se()}),ot(()=>i.query,Se),(t,e)=>(V(),oe(vt,null,{header:n(()=>[d(mt,{title:"Stock Alerts",description:"Monitor and manage inventory stock alerts and notifications",breadcrumbs:[{text:"Inventory",to:"/inventory"},{text:"Stock Alerts",to:null}]},{actions:n(()=>[d(s(x),{variant:"outline",size:"sm",onClick:Ye},{default:n(()=>e[19]||(e[19]=[r("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1),b(" Export ",-1)])),_:1,__:[19]}),d(s(x),{variant:"outline",size:"sm",onClick:X},{default:n(()=>e[20]||(e[20]=[r("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),b(" Refresh ",-1)])),_:1,__:[20]}),d(s(x),{variant:"primary",size:"sm",onClick:pe},{default:n(()=>e[21]||(e[21]=[r("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),b(" Create Alert ",-1)])),_:1,__:[21]})]),stats:n(()=>[d(s(ft),{stats:l.value},null,8,["stats"])]),tabs:n(()=>[d(s(pt),{modelValue:O.value,"onUpdate:modelValue":e[0]||(e[0]=a=>O.value=a),tabs:o.value,onTabChange:Ne},null,8,["modelValue","tabs"])]),_:1})]),default:n(()=>[r("div",ht,[r("div",St,[d(s(J),{modelValue:f.value.search,"onUpdate:modelValue":e[1]||(e[1]=a=>f.value.search=a),placeholder:"Search alerts...",onInput:s(qe)},{prepend:n(()=>e[22]||(e[22]=[r("svg",{class:"w-4 h-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1)])),_:1},8,["modelValue","onInput"]),d(s(H),{modelValue:f.value.alertType,"onUpdate:modelValue":[e[2]||(e[2]=a=>f.value.alertType=a),le],placeholder:"Filter by Alert Type",options:xe},null,8,["modelValue"]),d(s(H),{modelValue:f.value.location,"onUpdate:modelValue":[e[3]||(e[3]=a=>f.value.location=a),le],placeholder:"Filter by Location",options:Ve.value},null,8,["modelValue","options"]),d(s(H),{modelValue:f.value.status,"onUpdate:modelValue":[e[4]||(e[4]=a=>f.value.status=a),le],placeholder:"Filter by Status",options:_e},null,8,["modelValue"])]),r("div",At,[d(s(yt),{columns:Ce,data:$.value,loading:me.value,pagination:v.value,"empty-message":"No stock alerts found",onSortChange:He,onPageChange:Be,onRowClick:De},{"column-alertType":n(({row:a})=>[r("div",wt,[r("div",{class:re(["w-8 h-8 rounded-lg flex items-center justify-center",ze(a.alertType)])},[(V(),P("svg",bt,[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:je(a.alertType)},null,8,Ct)]))],2),r("span",xt,w(Le(a.alertType)),1)])]),"column-partInfo":n(({row:a})=>[r("div",null,[r("h4",Tt,w(a.partName||`Part #${a.partId}`),1),r("p",It,w(a.partNumber||"N/A"),1)])]),"column-severity":n(({row:a})=>[d(s(be),{variant:Ee(a.severity),size:"sm"},{default:n(()=>[b(w(Me(a.severity)),1)]),_:2},1032,["variant"])]),"column-stockInfo":n(({row:a})=>[r("div",_t,[r("div",Vt," Current: "+w(ye(a.currentStock)),1),r("div",Ot," Min: "+w(ye(a.minimumStock)),1)])]),"column-location":n(({row:a})=>[r("div",Lt,w(Re(a.location)),1)]),"column-status":n(({row:a})=>[d(s(be),{variant:Ue(a),size:"sm"},{default:n(()=>[b(w(Pe(a)),1)]),_:2},1032,["variant"])]),"column-createdAt":n(({row:a})=>[r("div",Mt,w(Fe(a.createdAt)),1)]),"column-actions":n(({row:a})=>[r("div",Pt,[d(s(x),{variant:"ghost",size:"xs",onClick:Y(A=>ke(a),["stop"]),title:"View Details"},{default:n(()=>e[23]||(e[23]=[r("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"}),r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"})],-1)])),_:2,__:[23]},1032,["onClick"]),a.acknowledged?N("",!0):(V(),oe(s(x),{key:0,variant:"ghost",size:"xs",onClick:Y(A=>We(a),["stop"]),title:"Acknowledge Alert",class:"text-blue-600 hover:text-blue-700"},{default:n(()=>e[24]||(e[24]=[r("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)])),_:2,__:[24]},1032,["onClick"])),a.resolved?N("",!0):(V(),oe(s(x),{key:1,variant:"ghost",size:"xs",onClick:Y(A=>Ge(a),["stop"]),title:"Resolve Alert",class:"text-green-600 hover:text-green-700"},{default:n(()=>e[25]||(e[25]=[r("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M5 13l4 4L19 7"})],-1)])),_:2,__:[25]},1032,["onClick"])),d(s(x),{variant:"ghost",size:"xs",onClick:Y(A=>ge(a),["stop"]),title:"Edit Alert"},{default:n(()=>e[26]||(e[26]=[r("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1)])),_:2,__:[26]},1032,["onClick"])])]),_:1},8,["data","loading","pagination"])]),d(s(ie),{modelValue:R.value,"onUpdate:modelValue":e[12]||(e[12]=a=>R.value=a),title:q.value?"Edit Stock Alert":"Create Stock Alert",size:"lg",onCancel:ae},{footer:n(()=>[r("div",Ut,[r("div",zt,[s(G)||s(D)?(V(),P("div",jt,[s(G)?(V(),P("svg",qt,e[28]||(e[28]=[r("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z","clip-rule":"evenodd"},null,-1)]))):(V(),P("svg",Nt,e[29]||(e[29]=[r("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z","clip-rule":"evenodd"},null,-1)]))),s(G)?(V(),P("span",Ht,"Auto-saving...")):s(D)?(V(),P("span",Bt,"Last saved "+w(_.value),1)):N("",!0)])):N("",!0)]),r("div",Dt,[d(s(x),{variant:"secondary",onClick:ae},{default:n(()=>e[30]||(e[30]=[b(" Cancel ",-1)])),_:1,__:[30]}),d(s(x),{variant:"primary",loading:U.value,onClick:Qe},{default:n(()=>[b(w(q.value?"Update Alert":"Create Alert"),1)]),_:1},8,["loading"])])])]),default:n(()=>[d(s(kt),{visible:z.value,"saved-data-info":te.value,onRestore:tt,onDismiss:lt},null,8,["visible","saved-data-info"]),r("div",Rt,[r("div",Ft,[d(s(H),{modelValue:c.value.partId,"onUpdate:modelValue":e[5]||(e[5]=a=>c.value.partId=a),label:"Part",placeholder:"Select part",options:Oe.value,required:"",error:g.value.partId,onChange:E},null,8,["modelValue","options","error"]),d(s(H),{modelValue:c.value.alertType,"onUpdate:modelValue":e[6]||(e[6]=a=>c.value.alertType=a),label:"Alert Type",placeholder:"Select alert type",options:Te,required:"",error:g.value.alertType,onChange:E},null,8,["modelValue","error"]),d(s(H),{modelValue:c.value.severity,"onUpdate:modelValue":e[7]||(e[7]=a=>c.value.severity=a),label:"Severity",placeholder:"Select severity",options:Ie,required:"",error:g.value.severity,onChange:E},null,8,["modelValue","error"]),d(s(J),{modelValue:c.value.location,"onUpdate:modelValue":e[8]||(e[8]=a=>c.value.location=a),label:"Location",placeholder:"Enter location",error:g.value.location,onInput:E},null,8,["modelValue","error"]),d(s(J),{modelValue:c.value.currentStock,"onUpdate:modelValue":e[9]||(e[9]=a=>c.value.currentStock=a),label:"Current Stock",placeholder:"0",type:"number",required:"",error:g.value.currentStock,onInput:E},null,8,["modelValue","error"]),d(s(J),{modelValue:c.value.minimumStock,"onUpdate:modelValue":e[10]||(e[10]=a=>c.value.minimumStock=a),label:"Minimum Stock",placeholder:"0",type:"number",required:"",error:g.value.minimumStock,onInput:E},null,8,["modelValue","error"])]),r("div",null,[e[27]||(e[27]=r("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Notes",-1)),se(r("textarea",{"onUpdate:modelValue":e[11]||(e[11]=a=>c.value.notes=a),class:re(["w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",{"border-red-300":g.value.notes}]),placeholder:"Additional notes or description...",rows:"3",onInput:E},null,34),[[ne,c.value.notes]]),g.value.notes?(V(),P("p",Et,w(g.value.notes),1)):N("",!0)])])]),_:1},8,["modelValue","title"]),d(s(ie),{modelValue:L.value,"onUpdate:modelValue":e[15]||(e[15]=a=>L.value=a),title:"Acknowledge Stock Alert",size:"md"},{footer:n(()=>[r("div",Qt,[d(s(x),{variant:"secondary",onClick:e[14]||(e[14]=a=>L.value=!1)},{default:n(()=>e[34]||(e[34]=[b(" Cancel ",-1)])),_:1,__:[34]}),d(s(x),{variant:"primary",loading:K.value,onClick:$e},{default:n(()=>e[35]||(e[35]=[b(" Acknowledge Alert ",-1)])),_:1,__:[35]},8,["loading"])])]),default:n(()=>{var a;return[r("div",Kt,[r("p",Wt,[e[31]||(e[31]=b(" Acknowledging this alert for ",-1)),r("strong",Gt,"'"+w((a=T.value)==null?void 0:a.partName)+"'",1),e[32]||(e[32]=b(". ",-1))]),r("div",null,[e[33]||(e[33]=r("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Notes (Optional)",-1)),se(r("textarea",{"onUpdate:modelValue":e[13]||(e[13]=A=>B.value.notes=A),class:"w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",placeholder:"Add any notes about this acknowledgment...",rows:"3"},null,512),[[ne,B.value.notes]])])])]}),_:1},8,["modelValue"]),d(s(ie),{modelValue:M.value,"onUpdate:modelValue":e[18]||(e[18]=a=>M.value=a),title:"Resolve Stock Alert",size:"md"},{footer:n(()=>[r("div",Zt,[d(s(x),{variant:"secondary",onClick:e[17]||(e[17]=a=>M.value=!1)},{default:n(()=>e[39]||(e[39]=[b(" Cancel ",-1)])),_:1,__:[39]}),d(s(x),{variant:"primary",loading:W.value,onClick:Xe},{default:n(()=>e[40]||(e[40]=[b(" Resolve Alert ",-1)])),_:1,__:[40]},8,["loading"])])]),default:n(()=>{var a;return[r("div",$t,[r("p",Xt,[e[36]||(e[36]=b(" Resolving this alert for ",-1)),r("strong",Yt,"'"+w((a=T.value)==null?void 0:a.partName)+"'",1),e[37]||(e[37]=b(". ",-1))]),r("div",null,[e[38]||(e[38]=r("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Resolution (Required)",-1)),se(r("textarea",{"onUpdate:modelValue":e[16]||(e[16]=A=>I.value.resolution=A),class:re(["w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",{"border-red-300":I.value.error}]),placeholder:"Describe how this alert was resolved...",rows:"3",required:""},null,2),[[ne,I.value.resolution]]),I.value.error?(V(),P("p",Jt,w(I.value.error),1)):N("",!0)])])]}),_:1},8,["modelValue"])])]),_:1}))}};export{pl as default}; diff --git a/frontend/dist/assets/TeamsListView-BMyhC_wf.js b/frontend/dist/assets/TeamsListView-Dk6DYIks.js similarity index 96% rename from frontend/dist/assets/TeamsListView-BMyhC_wf.js rename to frontend/dist/assets/TeamsListView-Dk6DYIks.js index 2a72f7fe..aba0ceb7 100644 --- a/frontend/dist/assets/TeamsListView-BMyhC_wf.js +++ b/frontend/dist/assets/TeamsListView-Dk6DYIks.js @@ -1 +1 @@ -import{q as J,r as x,c as u,o as K,i as B,w as l,s as O,v as Q,g as m,b as a,d as o,a as k,j as b,ae as X,t as v,e as n,F as c,k as h,ai as Y}from"./index-BUdRbiwj.js";import{F as Z,a as ee}from"./FPPageHeader-CTG2L28r.js";import{F as j}from"./FPInput-CzR_dWoe.js";import{F as ae}from"./FPStats-BGfZcDZc.js";import{F as te}from"./FPTable-CU8C_NYc.js";import{F as se}from"./FPModal-DWGF1LV8.js";import{F as H}from"./FPBadge-BKY5dPnL.js";import{u as le,a as oe}from"./roles-f1XEGBFr.js";import"./FPCard-qHzcEQAE.js";const ne={class:"p-6"},re={key:0,class:"flex justify-center py-12"},ie={key:1,class:"bg-red-50 border border-red-200 rounded-lg p-6 mb-6"},de={class:"flex items-start"},ue={class:"text-red-700 mb-4"},me={class:"flex items-center"},ve={class:"font-medium text-gray-900"},ce={class:"text-sm text-gray-600"},pe={class:"text-sm text-gray-900"},ge={class:"flex items-center space-x-2"},fe={key:0},ke={key:0},be={key:0},he={key:0,class:"space-y-6"},ye={class:"grid grid-cols-1 gap-4"},we={key:0},xe={class:"text-sm text-gray-900"},Ce={class:"flex justify-end space-x-2"},He={__name:"TeamsListView",setup(_e){O(),Q();const z=J(),r=le(),y=oe(),p=x(!1),d=x("view"),g=x(null),M=x(window.innerWidth<768),i=x({name:"",description:"",enabled:!0}),w=x(!1),T=u(()=>r.loading),P=u(()=>r.error);u(()=>y.userPermissions.canViewUsers);const E=u(()=>y.userPermissions.canCreateUsers);u(()=>y.userPermissions.canEditUsers),u(()=>y.userPermissions.canDeleteUsers);const C=u(()=>y.userPermissions.canEditUsers),U=u(()=>{var e,s;const t=Array.isArray((e=r.teams)==null?void 0:e.content)?r.teams.content:[];return[{name:"Total Teams",value:((s=r.teams)==null?void 0:s.totalElements)||t.length,variant:"primary"},{name:"Active",value:t.filter(f=>f.enabled).length,variant:"success"},{name:"Inactive",value:t.filter(f=>!f.enabled).length,variant:"error"}]}),_=u(()=>{var t;return Array.isArray((t=r.teams)==null?void 0:t.content)?r.teams.content:[]}),A=u(()=>{var t,e,s;return{currentPage:(((t=r.teams)==null?void 0:t.currentPage)||0)+1,total:((e=r.teams)==null?void 0:e.totalElements)||0,pageSize:((s=r.teams)==null?void 0:s.pageSize)||10}}),R=[{key:"name",label:"Team",sortable:!0},{key:"members",label:"Members",sortable:!0},{key:"status",label:"Status",sortable:!0}],S=async()=>{try{console.log("Initializing teams data..."),z.user&&y.setCurrentUser(z.user),await r.searchTeams(),console.log("Teams data loaded successfully")}catch(t){console.error("Failed to initialize teams data:",t)}},F=async()=>{console.log("Refreshing teams data..."),await r.searchTeams()},D=async()=>{try{await S()}catch(t){console.error("Retry failed:",t)}},L=async({column:t,direction:e})=>{console.log("Sort:",t,e)},N=async t=>{console.log("Page change:",t)},I=t=>{V(t)},$=()=>{i.value={name:"",description:"",enabled:!0},g.value=null,d.value="create",p.value=!0},V=t=>{g.value={...t},i.value={...t},d.value="view",p.value=!0},q=t=>{C.value&&(g.value={...t},i.value={...t},d.value="edit",p.value=!0)},W=t=>{C.value&&console.log("Manage team members:",t.name)},G=async()=>{try{w.value=!0,d.value==="create"?(console.log("Creating team:",i.value),await r.createTeam(i.value)):(console.log("Updating team:",i.value),await r.updateTeam(g.value.id,i.value)),p.value=!1,await F()}catch(t){console.error("Failed to save team:",t)}finally{w.value=!1}};return K(async()=>{await S()}),(t,e)=>(m(),B(Z,null,{header:l(()=>[o(ee,{title:"Teams",description:"Manage teams and team assignments",breadcrumbs:[{text:"People",to:"/people"},{text:"Teams",to:null}]},{actions:l(()=>[o(n(c),{variant:"outline",size:"sm",onClick:F},{default:l(()=>e[4]||(e[4]=[a("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),h(" Refresh ",-1)])),_:1,__:[4]}),o(n(c),{variant:"primary",size:"sm",onClick:$,disabled:!E.value},{default:l(()=>e[5]||(e[5]=[a("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),h(" Create Team ",-1)])),_:1,__:[5]},8,["disabled"])]),stats:l(()=>[o(n(ae),{stats:U.value},null,8,["stats"])]),_:1})]),default:l(()=>[a("div",ne,[T.value&&!_.value.length?(m(),k("div",re,e[6]||(e[6]=[a("div",{class:"text-center"},[a("div",{class:"animate-spin rounded-full h-8 w-8 border-b-2 border-primary-600 mx-auto mb-4"}),a("p",{class:"text-gray-600"},"Loading teams...")],-1)]))):P.value&&!_.value.length?(m(),k("div",ie,[a("div",de,[e[9]||(e[9]=a("svg",{class:"w-6 h-6 text-red-400 mr-3 mt-1",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.728-.833-2.498 0L4.316 16.5c-.77.833.192 2.5 1.732 2.5z"})],-1)),a("div",null,[e[8]||(e[8]=a("h3",{class:"text-lg font-medium text-red-800 mb-2"},"Failed to Load Teams",-1)),a("p",ue,v(P.value),1),o(n(c),{variant:"outline",size:"sm",onClick:D},{default:l(()=>e[7]||(e[7]=[a("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),h(" Retry ",-1)])),_:1,__:[7]})])])])):b("",!0),X(a("div",null,[o(n(te),{columns:R,data:_.value,loading:T.value,pagination:A.value,"empty-message":"No teams found",onSortChange:L,onPageChange:N,onRowClick:I},{"column-name":l(({row:s})=>[a("div",me,[e[10]||(e[10]=a("div",{class:"w-10 h-10 rounded-full bg-primary-100 flex items-center justify-center mr-3"},[a("svg",{class:"w-5 h-5 text-primary-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"})])],-1)),a("div",null,[a("h4",ve,v(s.name),1),a("p",ce,v(s.description||"No description"),1)])])]),"column-members":l(({row:s})=>[a("div",pe,v(s.memberCount||0),1)]),"column-status":l(({row:s})=>[o(n(H),{variant:s.enabled?"success":"error"},{default:l(()=>[h(v(s.enabled?"Active":"Inactive"),1)]),_:2},1032,["variant"])]),"row-actions":l(({row:s})=>[a("div",ge,[o(n(c),{variant:"ghost",size:"sm",onClick:f=>V(s),title:"View Details"},{default:l(()=>[e[11]||(e[11]=a("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"}),a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"})],-1)),M.value?b("",!0):(m(),k("span",fe,"View"))]),_:2,__:[11]},1032,["onClick"]),o(n(c),{variant:"ghost",size:"sm",onClick:f=>q(s),title:"Edit Team",disabled:!C.value},{default:l(()=>[e[12]||(e[12]=a("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1)),M.value?b("",!0):(m(),k("span",ke,"Edit"))]),_:2,__:[12]},1032,["onClick","disabled"]),o(n(c),{variant:"ghost",size:"sm",onClick:f=>W(s),title:"Manage Members",disabled:!C.value},{default:l(()=>[e[13]||(e[13]=a("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"})],-1)),M.value?b("",!0):(m(),k("span",be,"Members"))]),_:2,__:[13]},1032,["onClick","disabled"])])]),_:1},8,["data","loading","pagination"])],512),[[Y,!T.value||_.value.length]])]),o(n(se),{modelValue:p.value,"onUpdate:modelValue":e[3]||(e[3]=s=>p.value=s),title:d.value==="view"?"Team Details":d.value==="create"?"Create Team":"Edit Team",size:"lg"},{footer:l(()=>{var s;return[a("div",Ce,[o(n(c),{variant:"outline",onClick:e[2]||(e[2]=f=>p.value=!1),disabled:w.value},{default:l(()=>[h(v(d.value==="view"?"Close":"Cancel"),1)]),_:1},8,["disabled"]),d.value!=="view"?(m(),B(n(c),{key:0,variant:"primary",onClick:G,disabled:!((s=i.value.name)!=null&&s.trim())||w.value,loading:w.value},{default:l(()=>[h(v(w.value?"Saving...":d.value==="create"?"Create Team":"Save Changes"),1)]),_:1},8,["disabled","loading"])):b("",!0)])]}),default:l(()=>[g.value||d.value==="create"?(m(),k("div",he,[a("div",ye,[a("div",null,[e[14]||(e[14]=a("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Team Name",-1)),o(n(j),{modelValue:i.value.name,"onUpdate:modelValue":e[0]||(e[0]=s=>i.value.name=s),readonly:d.value==="view",placeholder:"Enter team name"},null,8,["modelValue","readonly"])]),a("div",null,[e[15]||(e[15]=a("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Description",-1)),o(n(j),{modelValue:i.value.description,"onUpdate:modelValue":e[1]||(e[1]=s=>i.value.description=s),readonly:d.value==="view",placeholder:"Enter team description"},null,8,["modelValue","readonly"])]),a("div",null,[e[16]||(e[16]=a("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Status",-1)),o(n(H),{variant:i.value.enabled?"success":"error"},{default:l(()=>[h(v(i.value.enabled?"Active":"Inactive"),1)]),_:1},8,["variant"])]),d.value==="view"&&g.value?(m(),k("div",we,[e[17]||(e[17]=a("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Members",-1)),a("div",xe,v(g.value.memberCount||0)+" member(s) ",1)])):b("",!0)])])):b("",!0)]),_:1},8,["modelValue","title"])]),_:1}))}};export{He as default}; +import{q as J,r as x,c as u,o as K,i as B,w as l,s as O,v as Q,g as m,b as a,d as o,a as k,j as b,ae as X,t as v,e as n,F as c,k as h,ai as Y}from"./index-QAlcqU00.js";import{F as Z,a as ee}from"./FPPageHeader-CFIwZZgQ.js";import{F as j}from"./FPInput-D5RURom0.js";import{F as ae}from"./FPStats-DOY0PQQF.js";import{F as te}from"./FPTable-CWvngIYd.js";import{F as se}from"./FPModal-DMoPysvU.js";import{F as H}from"./FPBadge-DvOitM1C.js";import{u as le,a as oe}from"./roles-BzkoUpaM.js";import"./FPCard-AB6NRXg5.js";const ne={class:"p-6"},re={key:0,class:"flex justify-center py-12"},ie={key:1,class:"bg-red-50 border border-red-200 rounded-lg p-6 mb-6"},de={class:"flex items-start"},ue={class:"text-red-700 mb-4"},me={class:"flex items-center"},ve={class:"font-medium text-gray-900"},ce={class:"text-sm text-gray-600"},pe={class:"text-sm text-gray-900"},ge={class:"flex items-center space-x-2"},fe={key:0},ke={key:0},be={key:0},he={key:0,class:"space-y-6"},ye={class:"grid grid-cols-1 gap-4"},we={key:0},xe={class:"text-sm text-gray-900"},Ce={class:"flex justify-end space-x-2"},He={__name:"TeamsListView",setup(_e){O(),Q();const z=J(),r=le(),y=oe(),p=x(!1),d=x("view"),g=x(null),M=x(window.innerWidth<768),i=x({name:"",description:"",enabled:!0}),w=x(!1),T=u(()=>r.loading),P=u(()=>r.error);u(()=>y.userPermissions.canViewUsers);const E=u(()=>y.userPermissions.canCreateUsers);u(()=>y.userPermissions.canEditUsers),u(()=>y.userPermissions.canDeleteUsers);const C=u(()=>y.userPermissions.canEditUsers),U=u(()=>{var e,s;const t=Array.isArray((e=r.teams)==null?void 0:e.content)?r.teams.content:[];return[{name:"Total Teams",value:((s=r.teams)==null?void 0:s.totalElements)||t.length,variant:"primary"},{name:"Active",value:t.filter(f=>f.enabled).length,variant:"success"},{name:"Inactive",value:t.filter(f=>!f.enabled).length,variant:"error"}]}),_=u(()=>{var t;return Array.isArray((t=r.teams)==null?void 0:t.content)?r.teams.content:[]}),A=u(()=>{var t,e,s;return{currentPage:(((t=r.teams)==null?void 0:t.currentPage)||0)+1,total:((e=r.teams)==null?void 0:e.totalElements)||0,pageSize:((s=r.teams)==null?void 0:s.pageSize)||10}}),R=[{key:"name",label:"Team",sortable:!0},{key:"members",label:"Members",sortable:!0},{key:"status",label:"Status",sortable:!0}],S=async()=>{try{console.log("Initializing teams data..."),z.user&&y.setCurrentUser(z.user),await r.searchTeams(),console.log("Teams data loaded successfully")}catch(t){console.error("Failed to initialize teams data:",t)}},F=async()=>{console.log("Refreshing teams data..."),await r.searchTeams()},D=async()=>{try{await S()}catch(t){console.error("Retry failed:",t)}},L=async({column:t,direction:e})=>{console.log("Sort:",t,e)},N=async t=>{console.log("Page change:",t)},I=t=>{V(t)},$=()=>{i.value={name:"",description:"",enabled:!0},g.value=null,d.value="create",p.value=!0},V=t=>{g.value={...t},i.value={...t},d.value="view",p.value=!0},q=t=>{C.value&&(g.value={...t},i.value={...t},d.value="edit",p.value=!0)},W=t=>{C.value&&console.log("Manage team members:",t.name)},G=async()=>{try{w.value=!0,d.value==="create"?(console.log("Creating team:",i.value),await r.createTeam(i.value)):(console.log("Updating team:",i.value),await r.updateTeam(g.value.id,i.value)),p.value=!1,await F()}catch(t){console.error("Failed to save team:",t)}finally{w.value=!1}};return K(async()=>{await S()}),(t,e)=>(m(),B(Z,null,{header:l(()=>[o(ee,{title:"Teams",description:"Manage teams and team assignments",breadcrumbs:[{text:"People",to:"/people"},{text:"Teams",to:null}]},{actions:l(()=>[o(n(c),{variant:"outline",size:"sm",onClick:F},{default:l(()=>e[4]||(e[4]=[a("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),h(" Refresh ",-1)])),_:1,__:[4]}),o(n(c),{variant:"primary",size:"sm",onClick:$,disabled:!E.value},{default:l(()=>e[5]||(e[5]=[a("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),h(" Create Team ",-1)])),_:1,__:[5]},8,["disabled"])]),stats:l(()=>[o(n(ae),{stats:U.value},null,8,["stats"])]),_:1})]),default:l(()=>[a("div",ne,[T.value&&!_.value.length?(m(),k("div",re,e[6]||(e[6]=[a("div",{class:"text-center"},[a("div",{class:"animate-spin rounded-full h-8 w-8 border-b-2 border-primary-600 mx-auto mb-4"}),a("p",{class:"text-gray-600"},"Loading teams...")],-1)]))):P.value&&!_.value.length?(m(),k("div",ie,[a("div",de,[e[9]||(e[9]=a("svg",{class:"w-6 h-6 text-red-400 mr-3 mt-1",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.728-.833-2.498 0L4.316 16.5c-.77.833.192 2.5 1.732 2.5z"})],-1)),a("div",null,[e[8]||(e[8]=a("h3",{class:"text-lg font-medium text-red-800 mb-2"},"Failed to Load Teams",-1)),a("p",ue,v(P.value),1),o(n(c),{variant:"outline",size:"sm",onClick:D},{default:l(()=>e[7]||(e[7]=[a("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),h(" Retry ",-1)])),_:1,__:[7]})])])])):b("",!0),X(a("div",null,[o(n(te),{columns:R,data:_.value,loading:T.value,pagination:A.value,"empty-message":"No teams found",onSortChange:L,onPageChange:N,onRowClick:I},{"column-name":l(({row:s})=>[a("div",me,[e[10]||(e[10]=a("div",{class:"w-10 h-10 rounded-full bg-primary-100 flex items-center justify-center mr-3"},[a("svg",{class:"w-5 h-5 text-primary-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"})])],-1)),a("div",null,[a("h4",ve,v(s.name),1),a("p",ce,v(s.description||"No description"),1)])])]),"column-members":l(({row:s})=>[a("div",pe,v(s.memberCount||0),1)]),"column-status":l(({row:s})=>[o(n(H),{variant:s.enabled?"success":"error"},{default:l(()=>[h(v(s.enabled?"Active":"Inactive"),1)]),_:2},1032,["variant"])]),"row-actions":l(({row:s})=>[a("div",ge,[o(n(c),{variant:"ghost",size:"sm",onClick:f=>V(s),title:"View Details"},{default:l(()=>[e[11]||(e[11]=a("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"}),a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"})],-1)),M.value?b("",!0):(m(),k("span",fe,"View"))]),_:2,__:[11]},1032,["onClick"]),o(n(c),{variant:"ghost",size:"sm",onClick:f=>q(s),title:"Edit Team",disabled:!C.value},{default:l(()=>[e[12]||(e[12]=a("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1)),M.value?b("",!0):(m(),k("span",ke,"Edit"))]),_:2,__:[12]},1032,["onClick","disabled"]),o(n(c),{variant:"ghost",size:"sm",onClick:f=>W(s),title:"Manage Members",disabled:!C.value},{default:l(()=>[e[13]||(e[13]=a("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"})],-1)),M.value?b("",!0):(m(),k("span",be,"Members"))]),_:2,__:[13]},1032,["onClick","disabled"])])]),_:1},8,["data","loading","pagination"])],512),[[Y,!T.value||_.value.length]])]),o(n(se),{modelValue:p.value,"onUpdate:modelValue":e[3]||(e[3]=s=>p.value=s),title:d.value==="view"?"Team Details":d.value==="create"?"Create Team":"Edit Team",size:"lg"},{footer:l(()=>{var s;return[a("div",Ce,[o(n(c),{variant:"outline",onClick:e[2]||(e[2]=f=>p.value=!1),disabled:w.value},{default:l(()=>[h(v(d.value==="view"?"Close":"Cancel"),1)]),_:1},8,["disabled"]),d.value!=="view"?(m(),B(n(c),{key:0,variant:"primary",onClick:G,disabled:!((s=i.value.name)!=null&&s.trim())||w.value,loading:w.value},{default:l(()=>[h(v(w.value?"Saving...":d.value==="create"?"Create Team":"Save Changes"),1)]),_:1},8,["disabled","loading"])):b("",!0)])]}),default:l(()=>[g.value||d.value==="create"?(m(),k("div",he,[a("div",ye,[a("div",null,[e[14]||(e[14]=a("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Team Name",-1)),o(n(j),{modelValue:i.value.name,"onUpdate:modelValue":e[0]||(e[0]=s=>i.value.name=s),readonly:d.value==="view",placeholder:"Enter team name"},null,8,["modelValue","readonly"])]),a("div",null,[e[15]||(e[15]=a("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Description",-1)),o(n(j),{modelValue:i.value.description,"onUpdate:modelValue":e[1]||(e[1]=s=>i.value.description=s),readonly:d.value==="view",placeholder:"Enter team description"},null,8,["modelValue","readonly"])]),a("div",null,[e[16]||(e[16]=a("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Status",-1)),o(n(H),{variant:i.value.enabled?"success":"error"},{default:l(()=>[h(v(i.value.enabled?"Active":"Inactive"),1)]),_:1},8,["variant"])]),d.value==="view"&&g.value?(m(),k("div",we,[e[17]||(e[17]=a("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Members",-1)),a("div",xe,v(g.value.memberCount||0)+" member(s) ",1)])):b("",!0)])])):b("",!0)]),_:1},8,["modelValue","title"])]),_:1}))}};export{He as default}; diff --git a/frontend/dist/assets/ThemeTest-k1ybLIOn.js b/frontend/dist/assets/ThemeTest-3bWyKweP.js similarity index 85% rename from frontend/dist/assets/ThemeTest-k1ybLIOn.js rename to frontend/dist/assets/ThemeTest-3bWyKweP.js index ab94bc2d..00fe07af 100644 --- a/frontend/dist/assets/ThemeTest-k1ybLIOn.js +++ b/frontend/dist/assets/ThemeTest-3bWyKweP.js @@ -1 +1 @@ -import{bf as S,bt as D,bu as P,r as M,c as d,a,b as s,n as m,e as o,t as r,af as v,aQ as f,aS as g,ae as h,aU as w,g as l}from"./index-BUdRbiwj.js";const j={class:"min-h-screen bg-gray-50 dark:bg-gray-900 py-8 transition-colors"},E={class:"max-w-6xl mx-auto px-4"},V={class:"bg-white dark:bg-gray-800 rounded-lg shadow-lg p-8 transition-colors"},F={class:"flex items-center justify-between mb-8"},U={class:"grid grid-cols-1 md:grid-cols-2 gap-6 mb-8"},z={class:"bg-blue-50 border border-blue-200 rounded-lg p-6"},A={class:"space-y-2 text-sm text-blue-700"},I={class:"flex justify-between"},L={class:"font-mono"},N={class:"flex justify-between"},O={class:"font-mono"},R={class:"flex justify-between"},W={class:"font-mono"},G={class:"flex justify-between"},Q={class:"font-mono"},q={class:"mb-8"},H={class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6"},J={class:"font-medium text-gray-700 dark:text-gray-300"},K={class:"grid grid-cols-5 gap-1"},X={class:"mb-8"},Y={class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6"},Z={class:"space-y-3"},$={class:"space-y-3"},ss={class:"bg-gray-50 rounded-lg p-6"},ts={class:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4"},es={class:"bg-white p-4 rounded-md text-center"},rs={class:"text-2xl mb-2"},os={class:"text-xs text-gray-500"},ns={__name:"ThemeTest",setup(as){const{currentTheme:u,isDark:b,toggleTheme:x,getColor:C}=S();D();const{windowWidth:_,isMobile:c,isTablet:p,breakpoint:y}=P(),i=M({email:"",password:""}),T=d(()=>c.value?"Mobile":p.value?"Tablet":"Desktop"),k=d(()=>c.value?"📱":p.value?"💻":"🖥️"),B=d(()=>[{name:"Primary",shades:[{name:"100",bgClass:"bg-primary-100",textClass:"text-primary-900"},{name:"300",bgClass:"bg-primary-300",textClass:"text-primary-900"},{name:"500",bgClass:"bg-primary-500",textClass:"text-white"},{name:"700",bgClass:"bg-primary-700",textClass:"text-white"},{name:"900",bgClass:"bg-primary-900",textClass:"text-white"}]},{name:"Success",shades:[{name:"100",bgClass:"bg-success-100",textClass:"text-success-900"},{name:"300",bgClass:"bg-success-300",textClass:"text-success-900"},{name:"500",bgClass:"bg-success-500",textClass:"text-white"},{name:"700",bgClass:"bg-success-700",textClass:"text-white"},{name:"900",bgClass:"bg-success-900",textClass:"text-white"}]},{name:"Error",shades:[{name:"100",bgClass:"bg-error-100",textClass:"text-error-900"},{name:"300",bgClass:"bg-error-300",textClass:"text-error-900"},{name:"500",bgClass:"bg-error-500",textClass:"text-white"},{name:"700",bgClass:"bg-error-700",textClass:"text-white"},{name:"900",bgClass:"bg-error-900",textClass:"text-white"}]}]);return console.log("ThemeTest component loaded"),console.log("Theme system working:",{currentTheme:u.value,breakpoint:y.value}),(ls,t)=>(l(),a("div",j,[s("div",E,[s("div",V,[s("div",F,[t[3]||(t[3]=s("div",null,[s("h1",{class:"text-3xl font-bold text-gray-900 dark:text-white"},"Atlas CMMS Theme System"),s("p",{class:"text-gray-600 dark:text-gray-300 mt-2"},"Testing centralized theming with TailwindCSS")],-1)),s("button",{onClick:t[0]||(t[0]=(...e)=>o(x)&&o(x)(...e)),class:m(["px-4 py-2 rounded-md font-medium transition-colors border",o(b)?"bg-yellow-500 hover:bg-yellow-600 text-gray-900 border-yellow-500":"bg-gray-800 hover:bg-gray-900 text-white border-gray-800"])},r(o(b)?"☀️ Light Mode":"🌙 Dark Mode"),3)]),s("div",U,[t[9]||(t[9]=s("div",{class:"bg-green-50 border border-green-200 rounded-lg p-6"},[s("h2",{class:"text-lg font-semibold text-green-800 mb-3"},"✅ Working Components"),s("ul",{class:"space-y-1 text-sm text-green-700"},[s("li",null,"• Vue 3 + Composition API"),s("li",null,"• TailwindCSS Configuration"),s("li",null,"• Custom Color Palette"),s("li",null,"• Theme Composables"),s("li",null,"• Responsive Design")])],-1)),s("div",z,[t[8]||(t[8]=s("h2",{class:"text-lg font-semibold text-blue-800 mb-3"},"📊 Current Theme",-1)),s("div",A,[s("div",I,[t[4]||(t[4]=s("span",null,"Theme:",-1)),s("span",L,r(o(u)),1)]),s("div",N,[t[5]||(t[5]=s("span",null,"Primary:",-1)),s("span",O,r(o(C)("primary.700")),1)]),s("div",R,[t[6]||(t[6]=s("span",null,"Breakpoint:",-1)),s("span",W,r(o(y)),1)]),s("div",G,[t[7]||(t[7]=s("span",null,"Device:",-1)),s("span",Q,r(T.value),1)])])])]),s("div",q,[t[10]||(t[10]=s("h2",{class:"text-xl font-semibold text-gray-800 dark:text-gray-200 mb-4"},"Color Palette",-1)),s("div",H,[(l(!0),a(v,null,f(B.value,e=>(l(),a("div",{key:e.name,class:"space-y-3"},[s("h3",J,r(e.name),1),s("div",K,[(l(!0),a(v,null,f(e.shades,n=>(l(),a("div",{key:n.name,class:m([n.bgClass,"h-12 rounded flex items-center justify-center text-xs font-mono border"])},[s("span",{class:m(n.textClass)},r(n.name),3)],2))),128))])]))),128))])]),s("div",X,[t[15]||(t[15]=s("h2",{class:"text-xl font-semibold text-gray-800 mb-4"},"Component Preview",-1)),s("div",Y,[t[13]||(t[13]=g('

Buttons

',1)),s("div",Z,[t[12]||(t[12]=s("h3",{class:"font-medium text-gray-700"},"Form Elements",-1)),s("div",$,[h(s("input",{"onUpdate:modelValue":t[1]||(t[1]=e=>i.value.email=e),type:"email",placeholder:"Enter email",class:"w-full px-3 py-2 border border-gray-300 rounded-md focus:ring-2 focus:ring-primary-500 focus:border-primary-500"},null,512),[[w,i.value.email]]),h(s("input",{"onUpdate:modelValue":t[2]||(t[2]=e=>i.value.password=e),type:"password",placeholder:"Enter password",class:"w-full px-3 py-2 border border-gray-300 rounded-md focus:ring-2 focus:ring-primary-500 focus:border-primary-500"},null,512),[[w,i.value.password]]),t[11]||(t[11]=s("select",{class:"w-full px-3 py-2 border border-gray-300 rounded-md focus:ring-2 focus:ring-primary-500 focus:border-primary-500"},[s("option",null,"Select an option"),s("option",null,"Option 1"),s("option",null,"Option 2")],-1))])]),t[14]||(t[14]=g('

Cards

Basic Card

Simple card with border and shadow

Primary Card

Card with primary theme colors

',1))])]),s("div",ss,[t[18]||(t[18]=s("h2",{class:"text-xl font-semibold text-gray-800 mb-4"},"Responsive Test",-1)),s("div",ts,[t[17]||(t[17]=g('
📱
Mobile
< 768px
💻
Tablet
768px - 1024px
🖥️
Desktop
> 1024px
',3)),s("div",es,[s("div",rs,r(k.value),1),t[16]||(t[16]=s("div",{class:"text-sm font-medium"},"Current",-1)),s("div",os,r(o(_))+"px",1)])])])])])]))}};export{ns as default}; +import{bf as S,bu as D,bv as P,r as M,c as d,a,b as s,n as m,e as o,t as r,af as v,aR as f,aT as g,ae as h,aV as w,g as l}from"./index-QAlcqU00.js";const j={class:"min-h-screen bg-gray-50 dark:bg-gray-900 py-8 transition-colors"},V={class:"max-w-6xl mx-auto px-4"},E={class:"bg-white dark:bg-gray-800 rounded-lg shadow-lg p-8 transition-colors"},F={class:"flex items-center justify-between mb-8"},R={class:"grid grid-cols-1 md:grid-cols-2 gap-6 mb-8"},z={class:"bg-blue-50 border border-blue-200 rounded-lg p-6"},A={class:"space-y-2 text-sm text-blue-700"},I={class:"flex justify-between"},L={class:"font-mono"},N={class:"flex justify-between"},O={class:"font-mono"},U={class:"flex justify-between"},W={class:"font-mono"},G={class:"flex justify-between"},q={class:"font-mono"},H={class:"mb-8"},J={class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6"},K={class:"font-medium text-gray-700 dark:text-gray-300"},Q={class:"grid grid-cols-5 gap-1"},X={class:"mb-8"},Y={class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6"},Z={class:"space-y-3"},$={class:"space-y-3"},ss={class:"bg-gray-50 rounded-lg p-6"},ts={class:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4"},es={class:"bg-white p-4 rounded-md text-center"},rs={class:"text-2xl mb-2"},os={class:"text-xs text-gray-500"},ns={__name:"ThemeTest",setup(as){const{currentTheme:u,isDark:b,toggleTheme:x,getColor:C}=S();D();const{windowWidth:_,isMobile:c,isTablet:p,breakpoint:y}=P(),i=M({email:"",password:""}),T=d(()=>c.value?"Mobile":p.value?"Tablet":"Desktop"),k=d(()=>c.value?"📱":p.value?"💻":"🖥️"),B=d(()=>[{name:"Primary",shades:[{name:"100",bgClass:"bg-primary-100",textClass:"text-primary-900"},{name:"300",bgClass:"bg-primary-300",textClass:"text-primary-900"},{name:"500",bgClass:"bg-primary-500",textClass:"text-white"},{name:"700",bgClass:"bg-primary-700",textClass:"text-white"},{name:"900",bgClass:"bg-primary-900",textClass:"text-white"}]},{name:"Success",shades:[{name:"100",bgClass:"bg-success-100",textClass:"text-success-900"},{name:"300",bgClass:"bg-success-300",textClass:"text-success-900"},{name:"500",bgClass:"bg-success-500",textClass:"text-white"},{name:"700",bgClass:"bg-success-700",textClass:"text-white"},{name:"900",bgClass:"bg-success-900",textClass:"text-white"}]},{name:"Error",shades:[{name:"100",bgClass:"bg-error-100",textClass:"text-error-900"},{name:"300",bgClass:"bg-error-300",textClass:"text-error-900"},{name:"500",bgClass:"bg-error-500",textClass:"text-white"},{name:"700",bgClass:"bg-error-700",textClass:"text-white"},{name:"900",bgClass:"bg-error-900",textClass:"text-white"}]}]);return console.log("ThemeTest component loaded"),console.log("Theme system working:",{currentTheme:u.value,breakpoint:y.value}),(ls,t)=>(l(),a("div",j,[s("div",V,[s("div",E,[s("div",F,[t[3]||(t[3]=s("div",null,[s("h1",{class:"text-3xl font-bold text-gray-900 dark:text-white"},"Atlas CMMS Theme System"),s("p",{class:"text-gray-600 dark:text-gray-300 mt-2"},"Testing centralized theming with TailwindCSS")],-1)),s("button",{onClick:t[0]||(t[0]=(...e)=>o(x)&&o(x)(...e)),class:m(["px-4 py-2 rounded-md font-medium transition-colors border",o(b)?"bg-yellow-500 hover:bg-yellow-600 text-gray-900 border-yellow-500":"bg-gray-800 hover:bg-gray-900 text-white border-gray-800"])},r(o(b)?"☀️ Light Mode":"🌙 Dark Mode"),3)]),s("div",R,[t[9]||(t[9]=s("div",{class:"bg-green-50 border border-green-200 rounded-lg p-6"},[s("h2",{class:"text-lg font-semibold text-green-800 mb-3"},"✅ Working Components"),s("ul",{class:"space-y-1 text-sm text-green-700"},[s("li",null,"• Vue 3 + Composition API"),s("li",null,"• TailwindCSS Configuration"),s("li",null,"• Custom Color Palette"),s("li",null,"• Theme Composables"),s("li",null,"• Responsive Design")])],-1)),s("div",z,[t[8]||(t[8]=s("h2",{class:"text-lg font-semibold text-blue-800 mb-3"},"📊 Current Theme",-1)),s("div",A,[s("div",I,[t[4]||(t[4]=s("span",null,"Theme:",-1)),s("span",L,r(o(u)),1)]),s("div",N,[t[5]||(t[5]=s("span",null,"Primary:",-1)),s("span",O,r(o(C)("primary.700")),1)]),s("div",U,[t[6]||(t[6]=s("span",null,"Breakpoint:",-1)),s("span",W,r(o(y)),1)]),s("div",G,[t[7]||(t[7]=s("span",null,"Device:",-1)),s("span",q,r(T.value),1)])])])]),s("div",H,[t[10]||(t[10]=s("h2",{class:"text-xl font-semibold text-gray-800 dark:text-gray-200 mb-4"},"Color Palette",-1)),s("div",J,[(l(!0),a(v,null,f(B.value,e=>(l(),a("div",{key:e.name,class:"space-y-3"},[s("h3",K,r(e.name),1),s("div",Q,[(l(!0),a(v,null,f(e.shades,n=>(l(),a("div",{key:n.name,class:m([n.bgClass,"h-12 rounded flex items-center justify-center text-xs font-mono border"])},[s("span",{class:m(n.textClass)},r(n.name),3)],2))),128))])]))),128))])]),s("div",X,[t[15]||(t[15]=s("h2",{class:"text-xl font-semibold text-gray-800 mb-4"},"Component Preview",-1)),s("div",Y,[t[13]||(t[13]=g('

Buttons

',1)),s("div",Z,[t[12]||(t[12]=s("h3",{class:"font-medium text-gray-700"},"Form Elements",-1)),s("div",$,[h(s("input",{"onUpdate:modelValue":t[1]||(t[1]=e=>i.value.email=e),type:"email",placeholder:"Enter email",class:"w-full px-3 py-2 border border-gray-300 rounded-md focus:ring-2 focus:ring-primary-500 focus:border-primary-500"},null,512),[[w,i.value.email]]),h(s("input",{"onUpdate:modelValue":t[2]||(t[2]=e=>i.value.password=e),type:"password",placeholder:"Enter password",class:"w-full px-3 py-2 border border-gray-300 rounded-md focus:ring-2 focus:ring-primary-500 focus:border-primary-500"},null,512),[[w,i.value.password]]),t[11]||(t[11]=s("select",{class:"w-full px-3 py-2 border border-gray-300 rounded-md focus:ring-2 focus:ring-primary-500 focus:border-primary-500"},[s("option",null,"Select an option"),s("option",null,"Option 1"),s("option",null,"Option 2")],-1))])]),t[14]||(t[14]=g('

Cards

Basic Card

Simple card with border and shadow

Primary Card

Card with primary theme colors

',1))])]),s("div",ss,[t[18]||(t[18]=s("h2",{class:"text-xl font-semibold text-gray-800 mb-4"},"Responsive Test",-1)),s("div",ts,[t[17]||(t[17]=g('
📱
Mobile
< 768px
💻
Tablet
768px - 1024px
🖥️
Desktop
> 1024px
',3)),s("div",es,[s("div",rs,r(k.value),1),t[16]||(t[16]=s("div",{class:"text-sm font-medium"},"Current",-1)),s("div",os,r(o(_))+"px",1)])])])])])]))}};export{ns as default}; diff --git a/frontend/dist/assets/TimeTracker-Ch4gtOrh.js b/frontend/dist/assets/TimeTracker-DBp8PrtX.js similarity index 94% rename from frontend/dist/assets/TimeTracker-Ch4gtOrh.js rename to frontend/dist/assets/TimeTracker-DBp8PrtX.js index 65240ba3..aae438ea 100644 --- a/frontend/dist/assets/TimeTracker-Ch4gtOrh.js +++ b/frontend/dist/assets/TimeTracker-DBp8PrtX.js @@ -1 +1 @@ -import{aO as he,r as U,c as O,b2 as B,b3 as Te,m as oe,b4 as we,_ as xe,a as y,g as f,b as t,j as A,d as R,e as n,k as te,w as ce,t as F,F as me,af as se,aQ as ke,i as Ee,aR as Se}from"./index-BUdRbiwj.js";import{F as J}from"./FPInput-CzR_dWoe.js";import{F as ve}from"./FPSelect-C7p47Ma2.js";const _e=he("timeTracking",()=>{const d=U(new Map),u=U(new Map),k=U(new Map),m=U(!1),v=U(null),T=U(!1),p=U(0),E=O(()=>s=>u.value.get(s)||[]),K=O(()=>s=>d.value.get(s)),z=O(()=>s=>d.value.has(s)),h=O(()=>s=>(u.value.get(s)||[]).reduce((l,c)=>l+(c.duration||0),0)),_=O(()=>s=>(u.value.get(s)||[]).reduce((l,c)=>l+(c.duration||0)*(c.hourlyRate||0),0));return{activeTimers:d,timeEntries:u,timerSessions:k,loading:m,error:v,globalTimerRunning:T,activeTimerCount:p,getTimeEntriesForWorkOrder:E,getActiveTimerForUser:K,hasActiveTimer:z,getTotalHoursForWorkOrder:h,getTotalCostForWorkOrder:_,loadTimeEntries:async s=>{try{m.value=!0,v.value=null;const i=await B.getByWorkOrderId(s);return u.value.set(s,i),i}catch(i){throw v.value=i.message||"Failed to load time entries",i}finally{m.value=!1}},addTimeEntry:async(s,i)=>{try{m.value=!0,v.value=null;const l=await B.create({...i,workOrderId:s}),c=u.value.get(s)||[];return u.value.set(s,[l,...c]),l}catch(l){throw v.value=l.message||"Failed to add time entry",l}finally{m.value=!1}},updateTimeEntry:async(s,i,l)=>{try{m.value=!0,v.value=null;const c=await B.update(i,l),D=u.value.get(s)||[],C=D.findIndex(q=>q.id===i);return C!==-1&&(D[C]=c,u.value.set(s,[...D])),c}catch(c){throw v.value=c.message||"Failed to update time entry",c}finally{m.value=!1}},removeTimeEntry:async(s,i)=>{try{m.value=!0,v.value=null,await B.delete(i);const c=(u.value.get(s)||[]).filter(D=>D.id!==i);return u.value.set(s,c),!0}catch(l){throw v.value=l.message||"Failed to remove time entry",l}finally{m.value=!1}},startTimer:async(s,i,l={})=>{try{if(m.value=!0,v.value=null,d.value.has(s))throw new Error("User already has an active timer");const c=await B.startTimer({userId:s,workOrderId:i,...l});return d.value.set(s,{...c,workOrderId:i,startTime:new Date,localElapsed:0}),p.value=d.value.size,T.value=p.value>0,c}catch(c){throw v.value=c.message||"Failed to start timer",c}finally{m.value=!1}},stopTimer:async(s,i={})=>{try{m.value=!0,v.value=null;const l=d.value.get(s);if(!l)throw new Error("No active timer found for user");const c=await B.stopTimer(l.id,i),D=l.workOrderId,C=u.value.get(D)||[];return u.value.set(D,[c,...C]),d.value.delete(s),p.value=d.value.size,T.value=p.value>0,c}catch(l){throw v.value=l.message||"Failed to stop timer",l}finally{m.value=!1}},updateTimerElapsed:(s,i)=>{const l=d.value.get(s);l&&(l.localElapsed=i,d.value.set(s,{...l}))},loadActiveTimers:async s=>{try{const i=await B.getActiveTimers(s);return i.forEach(l=>{d.value.set(l.userId,{...l,startTime:new Date(l.startTime),localElapsed:0})}),p.value=d.value.size,T.value=p.value>0,i}catch(i){return console.error("Failed to load active timers:",i),[]}},getSummary:async s=>{try{return await B.getSummary(s)}catch(i){throw v.value=i.message||"Failed to get time tracking summary",i}},clearWorkOrderData:s=>{u.value.delete(s)},clearUserTimer:s=>{d.value.delete(s),p.value=d.value.size,T.value=p.value>0},clearError:()=>{v.value=null},enableAutoSave:(s=3e4)=>{setInterval(()=>{d.value.forEach((i,l)=>{i.localElapsed>0&&console.log(`Auto-saving timer for user ${l}: ${i.localElapsed}`)})},s)}}});function be(d={}){const{workOrderId:u=null,userId:k=null,userOptions:m=[],autoSave:v=!1,autoSaveInterval:T=3e4,persistToLocalStorage:p=!0}=d,E=_e(),{loading:K,error:z}=Te(E),h=U([]),_=U(!1),w=U({startTime:null,userId:null,description:"",workOrderId:null}),M=U(0);let V=null,$=null;const N=`timer_session_${k}_${u}`,b=U({userId:null,hours:null,description:""}),H=O(()=>b.value?!!(b.value.userId&&b.value.hours&&b.value.hours>0):!1),Q=O(()=>h.value.reduce((e,r)=>e+(r.duration||0),0)),G=O(()=>h.value.reduce((e,r)=>e+(r.duration||0)*(r.hourlyRate||0),0)),X=O(()=>k?E.hasActiveTimer(k):!1),W=O(()=>le(M.value)),P=async(e={})=>{if(!k||!u)throw new Error("User ID and Work Order ID are required to start timer");try{const r=new Date;w.value={startTime:r,userId:k,description:e.description||"",workOrderId:u,...e},_.value=!0,M.value=0,a(),d.useServerTimer&&await E.startTimer(k,u,e),p&&Z(),v&&x()}catch(r){throw _.value=!1,w.value={startTime:null,userId:null,description:"",workOrderId:null},r}},Y=async(e={})=>{if(!_.value)return null;try{const r=M.value,S=new Date,j=Math.max(3e-4,Math.round(r*1e4)/1e4),L={type:"timer",userId:w.value.userId,workOrderId:w.value.workOrderId,startTime:w.value.startTime,endTime:S,duration:j,description:e.description||w.value.description||"Timer session",date:new Date().toISOString().split("T")[0],hourlyRate:fe(w.value.userId),...e};o(),re();const de={id:Date.now()+Math.random(),...L,user:ie(w.value.userId),editing:!1};return h.value.unshift(de),d.useServerTimer&&k?await E.stopTimer(k,e):u&&await E.addTimeEntry(u,L),l(),p&&ee(),de}catch(r){throw console.error("Failed to stop timer:",r),r}},s=()=>{V&&(clearInterval(V),V=null),re()},i=()=>{_.value&&!V&&(a(),v&&x())},l=()=>{_.value=!1,M.value=0,w.value={startTime:null,userId:null,description:"",workOrderId:null}},c=async()=>{var e;if(!H.value||!u)return null;try{const r=m.find(L=>L.value===b.value.userId),S={type:"manual",userId:b.value.userId,workOrderId:u,duration:parseFloat(b.value.hours),description:b.value.description||"Manual entry",date:new Date().toISOString().split("T")[0],hourlyRate:((e=r==null?void 0:r.data)==null?void 0:e.hourlyRate)||0},j={id:Date.now()+Math.random(),...S,user:(r==null?void 0:r.data)||null,editing:!1};return h.value.unshift(j),await E.addTimeEntry(u,S),b.value={userId:null,hours:null,description:""},j}catch(r){throw console.error("Failed to add manual entry:",r),r}},D=e=>{h.value[e]&&(h.value[e].editing=!0)},C=async e=>{const r=h.value[e];if(!(!r||!u))try{r.editing=!1,await E.updateTimeEntry(u,r.id,r)}catch(S){throw console.error("Failed to save edited entry:",S),S}},q=e=>{h.value[e]&&(h.value[e].editing=!1)},g=async e=>{const r=h.value[e];if(!(!r||!u))try{h.value.splice(e,1),await E.removeTimeEntry(u,r.id)}catch(S){throw h.value.splice(e,0,r),S}},a=()=>{V||(V=setInterval(()=>{I()},1e3))},o=()=>{V&&(clearInterval(V),V=null)},I=()=>{if(w.value.startTime){const r=Date.now()-w.value.startTime.getTime();M.value=r/(1e3*60*60),k&&d.useServerTimer&&E.updateTimerElapsed(k,M.value)}},x=()=>{!v||$||($=setInterval(()=>{_.value&&p&&Z()},T))},re=()=>{$&&(clearInterval($),$=null)},Z=()=>{try{const e={isTracking:_.value,currentSession:w.value,currentElapsed:M.value,timestamp:Date.now()};localStorage.setItem(N,JSON.stringify(e))}catch(e){console.warn("Failed to save timer to localStorage:",e)}},ne=()=>{try{const e=localStorage.getItem(N);if(!e)return!1;const r=JSON.parse(e);return Date.now()-r.timestamp>36e5?(ee(),!1):r.isTracking?(w.value={...r.currentSession,startTime:new Date(r.currentSession.startTime)},M.value=r.currentElapsed,_.value=!0,a(),v&&x(),!0):!1}catch(e){return console.warn("Failed to load timer from localStorage:",e),ee(),!1}},ee=()=>{try{localStorage.removeItem(N)}catch(e){console.warn("Failed to clear timer from localStorage:",e)}},le=e=>{if(!e||e<0||!isFinite(e)||isNaN(e))return"0:00:00";const r=Math.floor(e*3600),S=Math.floor(r/3600),j=Math.floor(r%3600/60),L=r%60;return S===0?`${j.toString().padStart(2,"0")}:${L.toString().padStart(2,"0")}`:`${S}:${j.toString().padStart(2,"0")}:${L.toString().padStart(2,"0")}`},pe=e=>e?new Date(e).toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit"}):"",ge=e=>e?new Date(e).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}):"",ie=e=>{var r;return((r=m.find(S=>S.value===e))==null?void 0:r.data)||null},fe=e=>{var r;return((r=ie(e))==null?void 0:r.hourlyRate)||0},ae=async()=>{if(!u)return[];try{const e=await E.loadTimeEntries(u);return h.value=e.map(r=>({...r,editing:!1})),e}catch(e){throw console.error("Failed to load time entries:",e),e}},ye=()=>{if(u)return ae()};oe(()=>u,e=>{e&&ae()},{immediate:!0});const ue=()=>{o(),re(),p&&_.value&&Z()};return p&&k&&u&&ne(),we(ue),{timeEntries:h,isTracking:_,currentSession:w,currentElapsed:M,manualEntry:b,loading:K,error:z,canAddManualEntry:H,totalHours:Q,totalCost:G,hasActiveTimer:X,currentSessionDuration:W,startTimer:P,stopTimer:Y,pauseTimer:s,resumeTimer:i,resetTimer:l,addManualEntry:c,editEntry:D,saveEditedEntry:C,cancelEditEntry:q,removeEntry:g,loadTimeEntries:ae,refreshTimeEntries:ye,formatDuration:le,formatTime:pe,formatDate:ge,saveTimerToLocalStorage:Z,loadTimerFromLocalStorage:ne,clearTimerFromLocalStorage:ee,updateElapsedTime:I,cleanup:ue}}const Ie={class:"time-tracker"},Fe={class:"flex items-center justify-between mb-4"},Ve={class:"flex items-center space-x-2"},Me={key:0,class:"flex items-center text-sm text-green-600"},De={key:0,class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},Ue={key:1,class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},Ce={key:0,class:"mb-6 p-4 bg-green-50 border border-green-200 rounded-lg"},Oe={class:"flex items-center justify-between"},ze={class:"text-xs text-green-700"},Ae={class:"text-right"},Re={class:"text-2xl font-bold text-green-900","data-testid":"current-elapsed"},$e={class:"mb-6 p-4 bg-gray-50 rounded-lg"},Be={class:"grid grid-cols-1 md:grid-cols-4 gap-3"},je={key:1,class:"space-y-3"},Le={class:"flex items-center justify-between"},Ne={class:"flex-1"},He={class:"flex items-center space-x-3"},We={class:"flex-1"},Pe={key:0},qe={class:"font-medium text-gray-900"},Je={key:0,class:"text-sm text-gray-600"},Ke={class:"flex items-center space-x-4 text-xs text-gray-500 mt-1"},Qe={key:0},Ge={key:0},Xe={key:1},Ye={class:"inline-flex items-center px-2 py-1 rounded-full text-xs bg-blue-100 text-blue-800"},Ze={key:1,class:"space-y-2"},et={class:"grid grid-cols-2 gap-2"},tt={class:"flex items-center space-x-3"},rt={class:"text-right"},at={key:0},st={class:"text-lg font-semibold text-gray-900"},ot={class:"text-xs text-gray-500"},nt={key:1},lt={class:"flex items-center space-x-1"},it=["onClick"],ut=["onClick"],dt=["onClick"],ct=["onClick"],mt={key:2,class:"text-center py-8 text-gray-500"},vt={key:3,class:"mt-6 p-4 bg-gray-50 rounded-lg"},pt={class:"grid grid-cols-3 gap-4 text-center"},gt={class:"text-lg font-semibold text-gray-900"},ft={class:"text-lg font-semibold text-gray-900"},yt={class:"text-lg font-semibold text-gray-900"},ht={__name:"TimeTracker",props:{modelValue:{type:Array,default:()=>[]},workOrderId:{type:[String,Number],required:!0},disabled:{type:Boolean,default:!1},userOptions:{type:Array,default:()=>[]},currentUser:{type:Object,default:null},autoSave:{type:Boolean,default:!0},useServerTimer:{type:Boolean,default:!1}},emits:["update:modelValue","timer-started","timer-stopped","entry-added"],setup(d,{expose:u,emit:k}){var q;const m=d,v=k,{timeEntries:T,isTracking:p,currentSession:E,currentElapsed:K,manualEntry:z,loading:h,canAddManualEntry:_,totalHours:w,totalCost:M,startTimer:V,stopTimer:$,resetTimer:N,addManualEntry:b,editEntry:H,saveEditedEntry:Q,cancelEditEntry:G,removeEntry:X,formatDuration:W,formatTime:P,formatDate:Y,updateElapsedTime:s}=be({workOrderId:m.workOrderId,userId:(q=m.currentUser)==null?void 0:q.id,userOptions:m.userOptions,autoSave:m.autoSave,useServerTimer:m.useServerTimer,persistToLocalStorage:!0}),i=async()=>{if(!m.disabled)try{if(p.value){const g=await $();v("timer-stopped",g)}else await V({description:"Timer session"}),v("timer-started",E.value)}catch(g){console.error("Timer toggle failed:",g)}},l=async()=>{try{const g=await b();g&&(v("entry-added",g),C())}catch(g){console.error("Failed to add manual entry:",g)}},c=async g=>{try{await X(g),C()}catch(a){console.error("Failed to remove entry:",a)}},D=async g=>{try{await Q(g),C()}catch(a){console.error("Failed to save edited entry:",a)}},C=()=>{v("update:modelValue",T.value)};return oe(()=>m.modelValue,g=>{if(g&&g.length!==T.value.length){const a=new Set(T.value.map(I=>I.id)),o=new Set(g.map(I=>I.id));(a.size!==o.size||!Array.from(a).every(I=>o.has(I)))&&(T.value=[...g])}},{deep:!0}),oe(T,()=>{C()},{deep:!0}),O(()=>{var g;return((g=m.currentUser)==null?void 0:g.hourlyRate)||0}),u({updateElapsedTime:s,startTimer:V,stopTimer:$,addManualEntry:b,editEntry:H,saveEditedEntry:Q,cancelEditEntry:G,toggleTimer:i,resetTimer:N}),(g,a)=>(f(),y("div",Ie,[t("div",Fe,[a[6]||(a[6]=t("h3",{class:"text-lg font-medium text-gray-900"},"Labor Time Tracking",-1)),t("div",Ve,[n(p)?(f(),y("span",Me,a[3]||(a[3]=[t("div",{class:"w-2 h-2 bg-green-500 rounded-full mr-2 animate-pulse"},null,-1),te(" Recording time ",-1)]))):A("",!0),R(n(me),{variant:n(p)?"danger":"primary",size:"sm",onClick:i,disabled:d.disabled||n(h),"data-testid":n(p)?"stop-timer-btn":"start-timer-btn"},{default:ce(()=>[n(p)?(f(),y("svg",Ue,a[5]||(a[5]=[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 12a9 9 0 11-18 0 9 9 0 0118 0z"},null,-1),t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 10a1 1 0 011-1h4a1 1 0 011 1v4a1 1 0 01-1 1h-4a1 1 0 01-1-1v-4z"},null,-1)]))):(f(),y("svg",De,a[4]||(a[4]=[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M14.828 14.828a4 4 0 01-5.656 0M9 10h1m4 0h1m-6 4h1m4 0h1m-6-8h1m4 0h1M8 21l4-7 4 7M3 4h18M4 4h16v12a1 1 0 01-1 1H5a1 1 0 01-1-1V4z"},null,-1)]))),te(" "+F(n(p)?"Stop Timer":"Start Timer"),1)]),_:1},8,["variant","disabled","data-testid"])])]),n(p)?(f(),y("div",Ce,[t("div",Oe,[t("div",null,[a[7]||(a[7]=t("h4",{class:"text-sm font-medium text-green-900"},"Current Session",-1)),t("p",ze," Started at "+F(n(P)(n(E).startTime)),1)]),t("div",Ae,[t("div",Re,F(n(W)(n(K))),1),a[8]||(a[8]=t("p",{class:"text-xs text-green-700"},"elapsed",-1))])])])):A("",!0),t("div",$e,[a[10]||(a[10]=t("h4",{class:"text-sm font-medium text-gray-900 mb-3"},"Add Manual Entry",-1)),t("div",Be,[R(n(ve),{modelValue:n(z).userId,"onUpdate:modelValue":a[0]||(a[0]=o=>n(z).userId=o),placeholder:"Select user",options:d.userOptions,size:"sm"},null,8,["modelValue","options"]),R(n(J),{modelValue:n(z).hours,"onUpdate:modelValue":a[1]||(a[1]=o=>n(z).hours=o),type:"number",step:"0.25",min:"0",max:"24",placeholder:"Hours",size:"sm"},null,8,["modelValue"]),R(n(J),{modelValue:n(z).description,"onUpdate:modelValue":a[2]||(a[2]=o=>n(z).description=o),placeholder:"Description",size:"sm"},null,8,["modelValue"]),R(n(me),{variant:"outline",size:"sm",onClick:l,disabled:!n(_)||n(h)},{default:ce(()=>a[9]||(a[9]=[te(" Add Entry ",-1)])),_:1,__:[9]},8,["disabled"])])]),n(T).length>0?(f(),y("div",je,[(f(!0),y(se,null,ke(n(T),(o,I)=>(f(),y("div",{key:o.id||I,class:"time-entry border border-gray-200 rounded-lg p-4 transition-all duration-200"},[t("div",Le,[t("div",Ne,[t("div",He,[o.user?(f(),Ee(n(Se),{key:0,user:o.user,size:"sm"},null,8,["user"])):A("",!0),t("div",We,[o.editing?(f(),y("div",Ze,[R(n(ve),{modelValue:o.userId,"onUpdate:modelValue":x=>o.userId=x,options:d.userOptions,placeholder:"Select user",size:"sm"},null,8,["modelValue","onUpdate:modelValue","options"]),R(n(J),{modelValue:o.description,"onUpdate:modelValue":x=>o.description=x,placeholder:"Description",size:"sm"},null,8,["modelValue","onUpdate:modelValue"]),t("div",et,[R(n(J),{modelValue:o.date,"onUpdate:modelValue":x=>o.date=x,type:"date",size:"sm"},null,8,["modelValue","onUpdate:modelValue"]),R(n(J),{modelValue:o.hourlyRate,"onUpdate:modelValue":x=>o.hourlyRate=x,modelModifiers:{number:!0},type:"number",step:"0.01",placeholder:"Hourly rate",size:"sm"},null,8,["modelValue","onUpdate:modelValue"])])])):(f(),y("div",Pe,[t("h4",qe,F(o.user?`${o.user.firstName} ${o.user.lastName}`:"Unknown User"),1),o.description?(f(),y("p",Je,F(o.description),1)):A("",!0),t("div",Ke,[o.startTime?(f(),y("span",Qe,[te(F(n(P)(o.startTime))+" ",1),o.endTime?(f(),y("span",Ge," - "+F(n(P)(o.endTime)),1)):A("",!0)])):A("",!0),o.date?(f(),y("span",Xe,F(n(Y)(o.date)),1)):A("",!0),t("span",Ye,F(o.type==="timer"?"Timer":"Manual"),1)])]))])])]),t("div",tt,[t("div",rt,[o.editing?(f(),y("div",nt,[R(n(J),{modelValue:o.duration,"onUpdate:modelValue":x=>o.duration=x,modelModifiers:{number:!0},type:"number",step:"0.01",min:"0",placeholder:"Hours",size:"sm",class:"w-20"},null,8,["modelValue","onUpdate:modelValue"]),a[11]||(a[11]=t("div",{class:"text-xs text-gray-500 mt-1"}," hours ",-1))])):(f(),y("div",at,[t("div",st,F(n(W)(o.duration)),1),t("div",ot," $"+F((o.duration*(o.hourlyRate||0)).toFixed(2)),1)]))]),t("div",lt,[o.editing?(f(),y(se,{key:1},[t("button",{onClick:x=>D(I),class:"p-1 text-green-500 hover:text-green-600 rounded",title:"Save changes"},a[14]||(a[14]=[t("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M5 13l4 4L19 7"})],-1)]),8,dt),t("button",{onClick:x=>n(G)(I),class:"p-1 text-gray-400 hover:text-gray-600 rounded",title:"Cancel editing"},a[15]||(a[15]=[t("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})],-1)]),8,ct)],64)):(f(),y(se,{key:0},[d.disabled?A("",!0):(f(),y("button",{key:0,onClick:x=>n(H)(I),class:"p-1 text-gray-400 hover:text-gray-600 rounded",title:"Edit entry"},a[12]||(a[12]=[t("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1)]),8,it)),d.disabled?A("",!0):(f(),y("button",{key:1,onClick:x=>c(I),class:"p-1 text-red-400 hover:text-red-600 rounded",title:"Remove entry"},a[13]||(a[13]=[t("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1)]),8,ut))],64))])])])]))),128))])):(f(),y("div",mt,a[16]||(a[16]=[t("svg",{class:"w-12 h-12 mx-auto mb-4 text-gray-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})],-1),t("p",{class:"text-sm"},"No time entries recorded",-1),t("p",{class:"text-xs text-gray-400 mt-1"},'Click "Start Timer" to begin tracking time',-1)]))),n(T).length>0?(f(),y("div",vt,[t("div",pt,[t("div",null,[t("div",gt,F(n(W)(n(w))),1),a[17]||(a[17]=t("div",{class:"text-xs text-gray-500"},"Total Hours",-1))]),t("div",null,[t("div",ft,"$"+F(n(M).toFixed(2)),1),a[18]||(a[18]=t("div",{class:"text-xs text-gray-500"},"Total Cost",-1))]),t("div",null,[t("div",yt,F(n(T).length),1),a[19]||(a[19]=t("div",{class:"text-xs text-gray-500"},"Entries",-1))])])])):A("",!0)]))}},Et=xe(ht,[["__scopeId","data-v-94245190"]]);export{Et as T}; +import{aP as he,r as U,c as O,b3 as B,b4 as Te,m as oe,aO as we,_ as xe,a as y,g as f,b as t,j as A,d as R,e as n,k as te,w as ce,t as F,F as me,af as se,aR as ke,i as Ee,aS as Se}from"./index-QAlcqU00.js";import{F as J}from"./FPInput-D5RURom0.js";import{F as ve}from"./FPSelect-j7n_x8eB.js";const _e=he("timeTracking",()=>{const d=U(new Map),u=U(new Map),k=U(new Map),m=U(!1),v=U(null),T=U(!1),p=U(0),E=O(()=>s=>u.value.get(s)||[]),K=O(()=>s=>d.value.get(s)),z=O(()=>s=>d.value.has(s)),h=O(()=>s=>(u.value.get(s)||[]).reduce((l,c)=>l+(c.duration||0),0)),_=O(()=>s=>(u.value.get(s)||[]).reduce((l,c)=>l+(c.duration||0)*(c.hourlyRate||0),0));return{activeTimers:d,timeEntries:u,timerSessions:k,loading:m,error:v,globalTimerRunning:T,activeTimerCount:p,getTimeEntriesForWorkOrder:E,getActiveTimerForUser:K,hasActiveTimer:z,getTotalHoursForWorkOrder:h,getTotalCostForWorkOrder:_,loadTimeEntries:async s=>{try{m.value=!0,v.value=null;const i=await B.getByWorkOrderId(s);return u.value.set(s,i),i}catch(i){throw v.value=i.message||"Failed to load time entries",i}finally{m.value=!1}},addTimeEntry:async(s,i)=>{try{m.value=!0,v.value=null;const l=await B.create({...i,workOrderId:s}),c=u.value.get(s)||[];return u.value.set(s,[l,...c]),l}catch(l){throw v.value=l.message||"Failed to add time entry",l}finally{m.value=!1}},updateTimeEntry:async(s,i,l)=>{try{m.value=!0,v.value=null;const c=await B.update(i,l),D=u.value.get(s)||[],C=D.findIndex(q=>q.id===i);return C!==-1&&(D[C]=c,u.value.set(s,[...D])),c}catch(c){throw v.value=c.message||"Failed to update time entry",c}finally{m.value=!1}},removeTimeEntry:async(s,i)=>{try{m.value=!0,v.value=null,await B.delete(i);const c=(u.value.get(s)||[]).filter(D=>D.id!==i);return u.value.set(s,c),!0}catch(l){throw v.value=l.message||"Failed to remove time entry",l}finally{m.value=!1}},startTimer:async(s,i,l={})=>{try{if(m.value=!0,v.value=null,d.value.has(s))throw new Error("User already has an active timer");const c=await B.startTimer({userId:s,workOrderId:i,...l});return d.value.set(s,{...c,workOrderId:i,startTime:new Date,localElapsed:0}),p.value=d.value.size,T.value=p.value>0,c}catch(c){throw v.value=c.message||"Failed to start timer",c}finally{m.value=!1}},stopTimer:async(s,i={})=>{try{m.value=!0,v.value=null;const l=d.value.get(s);if(!l)throw new Error("No active timer found for user");const c=await B.stopTimer(l.id,i),D=l.workOrderId,C=u.value.get(D)||[];return u.value.set(D,[c,...C]),d.value.delete(s),p.value=d.value.size,T.value=p.value>0,c}catch(l){throw v.value=l.message||"Failed to stop timer",l}finally{m.value=!1}},updateTimerElapsed:(s,i)=>{const l=d.value.get(s);l&&(l.localElapsed=i,d.value.set(s,{...l}))},loadActiveTimers:async s=>{try{const i=await B.getActiveTimers(s);return i.forEach(l=>{d.value.set(l.userId,{...l,startTime:new Date(l.startTime),localElapsed:0})}),p.value=d.value.size,T.value=p.value>0,i}catch(i){return console.error("Failed to load active timers:",i),[]}},getSummary:async s=>{try{return await B.getSummary(s)}catch(i){throw v.value=i.message||"Failed to get time tracking summary",i}},clearWorkOrderData:s=>{u.value.delete(s)},clearUserTimer:s=>{d.value.delete(s),p.value=d.value.size,T.value=p.value>0},clearError:()=>{v.value=null},enableAutoSave:(s=3e4)=>{setInterval(()=>{d.value.forEach((i,l)=>{i.localElapsed>0&&console.log(`Auto-saving timer for user ${l}: ${i.localElapsed}`)})},s)}}});function be(d={}){const{workOrderId:u=null,userId:k=null,userOptions:m=[],autoSave:v=!1,autoSaveInterval:T=3e4,persistToLocalStorage:p=!0}=d,E=_e(),{loading:K,error:z}=Te(E),h=U([]),_=U(!1),w=U({startTime:null,userId:null,description:"",workOrderId:null}),M=U(0);let V=null,$=null;const N=`timer_session_${k}_${u}`,b=U({userId:null,hours:null,description:""}),H=O(()=>b.value?!!(b.value.userId&&b.value.hours&&b.value.hours>0):!1),G=O(()=>h.value.reduce((e,r)=>e+(r.duration||0),0)),Q=O(()=>h.value.reduce((e,r)=>e+(r.duration||0)*(r.hourlyRate||0),0)),X=O(()=>k?E.hasActiveTimer(k):!1),W=O(()=>le(M.value)),P=async(e={})=>{if(!k||!u)throw new Error("User ID and Work Order ID are required to start timer");try{const r=new Date;w.value={startTime:r,userId:k,description:e.description||"",workOrderId:u,...e},_.value=!0,M.value=0,a(),d.useServerTimer&&await E.startTimer(k,u,e),p&&Z(),v&&x()}catch(r){throw _.value=!1,w.value={startTime:null,userId:null,description:"",workOrderId:null},r}},Y=async(e={})=>{if(!_.value)return null;try{const r=M.value,S=new Date,j=Math.max(3e-4,Math.round(r*1e4)/1e4),L={type:"timer",userId:w.value.userId,workOrderId:w.value.workOrderId,startTime:w.value.startTime,endTime:S,duration:j,description:e.description||w.value.description||"Timer session",date:new Date().toISOString().split("T")[0],hourlyRate:fe(w.value.userId),...e};o(),re();const de={id:Date.now()+Math.random(),...L,user:ie(w.value.userId),editing:!1};return h.value.unshift(de),d.useServerTimer&&k?await E.stopTimer(k,e):u&&await E.addTimeEntry(u,L),l(),p&&ee(),de}catch(r){throw console.error("Failed to stop timer:",r),r}},s=()=>{V&&(clearInterval(V),V=null),re()},i=()=>{_.value&&!V&&(a(),v&&x())},l=()=>{_.value=!1,M.value=0,w.value={startTime:null,userId:null,description:"",workOrderId:null}},c=async()=>{var e;if(!H.value||!u)return null;try{const r=m.find(L=>L.value===b.value.userId),S={type:"manual",userId:b.value.userId,workOrderId:u,duration:parseFloat(b.value.hours),description:b.value.description||"Manual entry",date:new Date().toISOString().split("T")[0],hourlyRate:((e=r==null?void 0:r.data)==null?void 0:e.hourlyRate)||0},j={id:Date.now()+Math.random(),...S,user:(r==null?void 0:r.data)||null,editing:!1};return h.value.unshift(j),await E.addTimeEntry(u,S),b.value={userId:null,hours:null,description:""},j}catch(r){throw console.error("Failed to add manual entry:",r),r}},D=e=>{h.value[e]&&(h.value[e].editing=!0)},C=async e=>{const r=h.value[e];if(!(!r||!u))try{r.editing=!1,await E.updateTimeEntry(u,r.id,r)}catch(S){throw console.error("Failed to save edited entry:",S),S}},q=e=>{h.value[e]&&(h.value[e].editing=!1)},g=async e=>{const r=h.value[e];if(!(!r||!u))try{h.value.splice(e,1),await E.removeTimeEntry(u,r.id)}catch(S){throw h.value.splice(e,0,r),S}},a=()=>{V||(V=setInterval(()=>{I()},1e3))},o=()=>{V&&(clearInterval(V),V=null)},I=()=>{if(w.value.startTime){const r=Date.now()-w.value.startTime.getTime();M.value=r/(1e3*60*60),k&&d.useServerTimer&&E.updateTimerElapsed(k,M.value)}},x=()=>{!v||$||($=setInterval(()=>{_.value&&p&&Z()},T))},re=()=>{$&&(clearInterval($),$=null)},Z=()=>{try{const e={isTracking:_.value,currentSession:w.value,currentElapsed:M.value,timestamp:Date.now()};localStorage.setItem(N,JSON.stringify(e))}catch(e){console.warn("Failed to save timer to localStorage:",e)}},ne=()=>{try{const e=localStorage.getItem(N);if(!e)return!1;const r=JSON.parse(e);return Date.now()-r.timestamp>36e5?(ee(),!1):r.isTracking?(w.value={...r.currentSession,startTime:new Date(r.currentSession.startTime)},M.value=r.currentElapsed,_.value=!0,a(),v&&x(),!0):!1}catch(e){return console.warn("Failed to load timer from localStorage:",e),ee(),!1}},ee=()=>{try{localStorage.removeItem(N)}catch(e){console.warn("Failed to clear timer from localStorage:",e)}},le=e=>{if(!e||e<0||!isFinite(e)||isNaN(e))return"0:00:00";const r=Math.floor(e*3600),S=Math.floor(r/3600),j=Math.floor(r%3600/60),L=r%60;return S===0?`${j.toString().padStart(2,"0")}:${L.toString().padStart(2,"0")}`:`${S}:${j.toString().padStart(2,"0")}:${L.toString().padStart(2,"0")}`},pe=e=>e?new Date(e).toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit"}):"",ge=e=>e?new Date(e).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}):"",ie=e=>{var r;return((r=m.find(S=>S.value===e))==null?void 0:r.data)||null},fe=e=>{var r;return((r=ie(e))==null?void 0:r.hourlyRate)||0},ae=async()=>{if(!u)return[];try{const e=await E.loadTimeEntries(u);return h.value=e.map(r=>({...r,editing:!1})),e}catch(e){throw console.error("Failed to load time entries:",e),e}},ye=()=>{if(u)return ae()};oe(()=>u,e=>{e&&ae()},{immediate:!0});const ue=()=>{o(),re(),p&&_.value&&Z()};return p&&k&&u&&ne(),we(ue),{timeEntries:h,isTracking:_,currentSession:w,currentElapsed:M,manualEntry:b,loading:K,error:z,canAddManualEntry:H,totalHours:G,totalCost:Q,hasActiveTimer:X,currentSessionDuration:W,startTimer:P,stopTimer:Y,pauseTimer:s,resumeTimer:i,resetTimer:l,addManualEntry:c,editEntry:D,saveEditedEntry:C,cancelEditEntry:q,removeEntry:g,loadTimeEntries:ae,refreshTimeEntries:ye,formatDuration:le,formatTime:pe,formatDate:ge,saveTimerToLocalStorage:Z,loadTimerFromLocalStorage:ne,clearTimerFromLocalStorage:ee,updateElapsedTime:I,cleanup:ue}}const Ie={class:"time-tracker"},Fe={class:"flex items-center justify-between mb-4"},Ve={class:"flex items-center space-x-2"},Me={key:0,class:"flex items-center text-sm text-green-600"},De={key:0,class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},Ue={key:1,class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},Ce={key:0,class:"mb-6 p-4 bg-green-50 border border-green-200 rounded-lg"},Oe={class:"flex items-center justify-between"},ze={class:"text-xs text-green-700"},Ae={class:"text-right"},Re={class:"text-2xl font-bold text-green-900","data-testid":"current-elapsed"},$e={class:"mb-6 p-4 bg-gray-50 rounded-lg"},Be={class:"grid grid-cols-1 md:grid-cols-4 gap-3"},je={key:1,class:"space-y-3"},Le={class:"flex items-center justify-between"},Ne={class:"flex-1"},He={class:"flex items-center space-x-3"},We={class:"flex-1"},Pe={key:0},qe={class:"font-medium text-gray-900"},Je={key:0,class:"text-sm text-gray-600"},Ke={class:"flex items-center space-x-4 text-xs text-gray-500 mt-1"},Ge={key:0},Qe={key:0},Xe={key:1},Ye={class:"inline-flex items-center px-2 py-1 rounded-full text-xs bg-blue-100 text-blue-800"},Ze={key:1,class:"space-y-2"},et={class:"grid grid-cols-2 gap-2"},tt={class:"flex items-center space-x-3"},rt={class:"text-right"},at={key:0},st={class:"text-lg font-semibold text-gray-900"},ot={class:"text-xs text-gray-500"},nt={key:1},lt={class:"flex items-center space-x-1"},it=["onClick"],ut=["onClick"],dt=["onClick"],ct=["onClick"],mt={key:2,class:"text-center py-8 text-gray-500"},vt={key:3,class:"mt-6 p-4 bg-gray-50 rounded-lg"},pt={class:"grid grid-cols-3 gap-4 text-center"},gt={class:"text-lg font-semibold text-gray-900"},ft={class:"text-lg font-semibold text-gray-900"},yt={class:"text-lg font-semibold text-gray-900"},ht={__name:"TimeTracker",props:{modelValue:{type:Array,default:()=>[]},workOrderId:{type:[String,Number],required:!0},disabled:{type:Boolean,default:!1},userOptions:{type:Array,default:()=>[]},currentUser:{type:Object,default:null},autoSave:{type:Boolean,default:!0},useServerTimer:{type:Boolean,default:!1}},emits:["update:modelValue","timer-started","timer-stopped","entry-added"],setup(d,{expose:u,emit:k}){var q;const m=d,v=k,{timeEntries:T,isTracking:p,currentSession:E,currentElapsed:K,manualEntry:z,loading:h,canAddManualEntry:_,totalHours:w,totalCost:M,startTimer:V,stopTimer:$,resetTimer:N,addManualEntry:b,editEntry:H,saveEditedEntry:G,cancelEditEntry:Q,removeEntry:X,formatDuration:W,formatTime:P,formatDate:Y,updateElapsedTime:s}=be({workOrderId:m.workOrderId,userId:(q=m.currentUser)==null?void 0:q.id,userOptions:m.userOptions,autoSave:m.autoSave,useServerTimer:m.useServerTimer,persistToLocalStorage:!0}),i=async()=>{if(!m.disabled)try{if(p.value){const g=await $();v("timer-stopped",g)}else await V({description:"Timer session"}),v("timer-started",E.value)}catch(g){console.error("Timer toggle failed:",g)}},l=async()=>{try{const g=await b();g&&(v("entry-added",g),C())}catch(g){console.error("Failed to add manual entry:",g)}},c=async g=>{try{await X(g),C()}catch(a){console.error("Failed to remove entry:",a)}},D=async g=>{try{await G(g),C()}catch(a){console.error("Failed to save edited entry:",a)}},C=()=>{v("update:modelValue",T.value)};return oe(()=>m.modelValue,g=>{if(g&&g.length!==T.value.length){const a=new Set(T.value.map(I=>I.id)),o=new Set(g.map(I=>I.id));(a.size!==o.size||!Array.from(a).every(I=>o.has(I)))&&(T.value=[...g])}},{deep:!0}),oe(T,()=>{C()},{deep:!0}),O(()=>{var g;return((g=m.currentUser)==null?void 0:g.hourlyRate)||0}),u({updateElapsedTime:s,startTimer:V,stopTimer:$,addManualEntry:b,editEntry:H,saveEditedEntry:G,cancelEditEntry:Q,toggleTimer:i,resetTimer:N}),(g,a)=>(f(),y("div",Ie,[t("div",Fe,[a[6]||(a[6]=t("h3",{class:"text-lg font-medium text-gray-900"},"Labor Time Tracking",-1)),t("div",Ve,[n(p)?(f(),y("span",Me,a[3]||(a[3]=[t("div",{class:"w-2 h-2 bg-green-500 rounded-full mr-2 animate-pulse"},null,-1),te(" Recording time ",-1)]))):A("",!0),R(n(me),{variant:n(p)?"danger":"primary",size:"sm",onClick:i,disabled:d.disabled||n(h),"data-testid":n(p)?"stop-timer-btn":"start-timer-btn"},{default:ce(()=>[n(p)?(f(),y("svg",Ue,a[5]||(a[5]=[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 12a9 9 0 11-18 0 9 9 0 0118 0z"},null,-1),t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 10a1 1 0 011-1h4a1 1 0 011 1v4a1 1 0 01-1 1h-4a1 1 0 01-1-1v-4z"},null,-1)]))):(f(),y("svg",De,a[4]||(a[4]=[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M14.828 14.828a4 4 0 01-5.656 0M9 10h1m4 0h1m-6 4h1m4 0h1m-6-8h1m4 0h1M8 21l4-7 4 7M3 4h18M4 4h16v12a1 1 0 01-1 1H5a1 1 0 01-1-1V4z"},null,-1)]))),te(" "+F(n(p)?"Stop Timer":"Start Timer"),1)]),_:1},8,["variant","disabled","data-testid"])])]),n(p)?(f(),y("div",Ce,[t("div",Oe,[t("div",null,[a[7]||(a[7]=t("h4",{class:"text-sm font-medium text-green-900"},"Current Session",-1)),t("p",ze," Started at "+F(n(P)(n(E).startTime)),1)]),t("div",Ae,[t("div",Re,F(n(W)(n(K))),1),a[8]||(a[8]=t("p",{class:"text-xs text-green-700"},"elapsed",-1))])])])):A("",!0),t("div",$e,[a[10]||(a[10]=t("h4",{class:"text-sm font-medium text-gray-900 mb-3"},"Add Manual Entry",-1)),t("div",Be,[R(n(ve),{modelValue:n(z).userId,"onUpdate:modelValue":a[0]||(a[0]=o=>n(z).userId=o),placeholder:"Select user",options:d.userOptions,size:"sm"},null,8,["modelValue","options"]),R(n(J),{modelValue:n(z).hours,"onUpdate:modelValue":a[1]||(a[1]=o=>n(z).hours=o),type:"number",step:"0.25",min:"0",max:"24",placeholder:"Hours",size:"sm"},null,8,["modelValue"]),R(n(J),{modelValue:n(z).description,"onUpdate:modelValue":a[2]||(a[2]=o=>n(z).description=o),placeholder:"Description",size:"sm"},null,8,["modelValue"]),R(n(me),{variant:"outline",size:"sm",onClick:l,disabled:!n(_)||n(h)},{default:ce(()=>a[9]||(a[9]=[te(" Add Entry ",-1)])),_:1,__:[9]},8,["disabled"])])]),n(T).length>0?(f(),y("div",je,[(f(!0),y(se,null,ke(n(T),(o,I)=>(f(),y("div",{key:o.id||I,class:"time-entry border border-gray-200 rounded-lg p-4 transition-all duration-200"},[t("div",Le,[t("div",Ne,[t("div",He,[o.user?(f(),Ee(n(Se),{key:0,user:o.user,size:"sm"},null,8,["user"])):A("",!0),t("div",We,[o.editing?(f(),y("div",Ze,[R(n(ve),{modelValue:o.userId,"onUpdate:modelValue":x=>o.userId=x,options:d.userOptions,placeholder:"Select user",size:"sm"},null,8,["modelValue","onUpdate:modelValue","options"]),R(n(J),{modelValue:o.description,"onUpdate:modelValue":x=>o.description=x,placeholder:"Description",size:"sm"},null,8,["modelValue","onUpdate:modelValue"]),t("div",et,[R(n(J),{modelValue:o.date,"onUpdate:modelValue":x=>o.date=x,type:"date",size:"sm"},null,8,["modelValue","onUpdate:modelValue"]),R(n(J),{modelValue:o.hourlyRate,"onUpdate:modelValue":x=>o.hourlyRate=x,modelModifiers:{number:!0},type:"number",step:"0.01",placeholder:"Hourly rate",size:"sm"},null,8,["modelValue","onUpdate:modelValue"])])])):(f(),y("div",Pe,[t("h4",qe,F(o.user?`${o.user.firstName} ${o.user.lastName}`:"Unknown User"),1),o.description?(f(),y("p",Je,F(o.description),1)):A("",!0),t("div",Ke,[o.startTime?(f(),y("span",Ge,[te(F(n(P)(o.startTime))+" ",1),o.endTime?(f(),y("span",Qe," - "+F(n(P)(o.endTime)),1)):A("",!0)])):A("",!0),o.date?(f(),y("span",Xe,F(n(Y)(o.date)),1)):A("",!0),t("span",Ye,F(o.type==="timer"?"Timer":"Manual"),1)])]))])])]),t("div",tt,[t("div",rt,[o.editing?(f(),y("div",nt,[R(n(J),{modelValue:o.duration,"onUpdate:modelValue":x=>o.duration=x,modelModifiers:{number:!0},type:"number",step:"0.01",min:"0",placeholder:"Hours",size:"sm",class:"w-20"},null,8,["modelValue","onUpdate:modelValue"]),a[11]||(a[11]=t("div",{class:"text-xs text-gray-500 mt-1"}," hours ",-1))])):(f(),y("div",at,[t("div",st,F(n(W)(o.duration)),1),t("div",ot," $"+F((o.duration*(o.hourlyRate||0)).toFixed(2)),1)]))]),t("div",lt,[o.editing?(f(),y(se,{key:1},[t("button",{onClick:x=>D(I),class:"p-1 text-green-500 hover:text-green-600 rounded",title:"Save changes"},a[14]||(a[14]=[t("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M5 13l4 4L19 7"})],-1)]),8,dt),t("button",{onClick:x=>n(Q)(I),class:"p-1 text-gray-400 hover:text-gray-600 rounded",title:"Cancel editing"},a[15]||(a[15]=[t("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})],-1)]),8,ct)],64)):(f(),y(se,{key:0},[d.disabled?A("",!0):(f(),y("button",{key:0,onClick:x=>n(H)(I),class:"p-1 text-gray-400 hover:text-gray-600 rounded",title:"Edit entry"},a[12]||(a[12]=[t("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1)]),8,it)),d.disabled?A("",!0):(f(),y("button",{key:1,onClick:x=>c(I),class:"p-1 text-red-400 hover:text-red-600 rounded",title:"Remove entry"},a[13]||(a[13]=[t("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1)]),8,ut))],64))])])])]))),128))])):(f(),y("div",mt,a[16]||(a[16]=[t("svg",{class:"w-12 h-12 mx-auto mb-4 text-gray-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})],-1),t("p",{class:"text-sm"},"No time entries recorded",-1),t("p",{class:"text-xs text-gray-400 mt-1"},'Click "Start Timer" to begin tracking time',-1)]))),n(T).length>0?(f(),y("div",vt,[t("div",pt,[t("div",null,[t("div",gt,F(n(W)(n(w))),1),a[17]||(a[17]=t("div",{class:"text-xs text-gray-500"},"Total Hours",-1))]),t("div",null,[t("div",ft,"$"+F(n(M).toFixed(2)),1),a[18]||(a[18]=t("div",{class:"text-xs text-gray-500"},"Total Cost",-1))]),t("div",null,[t("div",yt,F(n(T).length),1),a[19]||(a[19]=t("div",{class:"text-xs text-gray-500"},"Entries",-1))])])])):A("",!0)]))}},Et=xe(ht,[["__scopeId","data-v-94245190"]]);export{Et as T}; diff --git a/frontend/dist/assets/UnauthorizedView-CevgHCyZ.js b/frontend/dist/assets/UnauthorizedView-WX3S9B4Q.js similarity index 80% rename from frontend/dist/assets/UnauthorizedView-CevgHCyZ.js rename to frontend/dist/assets/UnauthorizedView-WX3S9B4Q.js index 5c40f1b8..e96b78ac 100644 --- a/frontend/dist/assets/UnauthorizedView-CevgHCyZ.js +++ b/frontend/dist/assets/UnauthorizedView-WX3S9B4Q.js @@ -1 +1 @@ -import{_ as a,i as d,w as e,g as n,d as o,b as s,a2 as i,k as r,V as l}from"./index-BUdRbiwj.js";import{V as f}from"./VContainer-Cf71ALK9.js";const m={};function _(p,t){return n(),d(f,{class:"text-center"},{default:e(()=>[o(i,{size:"120",color:"error"},{default:e(()=>t[0]||(t[0]=[r("mdi-shield-alert",-1)])),_:1,__:[0]}),t[2]||(t[2]=s("h1",{class:"text-h2 mb-4"},"403 - Unauthorized",-1)),t[3]||(t[3]=s("p",{class:"text-h6 mb-6"},"You don't have permission to access this page.",-1)),o(l,{color:"primary",to:"/dashboard"},{default:e(()=>t[1]||(t[1]=[r("Go to Dashboard",-1)])),_:1,__:[1]})]),_:1,__:[2,3]})}const c=a(m,[["render",_]]);export{c as default}; +import{_ as a,i as d,w as e,g as n,d as o,b as s,a2 as i,k as r,V as l}from"./index-QAlcqU00.js";import{V as f}from"./VContainer-DnjqAjRY.js";const m={};function _(p,t){return n(),d(f,{class:"text-center"},{default:e(()=>[o(i,{size:"120",color:"error"},{default:e(()=>t[0]||(t[0]=[r("mdi-shield-alert",-1)])),_:1,__:[0]}),t[2]||(t[2]=s("h1",{class:"text-h2 mb-4"},"403 - Unauthorized",-1)),t[3]||(t[3]=s("p",{class:"text-h6 mb-6"},"You don't have permission to access this page.",-1)),o(l,{color:"primary",to:"/dashboard"},{default:e(()=>t[1]||(t[1]=[r("Go to Dashboard",-1)])),_:1,__:[1]})]),_:1,__:[2,3]})}const c=a(m,[["render",_]]);export{c as default}; diff --git a/frontend/dist/assets/VContainer-Cf71ALK9.js b/frontend/dist/assets/VContainer-DnjqAjRY.js similarity index 85% rename from frontend/dist/assets/VContainer-Cf71ALK9.js rename to frontend/dist/assets/VContainer-DnjqAjRY.js index de3e1bb3..15524d84 100644 --- a/frontend/dist/assets/VContainer-Cf71ALK9.js +++ b/frontend/dist/assets/VContainer-DnjqAjRY.js @@ -1 +1 @@ -import{x as t,C as l,aE as r,J as i,a6 as m,T as c,Z as u,y as C,d,Q as y,n as f}from"./index-BUdRbiwj.js";const p=l({fluid:{type:Boolean,default:!1},...C(),...u(),...c()},"VContainer"),k=t()({name:"VContainer",props:p(),setup(e,a){let{slots:s}=a;const{rtlClasses:n}=r(),{dimensionStyles:o}=i(e);return m(()=>d(e.tag,{class:f(["v-container",{"v-container--fluid":e.fluid},n.value,e.class]),style:y([o.value,e.style])},s)),{}}});export{k as V}; +import{x as t,C as l,aE as r,J as i,a6 as m,T as c,Z as u,y as C,d,Q as y,n as f}from"./index-QAlcqU00.js";const p=l({fluid:{type:Boolean,default:!1},...C(),...u(),...c()},"VContainer"),k=t()({name:"VContainer",props:p(),setup(e,a){let{slots:s}=a;const{rtlClasses:n}=r(),{dimensionStyles:o}=i(e);return m(()=>d(e.tag,{class:f(["v-container",{"v-container--fluid":e.fluid},n.value,e.class]),style:y([o.value,e.style])},s)),{}}});export{k as V}; diff --git a/frontend/dist/assets/VTextField-CU5R_EKn.js b/frontend/dist/assets/VTextField-BNQ_nyd-.js similarity index 99% rename from frontend/dist/assets/VTextField-CU5R_EKn.js rename to frontend/dist/assets/VTextField-BNQ_nyd-.js index 91b3cbc0..4dcfe7f5 100644 --- a/frontend/dist/assets/VTextField-CU5R_EKn.js +++ b/frontend/dist/assets/VTextField-BNQ_nyd-.js @@ -1 +1 @@ -import{x as z,y as T,z as Ve,A as ve,B as Ge,C as A,c as V,D as fe,E,G as ge,H as Pe,I as ke,J as _e,K as Ke,L as qe,M as Je,N as me,O as Be,P as Ye,d,Q as M,n as L,R as Ae,S as ue,T as se,U as ye,W as Xe,X as Qe,Y as Ze,Z as Ie,$ as be,a0 as q,a1 as we,b as v,a2 as de,a3 as Q,a4 as ie,V as Ht,a5 as Gt,a6 as D,a7 as pe,a8 as et,a9 as tt,aa as p,r as J,m as X,ab as nt,ac as ce,ad as at,ae as oe,af as ae,ag as lt,ah as $e,ai as ze,aj as re,ak as it,al as Kt,am as qt,an as st,t as Ne,ao as Ee,ap as rt,aq as Jt,ar as Yt,as as ot,at as ut,au as Xt,av as ct,aw as Qt,ax as dt,ay as xe,az as vt,aA as ft,aB as le,aC as gt,aD as mt,aE as yt,aF as Le,aG as Zt,aH as pt,aI as en,aJ as Se,e as tn,o as nn,aK as Me,aL as an,aM as ln,aN as sn}from"./index-BUdRbiwj.js";import"./VContainer-Cf71ALK9.js";function bt(e){let l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"div",n=arguments.length>2?arguments[2]:void 0;return z()({name:n??Ve(Ge(e.replace(/__/g,"-"))),props:{tag:{type:String,default:l},...T()},setup(t,a){let{slots:i}=a;return()=>{var s;return ve(t.tag,{class:[e,t.class],style:t.style},(s=i.default)==null?void 0:s.call(i))}}})}const rn=bt("v-alert-title"),on=A({iconSize:[Number,String],iconSizes:{type:Array,default:()=>[["x-small",10],["small",16],["default",24],["large",28],["x-large",32]]}},"iconSize");function un(e,l){return{iconSize:V(()=>{const t=new Map(e.iconSizes),a=e.iconSize??l()??"default";return t.has(a)?t.get(a):a})}}const cn=["success","info","warning","error"],dn=A({border:{type:[Boolean,String],validator:e=>typeof e=="boolean"||["top","end","bottom","start"].includes(e)},borderColor:String,closable:Boolean,closeIcon:{type:q,default:"$close"},closeLabel:{type:String,default:"$vuetify.close"},icon:{type:[Boolean,String,Function,Object],default:null},modelValue:{type:Boolean,default:!0},prominent:Boolean,title:String,text:String,type:{type:String,validator:e=>cn.includes(e)},...T(),...be(),...Ie(),...Ze(),...on(),...Qe(),...Xe(),...ye(),...se(),...ue(),...Ae({variant:"flat"})},"VAlert"),aa=z()({name:"VAlert",props:dn(),emits:{"click:close":e=>!0,"update:modelValue":e=>!0},setup(e,l){let{emit:n,slots:t}=l;const a=fe(e,"modelValue"),i=E(()=>{if(e.icon!==!1)return e.type?e.icon??`$${e.type}`:e.icon}),{iconSize:s}=un(e,()=>e.prominent?44:28),{themeClasses:r}=ge(e),{colorClasses:g,colorStyles:c,variantClasses:o}=Pe(()=>({color:e.color??e.type,variant:e.variant})),{densityClasses:u}=ke(e),{dimensionStyles:y}=_e(e),{elevationClasses:m}=Ke(e),{locationStyles:k}=qe(e),{positionClasses:w}=Je(e),{roundedClasses:_}=me(e),{textColorClasses:N,textColorStyles:I}=Be(()=>e.borderColor),{t:P}=Ye(),f=E(()=>({"aria-label":P(e.closeLabel),onClick(S){a.value=!1,n("click:close",S)}}));return()=>{const S=!!(t.prepend||i.value),h=!!(t.title||e.title),$=!!(t.close||e.closable),B={density:e.density,icon:i.value,size:s.value};return a.value&&d(e.tag,{class:L(["v-alert",e.border&&{"v-alert--border":!!e.border,[`v-alert--border-${e.border===!0?"start":e.border}`]:!0},{"v-alert--prominent":e.prominent},r.value,g.value,u.value,m.value,w.value,_.value,o.value,e.class]),style:M([c.value,y.value,k.value,e.style]),role:"alert"},{default:()=>{var R,W;return[we(!1,"v-alert"),e.border&&v("div",{key:"border",class:L(["v-alert__border",N.value]),style:M(I.value)},null),S&&v("div",{key:"prepend",class:"v-alert__prepend"},[t.prepend?d(ie,{key:"prepend-defaults",disabled:!i.value,defaults:{VIcon:{...B}}},t.prepend):d(de,Q({key:"prepend-icon"},B),null)]),v("div",{class:"v-alert__content"},[h&&d(rn,{key:"title"},{default:()=>{var F;return[((F=t.title)==null?void 0:F.call(t))??e.title]}}),((R=t.text)==null?void 0:R.call(t))??e.text,(W=t.default)==null?void 0:W.call(t)]),t.append&&v("div",{key:"append",class:"v-alert__append"},[t.append()]),$&&v("div",{key:"close",class:"v-alert__close"},[t.close?d(ie,{key:"close-defaults",defaults:{VBtn:{icon:e.closeIcon,size:"x-small",variant:"text"}}},{default:()=>{var F;return[(F=t.close)==null?void 0:F.call(t,{props:f.value})]}}):d(Ht,Q({key:"close-btn",icon:e.closeIcon,size:"x-small",variant:"text"},f.value),null)])]}})}}}),vn=z()({name:"VCardActions",props:T(),setup(e,l){let{slots:n}=l;return Gt({VBtn:{slim:!0,variant:"text"}}),D(()=>{var t;return v("div",{class:L(["v-card-actions",e.class]),style:M(e.style)},[(t=n.default)==null?void 0:t.call(n)])}),{}}}),fn=A({opacity:[Number,String],...T(),...se()},"VCardSubtitle"),gn=z()({name:"VCardSubtitle",props:fn(),setup(e,l){let{slots:n}=l;return D(()=>d(e.tag,{class:L(["v-card-subtitle",e.class]),style:M([{"--v-card-subtitle-opacity":e.opacity},e.style])},n)),{}}}),mn=bt("v-card-title");function yn(e){return{aspectStyles:V(()=>{const l=Number(e.aspectRatio);return l?{paddingBottom:String(1/l*100)+"%"}:void 0})}}const ht=A({aspectRatio:[String,Number],contentClass:null,inline:Boolean,...T(),...Ie()},"VResponsive"),De=z()({name:"VResponsive",props:ht(),setup(e,l){let{slots:n}=l;const{aspectStyles:t}=yn(e),{dimensionStyles:a}=_e(e);return D(()=>{var i;return v("div",{class:L(["v-responsive",{"v-responsive--inline":e.inline},e.class]),style:M([a.value,e.style])},[v("div",{class:"v-responsive__sizer",style:M(t.value)},null),(i=n.additional)==null?void 0:i.call(n),n.default&&v("div",{class:L(["v-responsive__content",e.contentClass])},[n.default()])])}),{}}});function bn(e,l){if(!pe)return;const n=l.modifiers||{},t=l.value,{handler:a,options:i}=typeof t=="object"?t:{handler:t,options:{}},s=new IntersectionObserver(function(){var u;let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],g=arguments.length>1?arguments[1]:void 0;const c=(u=e._observe)==null?void 0:u[l.instance.$.uid];if(!c)return;const o=r.some(y=>y.isIntersecting);a&&(!n.quiet||c.init)&&(!n.once||o||c.init)&&a(o,r,g),o&&n.once?St(e,l):c.init=!0},i);e._observe=Object(e._observe),e._observe[l.instance.$.uid]={init:!1,observer:s},s.observe(e)}function St(e,l){var t;const n=(t=e._observe)==null?void 0:t[l.instance.$.uid];n&&(n.observer.unobserve(e),delete e._observe[l.instance.$.uid])}const Ce={mounted:bn,unmounted:St},hn=A({absolute:Boolean,alt:String,cover:Boolean,color:String,draggable:{type:[Boolean,String],default:void 0},eager:Boolean,gradient:String,lazySrc:String,options:{type:Object,default:()=>({root:void 0,rootMargin:void 0,threshold:void 0})},sizes:String,src:{type:[String,Object],default:""},crossorigin:String,referrerpolicy:String,srcset:String,position:String,...ht(),...T(),...ye(),...$e()},"VImg"),Ct=z()({name:"VImg",directives:{vIntersect:Ce},props:hn(),emits:{loadstart:e=>!0,load:e=>!0,error:e=>!0},setup(e,l){let{emit:n,slots:t}=l;const{backgroundColorClasses:a,backgroundColorStyles:i}=et(()=>e.color),{roundedClasses:s}=me(e),r=tt("VImg"),g=p(""),c=J(),o=p(e.eager?"loading":"idle"),u=p(),y=p(),m=V(()=>e.src&&typeof e.src=="object"?{src:e.src.src,srcset:e.srcset||e.src.srcset,lazySrc:e.lazySrc||e.src.lazySrc,aspect:Number(e.aspectRatio||e.src.aspect||0)}:{src:e.src,srcset:e.srcset,lazySrc:e.lazySrc,aspect:Number(e.aspectRatio||0)}),k=V(()=>m.value.aspect||u.value/y.value||0);X(()=>e.src,()=>{w(o.value!=="idle")}),X(k,(b,C)=>{!b&&C&&c.value&&f(c.value)}),nt(()=>w());function w(b){if(!(e.eager&&b)&&!(pe&&!b&&!e.eager)){if(o.value="loading",m.value.lazySrc){const C=new Image;C.src=m.value.lazySrc,f(C,null)}m.value.src&&ce(()=>{var C;n("loadstart",((C=c.value)==null?void 0:C.currentSrc)||m.value.src),setTimeout(()=>{var x;if(!r.isUnmounted)if((x=c.value)!=null&&x.complete){if(c.value.naturalWidth||N(),o.value==="error")return;k.value||f(c.value,null),o.value==="loading"&&_()}else k.value||f(c.value),I()})})}}function _(){var b;r.isUnmounted||(I(),f(c.value),o.value="loaded",n("load",((b=c.value)==null?void 0:b.currentSrc)||m.value.src))}function N(){var b;r.isUnmounted||(o.value="error",n("error",((b=c.value)==null?void 0:b.currentSrc)||m.value.src))}function I(){const b=c.value;b&&(g.value=b.currentSrc||b.src)}let P=-1;at(()=>{clearTimeout(P)});function f(b){let C=arguments.length>1&&arguments[1]!==void 0?arguments[1]:100;const x=()=>{if(clearTimeout(P),r.isUnmounted)return;const{naturalHeight:Y,naturalWidth:O}=b;Y||O?(u.value=O,y.value=Y):!b.complete&&o.value==="loading"&&C!=null?P=window.setTimeout(x,C):(b.currentSrc.endsWith(".svg")||b.currentSrc.startsWith("data:image/svg+xml"))&&(u.value=1,y.value=1)};x()}const S=E(()=>({"v-img__img--cover":e.cover,"v-img__img--contain":!e.cover})),h=()=>{var x;if(!m.value.src||o.value==="idle")return null;const b=v("img",{class:L(["v-img__img",S.value]),style:{objectPosition:e.position},crossorigin:e.crossorigin,src:m.value.src,srcset:m.value.srcset,alt:e.alt,referrerpolicy:e.referrerpolicy,draggable:e.draggable,sizes:e.sizes,ref:c,onLoad:_,onError:N},null),C=(x=t.sources)==null?void 0:x.call(t);return d(re,{transition:e.transition,appear:!0},{default:()=>[oe(C?v("picture",{class:"v-img__picture"},[C,b]):b,[[ze,o.value==="loaded"]])]})},$=()=>d(re,{transition:e.transition},{default:()=>[m.value.lazySrc&&o.value!=="loaded"&&v("img",{class:L(["v-img__img","v-img__img--preload",S.value]),style:{objectPosition:e.position},crossorigin:e.crossorigin,src:m.value.lazySrc,alt:e.alt,referrerpolicy:e.referrerpolicy,draggable:e.draggable},null)]}),B=()=>t.placeholder?d(re,{transition:e.transition,appear:!0},{default:()=>[(o.value==="loading"||o.value==="error"&&!t.error)&&v("div",{class:"v-img__placeholder"},[t.placeholder()])]}):null,R=()=>t.error?d(re,{transition:e.transition,appear:!0},{default:()=>[o.value==="error"&&v("div",{class:"v-img__error"},[t.error()])]}):null,W=()=>e.gradient?v("div",{class:"v-img__gradient",style:{backgroundImage:`linear-gradient(${e.gradient})`}},null):null,F=p(!1);{const b=X(k,C=>{C&&(requestAnimationFrame(()=>{requestAnimationFrame(()=>{F.value=!0})}),b())})}return D(()=>{const b=De.filterProps(e);return oe(d(De,Q({class:["v-img",{"v-img--absolute":e.absolute,"v-img--booting":!F.value},a.value,s.value,e.class],style:[{width:lt(e.width==="auto"?u.value:e.width)},i.value,e.style]},b,{aspectRatio:k.value,"aria-label":e.alt,role:e.alt?"img":void 0}),{additional:()=>v(ae,null,[d(h,null,null),d($,null,null),d(W,null,null),d(B,null,null),d(R,null,null)]),default:t.default}),[[Ce,{handler:w,options:e.options},null,{once:!0}]])}),{currentSrc:g,image:c,state:o,naturalWidth:u,naturalHeight:y}}}),Sn=A({start:Boolean,end:Boolean,icon:q,image:String,text:String,...st(),...T(),...be(),...ye(),...qt(),...se(),...ue(),...Ae({variant:"flat"})},"VAvatar"),Oe=z()({name:"VAvatar",props:Sn(),setup(e,l){let{slots:n}=l;const{themeClasses:t}=ge(e),{borderClasses:a}=it(e),{colorClasses:i,colorStyles:s,variantClasses:r}=Pe(e),{densityClasses:g}=ke(e),{roundedClasses:c}=me(e),{sizeClasses:o,sizeStyles:u}=Kt(e);return D(()=>d(e.tag,{class:L(["v-avatar",{"v-avatar--start":e.start,"v-avatar--end":e.end},t.value,a.value,i.value,g.value,c.value,o.value,r.value,e.class]),style:M([s.value,u.value,e.style])},{default:()=>[n.default?d(ie,{key:"content-defaults",defaults:{VImg:{cover:!0,src:e.image},VIcon:{icon:e.icon}}},{default:()=>[n.default()]}):e.image?d(Ct,{key:"image",src:e.image,alt:"",cover:!0},null):e.icon?d(de,{key:"icon",icon:e.icon},null):e.text,we(!1,"v-avatar")]})),{}}}),Cn=A({appendAvatar:String,appendIcon:q,prependAvatar:String,prependIcon:q,subtitle:{type:[String,Number,Boolean],default:void 0},title:{type:[String,Number,Boolean],default:void 0},...T(),...be()},"VCardItem"),Vn=z()({name:"VCardItem",props:Cn(),setup(e,l){let{slots:n}=l;return D(()=>{var c;const t=!!(e.prependAvatar||e.prependIcon),a=!!(t||n.prepend),i=!!(e.appendAvatar||e.appendIcon),s=!!(i||n.append),r=!!(e.title!=null||n.title),g=!!(e.subtitle!=null||n.subtitle);return v("div",{class:L(["v-card-item",e.class]),style:M(e.style)},[a&&v("div",{key:"prepend",class:"v-card-item__prepend"},[n.prepend?d(ie,{key:"prepend-defaults",disabled:!t,defaults:{VAvatar:{density:e.density,image:e.prependAvatar},VIcon:{density:e.density,icon:e.prependIcon}}},n.prepend):v(ae,null,[e.prependAvatar&&d(Oe,{key:"prepend-avatar",density:e.density,image:e.prependAvatar},null),e.prependIcon&&d(de,{key:"prepend-icon",density:e.density,icon:e.prependIcon},null)])]),v("div",{class:"v-card-item__content"},[r&&d(mn,{key:"title"},{default:()=>{var o;return[((o=n.title)==null?void 0:o.call(n))??Ne(e.title)]}}),g&&d(gn,{key:"subtitle"},{default:()=>{var o;return[((o=n.subtitle)==null?void 0:o.call(n))??Ne(e.subtitle)]}}),(c=n.default)==null?void 0:c.call(n)]),s&&v("div",{key:"append",class:"v-card-item__append"},[n.append?d(ie,{key:"append-defaults",disabled:!i,defaults:{VAvatar:{density:e.density,image:e.appendAvatar},VIcon:{density:e.density,icon:e.appendIcon}}},n.append):v(ae,null,[e.appendIcon&&d(de,{key:"append-icon",density:e.density,icon:e.appendIcon},null),e.appendAvatar&&d(Oe,{key:"append-avatar",density:e.density,image:e.appendAvatar},null)])])])}),{}}}),kn=A({opacity:[Number,String],...T(),...se()},"VCardText"),_n=z()({name:"VCardText",props:kn(),setup(e,l){let{slots:n}=l;return D(()=>d(e.tag,{class:L(["v-card-text",e.class]),style:M([{"--v-card-text-opacity":e.opacity},e.style])},n)),{}}}),In=A({appendAvatar:String,appendIcon:q,disabled:Boolean,flat:Boolean,hover:Boolean,image:String,link:{type:Boolean,default:void 0},prependAvatar:String,prependIcon:q,ripple:{type:[Boolean,Object],default:!0},subtitle:{type:[String,Number,Boolean],default:void 0},text:{type:[String,Number,Boolean],default:void 0},title:{type:[String,Number,Boolean],default:void 0},...st(),...T(),...be(),...Ie(),...Ze(),...ot(),...Qe(),...Xe(),...ye(),...Yt(),...se(),...ue(),...Ae({variant:"elevated"})},"VCard"),la=z()({name:"VCard",directives:{vRipple:Ee},props:In(),setup(e,l){let{attrs:n,slots:t}=l;const{themeClasses:a}=ge(e),{borderClasses:i}=it(e),{colorClasses:s,colorStyles:r,variantClasses:g}=Pe(e),{densityClasses:c}=ke(e),{dimensionStyles:o}=_e(e),{elevationClasses:u}=Ke(e),{loaderClasses:y}=rt(e),{locationStyles:m}=qe(e),{positionClasses:k}=Je(e),{roundedClasses:w}=me(e),_=Jt(e,n);return D(()=>{const N=e.link!==!1&&_.isLink.value,I=!e.disabled&&e.link!==!1&&(e.link||_.isClickable.value),P=N?"a":e.tag,f=!!(t.title||e.title!=null),S=!!(t.subtitle||e.subtitle!=null),h=f||S,$=!!(t.append||e.appendAvatar||e.appendIcon),B=!!(t.prepend||e.prependAvatar||e.prependIcon),R=!!(t.image||e.image),W=h||B||$,F=!!(t.text||e.text!=null);return oe(d(P,Q({class:["v-card",{"v-card--disabled":e.disabled,"v-card--flat":e.flat,"v-card--hover":e.hover&&!(e.disabled||e.flat),"v-card--link":I},a.value,i.value,s.value,c.value,u.value,y.value,k.value,w.value,g.value,e.class],style:[r.value,o.value,m.value,e.style],onClick:I&&_.navigate,tabindex:e.disabled?-1:void 0},_.linkProps),{default:()=>{var b;return[R&&v("div",{key:"image",class:"v-card__image"},[t.image?d(ie,{key:"image-defaults",disabled:!e.image,defaults:{VImg:{cover:!0,src:e.image}}},t.image):d(Ct,{key:"image-img",cover:!0,src:e.image},null)]),d(ut,{name:"v-card",active:!!e.loading,color:typeof e.loading=="boolean"?void 0:e.loading},{default:t.loader}),W&&d(Vn,{key:"item",prependAvatar:e.prependAvatar,prependIcon:e.prependIcon,title:e.title,subtitle:e.subtitle,appendAvatar:e.appendAvatar,appendIcon:e.appendIcon},{default:t.item,prepend:t.prepend,title:t.title,subtitle:t.subtitle,append:t.append}),F&&d(_n,{key:"text"},{default:()=>{var C;return[((C=t.text)==null?void 0:C.call(t))??e.text]}}),(b=t.default)==null?void 0:b.call(t),t.actions&&d(vn,null,{default:t.actions}),we(I,"v-card")]}}),[[Ee,I&&e.ripple]])}),{}}}),Vt=Symbol.for("vuetify:form"),xn=A({disabled:Boolean,fastFail:Boolean,readonly:Boolean,modelValue:{type:Boolean,default:null},validateOn:{type:String,default:"input"}},"form");function Pn(e){const l=fe(e,"modelValue"),n=E(()=>e.disabled),t=E(()=>e.readonly),a=p(!1),i=J([]),s=J([]);async function r(){const o=[];let u=!0;s.value=[],a.value=!0;for(const y of i.value){const m=await y.validate();if(m.length>0&&(u=!1,o.push({id:y.id,errorMessages:m})),!u&&e.fastFail)break}return s.value=o,a.value=!1,{valid:u,errors:s.value}}function g(){i.value.forEach(o=>o.reset())}function c(){i.value.forEach(o=>o.resetValidation())}return X(i,()=>{let o=0,u=0;const y=[];for(const m of i.value)m.isValid===!1?(u++,y.push({id:m.id,errorMessages:m.errorMessages})):m.isValid===!0&&o++;s.value=y,l.value=u>0?!1:o===i.value.length?!0:null},{deep:!0,flush:"post"}),Xt(Vt,{register:o=>{let{id:u,vm:y,validate:m,reset:k,resetValidation:w}=o;i.value.some(_=>_.id===u),i.value.push({id:u,validate:m,reset:k,resetValidation:w,vm:Qt(y),isValid:null,errorMessages:[]})},unregister:o=>{i.value=i.value.filter(u=>u.id!==o)},update:(o,u,y)=>{const m=i.value.find(k=>k.id===o);m&&(m.isValid=u,m.errorMessages=y)},isDisabled:n,isReadonly:t,isValidating:a,isValid:l,items:i,validateOn:E(()=>e.validateOn)}),{errors:s,isDisabled:n,isReadonly:t,isValidating:a,isValid:l,items:i,validate:r,reset:g,resetValidation:c}}function Bn(e){const l=ct(Vt,null);return{...l,isReadonly:V(()=>!!((e==null?void 0:e.readonly)??(l==null?void 0:l.isReadonly.value))),isDisabled:V(()=>!!((e==null?void 0:e.disabled)??(l==null?void 0:l.isDisabled.value)))}}const An=A({...T(),...xn()},"VForm"),ia=z()({name:"VForm",props:An(),emits:{"update:modelValue":e=>!0,submit:e=>!0},setup(e,l){let{slots:n,emit:t}=l;const a=Pn(e),i=J();function s(g){g.preventDefault(),a.reset()}function r(g){const c=g,o=a.validate();c.then=o.then.bind(o),c.catch=o.catch.bind(o),c.finally=o.finally.bind(o),t("submit",c),c.defaultPrevented||o.then(u=>{var m;let{valid:y}=u;y&&((m=i.value)==null||m.submit())}),c.preventDefault()}return D(()=>{var g;return v("form",{ref:i,class:L(["v-form",e.class]),style:M(e.style),novalidate:!0,onReset:s,onSubmit:r},[(g=n.default)==null?void 0:g.call(n,a)])}),dt(a,i)}}),kt=xe.reduce((e,l)=>(e[l]={type:[Boolean,String,Number],default:!1},e),{}),_t=xe.reduce((e,l)=>{const n="offset"+Ve(l);return e[n]={type:[String,Number],default:null},e},{}),It=xe.reduce((e,l)=>{const n="order"+Ve(l);return e[n]={type:[String,Number],default:null},e},{}),je={col:Object.keys(kt),offset:Object.keys(_t),order:Object.keys(It)};function wn(e,l,n){let t=e;if(!(n==null||n===!1)){if(l){const a=l.replace(e,"");t+=`-${a}`}return e==="col"&&(t="v-"+t),e==="col"&&(n===""||n===!0)||(t+=`-${n}`),t.toLowerCase()}}const $n=["auto","start","end","center","baseline","stretch"],zn=A({cols:{type:[Boolean,String,Number],default:!1},...kt,offset:{type:[String,Number],default:null},..._t,order:{type:[String,Number],default:null},...It,alignSelf:{type:String,default:null,validator:e=>$n.includes(e)},...T(),...se()},"VCol"),sa=z()({name:"VCol",props:zn(),setup(e,l){let{slots:n}=l;const t=V(()=>{const a=[];let i;for(i in je)je[i].forEach(r=>{const g=e[r],c=wn(i,r,g);c&&a.push(c)});const s=a.some(r=>r.startsWith("v-col-"));return a.push({"v-col":!s||!e.cols,[`v-col-${e.cols}`]:e.cols,[`offset-${e.offset}`]:e.offset,[`order-${e.order}`]:e.order,[`align-self-${e.alignSelf}`]:e.alignSelf}),a});return()=>{var a;return ve(e.tag,{class:[t.value,e.class],style:e.style},(a=n.default)==null?void 0:a.call(n))}}}),Re=["start","end","center"],xt=["space-between","space-around","space-evenly"];function Fe(e,l){return xe.reduce((n,t)=>{const a=e+Ve(t);return n[a]=l(),n},{})}const Ln=[...Re,"baseline","stretch"],Pt=e=>Ln.includes(e),Bt=Fe("align",()=>({type:String,default:null,validator:Pt})),Rn=[...Re,...xt],At=e=>Rn.includes(e),wt=Fe("justify",()=>({type:String,default:null,validator:At})),Fn=[...Re,...xt,"stretch"],$t=e=>Fn.includes(e),zt=Fe("alignContent",()=>({type:String,default:null,validator:$t})),Ue={align:Object.keys(Bt),justify:Object.keys(wt),alignContent:Object.keys(zt)},Tn={align:"align",justify:"justify",alignContent:"align-content"};function Nn(e,l,n){let t=Tn[e];if(n!=null){if(l){const a=l.replace(e,"");t+=`-${a}`}return t+=`-${n}`,t.toLowerCase()}}const En=A({dense:Boolean,noGutters:Boolean,align:{type:String,default:null,validator:Pt},...Bt,justify:{type:String,default:null,validator:At},...wt,alignContent:{type:String,default:null,validator:$t},...zt,...T(),...se()},"VRow"),ra=z()({name:"VRow",props:En(),setup(e,l){let{slots:n}=l;const t=V(()=>{const a=[];let i;for(i in Ue)Ue[i].forEach(s=>{const r=e[s],g=Nn(i,s,r);g&&a.push(g)});return a.push({"v-row--no-gutters":e.noGutters,"v-row--dense":e.dense,[`align-${e.align}`]:e.align,[`justify-${e.justify}`]:e.justify,[`align-content-${e.alignContent}`]:e.alignContent}),a});return()=>{var a;return ve(e.tag,{class:["v-row",t.value,e.class],style:e.style},(a=n.default)==null?void 0:a.call(n))}}}),Mn=A({disabled:Boolean,group:Boolean,hideOnLeave:Boolean,leaveAbsolute:Boolean,mode:String,origin:String},"transition");function U(e,l,n){return z()({name:e,props:Mn({mode:n,origin:l}),setup(t,a){let{slots:i}=a;const s={onBeforeEnter(r){t.origin&&(r.style.transformOrigin=t.origin)},onLeave(r){if(t.leaveAbsolute){const{offsetTop:g,offsetLeft:c,offsetWidth:o,offsetHeight:u}=r;r._transitionInitialStyles={position:r.style.position,top:r.style.top,left:r.style.left,width:r.style.width,height:r.style.height},r.style.position="absolute",r.style.top=`${g}px`,r.style.left=`${c}px`,r.style.width=`${o}px`,r.style.height=`${u}px`}t.hideOnLeave&&r.style.setProperty("display","none","important")},onAfterLeave(r){if(t.leaveAbsolute&&(r!=null&&r._transitionInitialStyles)){const{position:g,top:c,left:o,width:u,height:y}=r._transitionInitialStyles;delete r._transitionInitialStyles,r.style.position=g||"",r.style.top=c||"",r.style.left=o||"",r.style.width=u||"",r.style.height=y||""}}};return()=>{const r=t.group?vt:ft;return ve(r,{name:t.disabled?"":e,css:!t.disabled,...t.group?void 0:{mode:t.mode},...t.disabled?{}:s},i.default)}}})}function Lt(e,l){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"in-out";return z()({name:e,props:{mode:{type:String,default:n},disabled:Boolean,group:Boolean},setup(t,a){let{slots:i}=a;const s=t.group?vt:ft;return()=>ve(s,{name:t.disabled?"":e,css:!t.disabled,...t.disabled?{}:l},i.default)}})}function Rt(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"";const n=(arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1)?"width":"height",t=Ge(`offset-${n}`);return{onBeforeEnter(s){s._parent=s.parentNode,s._initialStyle={transition:s.style.transition,overflow:s.style.overflow,[n]:s.style[n]}},onEnter(s){const r=s._initialStyle;if(!r)return;s.style.setProperty("transition","none","important"),s.style.overflow="hidden";const g=`${s[t]}px`;s.style[n]="0",s.offsetHeight,s.style.transition=r.transition,e&&s._parent&&s._parent.classList.add(e),requestAnimationFrame(()=>{s.style[n]=g})},onAfterEnter:i,onEnterCancelled:i,onLeave(s){s._initialStyle={transition:"",overflow:s.style.overflow,[n]:s.style[n]},s.style.overflow="hidden",s.style[n]=`${s[t]}px`,s.offsetHeight,requestAnimationFrame(()=>s.style[n]="0")},onAfterLeave:a,onLeaveCancelled:a};function a(s){e&&s._parent&&s._parent.classList.remove(e),i(s)}function i(s){if(!s._initialStyle)return;const r=s._initialStyle[n];s.style.overflow=s._initialStyle.overflow,r!=null&&(s.style[n]=r),delete s._initialStyle}}U("fab-transition","center center","out-in");U("dialog-bottom-transition");U("dialog-top-transition");U("fade-transition");U("scale-transition");U("scroll-x-transition");U("scroll-x-reverse-transition");U("scroll-y-transition");U("scroll-y-reverse-transition");U("slide-x-transition");U("slide-x-reverse-transition");const Ft=U("slide-y-transition");U("slide-y-reverse-transition");Lt("expand-transition",Rt());const Dn=Lt("expand-x-transition",Rt("",!0)),On=A({active:Boolean,disabled:Boolean,max:[Number,String],value:{type:[Number,String],default:0},...T(),...$e({transition:{component:Ft}})},"VCounter"),jn=z()({name:"VCounter",functional:!0,props:On(),setup(e,l){let{slots:n}=l;const t=E(()=>e.max?`${e.value} / ${e.max}`:String(e.value));return D(()=>d(re,{transition:e.transition},{default:()=>[oe(v("div",{class:L(["v-counter",{"text-error":e.max&&!e.disabled&&parseFloat(e.value)>parseFloat(e.max)},e.class]),style:M(e.style)},[n.default?n.default({counter:t.value,max:e.max,value:e.value}):t.value]),[[ze,e.active]])]})),{}}}),Un=A({text:String,onClick:le(),...T(),...ue()},"VLabel"),Wn=z()({name:"VLabel",props:Un(),setup(e,l){let{slots:n}=l;return D(()=>{var t;return v("label",{class:L(["v-label",{"v-label--clickable":!!e.onClick},e.class]),style:M(e.style),onClick:e.onClick},[e.text,(t=n.default)==null?void 0:t.call(n)])}),{}}}),Hn=A({floating:Boolean,...T()},"VFieldLabel"),he=z()({name:"VFieldLabel",props:Hn(),setup(e,l){let{slots:n}=l;return D(()=>d(Wn,{class:L(["v-field-label",{"v-field-label--floating":e.floating},e.class]),style:M(e.style)},n)),{}}});function Tt(e){const{t:l}=Ye();function n(t){let{name:a,color:i,...s}=t;const r={prepend:"prependAction",prependInner:"prependAction",append:"appendAction",appendInner:"appendAction",clear:"clear"}[a],g=e[`onClick:${a}`];function c(u){u.key!=="Enter"&&u.key!==" "||(u.preventDefault(),u.stopPropagation(),gt(g,new PointerEvent("click",u)))}const o=g&&r?l(`$vuetify.input.${r}`,e.label??""):void 0;return d(de,Q({icon:e[`${a}Icon`],"aria-label":o,onClick:g,onKeydown:c,color:i},s),null)}return{InputIcon:n}}const Nt=A({focused:Boolean,"onUpdate:focused":le()},"focus");function Et(e){let l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:mt();const n=fe(e,"focused"),t=E(()=>({[`${l}--focused`]:n.value}));function a(){n.value=!0}function i(){n.value=!1}return{focusClasses:t,isFocused:n,focus:a,blur:i}}const Gn=["underlined","outlined","filled","solo","solo-inverted","solo-filled","plain"],Mt=A({appendInnerIcon:q,bgColor:String,clearable:Boolean,clearIcon:{type:q,default:"$clear"},active:Boolean,centerAffix:{type:Boolean,default:void 0},color:String,baseColor:String,details:Boolean,dirty:Boolean,disabled:{type:Boolean,default:null},glow:Boolean,error:Boolean,flat:Boolean,iconColor:[Boolean,String],label:String,persistentClear:Boolean,prependInnerIcon:q,reverse:Boolean,singleLine:Boolean,variant:{type:String,default:"filled",validator:e=>Gn.includes(e)},"onClick:clear":le(),"onClick:appendInner":le(),"onClick:prependInner":le(),...T(),...ot(),...ye(),...ue()},"VField"),We=z()({name:"VField",inheritAttrs:!1,props:{id:String,...Nt(),...Mt()},emits:{"update:focused":e=>!0,"update:modelValue":e=>!0},setup(e,l){let{attrs:n,emit:t,slots:a}=l;const{themeClasses:i}=ge(e),{loaderClasses:s}=rt(e),{focusClasses:r,isFocused:g,focus:c,blur:o}=Et(e),{InputIcon:u}=Tt(e),{roundedClasses:y}=me(e),{rtlClasses:m}=yt(),k=E(()=>e.dirty||e.active),w=E(()=>!!(e.label||a.label)),_=E(()=>!e.singleLine&&w.value),N=Le(),I=V(()=>e.id||`input-${N}`),P=E(()=>e.details?`${I.value}-messages`:void 0),f=J(),S=J(),h=J(),$=V(()=>["plain","underlined"].includes(e.variant)),B=V(()=>e.error||e.disabled?void 0:k.value&&g.value?e.color:e.baseColor),R=V(()=>{if(!(!e.iconColor||e.glow&&!g.value))return e.iconColor===!0?B.value:e.iconColor}),{backgroundColorClasses:W,backgroundColorStyles:F}=et(()=>e.bgColor),{textColorClasses:b,textColorStyles:C}=Be(B);X(k,O=>{if(_.value){const j=f.value.$el,H=S.value.$el;requestAnimationFrame(()=>{const G=Zt(j),K=H.getBoundingClientRect(),Z=K.x-G.x,ee=K.y-G.y-(G.height/2-K.height/2),te=K.width/.75,ne=Math.abs(te-G.width)>1?{maxWidth:lt(te)}:void 0,Ot=getComputedStyle(j),Te=getComputedStyle(H),jt=parseFloat(Ot.transitionDuration)*1e3||150,Ut=parseFloat(Te.getPropertyValue("--v-field-label-scale")),Wt=Te.getPropertyValue("color");j.style.visibility="visible",H.style.visibility="hidden",pt(j,{transform:`translate(${Z}px, ${ee}px) scale(${Ut})`,color:Wt,...ne},{duration:jt,easing:en,direction:O?"normal":"reverse"}).finished.then(()=>{j.style.removeProperty("visibility"),H.style.removeProperty("visibility")})})}},{flush:"post"});const x=V(()=>({isActive:k,isFocused:g,controlRef:h,blur:o,focus:c}));function Y(O){O.target!==document.activeElement&&O.preventDefault()}return D(()=>{var Z,ee,te;const O=e.variant==="outlined",j=!!(a["prepend-inner"]||e.prependInnerIcon),H=!!(e.clearable||a.clear)&&!e.disabled,G=!!(a["append-inner"]||e.appendInnerIcon||H),K=()=>a.label?a.label({...x.value,label:e.label,props:{for:I.value}}):e.label;return v("div",Q({class:["v-field",{"v-field--active":k.value,"v-field--appended":G,"v-field--center-affix":e.centerAffix??!$.value,"v-field--disabled":e.disabled,"v-field--dirty":e.dirty,"v-field--error":e.error,"v-field--glow":e.glow,"v-field--flat":e.flat,"v-field--has-background":!!e.bgColor,"v-field--persistent-clear":e.persistentClear,"v-field--prepended":j,"v-field--reverse":e.reverse,"v-field--single-line":e.singleLine,"v-field--no-label":!K(),[`v-field--variant-${e.variant}`]:!0},i.value,W.value,r.value,s.value,y.value,m.value,e.class],style:[F.value,e.style],onClick:Y},n),[v("div",{class:"v-field__overlay"},null),d(ut,{name:"v-field",active:!!e.loading,color:e.error?"error":typeof e.loading=="string"?e.loading:e.color},{default:a.loader}),j&&v("div",{key:"prepend",class:"v-field__prepend-inner"},[e.prependInnerIcon&&d(u,{key:"prepend-icon",name:"prependInner",color:R.value},null),(Z=a["prepend-inner"])==null?void 0:Z.call(a,x.value)]),v("div",{class:"v-field__field","data-no-activator":""},[["filled","solo","solo-inverted","solo-filled"].includes(e.variant)&&_.value&&d(he,{key:"floating-label",ref:S,class:L([b.value]),floating:!0,for:I.value,"aria-hidden":!k.value,style:M(C.value)},{default:()=>[K()]}),w.value&&d(he,{key:"label",ref:f,for:I.value},{default:()=>[K()]}),((ee=a.default)==null?void 0:ee.call(a,{...x.value,props:{id:I.value,class:"v-field__input","aria-describedby":P.value},focus:c,blur:o}))??v("div",{id:I.value,class:"v-field__input","aria-describedby":P.value},null)]),H&&d(Dn,{key:"clear"},{default:()=>[oe(v("div",{class:"v-field__clearable",onMousedown:ne=>{ne.preventDefault(),ne.stopPropagation()}},[d(ie,{defaults:{VIcon:{icon:e.clearIcon}}},{default:()=>[a.clear?a.clear({...x.value,props:{onFocus:c,onBlur:o,onClick:e["onClick:clear"],tabindex:-1}}):d(u,{name:"clear",onFocus:c,onBlur:o,tabindex:-1},null)]})]),[[ze,e.dirty]])]}),G&&v("div",{key:"append",class:"v-field__append-inner"},[(te=a["append-inner"])==null?void 0:te.call(a,x.value),e.appendInnerIcon&&d(u,{key:"append-icon",name:"appendInner",color:R.value},null)]),v("div",{class:L(["v-field__outline",b.value]),style:M(C.value)},[O&&v(ae,null,[v("div",{class:"v-field__outline__start"},null),_.value&&v("div",{class:"v-field__outline__notch"},[d(he,{ref:S,floating:!0,for:I.value,"aria-hidden":!k.value},{default:()=>[K()]})]),v("div",{class:"v-field__outline__end"},null)]),$.value&&_.value&&d(he,{ref:S,floating:!0,for:I.value,"aria-hidden":!k.value},{default:()=>[K()]})])])}),{controlRef:h,fieldIconColor:R}}}),Kn=A({active:Boolean,color:String,messages:{type:[Array,String],default:()=>[]},...T(),...$e({transition:{component:Ft,leaveAbsolute:!0,group:!0}})},"VMessages"),qn=z()({name:"VMessages",props:Kn(),setup(e,l){let{slots:n}=l;const t=V(()=>Se(e.messages)),{textColorClasses:a,textColorStyles:i}=Be(()=>e.color);return D(()=>d(re,{transition:e.transition,tag:"div",class:L(["v-messages",a.value,e.class]),style:M([i.value,e.style])},{default:()=>[e.active&&t.value.map((s,r)=>v("div",{class:"v-messages__message",key:`${r}-${t.value}`},[n.message?n.message({message:s}):s]))]})),{}}}),Jn=Symbol.for("vuetify:rules");function Yn(e){const l=ct(Jn,null);return l?l(e):E(e)}const Xn=A({disabled:{type:Boolean,default:null},error:Boolean,errorMessages:{type:[Array,String],default:()=>[]},maxErrors:{type:[Number,String],default:1},name:String,label:String,readonly:{type:Boolean,default:null},rules:{type:Array,default:()=>[]},modelValue:null,validateOn:String,validationValue:null,...Nt()},"validation");function Qn(e){let l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:mt(),n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Le();const t=fe(e,"modelValue"),a=V(()=>e.validationValue===void 0?t.value:e.validationValue),i=Bn(e),s=Yn(()=>e.rules),r=J([]),g=p(!0),c=V(()=>!!(Se(t.value===""?null:t.value).length||Se(a.value===""?null:a.value).length)),o=V(()=>{var f;return(f=e.errorMessages)!=null&&f.length?Se(e.errorMessages).concat(r.value).slice(0,Math.max(0,Number(e.maxErrors))):r.value}),u=V(()=>{var h;let f=(e.validateOn??((h=i.validateOn)==null?void 0:h.value))||"input";f==="lazy"&&(f="input lazy"),f==="eager"&&(f="input eager");const S=new Set((f==null?void 0:f.split(" "))??[]);return{input:S.has("input"),blur:S.has("blur")||S.has("input")||S.has("invalid-input"),invalidInput:S.has("invalid-input"),lazy:S.has("lazy"),eager:S.has("eager")}}),y=V(()=>{var f;return e.error||(f=e.errorMessages)!=null&&f.length?!1:e.rules.length?g.value?r.value.length||u.value.lazy?null:!0:!r.value.length:!0}),m=p(!1),k=V(()=>({[`${l}--error`]:y.value===!1,[`${l}--dirty`]:c.value,[`${l}--disabled`]:i.isDisabled.value,[`${l}--readonly`]:i.isReadonly.value})),w=tt("validation"),_=V(()=>e.name??tn(n));nt(()=>{var f;(f=i.register)==null||f.call(i,{id:_.value,vm:w,validate:P,reset:N,resetValidation:I})}),at(()=>{var f;(f=i.unregister)==null||f.call(i,_.value)}),nn(async()=>{var f;u.value.lazy||await P(!u.value.eager),(f=i.update)==null||f.call(i,_.value,y.value,o.value)}),Me(()=>u.value.input||u.value.invalidInput&&y.value===!1,()=>{X(a,()=>{if(a.value!=null)P();else if(e.focused){const f=X(()=>e.focused,S=>{S||P(),f()})}})}),Me(()=>u.value.blur,()=>{X(()=>e.focused,f=>{f||P()})}),X([y,o],()=>{var f;(f=i.update)==null||f.call(i,_.value,y.value,o.value)});async function N(){t.value=null,await ce(),await I()}async function I(){g.value=!0,u.value.lazy?r.value=[]:await P(!u.value.eager)}async function P(){let f=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;const S=[];m.value=!0;for(const h of s.value){if(S.length>=Number(e.maxErrors??1))break;const B=await(typeof h=="function"?h:()=>h)(a.value);if(B!==!0){if(B!==!1&&typeof B!="string"){console.warn(`${B} is not a valid value. Rule functions must return boolean true or a string.`);continue}S.push(B||"")}}return r.value=S,m.value=!1,g.value=f,r.value}return{errorMessages:o,isDirty:c,isDisabled:i.isDisabled,isReadonly:i.isReadonly,isPristine:g,isValid:y,isValidating:m,reset:N,resetValidation:I,validate:P,validationClasses:k}}const Dt=A({id:String,appendIcon:q,baseColor:String,centerAffix:{type:Boolean,default:!0},color:String,glow:Boolean,iconColor:[Boolean,String],prependIcon:q,hideDetails:[Boolean,String],hideSpinButtons:Boolean,hint:String,persistentHint:Boolean,messages:{type:[Array,String],default:()=>[]},direction:{type:String,default:"horizontal",validator:e=>["horizontal","vertical"].includes(e)},"onClick:prepend":le(),"onClick:append":le(),...T(),...be(),...an(Ie(),["maxWidth","minWidth","width"]),...ue(),...Xn()},"VInput"),He=z()({name:"VInput",props:{...Dt()},emits:{"update:modelValue":e=>!0},setup(e,l){let{attrs:n,slots:t,emit:a}=l;const{densityClasses:i}=ke(e),{dimensionStyles:s}=_e(e),{themeClasses:r}=ge(e),{rtlClasses:g}=yt(),{InputIcon:c}=Tt(e),o=Le(),u=V(()=>e.id||`input-${o}`),{errorMessages:y,isDirty:m,isDisabled:k,isReadonly:w,isPristine:_,isValid:N,isValidating:I,reset:P,resetValidation:f,validate:S,validationClasses:h}=Qn(e,"v-input",u),$=V(()=>{var x;return(x=e.errorMessages)!=null&&x.length||!_.value&&y.value.length?y.value:e.hint&&(e.persistentHint||e.focused)?e.hint:e.messages}),B=E(()=>$.value.length>0),R=E(()=>!e.hideDetails||e.hideDetails==="auto"&&(B.value||!!t.details)),W=V(()=>R.value?`${u.value}-messages`:void 0),F=V(()=>({id:u,messagesId:W,isDirty:m,isDisabled:k,isReadonly:w,isPristine:_,isValid:N,isValidating:I,hasDetails:R,reset:P,resetValidation:f,validate:S})),b=E(()=>e.error||e.disabled?void 0:e.focused?e.color:e.baseColor),C=E(()=>{if(e.iconColor)return e.iconColor===!0?b.value:e.iconColor});return D(()=>{var O,j,H,G;const x=!!(t.prepend||e.prependIcon),Y=!!(t.append||e.appendIcon);return v("div",{class:L(["v-input",`v-input--${e.direction}`,{"v-input--center-affix":e.centerAffix,"v-input--focused":e.focused,"v-input--glow":e.glow,"v-input--hide-spin-buttons":e.hideSpinButtons},i.value,r.value,g.value,h.value,e.class]),style:M([s.value,e.style])},[x&&v("div",{key:"prepend",class:"v-input__prepend"},[(O=t.prepend)==null?void 0:O.call(t,F.value),e.prependIcon&&d(c,{key:"prepend-icon",name:"prepend",color:C.value},null)]),t.default&&v("div",{class:"v-input__control"},[(j=t.default)==null?void 0:j.call(t,F.value)]),Y&&v("div",{key:"append",class:"v-input__append"},[e.appendIcon&&d(c,{key:"append-icon",name:"append",color:C.value},null),(H=t.append)==null?void 0:H.call(t,F.value)]),R.value&&v("div",{id:W.value,class:"v-input__details",role:"alert","aria-live":"polite"},[d(qn,{active:B.value,messages:$.value},{message:t.message}),(G=t.details)==null?void 0:G.call(t,F.value)])])}),{reset:P,resetValidation:f,validate:S,isValid:N,errorMessages:y}}});function Zn(e){function l(n,t){var a,i;!e.autofocus||!n||(i=(a=t[0].target)==null?void 0:a.focus)==null||i.call(a)}return{onIntersect:l}}const pn=["color","file","time","date","datetime-local","week","month"],ea=A({autofocus:Boolean,counter:[Boolean,Number,String],counterValue:[Number,Function],prefix:String,placeholder:String,persistentPlaceholder:Boolean,persistentCounter:Boolean,suffix:String,role:String,type:{type:String,default:"text"},modelModifiers:Object,...Dt(),...Mt()},"VTextField"),oa=z()({name:"VTextField",directives:{vIntersect:Ce},inheritAttrs:!1,props:ea(),emits:{"click:control":e=>!0,"mousedown:control":e=>!0,"update:focused":e=>!0,"update:modelValue":e=>!0},setup(e,l){let{attrs:n,emit:t,slots:a}=l;const i=fe(e,"modelValue"),{isFocused:s,focus:r,blur:g}=Et(e),{onIntersect:c}=Zn(e),o=V(()=>typeof e.counterValue=="function"?e.counterValue(i.value):typeof e.counterValue=="number"?e.counterValue:(i.value??"").toString().length),u=V(()=>{if(n.maxlength)return n.maxlength;if(!(!e.counter||typeof e.counter!="number"&&typeof e.counter!="string"))return e.counter}),y=V(()=>["plain","underlined"].includes(e.variant)),m=J(),k=J(),w=J(),_=V(()=>pn.includes(e.type)||e.persistentPlaceholder||s.value||e.active);function N(){s.value||r(),ce(()=>{var h;w.value!==document.activeElement&&((h=w.value)==null||h.focus())})}function I(h){t("mousedown:control",h),h.target!==w.value&&(N(),h.preventDefault())}function P(h){t("click:control",h)}function f(h,$){h.stopPropagation(),N(),ce(()=>{i.value=null,$(),gt(e["onClick:clear"],h)})}function S(h){var B;const $=h.target;if(i.value=$.value,(B=e.modelModifiers)!=null&&B.trim&&["text","search","password","tel","url"].includes(e.type)){const R=[$.selectionStart,$.selectionEnd];ce(()=>{$.selectionStart=R[0],$.selectionEnd=R[1]})}}return D(()=>{const h=!!(a.counter||e.counter!==!1&&e.counter!=null),$=!!(h||a.details),[B,R]=ln(n),{modelValue:W,...F}=He.filterProps(e),b=We.filterProps(e);return d(He,Q({ref:m,modelValue:i.value,"onUpdate:modelValue":C=>i.value=C,class:["v-text-field",{"v-text-field--prefixed":e.prefix,"v-text-field--suffixed":e.suffix,"v-input--plain-underlined":y.value},e.class],style:e.style},B,F,{centerAffix:!y.value,focused:s.value}),{...a,default:C=>{let{id:x,isDisabled:Y,isDirty:O,isReadonly:j,isValid:H,hasDetails:G,reset:K}=C;return d(We,Q({ref:k,onMousedown:I,onClick:P,"onClick:clear":Z=>f(Z,K),"onClick:prependInner":e["onClick:prependInner"],"onClick:appendInner":e["onClick:appendInner"],role:e.role},b,{id:x.value,active:_.value||O.value,dirty:O.value||e.dirty,disabled:Y.value,focused:s.value,details:G.value,error:H.value===!1}),{...a,default:Z=>{let{props:{class:ee,...te}}=Z;const ne=oe(v("input",Q({ref:w,value:i.value,onInput:S,autofocus:e.autofocus,readonly:j.value,disabled:Y.value,name:e.name,placeholder:e.placeholder,size:1,type:e.type,onFocus:r,onBlur:g},te,R),null),[[Ce,{handler:c},null,{once:!0}]]);return v(ae,null,[e.prefix&&v("span",{class:"v-text-field__prefix"},[v("span",{class:"v-text-field__prefix__text"},[e.prefix])]),a.default?v("div",{class:L(ee),"data-no-activator":""},[a.default(),ne]):sn(ne,{class:ee}),e.suffix&&v("span",{class:"v-text-field__suffix"},[v("span",{class:"v-text-field__suffix__text"},[e.suffix])])])}})},details:$?C=>{var x;return v(ae,null,[(x=a.details)==null?void 0:x.call(a,C),h&&v(ae,null,[v("span",null,null),d(jn,{active:e.persistentCounter||s.value,value:o.value,max:u.value,disabled:e.disabled},a.counter)])])}:void 0})}),dt({},m,k,w)}});export{ra as V,sa as a,la as b,mn as c,gn as d,ia as e,oa as f,aa as g}; +import{x as z,y as T,z as Ve,A as ve,B as Ge,C as A,c as V,D as fe,E,G as ge,H as Pe,I as ke,J as _e,K as Ke,L as qe,M as Je,N as me,O as Be,P as Ye,d,Q as M,n as L,R as Ae,S as ue,T as se,U as ye,W as Xe,X as Qe,Y as Ze,Z as Ie,$ as be,a0 as q,a1 as we,b as v,a2 as de,a3 as Q,a4 as ie,V as Ht,a5 as Gt,a6 as D,a7 as pe,a8 as et,a9 as tt,aa as p,r as J,m as X,ab as nt,ac as ce,ad as at,ae as oe,af as ae,ag as lt,ah as $e,ai as ze,aj as re,ak as it,al as Kt,am as qt,an as st,t as Ne,ao as Ee,ap as rt,aq as Jt,ar as Yt,as as ot,at as ut,au as Xt,av as ct,aw as Qt,ax as dt,ay as xe,az as vt,aA as ft,aB as le,aC as gt,aD as mt,aE as yt,aF as Le,aG as Zt,aH as pt,aI as en,aJ as Se,e as tn,o as nn,aK as Me,aL as an,aM as ln,aN as sn}from"./index-QAlcqU00.js";import"./VContainer-DnjqAjRY.js";function bt(e){let l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"div",n=arguments.length>2?arguments[2]:void 0;return z()({name:n??Ve(Ge(e.replace(/__/g,"-"))),props:{tag:{type:String,default:l},...T()},setup(t,a){let{slots:i}=a;return()=>{var s;return ve(t.tag,{class:[e,t.class],style:t.style},(s=i.default)==null?void 0:s.call(i))}}})}const rn=bt("v-alert-title"),on=A({iconSize:[Number,String],iconSizes:{type:Array,default:()=>[["x-small",10],["small",16],["default",24],["large",28],["x-large",32]]}},"iconSize");function un(e,l){return{iconSize:V(()=>{const t=new Map(e.iconSizes),a=e.iconSize??l()??"default";return t.has(a)?t.get(a):a})}}const cn=["success","info","warning","error"],dn=A({border:{type:[Boolean,String],validator:e=>typeof e=="boolean"||["top","end","bottom","start"].includes(e)},borderColor:String,closable:Boolean,closeIcon:{type:q,default:"$close"},closeLabel:{type:String,default:"$vuetify.close"},icon:{type:[Boolean,String,Function,Object],default:null},modelValue:{type:Boolean,default:!0},prominent:Boolean,title:String,text:String,type:{type:String,validator:e=>cn.includes(e)},...T(),...be(),...Ie(),...Ze(),...on(),...Qe(),...Xe(),...ye(),...se(),...ue(),...Ae({variant:"flat"})},"VAlert"),aa=z()({name:"VAlert",props:dn(),emits:{"click:close":e=>!0,"update:modelValue":e=>!0},setup(e,l){let{emit:n,slots:t}=l;const a=fe(e,"modelValue"),i=E(()=>{if(e.icon!==!1)return e.type?e.icon??`$${e.type}`:e.icon}),{iconSize:s}=un(e,()=>e.prominent?44:28),{themeClasses:r}=ge(e),{colorClasses:g,colorStyles:c,variantClasses:o}=Pe(()=>({color:e.color??e.type,variant:e.variant})),{densityClasses:u}=ke(e),{dimensionStyles:y}=_e(e),{elevationClasses:m}=Ke(e),{locationStyles:k}=qe(e),{positionClasses:w}=Je(e),{roundedClasses:_}=me(e),{textColorClasses:N,textColorStyles:I}=Be(()=>e.borderColor),{t:P}=Ye(),f=E(()=>({"aria-label":P(e.closeLabel),onClick(S){a.value=!1,n("click:close",S)}}));return()=>{const S=!!(t.prepend||i.value),h=!!(t.title||e.title),$=!!(t.close||e.closable),B={density:e.density,icon:i.value,size:s.value};return a.value&&d(e.tag,{class:L(["v-alert",e.border&&{"v-alert--border":!!e.border,[`v-alert--border-${e.border===!0?"start":e.border}`]:!0},{"v-alert--prominent":e.prominent},r.value,g.value,u.value,m.value,w.value,_.value,o.value,e.class]),style:M([c.value,y.value,k.value,e.style]),role:"alert"},{default:()=>{var R,W;return[we(!1,"v-alert"),e.border&&v("div",{key:"border",class:L(["v-alert__border",N.value]),style:M(I.value)},null),S&&v("div",{key:"prepend",class:"v-alert__prepend"},[t.prepend?d(ie,{key:"prepend-defaults",disabled:!i.value,defaults:{VIcon:{...B}}},t.prepend):d(de,Q({key:"prepend-icon"},B),null)]),v("div",{class:"v-alert__content"},[h&&d(rn,{key:"title"},{default:()=>{var F;return[((F=t.title)==null?void 0:F.call(t))??e.title]}}),((R=t.text)==null?void 0:R.call(t))??e.text,(W=t.default)==null?void 0:W.call(t)]),t.append&&v("div",{key:"append",class:"v-alert__append"},[t.append()]),$&&v("div",{key:"close",class:"v-alert__close"},[t.close?d(ie,{key:"close-defaults",defaults:{VBtn:{icon:e.closeIcon,size:"x-small",variant:"text"}}},{default:()=>{var F;return[(F=t.close)==null?void 0:F.call(t,{props:f.value})]}}):d(Ht,Q({key:"close-btn",icon:e.closeIcon,size:"x-small",variant:"text"},f.value),null)])]}})}}}),vn=z()({name:"VCardActions",props:T(),setup(e,l){let{slots:n}=l;return Gt({VBtn:{slim:!0,variant:"text"}}),D(()=>{var t;return v("div",{class:L(["v-card-actions",e.class]),style:M(e.style)},[(t=n.default)==null?void 0:t.call(n)])}),{}}}),fn=A({opacity:[Number,String],...T(),...se()},"VCardSubtitle"),gn=z()({name:"VCardSubtitle",props:fn(),setup(e,l){let{slots:n}=l;return D(()=>d(e.tag,{class:L(["v-card-subtitle",e.class]),style:M([{"--v-card-subtitle-opacity":e.opacity},e.style])},n)),{}}}),mn=bt("v-card-title");function yn(e){return{aspectStyles:V(()=>{const l=Number(e.aspectRatio);return l?{paddingBottom:String(1/l*100)+"%"}:void 0})}}const ht=A({aspectRatio:[String,Number],contentClass:null,inline:Boolean,...T(),...Ie()},"VResponsive"),De=z()({name:"VResponsive",props:ht(),setup(e,l){let{slots:n}=l;const{aspectStyles:t}=yn(e),{dimensionStyles:a}=_e(e);return D(()=>{var i;return v("div",{class:L(["v-responsive",{"v-responsive--inline":e.inline},e.class]),style:M([a.value,e.style])},[v("div",{class:"v-responsive__sizer",style:M(t.value)},null),(i=n.additional)==null?void 0:i.call(n),n.default&&v("div",{class:L(["v-responsive__content",e.contentClass])},[n.default()])])}),{}}});function bn(e,l){if(!pe)return;const n=l.modifiers||{},t=l.value,{handler:a,options:i}=typeof t=="object"?t:{handler:t,options:{}},s=new IntersectionObserver(function(){var u;let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],g=arguments.length>1?arguments[1]:void 0;const c=(u=e._observe)==null?void 0:u[l.instance.$.uid];if(!c)return;const o=r.some(y=>y.isIntersecting);a&&(!n.quiet||c.init)&&(!n.once||o||c.init)&&a(o,r,g),o&&n.once?St(e,l):c.init=!0},i);e._observe=Object(e._observe),e._observe[l.instance.$.uid]={init:!1,observer:s},s.observe(e)}function St(e,l){var t;const n=(t=e._observe)==null?void 0:t[l.instance.$.uid];n&&(n.observer.unobserve(e),delete e._observe[l.instance.$.uid])}const Ce={mounted:bn,unmounted:St},hn=A({absolute:Boolean,alt:String,cover:Boolean,color:String,draggable:{type:[Boolean,String],default:void 0},eager:Boolean,gradient:String,lazySrc:String,options:{type:Object,default:()=>({root:void 0,rootMargin:void 0,threshold:void 0})},sizes:String,src:{type:[String,Object],default:""},crossorigin:String,referrerpolicy:String,srcset:String,position:String,...ht(),...T(),...ye(),...$e()},"VImg"),Ct=z()({name:"VImg",directives:{vIntersect:Ce},props:hn(),emits:{loadstart:e=>!0,load:e=>!0,error:e=>!0},setup(e,l){let{emit:n,slots:t}=l;const{backgroundColorClasses:a,backgroundColorStyles:i}=et(()=>e.color),{roundedClasses:s}=me(e),r=tt("VImg"),g=p(""),c=J(),o=p(e.eager?"loading":"idle"),u=p(),y=p(),m=V(()=>e.src&&typeof e.src=="object"?{src:e.src.src,srcset:e.srcset||e.src.srcset,lazySrc:e.lazySrc||e.src.lazySrc,aspect:Number(e.aspectRatio||e.src.aspect||0)}:{src:e.src,srcset:e.srcset,lazySrc:e.lazySrc,aspect:Number(e.aspectRatio||0)}),k=V(()=>m.value.aspect||u.value/y.value||0);X(()=>e.src,()=>{w(o.value!=="idle")}),X(k,(b,C)=>{!b&&C&&c.value&&f(c.value)}),nt(()=>w());function w(b){if(!(e.eager&&b)&&!(pe&&!b&&!e.eager)){if(o.value="loading",m.value.lazySrc){const C=new Image;C.src=m.value.lazySrc,f(C,null)}m.value.src&&ce(()=>{var C;n("loadstart",((C=c.value)==null?void 0:C.currentSrc)||m.value.src),setTimeout(()=>{var x;if(!r.isUnmounted)if((x=c.value)!=null&&x.complete){if(c.value.naturalWidth||N(),o.value==="error")return;k.value||f(c.value,null),o.value==="loading"&&_()}else k.value||f(c.value),I()})})}}function _(){var b;r.isUnmounted||(I(),f(c.value),o.value="loaded",n("load",((b=c.value)==null?void 0:b.currentSrc)||m.value.src))}function N(){var b;r.isUnmounted||(o.value="error",n("error",((b=c.value)==null?void 0:b.currentSrc)||m.value.src))}function I(){const b=c.value;b&&(g.value=b.currentSrc||b.src)}let P=-1;at(()=>{clearTimeout(P)});function f(b){let C=arguments.length>1&&arguments[1]!==void 0?arguments[1]:100;const x=()=>{if(clearTimeout(P),r.isUnmounted)return;const{naturalHeight:Y,naturalWidth:O}=b;Y||O?(u.value=O,y.value=Y):!b.complete&&o.value==="loading"&&C!=null?P=window.setTimeout(x,C):(b.currentSrc.endsWith(".svg")||b.currentSrc.startsWith("data:image/svg+xml"))&&(u.value=1,y.value=1)};x()}const S=E(()=>({"v-img__img--cover":e.cover,"v-img__img--contain":!e.cover})),h=()=>{var x;if(!m.value.src||o.value==="idle")return null;const b=v("img",{class:L(["v-img__img",S.value]),style:{objectPosition:e.position},crossorigin:e.crossorigin,src:m.value.src,srcset:m.value.srcset,alt:e.alt,referrerpolicy:e.referrerpolicy,draggable:e.draggable,sizes:e.sizes,ref:c,onLoad:_,onError:N},null),C=(x=t.sources)==null?void 0:x.call(t);return d(re,{transition:e.transition,appear:!0},{default:()=>[oe(C?v("picture",{class:"v-img__picture"},[C,b]):b,[[ze,o.value==="loaded"]])]})},$=()=>d(re,{transition:e.transition},{default:()=>[m.value.lazySrc&&o.value!=="loaded"&&v("img",{class:L(["v-img__img","v-img__img--preload",S.value]),style:{objectPosition:e.position},crossorigin:e.crossorigin,src:m.value.lazySrc,alt:e.alt,referrerpolicy:e.referrerpolicy,draggable:e.draggable},null)]}),B=()=>t.placeholder?d(re,{transition:e.transition,appear:!0},{default:()=>[(o.value==="loading"||o.value==="error"&&!t.error)&&v("div",{class:"v-img__placeholder"},[t.placeholder()])]}):null,R=()=>t.error?d(re,{transition:e.transition,appear:!0},{default:()=>[o.value==="error"&&v("div",{class:"v-img__error"},[t.error()])]}):null,W=()=>e.gradient?v("div",{class:"v-img__gradient",style:{backgroundImage:`linear-gradient(${e.gradient})`}},null):null,F=p(!1);{const b=X(k,C=>{C&&(requestAnimationFrame(()=>{requestAnimationFrame(()=>{F.value=!0})}),b())})}return D(()=>{const b=De.filterProps(e);return oe(d(De,Q({class:["v-img",{"v-img--absolute":e.absolute,"v-img--booting":!F.value},a.value,s.value,e.class],style:[{width:lt(e.width==="auto"?u.value:e.width)},i.value,e.style]},b,{aspectRatio:k.value,"aria-label":e.alt,role:e.alt?"img":void 0}),{additional:()=>v(ae,null,[d(h,null,null),d($,null,null),d(W,null,null),d(B,null,null),d(R,null,null)]),default:t.default}),[[Ce,{handler:w,options:e.options},null,{once:!0}]])}),{currentSrc:g,image:c,state:o,naturalWidth:u,naturalHeight:y}}}),Sn=A({start:Boolean,end:Boolean,icon:q,image:String,text:String,...st(),...T(),...be(),...ye(),...qt(),...se(),...ue(),...Ae({variant:"flat"})},"VAvatar"),Oe=z()({name:"VAvatar",props:Sn(),setup(e,l){let{slots:n}=l;const{themeClasses:t}=ge(e),{borderClasses:a}=it(e),{colorClasses:i,colorStyles:s,variantClasses:r}=Pe(e),{densityClasses:g}=ke(e),{roundedClasses:c}=me(e),{sizeClasses:o,sizeStyles:u}=Kt(e);return D(()=>d(e.tag,{class:L(["v-avatar",{"v-avatar--start":e.start,"v-avatar--end":e.end},t.value,a.value,i.value,g.value,c.value,o.value,r.value,e.class]),style:M([s.value,u.value,e.style])},{default:()=>[n.default?d(ie,{key:"content-defaults",defaults:{VImg:{cover:!0,src:e.image},VIcon:{icon:e.icon}}},{default:()=>[n.default()]}):e.image?d(Ct,{key:"image",src:e.image,alt:"",cover:!0},null):e.icon?d(de,{key:"icon",icon:e.icon},null):e.text,we(!1,"v-avatar")]})),{}}}),Cn=A({appendAvatar:String,appendIcon:q,prependAvatar:String,prependIcon:q,subtitle:{type:[String,Number,Boolean],default:void 0},title:{type:[String,Number,Boolean],default:void 0},...T(),...be()},"VCardItem"),Vn=z()({name:"VCardItem",props:Cn(),setup(e,l){let{slots:n}=l;return D(()=>{var c;const t=!!(e.prependAvatar||e.prependIcon),a=!!(t||n.prepend),i=!!(e.appendAvatar||e.appendIcon),s=!!(i||n.append),r=!!(e.title!=null||n.title),g=!!(e.subtitle!=null||n.subtitle);return v("div",{class:L(["v-card-item",e.class]),style:M(e.style)},[a&&v("div",{key:"prepend",class:"v-card-item__prepend"},[n.prepend?d(ie,{key:"prepend-defaults",disabled:!t,defaults:{VAvatar:{density:e.density,image:e.prependAvatar},VIcon:{density:e.density,icon:e.prependIcon}}},n.prepend):v(ae,null,[e.prependAvatar&&d(Oe,{key:"prepend-avatar",density:e.density,image:e.prependAvatar},null),e.prependIcon&&d(de,{key:"prepend-icon",density:e.density,icon:e.prependIcon},null)])]),v("div",{class:"v-card-item__content"},[r&&d(mn,{key:"title"},{default:()=>{var o;return[((o=n.title)==null?void 0:o.call(n))??Ne(e.title)]}}),g&&d(gn,{key:"subtitle"},{default:()=>{var o;return[((o=n.subtitle)==null?void 0:o.call(n))??Ne(e.subtitle)]}}),(c=n.default)==null?void 0:c.call(n)]),s&&v("div",{key:"append",class:"v-card-item__append"},[n.append?d(ie,{key:"append-defaults",disabled:!i,defaults:{VAvatar:{density:e.density,image:e.appendAvatar},VIcon:{density:e.density,icon:e.appendIcon}}},n.append):v(ae,null,[e.appendIcon&&d(de,{key:"append-icon",density:e.density,icon:e.appendIcon},null),e.appendAvatar&&d(Oe,{key:"append-avatar",density:e.density,image:e.appendAvatar},null)])])])}),{}}}),kn=A({opacity:[Number,String],...T(),...se()},"VCardText"),_n=z()({name:"VCardText",props:kn(),setup(e,l){let{slots:n}=l;return D(()=>d(e.tag,{class:L(["v-card-text",e.class]),style:M([{"--v-card-text-opacity":e.opacity},e.style])},n)),{}}}),In=A({appendAvatar:String,appendIcon:q,disabled:Boolean,flat:Boolean,hover:Boolean,image:String,link:{type:Boolean,default:void 0},prependAvatar:String,prependIcon:q,ripple:{type:[Boolean,Object],default:!0},subtitle:{type:[String,Number,Boolean],default:void 0},text:{type:[String,Number,Boolean],default:void 0},title:{type:[String,Number,Boolean],default:void 0},...st(),...T(),...be(),...Ie(),...Ze(),...ot(),...Qe(),...Xe(),...ye(),...Yt(),...se(),...ue(),...Ae({variant:"elevated"})},"VCard"),la=z()({name:"VCard",directives:{vRipple:Ee},props:In(),setup(e,l){let{attrs:n,slots:t}=l;const{themeClasses:a}=ge(e),{borderClasses:i}=it(e),{colorClasses:s,colorStyles:r,variantClasses:g}=Pe(e),{densityClasses:c}=ke(e),{dimensionStyles:o}=_e(e),{elevationClasses:u}=Ke(e),{loaderClasses:y}=rt(e),{locationStyles:m}=qe(e),{positionClasses:k}=Je(e),{roundedClasses:w}=me(e),_=Jt(e,n);return D(()=>{const N=e.link!==!1&&_.isLink.value,I=!e.disabled&&e.link!==!1&&(e.link||_.isClickable.value),P=N?"a":e.tag,f=!!(t.title||e.title!=null),S=!!(t.subtitle||e.subtitle!=null),h=f||S,$=!!(t.append||e.appendAvatar||e.appendIcon),B=!!(t.prepend||e.prependAvatar||e.prependIcon),R=!!(t.image||e.image),W=h||B||$,F=!!(t.text||e.text!=null);return oe(d(P,Q({class:["v-card",{"v-card--disabled":e.disabled,"v-card--flat":e.flat,"v-card--hover":e.hover&&!(e.disabled||e.flat),"v-card--link":I},a.value,i.value,s.value,c.value,u.value,y.value,k.value,w.value,g.value,e.class],style:[r.value,o.value,m.value,e.style],onClick:I&&_.navigate,tabindex:e.disabled?-1:void 0},_.linkProps),{default:()=>{var b;return[R&&v("div",{key:"image",class:"v-card__image"},[t.image?d(ie,{key:"image-defaults",disabled:!e.image,defaults:{VImg:{cover:!0,src:e.image}}},t.image):d(Ct,{key:"image-img",cover:!0,src:e.image},null)]),d(ut,{name:"v-card",active:!!e.loading,color:typeof e.loading=="boolean"?void 0:e.loading},{default:t.loader}),W&&d(Vn,{key:"item",prependAvatar:e.prependAvatar,prependIcon:e.prependIcon,title:e.title,subtitle:e.subtitle,appendAvatar:e.appendAvatar,appendIcon:e.appendIcon},{default:t.item,prepend:t.prepend,title:t.title,subtitle:t.subtitle,append:t.append}),F&&d(_n,{key:"text"},{default:()=>{var C;return[((C=t.text)==null?void 0:C.call(t))??e.text]}}),(b=t.default)==null?void 0:b.call(t),t.actions&&d(vn,null,{default:t.actions}),we(I,"v-card")]}}),[[Ee,I&&e.ripple]])}),{}}}),Vt=Symbol.for("vuetify:form"),xn=A({disabled:Boolean,fastFail:Boolean,readonly:Boolean,modelValue:{type:Boolean,default:null},validateOn:{type:String,default:"input"}},"form");function Pn(e){const l=fe(e,"modelValue"),n=E(()=>e.disabled),t=E(()=>e.readonly),a=p(!1),i=J([]),s=J([]);async function r(){const o=[];let u=!0;s.value=[],a.value=!0;for(const y of i.value){const m=await y.validate();if(m.length>0&&(u=!1,o.push({id:y.id,errorMessages:m})),!u&&e.fastFail)break}return s.value=o,a.value=!1,{valid:u,errors:s.value}}function g(){i.value.forEach(o=>o.reset())}function c(){i.value.forEach(o=>o.resetValidation())}return X(i,()=>{let o=0,u=0;const y=[];for(const m of i.value)m.isValid===!1?(u++,y.push({id:m.id,errorMessages:m.errorMessages})):m.isValid===!0&&o++;s.value=y,l.value=u>0?!1:o===i.value.length?!0:null},{deep:!0,flush:"post"}),Xt(Vt,{register:o=>{let{id:u,vm:y,validate:m,reset:k,resetValidation:w}=o;i.value.some(_=>_.id===u),i.value.push({id:u,validate:m,reset:k,resetValidation:w,vm:Qt(y),isValid:null,errorMessages:[]})},unregister:o=>{i.value=i.value.filter(u=>u.id!==o)},update:(o,u,y)=>{const m=i.value.find(k=>k.id===o);m&&(m.isValid=u,m.errorMessages=y)},isDisabled:n,isReadonly:t,isValidating:a,isValid:l,items:i,validateOn:E(()=>e.validateOn)}),{errors:s,isDisabled:n,isReadonly:t,isValidating:a,isValid:l,items:i,validate:r,reset:g,resetValidation:c}}function Bn(e){const l=ct(Vt,null);return{...l,isReadonly:V(()=>!!((e==null?void 0:e.readonly)??(l==null?void 0:l.isReadonly.value))),isDisabled:V(()=>!!((e==null?void 0:e.disabled)??(l==null?void 0:l.isDisabled.value)))}}const An=A({...T(),...xn()},"VForm"),ia=z()({name:"VForm",props:An(),emits:{"update:modelValue":e=>!0,submit:e=>!0},setup(e,l){let{slots:n,emit:t}=l;const a=Pn(e),i=J();function s(g){g.preventDefault(),a.reset()}function r(g){const c=g,o=a.validate();c.then=o.then.bind(o),c.catch=o.catch.bind(o),c.finally=o.finally.bind(o),t("submit",c),c.defaultPrevented||o.then(u=>{var m;let{valid:y}=u;y&&((m=i.value)==null||m.submit())}),c.preventDefault()}return D(()=>{var g;return v("form",{ref:i,class:L(["v-form",e.class]),style:M(e.style),novalidate:!0,onReset:s,onSubmit:r},[(g=n.default)==null?void 0:g.call(n,a)])}),dt(a,i)}}),kt=xe.reduce((e,l)=>(e[l]={type:[Boolean,String,Number],default:!1},e),{}),_t=xe.reduce((e,l)=>{const n="offset"+Ve(l);return e[n]={type:[String,Number],default:null},e},{}),It=xe.reduce((e,l)=>{const n="order"+Ve(l);return e[n]={type:[String,Number],default:null},e},{}),je={col:Object.keys(kt),offset:Object.keys(_t),order:Object.keys(It)};function wn(e,l,n){let t=e;if(!(n==null||n===!1)){if(l){const a=l.replace(e,"");t+=`-${a}`}return e==="col"&&(t="v-"+t),e==="col"&&(n===""||n===!0)||(t+=`-${n}`),t.toLowerCase()}}const $n=["auto","start","end","center","baseline","stretch"],zn=A({cols:{type:[Boolean,String,Number],default:!1},...kt,offset:{type:[String,Number],default:null},..._t,order:{type:[String,Number],default:null},...It,alignSelf:{type:String,default:null,validator:e=>$n.includes(e)},...T(),...se()},"VCol"),sa=z()({name:"VCol",props:zn(),setup(e,l){let{slots:n}=l;const t=V(()=>{const a=[];let i;for(i in je)je[i].forEach(r=>{const g=e[r],c=wn(i,r,g);c&&a.push(c)});const s=a.some(r=>r.startsWith("v-col-"));return a.push({"v-col":!s||!e.cols,[`v-col-${e.cols}`]:e.cols,[`offset-${e.offset}`]:e.offset,[`order-${e.order}`]:e.order,[`align-self-${e.alignSelf}`]:e.alignSelf}),a});return()=>{var a;return ve(e.tag,{class:[t.value,e.class],style:e.style},(a=n.default)==null?void 0:a.call(n))}}}),Re=["start","end","center"],xt=["space-between","space-around","space-evenly"];function Fe(e,l){return xe.reduce((n,t)=>{const a=e+Ve(t);return n[a]=l(),n},{})}const Ln=[...Re,"baseline","stretch"],Pt=e=>Ln.includes(e),Bt=Fe("align",()=>({type:String,default:null,validator:Pt})),Rn=[...Re,...xt],At=e=>Rn.includes(e),wt=Fe("justify",()=>({type:String,default:null,validator:At})),Fn=[...Re,...xt,"stretch"],$t=e=>Fn.includes(e),zt=Fe("alignContent",()=>({type:String,default:null,validator:$t})),Ue={align:Object.keys(Bt),justify:Object.keys(wt),alignContent:Object.keys(zt)},Tn={align:"align",justify:"justify",alignContent:"align-content"};function Nn(e,l,n){let t=Tn[e];if(n!=null){if(l){const a=l.replace(e,"");t+=`-${a}`}return t+=`-${n}`,t.toLowerCase()}}const En=A({dense:Boolean,noGutters:Boolean,align:{type:String,default:null,validator:Pt},...Bt,justify:{type:String,default:null,validator:At},...wt,alignContent:{type:String,default:null,validator:$t},...zt,...T(),...se()},"VRow"),ra=z()({name:"VRow",props:En(),setup(e,l){let{slots:n}=l;const t=V(()=>{const a=[];let i;for(i in Ue)Ue[i].forEach(s=>{const r=e[s],g=Nn(i,s,r);g&&a.push(g)});return a.push({"v-row--no-gutters":e.noGutters,"v-row--dense":e.dense,[`align-${e.align}`]:e.align,[`justify-${e.justify}`]:e.justify,[`align-content-${e.alignContent}`]:e.alignContent}),a});return()=>{var a;return ve(e.tag,{class:["v-row",t.value,e.class],style:e.style},(a=n.default)==null?void 0:a.call(n))}}}),Mn=A({disabled:Boolean,group:Boolean,hideOnLeave:Boolean,leaveAbsolute:Boolean,mode:String,origin:String},"transition");function U(e,l,n){return z()({name:e,props:Mn({mode:n,origin:l}),setup(t,a){let{slots:i}=a;const s={onBeforeEnter(r){t.origin&&(r.style.transformOrigin=t.origin)},onLeave(r){if(t.leaveAbsolute){const{offsetTop:g,offsetLeft:c,offsetWidth:o,offsetHeight:u}=r;r._transitionInitialStyles={position:r.style.position,top:r.style.top,left:r.style.left,width:r.style.width,height:r.style.height},r.style.position="absolute",r.style.top=`${g}px`,r.style.left=`${c}px`,r.style.width=`${o}px`,r.style.height=`${u}px`}t.hideOnLeave&&r.style.setProperty("display","none","important")},onAfterLeave(r){if(t.leaveAbsolute&&(r!=null&&r._transitionInitialStyles)){const{position:g,top:c,left:o,width:u,height:y}=r._transitionInitialStyles;delete r._transitionInitialStyles,r.style.position=g||"",r.style.top=c||"",r.style.left=o||"",r.style.width=u||"",r.style.height=y||""}}};return()=>{const r=t.group?vt:ft;return ve(r,{name:t.disabled?"":e,css:!t.disabled,...t.group?void 0:{mode:t.mode},...t.disabled?{}:s},i.default)}}})}function Lt(e,l){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"in-out";return z()({name:e,props:{mode:{type:String,default:n},disabled:Boolean,group:Boolean},setup(t,a){let{slots:i}=a;const s=t.group?vt:ft;return()=>ve(s,{name:t.disabled?"":e,css:!t.disabled,...t.disabled?{}:l},i.default)}})}function Rt(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"";const n=(arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1)?"width":"height",t=Ge(`offset-${n}`);return{onBeforeEnter(s){s._parent=s.parentNode,s._initialStyle={transition:s.style.transition,overflow:s.style.overflow,[n]:s.style[n]}},onEnter(s){const r=s._initialStyle;if(!r)return;s.style.setProperty("transition","none","important"),s.style.overflow="hidden";const g=`${s[t]}px`;s.style[n]="0",s.offsetHeight,s.style.transition=r.transition,e&&s._parent&&s._parent.classList.add(e),requestAnimationFrame(()=>{s.style[n]=g})},onAfterEnter:i,onEnterCancelled:i,onLeave(s){s._initialStyle={transition:"",overflow:s.style.overflow,[n]:s.style[n]},s.style.overflow="hidden",s.style[n]=`${s[t]}px`,s.offsetHeight,requestAnimationFrame(()=>s.style[n]="0")},onAfterLeave:a,onLeaveCancelled:a};function a(s){e&&s._parent&&s._parent.classList.remove(e),i(s)}function i(s){if(!s._initialStyle)return;const r=s._initialStyle[n];s.style.overflow=s._initialStyle.overflow,r!=null&&(s.style[n]=r),delete s._initialStyle}}U("fab-transition","center center","out-in");U("dialog-bottom-transition");U("dialog-top-transition");U("fade-transition");U("scale-transition");U("scroll-x-transition");U("scroll-x-reverse-transition");U("scroll-y-transition");U("scroll-y-reverse-transition");U("slide-x-transition");U("slide-x-reverse-transition");const Ft=U("slide-y-transition");U("slide-y-reverse-transition");Lt("expand-transition",Rt());const Dn=Lt("expand-x-transition",Rt("",!0)),On=A({active:Boolean,disabled:Boolean,max:[Number,String],value:{type:[Number,String],default:0},...T(),...$e({transition:{component:Ft}})},"VCounter"),jn=z()({name:"VCounter",functional:!0,props:On(),setup(e,l){let{slots:n}=l;const t=E(()=>e.max?`${e.value} / ${e.max}`:String(e.value));return D(()=>d(re,{transition:e.transition},{default:()=>[oe(v("div",{class:L(["v-counter",{"text-error":e.max&&!e.disabled&&parseFloat(e.value)>parseFloat(e.max)},e.class]),style:M(e.style)},[n.default?n.default({counter:t.value,max:e.max,value:e.value}):t.value]),[[ze,e.active]])]})),{}}}),Un=A({text:String,onClick:le(),...T(),...ue()},"VLabel"),Wn=z()({name:"VLabel",props:Un(),setup(e,l){let{slots:n}=l;return D(()=>{var t;return v("label",{class:L(["v-label",{"v-label--clickable":!!e.onClick},e.class]),style:M(e.style),onClick:e.onClick},[e.text,(t=n.default)==null?void 0:t.call(n)])}),{}}}),Hn=A({floating:Boolean,...T()},"VFieldLabel"),he=z()({name:"VFieldLabel",props:Hn(),setup(e,l){let{slots:n}=l;return D(()=>d(Wn,{class:L(["v-field-label",{"v-field-label--floating":e.floating},e.class]),style:M(e.style)},n)),{}}});function Tt(e){const{t:l}=Ye();function n(t){let{name:a,color:i,...s}=t;const r={prepend:"prependAction",prependInner:"prependAction",append:"appendAction",appendInner:"appendAction",clear:"clear"}[a],g=e[`onClick:${a}`];function c(u){u.key!=="Enter"&&u.key!==" "||(u.preventDefault(),u.stopPropagation(),gt(g,new PointerEvent("click",u)))}const o=g&&r?l(`$vuetify.input.${r}`,e.label??""):void 0;return d(de,Q({icon:e[`${a}Icon`],"aria-label":o,onClick:g,onKeydown:c,color:i},s),null)}return{InputIcon:n}}const Nt=A({focused:Boolean,"onUpdate:focused":le()},"focus");function Et(e){let l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:mt();const n=fe(e,"focused"),t=E(()=>({[`${l}--focused`]:n.value}));function a(){n.value=!0}function i(){n.value=!1}return{focusClasses:t,isFocused:n,focus:a,blur:i}}const Gn=["underlined","outlined","filled","solo","solo-inverted","solo-filled","plain"],Mt=A({appendInnerIcon:q,bgColor:String,clearable:Boolean,clearIcon:{type:q,default:"$clear"},active:Boolean,centerAffix:{type:Boolean,default:void 0},color:String,baseColor:String,details:Boolean,dirty:Boolean,disabled:{type:Boolean,default:null},glow:Boolean,error:Boolean,flat:Boolean,iconColor:[Boolean,String],label:String,persistentClear:Boolean,prependInnerIcon:q,reverse:Boolean,singleLine:Boolean,variant:{type:String,default:"filled",validator:e=>Gn.includes(e)},"onClick:clear":le(),"onClick:appendInner":le(),"onClick:prependInner":le(),...T(),...ot(),...ye(),...ue()},"VField"),We=z()({name:"VField",inheritAttrs:!1,props:{id:String,...Nt(),...Mt()},emits:{"update:focused":e=>!0,"update:modelValue":e=>!0},setup(e,l){let{attrs:n,emit:t,slots:a}=l;const{themeClasses:i}=ge(e),{loaderClasses:s}=rt(e),{focusClasses:r,isFocused:g,focus:c,blur:o}=Et(e),{InputIcon:u}=Tt(e),{roundedClasses:y}=me(e),{rtlClasses:m}=yt(),k=E(()=>e.dirty||e.active),w=E(()=>!!(e.label||a.label)),_=E(()=>!e.singleLine&&w.value),N=Le(),I=V(()=>e.id||`input-${N}`),P=E(()=>e.details?`${I.value}-messages`:void 0),f=J(),S=J(),h=J(),$=V(()=>["plain","underlined"].includes(e.variant)),B=V(()=>e.error||e.disabled?void 0:k.value&&g.value?e.color:e.baseColor),R=V(()=>{if(!(!e.iconColor||e.glow&&!g.value))return e.iconColor===!0?B.value:e.iconColor}),{backgroundColorClasses:W,backgroundColorStyles:F}=et(()=>e.bgColor),{textColorClasses:b,textColorStyles:C}=Be(B);X(k,O=>{if(_.value){const j=f.value.$el,H=S.value.$el;requestAnimationFrame(()=>{const G=Zt(j),K=H.getBoundingClientRect(),Z=K.x-G.x,ee=K.y-G.y-(G.height/2-K.height/2),te=K.width/.75,ne=Math.abs(te-G.width)>1?{maxWidth:lt(te)}:void 0,Ot=getComputedStyle(j),Te=getComputedStyle(H),jt=parseFloat(Ot.transitionDuration)*1e3||150,Ut=parseFloat(Te.getPropertyValue("--v-field-label-scale")),Wt=Te.getPropertyValue("color");j.style.visibility="visible",H.style.visibility="hidden",pt(j,{transform:`translate(${Z}px, ${ee}px) scale(${Ut})`,color:Wt,...ne},{duration:jt,easing:en,direction:O?"normal":"reverse"}).finished.then(()=>{j.style.removeProperty("visibility"),H.style.removeProperty("visibility")})})}},{flush:"post"});const x=V(()=>({isActive:k,isFocused:g,controlRef:h,blur:o,focus:c}));function Y(O){O.target!==document.activeElement&&O.preventDefault()}return D(()=>{var Z,ee,te;const O=e.variant==="outlined",j=!!(a["prepend-inner"]||e.prependInnerIcon),H=!!(e.clearable||a.clear)&&!e.disabled,G=!!(a["append-inner"]||e.appendInnerIcon||H),K=()=>a.label?a.label({...x.value,label:e.label,props:{for:I.value}}):e.label;return v("div",Q({class:["v-field",{"v-field--active":k.value,"v-field--appended":G,"v-field--center-affix":e.centerAffix??!$.value,"v-field--disabled":e.disabled,"v-field--dirty":e.dirty,"v-field--error":e.error,"v-field--glow":e.glow,"v-field--flat":e.flat,"v-field--has-background":!!e.bgColor,"v-field--persistent-clear":e.persistentClear,"v-field--prepended":j,"v-field--reverse":e.reverse,"v-field--single-line":e.singleLine,"v-field--no-label":!K(),[`v-field--variant-${e.variant}`]:!0},i.value,W.value,r.value,s.value,y.value,m.value,e.class],style:[F.value,e.style],onClick:Y},n),[v("div",{class:"v-field__overlay"},null),d(ut,{name:"v-field",active:!!e.loading,color:e.error?"error":typeof e.loading=="string"?e.loading:e.color},{default:a.loader}),j&&v("div",{key:"prepend",class:"v-field__prepend-inner"},[e.prependInnerIcon&&d(u,{key:"prepend-icon",name:"prependInner",color:R.value},null),(Z=a["prepend-inner"])==null?void 0:Z.call(a,x.value)]),v("div",{class:"v-field__field","data-no-activator":""},[["filled","solo","solo-inverted","solo-filled"].includes(e.variant)&&_.value&&d(he,{key:"floating-label",ref:S,class:L([b.value]),floating:!0,for:I.value,"aria-hidden":!k.value,style:M(C.value)},{default:()=>[K()]}),w.value&&d(he,{key:"label",ref:f,for:I.value},{default:()=>[K()]}),((ee=a.default)==null?void 0:ee.call(a,{...x.value,props:{id:I.value,class:"v-field__input","aria-describedby":P.value},focus:c,blur:o}))??v("div",{id:I.value,class:"v-field__input","aria-describedby":P.value},null)]),H&&d(Dn,{key:"clear"},{default:()=>[oe(v("div",{class:"v-field__clearable",onMousedown:ne=>{ne.preventDefault(),ne.stopPropagation()}},[d(ie,{defaults:{VIcon:{icon:e.clearIcon}}},{default:()=>[a.clear?a.clear({...x.value,props:{onFocus:c,onBlur:o,onClick:e["onClick:clear"],tabindex:-1}}):d(u,{name:"clear",onFocus:c,onBlur:o,tabindex:-1},null)]})]),[[ze,e.dirty]])]}),G&&v("div",{key:"append",class:"v-field__append-inner"},[(te=a["append-inner"])==null?void 0:te.call(a,x.value),e.appendInnerIcon&&d(u,{key:"append-icon",name:"appendInner",color:R.value},null)]),v("div",{class:L(["v-field__outline",b.value]),style:M(C.value)},[O&&v(ae,null,[v("div",{class:"v-field__outline__start"},null),_.value&&v("div",{class:"v-field__outline__notch"},[d(he,{ref:S,floating:!0,for:I.value,"aria-hidden":!k.value},{default:()=>[K()]})]),v("div",{class:"v-field__outline__end"},null)]),$.value&&_.value&&d(he,{ref:S,floating:!0,for:I.value,"aria-hidden":!k.value},{default:()=>[K()]})])])}),{controlRef:h,fieldIconColor:R}}}),Kn=A({active:Boolean,color:String,messages:{type:[Array,String],default:()=>[]},...T(),...$e({transition:{component:Ft,leaveAbsolute:!0,group:!0}})},"VMessages"),qn=z()({name:"VMessages",props:Kn(),setup(e,l){let{slots:n}=l;const t=V(()=>Se(e.messages)),{textColorClasses:a,textColorStyles:i}=Be(()=>e.color);return D(()=>d(re,{transition:e.transition,tag:"div",class:L(["v-messages",a.value,e.class]),style:M([i.value,e.style])},{default:()=>[e.active&&t.value.map((s,r)=>v("div",{class:"v-messages__message",key:`${r}-${t.value}`},[n.message?n.message({message:s}):s]))]})),{}}}),Jn=Symbol.for("vuetify:rules");function Yn(e){const l=ct(Jn,null);return l?l(e):E(e)}const Xn=A({disabled:{type:Boolean,default:null},error:Boolean,errorMessages:{type:[Array,String],default:()=>[]},maxErrors:{type:[Number,String],default:1},name:String,label:String,readonly:{type:Boolean,default:null},rules:{type:Array,default:()=>[]},modelValue:null,validateOn:String,validationValue:null,...Nt()},"validation");function Qn(e){let l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:mt(),n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Le();const t=fe(e,"modelValue"),a=V(()=>e.validationValue===void 0?t.value:e.validationValue),i=Bn(e),s=Yn(()=>e.rules),r=J([]),g=p(!0),c=V(()=>!!(Se(t.value===""?null:t.value).length||Se(a.value===""?null:a.value).length)),o=V(()=>{var f;return(f=e.errorMessages)!=null&&f.length?Se(e.errorMessages).concat(r.value).slice(0,Math.max(0,Number(e.maxErrors))):r.value}),u=V(()=>{var h;let f=(e.validateOn??((h=i.validateOn)==null?void 0:h.value))||"input";f==="lazy"&&(f="input lazy"),f==="eager"&&(f="input eager");const S=new Set((f==null?void 0:f.split(" "))??[]);return{input:S.has("input"),blur:S.has("blur")||S.has("input")||S.has("invalid-input"),invalidInput:S.has("invalid-input"),lazy:S.has("lazy"),eager:S.has("eager")}}),y=V(()=>{var f;return e.error||(f=e.errorMessages)!=null&&f.length?!1:e.rules.length?g.value?r.value.length||u.value.lazy?null:!0:!r.value.length:!0}),m=p(!1),k=V(()=>({[`${l}--error`]:y.value===!1,[`${l}--dirty`]:c.value,[`${l}--disabled`]:i.isDisabled.value,[`${l}--readonly`]:i.isReadonly.value})),w=tt("validation"),_=V(()=>e.name??tn(n));nt(()=>{var f;(f=i.register)==null||f.call(i,{id:_.value,vm:w,validate:P,reset:N,resetValidation:I})}),at(()=>{var f;(f=i.unregister)==null||f.call(i,_.value)}),nn(async()=>{var f;u.value.lazy||await P(!u.value.eager),(f=i.update)==null||f.call(i,_.value,y.value,o.value)}),Me(()=>u.value.input||u.value.invalidInput&&y.value===!1,()=>{X(a,()=>{if(a.value!=null)P();else if(e.focused){const f=X(()=>e.focused,S=>{S||P(),f()})}})}),Me(()=>u.value.blur,()=>{X(()=>e.focused,f=>{f||P()})}),X([y,o],()=>{var f;(f=i.update)==null||f.call(i,_.value,y.value,o.value)});async function N(){t.value=null,await ce(),await I()}async function I(){g.value=!0,u.value.lazy?r.value=[]:await P(!u.value.eager)}async function P(){let f=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;const S=[];m.value=!0;for(const h of s.value){if(S.length>=Number(e.maxErrors??1))break;const B=await(typeof h=="function"?h:()=>h)(a.value);if(B!==!0){if(B!==!1&&typeof B!="string"){console.warn(`${B} is not a valid value. Rule functions must return boolean true or a string.`);continue}S.push(B||"")}}return r.value=S,m.value=!1,g.value=f,r.value}return{errorMessages:o,isDirty:c,isDisabled:i.isDisabled,isReadonly:i.isReadonly,isPristine:g,isValid:y,isValidating:m,reset:N,resetValidation:I,validate:P,validationClasses:k}}const Dt=A({id:String,appendIcon:q,baseColor:String,centerAffix:{type:Boolean,default:!0},color:String,glow:Boolean,iconColor:[Boolean,String],prependIcon:q,hideDetails:[Boolean,String],hideSpinButtons:Boolean,hint:String,persistentHint:Boolean,messages:{type:[Array,String],default:()=>[]},direction:{type:String,default:"horizontal",validator:e=>["horizontal","vertical"].includes(e)},"onClick:prepend":le(),"onClick:append":le(),...T(),...be(),...an(Ie(),["maxWidth","minWidth","width"]),...ue(),...Xn()},"VInput"),He=z()({name:"VInput",props:{...Dt()},emits:{"update:modelValue":e=>!0},setup(e,l){let{attrs:n,slots:t,emit:a}=l;const{densityClasses:i}=ke(e),{dimensionStyles:s}=_e(e),{themeClasses:r}=ge(e),{rtlClasses:g}=yt(),{InputIcon:c}=Tt(e),o=Le(),u=V(()=>e.id||`input-${o}`),{errorMessages:y,isDirty:m,isDisabled:k,isReadonly:w,isPristine:_,isValid:N,isValidating:I,reset:P,resetValidation:f,validate:S,validationClasses:h}=Qn(e,"v-input",u),$=V(()=>{var x;return(x=e.errorMessages)!=null&&x.length||!_.value&&y.value.length?y.value:e.hint&&(e.persistentHint||e.focused)?e.hint:e.messages}),B=E(()=>$.value.length>0),R=E(()=>!e.hideDetails||e.hideDetails==="auto"&&(B.value||!!t.details)),W=V(()=>R.value?`${u.value}-messages`:void 0),F=V(()=>({id:u,messagesId:W,isDirty:m,isDisabled:k,isReadonly:w,isPristine:_,isValid:N,isValidating:I,hasDetails:R,reset:P,resetValidation:f,validate:S})),b=E(()=>e.error||e.disabled?void 0:e.focused?e.color:e.baseColor),C=E(()=>{if(e.iconColor)return e.iconColor===!0?b.value:e.iconColor});return D(()=>{var O,j,H,G;const x=!!(t.prepend||e.prependIcon),Y=!!(t.append||e.appendIcon);return v("div",{class:L(["v-input",`v-input--${e.direction}`,{"v-input--center-affix":e.centerAffix,"v-input--focused":e.focused,"v-input--glow":e.glow,"v-input--hide-spin-buttons":e.hideSpinButtons},i.value,r.value,g.value,h.value,e.class]),style:M([s.value,e.style])},[x&&v("div",{key:"prepend",class:"v-input__prepend"},[(O=t.prepend)==null?void 0:O.call(t,F.value),e.prependIcon&&d(c,{key:"prepend-icon",name:"prepend",color:C.value},null)]),t.default&&v("div",{class:"v-input__control"},[(j=t.default)==null?void 0:j.call(t,F.value)]),Y&&v("div",{key:"append",class:"v-input__append"},[e.appendIcon&&d(c,{key:"append-icon",name:"append",color:C.value},null),(H=t.append)==null?void 0:H.call(t,F.value)]),R.value&&v("div",{id:W.value,class:"v-input__details",role:"alert","aria-live":"polite"},[d(qn,{active:B.value,messages:$.value},{message:t.message}),(G=t.details)==null?void 0:G.call(t,F.value)])])}),{reset:P,resetValidation:f,validate:S,isValid:N,errorMessages:y}}});function Zn(e){function l(n,t){var a,i;!e.autofocus||!n||(i=(a=t[0].target)==null?void 0:a.focus)==null||i.call(a)}return{onIntersect:l}}const pn=["color","file","time","date","datetime-local","week","month"],ea=A({autofocus:Boolean,counter:[Boolean,Number,String],counterValue:[Number,Function],prefix:String,placeholder:String,persistentPlaceholder:Boolean,persistentCounter:Boolean,suffix:String,role:String,type:{type:String,default:"text"},modelModifiers:Object,...Dt(),...Mt()},"VTextField"),oa=z()({name:"VTextField",directives:{vIntersect:Ce},inheritAttrs:!1,props:ea(),emits:{"click:control":e=>!0,"mousedown:control":e=>!0,"update:focused":e=>!0,"update:modelValue":e=>!0},setup(e,l){let{attrs:n,emit:t,slots:a}=l;const i=fe(e,"modelValue"),{isFocused:s,focus:r,blur:g}=Et(e),{onIntersect:c}=Zn(e),o=V(()=>typeof e.counterValue=="function"?e.counterValue(i.value):typeof e.counterValue=="number"?e.counterValue:(i.value??"").toString().length),u=V(()=>{if(n.maxlength)return n.maxlength;if(!(!e.counter||typeof e.counter!="number"&&typeof e.counter!="string"))return e.counter}),y=V(()=>["plain","underlined"].includes(e.variant)),m=J(),k=J(),w=J(),_=V(()=>pn.includes(e.type)||e.persistentPlaceholder||s.value||e.active);function N(){s.value||r(),ce(()=>{var h;w.value!==document.activeElement&&((h=w.value)==null||h.focus())})}function I(h){t("mousedown:control",h),h.target!==w.value&&(N(),h.preventDefault())}function P(h){t("click:control",h)}function f(h,$){h.stopPropagation(),N(),ce(()=>{i.value=null,$(),gt(e["onClick:clear"],h)})}function S(h){var B;const $=h.target;if(i.value=$.value,(B=e.modelModifiers)!=null&&B.trim&&["text","search","password","tel","url"].includes(e.type)){const R=[$.selectionStart,$.selectionEnd];ce(()=>{$.selectionStart=R[0],$.selectionEnd=R[1]})}}return D(()=>{const h=!!(a.counter||e.counter!==!1&&e.counter!=null),$=!!(h||a.details),[B,R]=ln(n),{modelValue:W,...F}=He.filterProps(e),b=We.filterProps(e);return d(He,Q({ref:m,modelValue:i.value,"onUpdate:modelValue":C=>i.value=C,class:["v-text-field",{"v-text-field--prefixed":e.prefix,"v-text-field--suffixed":e.suffix,"v-input--plain-underlined":y.value},e.class],style:e.style},B,F,{centerAffix:!y.value,focused:s.value}),{...a,default:C=>{let{id:x,isDisabled:Y,isDirty:O,isReadonly:j,isValid:H,hasDetails:G,reset:K}=C;return d(We,Q({ref:k,onMousedown:I,onClick:P,"onClick:clear":Z=>f(Z,K),"onClick:prependInner":e["onClick:prependInner"],"onClick:appendInner":e["onClick:appendInner"],role:e.role},b,{id:x.value,active:_.value||O.value,dirty:O.value||e.dirty,disabled:Y.value,focused:s.value,details:G.value,error:H.value===!1}),{...a,default:Z=>{let{props:{class:ee,...te}}=Z;const ne=oe(v("input",Q({ref:w,value:i.value,onInput:S,autofocus:e.autofocus,readonly:j.value,disabled:Y.value,name:e.name,placeholder:e.placeholder,size:1,type:e.type,onFocus:r,onBlur:g},te,R),null),[[Ce,{handler:c},null,{once:!0}]]);return v(ae,null,[e.prefix&&v("span",{class:"v-text-field__prefix"},[v("span",{class:"v-text-field__prefix__text"},[e.prefix])]),a.default?v("div",{class:L(ee),"data-no-activator":""},[a.default(),ne]):sn(ne,{class:ee}),e.suffix&&v("span",{class:"v-text-field__suffix"},[v("span",{class:"v-text-field__suffix__text"},[e.suffix])])])}})},details:$?C=>{var x;return v(ae,null,[(x=a.details)==null?void 0:x.call(a,C),h&&v(ae,null,[v("span",null,null),d(jn,{active:e.persistentCounter||s.value,value:o.value,max:u.value,disabled:e.disabled},a.counter)])])}:void 0})}),dt({},m,k,w)}});export{ra as V,sa as a,la as b,mn as c,gn as d,ia as e,oa as f,aa as g}; diff --git a/frontend/dist/assets/VendorDetailView-lJ2x0gCu.js b/frontend/dist/assets/VendorDetailView-qw2GAvub.js similarity index 94% rename from frontend/dist/assets/VendorDetailView-lJ2x0gCu.js rename to frontend/dist/assets/VendorDetailView-qw2GAvub.js index 6f145a76..4cbf2975 100644 --- a/frontend/dist/assets/VendorDetailView-lJ2x0gCu.js +++ b/frontend/dist/assets/VendorDetailView-qw2GAvub.js @@ -1 +1 @@ -import{r as _,c as N,s as $,o as D,i as b,w as n,v as S,g as l,b as t,a,j as d,d as m,t as o,e as u,F as w,k,af as R,aQ as A,n as H}from"./index-BUdRbiwj.js";import{u as E}from"./vendors-CLTqdcI-.js";import{F as O,a as Q}from"./FPPageHeader-CTG2L28r.js";import{F as c}from"./FPCard-qHzcEQAE.js";import{F as V}from"./FPBadge-BKY5dPnL.js";import{F as U}from"./FPTabs-R71V25QN.js";const q={class:"px-6 py-8"},W={key:0,class:"flex items-center justify-center py-12"},Y={key:1,class:"text-center py-12"},G={class:"text-gray-600 mb-4"},J={key:2,class:"space-y-8"},K={class:"grid grid-cols-1 md:grid-cols-4 gap-6"},X={class:"p-6"},Z={class:"flex items-center"},tt={class:"flex-shrink-0"},et={class:"ml-4"},st={class:"text-lg font-semibold text-gray-900"},ot={class:"p-6"},lt={class:"flex items-center"},at={class:"ml-4"},rt={class:"text-lg font-semibold text-gray-900"},nt={class:"p-6"},it={class:"flex items-center"},dt={class:"ml-4"},ut={class:"text-lg font-semibold text-gray-900"},mt={class:"p-6"},ct={class:"flex items-center"},vt={class:"ml-4"},xt={class:"text-lg font-semibold text-gray-900"},yt={class:"p-6"},pt={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},gt={class:"text-sm text-gray-900"},ft={class:"text-sm text-gray-900 font-mono"},bt=["href"],kt=["href"],_t={class:"text-sm text-gray-900 font-mono"},ht={key:0,class:"mt-6"},wt={class:"text-sm text-gray-900"},Ct={class:"p-6"},Nt={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},Vt={class:"text-sm text-gray-900"},Pt={class:"text-sm text-gray-900"},Bt={class:"text-sm text-gray-900"},Ft={class:"text-sm text-gray-900"},It={class:"mt-6"},Tt={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},zt={class:"text-sm text-gray-900"},jt={class:"text-sm text-gray-900 font-mono"},Lt={class:"text-sm text-gray-900 font-mono"},Mt={class:"text-sm text-gray-900 font-mono"},$t={class:"p-6"},Dt={class:"space-y-6"},St={key:0},Rt={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},At={class:"text-sm text-gray-900"},Ht={class:"text-sm text-gray-900"},Et=["href"],Ot={key:1,class:"text-sm text-gray-900"},Qt=["href"],Ut={key:1,class:"text-sm text-gray-900"},qt={key:1},Wt={class:"text-sm text-gray-900"},Yt={key:0},Gt={key:0},Jt={key:1},Kt={key:2},Xt={key:1},Zt={key:2},te={class:"text-sm text-gray-900"},ee={class:"p-6"},se={class:"grid grid-cols-1 md:grid-cols-3 gap-6"},oe={class:"text-center"},le={class:"text-2xl font-bold text-gray-900"},ae={class:"mt-2"},re={class:"flex justify-center space-x-1"},ne={class:"text-center"},ie={class:"text-2xl font-bold text-gray-900"},de={class:"text-center"},ue={class:"text-2xl font-bold text-gray-900"},fe={__name:"VendorDetailView",setup(me){const P=$(),C=S(),B=E(),x=_(!1),y=_(null),s=_(null),v=_("basic"),h=N(()=>parseInt(P.params.id)),F=[{key:"basic",label:"Basic Information",icon:"info"},{key:"financial",label:"Financial",icon:"dollar"},{key:"contact",label:"Contact & Location",icon:"map"},{key:"performance",label:"Performance",icon:"chart"}],I=N(()=>{var e;if(!((e=s.value)!=null&&e.address))return!1;const r=s.value.address;return r.street||r.city||r.state||r.zipCode||r.country}),T=async()=>{x.value=!0,y.value=null;try{const r=await B.getVendor(h.value);r?s.value=r:y.value="Vendor not found"}catch(r){console.error("Failed to load vendor:",r),y.value="Failed to load vendor details"}finally{x.value=!1}},z=()=>{C.push(`/vendors?edit=${h.value}`)},j=()=>{C.push(`/purchase-orders?create=true&vendorId=${h.value}`)},L=r=>({active:"green",inactive:"gray",suspended:"red"})[r]||"gray",M=r=>({supplier:"blue",contractor:"green",consultant:"purple",service:"yellow"})[r]||"gray";return D(async()=>{await T()}),(r,e)=>(l(),b(O,null,{header:n(()=>{var i,p,g;return[m(Q,{title:((i=s.value)==null?void 0:i.name)||"Vendor Details",description:((p=s.value)==null?void 0:p.description)||"Vendor information and service details",breadcrumbs:[{text:"Vendors",to:"/vendors"},{text:((g=s.value)==null?void 0:g.name)||"Loading...",to:null}]},{actions:n(()=>{var f;return[m(u(w),{variant:"outline",size:"sm",onClick:z,disabled:x.value},{default:n(()=>e[2]||(e[2]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1),k(" Edit Vendor ",-1)])),_:1,__:[2]},8,["disabled"]),m(u(w),{variant:"primary",size:"sm",onClick:j,disabled:x.value||((f=s.value)==null?void 0:f.status)!=="active"},{default:n(()=>e[3]||(e[3]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),k(" Create Purchase Order ",-1)])),_:1,__:[3]},8,["disabled"])]}),_:1},8,["title","description","breadcrumbs"])]}),default:n(()=>[t("div",q,[x.value?(l(),a("div",W,e[4]||(e[4]=[t("svg",{class:"animate-spin -ml-1 mr-3 h-8 w-8 text-blue-600",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},[t("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"}),t("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})],-1),t("span",{class:"text-gray-600"},"Loading vendor details...",-1)]))):y.value?(l(),a("div",Y,[e[6]||(e[6]=t("div",{class:"text-red-500 mb-4"},[t("svg",{class:"w-12 h-12 mx-auto",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})])],-1)),e[7]||(e[7]=t("h3",{class:"text-lg font-medium text-gray-900 mb-2"},"Vendor Not Found",-1)),t("p",G,o(y.value),1),m(u(w),{onClick:e[0]||(e[0]=i=>r.$router.push("/vendors"))},{default:n(()=>e[5]||(e[5]=[k(" Back to Vendors ",-1)])),_:1,__:[5]})])):s.value?(l(),a("div",J,[t("div",K,[m(u(c),null,{default:n(()=>[t("div",X,[t("div",Z,[t("div",tt,[m(u(V),{variant:L(s.value.status),size:"lg"},{default:n(()=>[k(o(s.value.status),1)]),_:1},8,["variant"])]),t("div",et,[e[8]||(e[8]=t("p",{class:"text-sm font-medium text-gray-500"},"Status",-1)),t("p",st,o(s.value.status==="active"?"Active":"Inactive"),1)])])])]),_:1}),m(u(c),null,{default:n(()=>[t("div",ot,[t("div",lt,[e[10]||(e[10]=t("div",{class:"flex-shrink-0"},[t("div",{class:"w-10 h-10 bg-yellow-100 rounded-lg flex items-center justify-center"},[t("svg",{class:"w-6 h-6 text-yellow-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 00.95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 00-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 00-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 00-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 00.951-.69l1.519-4.674z"})])])],-1)),t("div",at,[e[9]||(e[9]=t("p",{class:"text-sm font-medium text-gray-500"},"Rating",-1)),t("p",rt,o(s.value.rating?`${s.value.rating}/5`:"Not Rated"),1)])])])]),_:1}),m(u(c),null,{default:n(()=>[t("div",nt,[t("div",it,[e[12]||(e[12]=t("div",{class:"flex-shrink-0"},[t("div",{class:"w-10 h-10 bg-green-100 rounded-lg flex items-center justify-center"},[t("svg",{class:"w-6 h-6 text-green-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8c-1.657 0-3 .895-3 2s1.343 2 3 2 3 .895 3 2-1.343 2-3 2m0-8c1.11 0 2.08.402 2.599 1M12 8V7m0 1v8m0 0v1m0-1c-1.11 0-2.08-.402-2.599-1"})])])],-1)),t("div",dt,[e[11]||(e[11]=t("p",{class:"text-sm font-medium text-gray-500"},"Payment Terms",-1)),t("p",ut,o(s.value.paymentTerms||"Net 30"),1)])])])]),_:1}),m(u(c),null,{default:n(()=>[t("div",mt,[t("div",ct,[e[14]||(e[14]=t("div",{class:"flex-shrink-0"},[t("div",{class:"w-10 h-10 bg-purple-100 rounded-lg flex items-center justify-center"},[t("svg",{class:"w-6 h-6 text-purple-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})])])],-1)),t("div",vt,[e[13]||(e[13]=t("p",{class:"text-sm font-medium text-gray-500"},"Preferred",-1)),t("p",xt,o(s.value.isPreferred?"Yes":"No"),1)])])])]),_:1})]),m(u(U),{modelValue:v.value,"onUpdate:modelValue":e[1]||(e[1]=i=>v.value=i),tabs:F,class:"mb-6"},null,8,["modelValue"]),v.value==="basic"?(l(),b(u(c),{key:0},{default:n(()=>[t("div",yt,[e[22]||(e[22]=t("h3",{class:"text-lg font-medium text-gray-900 mb-6"},"Basic Information",-1)),t("div",pt,[t("div",null,[e[15]||(e[15]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Vendor Name",-1)),t("p",gt,o(s.value.name),1)]),t("div",null,[e[16]||(e[16]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Vendor Code",-1)),t("p",ft,o(s.value.vendorCode),1)]),t("div",null,[e[17]||(e[17]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Email Address",-1)),t("a",{href:`mailto:${s.value.email}`,class:"text-sm text-blue-600 hover:text-blue-800"},o(s.value.email),9,bt)]),t("div",null,[e[18]||(e[18]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Phone Number",-1)),t("a",{href:`tel:${s.value.phone}`,class:"text-sm text-blue-600 hover:text-blue-800"},o(s.value.phone||"Not provided"),9,kt)]),t("div",null,[e[19]||(e[19]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Vendor Type",-1)),m(u(V),{variant:M(s.value.type)},{default:n(()=>[k(o(s.value.type),1)]),_:1},8,["variant"])]),t("div",null,[e[20]||(e[20]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Tax ID",-1)),t("p",_t,o(s.value.taxId||"Not provided"),1)])]),s.value.description?(l(),a("div",ht,[e[21]||(e[21]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Description",-1)),t("p",wt,o(s.value.description),1)])):d("",!0)])]),_:1})):d("",!0),v.value==="financial"?(l(),b(u(c),{key:1},{default:n(()=>{var i,p,g,f;return[t("div",Ct,[e[32]||(e[32]=t("h3",{class:"text-lg font-medium text-gray-900 mb-6"},"Financial Information",-1)),t("div",Nt,[t("div",null,[e[23]||(e[23]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Payment Terms",-1)),t("p",Vt,o(s.value.paymentTerms||"Net 30"),1)]),t("div",null,[e[24]||(e[24]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Currency",-1)),t("p",Pt,o(s.value.currency||"USD"),1)]),t("div",null,[e[25]||(e[25]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Credit Limit",-1)),t("p",Bt,o(s.value.creditLimit?`$${s.value.creditLimit.toLocaleString()}`:"Not set"),1)]),t("div",null,[e[26]||(e[26]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Discount Terms",-1)),t("p",Ft,o(s.value.discountTerms||"None"),1)])]),t("div",It,[e[31]||(e[31]=t("h4",{class:"text-base font-medium text-gray-900 mb-4"},"Bank Information",-1)),t("div",Tt,[t("div",null,[e[27]||(e[27]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Bank Name",-1)),t("p",zt,o(((i=s.value.bankInfo)==null?void 0:i.bankName)||"Not provided"),1)]),t("div",null,[e[28]||(e[28]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Account Number",-1)),t("p",jt,o((p=s.value.bankInfo)!=null&&p.accountNumber?"*".repeat(s.value.bankInfo.accountNumber.length-4)+s.value.bankInfo.accountNumber.slice(-4):"Not provided"),1)]),t("div",null,[e[29]||(e[29]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Routing Number",-1)),t("p",Lt,o(((g=s.value.bankInfo)==null?void 0:g.routingNumber)||"Not provided"),1)]),t("div",null,[e[30]||(e[30]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"SWIFT Code",-1)),t("p",Mt,o(((f=s.value.bankInfo)==null?void 0:f.swiftCode)||"Not provided"),1)])])])])]}),_:1})):d("",!0),v.value==="contact"?(l(),b(u(c),{key:2},{default:n(()=>{var i;return[t("div",$t,[e[40]||(e[40]=t("h3",{class:"text-lg font-medium text-gray-900 mb-6"},"Contact & Location Information",-1)),t("div",Dt,[(i=s.value.primaryContact)!=null&&i.name?(l(),a("div",St,[e[37]||(e[37]=t("h4",{class:"text-base font-medium text-gray-900 mb-4"},"Primary Contact",-1)),t("div",Rt,[t("div",null,[e[33]||(e[33]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Name",-1)),t("p",At,o(s.value.primaryContact.name),1)]),t("div",null,[e[34]||(e[34]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Title",-1)),t("p",Ht,o(s.value.primaryContact.title||"Not provided"),1)]),t("div",null,[e[35]||(e[35]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Email",-1)),s.value.primaryContact.email?(l(),a("a",{key:0,href:`mailto:${s.value.primaryContact.email}`,class:"text-sm text-blue-600 hover:text-blue-800"},o(s.value.primaryContact.email),9,Et)):(l(),a("p",Ot,"Not provided"))]),t("div",null,[e[36]||(e[36]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Phone",-1)),s.value.primaryContact.phone?(l(),a("a",{key:0,href:`tel:${s.value.primaryContact.phone}`,class:"text-sm text-blue-600 hover:text-blue-800"},o(s.value.primaryContact.phone),9,Qt)):(l(),a("p",Ut,"Not provided"))])])])):d("",!0),I.value?(l(),a("div",qt,[e[38]||(e[38]=t("h4",{class:"text-base font-medium text-gray-900 mb-4"},"Address",-1)),t("div",Wt,[s.value.address.street?(l(),a("p",Yt,o(s.value.address.street),1)):d("",!0),t("p",null,[s.value.address.city?(l(),a("span",Gt,o(s.value.address.city),1)):d("",!0),s.value.address.state?(l(),a("span",Jt,", "+o(s.value.address.state),1)):d("",!0),s.value.address.zipCode?(l(),a("span",Kt,o(s.value.address.zipCode),1)):d("",!0)]),s.value.address.country?(l(),a("p",Xt,o(s.value.address.country),1)):d("",!0)])])):d("",!0),s.value.notes?(l(),a("div",Zt,[e[39]||(e[39]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Notes",-1)),t("p",te,o(s.value.notes),1)])):d("",!0)])])]}),_:1})):d("",!0),v.value==="performance"?(l(),b(u(c),{key:3},{default:n(()=>[t("div",ee,[e[45]||(e[45]=t("h3",{class:"text-lg font-medium text-gray-900 mb-6"},"Performance Metrics",-1)),t("div",se,[t("div",oe,[t("div",le,o(s.value.rating||0)+"/5",1),e[42]||(e[42]=t("div",{class:"text-sm text-gray-500"},"Overall Rating",-1)),t("div",ae,[t("div",re,[(l(),a(R,null,A(5,i=>t("svg",{key:i,class:H(["w-4 h-4",i<=(s.value.rating||0)?"text-yellow-400":"text-gray-300"]),fill:"currentColor",viewBox:"0 0 20 20"},e[41]||(e[41]=[t("path",{d:"M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"},null,-1)]),2)),64))])])]),t("div",ne,[t("div",ie,o(s.value.onTimeDelivery||0)+"%",1),e[43]||(e[43]=t("div",{class:"text-sm text-gray-500"},"On-Time Delivery",-1))]),t("div",de,[t("div",ue,o(s.value.qualityScore||0)+"%",1),e[44]||(e[44]=t("div",{class:"text-sm text-gray-500"},"Quality Score",-1))])]),e[46]||(e[46]=t("div",{class:"mt-8"},[t("h4",{class:"text-base font-medium text-gray-900 mb-4"},"Recent Performance"),t("div",{class:"space-y-4"},[t("div",{class:"text-sm text-gray-500 text-center py-8"}," Performance history would be displayed here based on historical data. ")])],-1))])]),_:1})):d("",!0)])):d("",!0)])]),_:1}))}};export{fe as default}; +import{r as _,c as N,s as $,o as D,i as b,w as n,v as S,g as l,b as t,a,j as d,d as m,t as o,e as u,F as w,k,af as R,aR as A,n as H}from"./index-QAlcqU00.js";import{u as E}from"./vendors-C-y6J9yC.js";import{F as O,a as U}from"./FPPageHeader-CFIwZZgQ.js";import{F as c}from"./FPCard-AB6NRXg5.js";import{F as V}from"./FPBadge-DvOitM1C.js";import{F as q}from"./FPTabs-qq-Tmb7J.js";const Q={class:"px-6 py-8"},W={key:0,class:"flex items-center justify-center py-12"},Y={key:1,class:"text-center py-12"},G={class:"text-gray-600 mb-4"},J={key:2,class:"space-y-8"},K={class:"grid grid-cols-1 md:grid-cols-4 gap-6"},X={class:"p-6"},Z={class:"flex items-center"},tt={class:"flex-shrink-0"},et={class:"ml-4"},st={class:"text-lg font-semibold text-gray-900"},ot={class:"p-6"},lt={class:"flex items-center"},at={class:"ml-4"},rt={class:"text-lg font-semibold text-gray-900"},nt={class:"p-6"},it={class:"flex items-center"},dt={class:"ml-4"},ut={class:"text-lg font-semibold text-gray-900"},mt={class:"p-6"},ct={class:"flex items-center"},vt={class:"ml-4"},xt={class:"text-lg font-semibold text-gray-900"},yt={class:"p-6"},pt={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},gt={class:"text-sm text-gray-900"},ft={class:"text-sm text-gray-900 font-mono"},bt=["href"],kt=["href"],_t={class:"text-sm text-gray-900 font-mono"},ht={key:0,class:"mt-6"},wt={class:"text-sm text-gray-900"},Ct={class:"p-6"},Nt={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},Vt={class:"text-sm text-gray-900"},Pt={class:"text-sm text-gray-900"},Bt={class:"text-sm text-gray-900"},Ft={class:"text-sm text-gray-900"},It={class:"mt-6"},Tt={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},zt={class:"text-sm text-gray-900"},jt={class:"text-sm text-gray-900 font-mono"},Lt={class:"text-sm text-gray-900 font-mono"},Mt={class:"text-sm text-gray-900 font-mono"},$t={class:"p-6"},Dt={class:"space-y-6"},St={key:0},Rt={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},At={class:"text-sm text-gray-900"},Ht={class:"text-sm text-gray-900"},Et=["href"],Ot={key:1,class:"text-sm text-gray-900"},Ut=["href"],qt={key:1,class:"text-sm text-gray-900"},Qt={key:1},Wt={class:"text-sm text-gray-900"},Yt={key:0},Gt={key:0},Jt={key:1},Kt={key:2},Xt={key:1},Zt={key:2},te={class:"text-sm text-gray-900"},ee={class:"p-6"},se={class:"grid grid-cols-1 md:grid-cols-3 gap-6"},oe={class:"text-center"},le={class:"text-2xl font-bold text-gray-900"},ae={class:"mt-2"},re={class:"flex justify-center space-x-1"},ne={class:"text-center"},ie={class:"text-2xl font-bold text-gray-900"},de={class:"text-center"},ue={class:"text-2xl font-bold text-gray-900"},fe={__name:"VendorDetailView",setup(me){const P=$(),C=S(),B=E(),x=_(!1),y=_(null),s=_(null),v=_("basic"),h=N(()=>parseInt(P.params.id)),F=[{key:"basic",label:"Basic Information",icon:"info"},{key:"financial",label:"Financial",icon:"dollar"},{key:"contact",label:"Contact & Location",icon:"map"},{key:"performance",label:"Performance",icon:"chart"}],I=N(()=>{var e;if(!((e=s.value)!=null&&e.address))return!1;const r=s.value.address;return r.street||r.city||r.state||r.zipCode||r.country}),T=async()=>{x.value=!0,y.value=null;try{const r=await B.getVendor(h.value);r?s.value=r:y.value="Vendor not found"}catch(r){console.error("Failed to load vendor:",r),y.value="Failed to load vendor details"}finally{x.value=!1}},z=()=>{C.push(`/vendors?edit=${h.value}`)},j=()=>{C.push(`/purchase-orders?create=true&vendorId=${h.value}`)},L=r=>({active:"green",inactive:"gray",suspended:"red"})[r]||"gray",M=r=>({supplier:"blue",contractor:"green",consultant:"purple",service:"yellow"})[r]||"gray";return D(async()=>{await T()}),(r,e)=>(l(),b(O,null,{header:n(()=>{var i,p,g;return[m(U,{title:((i=s.value)==null?void 0:i.name)||"Vendor Details",description:((p=s.value)==null?void 0:p.description)||"Vendor information and service details",breadcrumbs:[{text:"Vendors",to:"/vendors"},{text:((g=s.value)==null?void 0:g.name)||"Loading...",to:null}]},{actions:n(()=>{var f;return[m(u(w),{variant:"outline",size:"sm",onClick:z,disabled:x.value},{default:n(()=>e[2]||(e[2]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1),k(" Edit Vendor ",-1)])),_:1,__:[2]},8,["disabled"]),m(u(w),{variant:"primary",size:"sm",onClick:j,disabled:x.value||((f=s.value)==null?void 0:f.status)!=="active"},{default:n(()=>e[3]||(e[3]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),k(" Create Purchase Order ",-1)])),_:1,__:[3]},8,["disabled"])]}),_:1},8,["title","description","breadcrumbs"])]}),default:n(()=>[t("div",Q,[x.value?(l(),a("div",W,e[4]||(e[4]=[t("svg",{class:"animate-spin -ml-1 mr-3 h-8 w-8 text-blue-600",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},[t("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"}),t("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})],-1),t("span",{class:"text-gray-600"},"Loading vendor details...",-1)]))):y.value?(l(),a("div",Y,[e[6]||(e[6]=t("div",{class:"text-red-500 mb-4"},[t("svg",{class:"w-12 h-12 mx-auto",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})])],-1)),e[7]||(e[7]=t("h3",{class:"text-lg font-medium text-gray-900 mb-2"},"Vendor Not Found",-1)),t("p",G,o(y.value),1),m(u(w),{onClick:e[0]||(e[0]=i=>r.$router.push("/vendors"))},{default:n(()=>e[5]||(e[5]=[k(" Back to Vendors ",-1)])),_:1,__:[5]})])):s.value?(l(),a("div",J,[t("div",K,[m(u(c),null,{default:n(()=>[t("div",X,[t("div",Z,[t("div",tt,[m(u(V),{variant:L(s.value.status),size:"lg"},{default:n(()=>[k(o(s.value.status),1)]),_:1},8,["variant"])]),t("div",et,[e[8]||(e[8]=t("p",{class:"text-sm font-medium text-gray-500"},"Status",-1)),t("p",st,o(s.value.status==="active"?"Active":"Inactive"),1)])])])]),_:1}),m(u(c),null,{default:n(()=>[t("div",ot,[t("div",lt,[e[10]||(e[10]=t("div",{class:"flex-shrink-0"},[t("div",{class:"w-10 h-10 bg-yellow-100 rounded-lg flex items-center justify-center"},[t("svg",{class:"w-6 h-6 text-yellow-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 00.95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 00-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 00-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 00-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 00.951-.69l1.519-4.674z"})])])],-1)),t("div",at,[e[9]||(e[9]=t("p",{class:"text-sm font-medium text-gray-500"},"Rating",-1)),t("p",rt,o(s.value.rating?`${s.value.rating}/5`:"Not Rated"),1)])])])]),_:1}),m(u(c),null,{default:n(()=>[t("div",nt,[t("div",it,[e[12]||(e[12]=t("div",{class:"flex-shrink-0"},[t("div",{class:"w-10 h-10 bg-green-100 rounded-lg flex items-center justify-center"},[t("svg",{class:"w-6 h-6 text-green-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8c-1.657 0-3 .895-3 2s1.343 2 3 2 3 .895 3 2-1.343 2-3 2m0-8c1.11 0 2.08.402 2.599 1M12 8V7m0 1v8m0 0v1m0-1c-1.11 0-2.08-.402-2.599-1"})])])],-1)),t("div",dt,[e[11]||(e[11]=t("p",{class:"text-sm font-medium text-gray-500"},"Payment Terms",-1)),t("p",ut,o(s.value.paymentTerms||"Net 30"),1)])])])]),_:1}),m(u(c),null,{default:n(()=>[t("div",mt,[t("div",ct,[e[14]||(e[14]=t("div",{class:"flex-shrink-0"},[t("div",{class:"w-10 h-10 bg-purple-100 rounded-lg flex items-center justify-center"},[t("svg",{class:"w-6 h-6 text-purple-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})])])],-1)),t("div",vt,[e[13]||(e[13]=t("p",{class:"text-sm font-medium text-gray-500"},"Preferred",-1)),t("p",xt,o(s.value.isPreferred?"Yes":"No"),1)])])])]),_:1})]),m(u(q),{modelValue:v.value,"onUpdate:modelValue":e[1]||(e[1]=i=>v.value=i),tabs:F,class:"mb-6"},null,8,["modelValue"]),v.value==="basic"?(l(),b(u(c),{key:0},{default:n(()=>[t("div",yt,[e[22]||(e[22]=t("h3",{class:"text-lg font-medium text-gray-900 mb-6"},"Basic Information",-1)),t("div",pt,[t("div",null,[e[15]||(e[15]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Vendor Name",-1)),t("p",gt,o(s.value.name),1)]),t("div",null,[e[16]||(e[16]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Vendor Code",-1)),t("p",ft,o(s.value.vendorCode),1)]),t("div",null,[e[17]||(e[17]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Email Address",-1)),t("a",{href:`mailto:${s.value.email}`,class:"text-sm text-blue-600 hover:text-blue-800"},o(s.value.email),9,bt)]),t("div",null,[e[18]||(e[18]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Phone Number",-1)),t("a",{href:`tel:${s.value.phone}`,class:"text-sm text-blue-600 hover:text-blue-800"},o(s.value.phone||"Not provided"),9,kt)]),t("div",null,[e[19]||(e[19]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Vendor Type",-1)),m(u(V),{variant:M(s.value.type)},{default:n(()=>[k(o(s.value.type),1)]),_:1},8,["variant"])]),t("div",null,[e[20]||(e[20]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Tax ID",-1)),t("p",_t,o(s.value.taxId||"Not provided"),1)])]),s.value.description?(l(),a("div",ht,[e[21]||(e[21]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Description",-1)),t("p",wt,o(s.value.description),1)])):d("",!0)])]),_:1})):d("",!0),v.value==="financial"?(l(),b(u(c),{key:1},{default:n(()=>{var i,p,g,f;return[t("div",Ct,[e[32]||(e[32]=t("h3",{class:"text-lg font-medium text-gray-900 mb-6"},"Financial Information",-1)),t("div",Nt,[t("div",null,[e[23]||(e[23]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Payment Terms",-1)),t("p",Vt,o(s.value.paymentTerms||"Net 30"),1)]),t("div",null,[e[24]||(e[24]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Currency",-1)),t("p",Pt,o(s.value.currency||"USD"),1)]),t("div",null,[e[25]||(e[25]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Credit Limit",-1)),t("p",Bt,o(s.value.creditLimit?`$${s.value.creditLimit.toLocaleString()}`:"Not set"),1)]),t("div",null,[e[26]||(e[26]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Discount Terms",-1)),t("p",Ft,o(s.value.discountTerms||"None"),1)])]),t("div",It,[e[31]||(e[31]=t("h4",{class:"text-base font-medium text-gray-900 mb-4"},"Bank Information",-1)),t("div",Tt,[t("div",null,[e[27]||(e[27]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Bank Name",-1)),t("p",zt,o(((i=s.value.bankInfo)==null?void 0:i.bankName)||"Not provided"),1)]),t("div",null,[e[28]||(e[28]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Account Number",-1)),t("p",jt,o((p=s.value.bankInfo)!=null&&p.accountNumber?"*".repeat(s.value.bankInfo.accountNumber.length-4)+s.value.bankInfo.accountNumber.slice(-4):"Not provided"),1)]),t("div",null,[e[29]||(e[29]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Routing Number",-1)),t("p",Lt,o(((g=s.value.bankInfo)==null?void 0:g.routingNumber)||"Not provided"),1)]),t("div",null,[e[30]||(e[30]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"SWIFT Code",-1)),t("p",Mt,o(((f=s.value.bankInfo)==null?void 0:f.swiftCode)||"Not provided"),1)])])])])]}),_:1})):d("",!0),v.value==="contact"?(l(),b(u(c),{key:2},{default:n(()=>{var i;return[t("div",$t,[e[40]||(e[40]=t("h3",{class:"text-lg font-medium text-gray-900 mb-6"},"Contact & Location Information",-1)),t("div",Dt,[(i=s.value.primaryContact)!=null&&i.name?(l(),a("div",St,[e[37]||(e[37]=t("h4",{class:"text-base font-medium text-gray-900 mb-4"},"Primary Contact",-1)),t("div",Rt,[t("div",null,[e[33]||(e[33]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Name",-1)),t("p",At,o(s.value.primaryContact.name),1)]),t("div",null,[e[34]||(e[34]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Title",-1)),t("p",Ht,o(s.value.primaryContact.title||"Not provided"),1)]),t("div",null,[e[35]||(e[35]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Email",-1)),s.value.primaryContact.email?(l(),a("a",{key:0,href:`mailto:${s.value.primaryContact.email}`,class:"text-sm text-blue-600 hover:text-blue-800"},o(s.value.primaryContact.email),9,Et)):(l(),a("p",Ot,"Not provided"))]),t("div",null,[e[36]||(e[36]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Phone",-1)),s.value.primaryContact.phone?(l(),a("a",{key:0,href:`tel:${s.value.primaryContact.phone}`,class:"text-sm text-blue-600 hover:text-blue-800"},o(s.value.primaryContact.phone),9,Ut)):(l(),a("p",qt,"Not provided"))])])])):d("",!0),I.value?(l(),a("div",Qt,[e[38]||(e[38]=t("h4",{class:"text-base font-medium text-gray-900 mb-4"},"Address",-1)),t("div",Wt,[s.value.address.street?(l(),a("p",Yt,o(s.value.address.street),1)):d("",!0),t("p",null,[s.value.address.city?(l(),a("span",Gt,o(s.value.address.city),1)):d("",!0),s.value.address.state?(l(),a("span",Jt,", "+o(s.value.address.state),1)):d("",!0),s.value.address.zipCode?(l(),a("span",Kt,o(s.value.address.zipCode),1)):d("",!0)]),s.value.address.country?(l(),a("p",Xt,o(s.value.address.country),1)):d("",!0)])])):d("",!0),s.value.notes?(l(),a("div",Zt,[e[39]||(e[39]=t("label",{class:"block text-sm font-medium text-gray-700 mb-1"},"Notes",-1)),t("p",te,o(s.value.notes),1)])):d("",!0)])])]}),_:1})):d("",!0),v.value==="performance"?(l(),b(u(c),{key:3},{default:n(()=>[t("div",ee,[e[45]||(e[45]=t("h3",{class:"text-lg font-medium text-gray-900 mb-6"},"Performance Metrics",-1)),t("div",se,[t("div",oe,[t("div",le,o(s.value.rating||0)+"/5",1),e[42]||(e[42]=t("div",{class:"text-sm text-gray-500"},"Overall Rating",-1)),t("div",ae,[t("div",re,[(l(),a(R,null,A(5,i=>t("svg",{key:i,class:H(["w-4 h-4",i<=(s.value.rating||0)?"text-yellow-400":"text-gray-300"]),fill:"currentColor",viewBox:"0 0 20 20"},e[41]||(e[41]=[t("path",{d:"M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"},null,-1)]),2)),64))])])]),t("div",ne,[t("div",ie,o(s.value.onTimeDelivery||0)+"%",1),e[43]||(e[43]=t("div",{class:"text-sm text-gray-500"},"On-Time Delivery",-1))]),t("div",de,[t("div",ue,o(s.value.qualityScore||0)+"%",1),e[44]||(e[44]=t("div",{class:"text-sm text-gray-500"},"Quality Score",-1))])]),e[46]||(e[46]=t("div",{class:"mt-8"},[t("h4",{class:"text-base font-medium text-gray-900 mb-4"},"Recent Performance"),t("div",{class:"space-y-4"},[t("div",{class:"text-sm text-gray-500 text-center py-8"}," Performance history would be displayed here based on historical data. ")])],-1))])]),_:1})):d("",!0)])):d("",!0)])]),_:1}))}};export{fe as default}; diff --git a/frontend/dist/assets/VendorsListView-DhYeR9jE.js b/frontend/dist/assets/VendorsListView-RDXjMLTt.js similarity index 94% rename from frontend/dist/assets/VendorsListView-DhYeR9jE.js rename to frontend/dist/assets/VendorsListView-RDXjMLTt.js index 84ea5cd8..c5ba7039 100644 --- a/frontend/dist/assets/VendorsListView-DhYeR9jE.js +++ b/frontend/dist/assets/VendorsListView-RDXjMLTt.js @@ -1,2 +1,2 @@ -import{r as U,c as k,l as bt,o as xt,m as Ct,i as Ce,w as C,s as wt,v as kt,g as T,b as r,d as h,e as t,F as A,n as ue,k as O,h as ge,t as I,a as F,af as Re,aQ as Ae,j as B,Q as Pt,aV as Tt,ae as Oe,ba as St,aU as Ft}from"./index-BUdRbiwj.js";import{V as N,a as M,P as Et,C as It,b as Ut,c as _t,d as ye,u as ke,e as E,f as we,g as Me,h as Nt}from"./vendors-CLTqdcI-.js";import{u as Rt}from"./useFormAutoSave-Jaawgo91.js";import{l as At}from"./lodash-RqMXHFU9.js";import{F as Ot,a as Bt}from"./FPPageHeader-CTG2L28r.js";import{F as $}from"./FPInput-CzR_dWoe.js";import{F as re}from"./FPSelect-C7p47Ma2.js";import{F as Lt}from"./FPStats-BGfZcDZc.js";import{F as $t}from"./FPTable-CU8C_NYc.js";import{F as Be}from"./FPModal-DWGF1LV8.js";import{F as Le}from"./FPBadge-BKY5dPnL.js";import{F as $e}from"./FPTabs-R71V25QN.js";import{_ as Mt}from"./FormRestoreNotification-DYBlXhOP.js";import"./_commonjsHelpers-NT8qMgGI.js";import"./FPCard-qHzcEQAE.js";function zt(){const l=U({...ye}),d=U({}),g=U("basic"),v=[{key:"basic",label:"Basic Information",icon:"info"},{key:"contact",label:"Contact Details",icon:"phone"},{key:"business",label:"Business Details",icon:"briefcase"},{key:"settings",label:"Settings & Notes",icon:"cog"}],q=k(()=>Object.entries(N).map(([o,m])=>({label:o.split("_").map(w=>w.charAt(0).toUpperCase()+w.slice(1).toLowerCase()).join(" "),value:m}))),G=k(()=>Object.entries(M).map(([o,m])=>({label:o.charAt(0).toUpperCase()+o.slice(1).toLowerCase(),value:m}))),Z=k(()=>Et),H=k(()=>It),W=k(()=>Ut),K=k(()=>_t),X=k(()=>Object.keys(d.value).length===0&&l.value.name&&l.value.name.trim().length>0&&l.value.type),ee=k(()=>v.findIndex(m=>m.key===g.value)===0),te=k(()=>v.findIndex(m=>m.key===g.value)===v.length-1),Y=k(()=>v.findIndex(o=>o.key===g.value)),a=k(()=>{const o=["name","type"],m=["code","contactPerson","email","phone","address.street","address.city"];let w=0,se=o.length+m.length;return o.forEach(j=>{l.value[j]&&w++}),m.forEach(j=>{if(j.includes(".")){const[ce,me]=j.split(".");l.value[ce]&&l.value[ce][me]&&w++}else l.value[j]&&w++}),Math.round(w/se*100)}),u=()=>{const o={};if(!l.value.name||l.value.name.trim().length===0?o.name="Vendor name is required":l.value.name.trim().length<2?o.name="Vendor name must be at least 2 characters":l.value.name.trim().length>100&&(o.name="Vendor name must be less than 100 characters"),l.value.code){const m=l.value.code.trim();m.length<2||m.length>20?o.code="Vendor code must be between 2 and 20 characters":/^[A-Z0-9\-_]+$/.test(m.toUpperCase())||(o.code="Vendor code can only contain letters, numbers, hyphens, and underscores")}if(l.value.type||(o.type="Vendor type is required"),l.value.email&&!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(l.value.email)&&(o.email="Invalid email format"),l.value.phone&&!/^[\d\s\-+()]+$/.test(l.value.phone)&&(o.phone="Invalid phone number format"),l.value.website&&!/^https?:\/\/.+/.test(l.value.website)&&(o.website="Website must start with http:// or https://"),l.value.contactPerson&&l.value.contactPerson.length>100&&(o.contactPerson="Contact person must be less than 100 characters"),l.value.taxId&&l.value.taxId.length>50&&(o.taxId="Tax ID must be less than 50 characters"),l.value.businessNumber&&l.value.businessNumber.length>50&&(o.businessNumber="Business number must be less than 50 characters"),l.value.paymentTerms&&l.value.paymentTerms.length>100&&(o.paymentTerms="Payment terms must be less than 100 characters"),l.value.rating!==null&&l.value.rating!==void 0){const m=Number(l.value.rating);(isNaN(m)||m<1||m>5)&&(o.rating="Rating must be between 1 and 5")}return l.value.notes&&l.value.notes.length>1e3&&(o.notes="Notes must be less than 1000 characters"),d.value=o,Object.keys(o).length===0},f=o=>{if(d.value[o]){const m={...d.value};delete m[o],d.value=m}},i=()=>{l.value={...ye},d.value={},g.value="basic"},b=o=>{l.value={...ye,...o,address:{...ye.address,...o.address||{}}},d.value={},g.value="basic"},c=()=>({...l.value,address:{...l.value.address}}),p=()=>{const o=v.findIndex(m=>m.key===g.value);o{const o=v.findIndex(m=>m.key===g.value);o>0&&(g.value=v[o-1].key)},x=o=>{v.some(w=>w.key===o)&&(g.value=o)},_=(o,m)=>{if(o.includes(".")){const[w,se]=o.split(".");l.value[w]||(l.value[w]={}),l.value[w][se]=m}else l.value[o]=m;f(o)};return{formData:l,errors:d,activeTab:g,formTabs:v,typeOptions:q,statusOptions:G,paymentTermsOptions:Z,currencyOptions:H,ratingOptions:W,countryOptions:K,isValid:X,isFirstTab:ee,isLastTab:te,currentTabIndex:Y,completionPercentage:a,validateForm:u,clearFieldError:f,resetForm:i,populateForm:b,getFormData:c,nextTab:p,previousTab:y,goToTab:x,setField:_,setAddress:o=>{l.value.address={...l.value.address,...o},["street","city","state","postalCode","country"].forEach(w=>f(`address.${w}`))},togglePreferred:()=>{l.value.isPreferred=!l.value.isPreferred,f("isPreferred")},setRating:o=>{l.value.rating=o===l.value.rating?null:o,f("rating")},handleFieldChange:(o,m)=>{if(_(o,m),o==="name"&&m){const w=m.trim();w.length>=2&&w.length<=100&&f("name")}if(o==="email"&&m&&/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(m)&&f("email"),o==="phone"&&m&&/^[\d\s\-+()]+$/.test(m)&&f("phone"),o==="website"&&m&&/^https?:\/\/.+/.test(m)&&f("website"),o==="code"&&m){const w=m.trim().toUpperCase();w.length>=2&&w.length<=20&&/^[A-Z0-9\-_]+$/.test(w)&&f("code")}},formatWebsite:o=>o?!o.startsWith("http://")&&!o.startsWith("https://")?`https://${o}`:o:"",formatPhoneNumber:o=>{if(!o)return"";const m=o.replace(/\D/g,"");return m.length===10?`(${m.slice(0,3)}) ${m.slice(3,6)}-${m.slice(6)}`:o}}}function Dt(){const l=ke(),d=U(null),g=U(!1),v=a=>{if(d.value=null,!a.name||typeof a.name!="string")return d.value="Vendor name is required",!1;const u=a.name.trim();if(u.lengthE.name.maxLength)return d.value=`Vendor name must be less than ${E.name.maxLength} characters`,!1;if(!E.name.pattern.test(u))return d.value="Vendor name contains invalid characters",!1;if(a.code){const f=a.code.trim().toUpperCase();if(f.lengthE.code.maxLength)return d.value=`Vendor code must be less than ${E.code.maxLength} characters`,!1;if(!E.code.pattern.test(f))return d.value="Vendor code can only contain letters, numbers, hyphens, and underscores",!1}if(!a.type||!Object.values(N).includes(a.type))return d.value="Valid vendor type is required",!1;if(!a.status||!Object.values(M).includes(a.status))return d.value="Valid vendor status is required",!1;if(a.email&&!E.email.pattern.test(a.email))return d.value="Invalid email format",!1;if(a.phone&&!E.phone.pattern.test(a.phone))return d.value="Invalid phone number format",!1;if(a.website&&!E.website.pattern.test(a.website))return d.value="Website must start with http:// or https://",!1;if(a.contactPerson&&a.contactPerson.length>E.contactPerson.maxLength)return d.value=`Contact person must be less than ${E.contactPerson.maxLength} characters`,!1;if(a.rating!==null&&a.rating!==void 0){const f=Number(a.rating);if(isNaN(f)||fE.rating.max)return d.value=`Rating must be between ${E.rating.min} and ${E.rating.max}`,!1}return a.notes&&a.notes.length>E.notes.maxLength?(d.value=`Notes must be less than ${E.notes.maxLength} characters`,!1):!0},q=a=>{var u,f,i,b,c,p,y,x,_,P,V,R,D,Q,J,o,m,w;return{name:(u=a.name)==null?void 0:u.trim(),code:((f=a.code)==null?void 0:f.trim().toUpperCase())||"",type:a.type,status:a.status||M.ACTIVE,contactPerson:((i=a.contactPerson)==null?void 0:i.trim())||"",email:((b=a.email)==null?void 0:b.trim())||"",phone:((c=a.phone)==null?void 0:c.trim())||"",website:((p=a.website)==null?void 0:p.trim())||"",address:{street:((x=(y=a.address)==null?void 0:y.street)==null?void 0:x.trim())||"",city:((P=(_=a.address)==null?void 0:_.city)==null?void 0:P.trim())||"",state:((R=(V=a.address)==null?void 0:V.state)==null?void 0:R.trim())||"",postalCode:((Q=(D=a.address)==null?void 0:D.postalCode)==null?void 0:Q.trim())||"",country:((J=a.address)==null?void 0:J.country)||""},taxId:((o=a.taxId)==null?void 0:o.trim())||"",businessNumber:((m=a.businessNumber)==null?void 0:m.trim())||"",paymentTerms:a.paymentTerms||"",currency:a.currency||"USD",isPreferred:!!a.isPreferred,rating:a.rating?Number(a.rating):null,notes:((w=a.notes)==null?void 0:w.trim())||""}},G=(a,u=null)=>{const f=l.vendors,i=a.trim().toLowerCase();return!f.some(b=>b.name.toLowerCase()===i&&b.id!==u)},Z=(a,u=null)=>{if(!a)return!0;const f=l.vendors,i=a.trim().toUpperCase();return!f.some(b=>{var c;return((c=b.code)==null?void 0:c.toUpperCase())===i&&b.id!==u})},H=(a,u=null)=>(d.value=null,G(a.name,u)?a.code&&!Z(a.code,u)?(d.value="A vendor with this code already exists",!1):!0:(d.value="A vendor with this name already exists",!1)),W=async a=>{g.value=!0,d.value=null;try{if(!v(a))throw new Error(d.value);const u=q(a);if(!H(u))throw new Error(d.value);return{success:!0,data:await l.createVendor(u)}}catch(u){return d.value=u.message,console.error("Failed to create vendor:",u),{success:!1,error:u.message}}finally{g.value=!1}},K=async(a,u)=>{g.value=!0,d.value=null;try{if(!v(u))throw new Error(d.value);const f=q(u);if(!H(f,a))throw new Error(d.value);return{success:!0,data:await l.updateVendor(a,f)}}catch(f){return d.value=f.message,console.error("Failed to update vendor:",f),{success:!1,error:f.message}}finally{g.value=!1}},X=async a=>{g.value=!0,d.value=null;try{return await l.deleteVendor(a),{success:!0}}catch(u){return d.value=u.message,console.error("Failed to delete vendor:",u),{success:!1,error:u.message}}finally{g.value=!1}},ee=a=>{let u=0;a.rating&&(u+=a.rating/5*40),a.status===M.ACTIVE?u+=20:a.status===M.PENDING&&(u+=10),a.isPreferred&&(u+=15);let f=0;const i=["contactPerson","email","phone","address","taxId"];return i.forEach(b=>{var c,p;b==="address"?(c=a.address)!=null&&c.street&&((p=a.address)!=null&&p.city)&&(f+=1):a[b]&&(f+=1)}),u+=f/i.length*25,Math.round(u)},te=a=>{var f,i;let u=0;return a.status===M.SUSPENDED&&(u+=3),a.status===M.PENDING&&(u+=1),a.rating&&a.rating<3&&(u+=2),a.rating||(u+=1),a.email||(u+=1),a.phone||(u+=1),(!((f=a.address)!=null&&f.street)||!((i=a.address)!=null&&i.city))&&(u+=1),u>=4?"high":u>=2?"medium":"low"},Y=(a,u)=>{if(!a)return"";const f=a.replace(/[^a-zA-Z]/g,"").substring(0,3).toUpperCase(),i=u.split("_").map(c=>c.charAt(0)).join("").toUpperCase(),b=Math.floor(Math.random()*99)+1;return`${f}${i}${b.toString().padStart(2,"0")}`};return{error:k(()=>d.value),processing:k(()=>g.value),validateVendor:v,validateVendorBusinessRules:H,processVendorData:q,isVendorNameUnique:G,isVendorCodeUnique:Z,createVendor:W,updateVendor:K,deleteVendor:X,calculateVendorPerformance:ee,getVendorRiskLevel:te,generateVendorCode:Y}}function jt(){const l=ke(),{addNotification:d}=bt(),g=U(!1),v=U(null),q=async c=>{const{validateForm:p,validateBusinessRules:y,getFormData:x,processVendorData:_}=c;g.value=!0,v.value=null;try{if(!p())throw new Error("Please correct the form errors");const P=x(),V=_(P);if(!y(V))throw new Error("Business validation failed");const R=await l.createVendor(V);return d({type:"success",title:"Vendor Created",message:`${V.name} has been created successfully`}),{success:!0,data:R}}catch(P){return v.value=P.message,d({type:"error",title:"Creation Failed",message:P.message||"Failed to create vendor"}),{success:!1,error:P.message}}finally{g.value=!1}},G=async c=>{const{vendorId:p,validateForm:y,validateBusinessRules:x,getFormData:_,processVendorData:P}=c;g.value=!0,v.value=null;try{if(!y())throw new Error("Please correct the form errors");const V=_(),R=P(V);if(!x(R,p))throw new Error("Business validation failed");const D=await l.updateVendor(p,R);return d({type:"success",title:"Vendor Updated",message:`${R.name} has been updated successfully`}),{success:!0,data:D}}catch(V){return v.value=V.message,d({type:"error",title:"Update Failed",message:V.message||"Failed to update vendor"}),{success:!1,error:V.message}}finally{g.value=!1}},Z=async(c,p="Vendor")=>{g.value=!0,v.value=null;try{return await l.deleteVendor(c),d({type:"success",title:"Vendor Deleted",message:`${p} has been deleted successfully`}),{success:!0}}catch(y){return v.value=y.message,d({type:"error",title:"Deletion Failed",message:y.message||`Failed to delete ${p}`}),{success:!1,error:y.message}}finally{g.value=!1}},H=async()=>{g.value=!0,v.value=null;try{await l.refreshVendors(),d({type:"info",title:"Vendors Refreshed",message:"Vendor data has been refreshed"})}catch(c){v.value=c.message,d({type:"error",title:"Refresh Failed",message:c.message||"Failed to refresh vendors"})}finally{g.value=!1}},W=async(c,p={})=>{g.value=!0,v.value=null;try{const y={search:c,...p};await l.fetchVendors(y)}catch(y){v.value=y.message,console.error("Vendor search failed:",y)}finally{g.value=!1}},K=async c=>{const p=l.searchCriteria;await W(p.search||"",{...p,page:c})},X=async c=>{const{key:p,direction:y}=c,x=l.searchCriteria;await W(x.search||"",{...x,sortBy:p,sortOrder:y})},ee=async(c={},p="csv")=>{g.value=!0,v.value=null;try{const y=l.filteredVendors;if(y.length===0)throw new Error("No vendors to export");const x=y.map(V=>{var R,D,Q,J,o;return{Name:V.name,Code:V.code||"",Type:Me[V.type]||V.type,Status:we[V.status]||V.status,"Contact Person":V.contactPerson||"",Email:V.email||"",Phone:V.phone||"",Website:V.website||"","Street Address":((R=V.address)==null?void 0:R.street)||"",City:((D=V.address)==null?void 0:D.city)||"",State:((Q=V.address)==null?void 0:Q.state)||"","Postal Code":((J=V.address)==null?void 0:J.postalCode)||"",Country:((o=V.address)==null?void 0:o.country)||"","Tax ID":V.taxId||"","Business Number":V.businessNumber||"","Payment Terms":V.paymentTerms||"",Currency:V.currency||"",Preferred:V.isPreferred?"Yes":"No",Rating:V.rating?`${V.rating} stars`:"","Created At":new Date(V.createdAt).toLocaleDateString(),"Updated At":new Date(V.updatedAt).toLocaleDateString()}}),P=`vendors_${new Date().toISOString().split("T")[0]}.${p}`;p==="csv"?f(x,P):p==="json"&&i(y,P),d({type:"success",title:"Export Complete",message:`Vendors exported as ${P}`})}catch(y){v.value=y.message,d({type:"error",title:"Export Failed",message:y.message||"Failed to export vendors"})}finally{g.value=!1}},te=async(c,p,y="Vendor")=>{g.value=!0,v.value=null;try{await l.updateVendorStatus(c,p);const x=we[p]||p;return d({type:"success",title:"Status Updated",message:`${y} status updated to ${x}`}),{success:!0}}catch(x){return v.value=x.message,d({type:"error",title:"Status Update Failed",message:x.message||"Failed to update vendor status"}),{success:!1,error:x.message}}finally{g.value=!1}},Y=async(c,p,y="Vendor")=>{g.value=!0,v.value=null;try{return await l.setVendorPreferred(c,p),d({type:"success",title:"Preferred Status Updated",message:`${y} ${p?"added to":"removed from"} preferred vendors`}),{success:!0}}catch(x){return v.value=x.message,d({type:"error",title:"Update Failed",message:x.message||"Failed to update preferred status"}),{success:!1,error:x.message}}finally{g.value=!1}},a=async(c,p,y="Vendor")=>{g.value=!0,v.value=null;try{return await l.updateVendorRating(c,p),d({type:"success",title:"Rating Updated",message:`${y} rating updated to ${p} stars`}),{success:!0}}catch(x){return v.value=x.message,d({type:"error",title:"Rating Update Failed",message:x.message||"Failed to update vendor rating"}),{success:!1,error:x.message}}finally{g.value=!1}},u=async c=>{g.value=!0,v.value=null;try{return await l.setCurrentVendor(c)}catch(p){throw v.value=p.message,d({type:"error",title:"Load Failed",message:p.message||"Failed to load vendor"}),p}finally{g.value=!1}},f=(c,p)=>{const y=Object.keys(c[0]),x=[y.join(","),...c.map(_=>y.map(P=>`"${_[P]||""}"`).join(","))].join(` -`);b(x,p,"text/csv")},i=(c,p)=>{const y=JSON.stringify(c,null,2);b(y,p,"application/json")},b=(c,p,y)=>{const x=new Blob([c],{type:y}),_=window.URL.createObjectURL(x),P=document.createElement("a");P.href=_,P.download=p,document.body.appendChild(P),P.click(),document.body.removeChild(P),window.URL.revokeObjectURL(_)};return{isProcessing:k(()=>g.value),operationError:k(()=>v.value),submitVendor:q,updateVendor:G,handleVendorDeletion:Z,handleVendorsRefresh:H,handleVendorSearch:W,handleVendorPagination:K,handleVendorSorting:X,handleVendorExport:ee,handleVendorLoad:u,handleVendorStatusUpdate:te,handleVendorPreferredToggle:Y,handleVendorRatingUpdate:a}}const qt={class:"p-6"},Ht={class:"mb-6 grid grid-cols-1 md:grid-cols-4 gap-4"},Wt={class:"flex space-x-2"},Yt={class:"bg-white shadow rounded-lg overflow-hidden"},Qt={class:"flex items-center space-x-3"},Gt={class:"flex items-center space-x-2"},Zt={class:"font-medium text-gray-900"},Jt={key:0,class:"w-4 h-4 text-yellow-500",fill:"currentColor",viewBox:"0 0 20 20",title:"Preferred Vendor"},Kt={key:0,class:"text-sm text-gray-500"},Xt={class:"text-sm"},es={key:0,class:"font-medium text-gray-900"},ts={key:1,class:"text-gray-600"},ss={key:2,class:"text-gray-600"},as={key:0,class:"flex items-center space-x-1"},rs={class:"flex"},ns={class:"text-sm text-gray-600"},os={key:1,class:"text-sm text-gray-400"},ls={class:"flex items-center space-x-2"},is={class:"border-b border-gray-200 mb-6"},ds={key:0,class:"space-y-6"},us={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},cs={class:"flex items-center space-x-6"},ms={class:"flex items-center"},ps={key:1,class:"space-y-6"},vs={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},fs={class:"space-y-4"},gs={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},ys={class:"md:col-span-2"},hs={key:2,class:"space-y-6"},Vs={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},bs={class:"flex items-center space-x-2"},xs=["onClick"],Cs={key:0,class:"text-sm text-gray-600 ml-2"},ws={key:3,class:"space-y-6"},ks={key:0,class:"mt-1 text-sm text-red-600"},Ps={class:"bg-gray-50 rounded-lg p-4"},Ts={class:"grid grid-cols-2 gap-4 text-sm"},Ss={class:"ml-2 text-gray-900"},Fs={class:"ml-2 text-gray-900"},Es={class:"ml-2 text-gray-900"},Is={class:"ml-2 text-gray-900"},Us={class:"flex items-center justify-between"},_s={class:"flex items-center space-x-4"},Ns={key:0,class:"flex items-center text-sm text-gray-500"},Rs={key:0,class:"w-4 h-4 mr-2 text-amber-500 animate-pulse",fill:"currentColor",viewBox:"0 0 20 20"},As={key:1,class:"w-4 h-4 mr-2 text-green-500",fill:"currentColor",viewBox:"0 0 20 20"},Os={key:2},Bs={key:3},Ls={class:"flex space-x-3"},$s={class:"space-y-4"},Ms={class:"text-gray-600"},zs={class:"text-gray-900"},Ds={key:0,class:"bg-yellow-50 border border-yellow-200 rounded-md p-3"},js={class:"flex justify-end space-x-3"},na={__name:"VendorsListView",setup(l){const d=kt(),g=wt(),v=ke(),{validateVendorBusinessRules:q,processVendorData:G}=Dt(),{isProcessing:Z,submitVendor:H,updateVendor:W,handleVendorDeletion:K,handleVendorsRefresh:X,handleVendorExport:ee,handleVendorLoad:te,handleVendorSearch:Y,handleVendorPagination:a,handleVendorSorting:u,handleVendorPreferredToggle:f}=jt(),{formData:i,errors:b,activeTab:c,formTabs:p,typeOptions:y,statusOptions:x,paymentTermsOptions:_,currencyOptions:P,countryOptions:V,isLastTab:R,validateForm:D,resetForm:Q,getFormData:J,populateForm:o,nextTab:m,setRating:w}=zt(),{hasUnsavedChanges:se,lastSaveTime:j,restoreFormData:ce,clearSavedData:me,hasSavedData:Pe,getSavedDataInfo:ze,markUserInteraction:De,finishInitialization:je}=Rt(i,{storageKey:"atlas_vendor_form_data",saveInterval:3e3,excludeFields:[]}),le=U(!1),Te=U(null),ae=U("all"),L=U({search:"",type:"",sortBy:"",isPreferred:null}),ne=U(!1),ie=U(!1),pe=U("create"),ve=U(null),de=U(!1),oe=U(null),he=U(!1),qe=k(()=>v.loading),He=k(()=>v.vendors),Se=k(()=>v.vendorStats),fe=k(()=>pe.value==="edit"),We=k(()=>{const n=Se.value;return[{label:"Total Vendors",value:n.total,change:n.active>0?`${n.active} active`:null,trend:"neutral",icon:"users"},{label:"Preferred",value:n.preferred,sublabel:n.total>0?`${Math.round(n.preferred/n.total*100)}% of total`:"0%",trend:"neutral",icon:"star"},{label:"Average Rating",value:n.averageRating?`${n.averageRating}⭐`:"No ratings",trend:"neutral",icon:"chart-bar"},{label:"Active",value:n.active,sublabel:`${n.inactive} inactive`,trend:n.active>n.inactive?"up":"neutral",icon:"check-circle"}]}),Ye=k(()=>j.value?new Date(j.value).toLocaleTimeString():""),Qe=k(()=>{const n=Se.value;return[{key:"all",label:"All Vendors",count:n.total},{key:"active",label:"Active",count:n.active},{key:"inactive",label:"Inactive",count:n.inactive},{key:"preferred",label:"Preferred",count:n.preferred}]}),Ge=k(()=>{var n,e,s,z;return{currentPage:(((n=v.searchCriteria)==null?void 0:n.page)||0)+1,totalPages:((e=v.pagination)==null?void 0:e.totalPages)||0,totalItems:((s=v.pagination)==null?void 0:s.totalElements)||0,pageSize:((z=v.pagination)==null?void 0:z.size)||20}}),Ze=k(()=>[{key:"name",label:"Vendor",sortable:!0,width:"25%"},{key:"type",label:"Type",sortable:!0,width:"15%"},{key:"contact",label:"Contact",sortable:!1,width:"20%"},{key:"rating",label:"Rating",sortable:!0,width:"12%"},{key:"status",label:"Status",sortable:!0,width:"10%"},{key:"actions",label:"Actions",sortable:!1,width:"18%"}]),Je=k(()=>Nt),Ke=k(()=>{let n=[...He.value];return ae.value==="active"?n=n.filter(e=>e.status===M.ACTIVE):ae.value==="inactive"?n=n.filter(e=>e.status===M.INACTIVE):ae.value==="preferred"&&(n=n.filter(e=>e.isPreferred)),ne.value&&(n=n.filter(e=>e.isPreferred)),n}),Xe=n=>{const e={[N.PARTS_SUPPLIER]:"#3B82F6",[N.SERVICE_PROVIDER]:"#10B981",[N.EQUIPMENT_VENDOR]:"#F59E0B",[N.CONTRACTOR]:"#8B5CF6",[N.CONSULTANT]:"#EF4444",[N.OTHER]:"#6B7280"};return e[n]||e[N.OTHER]},et=n=>{if(!n)return"??";const e=n.split(" ");return e.length===1?e[0].substring(0,2).toUpperCase():(e[0].charAt(0)+e[1].charAt(0)).toUpperCase()},tt=n=>({[N.PARTS_SUPPLIER]:"info",[N.SERVICE_PROVIDER]:"success",[N.EQUIPMENT_VENDOR]:"warning",[N.CONTRACTOR]:"secondary",[N.CONSULTANT]:"danger",[N.OTHER]:"secondary"})[n]||"secondary",st=n=>({[M.ACTIVE]:"success",[M.INACTIVE]:"secondary",[M.PENDING]:"warning",[M.SUSPENDED]:"danger"})[n]||"secondary",Fe=n=>Me[n]||n,Ee=n=>we[n]||n,at=At.debounce(n=>{Y(n,L.value)},300),Ve=()=>{var n,e;Y(L.value.search,{type:L.value.type,sortBy:(n=L.value.sortBy)==null?void 0:n.split("_")[0],sortOrder:(e=L.value.sortBy)==null?void 0:e.split("_")[1],isPreferred:ne.value?!0:void 0})},rt=()=>{L.value={search:"",type:"",sortBy:"",isPreferred:null},ne.value=!1,ae.value="all",Y("",{})},nt=()=>{ne.value=!ne.value,Ve()},ot=n=>{ae.value=n},lt=n=>{u(n)},it=n=>{a(n-1)},dt=n=>{Ue(n)},be=async()=>{await X()},Ie=()=>{ve.value=null,pe.value="create",ut(),Pe()||Q(),ie.value=!0},ut=()=>{pe.value==="create"&&Pe()&&(Te.value=ze(),le.value=!0)},Ue=n=>{d.push(`/vendors/${n.id}`)},_e=n=>{ve.value=n,pe.value="edit",o(n),je(),ie.value=!0},ct=async n=>{await f(n.id,!n.isPreferred,n.name)},mt=n=>{oe.value=n,de.value=!0},pt=async()=>{try{await K(oe.value.id,oe.value.name),de.value=!1,oe.value=null,await be()}catch{}},xe=()=>{ie.value=!1,ve.value=null,le.value=!1},vt=async()=>{var n;he.value=!0;try{const e=fe.value?W:H,s={validateForm:D,validateBusinessRules:q,getFormData:J,processVendorData:G};fe.value&&(s.vendorId=(n=ve.value)==null?void 0:n.id),(await e(s)).success&&(me(),xe(),await be())}finally{he.value=!1}},ft=n=>{S(),m()},gt=()=>{ce(),le.value=!1},yt=()=>{me(),le.value=!1,Q()},ht=async()=>{await ee(L.value)},S=()=>{De()},Vt=n=>{c.value=n,S()},Ne=()=>{const n=g.query.edit,e=g.query.create==="true";try{n?setTimeout(async()=>{try{const s=await te(n);_e(s),d.replace({path:"/vendors"})}catch{d.replace({path:"/vendors"})}},500):e&&setTimeout(()=>{Ie(),d.replace({path:"/vendors"})},500)}catch{d.replace({path:"/vendors"})}};return xt(async()=>{await v.initializeVendors(),Ne()}),Ct(()=>g.query,Ne),(n,e)=>(T(),Ce(Ot,null,{header:C(()=>[h(Bt,{title:"Vendors",description:"Manage vendors and suppliers for procurement and services",breadcrumbs:[{text:"Vendors",to:null}]},{actions:C(()=>[h(t(A),{variant:"outline",size:"sm",onClick:ht},{default:C(()=>e[28]||(e[28]=[r("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1),O(" Export ",-1)])),_:1,__:[28]}),h(t(A),{variant:"outline",size:"sm",onClick:be},{default:C(()=>e[29]||(e[29]=[r("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),O(" Refresh ",-1)])),_:1,__:[29]}),h(t(A),{variant:"primary",size:"sm",onClick:Ie},{default:C(()=>e[30]||(e[30]=[r("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),O(" Add Vendor ",-1)])),_:1,__:[30]})]),stats:C(()=>[h(t(Lt),{stats:We.value},null,8,["stats"])]),tabs:C(()=>[h(t($e),{modelValue:ae.value,"onUpdate:modelValue":e[0]||(e[0]=s=>ae.value=s),tabs:Qe.value,onTabChange:ot},null,8,["modelValue","tabs"])]),_:1})]),default:C(()=>[r("div",qt,[r("div",Ht,[h(t($),{modelValue:L.value.search,"onUpdate:modelValue":e[1]||(e[1]=s=>L.value.search=s),placeholder:"Search vendors...",onInput:t(at)},{prepend:C(()=>e[31]||(e[31]=[r("svg",{class:"w-4 h-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1)])),_:1},8,["modelValue","onInput"]),h(t(re),{modelValue:L.value.type,"onUpdate:modelValue":[e[2]||(e[2]=s=>L.value.type=s),Ve],placeholder:"Filter by Type",options:t(y)},null,8,["modelValue","options"]),h(t(re),{modelValue:L.value.sortBy,"onUpdate:modelValue":[e[3]||(e[3]=s=>L.value.sortBy=s),Ve],placeholder:"Sort by",options:Je.value},null,8,["modelValue","options"]),r("div",Wt,[h(t(A),{variant:"outline",size:"sm",class:ue({"bg-primary-50 border-primary-300 text-primary-700":ne.value}),onClick:nt,title:"Show preferred vendors only"},{default:C(()=>e[32]||(e[32]=[r("svg",{class:"w-4 h-4 mr-1",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 00.95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 00-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 00-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 00-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 00.951-.69l1.519-4.674z"})],-1),O(" Preferred ",-1)])),_:1,__:[32]},8,["class"]),h(t(A),{variant:"outline",size:"sm",onClick:rt,title:"Clear all filters"},{default:C(()=>e[33]||(e[33]=[O(" Clear ",-1)])),_:1,__:[33]})])]),r("div",Yt,[h(t($t),{columns:Ze.value,data:Ke.value,loading:qe.value,pagination:Ge.value,"empty-message":"No vendors found",onSortChange:lt,onPageChange:it,onRowClick:dt},{"column-name":C(({row:s})=>[r("div",Qt,[r("div",{class:"w-10 h-10 rounded-lg flex items-center justify-center text-white font-medium text-sm",style:Pt({backgroundColor:Xe(s.type)})},I(et(s.name)),5),r("div",null,[r("div",Gt,[r("h4",Zt,I(s.name),1),s.isPreferred?(T(),F("svg",Jt,e[34]||(e[34]=[r("path",{d:"M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 00.95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 00-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 00-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 00-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 00.951-.69l1.519-4.674z"},null,-1)]))):B("",!0)]),s.code?(T(),F("p",Kt,I(s.code),1)):B("",!0)])])]),"column-type":C(({row:s})=>[h(t(Le),{variant:tt(s.type)},{default:C(()=>[O(I(Fe(s.type)),1)]),_:2},1032,["variant"])]),"column-contact":C(({row:s})=>[r("div",Xt,[s.contactPerson?(T(),F("div",es,I(s.contactPerson),1)):B("",!0),s.email?(T(),F("div",ts,I(s.email),1)):B("",!0),s.phone?(T(),F("div",ss,I(s.phone),1)):B("",!0)])]),"column-rating":C(({row:s})=>[s.rating?(T(),F("div",as,[r("div",rs,[(T(),F(Re,null,Ae(5,z=>r("svg",{key:z,class:ue(["w-4 h-4",z<=s.rating?"text-yellow-400":"text-gray-300"]),fill:"currentColor",viewBox:"0 0 20 20"},e[35]||(e[35]=[r("path",{d:"M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 00.95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 00-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 00-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 00-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 00.951-.69l1.519-4.674z"},null,-1)]),2)),64))]),r("span",ns,"("+I(s.rating)+")",1)])):(T(),F("div",os,"Not rated"))]),"column-status":C(({row:s})=>[h(t(Le),{variant:st(s.status)},{default:C(()=>[O(I(Ee(s.status)),1)]),_:2},1032,["variant"])]),"column-actions":C(({row:s})=>[r("div",ls,[h(t(A),{variant:"ghost",size:"xs",onClick:ge(z=>Ue(s),["stop"]),title:"View Details"},{default:C(()=>e[36]||(e[36]=[r("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"}),r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"})],-1)])),_:2,__:[36]},1032,["onClick"]),h(t(A),{variant:"ghost",size:"xs",onClick:ge(z=>_e(s),["stop"]),title:"Edit Vendor"},{default:C(()=>e[37]||(e[37]=[r("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1)])),_:2,__:[37]},1032,["onClick"]),h(t(A),{variant:"ghost",size:"xs",onClick:ge(z=>ct(s),["stop"]),title:s.isPreferred?"Remove from preferred":"Add to preferred",class:ue(s.isPreferred?"text-yellow-600 hover:text-yellow-700":"text-gray-400 hover:text-yellow-600")},{default:C(()=>e[38]||(e[38]=[r("svg",{class:"w-4 h-4",fill:"currentColor",viewBox:"0 0 20 20"},[r("path",{d:"M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 00.95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 00-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 00-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 00-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 00.951-.69l1.519-4.674z"})],-1)])),_:2,__:[38]},1032,["onClick","title","class"]),h(t(A),{variant:"ghost",size:"xs",onClick:ge(z=>mt(s),["stop"]),title:"Delete Vendor",class:"text-red-600 hover:text-red-700"},{default:C(()=>e[39]||(e[39]=[r("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1)])),_:2,__:[39]},1032,["onClick"])])]),_:1},8,["columns","data","loading","pagination"])]),h(t(Be),{modelValue:ie.value,"onUpdate:modelValue":e[25]||(e[25]=s=>ie.value=s),title:fe.value?"Edit Vendor":"Create Vendor",size:"xl",onCancel:xe},{footer:C(()=>[r("div",Us,[r("div",_s,[t(se)||t(j)?(T(),F("div",Ns,[t(se)?(T(),F("svg",Rs,e[50]||(e[50]=[r("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z","clip-rule":"evenodd"},null,-1)]))):(T(),F("svg",As,e[51]||(e[51]=[r("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z","clip-rule":"evenodd"},null,-1)]))),t(se)?(T(),F("span",Os,"Auto-saving...")):t(j)?(T(),F("span",Bs,"Last saved "+I(Ye.value),1)):B("",!0)])):B("",!0)]),r("div",Ls,[h(t(A),{variant:"secondary",onClick:xe},{default:C(()=>e[52]||(e[52]=[O(" Cancel ",-1)])),_:1,__:[52]}),t(R)?(T(),Ce(t(A),{key:1,variant:"primary",loading:he.value,onClick:vt},{default:C(()=>[O(I(fe.value?"Update Vendor":"Create Vendor"),1)]),_:1},8,["loading"])):(T(),Ce(t(A),{key:0,variant:"primary",onClick:e[24]||(e[24]=s=>ft("next"))},{default:C(()=>e[53]||(e[53]=[O(" Next ",-1)])),_:1,__:[53]}))])])]),default:C(()=>[h(t(Mt),{visible:le.value,"saved-data-info":Te.value,onRestore:gt,onDismiss:yt},null,8,["visible","saved-data-info"]),r("div",is,[h(t($e),{modelValue:t(c),"onUpdate:modelValue":e[4]||(e[4]=s=>Tt(c)?c.value=s:null),tabs:t(p),onTabChange:Vt},null,8,["modelValue","tabs"])]),t(c)==="basic"?(T(),F("div",ds,[r("div",us,[h(t($),{modelValue:t(i).name,"onUpdate:modelValue":e[5]||(e[5]=s=>t(i).name=s),label:"Vendor Name",placeholder:"Enter vendor name",required:"",error:t(b).name,onInput:S},null,8,["modelValue","error"]),h(t($),{modelValue:t(i).code,"onUpdate:modelValue":e[6]||(e[6]=s=>t(i).code=s),label:"Vendor Code",placeholder:"AUTO or enter custom code",error:t(b).code,onInput:S},null,8,["modelValue","error"]),h(t(re),{modelValue:t(i).type,"onUpdate:modelValue":e[7]||(e[7]=s=>t(i).type=s),label:"Vendor Type",placeholder:"Select vendor type",options:t(y),required:"",error:t(b).type,onChange:S},null,8,["modelValue","options","error"]),h(t(re),{modelValue:t(i).status,"onUpdate:modelValue":e[8]||(e[8]=s=>t(i).status=s),label:"Status",placeholder:"Select status",options:t(x),required:"",error:t(b).status,onChange:S},null,8,["modelValue","options","error"])]),r("div",cs,[r("label",ms,[Oe(r("input",{"onUpdate:modelValue":e[9]||(e[9]=s=>t(i).isPreferred=s),type:"checkbox",class:"rounded border-gray-300 text-primary-600 shadow-sm focus:border-primary-300 focus:ring focus:ring-primary-200 focus:ring-opacity-50",onChange:S},null,544),[[St,t(i).isPreferred]]),e[40]||(e[40]=r("span",{class:"ml-2 text-sm font-medium text-gray-700"},"Preferred Vendor",-1))])])])):B("",!0),t(c)==="contact"?(T(),F("div",ps,[r("div",vs,[h(t($),{modelValue:t(i).contactPerson,"onUpdate:modelValue":e[10]||(e[10]=s=>t(i).contactPerson=s),label:"Contact Person",placeholder:"Enter contact person name",error:t(b).contactPerson,onInput:S},null,8,["modelValue","error"]),h(t($),{modelValue:t(i).email,"onUpdate:modelValue":e[11]||(e[11]=s=>t(i).email=s),label:"Email Address",placeholder:"vendor@company.com",type:"email",error:t(b).email,onInput:S},null,8,["modelValue","error"]),h(t($),{modelValue:t(i).phone,"onUpdate:modelValue":e[12]||(e[12]=s=>t(i).phone=s),label:"Phone Number",placeholder:"(555) 123-4567",error:t(b).phone,onInput:S},null,8,["modelValue","error"]),h(t($),{modelValue:t(i).website,"onUpdate:modelValue":e[13]||(e[13]=s=>t(i).website=s),label:"Website",placeholder:"https://company.com",error:t(b).website,onInput:S},null,8,["modelValue","error"])]),r("div",fs,[e[41]||(e[41]=r("h4",{class:"text-md font-medium text-gray-900"},"Address",-1)),r("div",gs,[r("div",ys,[h(t($),{modelValue:t(i).address.street,"onUpdate:modelValue":e[14]||(e[14]=s=>t(i).address.street=s),label:"Street Address",placeholder:"123 Main Street",onInput:S},null,8,["modelValue"])]),h(t($),{modelValue:t(i).address.city,"onUpdate:modelValue":e[15]||(e[15]=s=>t(i).address.city=s),label:"City",placeholder:"New York",onInput:S},null,8,["modelValue"]),h(t($),{modelValue:t(i).address.state,"onUpdate:modelValue":e[16]||(e[16]=s=>t(i).address.state=s),label:"State/Province",placeholder:"NY",onInput:S},null,8,["modelValue"]),h(t($),{modelValue:t(i).address.postalCode,"onUpdate:modelValue":e[17]||(e[17]=s=>t(i).address.postalCode=s),label:"Postal Code",placeholder:"10001",onInput:S},null,8,["modelValue"]),h(t(re),{modelValue:t(i).address.country,"onUpdate:modelValue":e[18]||(e[18]=s=>t(i).address.country=s),label:"Country",placeholder:"Select country",options:t(V),onChange:S},null,8,["modelValue","options"])])])])):B("",!0),t(c)==="business"?(T(),F("div",hs,[r("div",Vs,[h(t($),{modelValue:t(i).taxId,"onUpdate:modelValue":e[19]||(e[19]=s=>t(i).taxId=s),label:"Tax ID",placeholder:"Enter tax identification number",error:t(b).taxId,onInput:S},null,8,["modelValue","error"]),h(t($),{modelValue:t(i).businessNumber,"onUpdate:modelValue":e[20]||(e[20]=s=>t(i).businessNumber=s),label:"Business Number",placeholder:"Enter business registration number",error:t(b).businessNumber,onInput:S},null,8,["modelValue","error"]),h(t(re),{modelValue:t(i).paymentTerms,"onUpdate:modelValue":e[21]||(e[21]=s=>t(i).paymentTerms=s),label:"Payment Terms",placeholder:"Select payment terms",options:t(_),error:t(b).paymentTerms,onChange:S},null,8,["modelValue","options","error"]),h(t(re),{modelValue:t(i).currency,"onUpdate:modelValue":e[22]||(e[22]=s=>t(i).currency=s),label:"Currency",placeholder:"Select currency",options:t(P),error:t(b).currency,onChange:S},null,8,["modelValue","options","error"])]),r("div",null,[e[43]||(e[43]=r("label",{class:"block text-sm font-medium text-gray-700 mb-3"},"Vendor Rating",-1)),r("div",bs,[(T(),F(Re,null,Ae(5,s=>r("button",{key:s,type:"button",class:ue(["w-8 h-8 rounded-full flex items-center justify-center transition-colors duration-200 hover:bg-yellow-100",s<=(t(i).rating||0)?"text-yellow-400":"text-gray-300"]),onClick:z=>t(w)(s)},e[42]||(e[42]=[r("svg",{class:"w-6 h-6",fill:"currentColor",viewBox:"0 0 20 20"},[r("path",{d:"M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 00.95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 00-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 00-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 00-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 00.951-.69l1.519-4.674z"})],-1)]),10,xs)),64)),t(i).rating?(T(),F("span",Cs,I(t(i).rating)+" out of 5 stars",1)):B("",!0)])])])):B("",!0),t(c)==="settings"?(T(),F("div",ws,[r("div",null,[e[44]||(e[44]=r("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Notes",-1)),Oe(r("textarea",{"onUpdate:modelValue":e[23]||(e[23]=s=>t(i).notes=s),class:ue(["w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",{"border-red-300":t(b).notes}]),placeholder:"Additional notes about this vendor...",rows:"4",onInput:S},null,34),[[Ft,t(i).notes]]),t(b).notes?(T(),F("p",ks,I(t(b).notes),1)):B("",!0)]),r("div",Ps,[e[49]||(e[49]=r("h4",{class:"font-medium text-gray-900 mb-3"},"Vendor Summary",-1)),r("div",Ts,[r("div",null,[e[45]||(e[45]=r("span",{class:"font-medium text-gray-700"},"Name:",-1)),r("span",Ss,I(t(i).name||"Not specified"),1)]),r("div",null,[e[46]||(e[46]=r("span",{class:"font-medium text-gray-700"},"Type:",-1)),r("span",Fs,I(Fe(t(i).type)||"Not specified"),1)]),r("div",null,[e[47]||(e[47]=r("span",{class:"font-medium text-gray-700"},"Status:",-1)),r("span",Es,I(Ee(t(i).status)||"Not specified"),1)]),r("div",null,[e[48]||(e[48]=r("span",{class:"font-medium text-gray-700"},"Preferred:",-1)),r("span",Is,I(t(i).isPreferred?"Yes":"No"),1)])])])])):B("",!0)]),_:1},8,["modelValue","title"]),h(t(Be),{modelValue:de.value,"onUpdate:modelValue":e[27]||(e[27]=s=>de.value=s),title:"Delete Vendor",size:"md"},{footer:C(()=>[r("div",js,[h(t(A),{variant:"secondary",onClick:e[26]||(e[26]=s=>de.value=!1)},{default:C(()=>e[57]||(e[57]=[O(" Cancel ",-1)])),_:1,__:[57]}),h(t(A),{variant:"danger",onClick:pt,loading:t(Z)},{default:C(()=>e[58]||(e[58]=[O(" Delete Vendor ",-1)])),_:1,__:[58]},8,["loading"])])]),default:C(()=>{var s;return[r("div",$s,[r("p",Ms,[e[54]||(e[54]=O(" Are you sure you want to delete ",-1)),r("strong",zs,"'"+I((s=oe.value)==null?void 0:s.name)+"'",1),e[55]||(e[55]=O("? This action cannot be undone. ",-1))]),oe.value?(T(),F("div",Ds,e[56]||(e[56]=[r("div",{class:"flex"},[r("svg",{class:"w-5 h-5 text-yellow-400 mr-2 mt-0.5",fill:"currentColor",viewBox:"0 0 20 20"},[r("path",{"fill-rule":"evenodd",d:"M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z","clip-rule":"evenodd"})]),r("div",{class:"text-sm"},[r("p",{class:"font-medium text-yellow-800"},"Warning"),r("p",{class:"text-yellow-700"},"Make sure this vendor is not being used in any purchase orders or contracts before deleting.")])],-1)]))):B("",!0)])]}),_:1},8,["modelValue"])])]),_:1}))}};export{na as default}; +import{r as U,c as k,l as bt,o as xt,m as Ct,i as Ce,w as C,s as wt,v as kt,g as T,b as r,d as h,e as t,F as A,n as ue,k as O,h as ge,t as I,a as F,af as Re,aR as Ae,j as B,Q as Pt,aW as Tt,ae as Oe,ba as St,aV as Ft}from"./index-QAlcqU00.js";import{V as N,a as M,P as Et,C as It,b as Ut,c as _t,d as ye,u as ke,e as E,f as we,g as Me,h as Nt}from"./vendors-C-y6J9yC.js";import{u as Rt}from"./useFormAutoSave-BrW9Wl2Q.js";import{l as At}from"./lodash-RqMXHFU9.js";import{F as Ot,a as Bt}from"./FPPageHeader-CFIwZZgQ.js";import{F as $}from"./FPInput-D5RURom0.js";import{F as re}from"./FPSelect-j7n_x8eB.js";import{F as Lt}from"./FPStats-DOY0PQQF.js";import{F as $t}from"./FPTable-CWvngIYd.js";import{F as Be}from"./FPModal-DMoPysvU.js";import{F as Le}from"./FPBadge-DvOitM1C.js";import{F as $e}from"./FPTabs-qq-Tmb7J.js";import{_ as Mt}from"./FormRestoreNotification-2Wflg1mH.js";import"./_commonjsHelpers-NT8qMgGI.js";import"./FPCard-AB6NRXg5.js";function zt(){const l=U({...ye}),d=U({}),g=U("basic"),v=[{key:"basic",label:"Basic Information",icon:"info"},{key:"contact",label:"Contact Details",icon:"phone"},{key:"business",label:"Business Details",icon:"briefcase"},{key:"settings",label:"Settings & Notes",icon:"cog"}],q=k(()=>Object.entries(N).map(([o,m])=>({label:o.split("_").map(w=>w.charAt(0).toUpperCase()+w.slice(1).toLowerCase()).join(" "),value:m}))),Q=k(()=>Object.entries(M).map(([o,m])=>({label:o.charAt(0).toUpperCase()+o.slice(1).toLowerCase(),value:m}))),Z=k(()=>Et),H=k(()=>It),W=k(()=>Ut),K=k(()=>_t),X=k(()=>Object.keys(d.value).length===0&&l.value.name&&l.value.name.trim().length>0&&l.value.type),ee=k(()=>v.findIndex(m=>m.key===g.value)===0),te=k(()=>v.findIndex(m=>m.key===g.value)===v.length-1),Y=k(()=>v.findIndex(o=>o.key===g.value)),a=k(()=>{const o=["name","type"],m=["code","contactPerson","email","phone","address.street","address.city"];let w=0,se=o.length+m.length;return o.forEach(j=>{l.value[j]&&w++}),m.forEach(j=>{if(j.includes(".")){const[ce,me]=j.split(".");l.value[ce]&&l.value[ce][me]&&w++}else l.value[j]&&w++}),Math.round(w/se*100)}),u=()=>{const o={};if(!l.value.name||l.value.name.trim().length===0?o.name="Vendor name is required":l.value.name.trim().length<2?o.name="Vendor name must be at least 2 characters":l.value.name.trim().length>100&&(o.name="Vendor name must be less than 100 characters"),l.value.code){const m=l.value.code.trim();m.length<2||m.length>20?o.code="Vendor code must be between 2 and 20 characters":/^[A-Z0-9\-_]+$/.test(m.toUpperCase())||(o.code="Vendor code can only contain letters, numbers, hyphens, and underscores")}if(l.value.type||(o.type="Vendor type is required"),l.value.email&&!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(l.value.email)&&(o.email="Invalid email format"),l.value.phone&&!/^[\d\s\-+()]+$/.test(l.value.phone)&&(o.phone="Invalid phone number format"),l.value.website&&!/^https?:\/\/.+/.test(l.value.website)&&(o.website="Website must start with http:// or https://"),l.value.contactPerson&&l.value.contactPerson.length>100&&(o.contactPerson="Contact person must be less than 100 characters"),l.value.taxId&&l.value.taxId.length>50&&(o.taxId="Tax ID must be less than 50 characters"),l.value.businessNumber&&l.value.businessNumber.length>50&&(o.businessNumber="Business number must be less than 50 characters"),l.value.paymentTerms&&l.value.paymentTerms.length>100&&(o.paymentTerms="Payment terms must be less than 100 characters"),l.value.rating!==null&&l.value.rating!==void 0){const m=Number(l.value.rating);(isNaN(m)||m<1||m>5)&&(o.rating="Rating must be between 1 and 5")}return l.value.notes&&l.value.notes.length>1e3&&(o.notes="Notes must be less than 1000 characters"),d.value=o,Object.keys(o).length===0},f=o=>{if(d.value[o]){const m={...d.value};delete m[o],d.value=m}},i=()=>{l.value={...ye},d.value={},g.value="basic"},b=o=>{l.value={...ye,...o,address:{...ye.address,...o.address||{}}},d.value={},g.value="basic"},c=()=>({...l.value,address:{...l.value.address}}),p=()=>{const o=v.findIndex(m=>m.key===g.value);o{const o=v.findIndex(m=>m.key===g.value);o>0&&(g.value=v[o-1].key)},x=o=>{v.some(w=>w.key===o)&&(g.value=o)},_=(o,m)=>{if(o.includes(".")){const[w,se]=o.split(".");l.value[w]||(l.value[w]={}),l.value[w][se]=m}else l.value[o]=m;f(o)};return{formData:l,errors:d,activeTab:g,formTabs:v,typeOptions:q,statusOptions:Q,paymentTermsOptions:Z,currencyOptions:H,ratingOptions:W,countryOptions:K,isValid:X,isFirstTab:ee,isLastTab:te,currentTabIndex:Y,completionPercentage:a,validateForm:u,clearFieldError:f,resetForm:i,populateForm:b,getFormData:c,nextTab:p,previousTab:y,goToTab:x,setField:_,setAddress:o=>{l.value.address={...l.value.address,...o},["street","city","state","postalCode","country"].forEach(w=>f(`address.${w}`))},togglePreferred:()=>{l.value.isPreferred=!l.value.isPreferred,f("isPreferred")},setRating:o=>{l.value.rating=o===l.value.rating?null:o,f("rating")},handleFieldChange:(o,m)=>{if(_(o,m),o==="name"&&m){const w=m.trim();w.length>=2&&w.length<=100&&f("name")}if(o==="email"&&m&&/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(m)&&f("email"),o==="phone"&&m&&/^[\d\s\-+()]+$/.test(m)&&f("phone"),o==="website"&&m&&/^https?:\/\/.+/.test(m)&&f("website"),o==="code"&&m){const w=m.trim().toUpperCase();w.length>=2&&w.length<=20&&/^[A-Z0-9\-_]+$/.test(w)&&f("code")}},formatWebsite:o=>o?!o.startsWith("http://")&&!o.startsWith("https://")?`https://${o}`:o:"",formatPhoneNumber:o=>{if(!o)return"";const m=o.replace(/\D/g,"");return m.length===10?`(${m.slice(0,3)}) ${m.slice(3,6)}-${m.slice(6)}`:o}}}function Dt(){const l=ke(),d=U(null),g=U(!1),v=a=>{if(d.value=null,!a.name||typeof a.name!="string")return d.value="Vendor name is required",!1;const u=a.name.trim();if(u.lengthE.name.maxLength)return d.value=`Vendor name must be less than ${E.name.maxLength} characters`,!1;if(!E.name.pattern.test(u))return d.value="Vendor name contains invalid characters",!1;if(a.code){const f=a.code.trim().toUpperCase();if(f.lengthE.code.maxLength)return d.value=`Vendor code must be less than ${E.code.maxLength} characters`,!1;if(!E.code.pattern.test(f))return d.value="Vendor code can only contain letters, numbers, hyphens, and underscores",!1}if(!a.type||!Object.values(N).includes(a.type))return d.value="Valid vendor type is required",!1;if(!a.status||!Object.values(M).includes(a.status))return d.value="Valid vendor status is required",!1;if(a.email&&!E.email.pattern.test(a.email))return d.value="Invalid email format",!1;if(a.phone&&!E.phone.pattern.test(a.phone))return d.value="Invalid phone number format",!1;if(a.website&&!E.website.pattern.test(a.website))return d.value="Website must start with http:// or https://",!1;if(a.contactPerson&&a.contactPerson.length>E.contactPerson.maxLength)return d.value=`Contact person must be less than ${E.contactPerson.maxLength} characters`,!1;if(a.rating!==null&&a.rating!==void 0){const f=Number(a.rating);if(isNaN(f)||fE.rating.max)return d.value=`Rating must be between ${E.rating.min} and ${E.rating.max}`,!1}return a.notes&&a.notes.length>E.notes.maxLength?(d.value=`Notes must be less than ${E.notes.maxLength} characters`,!1):!0},q=a=>{var u,f,i,b,c,p,y,x,_,P,V,R,D,G,J,o,m,w;return{name:(u=a.name)==null?void 0:u.trim(),code:((f=a.code)==null?void 0:f.trim().toUpperCase())||"",type:a.type,status:a.status||M.ACTIVE,contactPerson:((i=a.contactPerson)==null?void 0:i.trim())||"",email:((b=a.email)==null?void 0:b.trim())||"",phone:((c=a.phone)==null?void 0:c.trim())||"",website:((p=a.website)==null?void 0:p.trim())||"",address:{street:((x=(y=a.address)==null?void 0:y.street)==null?void 0:x.trim())||"",city:((P=(_=a.address)==null?void 0:_.city)==null?void 0:P.trim())||"",state:((R=(V=a.address)==null?void 0:V.state)==null?void 0:R.trim())||"",postalCode:((G=(D=a.address)==null?void 0:D.postalCode)==null?void 0:G.trim())||"",country:((J=a.address)==null?void 0:J.country)||""},taxId:((o=a.taxId)==null?void 0:o.trim())||"",businessNumber:((m=a.businessNumber)==null?void 0:m.trim())||"",paymentTerms:a.paymentTerms||"",currency:a.currency||"USD",isPreferred:!!a.isPreferred,rating:a.rating?Number(a.rating):null,notes:((w=a.notes)==null?void 0:w.trim())||""}},Q=(a,u=null)=>{const f=l.vendors,i=a.trim().toLowerCase();return!f.some(b=>b.name.toLowerCase()===i&&b.id!==u)},Z=(a,u=null)=>{if(!a)return!0;const f=l.vendors,i=a.trim().toUpperCase();return!f.some(b=>{var c;return((c=b.code)==null?void 0:c.toUpperCase())===i&&b.id!==u})},H=(a,u=null)=>(d.value=null,Q(a.name,u)?a.code&&!Z(a.code,u)?(d.value="A vendor with this code already exists",!1):!0:(d.value="A vendor with this name already exists",!1)),W=async a=>{g.value=!0,d.value=null;try{if(!v(a))throw new Error(d.value);const u=q(a);if(!H(u))throw new Error(d.value);return{success:!0,data:await l.createVendor(u)}}catch(u){return d.value=u.message,console.error("Failed to create vendor:",u),{success:!1,error:u.message}}finally{g.value=!1}},K=async(a,u)=>{g.value=!0,d.value=null;try{if(!v(u))throw new Error(d.value);const f=q(u);if(!H(f,a))throw new Error(d.value);return{success:!0,data:await l.updateVendor(a,f)}}catch(f){return d.value=f.message,console.error("Failed to update vendor:",f),{success:!1,error:f.message}}finally{g.value=!1}},X=async a=>{g.value=!0,d.value=null;try{return await l.deleteVendor(a),{success:!0}}catch(u){return d.value=u.message,console.error("Failed to delete vendor:",u),{success:!1,error:u.message}}finally{g.value=!1}},ee=a=>{let u=0;a.rating&&(u+=a.rating/5*40),a.status===M.ACTIVE?u+=20:a.status===M.PENDING&&(u+=10),a.isPreferred&&(u+=15);let f=0;const i=["contactPerson","email","phone","address","taxId"];return i.forEach(b=>{var c,p;b==="address"?(c=a.address)!=null&&c.street&&((p=a.address)!=null&&p.city)&&(f+=1):a[b]&&(f+=1)}),u+=f/i.length*25,Math.round(u)},te=a=>{var f,i;let u=0;return a.status===M.SUSPENDED&&(u+=3),a.status===M.PENDING&&(u+=1),a.rating&&a.rating<3&&(u+=2),a.rating||(u+=1),a.email||(u+=1),a.phone||(u+=1),(!((f=a.address)!=null&&f.street)||!((i=a.address)!=null&&i.city))&&(u+=1),u>=4?"high":u>=2?"medium":"low"},Y=(a,u)=>{if(!a)return"";const f=a.replace(/[^a-zA-Z]/g,"").substring(0,3).toUpperCase(),i=u.split("_").map(c=>c.charAt(0)).join("").toUpperCase(),b=Math.floor(Math.random()*99)+1;return`${f}${i}${b.toString().padStart(2,"0")}`};return{error:k(()=>d.value),processing:k(()=>g.value),validateVendor:v,validateVendorBusinessRules:H,processVendorData:q,isVendorNameUnique:Q,isVendorCodeUnique:Z,createVendor:W,updateVendor:K,deleteVendor:X,calculateVendorPerformance:ee,getVendorRiskLevel:te,generateVendorCode:Y}}function jt(){const l=ke(),{addNotification:d}=bt(),g=U(!1),v=U(null),q=async c=>{const{validateForm:p,validateBusinessRules:y,getFormData:x,processVendorData:_}=c;g.value=!0,v.value=null;try{if(!p())throw new Error("Please correct the form errors");const P=x(),V=_(P);if(!y(V))throw new Error("Business validation failed");const R=await l.createVendor(V);return d({type:"success",title:"Vendor Created",message:`${V.name} has been created successfully`}),{success:!0,data:R}}catch(P){return v.value=P.message,d({type:"error",title:"Creation Failed",message:P.message||"Failed to create vendor"}),{success:!1,error:P.message}}finally{g.value=!1}},Q=async c=>{const{vendorId:p,validateForm:y,validateBusinessRules:x,getFormData:_,processVendorData:P}=c;g.value=!0,v.value=null;try{if(!y())throw new Error("Please correct the form errors");const V=_(),R=P(V);if(!x(R,p))throw new Error("Business validation failed");const D=await l.updateVendor(p,R);return d({type:"success",title:"Vendor Updated",message:`${R.name} has been updated successfully`}),{success:!0,data:D}}catch(V){return v.value=V.message,d({type:"error",title:"Update Failed",message:V.message||"Failed to update vendor"}),{success:!1,error:V.message}}finally{g.value=!1}},Z=async(c,p="Vendor")=>{g.value=!0,v.value=null;try{return await l.deleteVendor(c),d({type:"success",title:"Vendor Deleted",message:`${p} has been deleted successfully`}),{success:!0}}catch(y){return v.value=y.message,d({type:"error",title:"Deletion Failed",message:y.message||`Failed to delete ${p}`}),{success:!1,error:y.message}}finally{g.value=!1}},H=async()=>{g.value=!0,v.value=null;try{await l.refreshVendors(),d({type:"info",title:"Vendors Refreshed",message:"Vendor data has been refreshed"})}catch(c){v.value=c.message,d({type:"error",title:"Refresh Failed",message:c.message||"Failed to refresh vendors"})}finally{g.value=!1}},W=async(c,p={})=>{g.value=!0,v.value=null;try{const y={search:c,...p};await l.fetchVendors(y)}catch(y){v.value=y.message,console.error("Vendor search failed:",y)}finally{g.value=!1}},K=async c=>{const p=l.searchCriteria;await W(p.search||"",{...p,page:c})},X=async c=>{const{key:p,direction:y}=c,x=l.searchCriteria;await W(x.search||"",{...x,sortBy:p,sortOrder:y})},ee=async(c={},p="csv")=>{g.value=!0,v.value=null;try{const y=l.filteredVendors;if(y.length===0)throw new Error("No vendors to export");const x=y.map(V=>{var R,D,G,J,o;return{Name:V.name,Code:V.code||"",Type:Me[V.type]||V.type,Status:we[V.status]||V.status,"Contact Person":V.contactPerson||"",Email:V.email||"",Phone:V.phone||"",Website:V.website||"","Street Address":((R=V.address)==null?void 0:R.street)||"",City:((D=V.address)==null?void 0:D.city)||"",State:((G=V.address)==null?void 0:G.state)||"","Postal Code":((J=V.address)==null?void 0:J.postalCode)||"",Country:((o=V.address)==null?void 0:o.country)||"","Tax ID":V.taxId||"","Business Number":V.businessNumber||"","Payment Terms":V.paymentTerms||"",Currency:V.currency||"",Preferred:V.isPreferred?"Yes":"No",Rating:V.rating?`${V.rating} stars`:"","Created At":new Date(V.createdAt).toLocaleDateString(),"Updated At":new Date(V.updatedAt).toLocaleDateString()}}),P=`vendors_${new Date().toISOString().split("T")[0]}.${p}`;p==="csv"?f(x,P):p==="json"&&i(y,P),d({type:"success",title:"Export Complete",message:`Vendors exported as ${P}`})}catch(y){v.value=y.message,d({type:"error",title:"Export Failed",message:y.message||"Failed to export vendors"})}finally{g.value=!1}},te=async(c,p,y="Vendor")=>{g.value=!0,v.value=null;try{await l.updateVendorStatus(c,p);const x=we[p]||p;return d({type:"success",title:"Status Updated",message:`${y} status updated to ${x}`}),{success:!0}}catch(x){return v.value=x.message,d({type:"error",title:"Status Update Failed",message:x.message||"Failed to update vendor status"}),{success:!1,error:x.message}}finally{g.value=!1}},Y=async(c,p,y="Vendor")=>{g.value=!0,v.value=null;try{return await l.setVendorPreferred(c,p),d({type:"success",title:"Preferred Status Updated",message:`${y} ${p?"added to":"removed from"} preferred vendors`}),{success:!0}}catch(x){return v.value=x.message,d({type:"error",title:"Update Failed",message:x.message||"Failed to update preferred status"}),{success:!1,error:x.message}}finally{g.value=!1}},a=async(c,p,y="Vendor")=>{g.value=!0,v.value=null;try{return await l.updateVendorRating(c,p),d({type:"success",title:"Rating Updated",message:`${y} rating updated to ${p} stars`}),{success:!0}}catch(x){return v.value=x.message,d({type:"error",title:"Rating Update Failed",message:x.message||"Failed to update vendor rating"}),{success:!1,error:x.message}}finally{g.value=!1}},u=async c=>{g.value=!0,v.value=null;try{return await l.setCurrentVendor(c)}catch(p){throw v.value=p.message,d({type:"error",title:"Load Failed",message:p.message||"Failed to load vendor"}),p}finally{g.value=!1}},f=(c,p)=>{const y=Object.keys(c[0]),x=[y.join(","),...c.map(_=>y.map(P=>`"${_[P]||""}"`).join(","))].join(` +`);b(x,p,"text/csv")},i=(c,p)=>{const y=JSON.stringify(c,null,2);b(y,p,"application/json")},b=(c,p,y)=>{const x=new Blob([c],{type:y}),_=window.URL.createObjectURL(x),P=document.createElement("a");P.href=_,P.download=p,document.body.appendChild(P),P.click(),document.body.removeChild(P),window.URL.revokeObjectURL(_)};return{isProcessing:k(()=>g.value),operationError:k(()=>v.value),submitVendor:q,updateVendor:Q,handleVendorDeletion:Z,handleVendorsRefresh:H,handleVendorSearch:W,handleVendorPagination:K,handleVendorSorting:X,handleVendorExport:ee,handleVendorLoad:u,handleVendorStatusUpdate:te,handleVendorPreferredToggle:Y,handleVendorRatingUpdate:a}}const qt={class:"p-6"},Ht={class:"mb-6 grid grid-cols-1 md:grid-cols-4 gap-4"},Wt={class:"flex space-x-2"},Yt={class:"bg-white shadow rounded-lg overflow-hidden"},Gt={class:"flex items-center space-x-3"},Qt={class:"flex items-center space-x-2"},Zt={class:"font-medium text-gray-900"},Jt={key:0,class:"w-4 h-4 text-yellow-500",fill:"currentColor",viewBox:"0 0 20 20",title:"Preferred Vendor"},Kt={key:0,class:"text-sm text-gray-500"},Xt={class:"text-sm"},es={key:0,class:"font-medium text-gray-900"},ts={key:1,class:"text-gray-600"},ss={key:2,class:"text-gray-600"},as={key:0,class:"flex items-center space-x-1"},rs={class:"flex"},ns={class:"text-sm text-gray-600"},os={key:1,class:"text-sm text-gray-400"},ls={class:"flex items-center space-x-2"},is={class:"border-b border-gray-200 mb-6"},ds={key:0,class:"space-y-6"},us={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},cs={class:"flex items-center space-x-6"},ms={class:"flex items-center"},ps={key:1,class:"space-y-6"},vs={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},fs={class:"space-y-4"},gs={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},ys={class:"md:col-span-2"},hs={key:2,class:"space-y-6"},Vs={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},bs={class:"flex items-center space-x-2"},xs=["onClick"],Cs={key:0,class:"text-sm text-gray-600 ml-2"},ws={key:3,class:"space-y-6"},ks={key:0,class:"mt-1 text-sm text-red-600"},Ps={class:"bg-gray-50 rounded-lg p-4"},Ts={class:"grid grid-cols-2 gap-4 text-sm"},Ss={class:"ml-2 text-gray-900"},Fs={class:"ml-2 text-gray-900"},Es={class:"ml-2 text-gray-900"},Is={class:"ml-2 text-gray-900"},Us={class:"flex items-center justify-between"},_s={class:"flex items-center space-x-4"},Ns={key:0,class:"flex items-center text-sm text-gray-500"},Rs={key:0,class:"w-4 h-4 mr-2 text-amber-500 animate-pulse",fill:"currentColor",viewBox:"0 0 20 20"},As={key:1,class:"w-4 h-4 mr-2 text-green-500",fill:"currentColor",viewBox:"0 0 20 20"},Os={key:2},Bs={key:3},Ls={class:"flex space-x-3"},$s={class:"space-y-4"},Ms={class:"text-gray-600"},zs={class:"text-gray-900"},Ds={key:0,class:"bg-yellow-50 border border-yellow-200 rounded-md p-3"},js={class:"flex justify-end space-x-3"},na={__name:"VendorsListView",setup(l){const d=kt(),g=wt(),v=ke(),{validateVendorBusinessRules:q,processVendorData:Q}=Dt(),{isProcessing:Z,submitVendor:H,updateVendor:W,handleVendorDeletion:K,handleVendorsRefresh:X,handleVendorExport:ee,handleVendorLoad:te,handleVendorSearch:Y,handleVendorPagination:a,handleVendorSorting:u,handleVendorPreferredToggle:f}=jt(),{formData:i,errors:b,activeTab:c,formTabs:p,typeOptions:y,statusOptions:x,paymentTermsOptions:_,currencyOptions:P,countryOptions:V,isLastTab:R,validateForm:D,resetForm:G,getFormData:J,populateForm:o,nextTab:m,setRating:w}=zt(),{hasUnsavedChanges:se,lastSaveTime:j,restoreFormData:ce,clearSavedData:me,hasSavedData:Pe,getSavedDataInfo:ze,markUserInteraction:De,finishInitialization:je}=Rt(i,{storageKey:"atlas_vendor_form_data",saveInterval:3e3,excludeFields:[]}),le=U(!1),Te=U(null),ae=U("all"),L=U({search:"",type:"",sortBy:"",isPreferred:null}),ne=U(!1),ie=U(!1),pe=U("create"),ve=U(null),de=U(!1),oe=U(null),he=U(!1),qe=k(()=>v.loading),He=k(()=>v.vendors),Se=k(()=>v.vendorStats),fe=k(()=>pe.value==="edit"),We=k(()=>{const n=Se.value;return[{label:"Total Vendors",value:n.total,change:n.active>0?`${n.active} active`:null,trend:"neutral",icon:"users"},{label:"Preferred",value:n.preferred,sublabel:n.total>0?`${Math.round(n.preferred/n.total*100)}% of total`:"0%",trend:"neutral",icon:"star"},{label:"Average Rating",value:n.averageRating?`${n.averageRating}⭐`:"No ratings",trend:"neutral",icon:"chart-bar"},{label:"Active",value:n.active,sublabel:`${n.inactive} inactive`,trend:n.active>n.inactive?"up":"neutral",icon:"check-circle"}]}),Ye=k(()=>j.value?new Date(j.value).toLocaleTimeString():""),Ge=k(()=>{const n=Se.value;return[{key:"all",label:"All Vendors",count:n.total},{key:"active",label:"Active",count:n.active},{key:"inactive",label:"Inactive",count:n.inactive},{key:"preferred",label:"Preferred",count:n.preferred}]}),Qe=k(()=>{var n,e,s,z;return{currentPage:(((n=v.searchCriteria)==null?void 0:n.page)||0)+1,totalPages:((e=v.pagination)==null?void 0:e.totalPages)||0,totalItems:((s=v.pagination)==null?void 0:s.totalElements)||0,pageSize:((z=v.pagination)==null?void 0:z.size)||20}}),Ze=k(()=>[{key:"name",label:"Vendor",sortable:!0,width:"25%"},{key:"type",label:"Type",sortable:!0,width:"15%"},{key:"contact",label:"Contact",sortable:!1,width:"20%"},{key:"rating",label:"Rating",sortable:!0,width:"12%"},{key:"status",label:"Status",sortable:!0,width:"10%"},{key:"actions",label:"Actions",sortable:!1,width:"18%"}]),Je=k(()=>Nt),Ke=k(()=>{let n=[...He.value];return ae.value==="active"?n=n.filter(e=>e.status===M.ACTIVE):ae.value==="inactive"?n=n.filter(e=>e.status===M.INACTIVE):ae.value==="preferred"&&(n=n.filter(e=>e.isPreferred)),ne.value&&(n=n.filter(e=>e.isPreferred)),n}),Xe=n=>{const e={[N.PARTS_SUPPLIER]:"#3B82F6",[N.SERVICE_PROVIDER]:"#10B981",[N.EQUIPMENT_VENDOR]:"#F59E0B",[N.CONTRACTOR]:"#8B5CF6",[N.CONSULTANT]:"#EF4444",[N.OTHER]:"#6B7280"};return e[n]||e[N.OTHER]},et=n=>{if(!n)return"??";const e=n.split(" ");return e.length===1?e[0].substring(0,2).toUpperCase():(e[0].charAt(0)+e[1].charAt(0)).toUpperCase()},tt=n=>({[N.PARTS_SUPPLIER]:"info",[N.SERVICE_PROVIDER]:"success",[N.EQUIPMENT_VENDOR]:"warning",[N.CONTRACTOR]:"secondary",[N.CONSULTANT]:"danger",[N.OTHER]:"secondary"})[n]||"secondary",st=n=>({[M.ACTIVE]:"success",[M.INACTIVE]:"secondary",[M.PENDING]:"warning",[M.SUSPENDED]:"danger"})[n]||"secondary",Fe=n=>Me[n]||n,Ee=n=>we[n]||n,at=At.debounce(n=>{Y(n,L.value)},300),Ve=()=>{var n,e;Y(L.value.search,{type:L.value.type,sortBy:(n=L.value.sortBy)==null?void 0:n.split("_")[0],sortOrder:(e=L.value.sortBy)==null?void 0:e.split("_")[1],isPreferred:ne.value?!0:void 0})},rt=()=>{L.value={search:"",type:"",sortBy:"",isPreferred:null},ne.value=!1,ae.value="all",Y("",{})},nt=()=>{ne.value=!ne.value,Ve()},ot=n=>{ae.value=n},lt=n=>{u(n)},it=n=>{a(n-1)},dt=n=>{Ue(n)},be=async()=>{await X()},Ie=()=>{ve.value=null,pe.value="create",ut(),Pe()||G(),ie.value=!0},ut=()=>{pe.value==="create"&&Pe()&&(Te.value=ze(),le.value=!0)},Ue=n=>{d.push(`/vendors/${n.id}`)},_e=n=>{ve.value=n,pe.value="edit",o(n),je(),ie.value=!0},ct=async n=>{await f(n.id,!n.isPreferred,n.name)},mt=n=>{oe.value=n,de.value=!0},pt=async()=>{try{await K(oe.value.id,oe.value.name),de.value=!1,oe.value=null,await be()}catch{}},xe=()=>{ie.value=!1,ve.value=null,le.value=!1},vt=async()=>{var n;he.value=!0;try{const e=fe.value?W:H,s={validateForm:D,validateBusinessRules:q,getFormData:J,processVendorData:Q};fe.value&&(s.vendorId=(n=ve.value)==null?void 0:n.id),(await e(s)).success&&(me(),xe(),await be())}finally{he.value=!1}},ft=n=>{S(),m()},gt=()=>{ce(),le.value=!1},yt=()=>{me(),le.value=!1,G()},ht=async()=>{await ee(L.value)},S=()=>{De()},Vt=n=>{c.value=n,S()},Ne=()=>{const n=g.query.edit,e=g.query.create==="true";try{n?setTimeout(async()=>{try{const s=await te(n);_e(s),d.replace({path:"/vendors"})}catch{d.replace({path:"/vendors"})}},500):e&&setTimeout(()=>{Ie(),d.replace({path:"/vendors"})},500)}catch{d.replace({path:"/vendors"})}};return xt(async()=>{await v.initializeVendors(),Ne()}),Ct(()=>g.query,Ne),(n,e)=>(T(),Ce(Ot,null,{header:C(()=>[h(Bt,{title:"Vendors",description:"Manage vendors and suppliers for procurement and services",breadcrumbs:[{text:"Vendors",to:null}]},{actions:C(()=>[h(t(A),{variant:"outline",size:"sm",onClick:ht},{default:C(()=>e[28]||(e[28]=[r("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1),O(" Export ",-1)])),_:1,__:[28]}),h(t(A),{variant:"outline",size:"sm",onClick:be},{default:C(()=>e[29]||(e[29]=[r("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),O(" Refresh ",-1)])),_:1,__:[29]}),h(t(A),{variant:"primary",size:"sm",onClick:Ie},{default:C(()=>e[30]||(e[30]=[r("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),O(" Add Vendor ",-1)])),_:1,__:[30]})]),stats:C(()=>[h(t(Lt),{stats:We.value},null,8,["stats"])]),tabs:C(()=>[h(t($e),{modelValue:ae.value,"onUpdate:modelValue":e[0]||(e[0]=s=>ae.value=s),tabs:Ge.value,onTabChange:ot},null,8,["modelValue","tabs"])]),_:1})]),default:C(()=>[r("div",qt,[r("div",Ht,[h(t($),{modelValue:L.value.search,"onUpdate:modelValue":e[1]||(e[1]=s=>L.value.search=s),placeholder:"Search vendors...",onInput:t(at)},{prepend:C(()=>e[31]||(e[31]=[r("svg",{class:"w-4 h-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1)])),_:1},8,["modelValue","onInput"]),h(t(re),{modelValue:L.value.type,"onUpdate:modelValue":[e[2]||(e[2]=s=>L.value.type=s),Ve],placeholder:"Filter by Type",options:t(y)},null,8,["modelValue","options"]),h(t(re),{modelValue:L.value.sortBy,"onUpdate:modelValue":[e[3]||(e[3]=s=>L.value.sortBy=s),Ve],placeholder:"Sort by",options:Je.value},null,8,["modelValue","options"]),r("div",Wt,[h(t(A),{variant:"outline",size:"sm",class:ue({"bg-primary-50 border-primary-300 text-primary-700":ne.value}),onClick:nt,title:"Show preferred vendors only"},{default:C(()=>e[32]||(e[32]=[r("svg",{class:"w-4 h-4 mr-1",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 00.95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 00-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 00-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 00-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 00.951-.69l1.519-4.674z"})],-1),O(" Preferred ",-1)])),_:1,__:[32]},8,["class"]),h(t(A),{variant:"outline",size:"sm",onClick:rt,title:"Clear all filters"},{default:C(()=>e[33]||(e[33]=[O(" Clear ",-1)])),_:1,__:[33]})])]),r("div",Yt,[h(t($t),{columns:Ze.value,data:Ke.value,loading:qe.value,pagination:Qe.value,"empty-message":"No vendors found",onSortChange:lt,onPageChange:it,onRowClick:dt},{"column-name":C(({row:s})=>[r("div",Gt,[r("div",{class:"w-10 h-10 rounded-lg flex items-center justify-center text-white font-medium text-sm",style:Pt({backgroundColor:Xe(s.type)})},I(et(s.name)),5),r("div",null,[r("div",Qt,[r("h4",Zt,I(s.name),1),s.isPreferred?(T(),F("svg",Jt,e[34]||(e[34]=[r("path",{d:"M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 00.95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 00-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 00-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 00-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 00.951-.69l1.519-4.674z"},null,-1)]))):B("",!0)]),s.code?(T(),F("p",Kt,I(s.code),1)):B("",!0)])])]),"column-type":C(({row:s})=>[h(t(Le),{variant:tt(s.type)},{default:C(()=>[O(I(Fe(s.type)),1)]),_:2},1032,["variant"])]),"column-contact":C(({row:s})=>[r("div",Xt,[s.contactPerson?(T(),F("div",es,I(s.contactPerson),1)):B("",!0),s.email?(T(),F("div",ts,I(s.email),1)):B("",!0),s.phone?(T(),F("div",ss,I(s.phone),1)):B("",!0)])]),"column-rating":C(({row:s})=>[s.rating?(T(),F("div",as,[r("div",rs,[(T(),F(Re,null,Ae(5,z=>r("svg",{key:z,class:ue(["w-4 h-4",z<=s.rating?"text-yellow-400":"text-gray-300"]),fill:"currentColor",viewBox:"0 0 20 20"},e[35]||(e[35]=[r("path",{d:"M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 00.95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 00-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 00-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 00-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 00.951-.69l1.519-4.674z"},null,-1)]),2)),64))]),r("span",ns,"("+I(s.rating)+")",1)])):(T(),F("div",os,"Not rated"))]),"column-status":C(({row:s})=>[h(t(Le),{variant:st(s.status)},{default:C(()=>[O(I(Ee(s.status)),1)]),_:2},1032,["variant"])]),"column-actions":C(({row:s})=>[r("div",ls,[h(t(A),{variant:"ghost",size:"xs",onClick:ge(z=>Ue(s),["stop"]),title:"View Details"},{default:C(()=>e[36]||(e[36]=[r("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"}),r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"})],-1)])),_:2,__:[36]},1032,["onClick"]),h(t(A),{variant:"ghost",size:"xs",onClick:ge(z=>_e(s),["stop"]),title:"Edit Vendor"},{default:C(()=>e[37]||(e[37]=[r("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1)])),_:2,__:[37]},1032,["onClick"]),h(t(A),{variant:"ghost",size:"xs",onClick:ge(z=>ct(s),["stop"]),title:s.isPreferred?"Remove from preferred":"Add to preferred",class:ue(s.isPreferred?"text-yellow-600 hover:text-yellow-700":"text-gray-400 hover:text-yellow-600")},{default:C(()=>e[38]||(e[38]=[r("svg",{class:"w-4 h-4",fill:"currentColor",viewBox:"0 0 20 20"},[r("path",{d:"M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 00.95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 00-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 00-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 00-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 00.951-.69l1.519-4.674z"})],-1)])),_:2,__:[38]},1032,["onClick","title","class"]),h(t(A),{variant:"ghost",size:"xs",onClick:ge(z=>mt(s),["stop"]),title:"Delete Vendor",class:"text-red-600 hover:text-red-700"},{default:C(()=>e[39]||(e[39]=[r("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[r("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1)])),_:2,__:[39]},1032,["onClick"])])]),_:1},8,["columns","data","loading","pagination"])]),h(t(Be),{modelValue:ie.value,"onUpdate:modelValue":e[25]||(e[25]=s=>ie.value=s),title:fe.value?"Edit Vendor":"Create Vendor",size:"xl",onCancel:xe},{footer:C(()=>[r("div",Us,[r("div",_s,[t(se)||t(j)?(T(),F("div",Ns,[t(se)?(T(),F("svg",Rs,e[50]||(e[50]=[r("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z","clip-rule":"evenodd"},null,-1)]))):(T(),F("svg",As,e[51]||(e[51]=[r("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z","clip-rule":"evenodd"},null,-1)]))),t(se)?(T(),F("span",Os,"Auto-saving...")):t(j)?(T(),F("span",Bs,"Last saved "+I(Ye.value),1)):B("",!0)])):B("",!0)]),r("div",Ls,[h(t(A),{variant:"secondary",onClick:xe},{default:C(()=>e[52]||(e[52]=[O(" Cancel ",-1)])),_:1,__:[52]}),t(R)?(T(),Ce(t(A),{key:1,variant:"primary",loading:he.value,onClick:vt},{default:C(()=>[O(I(fe.value?"Update Vendor":"Create Vendor"),1)]),_:1},8,["loading"])):(T(),Ce(t(A),{key:0,variant:"primary",onClick:e[24]||(e[24]=s=>ft("next"))},{default:C(()=>e[53]||(e[53]=[O(" Next ",-1)])),_:1,__:[53]}))])])]),default:C(()=>[h(t(Mt),{visible:le.value,"saved-data-info":Te.value,onRestore:gt,onDismiss:yt},null,8,["visible","saved-data-info"]),r("div",is,[h(t($e),{modelValue:t(c),"onUpdate:modelValue":e[4]||(e[4]=s=>Tt(c)?c.value=s:null),tabs:t(p),onTabChange:Vt},null,8,["modelValue","tabs"])]),t(c)==="basic"?(T(),F("div",ds,[r("div",us,[h(t($),{modelValue:t(i).name,"onUpdate:modelValue":e[5]||(e[5]=s=>t(i).name=s),label:"Vendor Name",placeholder:"Enter vendor name",required:"",error:t(b).name,onInput:S},null,8,["modelValue","error"]),h(t($),{modelValue:t(i).code,"onUpdate:modelValue":e[6]||(e[6]=s=>t(i).code=s),label:"Vendor Code",placeholder:"AUTO or enter custom code",error:t(b).code,onInput:S},null,8,["modelValue","error"]),h(t(re),{modelValue:t(i).type,"onUpdate:modelValue":e[7]||(e[7]=s=>t(i).type=s),label:"Vendor Type",placeholder:"Select vendor type",options:t(y),required:"",error:t(b).type,onChange:S},null,8,["modelValue","options","error"]),h(t(re),{modelValue:t(i).status,"onUpdate:modelValue":e[8]||(e[8]=s=>t(i).status=s),label:"Status",placeholder:"Select status",options:t(x),required:"",error:t(b).status,onChange:S},null,8,["modelValue","options","error"])]),r("div",cs,[r("label",ms,[Oe(r("input",{"onUpdate:modelValue":e[9]||(e[9]=s=>t(i).isPreferred=s),type:"checkbox",class:"rounded border-gray-300 text-primary-600 shadow-sm focus:border-primary-300 focus:ring focus:ring-primary-200 focus:ring-opacity-50",onChange:S},null,544),[[St,t(i).isPreferred]]),e[40]||(e[40]=r("span",{class:"ml-2 text-sm font-medium text-gray-700"},"Preferred Vendor",-1))])])])):B("",!0),t(c)==="contact"?(T(),F("div",ps,[r("div",vs,[h(t($),{modelValue:t(i).contactPerson,"onUpdate:modelValue":e[10]||(e[10]=s=>t(i).contactPerson=s),label:"Contact Person",placeholder:"Enter contact person name",error:t(b).contactPerson,onInput:S},null,8,["modelValue","error"]),h(t($),{modelValue:t(i).email,"onUpdate:modelValue":e[11]||(e[11]=s=>t(i).email=s),label:"Email Address",placeholder:"vendor@company.com",type:"email",error:t(b).email,onInput:S},null,8,["modelValue","error"]),h(t($),{modelValue:t(i).phone,"onUpdate:modelValue":e[12]||(e[12]=s=>t(i).phone=s),label:"Phone Number",placeholder:"(555) 123-4567",error:t(b).phone,onInput:S},null,8,["modelValue","error"]),h(t($),{modelValue:t(i).website,"onUpdate:modelValue":e[13]||(e[13]=s=>t(i).website=s),label:"Website",placeholder:"https://company.com",error:t(b).website,onInput:S},null,8,["modelValue","error"])]),r("div",fs,[e[41]||(e[41]=r("h4",{class:"text-md font-medium text-gray-900"},"Address",-1)),r("div",gs,[r("div",ys,[h(t($),{modelValue:t(i).address.street,"onUpdate:modelValue":e[14]||(e[14]=s=>t(i).address.street=s),label:"Street Address",placeholder:"123 Main Street",onInput:S},null,8,["modelValue"])]),h(t($),{modelValue:t(i).address.city,"onUpdate:modelValue":e[15]||(e[15]=s=>t(i).address.city=s),label:"City",placeholder:"New York",onInput:S},null,8,["modelValue"]),h(t($),{modelValue:t(i).address.state,"onUpdate:modelValue":e[16]||(e[16]=s=>t(i).address.state=s),label:"State/Province",placeholder:"NY",onInput:S},null,8,["modelValue"]),h(t($),{modelValue:t(i).address.postalCode,"onUpdate:modelValue":e[17]||(e[17]=s=>t(i).address.postalCode=s),label:"Postal Code",placeholder:"10001",onInput:S},null,8,["modelValue"]),h(t(re),{modelValue:t(i).address.country,"onUpdate:modelValue":e[18]||(e[18]=s=>t(i).address.country=s),label:"Country",placeholder:"Select country",options:t(V),onChange:S},null,8,["modelValue","options"])])])])):B("",!0),t(c)==="business"?(T(),F("div",hs,[r("div",Vs,[h(t($),{modelValue:t(i).taxId,"onUpdate:modelValue":e[19]||(e[19]=s=>t(i).taxId=s),label:"Tax ID",placeholder:"Enter tax identification number",error:t(b).taxId,onInput:S},null,8,["modelValue","error"]),h(t($),{modelValue:t(i).businessNumber,"onUpdate:modelValue":e[20]||(e[20]=s=>t(i).businessNumber=s),label:"Business Number",placeholder:"Enter business registration number",error:t(b).businessNumber,onInput:S},null,8,["modelValue","error"]),h(t(re),{modelValue:t(i).paymentTerms,"onUpdate:modelValue":e[21]||(e[21]=s=>t(i).paymentTerms=s),label:"Payment Terms",placeholder:"Select payment terms",options:t(_),error:t(b).paymentTerms,onChange:S},null,8,["modelValue","options","error"]),h(t(re),{modelValue:t(i).currency,"onUpdate:modelValue":e[22]||(e[22]=s=>t(i).currency=s),label:"Currency",placeholder:"Select currency",options:t(P),error:t(b).currency,onChange:S},null,8,["modelValue","options","error"])]),r("div",null,[e[43]||(e[43]=r("label",{class:"block text-sm font-medium text-gray-700 mb-3"},"Vendor Rating",-1)),r("div",bs,[(T(),F(Re,null,Ae(5,s=>r("button",{key:s,type:"button",class:ue(["w-8 h-8 rounded-full flex items-center justify-center transition-colors duration-200 hover:bg-yellow-100",s<=(t(i).rating||0)?"text-yellow-400":"text-gray-300"]),onClick:z=>t(w)(s)},e[42]||(e[42]=[r("svg",{class:"w-6 h-6",fill:"currentColor",viewBox:"0 0 20 20"},[r("path",{d:"M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 00.95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 00-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 00-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 00-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 00.951-.69l1.519-4.674z"})],-1)]),10,xs)),64)),t(i).rating?(T(),F("span",Cs,I(t(i).rating)+" out of 5 stars",1)):B("",!0)])])])):B("",!0),t(c)==="settings"?(T(),F("div",ws,[r("div",null,[e[44]||(e[44]=r("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Notes",-1)),Oe(r("textarea",{"onUpdate:modelValue":e[23]||(e[23]=s=>t(i).notes=s),class:ue(["w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500",{"border-red-300":t(b).notes}]),placeholder:"Additional notes about this vendor...",rows:"4",onInput:S},null,34),[[Ft,t(i).notes]]),t(b).notes?(T(),F("p",ks,I(t(b).notes),1)):B("",!0)]),r("div",Ps,[e[49]||(e[49]=r("h4",{class:"font-medium text-gray-900 mb-3"},"Vendor Summary",-1)),r("div",Ts,[r("div",null,[e[45]||(e[45]=r("span",{class:"font-medium text-gray-700"},"Name:",-1)),r("span",Ss,I(t(i).name||"Not specified"),1)]),r("div",null,[e[46]||(e[46]=r("span",{class:"font-medium text-gray-700"},"Type:",-1)),r("span",Fs,I(Fe(t(i).type)||"Not specified"),1)]),r("div",null,[e[47]||(e[47]=r("span",{class:"font-medium text-gray-700"},"Status:",-1)),r("span",Es,I(Ee(t(i).status)||"Not specified"),1)]),r("div",null,[e[48]||(e[48]=r("span",{class:"font-medium text-gray-700"},"Preferred:",-1)),r("span",Is,I(t(i).isPreferred?"Yes":"No"),1)])])])])):B("",!0)]),_:1},8,["modelValue","title"]),h(t(Be),{modelValue:de.value,"onUpdate:modelValue":e[27]||(e[27]=s=>de.value=s),title:"Delete Vendor",size:"md"},{footer:C(()=>[r("div",js,[h(t(A),{variant:"secondary",onClick:e[26]||(e[26]=s=>de.value=!1)},{default:C(()=>e[57]||(e[57]=[O(" Cancel ",-1)])),_:1,__:[57]}),h(t(A),{variant:"danger",onClick:pt,loading:t(Z)},{default:C(()=>e[58]||(e[58]=[O(" Delete Vendor ",-1)])),_:1,__:[58]},8,["loading"])])]),default:C(()=>{var s;return[r("div",$s,[r("p",Ms,[e[54]||(e[54]=O(" Are you sure you want to delete ",-1)),r("strong",zs,"'"+I((s=oe.value)==null?void 0:s.name)+"'",1),e[55]||(e[55]=O("? This action cannot be undone. ",-1))]),oe.value?(T(),F("div",Ds,e[56]||(e[56]=[r("div",{class:"flex"},[r("svg",{class:"w-5 h-5 text-yellow-400 mr-2 mt-0.5",fill:"currentColor",viewBox:"0 0 20 20"},[r("path",{"fill-rule":"evenodd",d:"M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z","clip-rule":"evenodd"})]),r("div",{class:"text-sm"},[r("p",{class:"font-medium text-yellow-800"},"Warning"),r("p",{class:"text-yellow-700"},"Make sure this vendor is not being used in any purchase orders or contracts before deleting.")])],-1)]))):B("",!0)])]}),_:1},8,["modelValue"])])]),_:1}))}};export{na as default}; diff --git a/frontend/dist/assets/VendorsView-DsPmbjUd.js b/frontend/dist/assets/VendorsView-CD95-yCL.js similarity index 63% rename from frontend/dist/assets/VendorsView-DsPmbjUd.js rename to frontend/dist/assets/VendorsView-CD95-yCL.js index 1e64dd2b..dc92c529 100644 --- a/frontend/dist/assets/VendorsView-DsPmbjUd.js +++ b/frontend/dist/assets/VendorsView-CD95-yCL.js @@ -1 +1 @@ -import{i as o,f as r,g as t}from"./index-BUdRbiwj.js";const a={__name:"VendorsView",setup(n){return(s,_)=>{const e=r("router-view");return t(),o(e)}}};export{a as default}; +import{i as o,f as r,g as t}from"./index-QAlcqU00.js";const a={__name:"VendorsView",setup(n){return(s,_)=>{const e=r("router-view");return t(),o(e)}}};export{a as default}; diff --git a/frontend/dist/assets/WorkOrderDetailView-D9lPqwSW.js b/frontend/dist/assets/WorkOrderDetailView-D9lPqwSW.js new file mode 100644 index 00000000..c8a9294f --- /dev/null +++ b/frontend/dist/assets/WorkOrderDetailView-D9lPqwSW.js @@ -0,0 +1 @@ +import{_ as I,q as L,r as h,c as _,o as B,a as i,j as m,b as e,t as a,d as u,w as v,e as r,F as w,n as c,f as U,af as W,aR as z,s as H,v as j,g as d,k as g}from"./index-QAlcqU00.js";import{u as Z}from"./useMobileOptimization-Ds6Eb1bE.js";import{F as y}from"./FPBadge-DvOitM1C.js";import{T as q}from"./TimeTracker-DBp8PrtX.js";import{T as F,A as G,P as J}from"./AudioRecorder-BzlZ8cXI.js";import{D as $}from"./DigitalSignature-CzkShzQj.js";import{C as K,S as Q}from"./StatusHistory-C7FtpZlE.js";import"./FPInput-D5RURom0.js";import"./FPSelect-j7n_x8eB.js";import"./FPCheckbox-DcRYwN3n.js";import"./workOrder-jNxj_kjQ.js";const X={class:"work-order-detail"},Y={key:0,class:"flex items-center justify-center min-h-96"},ee={key:1,class:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8"},te={class:"bg-red-50 border border-red-200 rounded-lg p-6"},se={class:"flex"},ae={class:"ml-3"},re={class:"text-sm text-red-700 mt-1"},oe={class:"mt-4"},ie={class:"flex","aria-label":"Breadcrumb"},de={class:"flex items-center space-x-4"},le={key:0},ne={key:1},ue={class:"text-gray-500"},me={class:"flex space-x-2"},ce={key:0},ve={key:0},ge={key:1},pe={class:"mt-1 text-sm text-gray-900"},ye={class:"mt-1"},xe={class:"mt-1"},fe={class:"mt-1 text-sm text-gray-900"},ke={key:0},he={class:"mt-1 text-sm text-gray-900"},_e={key:1},we={class:"mt-1 text-sm text-gray-900"},be={key:0,class:"mt-6"},Se={class:"mt-1 text-sm text-gray-900"},Ne={key:0,class:"bg-white shadow rounded-lg p-6"},Te={class:"bg-white shadow rounded-lg p-6"},Ce={class:"bg-white shadow rounded-lg p-6"},De={key:1,class:"bg-white shadow rounded-lg p-6"},Oe={class:"space-y-6"},Ee={class:"bg-white shadow rounded-lg p-6"},Re={class:"space-y-4"},Ve={key:0},Me={class:"mt-1 flex items-center"},Ae={class:"flex-shrink-0 h-8 w-8 bg-gray-300 rounded-full flex items-center justify-center"},Pe={class:"text-sm font-medium text-gray-700"},Ie={class:"ml-3"},Le={class:"text-sm font-medium text-gray-900"},Be={class:"text-sm text-gray-500"},Ue={key:1},We={class:"mt-1 space-y-2"},ze={class:"flex-shrink-0 h-6 w-6 bg-gray-300 rounded-full flex items-center justify-center"},He={class:"text-xs font-medium text-gray-700"},je={class:"ml-3"},Ze={class:"text-sm text-gray-900"},qe={class:"bg-white shadow rounded-lg p-6"},Fe={class:"space-y-4"},Ge={key:0},Je={class:"mt-1 text-sm text-gray-900"},$e={class:"text-xs text-gray-500"},Ke={key:1},Qe={class:"mt-1 text-sm text-gray-900"},Xe={key:0,class:"text-xs text-gray-500"},Ye={key:2},et={class:"mt-1"},tt={key:0,class:"bg-white shadow rounded-lg p-6"},st={class:"bg-white shadow rounded-lg p-6"},at={class:"bg-white shadow rounded-lg p-6"},rt={__name:"WorkOrderDetailView",props:{id:{type:[String,Number],required:!0}},setup(D){H(),j();const O=L(),{isMobile:l}=Z(),b=D,s=h(null),k=h(!0),x=h(null),f=_(()=>O.user),p=_(()=>{var o;return((o=s.value)==null?void 0:o.status)==="COMPLETED"}),E=_(()=>{var o,t;return((o=s.value)==null?void 0:o.status)==="IN_PROGRESS"||((t=s.value)==null?void 0:t.status)==="COMPLETED"}),S=async()=>{try{k.value=!0,x.value=null,await new Promise(o=>setTimeout(o,1e3)),s.value={id:b.id,workOrderId:`WO-${String(b.id).padStart(6,"0")}`,title:"Repair Conveyor Belt Motor",description:"The conveyor belt motor in the production line has been making unusual noises and requires inspection and repair.",status:"IN_PROGRESS",priority:"HIGH",createdAt:"2024-01-15T08:00:00Z",dueDate:"2024-01-17T17:00:00Z",estimatedDuration:4,primaryUser:{id:1,firstName:"John",lastName:"Smith",email:"john.smith@company.com"},assignedTo:[{id:2,firstName:"Jane",lastName:"Doe",email:"jane.doe@company.com"}],asset:{id:1,name:"Conveyor Belt System A1",assetNumber:"CBT-001"},location:{id:1,name:"Production Floor A",description:"Main manufacturing area"},category:{id:1,name:"Mechanical Repair"},tasks:[{id:1,title:"Inspect motor bearings",description:"Check for wear and tear",completed:!0,required:!0,estimatedDuration:1,completedAt:"2024-01-15T10:30:00Z",completedBy:{id:1,firstName:"John",lastName:"Smith"},order:0},{id:2,title:"Replace worn components",description:"Replace any damaged parts found during inspection",completed:!1,required:!0,estimatedDuration:2,order:1}],timeEntries:[{id:1,type:"timer",duration:2.5,description:"Initial inspection and diagnosis",startTime:"2024-01-15T08:00:00Z",endTime:"2024-01-15T10:30:00Z",user:{id:1,firstName:"John",lastName:"Smith"},hourlyRate:55,date:"2024-01-15"}],audioRecordings:[{id:1,title:"Initial Inspection Notes",description:"Motor sounds and initial observations",duration:120,size:256e4,createdAt:"2024-01-15T08:30:00Z",user:{id:1,firstName:"John",lastName:"Smith"},transcription:"Motor is making grinding noise, likely bearing issue. Will need to disassemble for full inspection.",transcriptionConfidence:.92}],parts:[{id:1,partId:101,name:"Motor Bearing Set",partNumber:"BRG-M15",quantityUsed:1,unitPrice:45,totalCost:45}],signature:null,statusHistory:[{id:1,status:"OPEN",changedAt:"2024-01-15T08:00:00Z",changedBy:{id:1,firstName:"System",lastName:"Admin"},comment:"Work order created"},{id:2,status:"IN_PROGRESS",changedAt:"2024-01-15T08:15:00Z",changedBy:{id:1,firstName:"John",lastName:"Smith"},comment:"Started work on motor inspection"}]}}catch(o){x.value=o.message||"Failed to load work order"}finally{k.value=!1}},R=o=>{console.log("Time entry saved:",o)},V=o=>{console.log("Recording saved:",o)},M=o=>{console.log("Signature saved:",o)},A=()=>{confirm("Are you sure you want to mark this work order as completed?")&&(s.value.status="COMPLETED",console.log("Work order completed"))},N=o=>({OPEN:"info",IN_PROGRESS:"warning",ON_HOLD:"secondary",COMPLETED:"success",CANCELLED:"error"})[o]||"secondary",T=o=>({LOW:"success",MEDIUM:"warning",HIGH:"error",CRITICAL:"error"})[o]||"secondary",C=o=>o?new Date(o).toLocaleString("en-US",{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}):"Not set";return B(()=>{S()}),(o,t)=>{const P=U("router-link");return d(),i("div",X,[k.value?(d(),i("div",Y,t[6]||(t[6]=[e("div",{class:"text-center"},[e("div",{class:"animate-spin rounded-full h-12 w-12 border-b-2 border-blue-600 mx-auto mb-4"}),e("p",{class:"text-gray-600"},"Loading work order...")],-1)]))):x.value?(d(),i("div",ee,[e("div",te,[e("div",se,[t[9]||(t[9]=e("svg",{class:"w-6 h-6 text-red-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.854-.833-2.598 0L3.732 16.5c-.77.833.192 2.5 1.732 2.5z"})],-1)),e("div",ae,[t[8]||(t[8]=e("h3",{class:"text-sm font-medium text-red-800"},"Error Loading Work Order",-1)),e("p",re,a(x.value),1),e("div",oe,[u(r(w),{variant:"outline",size:"sm",onClick:S},{default:v(()=>t[7]||(t[7]=[g(" Try Again ",-1)])),_:1,__:[7]})])])])])])):s.value?(d(),i("div",{key:2,class:c(["max-w-7xl mx-auto",r(l)?"px-4 py-6":"px-4 sm:px-6 lg:px-8 py-8"])},[e("div",{class:c(r(l)?"mb-6":"mb-8")},[e("div",{class:c(r(l)?"space-y-4":"flex items-center justify-between")},[e("div",null,[e("nav",ie,[e("ol",de,[e("li",null,[u(P,{to:"/work-orders",class:"text-gray-400 hover:text-gray-500"},{default:v(()=>[r(l)?(d(),i("span",ne,"WO")):(d(),i("span",le,"Work Orders"))]),_:1})]),t[10]||(t[10]=e("li",null,[e("svg",{class:"flex-shrink-0 h-5 w-5 text-gray-300",fill:"currentColor",viewBox:"0 0 20 20"},[e("path",{"fill-rule":"evenodd",d:"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z","clip-rule":"evenodd"})])],-1)),e("li",ue,a(s.value.workOrderId),1)])]),e("div",{class:c(["mt-2",r(l)?"space-y-2":"flex items-center"])},[e("h1",{class:c([r(l)?"text-xl":"text-2xl","font-bold text-gray-900"])},a(s.value.title),3),e("div",{class:c(r(l)?"flex gap-2":"flex ml-4 space-x-2")},[u(r(y),{variant:N(s.value.status)},{default:v(()=>[g(a(s.value.status),1)]),_:1},8,["variant"]),u(r(y),{variant:T(s.value.priority)},{default:v(()=>[g(a(s.value.priority),1)]),_:1},8,["variant"])],2)],2)]),e("div",me,[u(r(w),{variant:"outline",size:r(l)?"sm":"md",onClick:t[0]||(t[0]=n=>o.$router.push(`/work-orders/${s.value.id}/edit`))},{default:v(()=>[(d(),i("svg",{class:c(["w-4 h-4",r(l)?"":"mr-2"]),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},t[11]||(t[11]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"},null,-1)]),2)),r(l)?m("",!0):(d(),i("span",ce,"Edit"))]),_:1},8,["size"]),u(r(w),{variant:"primary",size:r(l)?"sm":"md",onClick:A},{default:v(()=>[r(l)?(d(),i("span",ge,"Complete")):(d(),i("span",ve,"Complete Work Order"))]),_:1},8,["size"])])],2)],2),e("div",{class:c(["grid gap-6",r(l)?"grid-cols-1":"grid-cols-1 lg:grid-cols-3 gap-8"])},[e("div",{class:c([r(l)?"space-y-6":"lg:col-span-2 space-y-8"])},[e("div",{class:c(["bg-white shadow rounded-lg",r(l)?"p-4":"p-6"])},[e("h2",{class:c([r(l)?"text-base":"text-lg","font-medium text-gray-900 mb-4"])},"Work Order Details",2),e("dl",{class:c(["grid gap-x-4 gap-y-6",r(l)?"grid-cols-1":"grid-cols-1 sm:grid-cols-2"])},[e("div",null,[t[12]||(t[12]=e("dt",{class:"text-sm font-medium text-gray-500"},"Work Order ID",-1)),e("dd",pe,a(s.value.workOrderId),1)]),e("div",null,[t[13]||(t[13]=e("dt",{class:"text-sm font-medium text-gray-500"},"Status",-1)),e("dd",ye,[u(r(y),{variant:N(s.value.status)},{default:v(()=>[g(a(s.value.status),1)]),_:1},8,["variant"])])]),e("div",null,[t[14]||(t[14]=e("dt",{class:"text-sm font-medium text-gray-500"},"Priority",-1)),e("dd",xe,[u(r(y),{variant:T(s.value.priority)},{default:v(()=>[g(a(s.value.priority),1)]),_:1},8,["variant"])])]),e("div",null,[t[15]||(t[15]=e("dt",{class:"text-sm font-medium text-gray-500"},"Created",-1)),e("dd",fe,a(C(s.value.createdAt)),1)]),s.value.dueDate?(d(),i("div",ke,[t[16]||(t[16]=e("dt",{class:"text-sm font-medium text-gray-500"},"Due Date",-1)),e("dd",he,a(C(s.value.dueDate)),1)])):m("",!0),s.value.estimatedDuration?(d(),i("div",_e,[t[17]||(t[17]=e("dt",{class:"text-sm font-medium text-gray-500"},"Estimated Duration",-1)),e("dd",we,a(s.value.estimatedDuration)+" hours",1)])):m("",!0)],2),s.value.description?(d(),i("div",be,[t[18]||(t[18]=e("dt",{class:"text-sm font-medium text-gray-500"},"Description",-1)),e("dd",Se,a(s.value.description),1)])):m("",!0)],2),s.value.tasks&&s.value.tasks.length>0?(d(),i("div",Ne,[t[19]||(t[19]=e("h2",{class:"text-lg font-medium text-gray-900 mb-4"},"Tasks",-1)),u(F,{modelValue:s.value.tasks,"onUpdate:modelValue":t[1]||(t[1]=n=>s.value.tasks=n),"work-order-id":s.value.id,"current-user":f.value,disabled:p.value},null,8,["modelValue","work-order-id","current-user","disabled"])])):m("",!0),e("div",Te,[t[20]||(t[20]=e("h2",{class:"text-lg font-medium text-gray-900 mb-4"},"Time Tracking",-1)),u(q,{modelValue:s.value.timeEntries,"onUpdate:modelValue":t[2]||(t[2]=n=>s.value.timeEntries=n),"work-order-id":s.value.id,"current-user":f.value,"auto-save":!0,"use-server-timer":!0,disabled:p.value,onTimeEntrySaved:R},null,8,["modelValue","work-order-id","current-user","disabled"])]),e("div",Ce,[t[21]||(t[21]=e("h2",{class:"text-lg font-medium text-gray-900 mb-4"},"Audio Notes",-1)),u(G,{modelValue:s.value.audioRecordings,"onUpdate:modelValue":t[3]||(t[3]=n=>s.value.audioRecordings=n),"work-order-id":s.value.id,"current-user":f.value,"auto-transcribe":!0,"enable-visualization":!0,"enable-server-session":!0,disabled:p.value,onRecordingSaved:V},null,8,["modelValue","work-order-id","current-user","disabled"])]),E.value?(d(),i("div",De,[t[22]||(t[22]=e("h2",{class:"text-lg font-medium text-gray-900 mb-4"},"Completion Signature",-1)),u($,{modelValue:s.value.signature,"onUpdate:modelValue":t[4]||(t[4]=n=>s.value.signature=n),"work-order-id":s.value.id,"current-user":f.value,"auto-save":!0,"enable-validation":!0,disabled:p.value,onSignatureSaved:M},null,8,["modelValue","work-order-id","current-user","disabled"])])):m("",!0)],2),e("div",Oe,[e("div",Ee,[t[25]||(t[25]=e("h3",{class:"text-lg font-medium text-gray-900 mb-4"},"Assignment",-1)),e("div",Re,[s.value.primaryUser?(d(),i("div",Ve,[t[23]||(t[23]=e("dt",{class:"text-sm font-medium text-gray-500"},"Primary Assignee",-1)),e("dd",Me,[e("div",Ae,[e("span",Pe,a(s.value.primaryUser.firstName[0])+a(s.value.primaryUser.lastName[0]),1)]),e("div",Ie,[e("p",Le,a(s.value.primaryUser.firstName)+" "+a(s.value.primaryUser.lastName),1),e("p",Be,a(s.value.primaryUser.email),1)])])])):m("",!0),s.value.assignedTo&&s.value.assignedTo.length>0?(d(),i("div",Ue,[t[24]||(t[24]=e("dt",{class:"text-sm font-medium text-gray-500"},"Team Members",-1)),e("dd",We,[(d(!0),i(W,null,z(s.value.assignedTo,n=>(d(),i("div",{key:n.id,class:"flex items-center"},[e("div",ze,[e("span",He,a(n.firstName[0])+a(n.lastName[0]),1)]),e("div",je,[e("p",Ze,a(n.firstName)+" "+a(n.lastName),1)])]))),128))])])):m("",!0)])]),e("div",qe,[t[29]||(t[29]=e("h3",{class:"text-lg font-medium text-gray-900 mb-4"},"Asset & Location",-1)),e("div",Fe,[s.value.asset?(d(),i("div",Ge,[t[26]||(t[26]=e("dt",{class:"text-sm font-medium text-gray-500"},"Asset",-1)),e("dd",Je,a(s.value.asset.name),1),e("dd",$e,a(s.value.asset.assetNumber),1)])):m("",!0),s.value.location?(d(),i("div",Ke,[t[27]||(t[27]=e("dt",{class:"text-sm font-medium text-gray-500"},"Location",-1)),e("dd",Qe,a(s.value.location.name),1),s.value.location.description?(d(),i("dd",Xe,a(s.value.location.description),1)):m("",!0)])):m("",!0),s.value.category?(d(),i("div",Ye,[t[28]||(t[28]=e("dt",{class:"text-sm font-medium text-gray-500"},"Category",-1)),e("dd",et,[u(r(y),{variant:"secondary"},{default:v(()=>[g(a(s.value.category.name),1)]),_:1})])])):m("",!0)])]),s.value.parts&&s.value.parts.length>0?(d(),i("div",tt,[t[30]||(t[30]=e("h3",{class:"text-lg font-medium text-gray-900 mb-4"},"Parts",-1)),u(J,{modelValue:s.value.parts,"onUpdate:modelValue":t[5]||(t[5]=n=>s.value.parts=n),"work-order-id":s.value.id,disabled:p.value,"view-mode":"summary"},null,8,["modelValue","work-order-id","disabled"])])):m("",!0),e("div",st,[t[31]||(t[31]=e("h3",{class:"text-lg font-medium text-gray-900 mb-4"},"Cost Summary",-1)),u(K,{"work-order-id":s.value.id,"time-entries":s.value.timeEntries,parts:s.value.parts,"view-mode":"summary"},null,8,["work-order-id","time-entries","parts"])]),e("div",at,[t[32]||(t[32]=e("h3",{class:"text-lg font-medium text-gray-900 mb-4"},"Status History",-1)),u(Q,{"work-order-id":s.value.id,"status-history":s.value.statusHistory,"view-mode":"compact"},null,8,["work-order-id","status-history"])])])],2)],2)):m("",!0)])}}},yt=I(rt,[["__scopeId","data-v-c9458e5f"]]);export{yt as default}; diff --git a/frontend/dist/assets/WorkOrderDetailView-UFwsRvY7.js b/frontend/dist/assets/WorkOrderDetailView-UFwsRvY7.js deleted file mode 100644 index 29ca7794..00000000 --- a/frontend/dist/assets/WorkOrderDetailView-UFwsRvY7.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as P,q as M,r as f,c as _,o as I,a as o,j as n,b as t,t as r,d as l,w as u,e as v,F as k,f as L,af as B,aQ as U,s as W,v as H,g as i,k as m}from"./index-BUdRbiwj.js";import{F as g}from"./FPBadge-BKY5dPnL.js";import{T as j}from"./TimeTracker-Ch4gtOrh.js";import{T as Z,A as q,P as F}from"./AudioRecorder-CcKMXbWt.js";import{D as G}from"./DigitalSignature-B20bSUAg.js";import{C as z,S as J}from"./StatusHistory-DeozEdNs.js";import"./FPInput-CzR_dWoe.js";import"./FPSelect-C7p47Ma2.js";import"./FPCheckbox-Bu8jNAEW.js";import"./workOrder-jNxj_kjQ.js";const $={class:"work-order-detail"},Q={key:0,class:"flex items-center justify-center min-h-96"},K={key:1,class:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8"},X={class:"bg-red-50 border border-red-200 rounded-lg p-6"},Y={class:"flex"},tt={class:"ml-3"},et={class:"text-sm text-red-700 mt-1"},st={class:"mt-4"},rt={key:2,class:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8"},at={class:"mb-8"},ot={class:"flex items-center justify-between"},it={class:"flex","aria-label":"Breadcrumb"},dt={class:"flex items-center space-x-4"},lt={class:"text-gray-500"},nt={class:"mt-2 flex items-center"},ut={class:"text-2xl font-bold text-gray-900"},mt={class:"flex space-x-2"},vt={class:"grid grid-cols-1 lg:grid-cols-3 gap-8"},ct={class:"lg:col-span-2 space-y-8"},gt={class:"bg-white shadow rounded-lg p-6"},pt={class:"grid grid-cols-1 gap-x-4 gap-y-6 sm:grid-cols-2"},yt={class:"mt-1 text-sm text-gray-900"},xt={class:"mt-1"},ft={class:"mt-1"},_t={class:"mt-1 text-sm text-gray-900"},kt={key:0},ht={class:"mt-1 text-sm text-gray-900"},wt={key:1},bt={class:"mt-1 text-sm text-gray-900"},St={key:0,class:"mt-6"},Nt={class:"mt-1 text-sm text-gray-900"},Tt={key:0,class:"bg-white shadow rounded-lg p-6"},Ct={class:"bg-white shadow rounded-lg p-6"},Dt={class:"bg-white shadow rounded-lg p-6"},Et={key:1,class:"bg-white shadow rounded-lg p-6"},Ot={class:"space-y-6"},Rt={class:"bg-white shadow rounded-lg p-6"},Vt={class:"space-y-4"},At={key:0},Pt={class:"mt-1 flex items-center"},Mt={class:"flex-shrink-0 h-8 w-8 bg-gray-300 rounded-full flex items-center justify-center"},It={class:"text-sm font-medium text-gray-700"},Lt={class:"ml-3"},Bt={class:"text-sm font-medium text-gray-900"},Ut={class:"text-sm text-gray-500"},Wt={key:1},Ht={class:"mt-1 space-y-2"},jt={class:"flex-shrink-0 h-6 w-6 bg-gray-300 rounded-full flex items-center justify-center"},Zt={class:"text-xs font-medium text-gray-700"},qt={class:"ml-3"},Ft={class:"text-sm text-gray-900"},Gt={class:"bg-white shadow rounded-lg p-6"},zt={class:"space-y-4"},Jt={key:0},$t={class:"mt-1 text-sm text-gray-900"},Qt={class:"text-xs text-gray-500"},Kt={key:1},Xt={class:"mt-1 text-sm text-gray-900"},Yt={key:0,class:"text-xs text-gray-500"},te={key:2},ee={class:"mt-1"},se={key:0,class:"bg-white shadow rounded-lg p-6"},re={class:"bg-white shadow rounded-lg p-6"},ae={class:"bg-white shadow rounded-lg p-6"},oe={__name:"WorkOrderDetailView",props:{id:{type:[String,Number],required:!0}},setup(T){W(),H();const C=M(),h=T,s=f(null),x=f(!0),p=f(null),y=_(()=>C.user),c=_(()=>{var a;return((a=s.value)==null?void 0:a.status)==="COMPLETED"}),D=_(()=>{var a,e;return((a=s.value)==null?void 0:a.status)==="IN_PROGRESS"||((e=s.value)==null?void 0:e.status)==="COMPLETED"}),w=async()=>{try{x.value=!0,p.value=null,await new Promise(a=>setTimeout(a,1e3)),s.value={id:h.id,workOrderId:`WO-${String(h.id).padStart(6,"0")}`,title:"Repair Conveyor Belt Motor",description:"The conveyor belt motor in the production line has been making unusual noises and requires inspection and repair.",status:"IN_PROGRESS",priority:"HIGH",createdAt:"2024-01-15T08:00:00Z",dueDate:"2024-01-17T17:00:00Z",estimatedDuration:4,primaryUser:{id:1,firstName:"John",lastName:"Smith",email:"john.smith@company.com"},assignedTo:[{id:2,firstName:"Jane",lastName:"Doe",email:"jane.doe@company.com"}],asset:{id:1,name:"Conveyor Belt System A1",assetNumber:"CBT-001"},location:{id:1,name:"Production Floor A",description:"Main manufacturing area"},category:{id:1,name:"Mechanical Repair"},tasks:[{id:1,title:"Inspect motor bearings",description:"Check for wear and tear",completed:!0,required:!0,estimatedDuration:1,completedAt:"2024-01-15T10:30:00Z",completedBy:{id:1,firstName:"John",lastName:"Smith"},order:0},{id:2,title:"Replace worn components",description:"Replace any damaged parts found during inspection",completed:!1,required:!0,estimatedDuration:2,order:1}],timeEntries:[{id:1,type:"timer",duration:2.5,description:"Initial inspection and diagnosis",startTime:"2024-01-15T08:00:00Z",endTime:"2024-01-15T10:30:00Z",user:{id:1,firstName:"John",lastName:"Smith"},hourlyRate:55,date:"2024-01-15"}],audioRecordings:[{id:1,title:"Initial Inspection Notes",description:"Motor sounds and initial observations",duration:120,size:256e4,createdAt:"2024-01-15T08:30:00Z",user:{id:1,firstName:"John",lastName:"Smith"},transcription:"Motor is making grinding noise, likely bearing issue. Will need to disassemble for full inspection.",transcriptionConfidence:.92}],parts:[{id:1,partId:101,name:"Motor Bearing Set",partNumber:"BRG-M15",quantityUsed:1,unitPrice:45,totalCost:45}],signature:null,statusHistory:[{id:1,status:"OPEN",changedAt:"2024-01-15T08:00:00Z",changedBy:{id:1,firstName:"System",lastName:"Admin"},comment:"Work order created"},{id:2,status:"IN_PROGRESS",changedAt:"2024-01-15T08:15:00Z",changedBy:{id:1,firstName:"John",lastName:"Smith"},comment:"Started work on motor inspection"}]}}catch(a){p.value=a.message||"Failed to load work order"}finally{x.value=!1}},E=a=>{console.log("Time entry saved:",a)},O=a=>{console.log("Recording saved:",a)},R=a=>{console.log("Signature saved:",a)},V=()=>{confirm("Are you sure you want to mark this work order as completed?")&&(s.value.status="COMPLETED",console.log("Work order completed"))},b=a=>({OPEN:"info",IN_PROGRESS:"warning",ON_HOLD:"secondary",COMPLETED:"success",CANCELLED:"error"})[a]||"secondary",S=a=>({LOW:"success",MEDIUM:"warning",HIGH:"error",CRITICAL:"error"})[a]||"secondary",N=a=>a?new Date(a).toLocaleString("en-US",{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}):"Not set";return I(()=>{w()}),(a,e)=>{const A=L("router-link");return i(),o("div",$,[x.value?(i(),o("div",Q,e[6]||(e[6]=[t("div",{class:"text-center"},[t("div",{class:"animate-spin rounded-full h-12 w-12 border-b-2 border-blue-600 mx-auto mb-4"}),t("p",{class:"text-gray-600"},"Loading work order...")],-1)]))):p.value?(i(),o("div",K,[t("div",X,[t("div",Y,[e[9]||(e[9]=t("svg",{class:"w-6 h-6 text-red-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.854-.833-2.598 0L3.732 16.5c-.77.833.192 2.5 1.732 2.5z"})],-1)),t("div",tt,[e[8]||(e[8]=t("h3",{class:"text-sm font-medium text-red-800"},"Error Loading Work Order",-1)),t("p",et,r(p.value),1),t("div",st,[l(v(k),{variant:"outline",size:"sm",onClick:w},{default:u(()=>e[7]||(e[7]=[m(" Try Again ",-1)])),_:1,__:[7]})])])])])])):s.value?(i(),o("div",rt,[t("div",at,[t("div",ot,[t("div",null,[t("nav",it,[t("ol",dt,[t("li",null,[l(A,{to:"/work-orders",class:"text-gray-400 hover:text-gray-500"},{default:u(()=>e[10]||(e[10]=[m(" Work Orders ",-1)])),_:1,__:[10]})]),e[11]||(e[11]=t("li",null,[t("svg",{class:"flex-shrink-0 h-5 w-5 text-gray-300",fill:"currentColor",viewBox:"0 0 20 20"},[t("path",{"fill-rule":"evenodd",d:"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z","clip-rule":"evenodd"})])],-1)),t("li",lt,r(s.value.workOrderId),1)])]),t("div",nt,[t("h1",ut,r(s.value.title),1),l(v(g),{variant:b(s.value.status),class:"ml-4"},{default:u(()=>[m(r(s.value.status),1)]),_:1},8,["variant"]),l(v(g),{variant:S(s.value.priority),class:"ml-2"},{default:u(()=>[m(r(s.value.priority),1)]),_:1},8,["variant"])])]),t("div",mt,[l(v(k),{variant:"outline",onClick:e[0]||(e[0]=d=>a.$router.push(`/work-orders/${s.value.id}/edit`))},{default:u(()=>e[12]||(e[12]=[t("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})],-1),m(" Edit ",-1)])),_:1,__:[12]}),l(v(k),{variant:"primary",onClick:V},{default:u(()=>e[13]||(e[13]=[m(" Complete Work Order ",-1)])),_:1,__:[13]})])])]),t("div",vt,[t("div",ct,[t("div",gt,[e[21]||(e[21]=t("h2",{class:"text-lg font-medium text-gray-900 mb-4"},"Work Order Details",-1)),t("dl",pt,[t("div",null,[e[14]||(e[14]=t("dt",{class:"text-sm font-medium text-gray-500"},"Work Order ID",-1)),t("dd",yt,r(s.value.workOrderId),1)]),t("div",null,[e[15]||(e[15]=t("dt",{class:"text-sm font-medium text-gray-500"},"Status",-1)),t("dd",xt,[l(v(g),{variant:b(s.value.status)},{default:u(()=>[m(r(s.value.status),1)]),_:1},8,["variant"])])]),t("div",null,[e[16]||(e[16]=t("dt",{class:"text-sm font-medium text-gray-500"},"Priority",-1)),t("dd",ft,[l(v(g),{variant:S(s.value.priority)},{default:u(()=>[m(r(s.value.priority),1)]),_:1},8,["variant"])])]),t("div",null,[e[17]||(e[17]=t("dt",{class:"text-sm font-medium text-gray-500"},"Created",-1)),t("dd",_t,r(N(s.value.createdAt)),1)]),s.value.dueDate?(i(),o("div",kt,[e[18]||(e[18]=t("dt",{class:"text-sm font-medium text-gray-500"},"Due Date",-1)),t("dd",ht,r(N(s.value.dueDate)),1)])):n("",!0),s.value.estimatedDuration?(i(),o("div",wt,[e[19]||(e[19]=t("dt",{class:"text-sm font-medium text-gray-500"},"Estimated Duration",-1)),t("dd",bt,r(s.value.estimatedDuration)+" hours",1)])):n("",!0)]),s.value.description?(i(),o("div",St,[e[20]||(e[20]=t("dt",{class:"text-sm font-medium text-gray-500"},"Description",-1)),t("dd",Nt,r(s.value.description),1)])):n("",!0)]),s.value.tasks&&s.value.tasks.length>0?(i(),o("div",Tt,[e[22]||(e[22]=t("h2",{class:"text-lg font-medium text-gray-900 mb-4"},"Tasks",-1)),l(Z,{modelValue:s.value.tasks,"onUpdate:modelValue":e[1]||(e[1]=d=>s.value.tasks=d),"work-order-id":s.value.id,"current-user":y.value,disabled:c.value},null,8,["modelValue","work-order-id","current-user","disabled"])])):n("",!0),t("div",Ct,[e[23]||(e[23]=t("h2",{class:"text-lg font-medium text-gray-900 mb-4"},"Time Tracking",-1)),l(j,{modelValue:s.value.timeEntries,"onUpdate:modelValue":e[2]||(e[2]=d=>s.value.timeEntries=d),"work-order-id":s.value.id,"current-user":y.value,"auto-save":!0,"use-server-timer":!0,disabled:c.value,onTimeEntrySaved:E},null,8,["modelValue","work-order-id","current-user","disabled"])]),t("div",Dt,[e[24]||(e[24]=t("h2",{class:"text-lg font-medium text-gray-900 mb-4"},"Audio Notes",-1)),l(q,{modelValue:s.value.audioRecordings,"onUpdate:modelValue":e[3]||(e[3]=d=>s.value.audioRecordings=d),"work-order-id":s.value.id,"current-user":y.value,"auto-transcribe":!0,"enable-visualization":!0,"enable-server-session":!0,disabled:c.value,onRecordingSaved:O},null,8,["modelValue","work-order-id","current-user","disabled"])]),D.value?(i(),o("div",Et,[e[25]||(e[25]=t("h2",{class:"text-lg font-medium text-gray-900 mb-4"},"Completion Signature",-1)),l(G,{modelValue:s.value.signature,"onUpdate:modelValue":e[4]||(e[4]=d=>s.value.signature=d),"work-order-id":s.value.id,"current-user":y.value,"auto-save":!0,"enable-validation":!0,disabled:c.value,onSignatureSaved:R},null,8,["modelValue","work-order-id","current-user","disabled"])])):n("",!0)]),t("div",Ot,[t("div",Rt,[e[28]||(e[28]=t("h3",{class:"text-lg font-medium text-gray-900 mb-4"},"Assignment",-1)),t("div",Vt,[s.value.primaryUser?(i(),o("div",At,[e[26]||(e[26]=t("dt",{class:"text-sm font-medium text-gray-500"},"Primary Assignee",-1)),t("dd",Pt,[t("div",Mt,[t("span",It,r(s.value.primaryUser.firstName[0])+r(s.value.primaryUser.lastName[0]),1)]),t("div",Lt,[t("p",Bt,r(s.value.primaryUser.firstName)+" "+r(s.value.primaryUser.lastName),1),t("p",Ut,r(s.value.primaryUser.email),1)])])])):n("",!0),s.value.assignedTo&&s.value.assignedTo.length>0?(i(),o("div",Wt,[e[27]||(e[27]=t("dt",{class:"text-sm font-medium text-gray-500"},"Team Members",-1)),t("dd",Ht,[(i(!0),o(B,null,U(s.value.assignedTo,d=>(i(),o("div",{key:d.id,class:"flex items-center"},[t("div",jt,[t("span",Zt,r(d.firstName[0])+r(d.lastName[0]),1)]),t("div",qt,[t("p",Ft,r(d.firstName)+" "+r(d.lastName),1)])]))),128))])])):n("",!0)])]),t("div",Gt,[e[32]||(e[32]=t("h3",{class:"text-lg font-medium text-gray-900 mb-4"},"Asset & Location",-1)),t("div",zt,[s.value.asset?(i(),o("div",Jt,[e[29]||(e[29]=t("dt",{class:"text-sm font-medium text-gray-500"},"Asset",-1)),t("dd",$t,r(s.value.asset.name),1),t("dd",Qt,r(s.value.asset.assetNumber),1)])):n("",!0),s.value.location?(i(),o("div",Kt,[e[30]||(e[30]=t("dt",{class:"text-sm font-medium text-gray-500"},"Location",-1)),t("dd",Xt,r(s.value.location.name),1),s.value.location.description?(i(),o("dd",Yt,r(s.value.location.description),1)):n("",!0)])):n("",!0),s.value.category?(i(),o("div",te,[e[31]||(e[31]=t("dt",{class:"text-sm font-medium text-gray-500"},"Category",-1)),t("dd",ee,[l(v(g),{variant:"secondary"},{default:u(()=>[m(r(s.value.category.name),1)]),_:1})])])):n("",!0)])]),s.value.parts&&s.value.parts.length>0?(i(),o("div",se,[e[33]||(e[33]=t("h3",{class:"text-lg font-medium text-gray-900 mb-4"},"Parts",-1)),l(F,{modelValue:s.value.parts,"onUpdate:modelValue":e[5]||(e[5]=d=>s.value.parts=d),"work-order-id":s.value.id,disabled:c.value,"view-mode":"summary"},null,8,["modelValue","work-order-id","disabled"])])):n("",!0),t("div",re,[e[34]||(e[34]=t("h3",{class:"text-lg font-medium text-gray-900 mb-4"},"Cost Summary",-1)),l(z,{"work-order-id":s.value.id,"time-entries":s.value.timeEntries,parts:s.value.parts,"view-mode":"summary"},null,8,["work-order-id","time-entries","parts"])]),t("div",ae,[e[35]||(e[35]=t("h3",{class:"text-lg font-medium text-gray-900 mb-4"},"Status History",-1)),l(J,{"work-order-id":s.value.id,"status-history":s.value.statusHistory,"view-mode":"compact"},null,8,["work-order-id","status-history"])])])])])):n("",!0)])}}},ye=P(oe,[["__scopeId","data-v-163ab4df"]]);export{ye as default}; diff --git a/frontend/dist/assets/WorkOrderIdGenerator-BPGN0soM.js b/frontend/dist/assets/WorkOrderIdGenerator-2pnsJNJL.js similarity index 89% rename from frontend/dist/assets/WorkOrderIdGenerator-BPGN0soM.js rename to frontend/dist/assets/WorkOrderIdGenerator-2pnsJNJL.js index bfd729fe..6bf07718 100644 --- a/frontend/dist/assets/WorkOrderIdGenerator-BPGN0soM.js +++ b/frontend/dist/assets/WorkOrderIdGenerator-2pnsJNJL.js @@ -1 +1 @@ -import{_ as le,r as P,c as w,o as re,m as se,a as c,g as m,b as a,j as A,t as i,d as s,w as f,k as y,e as n,F as x,af as N,aQ as Y}from"./index-BUdRbiwj.js";import{F as D}from"./FPInput-CzR_dWoe.js";import{F as W}from"./FPSelect-C7p47Ma2.js";const ne={class:"work-order-id-generator"},de={class:"mb-4 p-4 bg-blue-50 border border-blue-200 rounded-lg"},ue={class:"flex items-center justify-between"},ie={class:"text-lg font-bold text-blue-900 font-mono"},ce={class:"flex items-center space-x-2"},me={key:0,class:"mb-4 p-4 bg-yellow-50 border border-yellow-200 rounded-lg"},pe={class:"flex items-center space-x-3"},ve={key:1,class:"mb-6 p-4 bg-gray-50 border border-gray-200 rounded-lg"},ge={class:"grid grid-cols-1 md:grid-cols-2 gap-4 mb-4"},fe={class:"grid grid-cols-1 md:grid-cols-3 gap-4 mb-4"},ye={key:0,class:"mb-4"},xe={class:"mb-4 p-3 bg-white border border-gray-200 rounded"},be={class:"flex items-center justify-between"},we={class:"font-mono text-lg text-gray-900"},Oe={class:"flex items-center space-x-2"},ke={key:2,class:"mb-4"},Ce={class:"grid grid-cols-2 md:grid-cols-4 gap-2 text-xs"},$e=["onClick"],Ie={class:"font-medium text-gray-900"},Se={class:"font-mono text-gray-600"},he={key:3,class:"mb-4"},Pe={class:"space-y-1"},Ae={class:"font-mono"},De={class:"text-gray-500"},Re={class:"p-4 bg-gray-50 rounded-lg"},Te={class:"grid grid-cols-2 md:grid-cols-4 gap-4 text-sm"},Ve={class:"ml-2 font-medium text-gray-900"},_e={class:"ml-2 font-medium text-gray-900"},Ee={class:"ml-2 font-medium text-gray-900"},Me={class:"ml-2 font-medium text-gray-900"},Fe={__name:"WorkOrderIdGenerator",props:{modelValue:{type:String,default:""},category:{type:Object,default:null},location:{type:Object,default:null},disabled:{type:Boolean,default:!1},allowManualEntry:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(O,{emit:L}){const u=O,U=L,p=P(u.modelValue),k=P(!1),v=P(""),C=P([]),t=P({template:"standard",prefix:"WO",separator:"-",counterLength:4,counterType:"sequential",customPattern:""}),T=[{value:"standard",title:"Standard (WO-0001)"},{value:"date",title:"Date-based (WO-2024-0001)"},{value:"category",title:"Category-based (PM-0001)"},{value:"location",title:"Location-based (NYC-WO-0001)"},{value:"custom",title:"Custom Pattern"}],j=[{value:"sequential",title:"Sequential (1, 2, 3...)"},{value:"yearly",title:"Reset Yearly"},{value:"monthly",title:"Reset Monthly"},{value:"daily",title:"Reset Daily"}],z=[{name:"Standard",preview:"WO-0001",template:"standard"},{name:"Year-Month",preview:"WO-2024-01-0001",template:"date"},{name:"Category",preview:"PM-0001",template:"category"},{name:"Location",preview:"NYC-WO-0001",template:"location"}],B=w(()=>X()),G=w(()=>{const l=T.find(e=>e.value===t.value.template);return{name:(l==null?void 0:l.title)||"Custom"}}),V=w(()=>1245),H=w(()=>C.value.length),q=w(()=>{const l=new Date().getMonth(),e=new Date().getFullYear();return C.value.filter(o=>{const g=new Date(o.createdAt);return g.getMonth()===l&&g.getFullYear()===e}).length}),_=w(()=>!u.disabled&&p.value),E=()=>{var $,I,S,h;const l=new Date,e=l.getFullYear().toString(),o=(l.getMonth()+1).toString().padStart(2,"0"),g=l.getDate().toString().padStart(2,"0"),d=V.value.toString().padStart(t.value.counterLength,"0");let r="";switch(t.value.template){case"standard":r=`${t.value.prefix}${t.value.separator}${d}`;break;case"date":r=`${t.value.prefix}${t.value.separator}${e}${t.value.separator}${o}${t.value.separator}${d}`;break;case"category":r=`${(($=u.category)==null?void 0:$.code)||t.value.prefix}${t.value.separator}${d}`;break;case"location":r=`${((I=u.location)==null?void 0:I.code)||"LOC"}${t.value.separator}${t.value.prefix}${t.value.separator}${d}`;break;case"custom":r=t.value.customPattern.replace("{PREFIX}",t.value.prefix).replace("{SEPARATOR}",t.value.separator).replace("{YEAR}",e).replace("{MONTH}",o).replace("{DAY}",g).replace("{COUNTER}",d).replace("{CATEGORY}",((S=u.category)==null?void 0:S.code)||"CAT").replace("{LOCATION}",((h=u.location)==null?void 0:h.code)||"LOC");break;default:r=`${t.value.prefix}${t.value.separator}${d}`}return r},X=()=>{var $,I,S,h;const l=new Date,e=l.getFullYear().toString(),o=(l.getMonth()+1).toString().padStart(2,"0"),g=l.getDate().toString().padStart(2,"0"),d="0001";let r="";switch(t.value.template){case"standard":r=`${t.value.prefix}${t.value.separator}${d}`;break;case"date":r=`${t.value.prefix}${t.value.separator}${e}${t.value.separator}${o}${t.value.separator}${d}`;break;case"category":r=`${(($=u.category)==null?void 0:$.code)||"PM"}${t.value.separator}${d}`;break;case"location":r=`${((I=u.location)==null?void 0:I.code)||"NYC"}${t.value.separator}${t.value.prefix}${t.value.separator}${d}`;break;case"custom":r=t.value.customPattern.replace("{PREFIX}",t.value.prefix).replace("{SEPARATOR}",t.value.separator).replace("{YEAR}",e).replace("{MONTH}",o).replace("{DAY}",g).replace("{COUNTER}",d).replace("{CATEGORY}",((S=u.category)==null?void 0:S.code)||"CAT").replace("{LOCATION}",((h=u.location)==null?void 0:h.code)||"LOC");break;default:r=`${t.value.prefix}${t.value.separator}${d}`}return r},M=()=>{_.value&&(p.value=E(),R())},J=()=>{v.value&&(p.value=v.value,v.value="",R())},Q=()=>{v.value=""},F=()=>{k.value=!k.value},b=()=>{},K=()=>{localStorage.setItem("workOrderIdFormat",JSON.stringify(t.value)),M(),k.value=!1},Z=()=>{t.value={template:"standard",prefix:"WO",separator:"-",counterLength:4,counterType:"sequential",customPattern:""}},ee=l=>{t.value.template=l.template},te=l=>new Date(l).toLocaleDateString("en-US",{month:"short",day:"numeric"}),R=()=>{U("update:modelValue",p.value)};return re(()=>{const l=localStorage.getItem("workOrderIdFormat");if(l)try{t.value=JSON.parse(l)}catch{console.warn("Failed to load saved ID format")}u.modelValue||(p.value=E(),R()),C.value=[{id:1,workOrderId:"WO-1244",createdAt:new Date(Date.now()-864e5).toISOString()},{id:2,workOrderId:"WO-1243",createdAt:new Date(Date.now()-1728e5).toISOString()},{id:3,workOrderId:"WO-1242",createdAt:new Date(Date.now()-2592e5).toISOString()}]}),se(()=>u.modelValue,l=>{p.value=l}),(l,e)=>(m(),c("div",ne,[a("div",de,[a("div",ue,[a("div",null,[e[7]||(e[7]=a("h4",{class:"text-sm font-medium text-blue-900"},"Work Order ID",-1)),a("p",ie,i(p.value||"Auto-generated"),1)]),a("div",ce,[s(n(x),{variant:"outline",size:"sm",onClick:M,disabled:O.disabled||!_.value},{default:f(()=>e[8]||(e[8]=[a("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),y(" Regenerate ",-1)])),_:1,__:[8]},8,["disabled"]),s(n(x),{variant:"ghost",size:"sm",onClick:F},{default:f(()=>e[9]||(e[9]=[a("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"}),a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"})],-1),y(" Customize ",-1)])),_:1,__:[9]})])])]),O.allowManualEntry?(m(),c("div",me,[e[12]||(e[12]=a("h4",{class:"text-sm font-medium text-yellow-900 mb-2"},"Manual ID Entry",-1)),a("div",pe,[s(n(D),{modelValue:v.value,"onUpdate:modelValue":e[0]||(e[0]=o=>v.value=o),placeholder:"Enter custom ID...",disabled:O.disabled,class:"flex-1"},null,8,["modelValue","disabled"]),s(n(x),{onClick:J,disabled:!v.value||O.disabled},{default:f(()=>e[10]||(e[10]=[y(" Use This ID ",-1)])),_:1,__:[10]},8,["disabled"]),s(n(x),{variant:"secondary",onClick:Q},{default:f(()=>e[11]||(e[11]=[y(" Cancel ",-1)])),_:1,__:[11]})]),e[13]||(e[13]=a("p",{class:"text-xs text-yellow-700 mt-2"}," Warning: Manual IDs should follow your organization's numbering convention ",-1))])):A("",!0),k.value?(m(),c("div",ve,[e[19]||(e[19]=a("h4",{class:"text-sm font-medium text-gray-900 mb-3"},"ID Format Configuration",-1)),a("div",ge,[s(n(W),{modelValue:t.value.template,"onUpdate:modelValue":[e[1]||(e[1]=o=>t.value.template=o),b],label:"Template",options:T},null,8,["modelValue"]),s(n(W),{modelValue:t.value.counterType,"onUpdate:modelValue":[e[2]||(e[2]=o=>t.value.counterType=o),b],label:"Counter Type",options:j},null,8,["modelValue"])]),a("div",fe,[s(n(D),{modelValue:t.value.prefix,"onUpdate:modelValue":e[3]||(e[3]=o=>t.value.prefix=o),label:"Prefix",placeholder:"WO",onInput:b},null,8,["modelValue"]),s(n(D),{modelValue:t.value.counterLength,"onUpdate:modelValue":e[4]||(e[4]=o=>t.value.counterLength=o),modelModifiers:{number:!0},label:"Counter Length",type:"number",min:"1",max:"10",onInput:b},null,8,["modelValue"]),s(n(D),{modelValue:t.value.separator,"onUpdate:modelValue":e[5]||(e[5]=o=>t.value.separator=o),label:"Separator",placeholder:"-",onInput:b},null,8,["modelValue"])]),t.value.template==="custom"?(m(),c("div",ye,[s(n(D),{modelValue:t.value.customPattern,"onUpdate:modelValue":e[6]||(e[6]=o=>t.value.customPattern=o),label:"Custom Pattern",placeholder:"{PREFIX}{SEPARATOR}{YEAR}{MONTH}{SEPARATOR}{COUNTER}",onInput:b},null,8,["modelValue"]),e[14]||(e[14]=a("p",{class:"text-xs text-gray-600 mt-1"}," Available tokens: {PREFIX}, {SEPARATOR}, {YEAR}, {MONTH}, {DAY}, {COUNTER}, {CATEGORY}, {LOCATION} ",-1))])):A("",!0),a("div",xe,[a("div",be,[e[15]||(e[15]=a("span",{class:"text-sm text-gray-600"},"Preview:",-1)),a("span",we,i(B.value),1)])]),a("div",Oe,[s(n(x),{onClick:K},{default:f(()=>e[16]||(e[16]=[y("Save Format",-1)])),_:1,__:[16]}),s(n(x),{variant:"secondary",onClick:Z},{default:f(()=>e[17]||(e[17]=[y("Reset to Default",-1)])),_:1,__:[17]}),s(n(x),{variant:"ghost",onClick:F},{default:f(()=>e[18]||(e[18]=[y("Cancel",-1)])),_:1,__:[18]})])])):A("",!0),k.value?A("",!0):(m(),c("div",ke,[e[20]||(e[20]=a("h4",{class:"text-sm font-medium text-gray-900 mb-2"},"Format Examples",-1)),a("div",Ce,[(m(),c(N,null,Y(z,o=>a("div",{key:o.name,class:"p-2 bg-gray-50 rounded border cursor-pointer hover:bg-gray-100 transition-colors",onClick:g=>ee(o)},[a("div",Ie,i(o.name),1),a("div",Se,i(o.preview),1)],8,$e)),64))])])),C.value.length>0?(m(),c("div",he,[e[21]||(e[21]=a("h4",{class:"text-sm font-medium text-gray-900 mb-2"},"Recent IDs",-1)),a("div",Pe,[(m(!0),c(N,null,Y(C.value.slice(0,5),o=>(m(),c("div",{key:o.id,class:"flex items-center justify-between text-sm p-2 bg-gray-50 rounded"},[a("span",Ae,i(o.workOrderId),1),a("span",De,i(te(o.createdAt)),1)]))),128))])])):A("",!0),a("div",Re,[e[26]||(e[26]=a("h4",{class:"text-sm font-medium text-gray-900 mb-3"},"ID Statistics",-1)),a("div",Te,[a("div",null,[e[22]||(e[22]=a("span",{class:"text-gray-600"},"Current Format:",-1)),a("span",Ve,i(G.value.name),1)]),a("div",null,[e[23]||(e[23]=a("span",{class:"text-gray-600"},"Next Counter:",-1)),a("span",_e,i(V.value),1)]),a("div",null,[e[24]||(e[24]=a("span",{class:"text-gray-600"},"Total Generated:",-1)),a("span",Ee,i(H.value),1)]),a("div",null,[e[25]||(e[25]=a("span",{class:"text-gray-600"},"This Month:",-1)),a("span",Me,i(q.value),1)])])])]))}},Le=le(Fe,[["__scopeId","data-v-f0d78cff"]]);export{Le as W}; +import{_ as le,r as P,c as w,o as re,m as se,a as c,g as m,b as a,j as A,t as i,d as s,w as f,k as y,e as n,F as x,af as N,aR as Y}from"./index-QAlcqU00.js";import{F as R}from"./FPInput-D5RURom0.js";import{F as W}from"./FPSelect-j7n_x8eB.js";const ne={class:"work-order-id-generator"},de={class:"mb-4 p-4 bg-blue-50 border border-blue-200 rounded-lg"},ue={class:"flex items-center justify-between"},ie={class:"text-lg font-bold text-blue-900 font-mono"},ce={class:"flex items-center space-x-2"},me={key:0,class:"mb-4 p-4 bg-yellow-50 border border-yellow-200 rounded-lg"},pe={class:"flex items-center space-x-3"},ve={key:1,class:"mb-6 p-4 bg-gray-50 border border-gray-200 rounded-lg"},ge={class:"grid grid-cols-1 md:grid-cols-2 gap-4 mb-4"},fe={class:"grid grid-cols-1 md:grid-cols-3 gap-4 mb-4"},ye={key:0,class:"mb-4"},xe={class:"mb-4 p-3 bg-white border border-gray-200 rounded"},be={class:"flex items-center justify-between"},we={class:"font-mono text-lg text-gray-900"},Oe={class:"flex items-center space-x-2"},ke={key:2,class:"mb-4"},Ce={class:"grid grid-cols-2 md:grid-cols-4 gap-2 text-xs"},$e=["onClick"],Ie={class:"font-medium text-gray-900"},Se={class:"font-mono text-gray-600"},he={key:3,class:"mb-4"},Pe={class:"space-y-1"},Ae={class:"font-mono"},Re={class:"text-gray-500"},De={class:"p-4 bg-gray-50 rounded-lg"},Te={class:"grid grid-cols-2 md:grid-cols-4 gap-4 text-sm"},Ve={class:"ml-2 font-medium text-gray-900"},_e={class:"ml-2 font-medium text-gray-900"},Ee={class:"ml-2 font-medium text-gray-900"},Me={class:"ml-2 font-medium text-gray-900"},Fe={__name:"WorkOrderIdGenerator",props:{modelValue:{type:String,default:""},category:{type:Object,default:null},location:{type:Object,default:null},disabled:{type:Boolean,default:!1},allowManualEntry:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(O,{emit:L}){const u=O,U=L,p=P(u.modelValue),k=P(!1),v=P(""),C=P([]),t=P({template:"standard",prefix:"WO",separator:"-",counterLength:4,counterType:"sequential",customPattern:""}),T=[{value:"standard",title:"Standard (WO-0001)"},{value:"date",title:"Date-based (WO-2024-0001)"},{value:"category",title:"Category-based (PM-0001)"},{value:"location",title:"Location-based (NYC-WO-0001)"},{value:"custom",title:"Custom Pattern"}],j=[{value:"sequential",title:"Sequential (1, 2, 3...)"},{value:"yearly",title:"Reset Yearly"},{value:"monthly",title:"Reset Monthly"},{value:"daily",title:"Reset Daily"}],z=[{name:"Standard",preview:"WO-0001",template:"standard"},{name:"Year-Month",preview:"WO-2024-01-0001",template:"date"},{name:"Category",preview:"PM-0001",template:"category"},{name:"Location",preview:"NYC-WO-0001",template:"location"}],B=w(()=>X()),G=w(()=>{const l=T.find(e=>e.value===t.value.template);return{name:(l==null?void 0:l.title)||"Custom"}}),V=w(()=>1245),H=w(()=>C.value.length),q=w(()=>{const l=new Date().getMonth(),e=new Date().getFullYear();return C.value.filter(o=>{const g=new Date(o.createdAt);return g.getMonth()===l&&g.getFullYear()===e}).length}),_=w(()=>!u.disabled&&p.value),E=()=>{var $,I,S,h;const l=new Date,e=l.getFullYear().toString(),o=(l.getMonth()+1).toString().padStart(2,"0"),g=l.getDate().toString().padStart(2,"0"),d=V.value.toString().padStart(t.value.counterLength,"0");let r="";switch(t.value.template){case"standard":r=`${t.value.prefix}${t.value.separator}${d}`;break;case"date":r=`${t.value.prefix}${t.value.separator}${e}${t.value.separator}${o}${t.value.separator}${d}`;break;case"category":r=`${(($=u.category)==null?void 0:$.code)||t.value.prefix}${t.value.separator}${d}`;break;case"location":r=`${((I=u.location)==null?void 0:I.code)||"LOC"}${t.value.separator}${t.value.prefix}${t.value.separator}${d}`;break;case"custom":r=t.value.customPattern.replace("{PREFIX}",t.value.prefix).replace("{SEPARATOR}",t.value.separator).replace("{YEAR}",e).replace("{MONTH}",o).replace("{DAY}",g).replace("{COUNTER}",d).replace("{CATEGORY}",((S=u.category)==null?void 0:S.code)||"CAT").replace("{LOCATION}",((h=u.location)==null?void 0:h.code)||"LOC");break;default:r=`${t.value.prefix}${t.value.separator}${d}`}return r},X=()=>{var $,I,S,h;const l=new Date,e=l.getFullYear().toString(),o=(l.getMonth()+1).toString().padStart(2,"0"),g=l.getDate().toString().padStart(2,"0"),d="0001";let r="";switch(t.value.template){case"standard":r=`${t.value.prefix}${t.value.separator}${d}`;break;case"date":r=`${t.value.prefix}${t.value.separator}${e}${t.value.separator}${o}${t.value.separator}${d}`;break;case"category":r=`${(($=u.category)==null?void 0:$.code)||"PM"}${t.value.separator}${d}`;break;case"location":r=`${((I=u.location)==null?void 0:I.code)||"NYC"}${t.value.separator}${t.value.prefix}${t.value.separator}${d}`;break;case"custom":r=t.value.customPattern.replace("{PREFIX}",t.value.prefix).replace("{SEPARATOR}",t.value.separator).replace("{YEAR}",e).replace("{MONTH}",o).replace("{DAY}",g).replace("{COUNTER}",d).replace("{CATEGORY}",((S=u.category)==null?void 0:S.code)||"CAT").replace("{LOCATION}",((h=u.location)==null?void 0:h.code)||"LOC");break;default:r=`${t.value.prefix}${t.value.separator}${d}`}return r},M=()=>{_.value&&(p.value=E(),D())},J=()=>{v.value&&(p.value=v.value,v.value="",D())},K=()=>{v.value=""},F=()=>{k.value=!k.value},b=()=>{},Q=()=>{localStorage.setItem("workOrderIdFormat",JSON.stringify(t.value)),M(),k.value=!1},Z=()=>{t.value={template:"standard",prefix:"WO",separator:"-",counterLength:4,counterType:"sequential",customPattern:""}},ee=l=>{t.value.template=l.template},te=l=>new Date(l).toLocaleDateString("en-US",{month:"short",day:"numeric"}),D=()=>{U("update:modelValue",p.value)};return re(()=>{const l=localStorage.getItem("workOrderIdFormat");if(l)try{t.value=JSON.parse(l)}catch{console.warn("Failed to load saved ID format")}u.modelValue||(p.value=E(),D()),C.value=[{id:1,workOrderId:"WO-1244",createdAt:new Date(Date.now()-864e5).toISOString()},{id:2,workOrderId:"WO-1243",createdAt:new Date(Date.now()-1728e5).toISOString()},{id:3,workOrderId:"WO-1242",createdAt:new Date(Date.now()-2592e5).toISOString()}]}),se(()=>u.modelValue,l=>{p.value=l}),(l,e)=>(m(),c("div",ne,[a("div",de,[a("div",ue,[a("div",null,[e[7]||(e[7]=a("h4",{class:"text-sm font-medium text-blue-900"},"Work Order ID",-1)),a("p",ie,i(p.value||"Auto-generated"),1)]),a("div",ce,[s(n(x),{variant:"outline",size:"sm",onClick:M,disabled:O.disabled||!_.value},{default:f(()=>e[8]||(e[8]=[a("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),y(" Regenerate ",-1)])),_:1,__:[8]},8,["disabled"]),s(n(x),{variant:"ghost",size:"sm",onClick:F},{default:f(()=>e[9]||(e[9]=[a("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"}),a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"})],-1),y(" Customize ",-1)])),_:1,__:[9]})])])]),O.allowManualEntry?(m(),c("div",me,[e[12]||(e[12]=a("h4",{class:"text-sm font-medium text-yellow-900 mb-2"},"Manual ID Entry",-1)),a("div",pe,[s(n(R),{modelValue:v.value,"onUpdate:modelValue":e[0]||(e[0]=o=>v.value=o),placeholder:"Enter custom ID...",disabled:O.disabled,class:"flex-1"},null,8,["modelValue","disabled"]),s(n(x),{onClick:J,disabled:!v.value||O.disabled},{default:f(()=>e[10]||(e[10]=[y(" Use This ID ",-1)])),_:1,__:[10]},8,["disabled"]),s(n(x),{variant:"secondary",onClick:K},{default:f(()=>e[11]||(e[11]=[y(" Cancel ",-1)])),_:1,__:[11]})]),e[13]||(e[13]=a("p",{class:"text-xs text-yellow-700 mt-2"}," Warning: Manual IDs should follow your organization's numbering convention ",-1))])):A("",!0),k.value?(m(),c("div",ve,[e[19]||(e[19]=a("h4",{class:"text-sm font-medium text-gray-900 mb-3"},"ID Format Configuration",-1)),a("div",ge,[s(n(W),{modelValue:t.value.template,"onUpdate:modelValue":[e[1]||(e[1]=o=>t.value.template=o),b],label:"Template",options:T},null,8,["modelValue"]),s(n(W),{modelValue:t.value.counterType,"onUpdate:modelValue":[e[2]||(e[2]=o=>t.value.counterType=o),b],label:"Counter Type",options:j},null,8,["modelValue"])]),a("div",fe,[s(n(R),{modelValue:t.value.prefix,"onUpdate:modelValue":e[3]||(e[3]=o=>t.value.prefix=o),label:"Prefix",placeholder:"WO",onInput:b},null,8,["modelValue"]),s(n(R),{modelValue:t.value.counterLength,"onUpdate:modelValue":e[4]||(e[4]=o=>t.value.counterLength=o),modelModifiers:{number:!0},label:"Counter Length",type:"number",min:"1",max:"10",onInput:b},null,8,["modelValue"]),s(n(R),{modelValue:t.value.separator,"onUpdate:modelValue":e[5]||(e[5]=o=>t.value.separator=o),label:"Separator",placeholder:"-",onInput:b},null,8,["modelValue"])]),t.value.template==="custom"?(m(),c("div",ye,[s(n(R),{modelValue:t.value.customPattern,"onUpdate:modelValue":e[6]||(e[6]=o=>t.value.customPattern=o),label:"Custom Pattern",placeholder:"{PREFIX}{SEPARATOR}{YEAR}{MONTH}{SEPARATOR}{COUNTER}",onInput:b},null,8,["modelValue"]),e[14]||(e[14]=a("p",{class:"text-xs text-gray-600 mt-1"}," Available tokens: {PREFIX}, {SEPARATOR}, {YEAR}, {MONTH}, {DAY}, {COUNTER}, {CATEGORY}, {LOCATION} ",-1))])):A("",!0),a("div",xe,[a("div",be,[e[15]||(e[15]=a("span",{class:"text-sm text-gray-600"},"Preview:",-1)),a("span",we,i(B.value),1)])]),a("div",Oe,[s(n(x),{onClick:Q},{default:f(()=>e[16]||(e[16]=[y("Save Format",-1)])),_:1,__:[16]}),s(n(x),{variant:"secondary",onClick:Z},{default:f(()=>e[17]||(e[17]=[y("Reset to Default",-1)])),_:1,__:[17]}),s(n(x),{variant:"ghost",onClick:F},{default:f(()=>e[18]||(e[18]=[y("Cancel",-1)])),_:1,__:[18]})])])):A("",!0),k.value?A("",!0):(m(),c("div",ke,[e[20]||(e[20]=a("h4",{class:"text-sm font-medium text-gray-900 mb-2"},"Format Examples",-1)),a("div",Ce,[(m(),c(N,null,Y(z,o=>a("div",{key:o.name,class:"p-2 bg-gray-50 rounded border cursor-pointer hover:bg-gray-100 transition-colors",onClick:g=>ee(o)},[a("div",Ie,i(o.name),1),a("div",Se,i(o.preview),1)],8,$e)),64))])])),C.value.length>0?(m(),c("div",he,[e[21]||(e[21]=a("h4",{class:"text-sm font-medium text-gray-900 mb-2"},"Recent IDs",-1)),a("div",Pe,[(m(!0),c(N,null,Y(C.value.slice(0,5),o=>(m(),c("div",{key:o.id,class:"flex items-center justify-between text-sm p-2 bg-gray-50 rounded"},[a("span",Ae,i(o.workOrderId),1),a("span",Re,i(te(o.createdAt)),1)]))),128))])])):A("",!0),a("div",De,[e[26]||(e[26]=a("h4",{class:"text-sm font-medium text-gray-900 mb-3"},"ID Statistics",-1)),a("div",Te,[a("div",null,[e[22]||(e[22]=a("span",{class:"text-gray-600"},"Current Format:",-1)),a("span",Ve,i(G.value.name),1)]),a("div",null,[e[23]||(e[23]=a("span",{class:"text-gray-600"},"Next Counter:",-1)),a("span",_e,i(V.value),1)]),a("div",null,[e[24]||(e[24]=a("span",{class:"text-gray-600"},"Total Generated:",-1)),a("span",Ee,i(H.value),1)]),a("div",null,[e[25]||(e[25]=a("span",{class:"text-gray-600"},"This Month:",-1)),a("span",Me,i(q.value),1)])])])]))}},Le=le(Fe,[["__scopeId","data-v-f0d78cff"]]);export{Le as W}; diff --git a/frontend/dist/assets/WorkOrdersCalendarView-XWSDIuv_.js b/frontend/dist/assets/WorkOrdersCalendarView-Dr2kGEQk.js similarity index 94% rename from frontend/dist/assets/WorkOrdersCalendarView-XWSDIuv_.js rename to frontend/dist/assets/WorkOrdersCalendarView-Dr2kGEQk.js index e708b17d..b2309927 100644 --- a/frontend/dist/assets/WorkOrdersCalendarView-XWSDIuv_.js +++ b/frontend/dist/assets/WorkOrdersCalendarView-Dr2kGEQk.js @@ -1 +1 @@ -import{_ as Me,r as W,c as _,m as Ke,o as Ae,a as u,g as d,b as e,d as m,t as c,w as h,e as s,F as O,k,af as C,aQ as E,n as ye,j as v,Q as de,h as Ye,i as ce,aV as Qe,s as Je,v as Xe}from"./index-BUdRbiwj.js";import{u as Ze}from"./useWorkOrders-B61P5JA7.js";import{u as et}from"./useFormAutoSave-Jaawgo91.js";import{F as tt,a as st}from"./FPPageHeader-CTG2L28r.js";import{F as U}from"./FPSelect-C7p47Ma2.js";import{F as Ie}from"./FPModal-DWGF1LV8.js";import{F as Q}from"./FPBadge-BKY5dPnL.js";import{u as ot}from"./useUniversalCalendar-2CJQgaXx.js";import{T as rt,P as at,A as lt}from"./AudioRecorder-CcKMXbWt.js";import{T as nt}from"./TimeTracker-Ch4gtOrh.js";import{C as it,S as dt}from"./StatusHistory-DeozEdNs.js";import{W as ut}from"./WorkOrderIdGenerator-BPGN0soM.js";import{R as ct}from"./ReportGenerator-CjXdt1Qp.js";import{F as ue}from"./FPInput-CzR_dWoe.js";import{F as mt}from"./FPCheckbox-Bu8jNAEW.js";import{F as pt}from"./FPTabs-R71V25QN.js";import{F as $e}from"./FPFileUpload-D2coSbjN.js";import{_ as vt}from"./FormRestoreNotification-DYBlXhOP.js";import"./workOrder-jNxj_kjQ.js";import"./usePreventiveMaintenanceDisplay-Bhncwa9c.js";const gt={class:"universal-calendar"},ft={class:"mb-6"},yt={class:"flex items-center justify-between mb-4"},xt={class:"flex items-center space-x-4"},ht={class:"text-xl font-semibold text-gray-900"},kt={class:"flex items-center space-x-2"},bt={class:"flex flex-wrap items-center gap-3"},wt={class:"flex items-center bg-gray-100 rounded-lg p-1"},_t=["onClick"],Dt={class:"mb-4 text-center"},Ct={class:"text-lg font-medium text-gray-900"},Et={class:"bg-white border border-gray-200 rounded-lg overflow-hidden shadow-sm"},St={key:0,class:"month-view"},Vt={class:"grid grid-cols-7 bg-gray-50 border-b border-gray-200"},Tt={class:"grid grid-cols-7"},Pt={class:"flex items-center justify-between mb-1"},Ot={key:0,class:"text-xs text-gray-500"},$t={class:"space-y-1"},Mt=["onClick"],At={class:"flex-1 min-w-0"},It={class:"font-medium truncate"},Nt={class:"text-xs opacity-75"},Ut=["onClick"],Rt={key:1,class:"week-view"},Ft={class:"grid grid-cols-8 bg-gray-50 border-b border-gray-200"},Wt={class:"text-sm font-medium text-gray-700"},Lt={class:"grid grid-cols-8"},Bt={class:"border-r border-gray-200"},zt=["onClick"],Ht=["onClick"],jt={class:"font-medium truncate"},Gt={class:"text-xs opacity-75"},qt={key:2,class:"list-view p-4"},Kt={class:"space-y-3"},Yt=["onClick"],Qt={class:"flex items-center space-x-4"},Jt={class:"min-w-0 flex-1"},Xt={class:"font-medium text-gray-900"},Zt={class:"text-sm text-gray-600"},es={class:"flex items-center mt-2 space-x-4 text-xs text-gray-500"},ts={key:0},ss={key:1},os={key:2},rs={key:3},as={class:"flex items-center space-x-4 text-sm text-gray-500"},ls={class:"font-medium"},ns={class:"text-xs"},is={key:0,class:"text-center py-12 text-gray-500"},ds={key:0,class:"space-y-4"},us={class:"flex items-center space-x-2"},cs={class:"grid grid-cols-2 gap-4 text-sm"},ms={key:0},ps={key:1},vs={key:2},gs={key:3},fs={key:4},ys={key:0},xs={class:"mt-1 text-gray-700"},hs={key:1},ks={class:"mt-1 text-gray-700 whitespace-pre-wrap"},bs={key:2,class:"border-t pt-4"},ws={class:"mt-6 p-4 bg-gray-50 rounded-lg"},_s={class:"flex flex-wrap gap-4 text-sm"},Ds={__name:"UniversalCalendar",props:{title:{type:String,default:"Calendar"},showWorkOrders:{type:Boolean,default:!0},showPreventiveMaintenance:{type:Boolean,default:!0},showAssetInspections:{type:Boolean,default:!1},showScheduledDowntime:{type:Boolean,default:!1}},emits:["create-work-order","edit-work-order","create-pm-schedule","edit-pm-schedule","generate-work-order-from-pm","create-event-at-time"],setup(xe,{emit:G}){const T=xe,S=G,{currentDate:y,currentView:o,selectedEvent:p,showEventModal:L,allCalendarEvents:he,eventTypes:me,getEventsForDate:ke,refreshCalendarData:N,handleEventClick:be}=ot(),D=W({eventType:"",status:"",priority:""}),we=[{key:"month",label:"Month"},{key:"week",label:"Week"},{key:"list",label:"List"}],J=["8:00","9:00","10:00","11:00","12:00","13:00","14:00","15:00","16:00","17:00"],_e=_(()=>{if(o.value==="month")return y.value.toLocaleDateString("en-US",{month:"long",year:"numeric"});if(o.value==="week"){const n=ve(y.value),a=new Date(n);return a.setDate(a.getDate()+6),`${n.toLocaleDateString("en-US",{month:"short",day:"numeric"})} - ${a.toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"})}`}return T.title}),De=_(()=>o.value==="month"?["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]:[]),B=_(()=>{if(o.value==="week"){const n=ve(y.value),a=[];for(let g=0;g<7;g++){const w=new Date(n);w.setDate(w.getDate()+g),a.push({date:w.toISOString().split("T")[0],dayName:w.toLocaleDateString("en-US",{weekday:"short"}),dayNumber:w.getDate(),isToday:R(w)})}return a}return[]}),pe=_(()=>{if(o.value!=="month")return[];const n=y.value.getFullYear(),a=y.value.getMonth(),g=new Date(n,a,1),w=new Date(g);w.setDate(w.getDate()-g.getDay());const i=[],f=new Date(w);for(let F=0;F<42;F++)i.push({date:f.toISOString().split("T")[0],dayNumber:f.getDate(),isCurrentMonth:f.getMonth()===a,isToday:R(f)}),f.setDate(f.getDate()+1);return i}),X=_(()=>{let n=he.value;return n=n.filter(a=>{const g=a.extendedProps.type;return!(g==="WORK_ORDER"&&!T.showWorkOrders||g==="PREVENTIVE_MAINTENANCE"&&!T.showPreventiveMaintenance||g==="ASSET_INSPECTION"&&!T.showAssetInspections||g==="SCHEDULED_DOWNTIME"&&!T.showScheduledDowntime)}),D.value.eventType&&(n=n.filter(a=>a.extendedProps.type===D.value.eventType)),D.value.status&&(n=n.filter(a=>a.extendedProps.status===D.value.status)),D.value.priority&&(n=n.filter(a=>a.extendedProps.priority===D.value.priority)),n}),Ce=_(()=>[{value:"",label:"All Events"},...T.showWorkOrders?[{value:"WORK_ORDER",label:"Work Orders"}]:[],...T.showPreventiveMaintenance?[{value:"PREVENTIVE_MAINTENANCE",label:"Preventive Maintenance"}]:[],...T.showAssetInspections?[{value:"ASSET_INSPECTION",label:"Asset Inspections"}]:[],...T.showScheduledDowntime?[{value:"SCHEDULED_DOWNTIME",label:"Scheduled Downtime"}]:[]]),Z=_(()=>[{value:"",label:"All Statuses"},{value:"OPEN",label:"Open"},{value:"IN_PROGRESS",label:"In Progress"},{value:"COMPLETED",label:"Completed"},{value:"ON_HOLD",label:"On Hold"},{value:"CANCELLED",label:"Cancelled"},{value:"ACTIVE",label:"Active"},{value:"PAUSED",label:"Paused"},{value:"INACTIVE",label:"Inactive"}]),ee=_(()=>[{value:"",label:"All Priorities"},{value:"LOW",label:"Low"},{value:"MEDIUM",label:"Medium"},{value:"HIGH",label:"High"},{value:"CRITICAL",label:"Critical"}]),q=()=>{o.value==="month"?y.value=new Date(y.value.getFullYear(),y.value.getMonth()-1,1):o.value==="week"&&(y.value=new Date(y.value.getTime()-7*24*60*60*1e3)),N()},Ee=()=>{o.value==="month"?y.value=new Date(y.value.getFullYear(),y.value.getMonth()+1,1):o.value==="week"&&(y.value=new Date(y.value.getTime()+7*24*60*60*1e3)),N()},te=()=>{y.value=new Date,N()},$=n=>ke(new Date(n)),se=n=>$(n).length,K=(n,a)=>$(n).filter(g=>g.id.replace(/\D/g,"")%J.length==a),M=n=>{be({event:{id:n.id,title:n.title,start:n.start,end:n.end,extendedProps:n.extendedProps}})},V=()=>{L.value=!1,p.value=null},z=()=>{if(p.value){const n=p.value.extendedProps.type,a=p.value.extendedProps.originalData;n==="WORK_ORDER"?S("edit-work-order",a.id):n==="PREVENTIVE_MAINTENANCE"&&S("edit-pm-schedule",a.id),V()}},b=(n,a)=>{S("create-event-at-time",{date:n,time:a})},A=()=>{if(p.value&&p.value.extendedProps.type==="PREVENTIVE_MAINTENANCE"){const n=p.value.extendedProps.originalData;S("generate-work-order-from-pm",n.id),V()}},H=n=>{console.log("Show day details for:",n)},j=()=>{},R=n=>{const a=new Date;return n.toDateString()===a.toDateString()},ve=n=>{const a=new Date(n);return a.setDate(a.getDate()-a.getDay()),a.setHours(0,0,0,0),a},oe=n=>n?new Date(n).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}):"",re=n=>n?new Date(n).toLocaleTimeString("en-US",{hour:"numeric",minute:"2-digit"}):"",ae=n=>n?n.charAt(0)+n.slice(1).toLowerCase():"N/A",le=n=>n?n.replace("_"," ").toLowerCase().replace(/\b\w/g,a=>a.toUpperCase()):"N/A",ge=n=>{if(!n)return"N/A";const a=Math.floor(n/60),g=n%60;return a>0?g>0?`${a}h ${g}m`:`${a}h`:`${g}m`},Y=n=>{var a;return((a=me[n])==null?void 0:a.label)||n},ne=n=>({WORK_ORDER:"primary",PREVENTIVE_MAINTENANCE:"success",ASSET_INSPECTION:"warning",SCHEDULED_DOWNTIME:"error"})[n]||"secondary",fe=n=>({LOW:"secondary",MEDIUM:"primary",HIGH:"warning",CRITICAL:"error"})[n]||"secondary",Se=n=>({OPEN:"primary",IN_PROGRESS:"warning",COMPLETED:"success",ON_HOLD:"warning",CANCELLED:"secondary",ACTIVE:"success",PAUSED:"warning",INACTIVE:"secondary"})[n]||"secondary",ie=n=>{if(!n)return"Unassigned";if(Array.isArray(n)){if(n.length===0)return"Unassigned";const a=n[0],g=`${a.firstName} ${a.lastName}`;return n.length>1?`${g} +${n.length-1}`:g}return`${n.firstName} ${n.lastName}`};return Ke(o,()=>{N()}),Ae(()=>{N()}),(n,a)=>{var g,w;return d(),u("div",gt,[e("div",ft,[e("div",yt,[e("div",xt,[e("h2",ht,c(xe.title),1),e("div",kt,[m(s(O),{variant:"outline",size:"sm",onClick:q},{default:h(()=>a[4]||(a[4]=[e("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 19l-7-7 7-7"})],-1)])),_:1,__:[4]}),m(s(O),{variant:"outline",size:"sm",onClick:te},{default:h(()=>a[5]||(a[5]=[k(" Today ",-1)])),_:1,__:[5]}),m(s(O),{variant:"outline",size:"sm",onClick:Ee},{default:h(()=>a[6]||(a[6]=[e("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5l7 7-7 7"})],-1)])),_:1,__:[6]})])])]),e("div",bt,[e("div",wt,[(d(),u(C,null,E(we,i=>e("button",{key:i.key,onClick:f=>o.value=i.key,class:ye(["px-3 py-1 text-sm font-medium rounded-md transition-colors",{"bg-white text-gray-900 shadow":s(o)===i.key,"text-gray-600 hover:text-gray-900":s(o)!==i.key}])},c(i.label),11,_t)),64))]),m(s(U),{modelValue:D.value.eventType,"onUpdate:modelValue":[a[0]||(a[0]=i=>D.value.eventType=i),j],placeholder:"All Events",options:Ce.value,size:"sm"},null,8,["modelValue","options"]),m(s(U),{modelValue:D.value.status,"onUpdate:modelValue":[a[1]||(a[1]=i=>D.value.status=i),j],placeholder:"All Statuses",options:Z.value,size:"sm"},null,8,["modelValue","options"]),m(s(U),{modelValue:D.value.priority,"onUpdate:modelValue":[a[2]||(a[2]=i=>D.value.priority=i),j],placeholder:"All Priorities",options:ee.value,size:"sm"},null,8,["modelValue","options"])])]),e("div",Dt,[e("h3",Ct,c(_e.value),1)]),e("div",Et,[s(o)==="month"?(d(),u("div",St,[e("div",Vt,[(d(!0),u(C,null,E(De.value,i=>(d(),u("div",{key:i,class:"p-3 text-center text-sm font-medium text-gray-700"},c(i),1))),128))]),e("div",Tt,[(d(!0),u(C,null,E(pe.value,i=>(d(),u("div",{key:i.date,class:ye(["min-h-[120px] border-r border-b border-gray-200 p-2",{"bg-gray-50":!i.isCurrentMonth,"bg-blue-50":i.isToday}])},[e("div",Pt,[e("span",{class:ye(["text-sm font-medium",{"text-gray-400":!i.isCurrentMonth,"text-blue-600 bg-blue-100 w-6 h-6 rounded-full flex items-center justify-center":i.isToday,"text-gray-900":i.isCurrentMonth&&!i.isToday}])},c(i.dayNumber),3),se(i.date)?(d(),u("span",Ot,c(se(i.date)),1)):v("",!0)]),e("div",$t,[(d(!0),u(C,null,E($(i.date).slice(0,3),f=>(d(),u("div",{key:f.id,class:"p-1 rounded text-xs cursor-pointer hover:opacity-80 transition-opacity flex items-center space-x-1",style:de({backgroundColor:f.backgroundColor,color:f.textColor}),onClick:F=>M(f)},[e("div",{class:"flex-shrink-0 w-2 h-2 rounded-full",style:de({backgroundColor:f.borderColor})},null,4),e("div",At,[e("div",It,c(f.title),1),e("div",Nt,c(Y(f.extendedProps.type)),1)])],12,Mt))),128)),$(i.date).length>3?(d(),u("div",{key:0,class:"text-xs text-gray-500 text-center cursor-pointer hover:text-gray-700",onClick:f=>H(i.date)}," +"+c($(i.date).length-3)+" more ",9,Ut)):v("",!0)])],2))),128))])])):s(o)==="week"?(d(),u("div",Rt,[e("div",Ft,[a[7]||(a[7]=e("div",{class:"p-3"},null,-1)),(d(!0),u(C,null,E(B.value,i=>(d(),u("div",{key:i.date,class:"p-3 text-center border-l border-gray-200"},[e("div",Wt,c(i.dayName),1),e("div",{class:ye(["text-lg font-semibold mt-1",{"text-blue-600 bg-blue-100 w-8 h-8 rounded-full flex items-center justify-center mx-auto":i.isToday,"text-gray-900":!i.isToday}])},c(i.dayNumber),3)]))),128))]),e("div",Lt,[e("div",Bt,[(d(),u(C,null,E(J,i=>e("div",{key:i,class:"h-16 border-b border-gray-200 p-2 text-xs text-gray-500"},c(i),1)),64))]),(d(!0),u(C,null,E(B.value,i=>(d(),u("div",{key:i.date,class:"border-r border-gray-200 relative"},[(d(),u(C,null,E(J,(f,F)=>e("div",{key:f,class:"h-16 border-b border-gray-200 p-1 cursor-pointer hover:bg-gray-50",onClick:I=>b(i.date,f)},[(d(!0),u(C,null,E(K(i.date,F),I=>(d(),u("div",{key:I.id,class:"absolute z-10 left-1 right-1 p-1 rounded text-xs cursor-pointer",style:de({backgroundColor:I.backgroundColor,borderLeft:`4px solid ${I.borderColor}`,color:I.textColor,top:`${F*64+4}px`,height:"56px"}),onClick:Ye(Ve=>M(I),["stop"])},[e("div",jt,c(I.title),1),e("div",Gt,c(Y(I.extendedProps.type)),1)],12,Ht))),128))],8,zt)),64))]))),128))])])):s(o)==="list"?(d(),u("div",qt,[e("div",Kt,[(d(!0),u(C,null,E(X.value,i=>(d(),u("div",{key:i.id,class:"flex items-center justify-between p-4 border border-gray-200 rounded-lg hover:border-gray-300 transition-colors cursor-pointer",onClick:f=>M(i)},[e("div",Qt,[e("div",{class:"w-4 h-4 rounded-full flex-shrink-0",style:de({backgroundColor:i.borderColor})},null,4),e("div",Jt,[e("h4",Xt,c(i.title),1),e("p",Zt,c(Y(i.extendedProps.type)),1),e("div",es,[i.extendedProps.priority?(d(),u("span",ts," Priority: "+c(ae(i.extendedProps.priority)),1)):v("",!0),i.extendedProps.status?(d(),u("span",ss," Status: "+c(le(i.extendedProps.status)),1)):v("",!0),i.extendedProps.location?(d(),u("span",os," Location: "+c(i.extendedProps.location),1)):v("",!0),i.extendedProps.assetName?(d(),u("span",rs," Asset: "+c(i.extendedProps.assetName),1)):v("",!0)])])]),e("div",as,[e("div",null,[e("div",ls,c(oe(i.start)),1),e("div",ns,c(re(i.start)),1)]),m(s(Q),{variant:fe(i.extendedProps.priority)},{default:h(()=>[k(c(ae(i.extendedProps.priority)),1)]),_:2},1032,["variant"])])],8,Yt))),128))]),X.value.length===0?(d(),u("div",is,a[8]||(a[8]=[e("svg",{class:"w-12 h-12 mx-auto mb-4 text-gray-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"})],-1),e("p",null,"No events found for the selected period",-1)]))):v("",!0)])):v("",!0)]),m(s(Ie),{modelValue:s(L),"onUpdate:modelValue":a[3]||(a[3]=i=>Qe(L)?L.value=i:null),title:((g=s(p))==null?void 0:g.title)||"Event Details",size:"lg",onConfirm:z,onCancel:V,"confirm-text":((w=s(p))==null?void 0:w.extendedProps.type)==="WORK_ORDER"?"Edit Work Order":"Edit Schedule","cancel-text":"Close"},{default:h(()=>[s(p)?(d(),u("div",ds,[e("div",us,[m(s(Q),{variant:ne(s(p).extendedProps.type)},{default:h(()=>[k(c(Y(s(p).extendedProps.type)),1)]),_:1},8,["variant"]),s(p).extendedProps.priority?(d(),ce(s(Q),{key:0,variant:fe(s(p).extendedProps.priority)},{default:h(()=>[k(c(ae(s(p).extendedProps.priority)),1)]),_:1},8,["variant"])):v("",!0),s(p).extendedProps.status?(d(),ce(s(Q),{key:1,variant:Se(s(p).extendedProps.status)},{default:h(()=>[k(c(le(s(p).extendedProps.status)),1)]),_:1},8,["variant"])):v("",!0)]),e("div",cs,[e("div",null,[a[9]||(a[9]=e("strong",null,"Start:",-1)),k(" "+c(oe(s(p).start))+" "+c(re(s(p).start)),1)]),e("div",null,[a[10]||(a[10]=e("strong",null,"End:",-1)),k(" "+c(oe(s(p).end))+" "+c(re(s(p).end)),1)]),s(p).extendedProps.location?(d(),u("div",ms,[a[11]||(a[11]=e("strong",null,"Location:",-1)),k(" "+c(s(p).extendedProps.location),1)])):v("",!0),s(p).extendedProps.assetName?(d(),u("div",ps,[a[12]||(a[12]=e("strong",null,"Asset:",-1)),k(" "+c(s(p).extendedProps.assetName),1)])):v("",!0),s(p).extendedProps.type==="WORK_ORDER"&&s(p).extendedProps.assignedTo?(d(),u("div",vs,[a[13]||(a[13]=e("strong",null,"Assigned To:",-1)),k(" "+c(ie(s(p).extendedProps.assignedTo)),1)])):v("",!0),s(p).extendedProps.type==="PREVENTIVE_MAINTENANCE"&&s(p).extendedProps.frequency?(d(),u("div",gs,[a[14]||(a[14]=e("strong",null,"Frequency:",-1)),k(" "+c(s(p).extendedProps.frequency),1)])):v("",!0),s(p).extendedProps.estimatedDuration?(d(),u("div",fs,[a[15]||(a[15]=e("strong",null,"Duration:",-1)),k(" "+c(ge(s(p).extendedProps.estimatedDuration)),1)])):v("",!0)]),s(p).extendedProps.description?(d(),u("div",ys,[a[16]||(a[16]=e("strong",null,"Description:",-1)),e("p",xs,c(s(p).extendedProps.description),1)])):v("",!0),s(p).extendedProps.instructions?(d(),u("div",hs,[a[17]||(a[17]=e("strong",null,"Instructions:",-1)),e("p",ks,c(s(p).extendedProps.instructions),1)])):v("",!0),s(p).extendedProps.type==="PREVENTIVE_MAINTENANCE"?(d(),u("div",bs,[m(s(O),{variant:"secondary",size:"sm",onClick:A},{default:h(()=>a[18]||(a[18]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5H7a2 2 0 00-2 2v10a2 2 0 002 2h8a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"})],-1),k(" Generate Work Order ",-1)])),_:1,__:[18]})])):v("",!0)])):v("",!0)]),_:1},8,["modelValue","title","confirm-text"]),e("div",ws,[a[19]||(a[19]=e("h4",{class:"text-sm font-medium text-gray-900 mb-3"},"Event Types",-1)),e("div",_s,[(d(!0),u(C,null,E(s(me),(i,f)=>(d(),u("div",{key:f,class:"flex items-center space-x-2"},[e("div",{class:"w-3 h-3 rounded",style:de({backgroundColor:i.color})},null,4),e("span",null,c(i.label),1)]))),128))])])])}}},Cs=Me(Ds,[["__scopeId","data-v-196ae05f"]]),Es={class:"p-6"},Ss={class:"grid grid-cols-1 md:grid-cols-4 gap-4 mb-6"},Vs={class:"bg-white p-4 rounded-lg border border-gray-200"},Ts={class:"flex items-center"},Ps={class:"ml-4"},Os={class:"text-2xl font-bold text-gray-900"},$s={class:"bg-white p-4 rounded-lg border border-gray-200"},Ms={class:"flex items-center"},As={class:"ml-4"},Is={class:"text-2xl font-bold text-gray-900"},Ns={class:"bg-white p-4 rounded-lg border border-gray-200"},Us={class:"flex items-center"},Rs={class:"ml-4"},Fs={class:"text-2xl font-bold text-gray-900"},Ws={class:"bg-white p-4 rounded-lg border border-gray-200"},Ls={class:"flex items-center"},Bs={class:"ml-4"},zs={class:"text-2xl font-bold text-gray-900"},Hs={class:"mt-8 grid grid-cols-1 lg:grid-cols-3 gap-6"},js={class:"space-y-6"},Gs={class:"bg-white border border-gray-200 rounded-lg overflow-hidden"},qs={class:"divide-y divide-gray-200"},Ks=["onClick"],Ys={class:"flex items-start justify-between"},Qs={class:"flex-1 min-w-0"},Js={class:"text-sm font-medium text-gray-900 truncate"},Xs={class:"text-xs text-gray-500 mt-1"},Zs={class:"flex items-center mt-2"},eo={class:"ml-2 text-xs text-gray-500"},to={class:"ml-2 text-xs text-gray-400"},so={key:0,class:"p-4 text-center text-gray-500 text-sm"},oo={class:"bg-white border border-gray-200 rounded-lg overflow-hidden"},ro={class:"divide-y divide-gray-200"},ao=["onClick"],lo={class:"flex items-center justify-between"},no={class:"flex-1 min-w-0"},io={class:"text-sm font-medium text-gray-900 truncate"},uo={class:"text-xs text-gray-500 mt-1"},co={key:0,class:"p-4 text-center text-gray-500 text-sm"},mo={class:"border-b border-gray-200 mb-6"},po={class:"min-h-[400px]"},vo={key:0,class:"space-y-4"},go={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},fo={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},yo={class:"mt-6 border-t pt-6"},xo={key:1,class:"space-y-4"},ho={key:2,class:"space-y-4"},ko={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},bo={class:"mt-6 border-t pt-6"},wo={key:3,class:"space-y-4"},_o={key:4,class:"space-y-6"},Do={class:"border-2 border-dashed border-gray-300 rounded-lg p-6 text-center hover:border-gray-400 transition-colors"},Co={class:"mt-4"},Eo={class:"cursor-pointer"},So={key:0,class:"mt-4 space-y-2"},Vo={class:"flex items-center"},To={class:"text-sm font-medium text-gray-900"},Po={class:"text-xs text-gray-500"},Oo={class:"mt-2 text-xs text-gray-500"},$o={class:"mt-2"},Mo={key:5,class:"space-y-4"},Ao={class:"mt-6 border-t pt-6"},Io={class:"mt-6 border-t pt-6"},No={class:"mt-6 border-t pt-6"},Uo={class:"flex items-center justify-between"},Ro={class:"flex items-center space-x-4"},Fo={key:0,class:"flex items-center text-sm text-gray-500"},Wo={key:0,class:"w-4 h-4 mr-2 text-amber-500 animate-pulse",fill:"currentColor",viewBox:"0 0 20 20"},Lo={key:1,class:"w-4 h-4 mr-2 text-green-500",fill:"currentColor",viewBox:"0 0 20 20"},Bo={key:2},zo={key:3},Ho={class:"flex space-x-3"},jo={__name:"WorkOrdersCalendarView",setup(xe){const G=Xe(),T=Je(),{loading:S,workOrders:y,workOrderForm:o,uploadingFiles:p,uploadProgress:L,priorityOptions:he,assetOptions:me,locationOptions:ke,userOptions:N,teamOptions:be,categoryOptions:D,searchWorkOrders:we,createWorkOrder:J,updateWorkOrder:_e,loadDropdownOptions:De,resetForm:B,formatStatus:pe,getStatusBadge:X,markUserInteraction:Ce,finishInitialization:Z,WORK_ORDER_STATUS:ee}=Ze(),{hasUnsavedChanges:q,restoreFormData:Ee,clearSavedData:te,hasSavedData:$,getSavedDataInfo:se,lastSaveTime:K}=et(o,{storageKey:"atlas_work_order_form_data",saveInterval:3e3,excludeFields:[]}),M=W(!1),V=W("create"),z=W(null),b=W("basic"),A=W(null),H=W(!1),j=W(null),R=[{key:"basic",label:"Basic Info"},{key:"assignment",label:"Assignment"},{key:"scheduling",label:"Scheduling"},{key:"parts",label:"Parts"},{key:"attachments",label:"Attachments"},{key:"options",label:"Options"}],ve=_(()=>{const l=V.value==="create"?"Create Work Order":"Edit Work Order";return q.value?`${l} (unsaved changes)`:l}),oe=_(()=>{const l=new Date,t=new Date(l.getTime()+7*24*60*60*1e3);return y.value.filter(r=>{if(!r.dueDate)return!1;const x=new Date(r.dueDate);return x>=l&&x<=t}).length}),re=_(()=>{const l=new Date;return y.value.filter(t=>t.dueDate?new Date(t.dueDate){const l=new Date,t=new Date(l.getFullYear(),l.getMonth(),1);return y.value.filter(r=>r.status!==ee.COMPLETE||!r.completedAt?!1:new Date(r.completedAt)>=t).length}),le=_(()=>{const l=new Date;return y.value.filter(t=>!t.dueDate||t.status===ee.COMPLETE?!1:new Date(t.dueDate)>l).sort((t,r)=>new Date(t.dueDate)-new Date(r.dueDate)).slice(0,5)}),ge=_(()=>{const l=new Date().toDateString();return y.value.filter(t=>t.dueDate?new Date(t.dueDate).toDateString()===l:!1)}),Y=_(()=>{if(!K.value)return"";const l=new Date,t=new Date(K.value),r=l-t,x=Math.floor(r/(60*1e3));return x<1?"just now":x===1?"1 minute ago":x<60?`${x} minutes ago`:t.toLocaleTimeString()}),ne=async()=>{await we()},fe=()=>{console.log("Export calendar")},Se=()=>{V.value="create",z.value=null,b.value="basic",Ve(),$()||(B(),Te(),Z()),M.value=!0},ie=l=>{const t=y.value.find(r=>r.id===l);t&&(V.value="edit",z.value=l,b.value="basic",Object.assign(o,t),Z(),M.value=!0)},n=()=>{G.push("/maintenance/preventive?create=true")},a=l=>{G.push(`/maintenance/preventive/${l}`)},g=l=>{G.push(`/work-orders?create=true&pmScheduleId=${l}`)},w=l=>{V.value="create",z.value=null,b.value="basic",Ve(),$()?l.date&&!o.dueDate&&(o.dueDate=l.date):(B(),l.date&&(o.dueDate=l.date),Te()),M.value=!0},i=()=>{te(),M.value=!1,B(),H.value=!1},f=async()=>{try{V.value==="create"?await J():await _e(z.value,o),te(),i(),await ne()}catch(l){console.error("Failed to save work order:",l)}},F=l=>l?new Date(l).toLocaleDateString("en-US",{month:"short",day:"numeric"}):"",I=l=>{if(!l)return"";const x=new Date(l)-new Date,P=Math.ceil(x/(1e3*60*60*24));return P===0?"Today":P===1?"Tomorrow":P===-1?"Yesterday":P>0?`In ${P} days`:`${Math.abs(P)} days ago`},Ve=()=>{console.log("Checking for saved data...",{modalMode:V.value,hasSaved:$(),savedInfo:se()}),V.value==="create"&&$()?(j.value=se(),H.value=!0,console.log("Showing restore notification with data:",j.value)):console.log("No saved data found or not in create mode")},Ne=()=>{var l,t,r;Ee()&&(H.value=!1,Ce(),console.log("Form data restored successfully"),((l=o.audioRecordings)!=null&&l.some(x=>x._hadBlobUrl)||(t=o.image)!=null&&t._isFile||(r=o.files)!=null&&r.some(x=>x._isFile))&&console.warn("Note: Audio recordings, images, and uploaded files cannot be restored after page refresh. Only metadata was preserved."))},Ue=()=>{H.value=!1,te(),B(),Te(),Z(),console.log("Auto-saved data dismissed and form reset")},Re=l=>{b.value=l},Pe=l=>{const t=R.findIndex(r=>r.key===b.value);l==="next"&&t0&&(b.value=R[t-1].key)},Fe=async l=>{console.log("Primary image uploaded:",l)},We=async l=>{console.log("Additional files uploaded:",l)},Le=l=>{const t=Array.from(l.target.files);if(!t.length)return;const r=t.map(x=>({...x,id:Date.now()+Math.random(),uploadedAt:new Date().toISOString(),uploadedBy:A.value}));o.files||(o.files=[]),o.files.push(...r),l.target.value=""},Be=l=>{o.files&&o.files[l]&&o.files.splice(l,1)},ze=l=>{if(!l)return"0 B";const t=["B","KB","MB","GB"],r=Math.floor(Math.log(l)/Math.log(1024));return`${Math.round(l/Math.pow(1024,r)*100)/100} ${t[r]}`},He=l=>{if(!l)return"just now";const t=new Date(l),x=new Date-t,P=Math.floor(x/(1e3*60));if(P<1)return"just now";if(P<60)return`${P}m ago`;const Oe=Math.floor(P/60);return Oe<24?`${Oe}h ago`:t.toLocaleDateString()},je=l=>{o.status=l.newStatus;const t={id:Date.now()+Math.random(),action:"STATUS_CHANGE",field:"status",oldValue:l.previousStatus,newValue:l.newStatus,user:l.user,timestamp:new Date().toISOString(),description:`Status changed from ${l.previousStatus} to ${l.newStatus}`};o.auditTrail||(o.auditTrail=[]),o.auditTrail.unshift(t),console.log("Status changed:",l)},Ge=l=>{console.log("Report generated:",l);const t={id:Date.now()+Math.random(),action:"REPORT_GENERATED",field:"report",newValue:l.name,user:A.value,timestamp:new Date().toISOString(),description:`Generated report: ${l.name}`};o.auditTrail||(o.auditTrail=[]),o.auditTrail.unshift(t)},qe=l=>{console.log("Recording saved:",l);const t={id:Date.now()+Math.random(),action:"AUDIO_RECORDED",field:"audioRecordings",newValue:l.title||"Untitled Recording",user:A.value,timestamp:new Date().toISOString(),description:`Added audio recording: ${l.title||"Untitled Recording"} (${Math.round(l.duration||0)}s)`};o.auditTrail||(o.auditTrail=[]),o.auditTrail.unshift(t)},Te=()=>{if(A.value&&!o.primaryUser&&(o.primaryUser=A.value.id),!o.estimatedStartDate){const l=new Date;l.setMinutes(l.getMinutes()-l.getTimezoneOffset()),o.estimatedStartDate=l.toISOString().slice(0,16)}o.files||(o.files=[]),o.audioRecordings||(o.audioRecordings=[]),o.tasks||(o.tasks=[]),o.parts||(o.parts=[])};return Ae(async()=>{try{if(await De(),await ne(),T.query.create==="true"){const l=T.query.assetId;setTimeout(()=>{l&&(o.assetId=parseInt(l)),Se(),G.replace({path:"/work-orders/calendar"})},500)}}catch(l){console.error("Failed to initialize work orders calendar view:",l)}}),(l,t)=>(d(),ce(tt,null,{header:h(()=>[m(st,{title:"Work Order Calendar",description:"Schedule and view work orders in calendar format",breadcrumbs:[{text:"Work Orders",to:"/work-orders"},{text:"Calendar",to:null}]},{actions:h(()=>[m(s(O),{variant:"outline",size:"sm",onClick:ne},{default:h(()=>t[25]||(t[25]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),k(" Refresh ",-1)])),_:1,__:[25]}),m(s(O),{variant:"outline",size:"sm",onClick:fe},{default:h(()=>t[26]||(t[26]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1),k(" Export ",-1)])),_:1,__:[26]})]),_:1})]),default:h(()=>[e("div",Es,[e("div",Ss,[e("div",Vs,[e("div",Ts,[t[28]||(t[28]=e("div",{class:"flex-shrink-0"},[e("svg",{class:"w-8 h-8 text-blue-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M8 7V3a1 1 0 011-1h6a1 1 0 011 1v4m4 0V9a2 2 0 00-2-2H6a2 2 0 00-2 2v10a2 2 0 002 2h12a2 2 0 002-2V9a2 2 0 00-2-2m-4 0H8"})])],-1)),e("div",Ps,[t[27]||(t[27]=e("div",{class:"text-sm font-medium text-gray-500"},"Total Work Orders",-1)),e("div",Os,c(s(y).length),1)])])]),e("div",$s,[e("div",Ms,[t[30]||(t[30]=e("div",{class:"flex-shrink-0"},[e("svg",{class:"w-8 h-8 text-yellow-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})])],-1)),e("div",As,[t[29]||(t[29]=e("div",{class:"text-sm font-medium text-gray-500"},"Due This Week",-1)),e("div",Is,c(oe.value),1)])])]),e("div",Ns,[e("div",Us,[t[32]||(t[32]=e("div",{class:"flex-shrink-0"},[e("svg",{class:"w-8 h-8 text-red-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.854-.833-2.598 0L3.732 16.5c-.77.833.192 2.5 1.732 2.5z"})])],-1)),e("div",Rs,[t[31]||(t[31]=e("div",{class:"text-sm font-medium text-gray-500"},"Overdue",-1)),e("div",Fs,c(re.value),1)])])]),e("div",Ws,[e("div",Ls,[t[34]||(t[34]=e("div",{class:"flex-shrink-0"},[e("svg",{class:"w-8 h-8 text-green-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})])],-1)),e("div",Bs,[t[33]||(t[33]=e("div",{class:"text-sm font-medium text-gray-500"},"Completed This Month",-1)),e("div",zs,c(ae.value),1)])])])]),m(Cs,{title:"Work Orders & Maintenance Calendar","show-work-orders":!0,"show-preventive-maintenance":!0,"show-asset-inspections":!1,"show-scheduled-downtime":!1,onCreateWorkOrder:l.handleCreateWorkOrder,onEditWorkOrder:ie,onCreatePmSchedule:n,onEditPmSchedule:a,onGenerateWorkOrderFromPm:g,onCreateEventAtTime:w},null,8,["onCreateWorkOrder"]),e("div",Hs,[t[37]||(t[37]=e("div",{class:"lg:col-span-2"},null,-1)),e("div",js,[e("div",Gs,[t[35]||(t[35]=e("div",{class:"px-4 py-3 border-b border-gray-200 bg-gray-50"},[e("h3",{class:"text-sm font-medium text-gray-900"},"Upcoming Work Orders")],-1)),e("div",qs,[(d(!0),u(C,null,E(le.value,r=>(d(),u("div",{key:r.id,class:"p-4 hover:bg-gray-50 cursor-pointer transition-colors",onClick:x=>ie(r.id)},[e("div",Ys,[e("div",Qs,[e("h4",Js,c(r.title),1),e("p",Xs,c(r.workOrderId),1),e("div",Zs,[m(s(Q),{variant:s(X)(r.status),size:"sm"},{default:h(()=>[k(c(s(pe)(r.status)),1)]),_:2},1032,["variant"]),e("span",eo,c(I(r.dueDate)),1)])]),e("div",to,c(F(r.dueDate)),1)])],8,Ks))),128))]),le.value.length===0?(d(),u("div",so," No upcoming work orders ")):v("",!0)]),e("div",oo,[t[36]||(t[36]=e("div",{class:"px-4 py-3 border-b border-gray-200 bg-gray-50"},[e("h3",{class:"text-sm font-medium text-gray-900"},"Today's Schedule")],-1)),e("div",ro,[(d(!0),u(C,null,E(ge.value,r=>(d(),u("div",{key:r.id,class:"p-4 hover:bg-gray-50 cursor-pointer transition-colors",onClick:x=>ie(r.id)},[e("div",lo,[e("div",no,[e("h4",io,c(r.title),1),e("p",uo,c(r.workOrderId),1)]),m(s(Q),{variant:s(X)(r.status),size:"sm"},{default:h(()=>[k(c(s(pe)(r.status)),1)]),_:2},1032,["variant"])])],8,ao))),128))]),ge.value.length===0?(d(),u("div",co," No work orders scheduled for today ")):v("",!0)])])])]),m(s(Ie),{modelValue:M.value,"onUpdate:modelValue":t[24]||(t[24]=r=>M.value=r),title:ve.value,size:"xl",onConfirm:f,onCancel:i},{footer:h(()=>[e("div",Uo,[e("div",Ro,[s(q)||s(K)?(d(),u("div",Fo,[s(q)?(d(),u("svg",Wo,t[53]||(t[53]=[e("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z","clip-rule":"evenodd"},null,-1)]))):(d(),u("svg",Lo,t[54]||(t[54]=[e("path",{"fill-rule":"evenodd",d:"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z","clip-rule":"evenodd"},null,-1)]))),s(q)?(d(),u("span",Bo,"Auto-saving...")):s(K)?(d(),u("span",zo,"Last saved "+c(Y.value),1)):v("",!0)])):v("",!0),b.value!=="basic"?(d(),ce(s(O),{key:1,variant:"outline",size:"sm",onClick:t[22]||(t[22]=r=>Pe("previous"))},{default:h(()=>t[55]||(t[55]=[k(" ← Previous ",-1)])),_:1,__:[55]})):v("",!0)]),e("div",Ho,[m(s(O),{variant:"secondary",onClick:i},{default:h(()=>t[56]||(t[56]=[k(" Cancel ",-1)])),_:1,__:[56]}),b.value!=="options"?(d(),ce(s(O),{key:0,variant:"outline",onClick:t[23]||(t[23]=r=>Pe("next"))},{default:h(()=>t[57]||(t[57]=[k(" Next → ",-1)])),_:1,__:[57]})):v("",!0),m(s(O),{variant:"primary",loading:s(S),onClick:f},{default:h(()=>[k(c(V.value==="create"?"Create Work Order":"Update Work Order"),1)]),_:1},8,["loading"])])])]),default:h(()=>[e("div",mo,[m(s(pt),{modelValue:b.value,"onUpdate:modelValue":t[0]||(t[0]=r=>b.value=r),tabs:R,onTabChange:Re},null,8,["modelValue"])]),m(s(vt),{visible:H.value,"saved-data-info":j.value,onRestore:Ne,onDismiss:Ue},null,8,["visible","saved-data-info"]),e("div",po,[b.value==="basic"?(d(),u("div",vo,[m(ut,{modelValue:s(o).workOrderId,"onUpdate:modelValue":t[1]||(t[1]=r=>s(o).workOrderId=r),category:s(o).category,location:s(o).location,disabled:s(S),"allow-manual-entry":!0},null,8,["modelValue","category","location","disabled"]),m(s(ue),{modelValue:s(o).title,"onUpdate:modelValue":t[2]||(t[2]=r=>s(o).title=r),label:"Title",placeholder:"Enter work order title",required:""},null,8,["modelValue"]),m(s(ue),{modelValue:s(o).description,"onUpdate:modelValue":t[3]||(t[3]=r=>s(o).description=r),label:"Description",placeholder:"Enter work order description",type:"textarea",rows:"4"},null,8,["modelValue"]),e("div",go,[m(s(U),{modelValue:s(o).priority,"onUpdate:modelValue":t[4]||(t[4]=r=>s(o).priority=r),label:"Priority",options:s(he),required:""},null,8,["modelValue","options"]),m(s(U),{modelValue:s(o).category,"onUpdate:modelValue":t[5]||(t[5]=r=>s(o).category=r),label:"Category",options:s(D),placeholder:"Select category"},null,8,["modelValue","options"])]),e("div",fo,[m(s(U),{modelValue:s(o).asset,"onUpdate:modelValue":t[6]||(t[6]=r=>s(o).asset=r),label:"Asset",options:s(me),placeholder:"Select asset"},null,8,["modelValue","options"]),m(s(U),{modelValue:s(o).location,"onUpdate:modelValue":t[7]||(t[7]=r=>s(o).location=r),label:"Location",options:s(ke),placeholder:"Select location"},null,8,["modelValue","options"])]),e("div",yo,[m(rt,{modelValue:s(o).tasks,"onUpdate:modelValue":t[8]||(t[8]=r=>s(o).tasks=r),disabled:s(S),"show-templates":!0},null,8,["modelValue","disabled"])])])):v("",!0),b.value==="assignment"?(d(),u("div",xo,[m(s(U),{modelValue:s(o).primaryUser,"onUpdate:modelValue":t[9]||(t[9]=r=>s(o).primaryUser=r),label:"Primary Assignee",options:s(N),placeholder:"Select primary user"},null,8,["modelValue","options"]),m(s(U),{modelValue:s(o).team,"onUpdate:modelValue":t[10]||(t[10]=r=>s(o).team=r),label:"Team",options:s(be),placeholder:"Select team"},null,8,["modelValue","options"]),t[38]||(t[38]=e("div",{class:"bg-gray-50 p-4 rounded-lg"},[e("h4",{class:"text-sm font-medium text-gray-900 mb-2"},"Assignment Notes"),e("p",{class:"text-sm text-gray-600"}," The primary assignee will be the main person responsible for this work order. If a team is selected, all team members will have access to this work order. ")],-1))])):v("",!0),b.value==="scheduling"?(d(),u("div",ho,[e("div",ko,[m(s(ue),{modelValue:s(o).estimatedStartDate,"onUpdate:modelValue":t[11]||(t[11]=r=>s(o).estimatedStartDate=r),label:"Planned Start Date",type:"datetime-local"},null,8,["modelValue"]),m(s(ue),{modelValue:s(o).dueDate,"onUpdate:modelValue":t[12]||(t[12]=r=>s(o).dueDate=r),label:"Due Date",type:"datetime-local"},null,8,["modelValue"])]),m(s(ue),{modelValue:s(o).estimatedDuration,"onUpdate:modelValue":t[13]||(t[13]=r=>s(o).estimatedDuration=r),label:"Estimated Duration (hours)",type:"number",min:"0",step:"0.5",placeholder:"e.g. 2.5"},null,8,["modelValue"]),t[39]||(t[39]=e("div",{class:"bg-blue-50 p-4 rounded-lg"},[e("h4",{class:"text-sm font-medium text-blue-900 mb-2"},"Scheduling Tips"),e("ul",{class:"text-sm text-blue-800 space-y-1"},[e("li",null,"• Set realistic start and due dates based on priority and complexity"),e("li",null,"• Estimated duration helps with resource planning"),e("li",null,"• Consider dependencies on other work orders"),e("li",null,"• Start date defaults to current time for immediate work")])],-1)),e("div",bo,[m(nt,{modelValue:s(o).timeEntries,"onUpdate:modelValue":t[14]||(t[14]=r=>s(o).timeEntries=r),disabled:s(S),"user-options":s(N),"current-user":A.value},null,8,["modelValue","disabled","user-options","current-user"])])])):v("",!0),b.value==="parts"?(d(),u("div",wo,[m(at,{modelValue:s(o).parts,"onUpdate:modelValue":t[15]||(t[15]=r=>s(o).parts=r),disabled:s(S)},null,8,["modelValue","disabled"])])):v("",!0),b.value==="attachments"?(d(),u("div",_o,[e("div",null,[t[40]||(t[40]=e("label",{class:"block text-sm font-medium text-gray-700 mb-2"}," Primary Image ",-1)),t[41]||(t[41]=e("p",{class:"text-sm text-gray-500 mb-3"}," Upload a main image that represents this work order (before photos, equipment images, etc.) ",-1)),m(s($e),{modelValue:s(o).image,"onUpdate:modelValue":t[16]||(t[16]=r=>s(o).image=r),accept:"image/*",multiple:!1,uploading:s(p),"upload-progress":s(L),onFilesAdded:Fe},null,8,["modelValue","uploading","upload-progress"])]),e("div",null,[t[42]||(t[42]=e("label",{class:"block text-sm font-medium text-gray-700 mb-2"}," Audio Notes ",-1)),t[43]||(t[43]=e("p",{class:"text-sm text-gray-500 mb-3"}," Record voice notes, observations, or instructions for this work order ",-1)),m(lt,{modelValue:s(o).audioRecordings,"onUpdate:modelValue":t[17]||(t[17]=r=>s(o).audioRecordings=r),"work-order-id":V.value==="edit"?z.value:null,"current-user":A.value,"auto-transcribe":!0,"enable-visualization":!0,"auto-save":!1,onRecordingSaved:qe},null,8,["modelValue","work-order-id","current-user"])]),e("div",null,[t[50]||(t[50]=e("label",{class:"block text-sm font-medium text-gray-700 mb-2"}," Additional Files ",-1)),t[51]||(t[51]=e("p",{class:"text-sm text-gray-500 mb-3"}," Upload manuals, documentation, additional photos, or other relevant files ",-1)),e("div",Do,[t[45]||(t[45]=e("svg",{class:"mx-auto h-12 w-12 text-gray-400",stroke:"currentColor",fill:"none",viewBox:"0 0 48 48"},[e("path",{d:"M28 8H12a4 4 0 00-4 4v20m32-12v8m0 0v8a4 4 0 01-4 4H12a4 4 0 01-4-4v-4m32-4l-3.172-3.172a4 4 0 00-5.656 0L28 28M8 32l9.172-9.172a4 4 0 015.656 0L28 28m0 0l4 4m4-24h8m-4-4v8m-12 4h.02","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})],-1)),e("div",Co,[e("label",Eo,[t[44]||(t[44]=e("span",{class:"mt-2 block text-sm font-medium text-gray-900"}," Drop files here or click to upload ",-1)),e("input",{type:"file",class:"sr-only",multiple:"",accept:"image/*,application/pdf,.doc,.docx,.txt",onChange:Le},null,32)])]),t[46]||(t[46]=e("p",{class:"mt-2 text-xs text-gray-500"}," PNG, JPG, PDF, DOC, TXT up to 10MB each (max 10 files) ",-1))]),s(o).files&&s(o).files.length>0?(d(),u("div",So,[(d(!0),u(C,null,E(s(o).files,(r,x)=>(d(),u("div",{key:x,class:"flex items-center justify-between p-3 bg-gray-50 rounded-lg border"},[e("div",Vo,[t[47]||(t[47]=e("svg",{class:"w-5 h-5 text-gray-400 mr-3",fill:"currentColor",viewBox:"0 0 20 20"},[e("path",{"fill-rule":"evenodd",d:"M4 4a2 2 0 012-2h4.586A2 2 0 0112 2.586L15.414 6A2 2 0 0116 7.414V16a2 2 0 01-2 2H6a2 2 0 01-2-2V4zm2 6a1 1 0 011-1h6a1 1 0 110 2H7a1 1 0 01-1-1zm1 3a1 1 0 100 2h6a1 1 0 100-2H7z","clip-rule":"evenodd"})],-1)),e("div",null,[e("span",To,c(r.name||"Untitled File"),1),e("div",Po,c(ze(r.size||0))+" • Uploaded "+c(He(r.uploadedAt)),1)])]),m(s(O),{variant:"ghost",size:"sm",onClick:P=>Be(x),class:"text-red-600 hover:text-red-800"},{default:h(()=>t[48]||(t[48]=[e("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1)])),_:2,__:[48]},1032,["onClick"])]))),128))])):v("",!0),e("div",Oo,[e("details",null,[t[49]||(t[49]=e("summary",{class:"cursor-pointer hover:text-gray-700"},"Alternative Upload Method",-1)),e("div",$o,[m(s($e),{modelValue:s(o).files,"onUpdate:modelValue":t[18]||(t[18]=r=>s(o).files=r),accept:"image/*,application/pdf,.doc,.docx,.txt",multiple:!0,"max-files":10,uploading:s(p),"upload-progress":s(L),onFilesAdded:We},null,8,["modelValue","uploading","upload-progress"])])])])])])):v("",!0),b.value==="options"?(d(),u("div",Mo,[m(s(mt),{modelValue:s(o).requiredSignature,"onUpdate:modelValue":t[19]||(t[19]=r=>s(o).requiredSignature=r),label:"Require signature for completion"},null,8,["modelValue"]),t[52]||(t[52]=e("div",{class:"bg-gray-50 p-4 rounded-lg"},[e("h4",{class:"text-sm font-medium text-gray-900 mb-2"},"Additional Options"),e("p",{class:"text-sm text-gray-600 mb-3"}," Configure special requirements and completion settings for this work order. "),e("ul",{class:"text-sm text-gray-600 space-y-1"},[e("li",null,[k("• "),e("strong",null,"Signature Required:"),k(" Technician must provide digital signature upon completion")]),e("li",null,"• More options will be available in future updates")])],-1)),e("div",Ao,[m(it,{modelValue:s(o).costTracking,"onUpdate:modelValue":t[20]||(t[20]=r=>s(o).costTracking=r),parts:s(o).parts,"time-entries":s(o).timeEntries,disabled:s(S)},null,8,["modelValue","parts","time-entries","disabled"])]),e("div",Io,[m(dt,{modelValue:s(o).statusHistory,"onUpdate:modelValue":t[21]||(t[21]=r=>s(o).statusHistory=r),"current-status":s(o).status,"audit-entries":s(o).auditTrail,"user-options":s(N),"current-user":A.value,disabled:s(S),onStatusChange:je},null,8,["modelValue","current-status","audit-entries","user-options","current-user","disabled"])]),e("div",No,[m(ct,{"work-order":s(o),disabled:s(S),onReportGenerated:Ge},null,8,["work-order","disabled"])])])):v("",!0)])]),_:1},8,["modelValue","title"])]),_:1}))}},mr=Me(jo,[["__scopeId","data-v-4f6f1a42"]]);export{mr as default}; +import{_ as Me,r as W,c as _,m as Ke,o as Ae,a as u,g as d,b as e,d as m,t as c,w as h,e as s,F as O,k,af as C,aR as E,n as ye,j as v,Q as de,h as Ye,i as ce,aW as Je,s as Qe,v as Xe}from"./index-QAlcqU00.js";import{u as Ze}from"./useWorkOrders-CVmaGBfy.js";import{u as et}from"./useFormAutoSave-BrW9Wl2Q.js";import{F as tt,a as st}from"./FPPageHeader-CFIwZZgQ.js";import{F as U}from"./FPSelect-j7n_x8eB.js";import{F as Ie}from"./FPModal-DMoPysvU.js";import{F as J}from"./FPBadge-DvOitM1C.js";import{u as ot}from"./useUniversalCalendar-C6fCeunY.js";import{T as rt,P as at,A as lt}from"./AudioRecorder-BzlZ8cXI.js";import{T as nt}from"./TimeTracker-DBp8PrtX.js";import{C as it,S as dt}from"./StatusHistory-C7FtpZlE.js";import{W as ut}from"./WorkOrderIdGenerator-2pnsJNJL.js";import{R as ct}from"./ReportGenerator-Dld_SPXF.js";import{F as ue}from"./FPInput-D5RURom0.js";import{F as mt}from"./FPCheckbox-DcRYwN3n.js";import{F as pt}from"./FPTabs-qq-Tmb7J.js";import{F as $e}from"./FPFileUpload-Bk17EQTg.js";import{_ as vt}from"./FormRestoreNotification-2Wflg1mH.js";import"./workOrder-jNxj_kjQ.js";import"./usePreventiveMaintenanceDisplay-DE1jAbPb.js";const gt={class:"universal-calendar"},ft={class:"mb-6"},yt={class:"flex items-center justify-between mb-4"},xt={class:"flex items-center space-x-4"},ht={class:"text-xl font-semibold text-gray-900"},kt={class:"flex items-center space-x-2"},bt={class:"flex flex-wrap items-center gap-3"},wt={class:"flex items-center bg-gray-100 rounded-lg p-1"},_t=["onClick"],Dt={class:"mb-4 text-center"},Ct={class:"text-lg font-medium text-gray-900"},Et={class:"bg-white border border-gray-200 rounded-lg overflow-hidden shadow-sm"},St={key:0,class:"month-view"},Vt={class:"grid grid-cols-7 bg-gray-50 border-b border-gray-200"},Tt={class:"grid grid-cols-7"},Pt={class:"flex items-center justify-between mb-1"},Ot={key:0,class:"text-xs text-gray-500"},$t={class:"space-y-1"},Mt=["onClick"],At={class:"flex-1 min-w-0"},It={class:"font-medium truncate"},Nt={class:"text-xs opacity-75"},Ut=["onClick"],Rt={key:1,class:"week-view"},Ft={class:"grid grid-cols-8 bg-gray-50 border-b border-gray-200"},Wt={class:"text-sm font-medium text-gray-700"},Lt={class:"grid grid-cols-8"},Bt={class:"border-r border-gray-200"},zt=["onClick"],Ht=["onClick"],jt={class:"font-medium truncate"},Gt={class:"text-xs opacity-75"},qt={key:2,class:"list-view p-4"},Kt={class:"space-y-3"},Yt=["onClick"],Jt={class:"flex items-center space-x-4"},Qt={class:"min-w-0 flex-1"},Xt={class:"font-medium text-gray-900"},Zt={class:"text-sm text-gray-600"},es={class:"flex items-center mt-2 space-x-4 text-xs text-gray-500"},ts={key:0},ss={key:1},os={key:2},rs={key:3},as={class:"flex items-center space-x-4 text-sm text-gray-500"},ls={class:"font-medium"},ns={class:"text-xs"},is={key:0,class:"text-center py-12 text-gray-500"},ds={key:0,class:"space-y-4"},us={class:"flex items-center space-x-2"},cs={class:"grid grid-cols-2 gap-4 text-sm"},ms={key:0},ps={key:1},vs={key:2},gs={key:3},fs={key:4},ys={key:0},xs={class:"mt-1 text-gray-700"},hs={key:1},ks={class:"mt-1 text-gray-700 whitespace-pre-wrap"},bs={key:2,class:"border-t pt-4"},ws={class:"mt-6 p-4 bg-gray-50 rounded-lg"},_s={class:"flex flex-wrap gap-4 text-sm"},Ds={__name:"UniversalCalendar",props:{title:{type:String,default:"Calendar"},showWorkOrders:{type:Boolean,default:!0},showPreventiveMaintenance:{type:Boolean,default:!0},showAssetInspections:{type:Boolean,default:!1},showScheduledDowntime:{type:Boolean,default:!1}},emits:["create-work-order","edit-work-order","create-pm-schedule","edit-pm-schedule","generate-work-order-from-pm","create-event-at-time"],setup(xe,{emit:G}){const T=xe,S=G,{currentDate:y,currentView:o,selectedEvent:p,showEventModal:L,allCalendarEvents:he,eventTypes:me,getEventsForDate:ke,refreshCalendarData:N,handleEventClick:be}=ot(),D=W({eventType:"",status:"",priority:""}),we=[{key:"month",label:"Month"},{key:"week",label:"Week"},{key:"list",label:"List"}],Q=["8:00","9:00","10:00","11:00","12:00","13:00","14:00","15:00","16:00","17:00"],_e=_(()=>{if(o.value==="month")return y.value.toLocaleDateString("en-US",{month:"long",year:"numeric"});if(o.value==="week"){const n=ve(y.value),a=new Date(n);return a.setDate(a.getDate()+6),`${n.toLocaleDateString("en-US",{month:"short",day:"numeric"})} - ${a.toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"})}`}return T.title}),De=_(()=>o.value==="month"?["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]:[]),B=_(()=>{if(o.value==="week"){const n=ve(y.value),a=[];for(let g=0;g<7;g++){const w=new Date(n);w.setDate(w.getDate()+g),a.push({date:w.toISOString().split("T")[0],dayName:w.toLocaleDateString("en-US",{weekday:"short"}),dayNumber:w.getDate(),isToday:R(w)})}return a}return[]}),pe=_(()=>{if(o.value!=="month")return[];const n=y.value.getFullYear(),a=y.value.getMonth(),g=new Date(n,a,1),w=new Date(g);w.setDate(w.getDate()-g.getDay());const i=[],f=new Date(w);for(let F=0;F<42;F++)i.push({date:f.toISOString().split("T")[0],dayNumber:f.getDate(),isCurrentMonth:f.getMonth()===a,isToday:R(f)}),f.setDate(f.getDate()+1);return i}),X=_(()=>{let n=he.value;return n=n.filter(a=>{const g=a.extendedProps.type;return!(g==="WORK_ORDER"&&!T.showWorkOrders||g==="PREVENTIVE_MAINTENANCE"&&!T.showPreventiveMaintenance||g==="ASSET_INSPECTION"&&!T.showAssetInspections||g==="SCHEDULED_DOWNTIME"&&!T.showScheduledDowntime)}),D.value.eventType&&(n=n.filter(a=>a.extendedProps.type===D.value.eventType)),D.value.status&&(n=n.filter(a=>a.extendedProps.status===D.value.status)),D.value.priority&&(n=n.filter(a=>a.extendedProps.priority===D.value.priority)),n}),Ce=_(()=>[{value:"",label:"All Events"},...T.showWorkOrders?[{value:"WORK_ORDER",label:"Work Orders"}]:[],...T.showPreventiveMaintenance?[{value:"PREVENTIVE_MAINTENANCE",label:"Preventive Maintenance"}]:[],...T.showAssetInspections?[{value:"ASSET_INSPECTION",label:"Asset Inspections"}]:[],...T.showScheduledDowntime?[{value:"SCHEDULED_DOWNTIME",label:"Scheduled Downtime"}]:[]]),Z=_(()=>[{value:"",label:"All Statuses"},{value:"OPEN",label:"Open"},{value:"IN_PROGRESS",label:"In Progress"},{value:"COMPLETED",label:"Completed"},{value:"ON_HOLD",label:"On Hold"},{value:"CANCELLED",label:"Cancelled"},{value:"ACTIVE",label:"Active"},{value:"PAUSED",label:"Paused"},{value:"INACTIVE",label:"Inactive"}]),ee=_(()=>[{value:"",label:"All Priorities"},{value:"LOW",label:"Low"},{value:"MEDIUM",label:"Medium"},{value:"HIGH",label:"High"},{value:"CRITICAL",label:"Critical"}]),q=()=>{o.value==="month"?y.value=new Date(y.value.getFullYear(),y.value.getMonth()-1,1):o.value==="week"&&(y.value=new Date(y.value.getTime()-7*24*60*60*1e3)),N()},Ee=()=>{o.value==="month"?y.value=new Date(y.value.getFullYear(),y.value.getMonth()+1,1):o.value==="week"&&(y.value=new Date(y.value.getTime()+7*24*60*60*1e3)),N()},te=()=>{y.value=new Date,N()},$=n=>ke(new Date(n)),se=n=>$(n).length,K=(n,a)=>$(n).filter(g=>g.id.replace(/\D/g,"")%Q.length==a),M=n=>{be({event:{id:n.id,title:n.title,start:n.start,end:n.end,extendedProps:n.extendedProps}})},V=()=>{L.value=!1,p.value=null},z=()=>{if(p.value){const n=p.value.extendedProps.type,a=p.value.extendedProps.originalData;n==="WORK_ORDER"?S("edit-work-order",a.id):n==="PREVENTIVE_MAINTENANCE"&&S("edit-pm-schedule",a.id),V()}},b=(n,a)=>{S("create-event-at-time",{date:n,time:a})},A=()=>{if(p.value&&p.value.extendedProps.type==="PREVENTIVE_MAINTENANCE"){const n=p.value.extendedProps.originalData;S("generate-work-order-from-pm",n.id),V()}},H=n=>{console.log("Show day details for:",n)},j=()=>{},R=n=>{const a=new Date;return n.toDateString()===a.toDateString()},ve=n=>{const a=new Date(n);return a.setDate(a.getDate()-a.getDay()),a.setHours(0,0,0,0),a},oe=n=>n?new Date(n).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}):"",re=n=>n?new Date(n).toLocaleTimeString("en-US",{hour:"numeric",minute:"2-digit"}):"",ae=n=>n?n.charAt(0)+n.slice(1).toLowerCase():"N/A",le=n=>n?n.replace("_"," ").toLowerCase().replace(/\b\w/g,a=>a.toUpperCase()):"N/A",ge=n=>{if(!n)return"N/A";const a=Math.floor(n/60),g=n%60;return a>0?g>0?`${a}h ${g}m`:`${a}h`:`${g}m`},Y=n=>{var a;return((a=me[n])==null?void 0:a.label)||n},ne=n=>({WORK_ORDER:"primary",PREVENTIVE_MAINTENANCE:"success",ASSET_INSPECTION:"warning",SCHEDULED_DOWNTIME:"error"})[n]||"secondary",fe=n=>({LOW:"secondary",MEDIUM:"primary",HIGH:"warning",CRITICAL:"error"})[n]||"secondary",Se=n=>({OPEN:"primary",IN_PROGRESS:"warning",COMPLETED:"success",ON_HOLD:"warning",CANCELLED:"secondary",ACTIVE:"success",PAUSED:"warning",INACTIVE:"secondary"})[n]||"secondary",ie=n=>{if(!n)return"Unassigned";if(Array.isArray(n)){if(n.length===0)return"Unassigned";const a=n[0],g=`${a.firstName} ${a.lastName}`;return n.length>1?`${g} +${n.length-1}`:g}return`${n.firstName} ${n.lastName}`};return Ke(o,()=>{N()}),Ae(()=>{N()}),(n,a)=>{var g,w;return d(),u("div",gt,[e("div",ft,[e("div",yt,[e("div",xt,[e("h2",ht,c(xe.title),1),e("div",kt,[m(s(O),{variant:"outline",size:"sm",onClick:q},{default:h(()=>a[4]||(a[4]=[e("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 19l-7-7 7-7"})],-1)])),_:1,__:[4]}),m(s(O),{variant:"outline",size:"sm",onClick:te},{default:h(()=>a[5]||(a[5]=[k(" Today ",-1)])),_:1,__:[5]}),m(s(O),{variant:"outline",size:"sm",onClick:Ee},{default:h(()=>a[6]||(a[6]=[e("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5l7 7-7 7"})],-1)])),_:1,__:[6]})])])]),e("div",bt,[e("div",wt,[(d(),u(C,null,E(we,i=>e("button",{key:i.key,onClick:f=>o.value=i.key,class:ye(["px-3 py-1 text-sm font-medium rounded-md transition-colors",{"bg-white text-gray-900 shadow":s(o)===i.key,"text-gray-600 hover:text-gray-900":s(o)!==i.key}])},c(i.label),11,_t)),64))]),m(s(U),{modelValue:D.value.eventType,"onUpdate:modelValue":[a[0]||(a[0]=i=>D.value.eventType=i),j],placeholder:"All Events",options:Ce.value,size:"sm"},null,8,["modelValue","options"]),m(s(U),{modelValue:D.value.status,"onUpdate:modelValue":[a[1]||(a[1]=i=>D.value.status=i),j],placeholder:"All Statuses",options:Z.value,size:"sm"},null,8,["modelValue","options"]),m(s(U),{modelValue:D.value.priority,"onUpdate:modelValue":[a[2]||(a[2]=i=>D.value.priority=i),j],placeholder:"All Priorities",options:ee.value,size:"sm"},null,8,["modelValue","options"])])]),e("div",Dt,[e("h3",Ct,c(_e.value),1)]),e("div",Et,[s(o)==="month"?(d(),u("div",St,[e("div",Vt,[(d(!0),u(C,null,E(De.value,i=>(d(),u("div",{key:i,class:"p-3 text-center text-sm font-medium text-gray-700"},c(i),1))),128))]),e("div",Tt,[(d(!0),u(C,null,E(pe.value,i=>(d(),u("div",{key:i.date,class:ye(["min-h-[120px] border-r border-b border-gray-200 p-2",{"bg-gray-50":!i.isCurrentMonth,"bg-blue-50":i.isToday}])},[e("div",Pt,[e("span",{class:ye(["text-sm font-medium",{"text-gray-400":!i.isCurrentMonth,"text-blue-600 bg-blue-100 w-6 h-6 rounded-full flex items-center justify-center":i.isToday,"text-gray-900":i.isCurrentMonth&&!i.isToday}])},c(i.dayNumber),3),se(i.date)?(d(),u("span",Ot,c(se(i.date)),1)):v("",!0)]),e("div",$t,[(d(!0),u(C,null,E($(i.date).slice(0,3),f=>(d(),u("div",{key:f.id,class:"p-1 rounded text-xs cursor-pointer hover:opacity-80 transition-opacity flex items-center space-x-1",style:de({backgroundColor:f.backgroundColor,color:f.textColor}),onClick:F=>M(f)},[e("div",{class:"flex-shrink-0 w-2 h-2 rounded-full",style:de({backgroundColor:f.borderColor})},null,4),e("div",At,[e("div",It,c(f.title),1),e("div",Nt,c(Y(f.extendedProps.type)),1)])],12,Mt))),128)),$(i.date).length>3?(d(),u("div",{key:0,class:"text-xs text-gray-500 text-center cursor-pointer hover:text-gray-700",onClick:f=>H(i.date)}," +"+c($(i.date).length-3)+" more ",9,Ut)):v("",!0)])],2))),128))])])):s(o)==="week"?(d(),u("div",Rt,[e("div",Ft,[a[7]||(a[7]=e("div",{class:"p-3"},null,-1)),(d(!0),u(C,null,E(B.value,i=>(d(),u("div",{key:i.date,class:"p-3 text-center border-l border-gray-200"},[e("div",Wt,c(i.dayName),1),e("div",{class:ye(["text-lg font-semibold mt-1",{"text-blue-600 bg-blue-100 w-8 h-8 rounded-full flex items-center justify-center mx-auto":i.isToday,"text-gray-900":!i.isToday}])},c(i.dayNumber),3)]))),128))]),e("div",Lt,[e("div",Bt,[(d(),u(C,null,E(Q,i=>e("div",{key:i,class:"h-16 border-b border-gray-200 p-2 text-xs text-gray-500"},c(i),1)),64))]),(d(!0),u(C,null,E(B.value,i=>(d(),u("div",{key:i.date,class:"border-r border-gray-200 relative"},[(d(),u(C,null,E(Q,(f,F)=>e("div",{key:f,class:"h-16 border-b border-gray-200 p-1 cursor-pointer hover:bg-gray-50",onClick:I=>b(i.date,f)},[(d(!0),u(C,null,E(K(i.date,F),I=>(d(),u("div",{key:I.id,class:"absolute z-10 left-1 right-1 p-1 rounded text-xs cursor-pointer",style:de({backgroundColor:I.backgroundColor,borderLeft:`4px solid ${I.borderColor}`,color:I.textColor,top:`${F*64+4}px`,height:"56px"}),onClick:Ye(Ve=>M(I),["stop"])},[e("div",jt,c(I.title),1),e("div",Gt,c(Y(I.extendedProps.type)),1)],12,Ht))),128))],8,zt)),64))]))),128))])])):s(o)==="list"?(d(),u("div",qt,[e("div",Kt,[(d(!0),u(C,null,E(X.value,i=>(d(),u("div",{key:i.id,class:"flex items-center justify-between p-4 border border-gray-200 rounded-lg hover:border-gray-300 transition-colors cursor-pointer",onClick:f=>M(i)},[e("div",Jt,[e("div",{class:"w-4 h-4 rounded-full flex-shrink-0",style:de({backgroundColor:i.borderColor})},null,4),e("div",Qt,[e("h4",Xt,c(i.title),1),e("p",Zt,c(Y(i.extendedProps.type)),1),e("div",es,[i.extendedProps.priority?(d(),u("span",ts," Priority: "+c(ae(i.extendedProps.priority)),1)):v("",!0),i.extendedProps.status?(d(),u("span",ss," Status: "+c(le(i.extendedProps.status)),1)):v("",!0),i.extendedProps.location?(d(),u("span",os," Location: "+c(i.extendedProps.location),1)):v("",!0),i.extendedProps.assetName?(d(),u("span",rs," Asset: "+c(i.extendedProps.assetName),1)):v("",!0)])])]),e("div",as,[e("div",null,[e("div",ls,c(oe(i.start)),1),e("div",ns,c(re(i.start)),1)]),m(s(J),{variant:fe(i.extendedProps.priority)},{default:h(()=>[k(c(ae(i.extendedProps.priority)),1)]),_:2},1032,["variant"])])],8,Yt))),128))]),X.value.length===0?(d(),u("div",is,a[8]||(a[8]=[e("svg",{class:"w-12 h-12 mx-auto mb-4 text-gray-300",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"})],-1),e("p",null,"No events found for the selected period",-1)]))):v("",!0)])):v("",!0)]),m(s(Ie),{modelValue:s(L),"onUpdate:modelValue":a[3]||(a[3]=i=>Je(L)?L.value=i:null),title:((g=s(p))==null?void 0:g.title)||"Event Details",size:"lg",onConfirm:z,onCancel:V,"confirm-text":((w=s(p))==null?void 0:w.extendedProps.type)==="WORK_ORDER"?"Edit Work Order":"Edit Schedule","cancel-text":"Close"},{default:h(()=>[s(p)?(d(),u("div",ds,[e("div",us,[m(s(J),{variant:ne(s(p).extendedProps.type)},{default:h(()=>[k(c(Y(s(p).extendedProps.type)),1)]),_:1},8,["variant"]),s(p).extendedProps.priority?(d(),ce(s(J),{key:0,variant:fe(s(p).extendedProps.priority)},{default:h(()=>[k(c(ae(s(p).extendedProps.priority)),1)]),_:1},8,["variant"])):v("",!0),s(p).extendedProps.status?(d(),ce(s(J),{key:1,variant:Se(s(p).extendedProps.status)},{default:h(()=>[k(c(le(s(p).extendedProps.status)),1)]),_:1},8,["variant"])):v("",!0)]),e("div",cs,[e("div",null,[a[9]||(a[9]=e("strong",null,"Start:",-1)),k(" "+c(oe(s(p).start))+" "+c(re(s(p).start)),1)]),e("div",null,[a[10]||(a[10]=e("strong",null,"End:",-1)),k(" "+c(oe(s(p).end))+" "+c(re(s(p).end)),1)]),s(p).extendedProps.location?(d(),u("div",ms,[a[11]||(a[11]=e("strong",null,"Location:",-1)),k(" "+c(s(p).extendedProps.location),1)])):v("",!0),s(p).extendedProps.assetName?(d(),u("div",ps,[a[12]||(a[12]=e("strong",null,"Asset:",-1)),k(" "+c(s(p).extendedProps.assetName),1)])):v("",!0),s(p).extendedProps.type==="WORK_ORDER"&&s(p).extendedProps.assignedTo?(d(),u("div",vs,[a[13]||(a[13]=e("strong",null,"Assigned To:",-1)),k(" "+c(ie(s(p).extendedProps.assignedTo)),1)])):v("",!0),s(p).extendedProps.type==="PREVENTIVE_MAINTENANCE"&&s(p).extendedProps.frequency?(d(),u("div",gs,[a[14]||(a[14]=e("strong",null,"Frequency:",-1)),k(" "+c(s(p).extendedProps.frequency),1)])):v("",!0),s(p).extendedProps.estimatedDuration?(d(),u("div",fs,[a[15]||(a[15]=e("strong",null,"Duration:",-1)),k(" "+c(ge(s(p).extendedProps.estimatedDuration)),1)])):v("",!0)]),s(p).extendedProps.description?(d(),u("div",ys,[a[16]||(a[16]=e("strong",null,"Description:",-1)),e("p",xs,c(s(p).extendedProps.description),1)])):v("",!0),s(p).extendedProps.instructions?(d(),u("div",hs,[a[17]||(a[17]=e("strong",null,"Instructions:",-1)),e("p",ks,c(s(p).extendedProps.instructions),1)])):v("",!0),s(p).extendedProps.type==="PREVENTIVE_MAINTENANCE"?(d(),u("div",bs,[m(s(O),{variant:"secondary",size:"sm",onClick:A},{default:h(()=>a[18]||(a[18]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5H7a2 2 0 00-2 2v10a2 2 0 002 2h8a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"})],-1),k(" Generate Work Order ",-1)])),_:1,__:[18]})])):v("",!0)])):v("",!0)]),_:1},8,["modelValue","title","confirm-text"]),e("div",ws,[a[19]||(a[19]=e("h4",{class:"text-sm font-medium text-gray-900 mb-3"},"Event Types",-1)),e("div",_s,[(d(!0),u(C,null,E(s(me),(i,f)=>(d(),u("div",{key:f,class:"flex items-center space-x-2"},[e("div",{class:"w-3 h-3 rounded",style:de({backgroundColor:i.color})},null,4),e("span",null,c(i.label),1)]))),128))])])])}}},Cs=Me(Ds,[["__scopeId","data-v-196ae05f"]]),Es={class:"p-6"},Ss={class:"grid grid-cols-1 md:grid-cols-4 gap-4 mb-6"},Vs={class:"bg-white p-4 rounded-lg border border-gray-200"},Ts={class:"flex items-center"},Ps={class:"ml-4"},Os={class:"text-2xl font-bold text-gray-900"},$s={class:"bg-white p-4 rounded-lg border border-gray-200"},Ms={class:"flex items-center"},As={class:"ml-4"},Is={class:"text-2xl font-bold text-gray-900"},Ns={class:"bg-white p-4 rounded-lg border border-gray-200"},Us={class:"flex items-center"},Rs={class:"ml-4"},Fs={class:"text-2xl font-bold text-gray-900"},Ws={class:"bg-white p-4 rounded-lg border border-gray-200"},Ls={class:"flex items-center"},Bs={class:"ml-4"},zs={class:"text-2xl font-bold text-gray-900"},Hs={class:"mt-8 grid grid-cols-1 lg:grid-cols-3 gap-6"},js={class:"space-y-6"},Gs={class:"bg-white border border-gray-200 rounded-lg overflow-hidden"},qs={class:"divide-y divide-gray-200"},Ks=["onClick"],Ys={class:"flex items-start justify-between"},Js={class:"flex-1 min-w-0"},Qs={class:"text-sm font-medium text-gray-900 truncate"},Xs={class:"text-xs text-gray-500 mt-1"},Zs={class:"flex items-center mt-2"},eo={class:"ml-2 text-xs text-gray-500"},to={class:"ml-2 text-xs text-gray-400"},so={key:0,class:"p-4 text-center text-gray-500 text-sm"},oo={class:"bg-white border border-gray-200 rounded-lg overflow-hidden"},ro={class:"divide-y divide-gray-200"},ao=["onClick"],lo={class:"flex items-center justify-between"},no={class:"flex-1 min-w-0"},io={class:"text-sm font-medium text-gray-900 truncate"},uo={class:"text-xs text-gray-500 mt-1"},co={key:0,class:"p-4 text-center text-gray-500 text-sm"},mo={class:"border-b border-gray-200 mb-6"},po={class:"min-h-[400px]"},vo={key:0,class:"space-y-4"},go={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},fo={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},yo={class:"mt-6 border-t pt-6"},xo={key:1,class:"space-y-4"},ho={key:2,class:"space-y-4"},ko={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},bo={class:"mt-6 border-t pt-6"},wo={key:3,class:"space-y-4"},_o={key:4,class:"space-y-6"},Do={class:"border-2 border-dashed border-gray-300 rounded-lg p-6 text-center hover:border-gray-400 transition-colors"},Co={class:"mt-4"},Eo={class:"cursor-pointer"},So={key:0,class:"mt-4 space-y-2"},Vo={class:"flex items-center"},To={class:"text-sm font-medium text-gray-900"},Po={class:"text-xs text-gray-500"},Oo={class:"mt-2 text-xs text-gray-500"},$o={class:"mt-2"},Mo={key:5,class:"space-y-4"},Ao={class:"mt-6 border-t pt-6"},Io={class:"mt-6 border-t pt-6"},No={class:"mt-6 border-t pt-6"},Uo={class:"flex items-center justify-between"},Ro={class:"flex items-center space-x-4"},Fo={key:0,class:"flex items-center text-sm text-gray-500"},Wo={key:0,class:"w-4 h-4 mr-2 text-amber-500 animate-pulse",fill:"currentColor",viewBox:"0 0 20 20"},Lo={key:1,class:"w-4 h-4 mr-2 text-green-500",fill:"currentColor",viewBox:"0 0 20 20"},Bo={key:2},zo={key:3},Ho={class:"flex space-x-3"},jo={__name:"WorkOrdersCalendarView",setup(xe){const G=Xe(),T=Qe(),{loading:S,workOrders:y,workOrderForm:o,uploadingFiles:p,uploadProgress:L,priorityOptions:he,assetOptions:me,locationOptions:ke,userOptions:N,teamOptions:be,categoryOptions:D,searchWorkOrders:we,createWorkOrder:Q,updateWorkOrder:_e,loadDropdownOptions:De,resetForm:B,formatStatus:pe,getStatusBadge:X,markUserInteraction:Ce,finishInitialization:Z,WORK_ORDER_STATUS:ee}=Ze(),{hasUnsavedChanges:q,restoreFormData:Ee,clearSavedData:te,hasSavedData:$,getSavedDataInfo:se,lastSaveTime:K}=et(o,{storageKey:"atlas_work_order_form_data",saveInterval:3e3,excludeFields:[]}),M=W(!1),V=W("create"),z=W(null),b=W("basic"),A=W(null),H=W(!1),j=W(null),R=[{key:"basic",label:"Basic Info"},{key:"assignment",label:"Assignment"},{key:"scheduling",label:"Scheduling"},{key:"parts",label:"Parts"},{key:"attachments",label:"Attachments"},{key:"options",label:"Options"}],ve=_(()=>{const l=V.value==="create"?"Create Work Order":"Edit Work Order";return q.value?`${l} (unsaved changes)`:l}),oe=_(()=>{const l=new Date,t=new Date(l.getTime()+7*24*60*60*1e3);return y.value.filter(r=>{if(!r.dueDate)return!1;const x=new Date(r.dueDate);return x>=l&&x<=t}).length}),re=_(()=>{const l=new Date;return y.value.filter(t=>t.dueDate?new Date(t.dueDate){const l=new Date,t=new Date(l.getFullYear(),l.getMonth(),1);return y.value.filter(r=>r.status!==ee.COMPLETE||!r.completedAt?!1:new Date(r.completedAt)>=t).length}),le=_(()=>{const l=new Date;return y.value.filter(t=>!t.dueDate||t.status===ee.COMPLETE?!1:new Date(t.dueDate)>l).sort((t,r)=>new Date(t.dueDate)-new Date(r.dueDate)).slice(0,5)}),ge=_(()=>{const l=new Date().toDateString();return y.value.filter(t=>t.dueDate?new Date(t.dueDate).toDateString()===l:!1)}),Y=_(()=>{if(!K.value)return"";const l=new Date,t=new Date(K.value),r=l-t,x=Math.floor(r/(60*1e3));return x<1?"just now":x===1?"1 minute ago":x<60?`${x} minutes ago`:t.toLocaleTimeString()}),ne=async()=>{await we()},fe=()=>{console.log("Export calendar")},Se=()=>{V.value="create",z.value=null,b.value="basic",Ve(),$()||(B(),Te(),Z()),M.value=!0},ie=l=>{const t=y.value.find(r=>r.id===l);t&&(V.value="edit",z.value=l,b.value="basic",Object.assign(o,t),Z(),M.value=!0)},n=()=>{G.push("/maintenance/preventive?create=true")},a=l=>{G.push(`/maintenance/preventive/${l}`)},g=l=>{G.push(`/work-orders?create=true&pmScheduleId=${l}`)},w=l=>{V.value="create",z.value=null,b.value="basic",Ve(),$()?l.date&&!o.dueDate&&(o.dueDate=l.date):(B(),l.date&&(o.dueDate=l.date),Te()),M.value=!0},i=()=>{te(),M.value=!1,B(),H.value=!1},f=async()=>{try{V.value==="create"?await Q():await _e(z.value,o),te(),i(),await ne()}catch(l){console.error("Failed to save work order:",l)}},F=l=>l?new Date(l).toLocaleDateString("en-US",{month:"short",day:"numeric"}):"",I=l=>{if(!l)return"";const x=new Date(l)-new Date,P=Math.ceil(x/(1e3*60*60*24));return P===0?"Today":P===1?"Tomorrow":P===-1?"Yesterday":P>0?`In ${P} days`:`${Math.abs(P)} days ago`},Ve=()=>{console.log("Checking for saved data...",{modalMode:V.value,hasSaved:$(),savedInfo:se()}),V.value==="create"&&$()?(j.value=se(),H.value=!0,console.log("Showing restore notification with data:",j.value)):console.log("No saved data found or not in create mode")},Ne=()=>{var l,t,r;Ee()&&(H.value=!1,Ce(),console.log("Form data restored successfully"),((l=o.audioRecordings)!=null&&l.some(x=>x._hadBlobUrl)||(t=o.image)!=null&&t._isFile||(r=o.files)!=null&&r.some(x=>x._isFile))&&console.warn("Note: Audio recordings, images, and uploaded files cannot be restored after page refresh. Only metadata was preserved."))},Ue=()=>{H.value=!1,te(),B(),Te(),Z(),console.log("Auto-saved data dismissed and form reset")},Re=l=>{b.value=l},Pe=l=>{const t=R.findIndex(r=>r.key===b.value);l==="next"&&t0&&(b.value=R[t-1].key)},Fe=async l=>{console.log("Primary image uploaded:",l)},We=async l=>{console.log("Additional files uploaded:",l)},Le=l=>{const t=Array.from(l.target.files);if(!t.length)return;const r=t.map(x=>({...x,id:Date.now()+Math.random(),uploadedAt:new Date().toISOString(),uploadedBy:A.value}));o.files||(o.files=[]),o.files.push(...r),l.target.value=""},Be=l=>{o.files&&o.files[l]&&o.files.splice(l,1)},ze=l=>{if(!l)return"0 B";const t=["B","KB","MB","GB"],r=Math.floor(Math.log(l)/Math.log(1024));return`${Math.round(l/Math.pow(1024,r)*100)/100} ${t[r]}`},He=l=>{if(!l)return"just now";const t=new Date(l),x=new Date-t,P=Math.floor(x/(1e3*60));if(P<1)return"just now";if(P<60)return`${P}m ago`;const Oe=Math.floor(P/60);return Oe<24?`${Oe}h ago`:t.toLocaleDateString()},je=l=>{o.status=l.newStatus;const t={id:Date.now()+Math.random(),action:"STATUS_CHANGE",field:"status",oldValue:l.previousStatus,newValue:l.newStatus,user:l.user,timestamp:new Date().toISOString(),description:`Status changed from ${l.previousStatus} to ${l.newStatus}`};o.auditTrail||(o.auditTrail=[]),o.auditTrail.unshift(t),console.log("Status changed:",l)},Ge=l=>{console.log("Report generated:",l);const t={id:Date.now()+Math.random(),action:"REPORT_GENERATED",field:"report",newValue:l.name,user:A.value,timestamp:new Date().toISOString(),description:`Generated report: ${l.name}`};o.auditTrail||(o.auditTrail=[]),o.auditTrail.unshift(t)},qe=l=>{console.log("Recording saved:",l);const t={id:Date.now()+Math.random(),action:"AUDIO_RECORDED",field:"audioRecordings",newValue:l.title||"Untitled Recording",user:A.value,timestamp:new Date().toISOString(),description:`Added audio recording: ${l.title||"Untitled Recording"} (${Math.round(l.duration||0)}s)`};o.auditTrail||(o.auditTrail=[]),o.auditTrail.unshift(t)},Te=()=>{if(A.value&&!o.primaryUser&&(o.primaryUser=A.value.id),!o.estimatedStartDate){const l=new Date;l.setMinutes(l.getMinutes()-l.getTimezoneOffset()),o.estimatedStartDate=l.toISOString().slice(0,16)}o.files||(o.files=[]),o.audioRecordings||(o.audioRecordings=[]),o.tasks||(o.tasks=[]),o.parts||(o.parts=[])};return Ae(async()=>{try{if(await De(),await ne(),T.query.create==="true"){const l=T.query.assetId;setTimeout(()=>{l&&(o.assetId=parseInt(l)),Se(),G.replace({path:"/work-orders/calendar"})},500)}}catch(l){console.error("Failed to initialize work orders calendar view:",l)}}),(l,t)=>(d(),ce(tt,null,{header:h(()=>[m(st,{title:"Work Order Calendar",description:"Schedule and view work orders in calendar format",breadcrumbs:[{text:"Work Orders",to:"/work-orders"},{text:"Calendar",to:null}]},{actions:h(()=>[m(s(O),{variant:"outline",size:"sm",onClick:ne},{default:h(()=>t[25]||(t[25]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),k(" Refresh ",-1)])),_:1,__:[25]}),m(s(O),{variant:"outline",size:"sm",onClick:fe},{default:h(()=>t[26]||(t[26]=[e("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1),k(" Export ",-1)])),_:1,__:[26]})]),_:1})]),default:h(()=>[e("div",Es,[e("div",Ss,[e("div",Vs,[e("div",Ts,[t[28]||(t[28]=e("div",{class:"flex-shrink-0"},[e("svg",{class:"w-8 h-8 text-blue-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M8 7V3a1 1 0 011-1h6a1 1 0 011 1v4m4 0V9a2 2 0 00-2-2H6a2 2 0 00-2 2v10a2 2 0 002 2h12a2 2 0 002-2V9a2 2 0 00-2-2m-4 0H8"})])],-1)),e("div",Ps,[t[27]||(t[27]=e("div",{class:"text-sm font-medium text-gray-500"},"Total Work Orders",-1)),e("div",Os,c(s(y).length),1)])])]),e("div",$s,[e("div",Ms,[t[30]||(t[30]=e("div",{class:"flex-shrink-0"},[e("svg",{class:"w-8 h-8 text-yellow-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})])],-1)),e("div",As,[t[29]||(t[29]=e("div",{class:"text-sm font-medium text-gray-500"},"Due This Week",-1)),e("div",Is,c(oe.value),1)])])]),e("div",Ns,[e("div",Us,[t[32]||(t[32]=e("div",{class:"flex-shrink-0"},[e("svg",{class:"w-8 h-8 text-red-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.854-.833-2.598 0L3.732 16.5c-.77.833.192 2.5 1.732 2.5z"})])],-1)),e("div",Rs,[t[31]||(t[31]=e("div",{class:"text-sm font-medium text-gray-500"},"Overdue",-1)),e("div",Fs,c(re.value),1)])])]),e("div",Ws,[e("div",Ls,[t[34]||(t[34]=e("div",{class:"flex-shrink-0"},[e("svg",{class:"w-8 h-8 text-green-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})])],-1)),e("div",Bs,[t[33]||(t[33]=e("div",{class:"text-sm font-medium text-gray-500"},"Completed This Month",-1)),e("div",zs,c(ae.value),1)])])])]),m(Cs,{title:"Work Orders & Maintenance Calendar","show-work-orders":!0,"show-preventive-maintenance":!0,"show-asset-inspections":!1,"show-scheduled-downtime":!1,onCreateWorkOrder:l.handleCreateWorkOrder,onEditWorkOrder:ie,onCreatePmSchedule:n,onEditPmSchedule:a,onGenerateWorkOrderFromPm:g,onCreateEventAtTime:w},null,8,["onCreateWorkOrder"]),e("div",Hs,[t[37]||(t[37]=e("div",{class:"lg:col-span-2"},null,-1)),e("div",js,[e("div",Gs,[t[35]||(t[35]=e("div",{class:"px-4 py-3 border-b border-gray-200 bg-gray-50"},[e("h3",{class:"text-sm font-medium text-gray-900"},"Upcoming Work Orders")],-1)),e("div",qs,[(d(!0),u(C,null,E(le.value,r=>(d(),u("div",{key:r.id,class:"p-4 hover:bg-gray-50 cursor-pointer transition-colors",onClick:x=>ie(r.id)},[e("div",Ys,[e("div",Js,[e("h4",Qs,c(r.title),1),e("p",Xs,c(r.workOrderId),1),e("div",Zs,[m(s(J),{variant:s(X)(r.status),size:"sm"},{default:h(()=>[k(c(s(pe)(r.status)),1)]),_:2},1032,["variant"]),e("span",eo,c(I(r.dueDate)),1)])]),e("div",to,c(F(r.dueDate)),1)])],8,Ks))),128))]),le.value.length===0?(d(),u("div",so," No upcoming work orders ")):v("",!0)]),e("div",oo,[t[36]||(t[36]=e("div",{class:"px-4 py-3 border-b border-gray-200 bg-gray-50"},[e("h3",{class:"text-sm font-medium text-gray-900"},"Today's Schedule")],-1)),e("div",ro,[(d(!0),u(C,null,E(ge.value,r=>(d(),u("div",{key:r.id,class:"p-4 hover:bg-gray-50 cursor-pointer transition-colors",onClick:x=>ie(r.id)},[e("div",lo,[e("div",no,[e("h4",io,c(r.title),1),e("p",uo,c(r.workOrderId),1)]),m(s(J),{variant:s(X)(r.status),size:"sm"},{default:h(()=>[k(c(s(pe)(r.status)),1)]),_:2},1032,["variant"])])],8,ao))),128))]),ge.value.length===0?(d(),u("div",co," No work orders scheduled for today ")):v("",!0)])])])]),m(s(Ie),{modelValue:M.value,"onUpdate:modelValue":t[24]||(t[24]=r=>M.value=r),title:ve.value,size:"xl",onConfirm:f,onCancel:i},{footer:h(()=>[e("div",Uo,[e("div",Ro,[s(q)||s(K)?(d(),u("div",Fo,[s(q)?(d(),u("svg",Wo,t[53]||(t[53]=[e("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z","clip-rule":"evenodd"},null,-1)]))):(d(),u("svg",Lo,t[54]||(t[54]=[e("path",{"fill-rule":"evenodd",d:"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z","clip-rule":"evenodd"},null,-1)]))),s(q)?(d(),u("span",Bo,"Auto-saving...")):s(K)?(d(),u("span",zo,"Last saved "+c(Y.value),1)):v("",!0)])):v("",!0),b.value!=="basic"?(d(),ce(s(O),{key:1,variant:"outline",size:"sm",onClick:t[22]||(t[22]=r=>Pe("previous"))},{default:h(()=>t[55]||(t[55]=[k(" ← Previous ",-1)])),_:1,__:[55]})):v("",!0)]),e("div",Ho,[m(s(O),{variant:"secondary",onClick:i},{default:h(()=>t[56]||(t[56]=[k(" Cancel ",-1)])),_:1,__:[56]}),b.value!=="options"?(d(),ce(s(O),{key:0,variant:"outline",onClick:t[23]||(t[23]=r=>Pe("next"))},{default:h(()=>t[57]||(t[57]=[k(" Next → ",-1)])),_:1,__:[57]})):v("",!0),m(s(O),{variant:"primary",loading:s(S),onClick:f},{default:h(()=>[k(c(V.value==="create"?"Create Work Order":"Update Work Order"),1)]),_:1},8,["loading"])])])]),default:h(()=>[e("div",mo,[m(s(pt),{modelValue:b.value,"onUpdate:modelValue":t[0]||(t[0]=r=>b.value=r),tabs:R,onTabChange:Re},null,8,["modelValue"])]),m(s(vt),{visible:H.value,"saved-data-info":j.value,onRestore:Ne,onDismiss:Ue},null,8,["visible","saved-data-info"]),e("div",po,[b.value==="basic"?(d(),u("div",vo,[m(ut,{modelValue:s(o).workOrderId,"onUpdate:modelValue":t[1]||(t[1]=r=>s(o).workOrderId=r),category:s(o).category,location:s(o).location,disabled:s(S),"allow-manual-entry":!0},null,8,["modelValue","category","location","disabled"]),m(s(ue),{modelValue:s(o).title,"onUpdate:modelValue":t[2]||(t[2]=r=>s(o).title=r),label:"Title",placeholder:"Enter work order title",required:""},null,8,["modelValue"]),m(s(ue),{modelValue:s(o).description,"onUpdate:modelValue":t[3]||(t[3]=r=>s(o).description=r),label:"Description",placeholder:"Enter work order description",type:"textarea",rows:"4"},null,8,["modelValue"]),e("div",go,[m(s(U),{modelValue:s(o).priority,"onUpdate:modelValue":t[4]||(t[4]=r=>s(o).priority=r),label:"Priority",options:s(he),required:""},null,8,["modelValue","options"]),m(s(U),{modelValue:s(o).category,"onUpdate:modelValue":t[5]||(t[5]=r=>s(o).category=r),label:"Category",options:s(D),placeholder:"Select category"},null,8,["modelValue","options"])]),e("div",fo,[m(s(U),{modelValue:s(o).asset,"onUpdate:modelValue":t[6]||(t[6]=r=>s(o).asset=r),label:"Asset",options:s(me),placeholder:"Select asset"},null,8,["modelValue","options"]),m(s(U),{modelValue:s(o).location,"onUpdate:modelValue":t[7]||(t[7]=r=>s(o).location=r),label:"Location",options:s(ke),placeholder:"Select location"},null,8,["modelValue","options"])]),e("div",yo,[m(rt,{modelValue:s(o).tasks,"onUpdate:modelValue":t[8]||(t[8]=r=>s(o).tasks=r),disabled:s(S),"show-templates":!0},null,8,["modelValue","disabled"])])])):v("",!0),b.value==="assignment"?(d(),u("div",xo,[m(s(U),{modelValue:s(o).primaryUser,"onUpdate:modelValue":t[9]||(t[9]=r=>s(o).primaryUser=r),label:"Primary Assignee",options:s(N),placeholder:"Select primary user"},null,8,["modelValue","options"]),m(s(U),{modelValue:s(o).team,"onUpdate:modelValue":t[10]||(t[10]=r=>s(o).team=r),label:"Team",options:s(be),placeholder:"Select team"},null,8,["modelValue","options"]),t[38]||(t[38]=e("div",{class:"bg-gray-50 p-4 rounded-lg"},[e("h4",{class:"text-sm font-medium text-gray-900 mb-2"},"Assignment Notes"),e("p",{class:"text-sm text-gray-600"}," The primary assignee will be the main person responsible for this work order. If a team is selected, all team members will have access to this work order. ")],-1))])):v("",!0),b.value==="scheduling"?(d(),u("div",ho,[e("div",ko,[m(s(ue),{modelValue:s(o).estimatedStartDate,"onUpdate:modelValue":t[11]||(t[11]=r=>s(o).estimatedStartDate=r),label:"Planned Start Date",type:"datetime-local"},null,8,["modelValue"]),m(s(ue),{modelValue:s(o).dueDate,"onUpdate:modelValue":t[12]||(t[12]=r=>s(o).dueDate=r),label:"Due Date",type:"datetime-local"},null,8,["modelValue"])]),m(s(ue),{modelValue:s(o).estimatedDuration,"onUpdate:modelValue":t[13]||(t[13]=r=>s(o).estimatedDuration=r),label:"Estimated Duration (hours)",type:"number",min:"0",step:"0.5",placeholder:"e.g. 2.5"},null,8,["modelValue"]),t[39]||(t[39]=e("div",{class:"bg-blue-50 p-4 rounded-lg"},[e("h4",{class:"text-sm font-medium text-blue-900 mb-2"},"Scheduling Tips"),e("ul",{class:"text-sm text-blue-800 space-y-1"},[e("li",null,"• Set realistic start and due dates based on priority and complexity"),e("li",null,"• Estimated duration helps with resource planning"),e("li",null,"• Consider dependencies on other work orders"),e("li",null,"• Start date defaults to current time for immediate work")])],-1)),e("div",bo,[m(nt,{modelValue:s(o).timeEntries,"onUpdate:modelValue":t[14]||(t[14]=r=>s(o).timeEntries=r),disabled:s(S),"user-options":s(N),"current-user":A.value},null,8,["modelValue","disabled","user-options","current-user"])])])):v("",!0),b.value==="parts"?(d(),u("div",wo,[m(at,{modelValue:s(o).parts,"onUpdate:modelValue":t[15]||(t[15]=r=>s(o).parts=r),disabled:s(S)},null,8,["modelValue","disabled"])])):v("",!0),b.value==="attachments"?(d(),u("div",_o,[e("div",null,[t[40]||(t[40]=e("label",{class:"block text-sm font-medium text-gray-700 mb-2"}," Primary Image ",-1)),t[41]||(t[41]=e("p",{class:"text-sm text-gray-500 mb-3"}," Upload a main image that represents this work order (before photos, equipment images, etc.) ",-1)),m(s($e),{modelValue:s(o).image,"onUpdate:modelValue":t[16]||(t[16]=r=>s(o).image=r),accept:"image/*",multiple:!1,uploading:s(p),"upload-progress":s(L),onFilesAdded:Fe},null,8,["modelValue","uploading","upload-progress"])]),e("div",null,[t[42]||(t[42]=e("label",{class:"block text-sm font-medium text-gray-700 mb-2"}," Audio Notes ",-1)),t[43]||(t[43]=e("p",{class:"text-sm text-gray-500 mb-3"}," Record voice notes, observations, or instructions for this work order ",-1)),m(lt,{modelValue:s(o).audioRecordings,"onUpdate:modelValue":t[17]||(t[17]=r=>s(o).audioRecordings=r),"work-order-id":V.value==="edit"?z.value:null,"current-user":A.value,"auto-transcribe":!0,"enable-visualization":!0,"auto-save":!1,onRecordingSaved:qe},null,8,["modelValue","work-order-id","current-user"])]),e("div",null,[t[50]||(t[50]=e("label",{class:"block text-sm font-medium text-gray-700 mb-2"}," Additional Files ",-1)),t[51]||(t[51]=e("p",{class:"text-sm text-gray-500 mb-3"}," Upload manuals, documentation, additional photos, or other relevant files ",-1)),e("div",Do,[t[45]||(t[45]=e("svg",{class:"mx-auto h-12 w-12 text-gray-400",stroke:"currentColor",fill:"none",viewBox:"0 0 48 48"},[e("path",{d:"M28 8H12a4 4 0 00-4 4v20m32-12v8m0 0v8a4 4 0 01-4 4H12a4 4 0 01-4-4v-4m32-4l-3.172-3.172a4 4 0 00-5.656 0L28 28M8 32l9.172-9.172a4 4 0 015.656 0L28 28m0 0l4 4m4-24h8m-4-4v8m-12 4h.02","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})],-1)),e("div",Co,[e("label",Eo,[t[44]||(t[44]=e("span",{class:"mt-2 block text-sm font-medium text-gray-900"}," Drop files here or click to upload ",-1)),e("input",{type:"file",class:"sr-only",multiple:"",accept:"image/*,application/pdf,.doc,.docx,.txt",onChange:Le},null,32)])]),t[46]||(t[46]=e("p",{class:"mt-2 text-xs text-gray-500"}," PNG, JPG, PDF, DOC, TXT up to 10MB each (max 10 files) ",-1))]),s(o).files&&s(o).files.length>0?(d(),u("div",So,[(d(!0),u(C,null,E(s(o).files,(r,x)=>(d(),u("div",{key:x,class:"flex items-center justify-between p-3 bg-gray-50 rounded-lg border"},[e("div",Vo,[t[47]||(t[47]=e("svg",{class:"w-5 h-5 text-gray-400 mr-3",fill:"currentColor",viewBox:"0 0 20 20"},[e("path",{"fill-rule":"evenodd",d:"M4 4a2 2 0 012-2h4.586A2 2 0 0112 2.586L15.414 6A2 2 0 0116 7.414V16a2 2 0 01-2 2H6a2 2 0 01-2-2V4zm2 6a1 1 0 011-1h6a1 1 0 110 2H7a1 1 0 01-1-1zm1 3a1 1 0 100 2h6a1 1 0 100-2H7z","clip-rule":"evenodd"})],-1)),e("div",null,[e("span",To,c(r.name||"Untitled File"),1),e("div",Po,c(ze(r.size||0))+" • Uploaded "+c(He(r.uploadedAt)),1)])]),m(s(O),{variant:"ghost",size:"sm",onClick:P=>Be(x),class:"text-red-600 hover:text-red-800"},{default:h(()=>t[48]||(t[48]=[e("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1)])),_:2,__:[48]},1032,["onClick"])]))),128))])):v("",!0),e("div",Oo,[e("details",null,[t[49]||(t[49]=e("summary",{class:"cursor-pointer hover:text-gray-700"},"Alternative Upload Method",-1)),e("div",$o,[m(s($e),{modelValue:s(o).files,"onUpdate:modelValue":t[18]||(t[18]=r=>s(o).files=r),accept:"image/*,application/pdf,.doc,.docx,.txt",multiple:!0,"max-files":10,uploading:s(p),"upload-progress":s(L),onFilesAdded:We},null,8,["modelValue","uploading","upload-progress"])])])])])])):v("",!0),b.value==="options"?(d(),u("div",Mo,[m(s(mt),{modelValue:s(o).requiredSignature,"onUpdate:modelValue":t[19]||(t[19]=r=>s(o).requiredSignature=r),label:"Require signature for completion"},null,8,["modelValue"]),t[52]||(t[52]=e("div",{class:"bg-gray-50 p-4 rounded-lg"},[e("h4",{class:"text-sm font-medium text-gray-900 mb-2"},"Additional Options"),e("p",{class:"text-sm text-gray-600 mb-3"}," Configure special requirements and completion settings for this work order. "),e("ul",{class:"text-sm text-gray-600 space-y-1"},[e("li",null,[k("• "),e("strong",null,"Signature Required:"),k(" Technician must provide digital signature upon completion")]),e("li",null,"• More options will be available in future updates")])],-1)),e("div",Ao,[m(it,{modelValue:s(o).costTracking,"onUpdate:modelValue":t[20]||(t[20]=r=>s(o).costTracking=r),parts:s(o).parts,"time-entries":s(o).timeEntries,disabled:s(S)},null,8,["modelValue","parts","time-entries","disabled"])]),e("div",Io,[m(dt,{modelValue:s(o).statusHistory,"onUpdate:modelValue":t[21]||(t[21]=r=>s(o).statusHistory=r),"current-status":s(o).status,"audit-entries":s(o).auditTrail,"user-options":s(N),"current-user":A.value,disabled:s(S),onStatusChange:je},null,8,["modelValue","current-status","audit-entries","user-options","current-user","disabled"])]),e("div",No,[m(ct,{"work-order":s(o),disabled:s(S),onReportGenerated:Ge},null,8,["work-order","disabled"])])])):v("",!0)])]),_:1},8,["modelValue","title"])]),_:1}))}},mr=Me(jo,[["__scopeId","data-v-4f6f1a42"]]);export{mr as default}; diff --git a/frontend/dist/assets/WorkOrdersListView-D2P7n4OF.js b/frontend/dist/assets/WorkOrdersListView-D2P7n4OF.js deleted file mode 100644 index c3303eb4..00000000 --- a/frontend/dist/assets/WorkOrdersListView-D2P7n4OF.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as Qe,r as h,c as E,o as Ke,s as Je,v as Xe,i as H,w as d,g as u,b as l,d as r,e as t,F as b,k as c,a as m,n as Ye,t as v,aR as Ze,j as g,af as et,aQ as tt}from"./index-BUdRbiwj.js";import{u as at}from"./useWorkOrders-B61P5JA7.js";import{F as ot,a as st}from"./FPPageHeader-CTG2L28r.js";import{T as lt,P as rt,A as it}from"./AudioRecorder-CcKMXbWt.js";import{T as nt}from"./TimeTracker-Ch4gtOrh.js";import{C as dt,S as ut}from"./StatusHistory-DeozEdNs.js";import{W as mt}from"./WorkOrderIdGenerator-BPGN0soM.js";import{R as pt}from"./ReportGenerator-CjXdt1Qp.js";import{F as C}from"./FPInput-CzR_dWoe.js";import{F as ct}from"./FPCheckbox-Bu8jNAEW.js";import{F as f}from"./FPSelect-C7p47Ma2.js";import{F as vt}from"./FPTable-CU8C_NYc.js";import{F as gt}from"./FPModal-DWGF1LV8.js";import{F as ne}from"./FPBadge-BKY5dPnL.js";import{F as de}from"./FPTabs-R71V25QN.js";import{F as ue}from"./FPFileUpload-D2coSbjN.js";import{_ as ft}from"./FormRestoreNotification-DYBlXhOP.js";import"./useFormAutoSave-Jaawgo91.js";import"./workOrder-jNxj_kjQ.js";const yt={class:"p-6"},bt={class:"mb-6 grid grid-cols-1 md:grid-cols-3 lg:grid-cols-6 gap-4"},kt={class:"font-medium text-gray-900"},ht={class:"text-sm text-gray-600 mt-1"},Vt={key:0,class:"flex items-center"},xt={class:"text-sm text-gray-900"},wt={key:1,class:"text-sm text-gray-400"},Ut={class:"text-sm text-gray-900"},St={key:1,class:"text-sm text-gray-400"},Ct={class:"flex items-center space-x-2"},Dt={class:"border-b border-gray-200 mb-6"},Tt={class:"min-h-[400px]"},Ft={key:0,class:"space-y-4"},Mt={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},Ot={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},At={class:"mt-6 border-t pt-6"},Rt={key:1,class:"space-y-4"},Pt={key:2,class:"space-y-4"},Et={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},_t={class:"mt-6 border-t pt-6"},It={key:3,class:"space-y-4"},Lt={key:4,class:"space-y-6"},zt={class:"border-2 border-dashed border-gray-300 rounded-lg p-6 text-center hover:border-gray-400 transition-colors"},Bt={class:"mt-4"},Nt={class:"cursor-pointer"},$t={key:0,class:"mt-4 space-y-2"},Wt={class:"flex items-center"},Ht={class:"text-sm font-medium text-gray-900"},jt={class:"text-xs text-gray-500"},Gt={class:"mt-2 text-xs text-gray-500"},qt={class:"mt-2"},Qt={key:5,class:"space-y-4"},Kt={class:"mt-6 border-t pt-6"},Jt={class:"mt-6 border-t pt-6"},Xt={class:"mt-6 border-t pt-6"},Yt={class:"flex items-center justify-between"},Zt={class:"flex items-center space-x-4"},ea={key:0,class:"flex items-center text-sm text-gray-500"},ta={key:0,class:"w-4 h-4 mr-2 text-amber-500 animate-pulse",fill:"currentColor",viewBox:"0 0 20 20"},aa={key:1,class:"w-4 h-4 mr-2 text-green-500",fill:"currentColor",viewBox:"0 0 20 20"},oa={key:2},sa={key:3},la={class:"flex space-x-3"},ra={__name:"WorkOrdersListView",setup(ia){const _=Xe(),j=Je(),{loading:k,workOrders:w,pagination:me,workOrderForm:s,uploadingFiles:G,uploadProgress:q,priorityOptions:Q,assetOptions:K,locationOptions:J,userOptions:O,teamOptions:pe,categoryOptions:X,searchWorkOrders:I,createWorkOrder:ce,updateWorkOrder:ve,loadDropdownOptions:ge,resetForm:L,formatPriority:fe,formatStatus:ye,getPriorityBadge:be,getStatusBadge:ke,hasUnsavedChanges:A,lastSaveTime:R,restoreFormData:he,clearSavedData:z,hasSavedData:B,getSavedDataInfo:Y,markUserInteraction:Ve,finishInitialization:N,WORK_ORDER_STATUS:U}=at(),D=h(!1),V=h("create"),T=h("all"),P=h(null),p=h("basic"),x=h(null),F=h(!1),$=h(null),M=[{key:"basic",label:"Basic Info"},{key:"assignment",label:"Assignment"},{key:"scheduling",label:"Scheduling"},{key:"parts",label:"Parts"},{key:"attachments",label:"Attachments"},{key:"options",label:"Options"}],i=h({search:"",status:"",priority:"",assignee:"",asset:"",location:"",category:""}),xe=E(()=>[{key:"all",label:"All Orders",badge:w.value.length},{key:"open",label:"Open",badge:w.value.filter(o=>o.status===U.OPEN).length},{key:"in_progress",label:"In Progress",badge:w.value.filter(o=>o.status===U.IN_PROGRESS).length},{key:"complete",label:"Complete",badge:w.value.filter(o=>o.status===U.COMPLETE).length}]),we=[{key:"title",label:"Work Order",sortable:!0},{key:"status",label:"Status",sortable:!0},{key:"priority",label:"Priority",sortable:!0},{key:"assignee",label:"Assignee",sortable:!0},{key:"createdAt",label:"Created",sortable:!0},{key:"dueDate",label:"Due Date",sortable:!0}],Ue=E(()=>{let o=w.value;if(T.value!=="all"){const e={open:U.OPEN,in_progress:U.IN_PROGRESS,complete:U.COMPLETE};o=o.filter(a=>a.status===e[T.value])}if(i.value.search){const e=i.value.search.toLowerCase();o=o.filter(a=>{var n,y;return((n=a.title)==null?void 0:n.toLowerCase().includes(e))||((y=a.description)==null?void 0:y.toLowerCase().includes(e))})}return i.value.priority&&(o=o.filter(e=>e.priority===i.value.priority)),i.value.assignee&&(o=o.filter(e=>{var a,n;return((a=e.assignedTo)==null?void 0:a.some(y=>y.id==i.value.assignee))||((n=e.primaryUser)==null?void 0:n.id)==i.value.assignee})),i.value.asset&&(o=o.filter(e=>{var a;return((a=e.asset)==null?void 0:a.id)==i.value.asset})),i.value.location&&(o=o.filter(e=>{var a;return((a=e.location)==null?void 0:a.id)==i.value.location})),i.value.category&&(o=o.filter(e=>{var a;return((a=e.category)==null?void 0:a.id)==i.value.category})),o}),Se=E(()=>{const o=V.value==="create"?"Create Work Order":"Edit Work Order";return A.value?`${o} (Unsaved Changes)`:o}),Ce=E(()=>{if(!R.value)return"";const o=new Date,e=new Date(R.value),a=o-e,n=Math.floor(a/(60*1e3));return n<1?"just now":n===1?"1 minute ago":n<60?`${n} minutes ago`:e.toLocaleTimeString()}),Z=async()=>{await I()},De=()=>{_.push("/work-orders/calendar")},ee=()=>{V.value="create",P.value=null,p.value="basic",Te(),B()||(L(),re(),N()),D.value=!0},Te=()=>{console.log("Checking for saved data...",{modalMode:V.value,hasSaved:B(),savedInfo:Y()}),V.value==="create"&&B()?($.value=Y(),F.value=!0,console.log("Showing restore notification with data:",$.value)):console.log("No saved data found or not in create mode")},Fe=()=>{var o,e,a;he()&&(F.value=!1,Ve(),console.log("Form data restored successfully"),((o=s.audioRecordings)!=null&&o.some(n=>n._hadBlobUrl)||(e=s.image)!=null&&e._isFile||(a=s.files)!=null&&a.some(n=>n._isFile))&&console.warn("Note: Audio recordings, images, and uploaded files cannot be restored after page refresh. Only metadata was preserved."))},Me=()=>{F.value=!1,z(),L(),re(),N(),console.log("Auto-saved data dismissed and form reset")},Oe=o=>{const e=w.value.find(a=>a.id===o);e&&(V.value="edit",P.value=o,p.value="basic",Object.assign(s,e),N(),D.value=!0)},Ae=o=>{p.value=o},te=o=>{const e=M.findIndex(a=>a.key===p.value);o==="next"&&e0&&(p.value=M[e-1].key)},ae=o=>{_.push(`/work-orders/${o}`)},W=()=>{z(),D.value=!1,L(),F.value=!1},oe=async()=>{try{V.value==="create"?await ce():await ve(P.value,s),z(),W()}catch(o){console.error("Failed to save work order:",o)}},Re=o=>{T.value=o},S=()=>{const o={searchValue:i.value.search,filterFields:[]};i.value.priority&&o.filterFields.push({field:"priority",operation:"EQUAL",values:[i.value.priority]}),i.value.assignee&&o.filterFields.push({field:"assignedTo",operation:"EQUAL",values:[i.value.assignee]}),i.value.asset&&o.filterFields.push({field:"asset",operation:"EQUAL",values:[i.value.asset]}),i.value.location&&o.filterFields.push({field:"location",operation:"EQUAL",values:[i.value.location]}),i.value.category&&o.filterFields.push({field:"category",operation:"EQUAL",values:[i.value.category]}),I(o)},Pe=({column:o,direction:e})=>{console.log("Sort:",o,e)},Ee=o=>{I({page:o-1})},_e=({row:o})=>{ae(o.id)},se=o=>o?new Date(o).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}):"No date",Ie=o=>{if(!o)return"text-gray-400";const e=new Date(o),n=Math.ceil((e-new Date)/(1e3*60*60*24));return n<0?"text-red-600":n<=3?"text-orange-600":"text-gray-900"},Le=o=>{if(o.primaryUser)return`${o.primaryUser.firstName} ${o.primaryUser.lastName}`;if(o.assignedTo&&o.assignedTo.length>0){const e=o.assignedTo[0],a=`${e.firstName} ${e.lastName}`,n=o.assignedTo.length-1;return n>0?`${a} +${n}`:a}return"Unassigned"},le=o=>{var e;return o.primaryUser||((e=o.assignedTo)==null?void 0:e[0])||null},ze=async o=>{console.log("Primary image uploaded:",o)},Be=async o=>{console.log("Additional files uploaded:",o)},Ne=o=>{s.status=o.newStatus;const e={id:Date.now()+Math.random(),action:"STATUS_CHANGE",field:"status",oldValue:o.previousStatus,newValue:o.newStatus,user:o.user,timestamp:new Date().toISOString(),description:`Status changed from ${o.previousStatus} to ${o.newStatus}`};s.auditTrail||(s.auditTrail=[]),s.auditTrail.unshift(e),console.log("Status changed:",o)},$e=o=>{console.log("Report generated:",o);const e={id:Date.now()+Math.random(),action:"REPORT_GENERATED",field:"report",newValue:o.name,user:x.value,timestamp:new Date().toISOString(),description:`Generated report: ${o.name}`};s.auditTrail||(s.auditTrail=[]),s.auditTrail.unshift(e)},We=o=>{console.log("Recording saved:",o);const e={id:Date.now()+Math.random(),action:"AUDIO_RECORDED",field:"audioRecordings",newValue:o.title||"Untitled Recording",user:x.value,timestamp:new Date().toISOString(),description:`Added audio recording: ${o.title||"Untitled Recording"} (${Math.round(o.duration||0)}s)`};s.auditTrail||(s.auditTrail=[]),s.auditTrail.unshift(e)},He=o=>{const e=Array.from(o.target.files);if(!e.length)return;const a=e.map(n=>({...n,id:Date.now()+Math.random(),uploadedAt:new Date().toISOString(),uploadedBy:x.value}));s.files||(s.files=[]),s.files.push(...a),o.target.value=""},je=o=>{s.files&&s.files[o]&&s.files.splice(o,1)},Ge=o=>{if(!o)return"0 B";const e=["B","KB","MB","GB"],a=Math.floor(Math.log(o)/Math.log(1024));return`${Math.round(o/Math.pow(1024,a)*100)/100} ${e[a]}`},qe=o=>{if(!o)return"just now";const e=new Date(o),n=new Date-e,y=Math.floor(n/(1e3*60));if(y<1)return"just now";if(y<60)return`${y}m ago`;const ie=Math.floor(y/60);return ie<24?`${ie}h ago`:e.toLocaleDateString()},re=()=>{if(x.value&&!s.primaryUser&&(s.primaryUser=x.value.id),!s.estimatedStartDate){const o=new Date;o.setMinutes(o.getMinutes()-o.getTimezoneOffset()),s.estimatedStartDate=o.toISOString().slice(0,16)}s.files||(s.files=[]),s.audioRecordings||(s.audioRecordings=[]),s.tasks||(s.tasks=[]),s.parts||(s.parts=[])};return Ke(async()=>{try{if(await ge(),await Z(),j.query.create==="true"){const o=j.query.assetId;setTimeout(()=>{o&&(s.assetId=parseInt(o)),ee(),_.replace({path:"/work-orders"})},500)}}catch(o){console.error("Failed to initialize work orders view:",o)}}),(o,e)=>(u(),H(ot,null,{header:d(()=>[r(st,{title:"Work Orders",description:"Manage and track all maintenance work orders",breadcrumbs:[{text:"Work Orders",to:null}]},{actions:d(()=>[r(t(b),{variant:"outline",size:"sm",onClick:Z},{default:d(()=>e[32]||(e[32]=[l("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),c(" Refresh ",-1)])),_:1,__:[32]}),r(t(b),{variant:"outline",size:"sm",onClick:De},{default:d(()=>e[33]||(e[33]=[l("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"})],-1),c(" Calendar View ",-1)])),_:1,__:[33]}),r(t(b),{variant:"primary",size:"sm",onClick:ee},{default:d(()=>e[34]||(e[34]=[l("svg",{class:"w-4 h-4 mr-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),c(" Create Work Order ",-1)])),_:1,__:[34]})]),tabs:d(()=>[r(t(de),{modelValue:T.value,"onUpdate:modelValue":e[0]||(e[0]=a=>T.value=a),tabs:xe.value,onTabChange:Re},null,8,["modelValue","tabs"])]),_:1})]),default:d(()=>[l("div",yt,[l("div",bt,[r(t(C),{modelValue:i.value.search,"onUpdate:modelValue":e[1]||(e[1]=a=>i.value.search=a),placeholder:"Search work orders...",onInput:S},{prepend:d(()=>e[35]||(e[35]=[l("svg",{class:"w-4 h-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1)])),_:1},8,["modelValue"]),r(t(f),{modelValue:i.value.priority,"onUpdate:modelValue":[e[2]||(e[2]=a=>i.value.priority=a),S],placeholder:"Filter by Priority",options:t(Q)},null,8,["modelValue","options"]),r(t(f),{modelValue:i.value.assignee,"onUpdate:modelValue":[e[3]||(e[3]=a=>i.value.assignee=a),S],placeholder:"Filter by Assignee",options:t(O)},null,8,["modelValue","options"]),r(t(f),{modelValue:i.value.asset,"onUpdate:modelValue":[e[4]||(e[4]=a=>i.value.asset=a),S],placeholder:"Filter by Asset",options:t(K)},null,8,["modelValue","options"]),r(t(f),{modelValue:i.value.location,"onUpdate:modelValue":[e[5]||(e[5]=a=>i.value.location=a),S],placeholder:"Filter by Location",options:t(J)},null,8,["modelValue","options"]),r(t(f),{modelValue:i.value.category,"onUpdate:modelValue":[e[6]||(e[6]=a=>i.value.category=a),S],placeholder:"Filter by Category",options:t(X)},null,8,["modelValue","options"])]),r(t(vt),{columns:we,data:Ue.value,loading:t(k),pagination:t(me),"empty-message":"No work orders found",onSortChange:Pe,onPageChange:Ee,onRowClick:_e},{"column-title":d(({row:a})=>[l("div",null,[l("h4",kt,v(a.title),1),l("p",ht,v(a.description),1)])]),"column-status":d(({row:a})=>[r(t(ne),{variant:t(ke)(a.status)},{default:d(()=>[c(v(t(ye)(a.status)),1)]),_:2},1032,["variant"])]),"column-priority":d(({row:a})=>[r(t(ne),{variant:t(be)(a.priority)},{default:d(()=>[c(v(t(fe)(a.priority)),1)]),_:2},1032,["variant"])]),"column-assignee":d(({row:a})=>[le(a)?(u(),m("div",Vt,[r(t(Ze),{user:le(a),size:"sm",class:"mr-3"},null,8,["user"]),l("span",xt,v(Le(a)),1)])):(u(),m("span",wt,"Unassigned"))]),"column-createdAt":d(({row:a})=>[l("div",Ut,v(se(a.createdAt)),1)]),"column-dueDate":d(({row:a})=>[a.dueDate?(u(),m("div",{key:0,class:Ye(["text-sm",Ie(a.dueDate)])},v(se(a.dueDate)),3)):(u(),m("span",St,"No due date"))]),"row-actions":d(({row:a})=>[l("div",Ct,[r(t(b),{variant:"ghost",size:"sm",onClick:n=>ae(a.id)},{default:d(()=>e[36]||(e[36]=[c(" View ",-1)])),_:2,__:[36]},1032,["onClick"]),r(t(b),{variant:"ghost",size:"sm",onClick:n=>Oe(a.id)},{default:d(()=>e[37]||(e[37]=[c(" Edit ",-1)])),_:2,__:[37]},1032,["onClick"])])]),_:1},8,["data","loading","pagination"])]),r(t(gt),{modelValue:D.value,"onUpdate:modelValue":e[31]||(e[31]=a=>D.value=a),title:Se.value,size:"xl",onConfirm:oe,onCancel:W},{footer:d(()=>[l("div",Yt,[l("div",Zt,[t(A)||t(R)?(u(),m("div",ea,[t(A)?(u(),m("svg",ta,e[53]||(e[53]=[l("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z","clip-rule":"evenodd"},null,-1)]))):(u(),m("svg",aa,e[54]||(e[54]=[l("path",{"fill-rule":"evenodd",d:"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z","clip-rule":"evenodd"},null,-1)]))),t(A)?(u(),m("span",oa,"Auto-saving...")):t(R)?(u(),m("span",sa,"Last saved "+v(Ce.value),1)):g("",!0)])):g("",!0),p.value!=="basic"?(u(),H(t(b),{key:1,variant:"outline",size:"sm",onClick:e[29]||(e[29]=a=>te("previous"))},{default:d(()=>e[55]||(e[55]=[c(" ← Previous ",-1)])),_:1,__:[55]})):g("",!0)]),l("div",la,[r(t(b),{variant:"secondary",onClick:W},{default:d(()=>e[56]||(e[56]=[c(" Cancel ",-1)])),_:1,__:[56]}),p.value!=="options"?(u(),H(t(b),{key:0,variant:"outline",onClick:e[30]||(e[30]=a=>te("next"))},{default:d(()=>e[57]||(e[57]=[c(" Next → ",-1)])),_:1,__:[57]})):g("",!0),r(t(b),{variant:"primary",loading:t(k),onClick:oe},{default:d(()=>[c(v(V.value==="create"?"Create Work Order":"Update Work Order"),1)]),_:1},8,["loading"])])])]),default:d(()=>[l("div",Dt,[r(t(de),{modelValue:p.value,"onUpdate:modelValue":e[7]||(e[7]=a=>p.value=a),tabs:M,onTabChange:Ae},null,8,["modelValue"])]),r(t(ft),{visible:F.value,"saved-data-info":$.value,onRestore:Fe,onDismiss:Me},null,8,["visible","saved-data-info"]),l("div",Tt,[p.value==="basic"?(u(),m("div",Ft,[r(mt,{modelValue:t(s).workOrderId,"onUpdate:modelValue":e[8]||(e[8]=a=>t(s).workOrderId=a),category:t(s).category,location:t(s).location,disabled:t(k),"allow-manual-entry":!0},null,8,["modelValue","category","location","disabled"]),r(t(C),{modelValue:t(s).title,"onUpdate:modelValue":e[9]||(e[9]=a=>t(s).title=a),label:"Title",placeholder:"Enter work order title",required:""},null,8,["modelValue"]),r(t(C),{modelValue:t(s).description,"onUpdate:modelValue":e[10]||(e[10]=a=>t(s).description=a),label:"Description",placeholder:"Enter work order description",type:"textarea",rows:"4"},null,8,["modelValue"]),l("div",Mt,[r(t(f),{modelValue:t(s).priority,"onUpdate:modelValue":e[11]||(e[11]=a=>t(s).priority=a),label:"Priority",options:t(Q),required:""},null,8,["modelValue","options"]),r(t(f),{modelValue:t(s).category,"onUpdate:modelValue":e[12]||(e[12]=a=>t(s).category=a),label:"Category",options:t(X),placeholder:"Select category"},null,8,["modelValue","options"])]),l("div",Ot,[r(t(f),{modelValue:t(s).asset,"onUpdate:modelValue":e[13]||(e[13]=a=>t(s).asset=a),label:"Asset",options:t(K),placeholder:"Select asset"},null,8,["modelValue","options"]),r(t(f),{modelValue:t(s).location,"onUpdate:modelValue":e[14]||(e[14]=a=>t(s).location=a),label:"Location",options:t(J),placeholder:"Select location"},null,8,["modelValue","options"])]),l("div",At,[r(lt,{modelValue:t(s).tasks,"onUpdate:modelValue":e[15]||(e[15]=a=>t(s).tasks=a),disabled:t(k),"show-templates":!0},null,8,["modelValue","disabled"])])])):g("",!0),p.value==="assignment"?(u(),m("div",Rt,[r(t(f),{modelValue:t(s).primaryUser,"onUpdate:modelValue":e[16]||(e[16]=a=>t(s).primaryUser=a),label:"Primary Assignee",options:t(O),placeholder:"Select primary user"},null,8,["modelValue","options"]),r(t(f),{modelValue:t(s).team,"onUpdate:modelValue":e[17]||(e[17]=a=>t(s).team=a),label:"Team",options:t(pe),placeholder:"Select team"},null,8,["modelValue","options"]),e[38]||(e[38]=l("div",{class:"bg-gray-50 p-4 rounded-lg"},[l("h4",{class:"text-sm font-medium text-gray-900 mb-2"},"Assignment Notes"),l("p",{class:"text-sm text-gray-600"}," The primary assignee will be the main person responsible for this work order. If a team is selected, all team members will have access to this work order. ")],-1))])):g("",!0),p.value==="scheduling"?(u(),m("div",Pt,[l("div",Et,[r(t(C),{modelValue:t(s).estimatedStartDate,"onUpdate:modelValue":e[18]||(e[18]=a=>t(s).estimatedStartDate=a),label:"Planned Start Date",type:"datetime-local"},null,8,["modelValue"]),r(t(C),{modelValue:t(s).dueDate,"onUpdate:modelValue":e[19]||(e[19]=a=>t(s).dueDate=a),label:"Due Date",type:"datetime-local"},null,8,["modelValue"])]),r(t(C),{modelValue:t(s).estimatedDuration,"onUpdate:modelValue":e[20]||(e[20]=a=>t(s).estimatedDuration=a),label:"Estimated Duration (hours)",type:"number",min:"0",step:"0.5",placeholder:"e.g. 2.5"},null,8,["modelValue"]),e[39]||(e[39]=l("div",{class:"bg-blue-50 p-4 rounded-lg"},[l("h4",{class:"text-sm font-medium text-blue-900 mb-2"},"Scheduling Tips"),l("ul",{class:"text-sm text-blue-800 space-y-1"},[l("li",null,"• Set realistic start and due dates based on priority and complexity"),l("li",null,"• Estimated duration helps with resource planning"),l("li",null,"• Consider dependencies on other work orders"),l("li",null,"• Start date defaults to current time for immediate work")])],-1)),l("div",_t,[r(nt,{modelValue:t(s).timeEntries,"onUpdate:modelValue":e[21]||(e[21]=a=>t(s).timeEntries=a),disabled:t(k),"user-options":t(O),"current-user":x.value},null,8,["modelValue","disabled","user-options","current-user"])])])):g("",!0),p.value==="parts"?(u(),m("div",It,[r(rt,{modelValue:t(s).parts,"onUpdate:modelValue":e[22]||(e[22]=a=>t(s).parts=a),disabled:t(k)},null,8,["modelValue","disabled"])])):g("",!0),p.value==="attachments"?(u(),m("div",Lt,[l("div",null,[e[40]||(e[40]=l("label",{class:"block text-sm font-medium text-gray-700 mb-2"}," Primary Image ",-1)),e[41]||(e[41]=l("p",{class:"text-sm text-gray-500 mb-3"}," Upload a main image that represents this work order (before photos, equipment images, etc.) ",-1)),r(t(ue),{modelValue:t(s).image,"onUpdate:modelValue":e[23]||(e[23]=a=>t(s).image=a),accept:"image/*",multiple:!1,uploading:t(G),"upload-progress":t(q),onFilesAdded:ze},null,8,["modelValue","uploading","upload-progress"])]),l("div",null,[e[42]||(e[42]=l("label",{class:"block text-sm font-medium text-gray-700 mb-2"}," Audio Notes ",-1)),e[43]||(e[43]=l("p",{class:"text-sm text-gray-500 mb-3"}," Record voice notes, observations, or instructions for this work order ",-1)),r(it,{modelValue:t(s).audioRecordings,"onUpdate:modelValue":e[24]||(e[24]=a=>t(s).audioRecordings=a),"work-order-id":V.value==="edit"?P.value:null,"current-user":x.value,"auto-transcribe":!0,"enable-visualization":!0,"auto-save":!1,onRecordingSaved:We},null,8,["modelValue","work-order-id","current-user"])]),l("div",null,[e[50]||(e[50]=l("label",{class:"block text-sm font-medium text-gray-700 mb-2"}," Additional Files ",-1)),e[51]||(e[51]=l("p",{class:"text-sm text-gray-500 mb-3"}," Upload manuals, documentation, additional photos, or other relevant files ",-1)),l("div",zt,[e[45]||(e[45]=l("svg",{class:"mx-auto h-12 w-12 text-gray-400",stroke:"currentColor",fill:"none",viewBox:"0 0 48 48"},[l("path",{d:"M28 8H12a4 4 0 00-4 4v20m32-12v8m0 0v8a4 4 0 01-4 4H12a4 4 0 01-4-4v-4m32-4l-3.172-3.172a4 4 0 00-5.656 0L28 28M8 32l9.172-9.172a4 4 0 015.656 0L28 28m0 0l4 4m4-24h8m-4-4v8m-12 4h.02","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})],-1)),l("div",Bt,[l("label",Nt,[e[44]||(e[44]=l("span",{class:"mt-2 block text-sm font-medium text-gray-900"}," Drop files here or click to upload ",-1)),l("input",{type:"file",class:"sr-only",multiple:"",accept:"image/*,application/pdf,.doc,.docx,.txt",onChange:He},null,32)])]),e[46]||(e[46]=l("p",{class:"mt-2 text-xs text-gray-500"}," PNG, JPG, PDF, DOC, TXT up to 10MB each (max 10 files) ",-1))]),t(s).files&&t(s).files.length>0?(u(),m("div",$t,[(u(!0),m(et,null,tt(t(s).files,(a,n)=>(u(),m("div",{key:n,class:"flex items-center justify-between p-3 bg-gray-50 rounded-lg border"},[l("div",Wt,[e[47]||(e[47]=l("svg",{class:"w-5 h-5 text-gray-400 mr-3",fill:"currentColor",viewBox:"0 0 20 20"},[l("path",{"fill-rule":"evenodd",d:"M4 4a2 2 0 012-2h4.586A2 2 0 0112 2.586L15.414 6A2 2 0 0116 7.414V16a2 2 0 01-2 2H6a2 2 0 01-2-2V4zm2 6a1 1 0 011-1h6a1 1 0 110 2H7a1 1 0 01-1-1zm1 3a1 1 0 100 2h6a1 1 0 100-2H7z","clip-rule":"evenodd"})],-1)),l("div",null,[l("span",Ht,v(a.name||"Untitled File"),1),l("div",jt,v(Ge(a.size||0))+" • Uploaded "+v(qe(a.uploadedAt)),1)])]),r(t(b),{variant:"ghost",size:"sm",onClick:y=>je(n),class:"text-red-600 hover:text-red-800"},{default:d(()=>e[48]||(e[48]=[l("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1)])),_:2,__:[48]},1032,["onClick"])]))),128))])):g("",!0),l("div",Gt,[l("details",null,[e[49]||(e[49]=l("summary",{class:"cursor-pointer hover:text-gray-700"},"Alternative Upload Method",-1)),l("div",qt,[r(t(ue),{modelValue:t(s).files,"onUpdate:modelValue":e[25]||(e[25]=a=>t(s).files=a),accept:"image/*,application/pdf,.doc,.docx,.txt",multiple:!0,"max-files":10,uploading:t(G),"upload-progress":t(q),onFilesAdded:Be},null,8,["modelValue","uploading","upload-progress"])])])])])])):g("",!0),p.value==="options"?(u(),m("div",Qt,[r(t(ct),{modelValue:t(s).requiredSignature,"onUpdate:modelValue":e[26]||(e[26]=a=>t(s).requiredSignature=a),label:"Require signature for completion"},null,8,["modelValue"]),e[52]||(e[52]=l("div",{class:"bg-gray-50 p-4 rounded-lg"},[l("h4",{class:"text-sm font-medium text-gray-900 mb-2"},"Additional Options"),l("p",{class:"text-sm text-gray-600 mb-3"}," Configure special requirements and completion settings for this work order. "),l("ul",{class:"text-sm text-gray-600 space-y-1"},[l("li",null,[c("• "),l("strong",null,"Signature Required:"),c(" Technician must provide digital signature upon completion")]),l("li",null,"• More options will be available in future updates")])],-1)),l("div",Kt,[r(dt,{modelValue:t(s).costTracking,"onUpdate:modelValue":e[27]||(e[27]=a=>t(s).costTracking=a),parts:t(s).parts,"time-entries":t(s).timeEntries,disabled:t(k)},null,8,["modelValue","parts","time-entries","disabled"])]),l("div",Jt,[r(ut,{modelValue:t(s).statusHistory,"onUpdate:modelValue":e[28]||(e[28]=a=>t(s).statusHistory=a),"current-status":t(s).status,"audit-entries":t(s).auditTrail,"user-options":t(O),"current-user":x.value,disabled:t(k),onStatusChange:Ne},null,8,["modelValue","current-status","audit-entries","user-options","current-user","disabled"])]),l("div",Xt,[r(pt,{"work-order":t(s),disabled:t(k),onReportGenerated:$e},null,8,["work-order","disabled"])])])):g("",!0)])]),_:1},8,["modelValue","title"])]),_:1}))}},Da=Qe(ra,[["__scopeId","data-v-12572b2e"]]);export{Da as default}; diff --git a/frontend/dist/assets/WorkOrdersListView-DHY1nn-j.js b/frontend/dist/assets/WorkOrdersListView-DHY1nn-j.js new file mode 100644 index 00000000..2b450e63 --- /dev/null +++ b/frontend/dist/assets/WorkOrdersListView-DHY1nn-j.js @@ -0,0 +1 @@ +import{r as V,c as $,o as We,aO as nt,_ as rt,s as dt,v as ut,i as Se,w as v,g as u,b as i,d,a as m,j as x,n as P,e as t,F as M,k as T,t as y,aS as Ie,af as Pe,aR as He,h as Ne}from"./index-QAlcqU00.js";import{u as ct}from"./useWorkOrders-CVmaGBfy.js";import{u as mt}from"./useMobileOptimization-Ds6Eb1bE.js";import{F as pt,a as vt}from"./FPPageHeader-CFIwZZgQ.js";import{T as ft,P as gt,A as ht}from"./AudioRecorder-BzlZ8cXI.js";import{T as yt}from"./TimeTracker-DBp8PrtX.js";import{C as bt,S as wt}from"./StatusHistory-C7FtpZlE.js";import{W as kt}from"./WorkOrderIdGenerator-2pnsJNJL.js";import{R as xt}from"./ReportGenerator-Dld_SPXF.js";import{F as ie}from"./FPInput-D5RURom0.js";import{F as Tt}from"./FPCheckbox-DcRYwN3n.js";import{F as U}from"./FPSelect-j7n_x8eB.js";import{F as Vt}from"./FPTable-CWvngIYd.js";import{F as St}from"./FPModal-DMoPysvU.js";import{F as Ce}from"./FPBadge-DvOitM1C.js";import{F as Be}from"./FPTabs-qq-Tmb7J.js";import{F as $e}from"./FPFileUpload-Bk17EQTg.js";import{_ as Ct}from"./FormRestoreNotification-2Wflg1mH.js";import"./useFormAutoSave-BrW9Wl2Q.js";import"./workOrder-jNxj_kjQ.js";function Mt(){const le=V(!1),l=V(null),H=V("portrait"),ne=V({width:window.innerWidth||0,height:window.innerHeight||0,isSmall:!1,isMedium:!1,isLarge:!1}),f=new Map,Z=new Set,O=new Map;let E=new Map,j=new Map;const ve=$(()=>{const o=navigator.userAgent.toLowerCase();return/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i.test(o)}),re=$(()=>"ontouchstart"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0||window.matchMedia&&window.matchMedia("(pointer: coarse)").matches),fe=()=>{const o=window.innerWidth,r=window.innerHeight;ne.value={width:o,height:r,isSmall:o<768,isMedium:o>=768&&o<1024,isLarge:o>=1024}},ge=()=>{window.orientation!==void 0?H.value=Math.abs(window.orientation)===90?"landscape":"portrait":H.value=window.innerWidth>window.innerHeight?"landscape":"portrait"},_e=(o,r={})=>{const{onTouchStart:c,onTouchMove:n,onTouchEnd:w,onTap:D,onLongPress:h}=r;let N=0,S=null;const C=k=>{N=Date.now();const B=k.touches[0];O.set(o,{startX:B.clientX,startY:B.clientY,startTime:N}),h&&(S=setTimeout(()=>{h(k)},500)),c&&c(k)},Y=k=>{S&&(clearTimeout(S),S=null),n&&n(k)},L=k=>{const me=Date.now()-N;S&&(clearTimeout(S),S=null),D&&me<500&&D(k),w&&w(k),O.delete(o)};o.addEventListener("touchstart",C,{passive:!0}),o.addEventListener("touchmove",Y,{passive:!0}),o.addEventListener("touchend",L,{passive:!0}),f.has(o)||f.set(o,[]),f.get(o).push(["touchstart",C],["touchmove",Y],["touchend",L])},Q=(o,r={})=>{const{onSwipeLeft:c,onSwipeRight:n,onSwipeUp:w,onSwipeDown:D}=r,h=S=>{const C=S.touches[0];O.set(o,{startX:C.clientX,startY:C.clientY,startTime:Date.now()})},N=S=>{const C=O.get(o);if(!C)return;const Y=S.changedTouches[0],L=Y.clientX-C.startX,k=Y.clientY-C.startY,B=Math.sqrt(L*L+k*k),me=Date.now()-C.startTime;if(B<50){O.delete(o);return}let X=null;Math.abs(L)>Math.abs(k)?X=L>0?"right":"left":X=k>0?"down":"up";const se={direction:X,distance:B,duration:me};switch(X){case"left":c&&c(se);break;case"right":n&&n(se);break;case"up":w&&w(se);break;case"down":D&&D(se);break}O.delete(o)};o.addEventListener("touchstart",h,{passive:!0}),o.addEventListener("touchend",N,{passive:!0}),f.has(o)||f.set(o,[]),f.get(o).push(["touchstart",h],["touchend",N])},he=(o,r={})=>{o.style.fontSize="16px",o.style.minHeight="44px",r.inputMode&&o.setAttribute("inputmode",r.inputMode),r.autocomplete&&o.setAttribute("autocomplete",r.autocomplete),o.classList.add("mobile-form-field"),o.addEventListener("focus",()=>{le.value=!0,l.value="focus"}),o.addEventListener("blur",()=>{le.value=!1,l.value="blur"})},ye=(o,r={})=>{o.style.minHeight="44px",o.style.minWidth="44px",o.classList.add("mobile-touch-feedback"),b(o),o.style.touchAction="manipulation",console.log("[MobileFormControls] Button enhanced for mobile")},be=o=>{o.style.fontSize="16px",o.style.appearance="none",o.style.webkitAppearance="none",o.style.mozAppearance="none",o.style.minHeight="44px",console.log("[MobileFormControls] Select enhanced for mobile")},we=(o,r)=>{const n={numeric:{inputmode:"numeric",pattern:"[0-9]*",autocomplete:"off"},email:{inputmode:"email",autocomplete:"email"},tel:{inputmode:"tel",autocomplete:"tel"},search:{inputmode:"search",autocomplete:"off"},url:{inputmode:"url",autocomplete:"url"}}[r];n&&Object.entries(n).forEach(([w,D])=>{o.setAttribute(w,D)}),console.log(`[MobileFormControls] Input optimized for ${r}`)},K=(o,r={})=>{o.style.minWidth="44px",o.style.minHeight="44px",o.classList.add("mobile-focus-enhanced"),r.voiceLabel&&o.setAttribute("aria-label",r.voiceLabel),o.style.outline="none",o.style.transition="box-shadow 0.2s ease",console.log("[MobileFormControls] Accessibility enhanced")},J=()=>{const o=document.querySelector('meta[name="viewport"]');if(o){const r=o.getAttribute("content");r.includes("user-scalable=no")||o.setAttribute("content",r+", user-scalable=no")}},Ee=()=>{const o=document.querySelector('meta[name="viewport"]');if(o){const c=o.getAttribute("content").replace(", user-scalable=no",", user-scalable=yes");o.setAttribute("content",c)}},ee=()=>{const o=document.documentElement;o.style.setProperty("--safe-area-inset-top","env(safe-area-inset-top)"),o.style.setProperty("--safe-area-inset-right","env(safe-area-inset-right)"),o.style.setProperty("--safe-area-inset-bottom","env(safe-area-inset-bottom)"),o.style.setProperty("--safe-area-inset-left","env(safe-area-inset-left)")},te=(o,r=250)=>(...c)=>{const n=o.toString();E.has(n)&&clearTimeout(E.get(n));const w=setTimeout(()=>{o(...c),E.delete(n)},r);E.set(n,w)},de=(o,r=16)=>(...c)=>{const n=o.toString();if(!j.has(n)){o(...c);const w=setTimeout(()=>{j.delete(n)},r);j.set(n,w)}},ke=o=>{const r=te(o);window.addEventListener("resize",r),f.has(window)||f.set(window,[]),f.get(window).push(["resize",r])},ue=(o,r)=>{const c=de(r);o.addEventListener("scroll",c,{passive:!0}),f.has(o)||f.set(o,[]),f.get(o).push(["scroll",c])},z=o=>{const r=()=>{ge(),o(H.value)};window.addEventListener("orientationchange",r),window.addEventListener("resize",r),f.has(window)||f.set(window,[]),f.get(window).push(["orientationchange",r],["resize",r])},g=(o,r)=>{ce(o);const c=document.createElement("div");c.className="mobile-validation-error",c.textContent=r,c.style.color="#ef4444",c.style.fontSize="14px",c.style.marginTop="4px",o.parentNode.insertBefore(c,o.nextSibling)},ce=o=>{const r=o.nextElementSibling;r&&r.classList.contains("mobile-validation-error")&&r.remove()},De=(o,r)=>{const c=()=>{const n=r(o.value);n?g(o,n):ce(o)};o.addEventListener("blur",c),f.has(o)||f.set(o,[]),f.get(o).push(["blur",c])},G=o=>{o.classList.add("mobile-modal"),o.style.position="fixed",o.style.top="0",o.style.left="0",o.style.right="0",o.style.bottom="0",o.style.zIndex="9999",console.log("[MobileFormControls] Modal enhanced for mobile")},A=(o,r)=>{Q(o,{onSwipeDown:c=>{c.distance>100&&r()}})},q=o=>{o.disabled=!0,o.classList.add("mobile-loading"),o.dataset.originalContent||(o.dataset.originalContent=o.innerHTML),o.innerHTML="⟳ Loading..."},oe=o=>{o.disabled=!1,o.classList.remove("mobile-loading"),o.dataset.originalContent&&(o.innerHTML=o.dataset.originalContent,delete o.dataset.originalContent)},b=o=>{o.style.position="relative",o.style.overflow="hidden";const r=c=>{const n=o.getBoundingClientRect(),w=c.touches[0].clientX-n.left,D=c.touches[0].clientY-n.top,h=document.createElement("span");h.style.position="absolute",h.style.borderRadius="50%",h.style.background="rgba(255, 255, 255, 0.3)",h.style.transform="scale(0)",h.style.animation="ripple 0.6s linear",h.style.left=`${w-10}px`,h.style.top=`${D-10}px`,h.style.width="20px",h.style.height="20px",o.appendChild(h),setTimeout(()=>{h.remove()},600)};o.addEventListener("touchstart",r,{passive:!0})},F=(o,r)=>{if(window.ResizeObserver){const c=new ResizeObserver(r);return c.observe(o),Z.add(c),c}return null},I=()=>{f.forEach((o,r)=>{o.forEach(([c,n])=>{r.removeEventListener(c,n)})}),f.clear(),Z.forEach(o=>{o.disconnect()}),Z.clear(),E.forEach(o=>clearTimeout(o)),j.forEach(o=>clearTimeout(o)),E.clear(),j.clear(),console.log("[MobileFormControls] Cleanup completed")};return We(()=>{fe(),ge(),ee(),ke(fe),z(()=>{console.log("[MobileFormControls] Orientation changed to:",H.value)}),console.log("[MobileFormControls] Mobile form controls initialized")}),nt(()=>{I()}),{isMobileDevice:ve,isTouchDevice:re,isKeyboardVisible:le,lastInteraction:l,orientation:H,screenSize:ne,addTouchHandlers:_e,addSwipeHandlers:Q,enhanceFormField:he,enhanceButton:ye,enhanceSelect:be,optimizeInputForMobile:we,enhanceAccessibility:K,preventZoomOnInput:J,restoreZoom:Ee,adjustForSafeArea:ee,onResize:ke,onScroll:ue,onOrientationChange:z,debounce:te,throttle:de,showValidationError:g,clearValidationError:ce,addMobileValidation:De,enhanceModalForMobile:G,addSwipeToDismiss:A,showMobileLoading:q,hideMobileLoading:oe,observeResize:F,cleanup:I}}const _t={key:0},Et={key:0},Dt={class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},Ut={key:0,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 6h16M4 10h16M4 14h16M4 18h16"},At={key:1,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 6a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2H6a2 2 0 01-2-2V6zM14 6a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2V6zM4 16a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2H6a2 2 0 01-2-2v-2zM14 16a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2v-2z"},Ft={key:0},Lt={key:1},Rt={class:"p-6"},Ot={key:0},zt={class:"font-medium text-gray-900"},It={class:"text-sm text-gray-600 mt-1"},Pt={key:0,class:"flex items-center"},Ht={class:"text-sm text-gray-900"},Nt={key:1,class:"text-sm text-gray-400"},Bt={class:"text-sm text-gray-900"},$t={key:1,class:"text-sm text-gray-400"},Wt={class:"flex items-center space-x-2"},jt={key:1,class:"space-y-4"},Gt={key:0,class:"flex items-center justify-center py-12"},qt={key:1,class:"text-center py-12"},Yt={key:2},Xt=["onClick"],Zt={class:"flex items-start justify-between mb-3"},Qt={class:"flex-1 min-w-0"},Kt={class:"text-lg font-medium text-gray-900 truncate"},Jt={class:"text-sm text-gray-600 mt-1 line-clamp-2"},eo={class:"flex flex-col items-end space-y-2 ml-4"},to={class:"grid grid-cols-2 gap-4 text-sm"},oo={key:0,class:"flex items-center mt-1"},so={class:"text-gray-900 truncate"},ao={key:1,class:"text-gray-400"},io={key:1,class:"text-gray-400 mt-1 block"},lo={class:"flex items-center justify-between mt-4 pt-3 border-t border-gray-100"},no={class:"text-sm text-gray-500"},ro={class:"flex space-x-2"},uo={class:"border-b border-gray-200 mb-6"},co={class:"min-h-[400px]"},mo={key:0,class:"space-y-4"},po={class:"mt-6 border-t pt-6"},vo={key:1,class:"space-y-4"},fo={key:2,class:"space-y-4"},go={class:"mt-6 border-t pt-6"},ho={key:3,class:"space-y-4"},yo={key:4,class:"space-y-6"},bo={class:"border-2 border-dashed border-gray-300 rounded-lg p-6 text-center hover:border-gray-400 transition-colors"},wo={class:"mt-4"},ko={class:"cursor-pointer"},xo={key:0,class:"mt-4 space-y-2"},To={class:"flex items-center"},Vo={class:"text-sm font-medium text-gray-900"},So={class:"text-xs text-gray-500"},Co={class:"mt-2 text-xs text-gray-500"},Mo={class:"mt-2"},_o={key:5,class:"space-y-4"},Eo={class:"mt-6 border-t pt-6"},Do={class:"mt-6 border-t pt-6"},Uo={class:"mt-6 border-t pt-6"},Ao={class:"flex items-center justify-between"},Fo={class:"flex items-center space-x-4"},Lo={key:0,class:"flex items-center text-sm text-gray-500"},Ro={key:0,class:"w-4 h-4 mr-2 text-amber-500 animate-pulse",fill:"currentColor",viewBox:"0 0 20 20"},Oo={key:1,class:"w-4 h-4 mr-2 text-green-500",fill:"currentColor",viewBox:"0 0 20 20"},zo={key:2},Io={key:3},Po={class:"flex space-x-3"},Ho={__name:"WorkOrdersListView",setup(je){const pe=ut(),Me=dt(),{loading:_,workOrders:W,pagination:le,workOrderForm:l,uploadingFiles:H,uploadProgress:ne,priorityOptions:f,assetOptions:Z,locationOptions:O,userOptions:E,teamOptions:j,categoryOptions:ve,searchWorkOrders:re,createWorkOrder:fe,updateWorkOrder:ge,loadDropdownOptions:_e,resetForm:Q,formatPriority:he,formatStatus:ye,getPriorityBadge:be,getStatusBadge:we,hasUnsavedChanges:K,lastSaveTime:J,restoreFormData:Ee,clearSavedData:ee,hasSavedData:te,getSavedDataInfo:de,markUserInteraction:ke,finishInitialization:ue,WORK_ORDER_STATUS:z}=ct(),{isMobile:g,screenSize:ce,optimizeTableForMobile:De}=mt();Mt();const G=V(!1),A=V("create"),q=V("all"),oe=V(null),b=V("basic"),F=V(null),I=V(!1),o=V(!1),r=V(null),c=$(()=>[{key:"basic",label:g.value?"Basic":"Basic Info"},{key:"assignment",label:g.value?"Assign":"Assignment"},{key:"scheduling",label:g.value?"Schedule":"Scheduling"},{key:"parts",label:"Parts"},{key:"attachments",label:g.value?"Files":"Attachments"},{key:"options",label:"Options"}]),n=V({search:"",status:"",priority:"",assignee:"",asset:"",location:"",category:""}),w=$(()=>[{key:"all",label:"All Orders",badge:W.value.length},{key:"open",label:"Open",badge:W.value.filter(a=>a.status===z.OPEN).length},{key:"in_progress",label:"In Progress",badge:W.value.filter(a=>a.status===z.IN_PROGRESS).length},{key:"complete",label:"Complete",badge:W.value.filter(a=>a.status===z.COMPLETE).length}]),D=$(()=>De([{key:"title",label:"Work Order",sortable:!0,priority:"high",essential:!0},{key:"status",label:"Status",sortable:!0,priority:"high"},{key:"priority",label:"Priority",sortable:!0,priority:"medium"},{key:"assignee",label:"Assignee",sortable:!0,priority:"medium"},{key:"createdAt",label:"Created",sortable:!0,priority:"low"},{key:"dueDate",label:"Due Date",sortable:!0,priority:"medium"}])),h=$(()=>{let a=W.value;if(q.value!=="all"){const e={open:z.OPEN,in_progress:z.IN_PROGRESS,complete:z.COMPLETE};a=a.filter(s=>s.status===e[q.value])}if(n.value.search){const e=n.value.search.toLowerCase();a=a.filter(s=>{var p,R;return((p=s.title)==null?void 0:p.toLowerCase().includes(e))||((R=s.description)==null?void 0:R.toLowerCase().includes(e))})}return n.value.priority&&(a=a.filter(e=>e.priority===n.value.priority)),n.value.assignee&&(a=a.filter(e=>{var s,p;return((s=e.assignedTo)==null?void 0:s.some(R=>R.id==n.value.assignee))||((p=e.primaryUser)==null?void 0:p.id)==n.value.assignee})),n.value.asset&&(a=a.filter(e=>{var s;return((s=e.asset)==null?void 0:s.id)==n.value.asset})),n.value.location&&(a=a.filter(e=>{var s;return((s=e.location)==null?void 0:s.id)==n.value.location})),n.value.category&&(a=a.filter(e=>{var s;return((s=e.category)==null?void 0:s.id)==n.value.category})),a}),N=$(()=>{const a=A.value==="create"?"Create Work Order":"Edit Work Order";return K.value?`${a} (Unsaved Changes)`:a}),S=$(()=>{if(!J.value)return"";const a=new Date,e=new Date(J.value),s=a-e,p=Math.floor(s/(60*1e3));return p<1?"just now":p===1?"1 minute ago":p<60?`${p} minutes ago`:e.toLocaleTimeString()}),C=async()=>{await re()},Y=()=>{pe.push("/work-orders/calendar")},L=()=>{A.value="create",oe.value=null,b.value="basic",k(),te()||(Q(),Oe(),ue()),G.value=!0},k=()=>{console.log("Checking for saved data...",{modalMode:A.value,hasSaved:te(),savedInfo:de()}),A.value==="create"&&te()?(r.value=de(),o.value=!0,console.log("Showing restore notification with data:",r.value)):console.log("No saved data found or not in create mode")},B=()=>{var a,e,s;Ee()&&(o.value=!1,ke(),console.log("Form data restored successfully"),((a=l.audioRecordings)!=null&&a.some(p=>p._hadBlobUrl)||(e=l.image)!=null&&e._isFile||(s=l.files)!=null&&s.some(p=>p._isFile))&&console.warn("Note: Audio recordings, images, and uploaded files cannot be restored after page refresh. Only metadata was preserved."))},me=()=>{o.value=!1,ee(),Q(),Oe(),ue(),console.log("Auto-saved data dismissed and form reset")},X=a=>{const e=W.value.find(s=>s.id===a);e&&(A.value="edit",oe.value=a,b.value="basic",Object.assign(l,e),ue(),G.value=!0)},se=a=>{b.value=a},Ae=a=>{const e=c.findIndex(s=>s.key===b.value);a==="next"&&e0&&(b.value=c[e-1].key)},xe=a=>{pe.push(`/work-orders/${a}`)},Ue=()=>{ee(),G.value=!1,Q(),o.value=!1},Fe=async()=>{try{A.value==="create"?await fe():await ge(oe.value,l),ee(),Ue()}catch(a){console.error("Failed to save work order:",a)}},Ge=a=>{q.value=a},ae=()=>{const a={searchValue:n.value.search,filterFields:[]};n.value.priority&&a.filterFields.push({field:"priority",operation:"EQUAL",values:[n.value.priority]}),n.value.assignee&&a.filterFields.push({field:"assignedTo",operation:"EQUAL",values:[n.value.assignee]}),n.value.asset&&a.filterFields.push({field:"asset",operation:"EQUAL",values:[n.value.asset]}),n.value.location&&a.filterFields.push({field:"location",operation:"EQUAL",values:[n.value.location]}),n.value.category&&a.filterFields.push({field:"category",operation:"EQUAL",values:[n.value.category]}),re(a)},qe=({column:a,direction:e})=>{console.log("Sort:",a,e)},Ye=a=>{re({page:a-1})},Xe=({row:a})=>{xe(a.id)},Ze=()=>{I.value=!I.value},Qe=a=>{xe(a.id)},Te=a=>a?new Date(a).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}):"No date",Le=a=>{if(!a)return"text-gray-400";const e=new Date(a),p=Math.ceil((e-new Date)/(1e3*60*60*24));return p<0?"text-red-600":p<=3?"text-orange-600":"text-gray-900"},Re=a=>{if(a.primaryUser)return`${a.primaryUser.firstName} ${a.primaryUser.lastName}`;if(a.assignedTo&&a.assignedTo.length>0){const e=a.assignedTo[0],s=`${e.firstName} ${e.lastName}`,p=a.assignedTo.length-1;return p>0?`${s} +${p}`:s}return"Unassigned"},Ve=a=>{var e;return a.primaryUser||((e=a.assignedTo)==null?void 0:e[0])||null},Ke=async a=>{console.log("Primary image uploaded:",a)},Je=async a=>{console.log("Additional files uploaded:",a)},et=a=>{l.status=a.newStatus;const e={id:Date.now()+Math.random(),action:"STATUS_CHANGE",field:"status",oldValue:a.previousStatus,newValue:a.newStatus,user:a.user,timestamp:new Date().toISOString(),description:`Status changed from ${a.previousStatus} to ${a.newStatus}`};l.auditTrail||(l.auditTrail=[]),l.auditTrail.unshift(e),console.log("Status changed:",a)},tt=a=>{console.log("Report generated:",a);const e={id:Date.now()+Math.random(),action:"REPORT_GENERATED",field:"report",newValue:a.name,user:F.value,timestamp:new Date().toISOString(),description:`Generated report: ${a.name}`};l.auditTrail||(l.auditTrail=[]),l.auditTrail.unshift(e)},ot=a=>{console.log("Recording saved:",a);const e={id:Date.now()+Math.random(),action:"AUDIO_RECORDED",field:"audioRecordings",newValue:a.title||"Untitled Recording",user:F.value,timestamp:new Date().toISOString(),description:`Added audio recording: ${a.title||"Untitled Recording"} (${Math.round(a.duration||0)}s)`};l.auditTrail||(l.auditTrail=[]),l.auditTrail.unshift(e)},st=a=>{const e=Array.from(a.target.files);if(!e.length)return;const s=e.map(p=>({...p,id:Date.now()+Math.random(),uploadedAt:new Date().toISOString(),uploadedBy:F.value}));l.files||(l.files=[]),l.files.push(...s),a.target.value=""},at=a=>{l.files&&l.files[a]&&l.files.splice(a,1)},it=a=>{if(!a)return"0 B";const e=["B","KB","MB","GB"],s=Math.floor(Math.log(a)/Math.log(1024));return`${Math.round(a/Math.pow(1024,s)*100)/100} ${e[s]}`},lt=a=>{if(!a)return"just now";const e=new Date(a),p=new Date-e,R=Math.floor(p/(1e3*60));if(R<1)return"just now";if(R<60)return`${R}m ago`;const ze=Math.floor(R/60);return ze<24?`${ze}h ago`:e.toLocaleDateString()},Oe=()=>{if(F.value&&!l.primaryUser&&(l.primaryUser=F.value.id),!l.estimatedStartDate){const a=new Date;a.setMinutes(a.getMinutes()-a.getTimezoneOffset()),l.estimatedStartDate=a.toISOString().slice(0,16)}l.files||(l.files=[]),l.audioRecordings||(l.audioRecordings=[]),l.tasks||(l.tasks=[]),l.parts||(l.parts=[])};return We(async()=>{try{if(await _e(),await C(),g.value&&ce.value.width<768&&(I.value=!0),g.value,Me.query.create==="true"){const a=Me.query.assetId;setTimeout(()=>{a&&(l.assetId=parseInt(a)),L(),pe.replace({path:"/work-orders"})},500)}}catch(a){console.error("Failed to initialize work orders view:",a)}}),(a,e)=>(u(),Se(pt,null,{header:v(()=>[d(vt,{title:"Work Orders",description:"Manage and track all maintenance work orders",breadcrumbs:[{text:"Work Orders",to:null}]},{actions:v(()=>[d(t(M),{variant:"outline",size:"sm",onClick:C},{default:v(()=>[(u(),m("svg",{class:P(["w-4 h-4",t(g)?"":"mr-2"]),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},e[32]||(e[32]=[i("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"},null,-1)]),2)),t(g)?x("",!0):(u(),m("span",_t,"Refresh"))]),_:1}),d(t(M),{variant:"outline",size:"sm",onClick:Y},{default:v(()=>[(u(),m("svg",{class:P(["w-4 h-4",t(g)?"":"mr-2"]),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},e[33]||(e[33]=[i("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"},null,-1)]),2)),t(g)?x("",!0):(u(),m("span",Et,"Calendar View"))]),_:1}),t(g)?(u(),Se(t(M),{key:0,variant:"outline",size:"sm",onClick:Ze},{default:v(()=>[(u(),m("svg",Dt,[I.value?(u(),m("path",Ut)):(u(),m("path",At))]))]),_:1})):x("",!0),d(t(M),{variant:"primary",size:"sm",onClick:L},{default:v(()=>[(u(),m("svg",{class:P(["w-4 h-4",t(g)?"":"mr-2"]),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},e[34]||(e[34]=[i("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"},null,-1)]),2)),t(g)?(u(),m("span",Lt,"Create")):(u(),m("span",Ft,"Create Work Order"))]),_:1})]),tabs:v(()=>[d(t(Be),{modelValue:q.value,"onUpdate:modelValue":e[0]||(e[0]=s=>q.value=s),tabs:w.value,onTabChange:Ge},null,8,["modelValue","tabs"])]),_:1})]),default:v(()=>[i("div",Rt,[i("div",{class:P(["mb-6 grid gap-4",t(g)?"grid-cols-1":"grid-cols-1 md:grid-cols-3 lg:grid-cols-6"])},[d(t(ie),{modelValue:n.value.search,"onUpdate:modelValue":e[1]||(e[1]=s=>n.value.search=s),placeholder:"Search work orders...",onInput:ae},{prepend:v(()=>e[35]||(e[35]=[i("svg",{class:"w-4 h-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[i("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})],-1)])),_:1},8,["modelValue"]),d(t(U),{modelValue:n.value.priority,"onUpdate:modelValue":[e[2]||(e[2]=s=>n.value.priority=s),ae],placeholder:"Filter by Priority",options:t(f)},null,8,["modelValue","options"]),d(t(U),{modelValue:n.value.assignee,"onUpdate:modelValue":[e[3]||(e[3]=s=>n.value.assignee=s),ae],placeholder:"Filter by Assignee",options:t(E)},null,8,["modelValue","options"]),d(t(U),{modelValue:n.value.asset,"onUpdate:modelValue":[e[4]||(e[4]=s=>n.value.asset=s),ae],placeholder:"Filter by Asset",options:t(Z)},null,8,["modelValue","options"]),d(t(U),{modelValue:n.value.location,"onUpdate:modelValue":[e[5]||(e[5]=s=>n.value.location=s),ae],placeholder:"Filter by Location",options:t(O)},null,8,["modelValue","options"]),d(t(U),{modelValue:n.value.category,"onUpdate:modelValue":[e[6]||(e[6]=s=>n.value.category=s),ae],placeholder:"Filter by Category",options:t(ve)},null,8,["modelValue","options"])],2),!t(g)||!I.value?(u(),m("div",Ot,[d(t(Vt),{columns:D.value,data:h.value,loading:t(_),pagination:t(le),"empty-message":"No work orders found",onSortChange:qe,onPageChange:Ye,onRowClick:Xe},{"column-title":v(({row:s})=>[i("div",null,[i("h4",zt,y(s.title),1),i("p",It,y(s.description),1)])]),"column-status":v(({row:s})=>[d(t(Ce),{variant:t(we)(s.status)},{default:v(()=>[T(y(t(ye)(s.status)),1)]),_:2},1032,["variant"])]),"column-priority":v(({row:s})=>[d(t(Ce),{variant:t(be)(s.priority)},{default:v(()=>[T(y(t(he)(s.priority)),1)]),_:2},1032,["variant"])]),"column-assignee":v(({row:s})=>[Ve(s)?(u(),m("div",Pt,[d(t(Ie),{user:Ve(s),size:"sm",class:"mr-3"},null,8,["user"]),i("span",Ht,y(Re(s)),1)])):(u(),m("span",Nt,"Unassigned"))]),"column-createdAt":v(({row:s})=>[i("div",Bt,y(Te(s.createdAt)),1)]),"column-dueDate":v(({row:s})=>[s.dueDate?(u(),m("div",{key:0,class:P(["text-sm",Le(s.dueDate)])},y(Te(s.dueDate)),3)):(u(),m("span",$t,"No due date"))]),"row-actions":v(({row:s})=>[i("div",Wt,[d(t(M),{variant:"ghost",size:"sm",onClick:p=>xe(s.id)},{default:v(()=>e[36]||(e[36]=[T(" View ",-1)])),_:2,__:[36]},1032,["onClick"]),d(t(M),{variant:"ghost",size:"sm",onClick:p=>X(s.id)},{default:v(()=>e[37]||(e[37]=[T(" Edit ",-1)])),_:2,__:[37]},1032,["onClick"])])]),_:1},8,["columns","data","loading","pagination"])])):t(g)&&I.value?(u(),m("div",jt,[t(_)?(u(),m("div",Gt,e[38]||(e[38]=[i("div",{class:"flex items-center space-x-2 text-gray-500"},[i("svg",{class:"w-6 h-6 animate-spin",fill:"none",viewBox:"0 0 24 24"},[i("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"}),i("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]),i("span",null,"Loading work orders...")],-1)]))):h.value.length===0?(u(),m("div",qt,e[39]||(e[39]=[i("div",{class:"text-gray-500"},[i("svg",{class:"w-12 h-12 mx-auto mb-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[i("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5H7a2 2 0 00-2 2v10a2 2 0 002 2h8a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"})]),i("p",{class:"text-lg font-medium"},"No work orders found"),i("p",{class:"text-sm mt-1"},"Try adjusting your filters or create a new work order")],-1)]))):(u(),m("div",Yt,[(u(!0),m(Pe,null,He(h.value,s=>(u(),m("div",{key:s.id,class:"bg-white rounded-lg shadow border border-gray-200 p-4 touch-manipulation",onClick:p=>Qe(s)},[i("div",Zt,[i("div",Qt,[i("h3",Kt,y(s.title),1),i("p",Jt,y(s.description),1)]),i("div",eo,[d(t(Ce),{variant:t(we)(s.status)},{default:v(()=>[T(y(t(ye)(s.status)),1)]),_:2},1032,["variant"]),d(t(Ce),{variant:t(be)(s.priority)},{default:v(()=>[T(y(t(he)(s.priority)),1)]),_:2},1032,["variant"])])]),i("div",to,[i("div",null,[e[40]||(e[40]=i("span",{class:"text-gray-500"},"Assignee:",-1)),Ve(s)?(u(),m("div",oo,[d(t(Ie),{user:Ve(s),size:"xs",class:"mr-2"},null,8,["user"]),i("span",so,y(Re(s)),1)])):(u(),m("span",ao,"Unassigned"))]),i("div",null,[e[41]||(e[41]=i("span",{class:"text-gray-500"},"Due Date:",-1)),s.dueDate?(u(),m("div",{key:0,class:P(["mt-1",Le(s.dueDate)])},y(Te(s.dueDate)),3)):(u(),m("span",io,"No due date"))])]),i("div",lo,[i("div",no," Created "+y(Te(s.createdAt)),1),i("div",ro,[d(t(M),{variant:"ghost",size:"xs",onClick:Ne(p=>X(s.id),["stop"])},{default:v(()=>e[42]||(e[42]=[T(" Edit ",-1)])),_:2,__:[42]},1032,["onClick"]),d(t(M),{variant:"ghost",size:"xs",onClick:Ne(p=>xe(s.id),["stop"])},{default:v(()=>e[43]||(e[43]=[T(" View ",-1)])),_:2,__:[43]},1032,["onClick"])])])],8,Xt))),128))]))])):x("",!0)]),d(t(St),{modelValue:G.value,"onUpdate:modelValue":e[31]||(e[31]=s=>G.value=s),title:N.value,size:t(g)?"full":"xl",onConfirm:Fe,onCancel:Ue},{footer:v(()=>[i("div",Ao,[i("div",Fo,[t(K)||t(J)?(u(),m("div",Lo,[t(K)?(u(),m("svg",Ro,e[59]||(e[59]=[i("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z","clip-rule":"evenodd"},null,-1)]))):(u(),m("svg",Oo,e[60]||(e[60]=[i("path",{"fill-rule":"evenodd",d:"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z","clip-rule":"evenodd"},null,-1)]))),t(K)?(u(),m("span",zo,"Auto-saving...")):t(J)?(u(),m("span",Io,"Last saved "+y(S.value),1)):x("",!0)])):x("",!0),b.value!=="basic"?(u(),Se(t(M),{key:1,variant:"outline",size:"sm",onClick:e[29]||(e[29]=s=>Ae("previous"))},{default:v(()=>e[61]||(e[61]=[T(" ← Previous ",-1)])),_:1,__:[61]})):x("",!0)]),i("div",Po,[d(t(M),{variant:"secondary",onClick:Ue},{default:v(()=>e[62]||(e[62]=[T(" Cancel ",-1)])),_:1,__:[62]}),b.value!=="options"?(u(),Se(t(M),{key:0,variant:"outline",onClick:e[30]||(e[30]=s=>Ae("next"))},{default:v(()=>e[63]||(e[63]=[T(" Next → ",-1)])),_:1,__:[63]})):x("",!0),d(t(M),{variant:"primary",loading:t(_),onClick:Fe},{default:v(()=>[T(y(A.value==="create"?"Create Work Order":"Update Work Order"),1)]),_:1},8,["loading"])])])]),default:v(()=>[i("div",uo,[d(t(Be),{modelValue:b.value,"onUpdate:modelValue":e[7]||(e[7]=s=>b.value=s),tabs:c.value,onTabChange:se},null,8,["modelValue","tabs"])]),d(t(Ct),{visible:o.value,"saved-data-info":r.value,onRestore:B,onDismiss:me},null,8,["visible","saved-data-info"]),i("div",co,[b.value==="basic"?(u(),m("div",mo,[d(kt,{modelValue:t(l).workOrderId,"onUpdate:modelValue":e[8]||(e[8]=s=>t(l).workOrderId=s),category:t(l).category,location:t(l).location,disabled:t(_),"allow-manual-entry":!0},null,8,["modelValue","category","location","disabled"]),d(t(ie),{modelValue:t(l).title,"onUpdate:modelValue":e[9]||(e[9]=s=>t(l).title=s),label:"Title",placeholder:"Enter work order title",required:""},null,8,["modelValue"]),d(t(ie),{modelValue:t(l).description,"onUpdate:modelValue":e[10]||(e[10]=s=>t(l).description=s),label:"Description",placeholder:"Enter work order description",type:"textarea",rows:"4"},null,8,["modelValue"]),i("div",{class:P(["grid gap-4",t(g)?"grid-cols-1":"grid-cols-1 md:grid-cols-2"])},[d(t(U),{modelValue:t(l).priority,"onUpdate:modelValue":e[11]||(e[11]=s=>t(l).priority=s),label:"Priority",options:t(f),required:""},null,8,["modelValue","options"]),d(t(U),{modelValue:t(l).category,"onUpdate:modelValue":e[12]||(e[12]=s=>t(l).category=s),label:"Category",options:t(ve),placeholder:"Select category"},null,8,["modelValue","options"])],2),i("div",{class:P(["grid gap-4",t(g)?"grid-cols-1":"grid-cols-1 md:grid-cols-2"])},[d(t(U),{modelValue:t(l).asset,"onUpdate:modelValue":e[13]||(e[13]=s=>t(l).asset=s),label:"Asset",options:t(Z),placeholder:"Select asset"},null,8,["modelValue","options"]),d(t(U),{modelValue:t(l).location,"onUpdate:modelValue":e[14]||(e[14]=s=>t(l).location=s),label:"Location",options:t(O),placeholder:"Select location"},null,8,["modelValue","options"])],2),i("div",po,[d(ft,{modelValue:t(l).tasks,"onUpdate:modelValue":e[15]||(e[15]=s=>t(l).tasks=s),disabled:t(_),"show-templates":!0},null,8,["modelValue","disabled"])])])):x("",!0),b.value==="assignment"?(u(),m("div",vo,[d(t(U),{modelValue:t(l).primaryUser,"onUpdate:modelValue":e[16]||(e[16]=s=>t(l).primaryUser=s),label:"Primary Assignee",options:t(E),placeholder:"Select primary user"},null,8,["modelValue","options"]),d(t(U),{modelValue:t(l).team,"onUpdate:modelValue":e[17]||(e[17]=s=>t(l).team=s),label:"Team",options:t(j),placeholder:"Select team"},null,8,["modelValue","options"]),e[44]||(e[44]=i("div",{class:"bg-gray-50 p-4 rounded-lg"},[i("h4",{class:"text-sm font-medium text-gray-900 mb-2"},"Assignment Notes"),i("p",{class:"text-sm text-gray-600"}," The primary assignee will be the main person responsible for this work order. If a team is selected, all team members will have access to this work order. ")],-1))])):x("",!0),b.value==="scheduling"?(u(),m("div",fo,[i("div",{class:P(["grid gap-4",t(g)?"grid-cols-1":"grid-cols-1 md:grid-cols-2"])},[d(t(ie),{modelValue:t(l).estimatedStartDate,"onUpdate:modelValue":e[18]||(e[18]=s=>t(l).estimatedStartDate=s),label:"Planned Start Date",type:"datetime-local"},null,8,["modelValue"]),d(t(ie),{modelValue:t(l).dueDate,"onUpdate:modelValue":e[19]||(e[19]=s=>t(l).dueDate=s),label:"Due Date",type:"datetime-local"},null,8,["modelValue"])],2),d(t(ie),{modelValue:t(l).estimatedDuration,"onUpdate:modelValue":e[20]||(e[20]=s=>t(l).estimatedDuration=s),label:"Estimated Duration (hours)",type:"number",min:"0",step:"0.5",placeholder:"e.g. 2.5"},null,8,["modelValue"]),e[45]||(e[45]=i("div",{class:"bg-blue-50 p-4 rounded-lg"},[i("h4",{class:"text-sm font-medium text-blue-900 mb-2"},"Scheduling Tips"),i("ul",{class:"text-sm text-blue-800 space-y-1"},[i("li",null,"• Set realistic start and due dates based on priority and complexity"),i("li",null,"• Estimated duration helps with resource planning"),i("li",null,"• Consider dependencies on other work orders"),i("li",null,"• Start date defaults to current time for immediate work")])],-1)),i("div",go,[d(yt,{modelValue:t(l).timeEntries,"onUpdate:modelValue":e[21]||(e[21]=s=>t(l).timeEntries=s),disabled:t(_),"user-options":t(E),"current-user":F.value},null,8,["modelValue","disabled","user-options","current-user"])])])):x("",!0),b.value==="parts"?(u(),m("div",ho,[d(gt,{modelValue:t(l).parts,"onUpdate:modelValue":e[22]||(e[22]=s=>t(l).parts=s),disabled:t(_)},null,8,["modelValue","disabled"])])):x("",!0),b.value==="attachments"?(u(),m("div",yo,[i("div",null,[e[46]||(e[46]=i("label",{class:"block text-sm font-medium text-gray-700 mb-2"}," Primary Image ",-1)),e[47]||(e[47]=i("p",{class:"text-sm text-gray-500 mb-3"}," Upload a main image that represents this work order (before photos, equipment images, etc.) ",-1)),d(t($e),{modelValue:t(l).image,"onUpdate:modelValue":e[23]||(e[23]=s=>t(l).image=s),accept:"image/*",multiple:!1,uploading:t(H),"upload-progress":t(ne),onFilesAdded:Ke},null,8,["modelValue","uploading","upload-progress"])]),i("div",null,[e[48]||(e[48]=i("label",{class:"block text-sm font-medium text-gray-700 mb-2"}," Audio Notes ",-1)),e[49]||(e[49]=i("p",{class:"text-sm text-gray-500 mb-3"}," Record voice notes, observations, or instructions for this work order ",-1)),d(ht,{modelValue:t(l).audioRecordings,"onUpdate:modelValue":e[24]||(e[24]=s=>t(l).audioRecordings=s),"work-order-id":A.value==="edit"?oe.value:null,"current-user":F.value,"auto-transcribe":!0,"enable-visualization":!0,"auto-save":!1,onRecordingSaved:ot},null,8,["modelValue","work-order-id","current-user"])]),i("div",null,[e[56]||(e[56]=i("label",{class:"block text-sm font-medium text-gray-700 mb-2"}," Additional Files ",-1)),e[57]||(e[57]=i("p",{class:"text-sm text-gray-500 mb-3"}," Upload manuals, documentation, additional photos, or other relevant files ",-1)),i("div",bo,[e[51]||(e[51]=i("svg",{class:"mx-auto h-12 w-12 text-gray-400",stroke:"currentColor",fill:"none",viewBox:"0 0 48 48"},[i("path",{d:"M28 8H12a4 4 0 00-4 4v20m32-12v8m0 0v8a4 4 0 01-4 4H12a4 4 0 01-4-4v-4m32-4l-3.172-3.172a4 4 0 00-5.656 0L28 28M8 32l9.172-9.172a4 4 0 015.656 0L28 28m0 0l4 4m4-24h8m-4-4v8m-12 4h.02","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})],-1)),i("div",wo,[i("label",ko,[e[50]||(e[50]=i("span",{class:"mt-2 block text-sm font-medium text-gray-900"}," Drop files here or click to upload ",-1)),i("input",{type:"file",class:"sr-only",multiple:"",accept:"image/*,application/pdf,.doc,.docx,.txt",onChange:st},null,32)])]),e[52]||(e[52]=i("p",{class:"mt-2 text-xs text-gray-500"}," PNG, JPG, PDF, DOC, TXT up to 10MB each (max 10 files) ",-1))]),t(l).files&&t(l).files.length>0?(u(),m("div",xo,[(u(!0),m(Pe,null,He(t(l).files,(s,p)=>(u(),m("div",{key:p,class:"flex items-center justify-between p-3 bg-gray-50 rounded-lg border"},[i("div",To,[e[53]||(e[53]=i("svg",{class:"w-5 h-5 text-gray-400 mr-3",fill:"currentColor",viewBox:"0 0 20 20"},[i("path",{"fill-rule":"evenodd",d:"M4 4a2 2 0 012-2h4.586A2 2 0 0112 2.586L15.414 6A2 2 0 0116 7.414V16a2 2 0 01-2 2H6a2 2 0 01-2-2V4zm2 6a1 1 0 011-1h6a1 1 0 110 2H7a1 1 0 01-1-1zm1 3a1 1 0 100 2h6a1 1 0 100-2H7z","clip-rule":"evenodd"})],-1)),i("div",null,[i("span",Vo,y(s.name||"Untitled File"),1),i("div",So,y(it(s.size||0))+" • Uploaded "+y(lt(s.uploadedAt)),1)])]),d(t(M),{variant:"ghost",size:"sm",onClick:R=>at(p),class:"text-red-600 hover:text-red-800"},{default:v(()=>e[54]||(e[54]=[i("svg",{class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[i("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1)])),_:2,__:[54]},1032,["onClick"])]))),128))])):x("",!0),i("div",Co,[i("details",null,[e[55]||(e[55]=i("summary",{class:"cursor-pointer hover:text-gray-700"},"Alternative Upload Method",-1)),i("div",Mo,[d(t($e),{modelValue:t(l).files,"onUpdate:modelValue":e[25]||(e[25]=s=>t(l).files=s),accept:"image/*,application/pdf,.doc,.docx,.txt",multiple:!0,"max-files":10,uploading:t(H),"upload-progress":t(ne),onFilesAdded:Je},null,8,["modelValue","uploading","upload-progress"])])])])])])):x("",!0),b.value==="options"?(u(),m("div",_o,[d(t(Tt),{modelValue:t(l).requiredSignature,"onUpdate:modelValue":e[26]||(e[26]=s=>t(l).requiredSignature=s),label:"Require signature for completion"},null,8,["modelValue"]),e[58]||(e[58]=i("div",{class:"bg-gray-50 p-4 rounded-lg"},[i("h4",{class:"text-sm font-medium text-gray-900 mb-2"},"Additional Options"),i("p",{class:"text-sm text-gray-600 mb-3"}," Configure special requirements and completion settings for this work order. "),i("ul",{class:"text-sm text-gray-600 space-y-1"},[i("li",null,[T("• "),i("strong",null,"Signature Required:"),T(" Technician must provide digital signature upon completion")]),i("li",null,"• More options will be available in future updates")])],-1)),i("div",Eo,[d(bt,{modelValue:t(l).costTracking,"onUpdate:modelValue":e[27]||(e[27]=s=>t(l).costTracking=s),parts:t(l).parts,"time-entries":t(l).timeEntries,disabled:t(_)},null,8,["modelValue","parts","time-entries","disabled"])]),i("div",Do,[d(wt,{modelValue:t(l).statusHistory,"onUpdate:modelValue":e[28]||(e[28]=s=>t(l).statusHistory=s),"current-status":t(l).status,"audit-entries":t(l).auditTrail,"user-options":t(E),"current-user":F.value,disabled:t(_),onStatusChange:et},null,8,["modelValue","current-status","audit-entries","user-options","current-user","disabled"])]),i("div",Uo,[d(xt,{"work-order":t(l),disabled:t(_),onReportGenerated:tt},null,8,["work-order","disabled"])])])):x("",!0)])]),_:1},8,["modelValue","title","size"])]),_:1}))}},ns=rt(Ho,[["__scopeId","data-v-76691d9d"]]);export{ns as default}; diff --git a/frontend/dist/assets/WorkOrdersView-oeb2ik7Q.js b/frontend/dist/assets/WorkOrdersView-aifn5dEF.js similarity index 64% rename from frontend/dist/assets/WorkOrdersView-oeb2ik7Q.js rename to frontend/dist/assets/WorkOrdersView-aifn5dEF.js index 2b5dbb10..e0ab3432 100644 --- a/frontend/dist/assets/WorkOrdersView-oeb2ik7Q.js +++ b/frontend/dist/assets/WorkOrdersView-aifn5dEF.js @@ -1 +1 @@ -import{_ as o,i as r,f as t,g as c}from"./index-BUdRbiwj.js";const n={};function s(_,a){const e=t("router-view");return c(),r(e)}const i=o(n,[["render",s]]);export{i as default}; +import{_ as o,i as r,f as t,g as c}from"./index-QAlcqU00.js";const n={};function s(_,a){const e=t("router-view");return c(),r(e)}const i=o(n,[["render",s]]);export{i as default}; diff --git a/frontend/dist/assets/assets-eZiqmOvX.js b/frontend/dist/assets/assets-CvfPiugk.js similarity index 98% rename from frontend/dist/assets/assets-eZiqmOvX.js rename to frontend/dist/assets/assets-CvfPiugk.js index 04772b75..3a7ab082 100644 --- a/frontend/dist/assets/assets-eZiqmOvX.js +++ b/frontend/dist/assets/assets-CvfPiugk.js @@ -1 +1 @@ -import{aO as N,r as d,c as v}from"./index-BUdRbiwj.js";const u={OPERATIONAL:"OPERATIONAL",MAINTENANCE:"MAINTENANCE",DOWN:"DOWN",DECOMMISSIONED:"DECOMMISSIONED"},c={LOW:"LOW",MEDIUM:"MEDIUM",HIGH:"HIGH",CRITICAL:"CRITICAL"},l={HVAC:"HVAC",ELEVATOR:"ELEVATOR",SECURITY:"SECURITY",ELECTRICAL:"ELECTRICAL",PLUMBING:"PLUMBING",MECHANICAL:"MECHANICAL",STRUCTURAL:"STRUCTURAL",IT_EQUIPMENT:"IT_EQUIPMENT",SAFETY:"SAFETY",OTHER:"OTHER"},S={ACTIVE:"ACTIVE",EXPIRED:"EXPIRED",EXPIRING_SOON:"EXPIRING_SOON",NOT_APPLICABLE:"NOT_APPLICABLE"},b={OPERATIONAL:"OPERATIONAL"},D={id:null,name:"",description:"",assetNumber:"",barcode:"",category:l.OTHER,subcategory:"",assetType:"",model:"",manufacturer:"",serialNumber:"",modelYear:null,status:u.OPERATIONAL,criticality:c.MEDIUM,condition:"",lifecycle:b.OPERATIONAL,location:null,parentAsset:null,children:[],depth:0,path:"",purchasePrice:0,currentValue:0,depreciationRate:0,residualValue:0,purchaseDate:null,installationDate:null,commissionDate:null,lastMaintenanceDate:null,nextMaintenanceDate:null,warranty:{isWarrantyActive:!1,warrantyStartDate:null,warrantyEndDate:null,warrantyProvider:"",warrantyType:"",warrantyTerms:"",status:S.NOT_APPLICABLE},vendor:{id:null,name:"",contactInfo:"",serviceContract:!1,contractExpiry:null},specifications:{powerRating:"",voltage:"",dimensions:"",weight:"",capacity:"",efficiency:"",operatingTemperature:"",customSpecs:{}},customFields:[],metrics:{totalDowntime:0,mtbf:0,mttr:0,availability:100,reliability:100,operatingHours:0},maintenance:{maintenanceSchedule:null,lastPM:null,nextPM:null,maintenanceStrategy:"",criticality:c.MEDIUM},documents:[],images:[],manuals:[],drawings:[],compliance:{regulatoryRequirements:[],inspectionSchedule:null,lastInspection:null,nextInspection:null,certifications:[]},createdAt:null,updatedAt:null,createdBy:null,updatedBy:null,workOrders:[],parts:[],meters:[],isParent:!1,hasChildren:!1,isActive:!0,isCritical:!1},X={name:{required:!0,minLength:2,maxLength:255},assetNumber:{unique:!0,maxLength:50},description:{maxLength:2e3},category:{required:!0,enum:Object.values(l)},status:{required:!0,enum:Object.values(u)},criticality:{required:!0,enum:Object.values(c)},purchasePrice:{min:0,max:99999999999e-2},serialNumber:{maxLength:100}},j={[u.OPERATIONAL]:{label:"Operational",color:"green",badge:"success",icon:"CheckCircleIcon"},[u.MAINTENANCE]:{label:"Under Maintenance",color:"yellow",badge:"warning",icon:"WrenchIcon"},[u.DOWN]:{label:"Out of Service",color:"red",badge:"error",icon:"XCircleIcon"},[u.DECOMMISSIONED]:{label:"Decommissioned",color:"gray",badge:"secondary",icon:"ArchiveIcon"}},Q={[c.LOW]:{label:"Low",color:"blue",badge:"info",priority:1},[c.MEDIUM]:{label:"Medium",color:"yellow",badge:"warning",priority:2},[c.HIGH]:{label:"High",color:"orange",badge:"warning",priority:3},[c.CRITICAL]:{label:"Critical",color:"red",badge:"error",priority:4}},z={[l.HVAC]:{label:"HVAC",icon:"WindIcon",color:"blue"},[l.ELEVATOR]:{label:"Elevator",icon:"ArrowUpIcon",color:"green"},[l.SECURITY]:{label:"Security",icon:"ShieldCheckIcon",color:"red"},[l.ELECTRICAL]:{label:"Electrical",icon:"BoltIcon",color:"yellow"},[l.PLUMBING]:{label:"Plumbing",icon:"WrenchIcon",color:"blue"},[l.MECHANICAL]:{label:"Mechanical",icon:"CogIcon",color:"gray"},[l.STRUCTURAL]:{label:"Structural",icon:"BuildingIcon",color:"brown"},[l.IT_EQUIPMENT]:{label:"IT Equipment",icon:"ComputerDesktopIcon",color:"purple"},[l.SAFETY]:{label:"Safety",icon:"ExclamationTriangleIcon",color:"orange"},[l.OTHER]:{label:"Other",icon:"CubeIcon",color:"gray"}},J=N("assets",()=>{const i=d([]),y=d(null),n=d(!1),r=d(null),I=d(0),p=d([]),f=d([]),E=d([]),T=d([]),o=d({locationId:null,categoryId:null,status:null,search:""}),h=v(()=>{let t=i.value;if(o.value.locationId&&(t=t.filter(e=>e.locationId===o.value.locationId)),o.value.categoryId&&(t=t.filter(e=>e.categoryId===o.value.categoryId)),o.value.status&&(t=t.filter(e=>e.status===o.value.status)),o.value.search){const e=o.value.search.toLowerCase();t=t.filter(a=>{var s,A,m,C;return((s=a.name)==null?void 0:s.toLowerCase().includes(e))||((A=a.description)==null?void 0:A.toLowerCase().includes(e))||((m=a.model)==null?void 0:m.toLowerCase().includes(e))||((C=a.serialNumber)==null?void 0:C.toLowerCase().includes(e))})}return t}),w=v(()=>i.value.reduce((t,e)=>(t[e.status]||(t[e.status]=[]),t[e.status].push(e),t),{})),R=v(()=>i.value.reduce((t,e)=>{var s;const a=((s=e.location)==null?void 0:s.name)||"Unknown";return t[a]||(t[a]=[]),t[a].push(e),t},{})),O=v(()=>i.value.filter(t=>t.criticality==="CRITICAL")),g=async(t={})=>{try{n.value=!0,r.value=null,await new Promise(a=>setTimeout(a,1e3));const e=[{id:1,name:"Main HVAC Unit",assetNumber:"HVAC-001",description:"Primary heating and cooling system for floors 1-3",category:l.HVAC,subcategory:"Air Handler",status:u.OPERATIONAL,criticality:c.HIGH,manufacturer:"Carrier",model:"30HXC",serialNumber:"HV001234",modelYear:2020,location:"Roof Level 3",locationId:1,condition:"Good",purchasePrice:45e3,currentValue:38e3,value:45e3,purchaseDate:"2020-03-15",installationDate:"2020-03-15",commissionDate:"2020-03-20",depreciationRate:5,lastMaintenanceDate:"2024-01-15T10:00:00Z",lastMaintenance:"2024-01-15T10:00:00Z",nextMaintenanceDate:"2024-04-15T10:00:00Z",nextMaintenance:"2024-04-15T10:00:00Z",maintenanceStrategy:"PREVENTIVE",maintenanceInterval:90,barcode:"HV001234",isActive:!0,isCritical:!0,operatingHours:12500,warrantyActive:!0,warranty:{isWarrantyActive:!0,warrantyStartDate:"2020-03-15",warrantyEndDate:"2025-03-15",warrantyProvider:"Carrier Corporation",status:"ACTIVE"},customFields:{refrigerantType:"R-410A",coolingCapacity:"50 tons",heatingCapacity:"450 MBH",powerRequirement:"460V/3Ph/60Hz"},createdAt:"2020-03-15T08:00:00Z",updatedAt:"2024-02-01T10:30:00Z"},{id:2,name:"Passenger Elevator",assetNumber:"EL-001",description:"Main passenger elevator serving all floors",category:l.ELEVATOR,subcategory:"Passenger",status:u.MAINTENANCE,criticality:c.CRITICAL,manufacturer:"Otis",model:"Gen2",serialNumber:"EL002456",modelYear:2019,location:"Main Lobby",locationId:2,condition:"Fair",purchasePrice:12e4,currentValue:95e3,value:12e4,purchaseDate:"2019-08-20",installationDate:"2019-08-20",commissionDate:"2019-09-15",depreciationRate:4,lastMaintenanceDate:"2024-01-20T14:00:00Z",lastMaintenance:"2024-01-20T14:00:00Z",nextMaintenanceDate:"2024-02-20T14:00:00Z",nextMaintenance:"2024-02-20T14:00:00Z",maintenanceStrategy:"PREVENTIVE",maintenanceInterval:30,barcode:"EL002456",isActive:!0,isCritical:!0,operatingHours:18500,warrantyActive:!1,warranty:{isWarrantyActive:!1,warrantyStartDate:"2019-08-20",warrantyEndDate:"2022-08-20",warrantyProvider:"Otis Elevator Company",status:"EXPIRED"},customFields:{capacity:"2500 lbs",speed:"500 fpm",floors:"6 stops",doorType:"Center Opening"},createdAt:"2019-08-20T08:00:00Z",updatedAt:"2024-01-20T14:30:00Z"},{id:3,name:"Fire Alarm Panel",assetNumber:"FA-001",description:"Central fire detection and alarm system",category:l.SECURITY,subcategory:"Fire Alarm",status:u.OPERATIONAL,criticality:c.CRITICAL,manufacturer:"Simplex",model:"4100ES",serialNumber:"FA003789",modelYear:2021,location:"Security Office",locationId:3,condition:"Excellent",purchasePrice:25e3,currentValue:22e3,value:25e3,purchaseDate:"2021-06-10",installationDate:"2021-06-10",commissionDate:"2021-06-15",depreciationRate:3,lastMaintenanceDate:"2024-01-10T09:00:00Z",lastMaintenance:"2024-01-10T09:00:00Z",nextMaintenanceDate:"2024-03-10T09:00:00Z",nextMaintenance:"2024-03-10T09:00:00Z",maintenanceStrategy:"PREVENTIVE",maintenanceInterval:60,barcode:"FA003789",isActive:!0,isCritical:!0,operatingHours:24e3,warrantyActive:!0,value:25e3,warranty:{isWarrantyActive:!0,warrantyStartDate:"2021-06-10",warrantyEndDate:"2026-06-10",warrantyProvider:"Simplex Safety Systems",status:"ACTIVE"},customFields:{zones:"24",batteryBackup:"24 hours",networkCapable:"Yes",voiceEvac:"No"},createdAt:"2021-06-10T08:00:00Z",updatedAt:"2024-01-10T09:30:00Z"},{id:4,name:"Backup Generator",assetNumber:"GEN-001",description:"Emergency backup power generator",category:l.ELECTRICAL,subcategory:"Generator",status:u.DOWN,criticality:c.HIGH,manufacturer:"Caterpillar",model:"C32",serialNumber:"GE004567",modelYear:2018,location:"Basement",locationId:4,condition:"Poor",purchasePrice:75e3,currentValue:45e3,value:75e3,purchaseDate:"2018-12-05",installationDate:"2018-12-05",commissionDate:"2018-12-10",depreciationRate:6,lastMaintenanceDate:"2023-12-05T16:00:00Z",lastMaintenance:"2023-12-05T16:00:00Z",nextMaintenanceDate:"2024-02-05T16:00:00Z",nextMaintenance:"2024-02-05T16:00:00Z",maintenanceStrategy:"REACTIVE",maintenanceInterval:180,barcode:"GE004567",isActive:!1,isCritical:!0,operatingHours:850,warrantyActive:!1,warranty:{isWarrantyActive:!1,warrantyStartDate:"2018-12-05",warrantyEndDate:"2021-12-05",warrantyProvider:"Caterpillar Inc.",status:"EXPIRED"},customFields:{fuelType:"Natural Gas",power:"500 kW",voltage:"480V",fuelTankCapacity:"500 gallons"},createdAt:"2018-12-05T08:00:00Z",updatedAt:"2023-12-05T16:30:00Z"},{id:5,name:"Water Heater Unit A",assetNumber:"WH-001",description:"Primary water heating system for building",category:l.PLUMBING,subcategory:"Water Heater",status:u.OPERATIONAL,criticality:c.MEDIUM,manufacturer:"A.O. Smith",model:"BTP-300",serialNumber:"WH005123",modelYear:2022,location:"Mechanical Room",locationId:8,condition:"Good",purchasePrice:8500,currentValue:7500,value:8500,purchaseDate:"2022-03-12",installationDate:"2022-03-12",commissionDate:"2022-03-15",depreciationRate:8,lastMaintenanceDate:"2024-01-05T11:00:00Z",lastMaintenance:"2024-01-05T11:00:00Z",nextMaintenanceDate:"2024-04-05T11:00:00Z",nextMaintenance:"2024-04-05T11:00:00Z",maintenanceStrategy:"PREVENTIVE",maintenanceInterval:90,barcode:"WH005123",isActive:!0,isCritical:!1,operatingHours:8760,warrantyActive:!0,warranty:{isWarrantyActive:!0,warrantyStartDate:"2022-03-12",warrantyEndDate:"2027-03-12",warrantyProvider:"A.O. Smith Corporation",status:"ACTIVE"},customFields:{capacity:"300 gallons",efficiency:"95%",fuelType:"Natural Gas",ventType:"Power Vent"},createdAt:"2022-03-12T08:00:00Z",updatedAt:"2024-01-05T11:30:00Z"}];return i.value=e,I.value=e.length,{content:e,totalElements:e.length}}catch(e){throw r.value=e.message||"Failed to load assets",e}finally{n.value=!1}};return{assets:i,currentAsset:y,loading:n,error:r,totalCount:I,assetHistory:p,assetWorkOrders:f,assetReadings:E,assetFiles:T,filters:o,filteredAssets:h,assetsByStatus:w,assetsByLocation:R,criticalAssets:O,loadAssets:g,fetchAssets:g,getAssetById:t=>i.value.find(e=>e.id===parseInt(t)),fetchAssetById:async t=>{try{n.value=!0,r.value=null,await new Promise(a=>setTimeout(a,500));const e=i.value.find(a=>a.id===parseInt(t));if(!e)throw new Error("Asset not found");return y.value=e,e}catch(e){throw r.value=e.message||"Failed to fetch asset",e}finally{n.value=!1}},fetchAssetHistory:async t=>{try{n.value=!0,r.value=null;const e=await assetRepository.getAssetHistory(t);return p.value=e,e}catch(e){throw r.value=e.message||"Failed to fetch asset history",e}finally{n.value=!1}},fetchAssetWorkOrders:async t=>{try{n.value=!0,r.value=null;const e=await assetRepository.getAssetWorkOrders(t);return f.value=e,e}catch(e){throw r.value=e.message||"Failed to fetch asset work orders",e}finally{n.value=!1}},fetchAssetReadings:async t=>{try{n.value=!0,r.value=null;const e=await assetRepository.getAssetReadings(t);return E.value=e,e}catch(e){throw r.value=e.message||"Failed to fetch asset readings",e}finally{n.value=!1}},fetchAssetFiles:async t=>{try{n.value=!0,r.value=null;const e=await assetRepository.getAssetFiles(t);return T.value=e,e}catch(e){throw r.value=e.message||"Failed to fetch asset files",e}finally{n.value=!1}},createAsset:async t=>{try{n.value=!0,r.value=null,await new Promise(a=>setTimeout(a,1500));const e={...D,...t,id:Date.now(),createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()};return i.value.unshift(e),I.value+=1,e}catch(e){throw r.value=e.message||"Failed to create asset",e}finally{n.value=!1}},updateAsset:async(t,e)=>{var a;try{n.value=!0,r.value=null,await new Promise(m=>setTimeout(m,1e3));const s=i.value.findIndex(m=>m.id===parseInt(t));if(s===-1)throw new Error("Asset not found");const A={...i.value[s],...e,updatedAt:new Date().toISOString()};return i.value[s]=A,((a=y.value)==null?void 0:a.id)===parseInt(t)&&(y.value=A),A}catch(s){throw r.value=s.message||"Failed to update asset",s}finally{n.value=!1}},updateAssetStatus:async(t,e)=>{var a;try{n.value=!0,r.value=null;const s=await assetRepository.updateAssetStatus(t,e),A=i.value.findIndex(m=>m.id===t);return A!==-1&&(i.value[A]=s),((a=y.value)==null?void 0:a.id)===t&&(y.value=s),s}catch(s){throw r.value=s.message||"Failed to update asset status",s}finally{n.value=!1}},addAssetReading:async(t,e)=>{try{n.value=!0,r.value=null;const a=await assetRepository.addAssetReading(t,e);return E.value.unshift(a),a}catch(a){throw r.value=a.message||"Failed to add asset reading",a}finally{n.value=!1}},addAssetFile:async(t,e)=>{try{n.value=!0,r.value=null;const a=await assetRepository.addAssetFile(t,e);return T.value.unshift(a),a}catch(a){throw r.value=a.message||"Failed to upload asset file",a}finally{n.value=!1}},deleteAsset:async t=>{var e;try{return n.value=!0,r.value=null,await assetRepository.delete(t),i.value=i.value.filter(a=>a.id!==t),I.value-=1,((e=y.value)==null?void 0:e.id)===t&&(y.value=null),!0}catch(a){throw r.value=a.message||"Failed to delete asset",a}finally{n.value=!1}},setFilters:t=>{o.value={...o.value,...t}},clearFilters:()=>{o.value={locationId:null,categoryId:null,status:null,search:""}},clearError:()=>{r.value=null}}});export{u as A,z as C,j as S,S as W,Q as a,c as b,l as c,X as d,D as e,J as u}; +import{aP as O,r as d,c as v}from"./index-QAlcqU00.js";const u={OPERATIONAL:"OPERATIONAL",MAINTENANCE:"MAINTENANCE",DOWN:"DOWN",DECOMMISSIONED:"DECOMMISSIONED"},c={LOW:"LOW",MEDIUM:"MEDIUM",HIGH:"HIGH",CRITICAL:"CRITICAL"},l={HVAC:"HVAC",ELEVATOR:"ELEVATOR",SECURITY:"SECURITY",ELECTRICAL:"ELECTRICAL",PLUMBING:"PLUMBING",MECHANICAL:"MECHANICAL",STRUCTURAL:"STRUCTURAL",IT_EQUIPMENT:"IT_EQUIPMENT",SAFETY:"SAFETY",OTHER:"OTHER"},S={ACTIVE:"ACTIVE",EXPIRED:"EXPIRED",EXPIRING_SOON:"EXPIRING_SOON",NOT_APPLICABLE:"NOT_APPLICABLE"},b={OPERATIONAL:"OPERATIONAL"},D={id:null,name:"",description:"",assetNumber:"",barcode:"",category:l.OTHER,subcategory:"",assetType:"",model:"",manufacturer:"",serialNumber:"",modelYear:null,status:u.OPERATIONAL,criticality:c.MEDIUM,condition:"",lifecycle:b.OPERATIONAL,location:null,parentAsset:null,children:[],depth:0,path:"",purchasePrice:0,currentValue:0,depreciationRate:0,residualValue:0,purchaseDate:null,installationDate:null,commissionDate:null,lastMaintenanceDate:null,nextMaintenanceDate:null,warranty:{isWarrantyActive:!1,warrantyStartDate:null,warrantyEndDate:null,warrantyProvider:"",warrantyType:"",warrantyTerms:"",status:S.NOT_APPLICABLE},vendor:{id:null,name:"",contactInfo:"",serviceContract:!1,contractExpiry:null},specifications:{powerRating:"",voltage:"",dimensions:"",weight:"",capacity:"",efficiency:"",operatingTemperature:"",customSpecs:{}},customFields:[],metrics:{totalDowntime:0,mtbf:0,mttr:0,availability:100,reliability:100,operatingHours:0},maintenance:{maintenanceSchedule:null,lastPM:null,nextPM:null,maintenanceStrategy:"",criticality:c.MEDIUM},documents:[],images:[],manuals:[],drawings:[],compliance:{regulatoryRequirements:[],inspectionSchedule:null,lastInspection:null,nextInspection:null,certifications:[]},createdAt:null,updatedAt:null,createdBy:null,updatedBy:null,workOrders:[],parts:[],meters:[],isParent:!1,hasChildren:!1,isActive:!0,isCritical:!1},X={name:{required:!0,minLength:2,maxLength:255},assetNumber:{unique:!0,maxLength:50},description:{maxLength:2e3},category:{required:!0,enum:Object.values(l)},status:{required:!0,enum:Object.values(u)},criticality:{required:!0,enum:Object.values(c)},purchasePrice:{min:0,max:99999999999e-2},serialNumber:{maxLength:100}},j={[u.OPERATIONAL]:{label:"Operational",color:"green",badge:"success",icon:"CheckCircleIcon"},[u.MAINTENANCE]:{label:"Under Maintenance",color:"yellow",badge:"warning",icon:"WrenchIcon"},[u.DOWN]:{label:"Out of Service",color:"red",badge:"error",icon:"XCircleIcon"},[u.DECOMMISSIONED]:{label:"Decommissioned",color:"gray",badge:"secondary",icon:"ArchiveIcon"}},Q={[c.LOW]:{label:"Low",color:"blue",badge:"info",priority:1},[c.MEDIUM]:{label:"Medium",color:"yellow",badge:"warning",priority:2},[c.HIGH]:{label:"High",color:"orange",badge:"warning",priority:3},[c.CRITICAL]:{label:"Critical",color:"red",badge:"error",priority:4}},z={[l.HVAC]:{label:"HVAC",icon:"WindIcon",color:"blue"},[l.ELEVATOR]:{label:"Elevator",icon:"ArrowUpIcon",color:"green"},[l.SECURITY]:{label:"Security",icon:"ShieldCheckIcon",color:"red"},[l.ELECTRICAL]:{label:"Electrical",icon:"BoltIcon",color:"yellow"},[l.PLUMBING]:{label:"Plumbing",icon:"WrenchIcon",color:"blue"},[l.MECHANICAL]:{label:"Mechanical",icon:"CogIcon",color:"gray"},[l.STRUCTURAL]:{label:"Structural",icon:"BuildingIcon",color:"brown"},[l.IT_EQUIPMENT]:{label:"IT Equipment",icon:"ComputerDesktopIcon",color:"purple"},[l.SAFETY]:{label:"Safety",icon:"ExclamationTriangleIcon",color:"orange"},[l.OTHER]:{label:"Other",icon:"CubeIcon",color:"gray"}},J=O("assets",()=>{const i=d([]),y=d(null),n=d(!1),r=d(null),I=d(0),p=d([]),f=d([]),E=d([]),T=d([]),o=d({locationId:null,categoryId:null,status:null,search:""}),h=v(()=>{let t=i.value;if(o.value.locationId&&(t=t.filter(e=>e.locationId===o.value.locationId)),o.value.categoryId&&(t=t.filter(e=>e.categoryId===o.value.categoryId)),o.value.status&&(t=t.filter(e=>e.status===o.value.status)),o.value.search){const e=o.value.search.toLowerCase();t=t.filter(a=>{var s,A,m,C;return((s=a.name)==null?void 0:s.toLowerCase().includes(e))||((A=a.description)==null?void 0:A.toLowerCase().includes(e))||((m=a.model)==null?void 0:m.toLowerCase().includes(e))||((C=a.serialNumber)==null?void 0:C.toLowerCase().includes(e))})}return t}),w=v(()=>i.value.reduce((t,e)=>(t[e.status]||(t[e.status]=[]),t[e.status].push(e),t),{})),R=v(()=>i.value.reduce((t,e)=>{var s;const a=((s=e.location)==null?void 0:s.name)||"Unknown";return t[a]||(t[a]=[]),t[a].push(e),t},{})),N=v(()=>i.value.filter(t=>t.criticality==="CRITICAL")),g=async(t={})=>{try{n.value=!0,r.value=null,await new Promise(a=>setTimeout(a,1e3));const e=[{id:1,name:"Main HVAC Unit",assetNumber:"HVAC-001",description:"Primary heating and cooling system for floors 1-3",category:l.HVAC,subcategory:"Air Handler",status:u.OPERATIONAL,criticality:c.HIGH,manufacturer:"Carrier",model:"30HXC",serialNumber:"HV001234",modelYear:2020,location:"Roof Level 3",locationId:1,condition:"Good",purchasePrice:45e3,currentValue:38e3,value:45e3,purchaseDate:"2020-03-15",installationDate:"2020-03-15",commissionDate:"2020-03-20",depreciationRate:5,lastMaintenanceDate:"2024-01-15T10:00:00Z",lastMaintenance:"2024-01-15T10:00:00Z",nextMaintenanceDate:"2024-04-15T10:00:00Z",nextMaintenance:"2024-04-15T10:00:00Z",maintenanceStrategy:"PREVENTIVE",maintenanceInterval:90,barcode:"HV001234",isActive:!0,isCritical:!0,operatingHours:12500,warrantyActive:!0,warranty:{isWarrantyActive:!0,warrantyStartDate:"2020-03-15",warrantyEndDate:"2025-03-15",warrantyProvider:"Carrier Corporation",status:"ACTIVE"},customFields:{refrigerantType:"R-410A",coolingCapacity:"50 tons",heatingCapacity:"450 MBH",powerRequirement:"460V/3Ph/60Hz"},createdAt:"2020-03-15T08:00:00Z",updatedAt:"2024-02-01T10:30:00Z"},{id:2,name:"Passenger Elevator",assetNumber:"EL-001",description:"Main passenger elevator serving all floors",category:l.ELEVATOR,subcategory:"Passenger",status:u.MAINTENANCE,criticality:c.CRITICAL,manufacturer:"Otis",model:"Gen2",serialNumber:"EL002456",modelYear:2019,location:"Main Lobby",locationId:2,condition:"Fair",purchasePrice:12e4,currentValue:95e3,value:12e4,purchaseDate:"2019-08-20",installationDate:"2019-08-20",commissionDate:"2019-09-15",depreciationRate:4,lastMaintenanceDate:"2024-01-20T14:00:00Z",lastMaintenance:"2024-01-20T14:00:00Z",nextMaintenanceDate:"2024-02-20T14:00:00Z",nextMaintenance:"2024-02-20T14:00:00Z",maintenanceStrategy:"PREVENTIVE",maintenanceInterval:30,barcode:"EL002456",isActive:!0,isCritical:!0,operatingHours:18500,warrantyActive:!1,warranty:{isWarrantyActive:!1,warrantyStartDate:"2019-08-20",warrantyEndDate:"2022-08-20",warrantyProvider:"Otis Elevator Company",status:"EXPIRED"},customFields:{capacity:"2500 lbs",speed:"500 fpm",floors:"6 stops",doorType:"Center Opening"},createdAt:"2019-08-20T08:00:00Z",updatedAt:"2024-01-20T14:30:00Z"},{id:3,name:"Fire Alarm Panel",assetNumber:"FA-001",description:"Central fire detection and alarm system",category:l.SECURITY,subcategory:"Fire Alarm",status:u.OPERATIONAL,criticality:c.CRITICAL,manufacturer:"Simplex",model:"4100ES",serialNumber:"FA003789",modelYear:2021,location:"Security Office",locationId:3,condition:"Excellent",purchasePrice:25e3,currentValue:22e3,value:25e3,purchaseDate:"2021-06-10",installationDate:"2021-06-10",commissionDate:"2021-06-15",depreciationRate:3,lastMaintenanceDate:"2024-01-10T09:00:00Z",lastMaintenance:"2024-01-10T09:00:00Z",nextMaintenanceDate:"2024-03-10T09:00:00Z",nextMaintenance:"2024-03-10T09:00:00Z",maintenanceStrategy:"PREVENTIVE",maintenanceInterval:60,barcode:"FA003789",isActive:!0,isCritical:!0,operatingHours:24e3,warrantyActive:!0,value:25e3,warranty:{isWarrantyActive:!0,warrantyStartDate:"2021-06-10",warrantyEndDate:"2026-06-10",warrantyProvider:"Simplex Safety Systems",status:"ACTIVE"},customFields:{zones:"24",batteryBackup:"24 hours",networkCapable:"Yes",voiceEvac:"No"},createdAt:"2021-06-10T08:00:00Z",updatedAt:"2024-01-10T09:30:00Z"},{id:4,name:"Backup Generator",assetNumber:"GEN-001",description:"Emergency backup power generator",category:l.ELECTRICAL,subcategory:"Generator",status:u.DOWN,criticality:c.HIGH,manufacturer:"Caterpillar",model:"C32",serialNumber:"GE004567",modelYear:2018,location:"Basement",locationId:4,condition:"Poor",purchasePrice:75e3,currentValue:45e3,value:75e3,purchaseDate:"2018-12-05",installationDate:"2018-12-05",commissionDate:"2018-12-10",depreciationRate:6,lastMaintenanceDate:"2023-12-05T16:00:00Z",lastMaintenance:"2023-12-05T16:00:00Z",nextMaintenanceDate:"2024-02-05T16:00:00Z",nextMaintenance:"2024-02-05T16:00:00Z",maintenanceStrategy:"REACTIVE",maintenanceInterval:180,barcode:"GE004567",isActive:!1,isCritical:!0,operatingHours:850,warrantyActive:!1,warranty:{isWarrantyActive:!1,warrantyStartDate:"2018-12-05",warrantyEndDate:"2021-12-05",warrantyProvider:"Caterpillar Inc.",status:"EXPIRED"},customFields:{fuelType:"Natural Gas",power:"500 kW",voltage:"480V",fuelTankCapacity:"500 gallons"},createdAt:"2018-12-05T08:00:00Z",updatedAt:"2023-12-05T16:30:00Z"},{id:5,name:"Water Heater Unit A",assetNumber:"WH-001",description:"Primary water heating system for building",category:l.PLUMBING,subcategory:"Water Heater",status:u.OPERATIONAL,criticality:c.MEDIUM,manufacturer:"A.O. Smith",model:"BTP-300",serialNumber:"WH005123",modelYear:2022,location:"Mechanical Room",locationId:8,condition:"Good",purchasePrice:8500,currentValue:7500,value:8500,purchaseDate:"2022-03-12",installationDate:"2022-03-12",commissionDate:"2022-03-15",depreciationRate:8,lastMaintenanceDate:"2024-01-05T11:00:00Z",lastMaintenance:"2024-01-05T11:00:00Z",nextMaintenanceDate:"2024-04-05T11:00:00Z",nextMaintenance:"2024-04-05T11:00:00Z",maintenanceStrategy:"PREVENTIVE",maintenanceInterval:90,barcode:"WH005123",isActive:!0,isCritical:!1,operatingHours:8760,warrantyActive:!0,warranty:{isWarrantyActive:!0,warrantyStartDate:"2022-03-12",warrantyEndDate:"2027-03-12",warrantyProvider:"A.O. Smith Corporation",status:"ACTIVE"},customFields:{capacity:"300 gallons",efficiency:"95%",fuelType:"Natural Gas",ventType:"Power Vent"},createdAt:"2022-03-12T08:00:00Z",updatedAt:"2024-01-05T11:30:00Z"}];return i.value=e,I.value=e.length,{content:e,totalElements:e.length}}catch(e){throw r.value=e.message||"Failed to load assets",e}finally{n.value=!1}};return{assets:i,currentAsset:y,loading:n,error:r,totalCount:I,assetHistory:p,assetWorkOrders:f,assetReadings:E,assetFiles:T,filters:o,filteredAssets:h,assetsByStatus:w,assetsByLocation:R,criticalAssets:N,loadAssets:g,fetchAssets:g,getAssetById:t=>i.value.find(e=>e.id===parseInt(t)),fetchAssetById:async t=>{try{n.value=!0,r.value=null,await new Promise(a=>setTimeout(a,500));const e=i.value.find(a=>a.id===parseInt(t));if(!e)throw new Error("Asset not found");return y.value=e,e}catch(e){throw r.value=e.message||"Failed to fetch asset",e}finally{n.value=!1}},fetchAssetHistory:async t=>{try{n.value=!0,r.value=null;const e=await assetRepository.getAssetHistory(t);return p.value=e,e}catch(e){throw r.value=e.message||"Failed to fetch asset history",e}finally{n.value=!1}},fetchAssetWorkOrders:async t=>{try{n.value=!0,r.value=null;const e=await assetRepository.getAssetWorkOrders(t);return f.value=e,e}catch(e){throw r.value=e.message||"Failed to fetch asset work orders",e}finally{n.value=!1}},fetchAssetReadings:async t=>{try{n.value=!0,r.value=null;const e=await assetRepository.getAssetReadings(t);return E.value=e,e}catch(e){throw r.value=e.message||"Failed to fetch asset readings",e}finally{n.value=!1}},fetchAssetFiles:async t=>{try{n.value=!0,r.value=null;const e=await assetRepository.getAssetFiles(t);return T.value=e,e}catch(e){throw r.value=e.message||"Failed to fetch asset files",e}finally{n.value=!1}},createAsset:async t=>{try{n.value=!0,r.value=null,await new Promise(a=>setTimeout(a,1500));const e={...D,...t,id:Date.now(),createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()};return i.value.unshift(e),I.value+=1,e}catch(e){throw r.value=e.message||"Failed to create asset",e}finally{n.value=!1}},updateAsset:async(t,e)=>{var a;try{n.value=!0,r.value=null,await new Promise(m=>setTimeout(m,1e3));const s=i.value.findIndex(m=>m.id===parseInt(t));if(s===-1)throw new Error("Asset not found");const A={...i.value[s],...e,updatedAt:new Date().toISOString()};return i.value[s]=A,((a=y.value)==null?void 0:a.id)===parseInt(t)&&(y.value=A),A}catch(s){throw r.value=s.message||"Failed to update asset",s}finally{n.value=!1}},updateAssetStatus:async(t,e)=>{var a;try{n.value=!0,r.value=null;const s=await assetRepository.updateAssetStatus(t,e),A=i.value.findIndex(m=>m.id===t);return A!==-1&&(i.value[A]=s),((a=y.value)==null?void 0:a.id)===t&&(y.value=s),s}catch(s){throw r.value=s.message||"Failed to update asset status",s}finally{n.value=!1}},addAssetReading:async(t,e)=>{try{n.value=!0,r.value=null;const a=await assetRepository.addAssetReading(t,e);return E.value.unshift(a),a}catch(a){throw r.value=a.message||"Failed to add asset reading",a}finally{n.value=!1}},addAssetFile:async(t,e)=>{try{n.value=!0,r.value=null;const a=await assetRepository.addAssetFile(t,e);return T.value.unshift(a),a}catch(a){throw r.value=a.message||"Failed to upload asset file",a}finally{n.value=!1}},deleteAsset:async t=>{var e;try{return n.value=!0,r.value=null,await assetRepository.delete(t),i.value=i.value.filter(a=>a.id!==t),I.value-=1,((e=y.value)==null?void 0:e.id)===t&&(y.value=null),!0}catch(a){throw r.value=a.message||"Failed to delete asset",a}finally{n.value=!1}},setFilters:t=>{o.value={...o.value,...t}},clearFilters:()=>{o.value={locationId:null,categoryId:null,status:null,search:""}},clearError:()=>{r.value=null}}});export{u as A,z as C,j as S,S as W,Q as a,c as b,l as c,X as d,D as e,J as u}; diff --git a/frontend/dist/assets/customers-BwQm3paR.js b/frontend/dist/assets/customers-Gpmak2fJ.js similarity index 99% rename from frontend/dist/assets/customers-BwQm3paR.js rename to frontend/dist/assets/customers-Gpmak2fJ.js index e706b9ce..15c0b375 100644 --- a/frontend/dist/assets/customers-BwQm3paR.js +++ b/frontend/dist/assets/customers-Gpmak2fJ.js @@ -1 +1 @@ -import{bc as oe,bd as p,aO as le,r as f,c as u}from"./index-BUdRbiwj.js";class ie extends oe{constructor(){super("/customers")}async getAll(){try{return(await p.get(this.endpoint)).data}catch(t){throw this.handleError(t)}}async getById(t){try{return(await p.get(`${this.endpoint}/${t}`)).data}catch(a){throw this.handleError(a)}}async create(t){try{return(await p.post(this.endpoint,{name:t.name,code:t.code||"",type:t.type,status:t.status||"active",priority:t.priority||"normal",contactPerson:t.contactPerson||"",email:t.email||"",phone:t.phone||"",alternatePhone:t.alternatePhone||"",location:t.location||"",building:t.building||"",floor:t.floor||"",room:t.room||"",address:t.address||{},department:t.department||"",costCenter:t.costCenter||"",billingCode:t.billingCode||"",slaLevel:t.slaLevel||"standard",responseTime:t.responseTime||24,allowSelfService:t.allowSelfService!==!1,emailNotifications:t.emailNotifications!==!1,smsNotifications:t.smsNotifications||!1,notes:t.notes||"",tags:t.tags||[]})).data}catch(a){throw this.handleError(a)}}async update(t,a){try{return(await p.patch(`${this.endpoint}/${t}`,{name:a.name,code:a.code,type:a.type,status:a.status,priority:a.priority,contactPerson:a.contactPerson,email:a.email,phone:a.phone,alternatePhone:a.alternatePhone,location:a.location,building:a.building,floor:a.floor,room:a.room,address:a.address,department:a.department,costCenter:a.costCenter,billingCode:a.billingCode,slaLevel:a.slaLevel,responseTime:a.responseTime,allowSelfService:a.allowSelfService,emailNotifications:a.emailNotifications,smsNotifications:a.smsNotifications,notes:a.notes,tags:a.tags})).data}catch(o){throw this.handleError(o)}}async delete(t){try{await p.delete(`${this.endpoint}/${t}`)}catch(a){throw this.handleError(a)}}async search(t={}){try{const a=new URLSearchParams;t.search&&a.append("search",t.search),t.type&&a.append("type",t.type),t.status&&a.append("status",t.status),t.priority&&a.append("priority",t.priority),t.department&&a.append("department",t.department),t.location&&a.append("location",t.location),t.slaLevel&&a.append("slaLevel",t.slaLevel),t.sortBy&&a.append("sortBy",t.sortBy),t.sortOrder&&a.append("sortOrder",t.sortOrder),t.page!==void 0&&a.append("page",t.page),t.size!==void 0&&a.append("size",t.size);const o=a.toString()?`${this.endpoint}/search?${a.toString()}`:`${this.endpoint}/search`;return(await p.get(o)).data}catch(a){throw this.handleError(a)}}async getByType(t){try{return(await p.get(`${this.endpoint}/type/${t}`)).data}catch(a){throw this.handleError(a)}}async getByDepartment(t){try{return(await p.get(`${this.endpoint}/department/${encodeURIComponent(t)}`)).data}catch(a){throw this.handleError(a)}}async getByLocation(t){try{return(await p.get(`${this.endpoint}/location/${encodeURIComponent(t)}`)).data}catch(a){throw this.handleError(a)}}async getHighPriority(){try{return(await p.get(`${this.endpoint}/high-priority`)).data}catch(t){throw this.handleError(t)}}async updateStatus(t,a){try{return(await p.patch(`${this.endpoint}/${t}/status`,{status:a})).data}catch(o){throw this.handleError(o)}}async updatePriority(t,a){try{return(await p.patch(`${this.endpoint}/${t}/priority`,{priority:a})).data}catch(o){throw this.handleError(o)}}async updateNotificationSettings(t,a){try{return(await p.patch(`${this.endpoint}/${t}/notifications`,a)).data}catch(o){throw this.handleError(o)}}async bulkUpdate(t){try{return(await p.patch(`${this.endpoint}/bulk`,{updates:t})).data}catch(a){throw this.handleError(a)}}async getStatistics(){try{return(await p.get(`${this.endpoint}/statistics`)).data}catch(t){throw this.handleError(t)}}async validateCode(t,a=null){try{const o=new URLSearchParams;return o.append("code",t),a&&o.append("excludeId",a),(await p.get(`${this.endpoint}/validate-code?${o.toString()}`)).data}catch(o){throw this.handleError(o)}}async getDepartments(){try{return(await p.get(`${this.endpoint}/departments`)).data}catch(t){throw this.handleError(t)}}async getLocations(){try{return(await p.get(`${this.endpoint}/locations`)).data}catch(t){throw this.handleError(t)}}}const h=new ie,T={INTERNAL:"internal",EXTERNAL:"external",TENANT:"tenant",DEPARTMENT:"department",CONTRACTOR:"contractor"},v={ACTIVE:"active",INACTIVE:"inactive",PENDING:"pending",SUSPENDED:"suspended"},C={LOW:"low",NORMAL:"normal",HIGH:"high",CRITICAL:"critical"},ce=le("customers",()=>{const s=f([]),t=f(null),a=f(!1),o=f(null),c=f({}),b=f({page:0,size:20,totalElements:0,totalPages:0}),g=f(null),$=u(()=>s.value.reduce((e,r)=>(e[r.id]=r,e),{})),O=u(()=>s.value.filter(e=>e&&e.status===v.ACTIVE)),H=u(()=>s.value.filter(e=>e&&(e.priority===C.HIGH||e.priority===C.CRITICAL)&&e.status===v.ACTIVE)),R=u(()=>Object.values(T).reduce((e,r)=>(e[r]=s.value.filter(n=>n&&n.type===r),e),{})),B=u(()=>s.value.reduce((e,r)=>(r&&r.department&&(e[r.department]||(e[r.department]=[]),e[r.department].push(r)),e),{})),M=u(()=>s.value.reduce((e,r)=>(r&&r.location&&(e[r.location]||(e[r.location]=[]),e[r.location].push(r)),e),{})),F=u(()=>{const e=s.value.length,r=s.value.filter(i=>i&&i.status===v.ACTIVE).length,n=s.value.filter(i=>i&&i.status===v.INACTIVE).length,l=s.value.filter(i=>i&&i.status===v.PENDING).length,d=s.value.filter(i=>i&&i.status===v.SUSPENDED).length,w=Object.values(T).reduce((i,y)=>(i[y]=s.value.filter(E=>E&&E.type===y).length,i),{}),m=Object.values(C).reduce((i,y)=>(i[y]=s.value.filter(E=>E&&E.priority===y).length,i),{}),S=s.value.reduce((i,y)=>(y&&y.slaLevel&&(i[y.slaLevel]=(i[y.slaLevel]||0)+1),i),{}),I=s.value.filter(i=>i&&i.emailNotifications).length,L=s.value.filter(i=>i&&i.smsNotifications).length,A=s.value.filter(i=>i&&i.allowSelfService).length,N=[...new Set(s.value.map(i=>i&&i.department).filter(Boolean))],P=[...new Set(s.value.map(i=>i&&i.location).filter(Boolean))];return{total:e,active:r,inactive:n,pending:l,suspended:d,byType:w,byPriority:m,slaLevels:S,emailNotifications:I,smsNotifications:L,selfServiceEnabled:A,departments:N.length,locations:P.length}}),x=u(()=>e=>$.value[e]||null),z=u(()=>e=>R.value[e]||[]),V=u(()=>e=>B.value[e]||[]),k=u(()=>e=>M.value[e]||[]),j=u(()=>!c.value||Object.keys(c.value).length===0?s.value:s.value.filter(e=>{var r,n,l,d,w;if(c.value.search){const m=c.value.search.toLowerCase(),S=e.name.toLowerCase().includes(m),I=(r=e.code)==null?void 0:r.toLowerCase().includes(m),L=(n=e.contactPerson)==null?void 0:n.toLowerCase().includes(m),A=(l=e.email)==null?void 0:l.toLowerCase().includes(m),N=(d=e.department)==null?void 0:d.toLowerCase().includes(m),P=(w=e.location)==null?void 0:w.toLowerCase().includes(m);if(!S&&!I&&!L&&!A&&!N&&!P)return!1}return!(c.value.type&&e.type!==c.value.type||c.value.status&&e.status!==c.value.status||c.value.priority&&e.priority!==c.value.priority||c.value.department&&e.department!==c.value.department||c.value.location&&e.location!==c.value.location||c.value.slaLevel&&e.slaLevel!==c.value.slaLevel)})),U=async(e=!1)=>{const n=Date.now();if(!(!e&&g.value&&n-g.value<3e5)){a.value=!0,o.value=null;try{const l=await h.getAll();s.value=l,g.value=n}catch(l){throw o.value=l.message,console.error("Failed to initialize customers:",l),l}finally{a.value=!1}}},Z=async(e={})=>{a.value=!0,o.value=null,c.value={...e};try{const r={...e,page:e.page||0,size:e.size||20},n=await h.search(r);n.content?(s.value=n.content,b.value={page:n.number||0,size:n.size||20,totalElements:n.totalElements||0,totalPages:n.totalPages||0}):s.value=n}catch(r){throw o.value=r.message,console.error("Failed to fetch customers:",r),r}finally{a.value=!1}},G=async e=>{a.value=!0,o.value=null;try{const r=await h.create(e);return s.value.push(r),r}catch(r){throw o.value=r.message,console.error("Failed to create customer:",r),r}finally{a.value=!1}},W=async(e,r)=>{var n;a.value=!0,o.value=null;try{const l=await h.update(e,r),d=s.value.findIndex(w=>w.id===e);return d!==-1&&(s.value[d]=l),((n=t.value)==null?void 0:n.id)===e&&(t.value=l),l}catch(l){throw o.value=l.message,console.error("Failed to update customer:",l),l}finally{a.value=!1}},_=async e=>{var r;a.value=!0,o.value=null;try{await h.delete(e),s.value=s.value.filter(n=>n.id!==e),((r=t.value)==null?void 0:r.id)===e&&(t.value=null)}catch(n){throw o.value=n.message,console.error("Failed to delete customer:",n),n}finally{a.value=!1}},q=async e=>{if(!e){t.value=null;return}const r=x.value(e);if(r)return t.value=r,r;a.value=!0,o.value=null;try{const n=await h.getById(e);return t.value=n,s.value.find(l=>l.id===e)||s.value.push(n),n}catch(n){throw o.value=n.message,console.error("Failed to fetch customer:",n),n}finally{a.value=!1}},J=async(e,r)=>{a.value=!0,o.value=null;try{const n=await h.updateStatus(e,r),l=s.value.findIndex(d=>d.id===e);return l!==-1&&(s.value[l]={...s.value[l],status:r}),n}catch(n){throw o.value=n.message,console.error("Failed to update customer status:",n),n}finally{a.value=!1}},X=async(e,r)=>{a.value=!0,o.value=null;try{const n=await h.updatePriority(e,r),l=s.value.findIndex(d=>d.id===e);return l!==-1&&(s.value[l]={...s.value[l],priority:r}),n}catch(n){throw o.value=n.message,console.error("Failed to update customer priority:",n),n}finally{a.value=!1}},Y=async(e,r)=>{a.value=!0,o.value=null;try{const n=await h.updateNotificationSettings(e,r),l=s.value.findIndex(d=>d.id===e);return l!==-1&&(s.value[l]={...s.value[l],...r}),n}catch(n){throw o.value=n.message,console.error("Failed to update notification settings:",n),n}finally{a.value=!1}},K=async e=>{a.value=!0,o.value=null;try{const r=await h.bulkUpdate(e);return r.forEach(n=>{const l=s.value.findIndex(d=>d.id===n.id);l!==-1&&(s.value[l]=n)}),r}catch(r){throw o.value=r.message,console.error("Failed to bulk update customers:",r),r}finally{a.value=!1}},Q=async(e,r=null)=>{try{return(await h.validateCode(e,r)).isValid}catch(n){return console.error("Failed to validate customer code:",n),!1}},D=async()=>{try{return await h.getDepartments()}catch(e){return console.error("Failed to fetch departments:",e),[]}},ee=async()=>{try{return await h.getLocations()}catch(e){return console.error("Failed to fetch locations:",e),[]}},te=async()=>{g.value=null,await U(!0)},ae=()=>{o.value=null},re=()=>{t.value=null},ne=()=>{s.value=[],t.value=null,g.value=null,c.value={},b.value={page:0,size:20,totalElements:0,totalPages:0}},se=()=>{s.value=[{id:1,customerCode:"CUST-001",name:"ABC Corporation",email:"contact@abc-corp.com",phone:"+1 (555) 123-4567",type:T.EXTERNAL,priority:C.HIGH,status:v.ACTIVE,description:"Large manufacturing company requiring 24/7 support",serviceHours:"24x7",sla:{responseTime:"2h",resolutionTime:"8h",availability:99.9},notifications:{email:!0,sms:!0,phone:!1,portal:!0},primaryContact:{name:"John Smith",title:"Facilities Manager",email:"j.smith@abc-corp.com",phone:"+1 (555) 123-4568"},address:{street:"123 Industrial Blvd",city:"Manufacturing City",state:"CA",zipCode:"90210"},lastContactDate:"2024-01-15T10:30:00Z",lastContactMethod:"Email",createdAt:"2023-06-15T09:00:00Z",updatedAt:"2024-01-15T10:30:00Z"},{id:2,customerCode:"CUST-002",name:"City Health Department",email:"facilities@cityhealth.gov",phone:"+1 (555) 987-6543",type:T.GOVERNMENT,priority:C.MEDIUM,status:v.ACTIVE,description:"Municipal health department with multiple facilities",serviceHours:"business",sla:{responseTime:"4h",resolutionTime:"24h",availability:99.5},notifications:{email:!0,sms:!1,phone:!0,portal:!1},primaryContact:{name:"Sarah Johnson",title:"Operations Director",email:"s.johnson@cityhealth.gov",phone:"+1 (555) 987-6544"},address:{street:"456 Government Plaza",city:"Capital City",state:"CA",zipCode:"90211"},lastContactDate:"2024-01-10T14:15:00Z",lastContactMethod:"Phone",createdAt:"2023-08-20T11:30:00Z",updatedAt:"2024-01-10T14:15:00Z"},{id:3,customerCode:"CUST-003",name:"Tech Innovations LLC",email:"admin@techinnovations.com",phone:"+1 (555) 456-7890",type:T.PARTNER,priority:C.LOW,status:v.INACTIVE,description:"Technology partner requiring occasional maintenance support",serviceHours:"extended",sla:{responseTime:"8h",resolutionTime:"48h",availability:95},notifications:{email:!0,sms:!1,phone:!1,portal:!0},primaryContact:{name:"Mike Chen",title:"IT Manager",email:"m.chen@techinnovations.com",phone:"+1 (555) 456-7891"},address:{street:"789 Tech Park Dr",city:"Silicon Valley",state:"CA",zipCode:"90212"},lastContactDate:"2023-12-05T16:45:00Z",lastContactMethod:"Portal",createdAt:"2023-04-10T13:20:00Z",updatedAt:"2023-12-05T16:45:00Z"}],g.value=Date.now()};return{customers:u(()=>s.value),currentCustomer:u(()=>t.value),loading:u(()=>a.value),error:u(()=>o.value),searchCriteria:u(()=>c.value),pagination:u(()=>b.value),customersById:$,activeCustomers:O,highPriorityCustomers:H,customersByType:R,customersByDepartment:B,customersByLocation:M,customerStats:F,getCustomerById:x,getCustomersByType:z,getCustomersByDepartment:V,getCustomersByLocation:k,filteredCustomers:j,customerTypeOptions:u(()=>Object.values(T).map(e=>({label:e.charAt(0).toUpperCase()+e.slice(1),value:e}))),priorityOptions:u(()=>Object.values(C).map(e=>({label:e.charAt(0).toUpperCase()+e.slice(1),value:e}))),statusOptions:u(()=>Object.values(v).map(e=>({label:e.charAt(0).toUpperCase()+e.slice(1),value:e}))),responseTimeOptions:u(()=>[{label:"1 Hour",value:"1h"},{label:"2 Hours",value:"2h"},{label:"4 Hours",value:"4h"},{label:"8 Hours",value:"8h"},{label:"24 Hours",value:"24h"},{label:"48 Hours",value:"48h"}]),resolutionTimeOptions:u(()=>[{label:"4 Hours",value:"4h"},{label:"8 Hours",value:"8h"},{label:"24 Hours",value:"24h"},{label:"48 Hours",value:"48h"},{label:"72 Hours",value:"72h"},{label:"1 Week",value:"1w"}]),serviceHoursOptions:u(()=>[{label:"24x7",value:"24x7"},{label:"Business Hours (9AM-5PM)",value:"business"},{label:"Extended Hours (7AM-7PM)",value:"extended"},{label:"Custom",value:"custom"}]),totalCustomers:u(()=>s.value.length),activeCustomersCount:u(()=>O.value.length),inactiveCustomersCount:u(()=>s.value.filter(e=>e&&e.status===v.INACTIVE).length),highPriorityCustomersCount:u(()=>H.value.length),averageResponseTime:u(()=>{const e=s.value.map(n=>{var l;return n&&((l=n.sla)==null?void 0:l.responseTime)}).filter(Boolean).map(n=>parseInt(n));if(e.length===0)return null;const r=e.reduce((n,l)=>n+l,0)/e.length;return`${Math.round(r)}h`}),initializeCustomers:U,fetchCustomers:Z,createCustomer:G,updateCustomer:W,deleteCustomer:_,setCurrentCustomer:q,updateCustomerStatus:J,updateCustomerPriority:X,updateNotificationSettings:Y,bulkUpdateCustomers:K,validateCustomerCode:Q,getDepartments:D,getLocations:ee,refreshCustomers:te,clearError:ae,clearCurrentCustomer:re,clearCustomers:ne,loadMockData:se}});export{ce as u}; +import{bc as oe,bd as p,aP as le,r as f,c as u}from"./index-QAlcqU00.js";class ie extends oe{constructor(){super("/customers")}async getAll(){try{return(await p.get(this.endpoint)).data}catch(t){throw this.handleError(t)}}async getById(t){try{return(await p.get(`${this.endpoint}/${t}`)).data}catch(a){throw this.handleError(a)}}async create(t){try{return(await p.post(this.endpoint,{name:t.name,code:t.code||"",type:t.type,status:t.status||"active",priority:t.priority||"normal",contactPerson:t.contactPerson||"",email:t.email||"",phone:t.phone||"",alternatePhone:t.alternatePhone||"",location:t.location||"",building:t.building||"",floor:t.floor||"",room:t.room||"",address:t.address||{},department:t.department||"",costCenter:t.costCenter||"",billingCode:t.billingCode||"",slaLevel:t.slaLevel||"standard",responseTime:t.responseTime||24,allowSelfService:t.allowSelfService!==!1,emailNotifications:t.emailNotifications!==!1,smsNotifications:t.smsNotifications||!1,notes:t.notes||"",tags:t.tags||[]})).data}catch(a){throw this.handleError(a)}}async update(t,a){try{return(await p.patch(`${this.endpoint}/${t}`,{name:a.name,code:a.code,type:a.type,status:a.status,priority:a.priority,contactPerson:a.contactPerson,email:a.email,phone:a.phone,alternatePhone:a.alternatePhone,location:a.location,building:a.building,floor:a.floor,room:a.room,address:a.address,department:a.department,costCenter:a.costCenter,billingCode:a.billingCode,slaLevel:a.slaLevel,responseTime:a.responseTime,allowSelfService:a.allowSelfService,emailNotifications:a.emailNotifications,smsNotifications:a.smsNotifications,notes:a.notes,tags:a.tags})).data}catch(o){throw this.handleError(o)}}async delete(t){try{await p.delete(`${this.endpoint}/${t}`)}catch(a){throw this.handleError(a)}}async search(t={}){try{const a=new URLSearchParams;t.search&&a.append("search",t.search),t.type&&a.append("type",t.type),t.status&&a.append("status",t.status),t.priority&&a.append("priority",t.priority),t.department&&a.append("department",t.department),t.location&&a.append("location",t.location),t.slaLevel&&a.append("slaLevel",t.slaLevel),t.sortBy&&a.append("sortBy",t.sortBy),t.sortOrder&&a.append("sortOrder",t.sortOrder),t.page!==void 0&&a.append("page",t.page),t.size!==void 0&&a.append("size",t.size);const o=a.toString()?`${this.endpoint}/search?${a.toString()}`:`${this.endpoint}/search`;return(await p.get(o)).data}catch(a){throw this.handleError(a)}}async getByType(t){try{return(await p.get(`${this.endpoint}/type/${t}`)).data}catch(a){throw this.handleError(a)}}async getByDepartment(t){try{return(await p.get(`${this.endpoint}/department/${encodeURIComponent(t)}`)).data}catch(a){throw this.handleError(a)}}async getByLocation(t){try{return(await p.get(`${this.endpoint}/location/${encodeURIComponent(t)}`)).data}catch(a){throw this.handleError(a)}}async getHighPriority(){try{return(await p.get(`${this.endpoint}/high-priority`)).data}catch(t){throw this.handleError(t)}}async updateStatus(t,a){try{return(await p.patch(`${this.endpoint}/${t}/status`,{status:a})).data}catch(o){throw this.handleError(o)}}async updatePriority(t,a){try{return(await p.patch(`${this.endpoint}/${t}/priority`,{priority:a})).data}catch(o){throw this.handleError(o)}}async updateNotificationSettings(t,a){try{return(await p.patch(`${this.endpoint}/${t}/notifications`,a)).data}catch(o){throw this.handleError(o)}}async bulkUpdate(t){try{return(await p.patch(`${this.endpoint}/bulk`,{updates:t})).data}catch(a){throw this.handleError(a)}}async getStatistics(){try{return(await p.get(`${this.endpoint}/statistics`)).data}catch(t){throw this.handleError(t)}}async validateCode(t,a=null){try{const o=new URLSearchParams;return o.append("code",t),a&&o.append("excludeId",a),(await p.get(`${this.endpoint}/validate-code?${o.toString()}`)).data}catch(o){throw this.handleError(o)}}async getDepartments(){try{return(await p.get(`${this.endpoint}/departments`)).data}catch(t){throw this.handleError(t)}}async getLocations(){try{return(await p.get(`${this.endpoint}/locations`)).data}catch(t){throw this.handleError(t)}}}const h=new ie,T={INTERNAL:"internal",EXTERNAL:"external",TENANT:"tenant",DEPARTMENT:"department",CONTRACTOR:"contractor"},v={ACTIVE:"active",INACTIVE:"inactive",PENDING:"pending",SUSPENDED:"suspended"},C={LOW:"low",NORMAL:"normal",HIGH:"high",CRITICAL:"critical"},ce=le("customers",()=>{const s=f([]),t=f(null),a=f(!1),o=f(null),c=f({}),b=f({page:0,size:20,totalElements:0,totalPages:0}),g=f(null),$=u(()=>s.value.reduce((e,r)=>(e[r.id]=r,e),{})),O=u(()=>s.value.filter(e=>e&&e.status===v.ACTIVE)),H=u(()=>s.value.filter(e=>e&&(e.priority===C.HIGH||e.priority===C.CRITICAL)&&e.status===v.ACTIVE)),R=u(()=>Object.values(T).reduce((e,r)=>(e[r]=s.value.filter(n=>n&&n.type===r),e),{})),B=u(()=>s.value.reduce((e,r)=>(r&&r.department&&(e[r.department]||(e[r.department]=[]),e[r.department].push(r)),e),{})),M=u(()=>s.value.reduce((e,r)=>(r&&r.location&&(e[r.location]||(e[r.location]=[]),e[r.location].push(r)),e),{})),F=u(()=>{const e=s.value.length,r=s.value.filter(i=>i&&i.status===v.ACTIVE).length,n=s.value.filter(i=>i&&i.status===v.INACTIVE).length,l=s.value.filter(i=>i&&i.status===v.PENDING).length,d=s.value.filter(i=>i&&i.status===v.SUSPENDED).length,w=Object.values(T).reduce((i,y)=>(i[y]=s.value.filter(E=>E&&E.type===y).length,i),{}),m=Object.values(C).reduce((i,y)=>(i[y]=s.value.filter(E=>E&&E.priority===y).length,i),{}),S=s.value.reduce((i,y)=>(y&&y.slaLevel&&(i[y.slaLevel]=(i[y.slaLevel]||0)+1),i),{}),I=s.value.filter(i=>i&&i.emailNotifications).length,L=s.value.filter(i=>i&&i.smsNotifications).length,A=s.value.filter(i=>i&&i.allowSelfService).length,N=[...new Set(s.value.map(i=>i&&i.department).filter(Boolean))],P=[...new Set(s.value.map(i=>i&&i.location).filter(Boolean))];return{total:e,active:r,inactive:n,pending:l,suspended:d,byType:w,byPriority:m,slaLevels:S,emailNotifications:I,smsNotifications:L,selfServiceEnabled:A,departments:N.length,locations:P.length}}),x=u(()=>e=>$.value[e]||null),z=u(()=>e=>R.value[e]||[]),V=u(()=>e=>B.value[e]||[]),k=u(()=>e=>M.value[e]||[]),j=u(()=>!c.value||Object.keys(c.value).length===0?s.value:s.value.filter(e=>{var r,n,l,d,w;if(c.value.search){const m=c.value.search.toLowerCase(),S=e.name.toLowerCase().includes(m),I=(r=e.code)==null?void 0:r.toLowerCase().includes(m),L=(n=e.contactPerson)==null?void 0:n.toLowerCase().includes(m),A=(l=e.email)==null?void 0:l.toLowerCase().includes(m),N=(d=e.department)==null?void 0:d.toLowerCase().includes(m),P=(w=e.location)==null?void 0:w.toLowerCase().includes(m);if(!S&&!I&&!L&&!A&&!N&&!P)return!1}return!(c.value.type&&e.type!==c.value.type||c.value.status&&e.status!==c.value.status||c.value.priority&&e.priority!==c.value.priority||c.value.department&&e.department!==c.value.department||c.value.location&&e.location!==c.value.location||c.value.slaLevel&&e.slaLevel!==c.value.slaLevel)})),U=async(e=!1)=>{const n=Date.now();if(!(!e&&g.value&&n-g.value<3e5)){a.value=!0,o.value=null;try{const l=await h.getAll();s.value=l,g.value=n}catch(l){throw o.value=l.message,console.error("Failed to initialize customers:",l),l}finally{a.value=!1}}},Z=async(e={})=>{a.value=!0,o.value=null,c.value={...e};try{const r={...e,page:e.page||0,size:e.size||20},n=await h.search(r);n.content?(s.value=n.content,b.value={page:n.number||0,size:n.size||20,totalElements:n.totalElements||0,totalPages:n.totalPages||0}):s.value=n}catch(r){throw o.value=r.message,console.error("Failed to fetch customers:",r),r}finally{a.value=!1}},G=async e=>{a.value=!0,o.value=null;try{const r=await h.create(e);return s.value.push(r),r}catch(r){throw o.value=r.message,console.error("Failed to create customer:",r),r}finally{a.value=!1}},W=async(e,r)=>{var n;a.value=!0,o.value=null;try{const l=await h.update(e,r),d=s.value.findIndex(w=>w.id===e);return d!==-1&&(s.value[d]=l),((n=t.value)==null?void 0:n.id)===e&&(t.value=l),l}catch(l){throw o.value=l.message,console.error("Failed to update customer:",l),l}finally{a.value=!1}},_=async e=>{var r;a.value=!0,o.value=null;try{await h.delete(e),s.value=s.value.filter(n=>n.id!==e),((r=t.value)==null?void 0:r.id)===e&&(t.value=null)}catch(n){throw o.value=n.message,console.error("Failed to delete customer:",n),n}finally{a.value=!1}},q=async e=>{if(!e){t.value=null;return}const r=x.value(e);if(r)return t.value=r,r;a.value=!0,o.value=null;try{const n=await h.getById(e);return t.value=n,s.value.find(l=>l.id===e)||s.value.push(n),n}catch(n){throw o.value=n.message,console.error("Failed to fetch customer:",n),n}finally{a.value=!1}},J=async(e,r)=>{a.value=!0,o.value=null;try{const n=await h.updateStatus(e,r),l=s.value.findIndex(d=>d.id===e);return l!==-1&&(s.value[l]={...s.value[l],status:r}),n}catch(n){throw o.value=n.message,console.error("Failed to update customer status:",n),n}finally{a.value=!1}},X=async(e,r)=>{a.value=!0,o.value=null;try{const n=await h.updatePriority(e,r),l=s.value.findIndex(d=>d.id===e);return l!==-1&&(s.value[l]={...s.value[l],priority:r}),n}catch(n){throw o.value=n.message,console.error("Failed to update customer priority:",n),n}finally{a.value=!1}},Y=async(e,r)=>{a.value=!0,o.value=null;try{const n=await h.updateNotificationSettings(e,r),l=s.value.findIndex(d=>d.id===e);return l!==-1&&(s.value[l]={...s.value[l],...r}),n}catch(n){throw o.value=n.message,console.error("Failed to update notification settings:",n),n}finally{a.value=!1}},K=async e=>{a.value=!0,o.value=null;try{const r=await h.bulkUpdate(e);return r.forEach(n=>{const l=s.value.findIndex(d=>d.id===n.id);l!==-1&&(s.value[l]=n)}),r}catch(r){throw o.value=r.message,console.error("Failed to bulk update customers:",r),r}finally{a.value=!1}},Q=async(e,r=null)=>{try{return(await h.validateCode(e,r)).isValid}catch(n){return console.error("Failed to validate customer code:",n),!1}},D=async()=>{try{return await h.getDepartments()}catch(e){return console.error("Failed to fetch departments:",e),[]}},ee=async()=>{try{return await h.getLocations()}catch(e){return console.error("Failed to fetch locations:",e),[]}},te=async()=>{g.value=null,await U(!0)},ae=()=>{o.value=null},re=()=>{t.value=null},ne=()=>{s.value=[],t.value=null,g.value=null,c.value={},b.value={page:0,size:20,totalElements:0,totalPages:0}},se=()=>{s.value=[{id:1,customerCode:"CUST-001",name:"ABC Corporation",email:"contact@abc-corp.com",phone:"+1 (555) 123-4567",type:T.EXTERNAL,priority:C.HIGH,status:v.ACTIVE,description:"Large manufacturing company requiring 24/7 support",serviceHours:"24x7",sla:{responseTime:"2h",resolutionTime:"8h",availability:99.9},notifications:{email:!0,sms:!0,phone:!1,portal:!0},primaryContact:{name:"John Smith",title:"Facilities Manager",email:"j.smith@abc-corp.com",phone:"+1 (555) 123-4568"},address:{street:"123 Industrial Blvd",city:"Manufacturing City",state:"CA",zipCode:"90210"},lastContactDate:"2024-01-15T10:30:00Z",lastContactMethod:"Email",createdAt:"2023-06-15T09:00:00Z",updatedAt:"2024-01-15T10:30:00Z"},{id:2,customerCode:"CUST-002",name:"City Health Department",email:"facilities@cityhealth.gov",phone:"+1 (555) 987-6543",type:T.GOVERNMENT,priority:C.MEDIUM,status:v.ACTIVE,description:"Municipal health department with multiple facilities",serviceHours:"business",sla:{responseTime:"4h",resolutionTime:"24h",availability:99.5},notifications:{email:!0,sms:!1,phone:!0,portal:!1},primaryContact:{name:"Sarah Johnson",title:"Operations Director",email:"s.johnson@cityhealth.gov",phone:"+1 (555) 987-6544"},address:{street:"456 Government Plaza",city:"Capital City",state:"CA",zipCode:"90211"},lastContactDate:"2024-01-10T14:15:00Z",lastContactMethod:"Phone",createdAt:"2023-08-20T11:30:00Z",updatedAt:"2024-01-10T14:15:00Z"},{id:3,customerCode:"CUST-003",name:"Tech Innovations LLC",email:"admin@techinnovations.com",phone:"+1 (555) 456-7890",type:T.PARTNER,priority:C.LOW,status:v.INACTIVE,description:"Technology partner requiring occasional maintenance support",serviceHours:"extended",sla:{responseTime:"8h",resolutionTime:"48h",availability:95},notifications:{email:!0,sms:!1,phone:!1,portal:!0},primaryContact:{name:"Mike Chen",title:"IT Manager",email:"m.chen@techinnovations.com",phone:"+1 (555) 456-7891"},address:{street:"789 Tech Park Dr",city:"Silicon Valley",state:"CA",zipCode:"90212"},lastContactDate:"2023-12-05T16:45:00Z",lastContactMethod:"Portal",createdAt:"2023-04-10T13:20:00Z",updatedAt:"2023-12-05T16:45:00Z"}],g.value=Date.now()};return{customers:u(()=>s.value),currentCustomer:u(()=>t.value),loading:u(()=>a.value),error:u(()=>o.value),searchCriteria:u(()=>c.value),pagination:u(()=>b.value),customersById:$,activeCustomers:O,highPriorityCustomers:H,customersByType:R,customersByDepartment:B,customersByLocation:M,customerStats:F,getCustomerById:x,getCustomersByType:z,getCustomersByDepartment:V,getCustomersByLocation:k,filteredCustomers:j,customerTypeOptions:u(()=>Object.values(T).map(e=>({label:e.charAt(0).toUpperCase()+e.slice(1),value:e}))),priorityOptions:u(()=>Object.values(C).map(e=>({label:e.charAt(0).toUpperCase()+e.slice(1),value:e}))),statusOptions:u(()=>Object.values(v).map(e=>({label:e.charAt(0).toUpperCase()+e.slice(1),value:e}))),responseTimeOptions:u(()=>[{label:"1 Hour",value:"1h"},{label:"2 Hours",value:"2h"},{label:"4 Hours",value:"4h"},{label:"8 Hours",value:"8h"},{label:"24 Hours",value:"24h"},{label:"48 Hours",value:"48h"}]),resolutionTimeOptions:u(()=>[{label:"4 Hours",value:"4h"},{label:"8 Hours",value:"8h"},{label:"24 Hours",value:"24h"},{label:"48 Hours",value:"48h"},{label:"72 Hours",value:"72h"},{label:"1 Week",value:"1w"}]),serviceHoursOptions:u(()=>[{label:"24x7",value:"24x7"},{label:"Business Hours (9AM-5PM)",value:"business"},{label:"Extended Hours (7AM-7PM)",value:"extended"},{label:"Custom",value:"custom"}]),totalCustomers:u(()=>s.value.length),activeCustomersCount:u(()=>O.value.length),inactiveCustomersCount:u(()=>s.value.filter(e=>e&&e.status===v.INACTIVE).length),highPriorityCustomersCount:u(()=>H.value.length),averageResponseTime:u(()=>{const e=s.value.map(n=>{var l;return n&&((l=n.sla)==null?void 0:l.responseTime)}).filter(Boolean).map(n=>parseInt(n));if(e.length===0)return null;const r=e.reduce((n,l)=>n+l,0)/e.length;return`${Math.round(r)}h`}),initializeCustomers:U,fetchCustomers:Z,createCustomer:G,updateCustomer:W,deleteCustomer:_,setCurrentCustomer:q,updateCustomerStatus:J,updateCustomerPriority:X,updateNotificationSettings:Y,bulkUpdateCustomers:K,validateCustomerCode:Q,getDepartments:D,getLocations:ee,refreshCustomers:te,clearError:ae,clearCurrentCustomer:re,clearCustomers:ne,loadMockData:se}});export{ce as u}; diff --git a/frontend/dist/assets/index-BUdRbiwj.js b/frontend/dist/assets/index-BUdRbiwj.js deleted file mode 100644 index 69301218..00000000 --- a/frontend/dist/assets/index-BUdRbiwj.js +++ /dev/null @@ -1,169 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/LoginView-DHbMd_ru.js","assets/validators-BsFa-KD7.js","assets/FPInput-CzR_dWoe.js","assets/FPCard-qHzcEQAE.js","assets/FPCheckbox-Bu8jNAEW.js","assets/FPAlert-qtmRrGXf.js","assets/LoginView-BcwGO_tK.css","assets/RegisterView-BAfp3jPJ.js","assets/FPSelect-C7p47Ma2.js","assets/RegisterView-SeiuDtCj.css","assets/ForgotPasswordView-DMDfTgVH.js","assets/VContainer-Cf71ALK9.js","assets/VContainer-Cb7FdSrp.css","assets/VTextField-CU5R_EKn.js","assets/VTextField-DNSnnpKh.css","assets/ForgotPasswordView-DSC1mpP5.css","assets/ResetPasswordView-DU40_52o.js","assets/ResetPasswordView-CSiVOdOM.css","assets/DashboardView-BMT2_nib.js","assets/assets-eZiqmOvX.js","assets/FPPageHeader-CTG2L28r.js","assets/WorkOrdersListView-tn0RQdqM.css","assets/FPModal-DWGF1LV8.js","assets/FPBadge-BKY5dPnL.js","assets/useUniversalCalendar-2CJQgaXx.js","assets/useWorkOrders-B61P5JA7.js","assets/useFormAutoSave-Jaawgo91.js","assets/workOrder-jNxj_kjQ.js","assets/usePreventiveMaintenanceDisplay-Bhncwa9c.js","assets/FPStats-BGfZcDZc.js","assets/DashboardView-DBTWDaYr.css","assets/WorkOrdersListView-D2P7n4OF.js","assets/AudioRecorder-CcKMXbWt.js","assets/AudioRecorder-Cqp4C4vr.css","assets/TimeTracker-Ch4gtOrh.js","assets/TimeTracker-8Kq5cSPU.css","assets/StatusHistory-DeozEdNs.js","assets/StatusHistory-Ce5lyf1i.css","assets/WorkOrderIdGenerator-BPGN0soM.js","assets/WorkOrderIdGenerator-DxPcXLI6.css","assets/ReportGenerator-CjXdt1Qp.js","assets/ReportGenerator-D3qwfB3A.css","assets/FPTable-CU8C_NYc.js","assets/FPTabs-R71V25QN.js","assets/FPFileUpload-D2coSbjN.js","assets/FormRestoreNotification-DYBlXhOP.js","assets/CreateWorkOrderView-Cry3C_bU.js","assets/WorkOrderDetailView-UFwsRvY7.js","assets/DigitalSignature-B20bSUAg.js","assets/DigitalSignature-Bnx6vipo.css","assets/EditWorkOrderView-D2FfecvI.js","assets/WorkOrdersCalendarView-XWSDIuv_.js","assets/WorkOrdersCalendarView-BNspoYbX.css","assets/AssetsView-Dxw39KQD.js","assets/AssetsView-DOlY43sR.css","assets/AssetsListView-CX_TFbT7.js","assets/locations-IQR_pcEX.js","assets/CustomFieldsForm-BQBEtYs0.js","assets/CustomFieldsForm-5dTXu1Nl.css","assets/AssetsListView-CpleWBqM.css","assets/CreateAssetView-COgGs-cL.js","assets/CreateAssetView-PDXNYTww.css","assets/AssetDetailView-DzqeTmEM.js","assets/EditAssetView-DjSfVV7v.js","assets/EditAssetView-D0DrzVdE.css","assets/LocationsListView-CZh_u7tU.js","assets/lodash-RqMXHFU9.js","assets/_commonjsHelpers-NT8qMgGI.js","assets/LocationDetailView-CDUR53_5.js","assets/PeopleView-CYrsa8L-.js","assets/PeopleView-9c6mSFQw.css","assets/PeopleListView-B0nZJzbG.js","assets/users-DxH_c7oY.js","assets/roles-f1XEGBFr.js","assets/TeamsListView-BMyhC_wf.js","assets/InventoryView-Dvb43sMl.js","assets/parts-B3aeW8xP.js","assets/PartsListView-BrMDoBjw.js","assets/usePartDisplay-D-mkc8An.js","assets/PartDetailView-BURhvJ9p.js","assets/StockAlertsView-COqyScqS.js","assets/inventory-C_cwbKdQ.js","assets/InventoryTransfersView-C5SAFO28.js","assets/PreventiveMaintenanceListView-BhRxnL6J.js","assets/usePreventiveMaintenanceOperations-LTA5pnar.js","assets/PreventiveMaintenanceDetailView-C9-E0bMm.js","assets/ReportsView-CBYhF-qa.js","assets/ReportsView-liUXIOJU.css","assets/CategoriesIndexView-DYtaWxTm.js","assets/useCategoryDisplay-DheH2kkf.js","assets/CategoriesListView-BP98cpP_.js","assets/VendorsListView-DhYeR9jE.js","assets/vendors-CLTqdcI-.js","assets/VendorDetailView-lJ2x0gCu.js","assets/RequestsListView-01sUQsK4.js","assets/useRequestManagement-aHkLwKaS.js","assets/RequestDetailView-BkDwCZ7I.js","assets/MetersListView-DK0MHuyn.js","assets/useMeterManagement-CqU4p7ia.js","assets/MeterDetailView-BRhPlyL8.js","assets/CustomersListView-Bc4T8qVE.js","assets/customers-BwQm3paR.js","assets/CustomerDetailView-B1CXIshh.js","assets/SettingsView-CAdpolKN.js","assets/ProfileView-B6ls_uOw.js","assets/FrappeUIDemo-Cdw03urn.js","assets/SimpleDemo-BNaqYHXS.js","assets/SimpleDemo-unJ_zLf1.css","assets/UnauthorizedView-CevgHCyZ.js","assets/NotFoundView-ChJiJ8lW.js"])))=>i.map(i=>d[i]); -(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))r(s);new MutationObserver(s=>{for(const o of s)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&r(i)}).observe(document,{childList:!0,subtree:!0});function n(s){const o={};return s.integrity&&(o.integrity=s.integrity),s.referrerPolicy&&(o.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?o.credentials="include":s.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(s){if(s.ep)return;s.ep=!0;const o=n(s);fetch(s.href,o)}})();/** -* @vue/shared v3.5.18 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**//*! #__NO_SIDE_EFFECTS__ */function Ui(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const Se={},Kn=[],It=()=>{},gh=()=>!1,so=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),qi=e=>e.startsWith("onUpdate:"),Ve=Object.assign,zi=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},yh=Object.prototype.hasOwnProperty,_e=(e,t)=>yh.call(e,t),Q=Array.isArray,Yn=e=>Kr(e)==="[object Map]",ir=e=>Kr(e)==="[object Set]",Pa=e=>Kr(e)==="[object Date]",ae=e=>typeof e=="function",Fe=e=>typeof e=="string",Et=e=>typeof e=="symbol",xe=e=>e!==null&&typeof e=="object",qc=e=>(xe(e)||ae(e))&&ae(e.then)&&ae(e.catch),zc=Object.prototype.toString,Kr=e=>zc.call(e),vh=e=>Kr(e).slice(8,-1),Wc=e=>Kr(e)==="[object Object]",Wi=e=>Fe(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,_r=Ui(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),oo=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},bh=/-(\w)/g,yt=oo(e=>e.replace(bh,(t,n)=>n?n.toUpperCase():"")),wh=/\B([A-Z])/g,dn=oo(e=>e.replace(wh,"-$1").toLowerCase()),Yr=oo(e=>e.charAt(0).toUpperCase()+e.slice(1)),ws=oo(e=>e?`on${Yr(e)}`:""),ln=(e,t)=>!Object.is(e,t),_s=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},Ls=e=>{const t=parseFloat(e);return isNaN(t)?e:t},_h=e=>{const t=Fe(e)?Number(e):NaN;return isNaN(t)?e:t};let Oa;const io=()=>Oa||(Oa=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof globalThis<"u"?globalThis:{});function Ke(e){if(Q(e)){const t={};for(let n=0;n{if(n){const r=n.split(Sh);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function ve(e){let t="";if(Fe(e))t=e;else if(Q(e))for(let n=0;nJr(n,t))}const Kc=e=>!!(e&&e.__v_isRef===!0),pt=e=>Fe(e)?e:e==null?"":Q(e)||xe(e)&&(e.toString===zc||!ae(e.toString))?Kc(e)?pt(e.value):JSON.stringify(e,Yc,2):String(e),Yc=(e,t)=>Kc(t)?Yc(e,t.value):Yn(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,s],o)=>(n[$o(r,o)+" =>"]=s,n),{})}:ir(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>$o(n))}:Et(t)?$o(t):xe(t)&&!Q(t)&&!Wc(t)?String(t):t,$o=(e,t="")=>{var n;return Et(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** -* @vue/reactivity v3.5.18 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let We;class Jc{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=We,!t&&We&&(this.index=(We.scopes||(We.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0&&--this._on===0&&(We=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let n,r;for(n=0,r=this.effects.length;n0)return;if(Sr){let t=Sr;for(Sr=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;Er;){let t=Er;for(Er=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(r){e||(e=r)}t=n}}if(e)throw e}function eu(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function tu(e){let t,n=e.depsTail,r=n;for(;r;){const s=r.prevDep;r.version===-1?(r===n&&(n=s),Zi(r),Rh(r)):t=r,r.dep.activeLink=r.prevActiveLink,r.prevActiveLink=void 0,r=s}e.deps=t,e.depsTail=n}function oi(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(nu(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function nu(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===$r)||(e.globalVersion=$r,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!oi(e))))return;e.flags|=2;const t=e.dep,n=ke,r=wt;ke=e,wt=!0;try{eu(e);const s=e.fn(e._value);(t.version===0||ln(s,e._value))&&(e.flags|=128,e._value=s,t.version++)}catch(s){throw t.version++,s}finally{ke=n,wt=r,tu(e),e.flags&=-3}}function Zi(e,t=!1){const{dep:n,prevSub:r,nextSub:s}=e;if(r&&(r.nextSub=s,e.prevSub=void 0),s&&(s.prevSub=r,e.nextSub=void 0),n.subs===e&&(n.subs=r,!r&&n.computed)){n.computed.flags&=-5;for(let o=n.computed.deps;o;o=o.nextDep)Zi(o,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Rh(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let wt=!0;const ru=[];function Gt(){ru.push(wt),wt=!1}function Kt(){const e=ru.pop();wt=e===void 0?!0:e}function $a(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=ke;ke=void 0;try{t()}finally{ke=n}}}let $r=0;class Ph{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class ao{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!ke||!wt||ke===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==ke)n=this.activeLink=new Ph(ke,this),ke.deps?(n.prevDep=ke.depsTail,ke.depsTail.nextDep=n,ke.depsTail=n):ke.deps=ke.depsTail=n,su(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const r=n.nextDep;r.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=r),n.prevDep=ke.depsTail,n.nextDep=void 0,ke.depsTail.nextDep=n,ke.depsTail=n,ke.deps===n&&(ke.deps=r)}return n}trigger(t){this.version++,$r++,this.notify(t)}notify(t){Yi();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Ji()}}}function su(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let r=t.deps;r;r=r.nextDep)su(r)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Ms=new WeakMap,On=Symbol(""),ii=Symbol(""),Fr=Symbol("");function Ge(e,t,n){if(wt&&ke){let r=Ms.get(e);r||Ms.set(e,r=new Map);let s=r.get(n);s||(r.set(n,s=new ao),s.map=r,s.key=n),s.track()}}function Ut(e,t,n,r,s,o){const i=Ms.get(e);if(!i){$r++;return}const a=l=>{l&&l.trigger()};if(Yi(),t==="clear")i.forEach(a);else{const l=Q(e),u=l&&Wi(n);if(l&&n==="length"){const c=Number(r);i.forEach((f,d)=>{(d==="length"||d===Fr||!Et(d)&&d>=c)&&a(f)})}else switch((n!==void 0||i.has(void 0))&&a(i.get(n)),u&&a(i.get(Fr)),t){case"add":l?u&&a(i.get("length")):(a(i.get(On)),Yn(e)&&a(i.get(ii)));break;case"delete":l||(a(i.get(On)),Yn(e)&&a(i.get(ii)));break;case"set":Yn(e)&&a(i.get(On));break}}Ji()}function Oh(e,t){const n=Ms.get(e);return n&&n.get(t)}function Vn(e){const t=he(e);return t===e?t:(Ge(t,"iterate",Fr),gt(e)?t:t.map(Ue))}function lo(e){return Ge(e=he(e),"iterate",Fr),e}const $h={__proto__:null,[Symbol.iterator](){return Lo(this,Symbol.iterator,Ue)},concat(...e){return Vn(this).concat(...e.map(t=>Q(t)?Vn(t):t))},entries(){return Lo(this,"entries",e=>(e[1]=Ue(e[1]),e))},every(e,t){return Bt(this,"every",e,t,void 0,arguments)},filter(e,t){return Bt(this,"filter",e,t,n=>n.map(Ue),arguments)},find(e,t){return Bt(this,"find",e,t,Ue,arguments)},findIndex(e,t){return Bt(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Bt(this,"findLast",e,t,Ue,arguments)},findLastIndex(e,t){return Bt(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Bt(this,"forEach",e,t,void 0,arguments)},includes(...e){return Mo(this,"includes",e)},indexOf(...e){return Mo(this,"indexOf",e)},join(e){return Vn(this).join(e)},lastIndexOf(...e){return Mo(this,"lastIndexOf",e)},map(e,t){return Bt(this,"map",e,t,void 0,arguments)},pop(){return hr(this,"pop")},push(...e){return hr(this,"push",e)},reduce(e,...t){return Fa(this,"reduce",e,t)},reduceRight(e,...t){return Fa(this,"reduceRight",e,t)},shift(){return hr(this,"shift")},some(e,t){return Bt(this,"some",e,t,void 0,arguments)},splice(...e){return hr(this,"splice",e)},toReversed(){return Vn(this).toReversed()},toSorted(e){return Vn(this).toSorted(e)},toSpliced(...e){return Vn(this).toSpliced(...e)},unshift(...e){return hr(this,"unshift",e)},values(){return Lo(this,"values",Ue)}};function Lo(e,t,n){const r=lo(e),s=r[t]();return r!==e&&!gt(e)&&(s._next=s.next,s.next=()=>{const o=s._next();return o.value&&(o.value=n(o.value)),o}),s}const Fh=Array.prototype;function Bt(e,t,n,r,s,o){const i=lo(e),a=i!==e&&!gt(e),l=i[t];if(l!==Fh[t]){const f=l.apply(e,o);return a?Ue(f):f}let u=n;i!==e&&(a?u=function(f,d){return n.call(this,Ue(f),d,e)}:n.length>2&&(u=function(f,d){return n.call(this,f,d,e)}));const c=l.call(i,u,r);return a&&s?s(c):c}function Fa(e,t,n,r){const s=lo(e);let o=n;return s!==e&&(gt(e)?n.length>3&&(o=function(i,a,l){return n.call(this,i,a,l,e)}):o=function(i,a,l){return n.call(this,i,Ue(a),l,e)}),s[t](o,...r)}function Mo(e,t,n){const r=he(e);Ge(r,"iterate",Fr);const s=r[t](...n);return(s===-1||s===!1)&&Xi(n[0])?(n[0]=he(n[0]),r[t](...n)):s}function hr(e,t,n=[]){Gt(),Yi();const r=he(e)[t].apply(e,n);return Ji(),Kt(),r}const Lh=Ui("__proto__,__v_isRef,__isVue"),ou=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Et));function Mh(e){Et(e)||(e=String(e));const t=he(this);return Ge(t,"has",e),t.hasOwnProperty(e)}class iu{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){if(n==="__v_skip")return t.__v_skip;const s=this._isReadonly,o=this._isShallow;if(n==="__v_isReactive")return!s;if(n==="__v_isReadonly")return s;if(n==="__v_isShallow")return o;if(n==="__v_raw")return r===(s?o?du:fu:o?uu:cu).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const i=Q(t);if(!s){let l;if(i&&(l=$h[n]))return l;if(n==="hasOwnProperty")return Mh}const a=Reflect.get(t,n,Ae(t)?t:r);return(Et(n)?ou.has(n):Lh(n))||(s||Ge(t,"get",n),o)?a:Ae(a)?i&&Wi(n)?a:a.value:xe(a)?s?Zr(a):Be(a):a}}class au extends iu{constructor(t=!1){super(!1,t)}set(t,n,r,s){let o=t[n];if(!this._isShallow){const l=cn(o);if(!gt(r)&&!cn(r)&&(o=he(o),r=he(r)),!Q(t)&&Ae(o)&&!Ae(r))return l?!1:(o.value=r,!0)}const i=Q(t)&&Wi(n)?Number(n)e,fs=e=>Reflect.getPrototypeOf(e);function Vh(e,t,n){return function(...r){const s=this.__v_raw,o=he(s),i=Yn(o),a=e==="entries"||e===Symbol.iterator&&i,l=e==="keys"&&i,u=s[e](...r),c=n?ai:t?Is:Ue;return!t&&Ge(o,"iterate",l?ii:On),{next(){const{value:f,done:d}=u.next();return d?{value:f,done:d}:{value:a?[c(f[0]),c(f[1])]:c(f),done:d}},[Symbol.iterator](){return this}}}}function ds(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function jh(e,t){const n={get(s){const o=this.__v_raw,i=he(o),a=he(s);e||(ln(s,a)&&Ge(i,"get",s),Ge(i,"get",a));const{has:l}=fs(i),u=t?ai:e?Is:Ue;if(l.call(i,s))return u(o.get(s));if(l.call(i,a))return u(o.get(a));o!==i&&o.get(s)},get size(){const s=this.__v_raw;return!e&&Ge(he(s),"iterate",On),Reflect.get(s,"size",s)},has(s){const o=this.__v_raw,i=he(o),a=he(s);return e||(ln(s,a)&&Ge(i,"has",s),Ge(i,"has",a)),s===a?o.has(s):o.has(s)||o.has(a)},forEach(s,o){const i=this,a=i.__v_raw,l=he(a),u=t?ai:e?Is:Ue;return!e&&Ge(l,"iterate",On),a.forEach((c,f)=>s.call(o,u(c),u(f),i))}};return Ve(n,e?{add:ds("add"),set:ds("set"),delete:ds("delete"),clear:ds("clear")}:{add(s){!t&&!gt(s)&&!cn(s)&&(s=he(s));const o=he(this);return fs(o).has.call(o,s)||(o.add(s),Ut(o,"add",s,s)),this},set(s,o){!t&&!gt(o)&&!cn(o)&&(o=he(o));const i=he(this),{has:a,get:l}=fs(i);let u=a.call(i,s);u||(s=he(s),u=a.call(i,s));const c=l.call(i,s);return i.set(s,o),u?ln(o,c)&&Ut(i,"set",s,o):Ut(i,"add",s,o),this},delete(s){const o=he(this),{has:i,get:a}=fs(o);let l=i.call(o,s);l||(s=he(s),l=i.call(o,s)),a&&a.call(o,s);const u=o.delete(s);return l&&Ut(o,"delete",s,void 0),u},clear(){const s=he(this),o=s.size!==0,i=s.clear();return o&&Ut(s,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(s=>{n[s]=Vh(s,e,t)}),n}function co(e,t){const n=jh(e,t);return(r,s,o)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?r:Reflect.get(_e(n,s)&&s in r?n:r,s,o)}const Hh={get:co(!1,!1)},Uh={get:co(!1,!0)},qh={get:co(!0,!1)},zh={get:co(!0,!0)},cu=new WeakMap,uu=new WeakMap,fu=new WeakMap,du=new WeakMap;function Wh(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Gh(e){return e.__v_skip||!Object.isExtensible(e)?0:Wh(vh(e))}function Be(e){return cn(e)?e:uo(e,!1,Ih,Hh,cu)}function hu(e){return uo(e,!1,Nh,Uh,uu)}function Zr(e){return uo(e,!0,Dh,qh,fu)}function G2(e){return uo(e,!0,Bh,zh,du)}function uo(e,t,n,r,s){if(!xe(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=Gh(e);if(o===0)return e;const i=s.get(e);if(i)return i;const a=new Proxy(e,o===2?r:n);return s.set(e,a),a}function zt(e){return cn(e)?zt(e.__v_raw):!!(e&&e.__v_isReactive)}function cn(e){return!!(e&&e.__v_isReadonly)}function gt(e){return!!(e&&e.__v_isShallow)}function Xi(e){return e?!!e.__v_raw:!1}function he(e){const t=e&&e.__v_raw;return t?he(t):e}function Qi(e){return!_e(e,"__v_skip")&&Object.isExtensible(e)&&si(e,"__v_skip",!0),e}const Ue=e=>xe(e)?Be(e):e,Is=e=>xe(e)?Zr(e):e;function Ae(e){return e?e.__v_isRef===!0:!1}function fe(e){return mu(e,!1)}function Oe(e){return mu(e,!0)}function mu(e,t){return Ae(e)?e:new Kh(e,t)}class Kh{constructor(t,n){this.dep=new ao,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:he(t),this._value=n?t:Ue(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,r=this.__v_isShallow||gt(t)||cn(t);t=r?t:he(t),ln(t,n)&&(this._rawValue=t,this._value=r?t:Ue(t),this.dep.trigger())}}function Me(e){return Ae(e)?e.value:e}function un(e){return ae(e)?e():Me(e)}const Yh={get:(e,t,n)=>t==="__v_raw"?e:Me(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const s=e[t];return Ae(s)&&!Ae(n)?(s.value=n,!0):Reflect.set(e,t,n,r)}};function pu(e){return zt(e)?e:new Proxy(e,Yh)}class Jh{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new ao,{get:r,set:s}=t(n.track.bind(n),n.trigger.bind(n));this._get=r,this._set=s}get value(){return this._value=this._get()}set value(t){this._set(t)}}function K2(e){return new Jh(e)}function ea(e){const t=Q(e)?new Array(e.length):{};for(const n in e)t[n]=gu(e,n);return t}class Zh{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return Oh(he(this._object),this._key)}}class Xh{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function ie(e,t,n){return Ae(e)?e:ae(e)?new Xh(e):xe(e)&&arguments.length>1?gu(e,t,n):fe(e)}function gu(e,t,n){const r=e[t];return Ae(r)?r:new Zh(e,t,n)}class Qh{constructor(t,n,r){this.fn=t,this.setter=n,this._value=void 0,this.dep=new ao(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=$r-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=r}notify(){if(this.flags|=16,!(this.flags&8)&&ke!==this)return Qc(this,!0),!0}get value(){const t=this.dep.track();return nu(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function em(e,t,n=!1){let r,s;return ae(e)?r=e:(r=e.get,s=e.set),new Qh(r,s,n)}const hs={},Ds=new WeakMap;let Cn;function tm(e,t=!1,n=Cn){if(n){let r=Ds.get(n);r||Ds.set(n,r=[]),r.push(e)}}function nm(e,t,n=Se){const{immediate:r,deep:s,once:o,scheduler:i,augmentJob:a,call:l}=n,u=T=>s?T:gt(T)||s===!1||s===0?qt(T,1):qt(T);let c,f,d,h,m=!1,w=!1;if(Ae(e)?(f=()=>e.value,m=gt(e)):zt(e)?(f=()=>u(e),m=!0):Q(e)?(w=!0,m=e.some(T=>zt(T)||gt(T)),f=()=>e.map(T=>{if(Ae(T))return T.value;if(zt(T))return u(T);if(ae(T))return l?l(T,2):T()})):ae(e)?t?f=l?()=>l(e,2):e:f=()=>{if(d){Gt();try{d()}finally{Kt()}}const T=Cn;Cn=c;try{return l?l(e,3,[h]):e(h)}finally{Cn=T}}:f=It,t&&s){const T=f,x=s===!0?1/0:s;f=()=>qt(T(),x)}const _=Ki(),b=()=>{c.stop(),_&&_.active&&zi(_.effects,c)};if(o&&t){const T=t;t=(...x)=>{T(...x),b()}}let y=w?new Array(e.length).fill(hs):hs;const p=T=>{if(!(!(c.flags&1)||!c.dirty&&!T))if(t){const x=c.run();if(s||m||(w?x.some((P,I)=>ln(P,y[I])):ln(x,y))){d&&d();const P=Cn;Cn=c;try{const I=[x,y===hs?void 0:w&&y[0]===hs?[]:y,h];y=x,l?l(t,3,I):t(...I)}finally{Cn=P}}}else c.run()};return a&&a(p),c=new Zc(f),c.scheduler=i?()=>i(p,!1):p,h=T=>tm(T,!1,c),d=c.onStop=()=>{const T=Ds.get(c);if(T){if(l)l(T,4);else for(const x of T)x();Ds.delete(c)}},t?r?p(!0):y=c.run():i?i(p.bind(null,!0),!0):c.run(),b.pause=c.pause.bind(c),b.resume=c.resume.bind(c),b.stop=b,b}function qt(e,t=1/0,n){if(t<=0||!xe(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,Ae(e))qt(e.value,t,n);else if(Q(e))for(let r=0;r{qt(r,t,n)});else if(Wc(e)){for(const r in e)qt(e[r],t,n);for(const r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&qt(e[r],t,n)}return e}/** -* @vue/runtime-core v3.5.18 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/function Xr(e,t,n,r){try{return r?e(...r):e()}catch(s){fo(s,t,n)}}function St(e,t,n,r){if(ae(e)){const s=Xr(e,t,n,r);return s&&qc(s)&&s.catch(o=>{fo(o,t,n)}),s}if(Q(e)){const s=[];for(let o=0;o>>1,s=rt[r],o=Lr(s);o=Lr(n)?rt.push(e):rt.splice(sm(t),0,e),e.flags|=1,vu()}}function vu(){Ns||(Ns=yu.then(wu))}function om(e){Q(e)?Jn.push(...e):nn&&e.id===-1?nn.splice(zn+1,0,e):e.flags&1||(Jn.push(e),e.flags|=1),vu()}function La(e,t,n=Ft+1){for(;nLr(n)-Lr(r));if(Jn.length=0,nn){nn.push(...t);return}for(nn=t,zn=0;zne.id==null?e.flags&2?-1:1/0:e.id;function wu(e){try{for(Ft=0;Ft{r._d&&Ga(-1);const o=Bs(t);let i;try{i=e(...s)}finally{Bs(o),r._d&&Ga(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function Vs(e,t){if(qe===null)return e;const n=yo(qe),r=e.dirs||(e.dirs=[]);for(let s=0;se.__isTeleport,xr=e=>e&&(e.disabled||e.disabled===""),Ma=e=>e&&(e.defer||e.defer===""),Ia=e=>typeof SVGElement<"u"&&e instanceof SVGElement,Da=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,li=(e,t)=>{const n=e&&e.to;return Fe(n)?t?t(n):null:n},xu={name:"Teleport",__isTeleport:!0,process(e,t,n,r,s,o,i,a,l,u){const{mc:c,pc:f,pbc:d,o:{insert:h,querySelector:m,createText:w,createComment:_}}=u,b=xr(t.props);let{shapeFlag:y,children:p,dynamicChildren:T}=t;if(e==null){const x=t.el=w(""),P=t.anchor=w("");h(x,n,r),h(P,n,r);const I=(A,B)=>{y&16&&(s&&s.isCE&&(s.ce._teleportTarget=A),c(p,A,B,s,o,i,a,l))},S=()=>{const A=t.target=li(t.props,m),B=Cu(A,t,w,h);A&&(i!=="svg"&&Ia(A)?i="svg":i!=="mathml"&&Da(A)&&(i="mathml"),b||(I(A,B),Es(t,!1)))};b&&(I(n,P),Es(t,!0)),Ma(t.props)?(t.el.__isMounted=!1,nt(()=>{S(),delete t.el.__isMounted},o)):S()}else{if(Ma(t.props)&&e.el.__isMounted===!1){nt(()=>{xu.process(e,t,n,r,s,o,i,a,l,u)},o);return}t.el=e.el,t.targetStart=e.targetStart;const x=t.anchor=e.anchor,P=t.target=e.target,I=t.targetAnchor=e.targetAnchor,S=xr(e.props),A=S?n:P,B=S?x:I;if(i==="svg"||Ia(P)?i="svg":(i==="mathml"||Da(P))&&(i="mathml"),T?(d(e.dynamicChildren,T,A,s,o,i,a),aa(e,t,!0)):l||f(e,t,A,B,s,o,i,a,!1),b)S?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):ms(t,n,x,u,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const V=t.target=li(t.props,m);V&&ms(t,V,null,u,0)}else S&&ms(t,P,I,u,1);Es(t,b)}},remove(e,t,n,{um:r,o:{remove:s}},o){const{shapeFlag:i,children:a,anchor:l,targetStart:u,targetAnchor:c,target:f,props:d}=e;if(f&&(s(u),s(c)),o&&s(l),i&16){const h=o||!xr(d);for(let m=0;m{e.isMounted=!0}),ar(()=>{e.isUnmounting=!0}),e}const mt=[Function,Array],ku={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:mt,onEnter:mt,onAfterEnter:mt,onEnterCancelled:mt,onBeforeLeave:mt,onLeave:mt,onAfterLeave:mt,onLeaveCancelled:mt,onBeforeAppear:mt,onAppear:mt,onAfterAppear:mt,onAppearCancelled:mt},Au=e=>{const t=e.subTree;return t.component?Au(t.component):t},lm={name:"BaseTransition",props:ku,setup(e,{slots:t}){const n=mn(),r=Tu();return()=>{const s=t.default&&na(t.default(),!0);if(!s||!s.length)return;const o=Ru(s),i=he(e),{mode:a}=i;if(r.isLeaving)return Io(o);const l=Na(o);if(!l)return Io(o);let u=Mr(l,i,r,n,f=>u=f);l.type!==Ye&&In(l,u);let c=n.subTree&&Na(n.subTree);if(c&&c.type!==Ye&&!kn(l,c)&&Au(n).type!==Ye){let f=Mr(c,i,r,n);if(In(c,f),a==="out-in"&&l.type!==Ye)return r.isLeaving=!0,f.afterLeave=()=>{r.isLeaving=!1,n.job.flags&8||n.update(),delete f.afterLeave,c=void 0},Io(o);a==="in-out"&&l.type!==Ye?f.delayLeave=(d,h,m)=>{const w=Pu(r,c);w[String(c.key)]=c,d[rn]=()=>{h(),d[rn]=void 0,delete u.delayedLeave,c=void 0},u.delayedLeave=()=>{m(),delete u.delayedLeave,c=void 0}}:c=void 0}else c&&(c=void 0);return o}}};function Ru(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==Ye){t=n;break}}return t}const cm=lm;function Pu(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function Mr(e,t,n,r,s){const{appear:o,mode:i,persisted:a=!1,onBeforeEnter:l,onEnter:u,onAfterEnter:c,onEnterCancelled:f,onBeforeLeave:d,onLeave:h,onAfterLeave:m,onLeaveCancelled:w,onBeforeAppear:_,onAppear:b,onAfterAppear:y,onAppearCancelled:p}=t,T=String(e.key),x=Pu(n,e),P=(A,B)=>{A&&St(A,r,9,B)},I=(A,B)=>{const V=B[1];P(A,B),Q(A)?A.every(L=>L.length<=1)&&V():A.length<=1&&V()},S={mode:i,persisted:a,beforeEnter(A){let B=l;if(!n.isMounted)if(o)B=_||l;else return;A[rn]&&A[rn](!0);const V=x[T];V&&kn(e,V)&&V.el[rn]&&V.el[rn](),P(B,[A])},enter(A){let B=u,V=c,L=f;if(!n.isMounted)if(o)B=b||u,V=y||c,L=p||f;else return;let G=!1;const re=A[ps]=Z=>{G||(G=!0,Z?P(L,[A]):P(V,[A]),S.delayedLeave&&S.delayedLeave(),A[ps]=void 0)};B?I(B,[A,re]):re()},leave(A,B){const V=String(e.key);if(A[ps]&&A[ps](!0),n.isUnmounting)return B();P(d,[A]);let L=!1;const G=A[rn]=re=>{L||(L=!0,B(),re?P(w,[A]):P(m,[A]),A[rn]=void 0,x[V]===e&&delete x[V])};x[V]=e,h?I(h,[A,G]):G()},clone(A){const B=Mr(A,t,n,r,s);return s&&s(B),B}};return S}function Io(e){if(ho(e))return e=fn(e),e.children=null,e}function Na(e){if(!ho(e))return Su(e.type)&&e.children?Ru(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&ae(n.default))return n.default()}}function In(e,t){e.shapeFlag&6&&e.component?(e.transition=t,In(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function na(e,t=!1,n){let r=[],s=0;for(let o=0;o1)for(let o=0;on.value,set:o=>n.value=o})}return n}function Cr(e,t,n,r,s=!1){if(Q(e)){e.forEach((m,w)=>Cr(m,t&&(Q(t)?t[w]:t),n,r,s));return}if(Zn(r)&&!s){r.shapeFlag&512&&r.type.__asyncResolved&&r.component.subTree.component&&Cr(e,t,n,r.component.subTree);return}const o=r.shapeFlag&4?yo(r.component):r.el,i=s?null:o,{i:a,r:l}=e,u=t&&t.r,c=a.refs===Se?a.refs={}:a.refs,f=a.setupState,d=he(f),h=f===Se?()=>!1:m=>_e(d,m);if(u!=null&&u!==l&&(Fe(u)?(c[u]=null,h(u)&&(f[u]=null)):Ae(u)&&(u.value=null)),ae(l))Xr(l,a,12,[i,c]);else{const m=Fe(l),w=Ae(l);if(m||w){const _=()=>{if(e.f){const b=m?h(l)?f[l]:c[l]:l.value;s?Q(b)&&zi(b,o):Q(b)?b.includes(o)||b.push(o):m?(c[l]=[o],h(l)&&(f[l]=c[l])):(l.value=[o],e.k&&(c[e.k]=l.value))}else m?(c[l]=i,h(l)&&(f[l]=i)):w&&(l.value=i,e.k&&(c[e.k]=i))};i?(_.id=-1,nt(_,n)):_()}}}io().requestIdleCallback;io().cancelIdleCallback;const Zn=e=>!!e.type.__asyncLoader,ho=e=>e.type.__isKeepAlive;function fm(e,t){$u(e,"a",t)}function dm(e,t){$u(e,"da",t)}function $u(e,t,n=Je){const r=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(mo(t,r,n),n){let s=n.parent;for(;s&&s.parent;)ho(s.parent.vnode)&&hm(r,t,n,s),s=s.parent}}function hm(e,t,n,r){const s=mo(t,e,r,!0);Fu(()=>{zi(r[t],s)},n)}function mo(e,t,n=Je,r=!1){if(n){const s=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{Gt();const a=es(n),l=St(t,n,e,i);return a(),Kt(),l});return r?s.unshift(o):s.push(o),o}}const Yt=e=>(t,n=Je)=>{(!Nr||e==="sp")&&mo(e,(...r)=>t(...r),n)},mm=Yt("bm"),hn=Yt("m"),pm=Yt("bu"),sa=Yt("u"),ar=Yt("bum"),Fu=Yt("um"),gm=Yt("sp"),ym=Yt("rtg"),vm=Yt("rtc");function bm(e,t=Je){mo("ec",e,t)}const Lu="components";function Mu(e,t){return Du(Lu,e,!0,t)||e}const Iu=Symbol.for("v-ndc");function wm(e){return Fe(e)?Du(Lu,e,!1)||e:e||Iu}function Du(e,t,n=!0,r=!1){const s=qe||Je;if(s){const o=s.type;{const a=op(o,!1);if(a&&(a===t||a===yt(t)||a===Yr(yt(t))))return o}const i=Ba(s[e]||o[e],t)||Ba(s.appContext[e],t);return!i&&r?o:i}}function Ba(e,t){return e&&(e[t]||e[yt(t)]||e[Yr(yt(t))])}function ci(e,t,n,r){let s;const o=n,i=Q(e);if(i||Fe(e)){const a=i&&zt(e);let l=!1,u=!1;a&&(l=!gt(e),u=cn(e),e=lo(e)),s=new Array(e.length);for(let c=0,f=e.length;ct(a,l,void 0,o));else{const a=Object.keys(e);s=new Array(a.length);for(let l=0,u=a.length;l{const o=r.fn(...s);return o&&(o.key=r.key),o}:r.fn)}return e}function Nu(e,t,n={},r,s){if(qe.ce||qe.parent&&Zn(qe.parent)&&qe.parent.ce)return t!=="default"&&(n.name=t),X(),Dn(De,null,[J("slot",n,r&&r())],64);let o=e[t];o&&o._c&&(o._d=!1),X();const i=o&&Bu(o(n)),a=n.key||i&&i.key,l=Dn(De,{key:(a&&!Et(a)?a:`_${t}`)+(!i&&r?"_fb":"")},i||(r?r():[]),i&&e._===1?64:-2);return!s&&l.scopeId&&(l.slotScopeIds=[l.scopeId+"-s"]),o&&o._c&&(o._d=!0),l}function Bu(e){return e.some(t=>Dr(t)?!(t.type===Ye||t.type===De&&!Bu(t.children)):!0)?e:null}function Z2(e,t){const n={};for(const r in e)n[ws(r)]=e[r];return n}const ui=e=>e?sf(e)?yo(e):ui(e.parent):null,Tr=Ve(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>ui(e.parent),$root:e=>ui(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Hu(e),$forceUpdate:e=>e.f||(e.f=()=>{ta(e.update)}),$nextTick:e=>e.n||(e.n=vt.bind(e.proxy)),$watch:e=>Hm.bind(e)}),Do=(e,t)=>e!==Se&&!e.__isScriptSetup&&_e(e,t),_m={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:r,data:s,props:o,accessCache:i,type:a,appContext:l}=e;let u;if(t[0]!=="$"){const h=i[t];if(h!==void 0)switch(h){case 1:return r[t];case 2:return s[t];case 4:return n[t];case 3:return o[t]}else{if(Do(r,t))return i[t]=1,r[t];if(s!==Se&&_e(s,t))return i[t]=2,s[t];if((u=e.propsOptions[0])&&_e(u,t))return i[t]=3,o[t];if(n!==Se&&_e(n,t))return i[t]=4,n[t];di&&(i[t]=0)}}const c=Tr[t];let f,d;if(c)return t==="$attrs"&&Ge(e.attrs,"get",""),c(e);if((f=a.__cssModules)&&(f=f[t]))return f;if(n!==Se&&_e(n,t))return i[t]=4,n[t];if(d=l.config.globalProperties,_e(d,t))return d[t]},set({_:e},t,n){const{data:r,setupState:s,ctx:o}=e;return Do(s,t)?(s[t]=n,!0):r!==Se&&_e(r,t)?(r[t]=n,!0):_e(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:s,propsOptions:o}},i){let a;return!!n[i]||e!==Se&&_e(e,i)||Do(t,i)||(a=o[0])&&_e(a,i)||_e(r,i)||_e(Tr,i)||_e(s.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:_e(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function X2(){return Vu().slots}function Q2(){return Vu().attrs}function Vu(e){const t=mn();return t.setupContext||(t.setupContext=af(t))}function fi(e){return Q(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}function e_(e,t){const n=fi(e);for(const r in t){if(r.startsWith("__skip"))continue;let s=n[r];s?Q(s)||ae(s)?s=n[r]={type:s,default:t[r]}:s.default=t[r]:s===null&&(s=n[r]={default:t[r]}),s&&t[`__skip_${r}`]&&(s.skipFactory=!0)}return n}let di=!0;function Em(e){const t=Hu(e),n=e.proxy,r=e.ctx;di=!1,t.beforeCreate&&Va(t.beforeCreate,e,"bc");const{data:s,computed:o,methods:i,watch:a,provide:l,inject:u,created:c,beforeMount:f,mounted:d,beforeUpdate:h,updated:m,activated:w,deactivated:_,beforeDestroy:b,beforeUnmount:y,destroyed:p,unmounted:T,render:x,renderTracked:P,renderTriggered:I,errorCaptured:S,serverPrefetch:A,expose:B,inheritAttrs:V,components:L,directives:G,filters:re}=t;if(u&&Sm(u,r,null),i)for(const ee in i){const ce=i[ee];ae(ce)&&(r[ee]=ce.bind(n))}if(s){const ee=s.call(n,n);xe(ee)&&(e.data=Be(ee))}if(di=!0,o)for(const ee in o){const ce=o[ee],Ne=ae(ce)?ce.bind(n,n):ae(ce.get)?ce.get.bind(n,n):It,Ce=!ae(ce)&&ae(ce.set)?ce.set.bind(n):It,Le=M({get:Ne,set:Ce});Object.defineProperty(r,ee,{enumerable:!0,configurable:!0,get:()=>Le.value,set:Re=>Le.value=Re})}if(a)for(const ee in a)ju(a[ee],r,n,ee);if(l){const ee=ae(l)?l.call(n):l;Reflect.ownKeys(ee).forEach(ce=>{_t(ce,ee[ce])})}c&&Va(c,e,"c");function oe(ee,ce){Q(ce)?ce.forEach(Ne=>ee(Ne.bind(n))):ce&&ee(ce.bind(n))}if(oe(mm,f),oe(hn,d),oe(pm,h),oe(sa,m),oe(fm,w),oe(dm,_),oe(bm,S),oe(vm,P),oe(ym,I),oe(ar,y),oe(Fu,T),oe(gm,A),Q(B))if(B.length){const ee=e.exposed||(e.exposed={});B.forEach(ce=>{Object.defineProperty(ee,ce,{get:()=>n[ce],set:Ne=>n[ce]=Ne,enumerable:!0})})}else e.exposed||(e.exposed={});x&&e.render===It&&(e.render=x),V!=null&&(e.inheritAttrs=V),L&&(e.components=L),G&&(e.directives=G),A&&Ou(e)}function Sm(e,t,n=It){Q(e)&&(e=hi(e));for(const r in e){const s=e[r];let o;xe(s)?"default"in s?o=Pe(s.from||r,s.default,!0):o=Pe(s.from||r):o=Pe(s),Ae(o)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[r]=o}}function Va(e,t,n){St(Q(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function ju(e,t,n,r){let s=r.includes(".")?Qu(n,r):()=>n[r];if(Fe(e)){const o=t[e];ae(o)&&ye(s,o)}else if(ae(e))ye(s,e.bind(n));else if(xe(e))if(Q(e))e.forEach(o=>ju(o,t,n,r));else{const o=ae(e.handler)?e.handler.bind(n):t[e.handler];ae(o)&&ye(s,o,e)}}function Hu(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:s,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,a=o.get(t);let l;return a?l=a:!s.length&&!n&&!r?l=t:(l={},s.length&&s.forEach(u=>js(l,u,i,!0)),js(l,t,i)),xe(t)&&o.set(t,l),l}function js(e,t,n,r=!1){const{mixins:s,extends:o}=t;o&&js(e,o,n,!0),s&&s.forEach(i=>js(e,i,n,!0));for(const i in t)if(!(r&&i==="expose")){const a=xm[i]||n&&n[i];e[i]=a?a(e[i],t[i]):t[i]}return e}const xm={data:ja,props:Ha,emits:Ha,methods:wr,computed:wr,beforeCreate:tt,created:tt,beforeMount:tt,mounted:tt,beforeUpdate:tt,updated:tt,beforeDestroy:tt,beforeUnmount:tt,destroyed:tt,unmounted:tt,activated:tt,deactivated:tt,errorCaptured:tt,serverPrefetch:tt,components:wr,directives:wr,watch:Tm,provide:ja,inject:Cm};function ja(e,t){return t?e?function(){return Ve(ae(e)?e.call(this,this):e,ae(t)?t.call(this,this):t)}:t:e}function Cm(e,t){return wr(hi(e),hi(t))}function hi(e){if(Q(e)){const t={};for(let n=0;n1)return n&&ae(t)?t.call(r&&r.proxy):t}}function Rm(){return!!(mn()||$n)}const qu={},zu=()=>Object.create(qu),Wu=e=>Object.getPrototypeOf(e)===qu;function Pm(e,t,n,r=!1){const s={},o=zu();e.propsDefaults=Object.create(null),Gu(e,t,s,o);for(const i in e.propsOptions[0])i in s||(s[i]=void 0);n?e.props=r?s:hu(s):e.type.props?e.props=s:e.props=o,e.attrs=o}function Om(e,t,n,r){const{props:s,attrs:o,vnode:{patchFlag:i}}=e,a=he(s),[l]=e.propsOptions;let u=!1;if((r||i>0)&&!(i&16)){if(i&8){const c=e.vnode.dynamicProps;for(let f=0;f{l=!0;const[d,h]=Ku(f,t,!0);Ve(i,d),h&&a.push(...h)};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}if(!o&&!l)return xe(e)&&r.set(e,Kn),Kn;if(Q(o))for(let c=0;ce==="_"||e==="__"||e==="_ctx"||e==="$stable",ia=e=>Q(e)?e.map(Lt):[Lt(e)],Fm=(e,t,n)=>{if(t._n)return t;const r=He((...s)=>ia(t(...s)),n);return r._c=!1,r},Yu=(e,t,n)=>{const r=e._ctx;for(const s in e){if(oa(s))continue;const o=e[s];if(ae(o))t[s]=Fm(s,o,r);else if(o!=null){const i=ia(o);t[s]=()=>i}}},Ju=(e,t)=>{const n=ia(t);e.slots.default=()=>n},Zu=(e,t,n)=>{for(const r in t)(n||!oa(r))&&(e[r]=t[r])},Lm=(e,t,n)=>{const r=e.slots=zu();if(e.vnode.shapeFlag&32){const s=t.__;s&&si(r,"__",s,!0);const o=t._;o?(Zu(r,t,n),n&&si(r,"_",o,!0)):Yu(t,r)}else t&&Ju(e,t)},Mm=(e,t,n)=>{const{vnode:r,slots:s}=e;let o=!0,i=Se;if(r.shapeFlag&32){const a=t._;a?n&&a===1?o=!1:Zu(s,t,n):(o=!t.$stable,Yu(t,s)),i=t}else t&&(Ju(e,t),i={default:1});if(o)for(const a in s)!oa(a)&&i[a]==null&&delete s[a]},nt=Ym;function Im(e){return Dm(e)}function Dm(e,t){const n=io();n.__VUE__=!0;const{insert:r,remove:s,patchProp:o,createElement:i,createText:a,createComment:l,setText:u,setElementText:c,parentNode:f,nextSibling:d,setScopeId:h=It,insertStaticContent:m}=e,w=(g,v,E,O=null,F=null,$=null,z=void 0,q=null,H=!!v.dynamicChildren)=>{if(g===v)return;g&&!kn(g,v)&&(O=C(g),Re(g,F,$,!0),g=null),v.patchFlag===-2&&(H=!1,v.dynamicChildren=null);const{type:D,ref:ne,shapeFlag:W}=v;switch(D){case Qr:_(g,v,E,O);break;case Ye:b(g,v,E,O);break;case Ss:g==null&&y(v,E,O,z);break;case De:L(g,v,E,O,F,$,z,q,H);break;default:W&1?x(g,v,E,O,F,$,z,q,H):W&6?G(g,v,E,O,F,$,z,q,H):(W&64||W&128)&&D.process(g,v,E,O,F,$,z,q,H,K)}ne!=null&&F?Cr(ne,g&&g.ref,$,v||g,!v):ne==null&&g&&g.ref!=null&&Cr(g.ref,null,$,g,!0)},_=(g,v,E,O)=>{if(g==null)r(v.el=a(v.children),E,O);else{const F=v.el=g.el;v.children!==g.children&&u(F,v.children)}},b=(g,v,E,O)=>{g==null?r(v.el=l(v.children||""),E,O):v.el=g.el},y=(g,v,E,O)=>{[g.el,g.anchor]=m(g.children,v,E,O,g.el,g.anchor)},p=({el:g,anchor:v},E,O)=>{let F;for(;g&&g!==v;)F=d(g),r(g,E,O),g=F;r(v,E,O)},T=({el:g,anchor:v})=>{let E;for(;g&&g!==v;)E=d(g),s(g),g=E;s(v)},x=(g,v,E,O,F,$,z,q,H)=>{v.type==="svg"?z="svg":v.type==="math"&&(z="mathml"),g==null?P(v,E,O,F,$,z,q,H):A(g,v,F,$,z,q,H)},P=(g,v,E,O,F,$,z,q)=>{let H,D;const{props:ne,shapeFlag:W,transition:te,dirs:le}=g;if(H=g.el=i(g.type,$,ne&&ne.is,ne),W&8?c(H,g.children):W&16&&S(g.children,H,null,O,F,No(g,$),z,q),le&&vn(g,null,O,"created"),I(H,g,g.scopeId,z,O),ne){for(const Te in ne)Te!=="value"&&!_r(Te)&&o(H,Te,null,ne[Te],$,O);"value"in ne&&o(H,"value",null,ne.value,$),(D=ne.onVnodeBeforeMount)&&Pt(D,O,g)}le&&vn(g,null,O,"beforeMount");const ge=Nm(F,te);ge&&te.beforeEnter(H),r(H,v,E),((D=ne&&ne.onVnodeMounted)||ge||le)&&nt(()=>{D&&Pt(D,O,g),ge&&te.enter(H),le&&vn(g,null,O,"mounted")},F)},I=(g,v,E,O,F)=>{if(E&&h(g,E),O)for(let $=0;${for(let D=H;D{const q=v.el=g.el;let{patchFlag:H,dynamicChildren:D,dirs:ne}=v;H|=g.patchFlag&16;const W=g.props||Se,te=v.props||Se;let le;if(E&&bn(E,!1),(le=te.onVnodeBeforeUpdate)&&Pt(le,E,v,g),ne&&vn(v,g,E,"beforeUpdate"),E&&bn(E,!0),(W.innerHTML&&te.innerHTML==null||W.textContent&&te.textContent==null)&&c(q,""),D?B(g.dynamicChildren,D,q,E,O,No(v,F),$):z||ce(g,v,q,null,E,O,No(v,F),$,!1),H>0){if(H&16)V(q,W,te,E,F);else if(H&2&&W.class!==te.class&&o(q,"class",null,te.class,F),H&4&&o(q,"style",W.style,te.style,F),H&8){const ge=v.dynamicProps;for(let Te=0;Te{le&&Pt(le,E,v,g),ne&&vn(v,g,E,"updated")},O)},B=(g,v,E,O,F,$,z)=>{for(let q=0;q{if(v!==E){if(v!==Se)for(const $ in v)!_r($)&&!($ in E)&&o(g,$,v[$],null,F,O);for(const $ in E){if(_r($))continue;const z=E[$],q=v[$];z!==q&&$!=="value"&&o(g,$,q,z,F,O)}"value"in E&&o(g,"value",v.value,E.value,F)}},L=(g,v,E,O,F,$,z,q,H)=>{const D=v.el=g?g.el:a(""),ne=v.anchor=g?g.anchor:a("");let{patchFlag:W,dynamicChildren:te,slotScopeIds:le}=v;le&&(q=q?q.concat(le):le),g==null?(r(D,E,O),r(ne,E,O),S(v.children||[],E,ne,F,$,z,q,H)):W>0&&W&64&&te&&g.dynamicChildren?(B(g.dynamicChildren,te,E,F,$,z,q),(v.key!=null||F&&v===F.subTree)&&aa(g,v,!0)):ce(g,v,E,ne,F,$,z,q,H)},G=(g,v,E,O,F,$,z,q,H)=>{v.slotScopeIds=q,g==null?v.shapeFlag&512?F.ctx.activate(v,E,O,z,H):re(v,E,O,F,$,z,H):Z(g,v,H)},re=(g,v,E,O,F,$,z)=>{const q=g.component=tp(g,O,F);if(ho(g)&&(q.ctx.renderer=K),np(q,!1,z),q.asyncDep){if(F&&F.registerDep(q,oe,z),!g.el){const H=q.subTree=J(Ye);b(null,H,v,E),g.placeholder=H.el}}else oe(q,g,v,E,F,$,z)},Z=(g,v,E)=>{const O=v.component=g.component;if(Gm(g,v,E))if(O.asyncDep&&!O.asyncResolved){ee(O,v,E);return}else O.next=v,O.update();else v.el=g.el,O.vnode=v},oe=(g,v,E,O,F,$,z)=>{const q=()=>{if(g.isMounted){let{next:W,bu:te,u:le,parent:ge,vnode:Te}=g;{const At=Xu(g);if(At){W&&(W.el=Te.el,ee(g,W,z)),At.asyncDep.then(()=>{g.isUnmounted||q()});return}}let Ee=W,st;bn(g,!1),W?(W.el=Te.el,ee(g,W,z)):W=Te,te&&_s(te),(st=W.props&&W.props.onVnodeBeforeUpdate)&&Pt(st,ge,W,Te),bn(g,!0);const ot=za(g),kt=g.subTree;g.subTree=ot,w(kt,ot,f(kt.el),C(kt),g,F,$),W.el=ot.el,Ee===null&&Km(g,ot.el),le&&nt(le,F),(st=W.props&&W.props.onVnodeUpdated)&&nt(()=>Pt(st,ge,W,Te),F)}else{let W;const{el:te,props:le}=v,{bm:ge,m:Te,parent:Ee,root:st,type:ot}=g,kt=Zn(v);bn(g,!1),ge&&_s(ge),!kt&&(W=le&&le.onVnodeBeforeMount)&&Pt(W,Ee,v),bn(g,!0);{st.ce&&st.ce._def.shadowRoot!==!1&&st.ce._injectChildStyle(ot);const At=g.subTree=za(g);w(null,At,E,O,g,F,$),v.el=At.el}if(Te&&nt(Te,F),!kt&&(W=le&&le.onVnodeMounted)){const At=v;nt(()=>Pt(W,Ee,At),F)}(v.shapeFlag&256||Ee&&Zn(Ee.vnode)&&Ee.vnode.shapeFlag&256)&&g.a&&nt(g.a,F),g.isMounted=!0,v=E=O=null}};g.scope.on();const H=g.effect=new Zc(q);g.scope.off();const D=g.update=H.run.bind(H),ne=g.job=H.runIfDirty.bind(H);ne.i=g,ne.id=g.uid,H.scheduler=()=>ta(ne),bn(g,!0),D()},ee=(g,v,E)=>{v.component=g;const O=g.vnode.props;g.vnode=v,g.next=null,Om(g,v.props,O,E),Mm(g,v.children,E),Gt(),La(g),Kt()},ce=(g,v,E,O,F,$,z,q,H=!1)=>{const D=g&&g.children,ne=g?g.shapeFlag:0,W=v.children,{patchFlag:te,shapeFlag:le}=v;if(te>0){if(te&128){Ce(D,W,E,O,F,$,z,q,H);return}else if(te&256){Ne(D,W,E,O,F,$,z,q,H);return}}le&8?(ne&16&&ze(D,F,$),W!==D&&c(E,W)):ne&16?le&16?Ce(D,W,E,O,F,$,z,q,H):ze(D,F,$,!0):(ne&8&&c(E,""),le&16&&S(W,E,O,F,$,z,q,H))},Ne=(g,v,E,O,F,$,z,q,H)=>{g=g||Kn,v=v||Kn;const D=g.length,ne=v.length,W=Math.min(D,ne);let te;for(te=0;tene?ze(g,F,$,!0,!1,W):S(v,E,O,F,$,z,q,H,W)},Ce=(g,v,E,O,F,$,z,q,H)=>{let D=0;const ne=v.length;let W=g.length-1,te=ne-1;for(;D<=W&&D<=te;){const le=g[D],ge=v[D]=H?sn(v[D]):Lt(v[D]);if(kn(le,ge))w(le,ge,E,null,F,$,z,q,H);else break;D++}for(;D<=W&&D<=te;){const le=g[W],ge=v[te]=H?sn(v[te]):Lt(v[te]);if(kn(le,ge))w(le,ge,E,null,F,$,z,q,H);else break;W--,te--}if(D>W){if(D<=te){const le=te+1,ge=lete)for(;D<=W;)Re(g[D],F,$,!0),D++;else{const le=D,ge=D,Te=new Map;for(D=ge;D<=te;D++){const ut=v[D]=H?sn(v[D]):Lt(v[D]);ut.key!=null&&Te.set(ut.key,D)}let Ee,st=0;const ot=te-ge+1;let kt=!1,At=0;const dr=new Array(ot);for(D=0;D=ot){Re(ut,F,$,!0);continue}let Rt;if(ut.key!=null)Rt=Te.get(ut.key);else for(Ee=ge;Ee<=te;Ee++)if(dr[Ee-ge]===0&&kn(ut,v[Ee])){Rt=Ee;break}Rt===void 0?Re(ut,F,$,!0):(dr[Rt-ge]=D+1,Rt>=At?At=Rt:kt=!0,w(ut,v[Rt],E,null,F,$,z,q,H),st++)}const ka=kt?Bm(dr):Kn;for(Ee=ka.length-1,D=ot-1;D>=0;D--){const ut=ge+D,Rt=v[ut],Aa=v[ut+1],Ra=ut+1{const{el:$,type:z,transition:q,children:H,shapeFlag:D}=g;if(D&6){Le(g.component.subTree,v,E,O);return}if(D&128){g.suspense.move(v,E,O);return}if(D&64){z.move(g,v,E,K);return}if(z===De){r($,v,E);for(let W=0;Wq.enter($),F);else{const{leave:W,delayLeave:te,afterLeave:le}=q,ge=()=>{g.ctx.isUnmounted?s($):r($,v,E)},Te=()=>{W($,()=>{ge(),le&&le()})};te?te($,ge,Te):Te()}else r($,v,E)},Re=(g,v,E,O=!1,F=!1)=>{const{type:$,props:z,ref:q,children:H,dynamicChildren:D,shapeFlag:ne,patchFlag:W,dirs:te,cacheIndex:le}=g;if(W===-2&&(F=!1),q!=null&&(Gt(),Cr(q,null,E,g,!0),Kt()),le!=null&&(v.renderCache[le]=void 0),ne&256){v.ctx.deactivate(g);return}const ge=ne&1&&te,Te=!Zn(g);let Ee;if(Te&&(Ee=z&&z.onVnodeBeforeUnmount)&&Pt(Ee,v,g),ne&6)Tt(g.component,E,O);else{if(ne&128){g.suspense.unmount(E,O);return}ge&&vn(g,null,v,"beforeUnmount"),ne&64?g.type.remove(g,v,E,K,O):D&&!D.hasOnce&&($!==De||W>0&&W&64)?ze(D,v,E,!1,!0):($===De&&W&384||!F&&ne&16)&&ze(H,v,E),O&&je(g)}(Te&&(Ee=z&&z.onVnodeUnmounted)||ge)&&nt(()=>{Ee&&Pt(Ee,v,g),ge&&vn(g,null,v,"unmounted")},E)},je=g=>{const{type:v,el:E,anchor:O,transition:F}=g;if(v===De){ct(E,O);return}if(v===Ss){T(g);return}const $=()=>{s(E),F&&!F.persisted&&F.afterLeave&&F.afterLeave()};if(g.shapeFlag&1&&F&&!F.persisted){const{leave:z,delayLeave:q}=F,H=()=>z(E,$);q?q(g.el,$,H):H()}else $()},ct=(g,v)=>{let E;for(;g!==v;)E=d(g),s(g),g=E;s(v)},Tt=(g,v,E)=>{const{bum:O,scope:F,job:$,subTree:z,um:q,m:H,a:D,parent:ne,slots:{__:W}}=g;qa(H),qa(D),O&&_s(O),ne&&Q(W)&&W.forEach(te=>{ne.renderCache[te]=void 0}),F.stop(),$&&($.flags|=8,Re(z,g,v,E)),q&&nt(q,v),nt(()=>{g.isUnmounted=!0},v),v&&v.pendingBranch&&!v.isUnmounted&&g.asyncDep&&!g.asyncResolved&&g.suspenseId===v.pendingId&&(v.deps--,v.deps===0&&v.resolve())},ze=(g,v,E,O=!1,F=!1,$=0)=>{for(let z=$;z{if(g.shapeFlag&6)return C(g.component.subTree);if(g.shapeFlag&128)return g.suspense.next();const v=d(g.anchor||g.el),E=v&&v[Eu];return E?d(E):v};let N=!1;const j=(g,v,E)=>{g==null?v._vnode&&Re(v._vnode,null,null,!0):w(v._vnode||null,g,v,null,null,null,E),v._vnode=g,N||(N=!0,La(),bu(),N=!1)},K={p:w,um:Re,m:Le,r:je,mt:re,mc:S,pc:ce,pbc:B,n:C,o:e};return{render:j,hydrate:void 0,createApp:Am(j)}}function No({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function bn({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Nm(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function aa(e,t,n=!1){const r=e.children,s=t.children;if(Q(r)&&Q(s))for(let o=0;o>1,e[n[a]]0&&(t[r]=n[o-1]),n[o]=r)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}function Xu(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Xu(t)}function qa(e){if(e)for(let t=0;tPe(Vm);function Jt(e,t){return po(e,null,t)}function t_(e,t){return po(e,null,{flush:"post"})}function ye(e,t,n){return po(e,t,n)}function po(e,t,n=Se){const{immediate:r,deep:s,flush:o,once:i}=n,a=Ve({},n),l=t&&r||!t&&o!=="post";let u;if(Nr){if(o==="sync"){const h=jm();u=h.__watcherHandles||(h.__watcherHandles=[])}else if(!l){const h=()=>{};return h.stop=It,h.resume=It,h.pause=It,h}}const c=Je;a.call=(h,m,w)=>St(h,c,m,w);let f=!1;o==="post"?a.scheduler=h=>{nt(h,c&&c.suspense)}:o!=="sync"&&(f=!0,a.scheduler=(h,m)=>{m?h():ta(h)}),a.augmentJob=h=>{t&&(h.flags|=4),f&&(h.flags|=2,c&&(h.id=c.uid,h.i=c))};const d=nm(e,t,a);return Nr&&(u?u.push(d):l&&d()),d}function Hm(e,t,n){const r=this.proxy,s=Fe(e)?e.includes(".")?Qu(r,e):()=>r[e]:e.bind(r,r);let o;ae(t)?o=t:(o=t.handler,n=t);const i=es(this),a=po(s,o.bind(r),n);return i(),a}function Qu(e,t){const n=t.split(".");return()=>{let r=e;for(let s=0;st==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${yt(t)}Modifiers`]||e[`${dn(t)}Modifiers`];function qm(e,t,...n){if(e.isUnmounted)return;const r=e.vnode.props||Se;let s=n;const o=t.startsWith("update:"),i=o&&Um(r,t.slice(7));i&&(i.trim&&(s=n.map(c=>Fe(c)?c.trim():c)),i.number&&(s=n.map(Ls)));let a,l=r[a=ws(t)]||r[a=ws(yt(t))];!l&&o&&(l=r[a=ws(dn(t))]),l&&St(l,e,6,s);const u=r[a+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[a])return;e.emitted[a]=!0,St(u,e,6,s)}}function ef(e,t,n=!1){const r=t.emitsCache,s=r.get(e);if(s!==void 0)return s;const o=e.emits;let i={},a=!1;if(!ae(e)){const l=u=>{const c=ef(u,t,!0);c&&(a=!0,Ve(i,c))};!n&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!o&&!a?(xe(e)&&r.set(e,null),null):(Q(o)?o.forEach(l=>i[l]=null):Ve(i,o),xe(e)&&r.set(e,i),i)}function go(e,t){return!e||!so(t)?!1:(t=t.slice(2).replace(/Once$/,""),_e(e,t[0].toLowerCase()+t.slice(1))||_e(e,dn(t))||_e(e,t))}function za(e){const{type:t,vnode:n,proxy:r,withProxy:s,propsOptions:[o],slots:i,attrs:a,emit:l,render:u,renderCache:c,props:f,data:d,setupState:h,ctx:m,inheritAttrs:w}=e,_=Bs(e);let b,y;try{if(n.shapeFlag&4){const T=s||r,x=T;b=Lt(u.call(x,T,c,f,h,d,m)),y=a}else{const T=t;b=Lt(T.length>1?T(f,{attrs:a,slots:i,emit:l}):T(f,null)),y=t.props?a:zm(a)}}catch(T){kr.length=0,fo(T,e,1),b=J(Ye)}let p=b;if(y&&w!==!1){const T=Object.keys(y),{shapeFlag:x}=p;T.length&&x&7&&(o&&T.some(qi)&&(y=Wm(y,o)),p=fn(p,y,!1,!0))}return n.dirs&&(p=fn(p,null,!1,!0),p.dirs=p.dirs?p.dirs.concat(n.dirs):n.dirs),n.transition&&In(p,n.transition),b=p,Bs(_),b}const zm=e=>{let t;for(const n in e)(n==="class"||n==="style"||so(n))&&((t||(t={}))[n]=e[n]);return t},Wm=(e,t)=>{const n={};for(const r in e)(!qi(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function Gm(e,t,n){const{props:r,children:s,component:o}=e,{props:i,children:a,patchFlag:l}=t,u=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&l>=0){if(l&1024)return!0;if(l&16)return r?Wa(r,i,u):!!i;if(l&8){const c=t.dynamicProps;for(let f=0;fe.__isSuspense;function Ym(e,t){t&&t.pendingBranch?Q(e)?t.effects.push(...e):t.effects.push(e):om(e)}const De=Symbol.for("v-fgt"),Qr=Symbol.for("v-txt"),Ye=Symbol.for("v-cmt"),Ss=Symbol.for("v-stc"),kr=[];let dt=null;function X(e=!1){kr.push(dt=e?null:[])}function Jm(){kr.pop(),dt=kr[kr.length-1]||null}let Ir=1;function Ga(e,t=!1){Ir+=e,e<0&&dt&&t&&(dt.hasOnce=!0)}function nf(e){return e.dynamicChildren=Ir>0?dt||Kn:null,Jm(),Ir>0&&dt&&dt.push(e),e}function se(e,t,n,r,s,o){return nf(R(e,t,n,r,s,o,!0))}function Dn(e,t,n,r,s){return nf(J(e,t,n,r,s,!0))}function Dr(e){return e?e.__v_isVNode===!0:!1}function kn(e,t){return e.type===t.type&&e.key===t.key}const rf=({key:e})=>e??null,xs=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?Fe(e)||Ae(e)||ae(e)?{i:qe,r:e,k:t,f:!!n}:e:null);function R(e,t=null,n=null,r=0,s=null,o=e===De?0:1,i=!1,a=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&rf(t),ref:t&&xs(t),scopeId:_u,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:r,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:qe};return a?(la(l,n),o&128&&e.normalize(l)):n&&(l.shapeFlag|=Fe(n)?8:16),Ir>0&&!i&&dt&&(l.patchFlag>0||o&6)&&l.patchFlag!==32&&dt.push(l),l}const J=Zm;function Zm(e,t=null,n=null,r=0,s=null,o=!1){if((!e||e===Iu)&&(e=Ye),Dr(e)){const a=fn(e,t,!0);return n&&la(a,n),Ir>0&&!o&&dt&&(a.shapeFlag&6?dt[dt.indexOf(e)]=a:dt.push(a)),a.patchFlag=-2,a}if(ip(e)&&(e=e.__vccOpts),t){t=Xm(t);let{class:a,style:l}=t;a&&!Fe(a)&&(t.class=ve(a)),xe(l)&&(Xi(l)&&!Q(l)&&(l=Ve({},l)),t.style=Ke(l))}const i=Fe(e)?1:tf(e)?128:Su(e)?64:xe(e)?4:ae(e)?2:0;return R(e,t,n,r,s,i,o,!0)}function Xm(e){return e?Xi(e)||Wu(e)?Ve({},e):e:null}function fn(e,t,n=!1,r=!1){const{props:s,ref:o,patchFlag:i,children:a,transition:l}=e,u=t?Xe(s||{},t):s,c={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&rf(u),ref:t&&t.ref?n&&o?Q(o)?o.concat(xs(t)):[o,xs(t)]:xs(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:a,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==De?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:l,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&fn(e.ssContent),ssFallback:e.ssFallback&&fn(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return l&&r&&In(c,l.clone(c)),c}function An(e=" ",t=0){return J(Qr,null,e,t)}function n_(e,t){const n=J(Ss,null,e);return n.staticCount=t,n}function de(e="",t=!1){return t?(X(),Dn(Ye,null,e)):J(Ye,null,e)}function Lt(e){return e==null||typeof e=="boolean"?J(Ye):Q(e)?J(De,null,e.slice()):Dr(e)?sn(e):J(Qr,null,String(e))}function sn(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:fn(e)}function la(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(Q(t))n=16;else if(typeof t=="object")if(r&65){const s=t.default;s&&(s._c&&(s._d=!1),la(e,s()),s._c&&(s._d=!0));return}else{n=32;const s=t._;!s&&!Wu(t)?t._ctx=qe:s===3&&qe&&(qe.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else ae(t)?(t={default:t,_ctx:qe},n=32):(t=String(t),r&64?(n=16,t=[An(t)]):n=8);e.children=t,e.shapeFlag|=n}function Xe(...e){const t={};for(let n=0;nJe||qe;let Hs,pi;{const e=io(),t=(n,r)=>{let s;return(s=e[n])||(s=e[n]=[]),s.push(r),o=>{s.length>1?s.forEach(i=>i(o)):s[0](o)}};Hs=t("__VUE_INSTANCE_SETTERS__",n=>Je=n),pi=t("__VUE_SSR_SETTERS__",n=>Nr=n)}const es=e=>{const t=Je;return Hs(e),e.scope.on(),()=>{e.scope.off(),Hs(t)}},Ka=()=>{Je&&Je.scope.off(),Hs(null)};function sf(e){return e.vnode.shapeFlag&4}let Nr=!1;function np(e,t=!1,n=!1){t&&pi(t);const{props:r,children:s}=e.vnode,o=sf(e);Pm(e,r,o,t),Lm(e,s,n||t);const i=o?rp(e,t):void 0;return t&&pi(!1),i}function rp(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,_m);const{setup:r}=n;if(r){Gt();const s=e.setupContext=r.length>1?af(e):null,o=es(e),i=Xr(r,e,0,[e.props,s]),a=qc(i);if(Kt(),o(),(a||e.sp)&&!Zn(e)&&Ou(e),a){if(i.then(Ka,Ka),t)return i.then(l=>{Ya(e,l)}).catch(l=>{fo(l,e,0)});e.asyncDep=i}else Ya(e,i)}else of(e)}function Ya(e,t,n){ae(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:xe(t)&&(e.setupState=pu(t)),of(e)}function of(e,t,n){const r=e.type;e.render||(e.render=r.render||It);{const s=es(e);Gt();try{Em(e)}finally{Kt(),s()}}}const sp={get(e,t){return Ge(e,"get",""),e[t]}};function af(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,sp),slots:e.slots,emit:e.emit,expose:t}}function yo(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(pu(Qi(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Tr)return Tr[n](e)},has(t,n){return n in t||n in Tr}})):e.proxy}function op(e,t=!0){return ae(e)?e.displayName||e.name:e.name||t&&e.__name}function ip(e){return ae(e)&&"__vccOpts"in e}const M=(e,t)=>em(e,t,Nr);function ts(e,t,n){const r=arguments.length;return r===2?xe(t)&&!Q(t)?Dr(t)?J(e,null,[t]):J(e,t):J(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&Dr(n)&&(n=[n]),J(e,t,n))}const ap="3.5.18";/** -* @vue/runtime-dom v3.5.18 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let gi;const Ja=typeof window<"u"&&window.trustedTypes;if(Ja)try{gi=Ja.createPolicy("vue",{createHTML:e=>e})}catch{}const lf=gi?e=>gi.createHTML(e):e=>e,lp="http://www.w3.org/2000/svg",cp="http://www.w3.org/1998/Math/MathML",Ht=typeof document<"u"?document:null,Za=Ht&&Ht.createElement("template"),up={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const s=t==="svg"?Ht.createElementNS(lp,e):t==="mathml"?Ht.createElementNS(cp,e):n?Ht.createElement(e,{is:n}):Ht.createElement(e);return e==="select"&&r&&r.multiple!=null&&s.setAttribute("multiple",r.multiple),s},createText:e=>Ht.createTextNode(e),createComment:e=>Ht.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ht.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,s,o){const i=n?n.previousSibling:t.lastChild;if(s&&(s===o||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===o||!(s=s.nextSibling)););else{Za.innerHTML=lf(r==="svg"?`${e}`:r==="mathml"?`${e}`:e);const a=Za.content;if(r==="svg"||r==="mathml"){const l=a.firstChild;for(;l.firstChild;)a.appendChild(l.firstChild);a.removeChild(l)}t.insertBefore(a,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Zt="transition",mr="animation",er=Symbol("_vtc"),cf={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},uf=Ve({},ku,cf),fp=e=>(e.displayName="Transition",e.props=uf,e),Xn=fp((e,{slots:t})=>ts(cm,ff(e),t)),wn=(e,t=[])=>{Q(e)?e.forEach(n=>n(...t)):e&&e(...t)},Xa=e=>e?Q(e)?e.some(t=>t.length>1):e.length>1:!1;function ff(e){const t={};for(const L in e)L in cf||(t[L]=e[L]);if(e.css===!1)return t;const{name:n="v",type:r,duration:s,enterFromClass:o=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:a=`${n}-enter-to`,appearFromClass:l=o,appearActiveClass:u=i,appearToClass:c=a,leaveFromClass:f=`${n}-leave-from`,leaveActiveClass:d=`${n}-leave-active`,leaveToClass:h=`${n}-leave-to`}=e,m=dp(s),w=m&&m[0],_=m&&m[1],{onBeforeEnter:b,onEnter:y,onEnterCancelled:p,onLeave:T,onLeaveCancelled:x,onBeforeAppear:P=b,onAppear:I=y,onAppearCancelled:S=p}=t,A=(L,G,re,Z)=>{L._enterCancelled=Z,en(L,G?c:a),en(L,G?u:i),re&&re()},B=(L,G)=>{L._isLeaving=!1,en(L,f),en(L,h),en(L,d),G&&G()},V=L=>(G,re)=>{const Z=L?I:y,oe=()=>A(G,L,re);wn(Z,[G,oe]),Qa(()=>{en(G,L?l:o),$t(G,L?c:a),Xa(Z)||el(G,r,w,oe)})};return Ve(t,{onBeforeEnter(L){wn(b,[L]),$t(L,o),$t(L,i)},onBeforeAppear(L){wn(P,[L]),$t(L,l),$t(L,u)},onEnter:V(!1),onAppear:V(!0),onLeave(L,G){L._isLeaving=!0;const re=()=>B(L,G);$t(L,f),L._enterCancelled?($t(L,d),yi()):(yi(),$t(L,d)),Qa(()=>{L._isLeaving&&(en(L,f),$t(L,h),Xa(T)||el(L,r,_,re))}),wn(T,[L,re])},onEnterCancelled(L){A(L,!1,void 0,!0),wn(p,[L])},onAppearCancelled(L){A(L,!0,void 0,!0),wn(S,[L])},onLeaveCancelled(L){B(L),wn(x,[L])}})}function dp(e){if(e==null)return null;if(xe(e))return[Bo(e.enter),Bo(e.leave)];{const t=Bo(e);return[t,t]}}function Bo(e){return _h(e)}function $t(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[er]||(e[er]=new Set)).add(t)}function en(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[er];n&&(n.delete(t),n.size||(e[er]=void 0))}function Qa(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let hp=0;function el(e,t,n,r){const s=e._endId=++hp,o=()=>{s===e._endId&&r()};if(n!=null)return setTimeout(o,n);const{type:i,timeout:a,propCount:l}=df(e,t);if(!i)return r();const u=i+"end";let c=0;const f=()=>{e.removeEventListener(u,d),o()},d=h=>{h.target===e&&++c>=l&&f()};setTimeout(()=>{c(n[m]||"").split(", "),s=r(`${Zt}Delay`),o=r(`${Zt}Duration`),i=tl(s,o),a=r(`${mr}Delay`),l=r(`${mr}Duration`),u=tl(a,l);let c=null,f=0,d=0;t===Zt?i>0&&(c=Zt,f=i,d=o.length):t===mr?u>0&&(c=mr,f=u,d=l.length):(f=Math.max(i,u),c=f>0?i>u?Zt:mr:null,d=c?c===Zt?o.length:l.length:0);const h=c===Zt&&/\b(transform|all)(,|$)/.test(r(`${Zt}Property`).toString());return{type:c,timeout:f,propCount:d,hasTransform:h}}function tl(e,t){for(;e.lengthnl(n)+nl(e[r])))}function nl(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function yi(){return document.body.offsetHeight}function mp(e,t,n){const r=e[er];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Us=Symbol("_vod"),hf=Symbol("_vsh"),pp={beforeMount(e,{value:t},{transition:n}){e[Us]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):pr(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),pr(e,!0),r.enter(e)):r.leave(e,()=>{pr(e,!1)}):pr(e,t))},beforeUnmount(e,{value:t}){pr(e,t)}};function pr(e,t){e.style.display=t?e[Us]:"none",e[hf]=!t}const gp=Symbol(""),yp=/(^|;)\s*display\s*:/;function vp(e,t,n){const r=e.style,s=Fe(n);let o=!1;if(n&&!s){if(t)if(Fe(t))for(const i of t.split(";")){const a=i.slice(0,i.indexOf(":")).trim();n[a]==null&&Cs(r,a,"")}else for(const i in t)n[i]==null&&Cs(r,i,"");for(const i in n)i==="display"&&(o=!0),Cs(r,i,n[i])}else if(s){if(t!==n){const i=r[gp];i&&(n+=";"+i),r.cssText=n,o=yp.test(n)}}else t&&e.removeAttribute("style");Us in e&&(e[Us]=o?r.display:"",e[hf]&&(r.display="none"))}const rl=/\s*!important$/;function Cs(e,t,n){if(Q(n))n.forEach(r=>Cs(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=bp(e,t);rl.test(n)?e.setProperty(dn(r),n.replace(rl,""),"important"):e[r]=n}}const sl=["Webkit","Moz","ms"],Vo={};function bp(e,t){const n=Vo[t];if(n)return n;let r=yt(t);if(r!=="filter"&&r in e)return Vo[t]=r;r=Yr(r);for(let s=0;sjo||(Sp.then(()=>jo=0),jo=Date.now());function Cp(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;St(Tp(r,n.value),t,5,[r])};return n.value=e,n.attached=xp(),n}function Tp(e,t){if(Q(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>s=>!s._stopped&&r&&r(s))}else return t}const ul=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,kp=(e,t,n,r,s,o)=>{const i=s==="svg";t==="class"?mp(e,r,i):t==="style"?vp(e,n,r):so(t)?qi(t)||_p(e,t,n,r,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Ap(e,t,r,i))?(al(e,t,r),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&il(e,t,r,i,o,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!Fe(r))?al(e,yt(t),r,o,t):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),il(e,t,r,i))};function Ap(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&ul(t)&&ae(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return ul(t)&&Fe(n)?!1:t in e}const mf=new WeakMap,pf=new WeakMap,qs=Symbol("_moveCb"),fl=Symbol("_enterCb"),Rp=e=>(delete e.props.mode,e),Pp=Rp({name:"TransitionGroup",props:Ve({},uf,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=mn(),r=Tu();let s,o;return sa(()=>{if(!s.length)return;const i=e.moveClass||`${e.name||"v"}-move`;if(!Mp(s[0].el,n.vnode.el,i)){s=[];return}s.forEach($p),s.forEach(Fp);const a=s.filter(Lp);yi(),a.forEach(l=>{const u=l.el,c=u.style;$t(u,i),c.transform=c.webkitTransform=c.transitionDuration="";const f=u[qs]=d=>{d&&d.target!==u||(!d||/transform$/.test(d.propertyName))&&(u.removeEventListener("transitionend",f),u[qs]=null,en(u,i))};u.addEventListener("transitionend",f)}),s=[]}),()=>{const i=he(e),a=ff(i);let l=i.tag||De;if(s=[],o)for(let u=0;u{a.split(/\s+/).forEach(l=>l&&r.classList.remove(l))}),n.split(/\s+/).forEach(a=>a&&r.classList.add(a)),r.style.display="none";const o=t.nodeType===1?t:t.parentNode;o.appendChild(r);const{hasTransform:i}=df(r);return o.removeChild(r),i}const tr=e=>{const t=e.props["onUpdate:modelValue"]||!1;return Q(t)?n=>_s(t,n):t};function Ip(e){e.target.composing=!0}function dl(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Wt=Symbol("_assign"),r_={created(e,{modifiers:{lazy:t,trim:n,number:r}},s){e[Wt]=tr(s);const o=r||s.props&&s.props.type==="number";an(e,t?"change":"input",i=>{if(i.target.composing)return;let a=e.value;n&&(a=a.trim()),o&&(a=Ls(a)),e[Wt](a)}),n&&an(e,"change",()=>{e.value=e.value.trim()}),t||(an(e,"compositionstart",Ip),an(e,"compositionend",dl),an(e,"change",dl))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:r,trim:s,number:o}},i){if(e[Wt]=tr(i),e.composing)return;const a=(o||e.type==="number")&&!/^0\d/.test(e.value)?Ls(e.value):e.value,l=t??"";a!==l&&(document.activeElement===e&&e.type!=="range"&&(r&&t===n||s&&e.value.trim()===l)||(e.value=l))}},s_={deep:!0,created(e,t,n){e[Wt]=tr(n),an(e,"change",()=>{const r=e._modelValue,s=Br(e),o=e.checked,i=e[Wt];if(Q(r)){const a=Gi(r,s),l=a!==-1;if(o&&!l)i(r.concat(s));else if(!o&&l){const u=[...r];u.splice(a,1),i(u)}}else if(ir(r)){const a=new Set(r);o?a.add(s):a.delete(s),i(a)}else i(gf(e,o))})},mounted:hl,beforeUpdate(e,t,n){e[Wt]=tr(n),hl(e,t,n)}};function hl(e,{value:t,oldValue:n},r){e._modelValue=t;let s;if(Q(t))s=Gi(t,r.props.value)>-1;else if(ir(t))s=t.has(r.props.value);else{if(t===n)return;s=Jr(t,gf(e,!0))}e.checked!==s&&(e.checked=s)}const o_={deep:!0,created(e,{value:t,modifiers:{number:n}},r){const s=ir(t);an(e,"change",()=>{const o=Array.prototype.filter.call(e.options,i=>i.selected).map(i=>n?Ls(Br(i)):Br(i));e[Wt](e.multiple?s?new Set(o):o:o[0]),e._assigning=!0,vt(()=>{e._assigning=!1})}),e[Wt]=tr(r)},mounted(e,{value:t}){ml(e,t)},beforeUpdate(e,t,n){e[Wt]=tr(n)},updated(e,{value:t}){e._assigning||ml(e,t)}};function ml(e,t){const n=e.multiple,r=Q(t);if(!(n&&!r&&!ir(t))){for(let s=0,o=e.options.length;sString(u)===String(a)):i.selected=Gi(t,a)>-1}else i.selected=t.has(a);else if(Jr(Br(i),t)){e.selectedIndex!==s&&(e.selectedIndex=s);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Br(e){return"_value"in e?e._value:e.value}function gf(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const Dp=["ctrl","shift","alt","meta"],Np={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Dp.some(n=>e[`${n}Key`]&&!t.includes(n))},i_=(e,t)=>{const n=e._withMods||(e._withMods={}),r=t.join(".");return n[r]||(n[r]=(s,...o)=>{for(let i=0;i{const n=e._withKeys||(e._withKeys={}),r=t.join(".");return n[r]||(n[r]=s=>{if(!("key"in s))return;const o=dn(s.key);if(t.some(i=>i===o||Bp[i]===o))return e(s)})},Vp=Ve({patchProp:kp},up);let pl;function yf(){return pl||(pl=Im(Vp))}const l_=(...e)=>{yf().render(...e)},jp=(...e)=>{const t=yf().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=Up(r);if(!s)return;const o=t._component;!ae(o)&&!o.render&&!o.template&&(o.template=s.innerHTML),s.nodeType===1&&(s.textContent="");const i=n(s,!1,Hp(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),i},t};function Hp(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Up(e){return Fe(e)?document.querySelector(e):e}/*! - * pinia v2.3.1 - * (c) 2025 Eduardo San Martin Morote - * @license MIT - */let vf;const vo=e=>vf=e,bf=Symbol();function vi(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var Ar;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(Ar||(Ar={}));function qp(){const e=Mn(!0),t=e.run(()=>fe({}));let n=[],r=[];const s=Qi({install(o){vo(s),s._a=o,o.provide(bf,s),o.config.globalProperties.$pinia=s,r.forEach(i=>n.push(i)),r=[]},use(o){return this._a?n.push(o):r.push(o),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return s}const wf=()=>{};function gl(e,t,n,r=wf){e.push(t);const s=()=>{const o=e.indexOf(t);o>-1&&(e.splice(o,1),r())};return!n&&Ki()&&Qe(s),s}function jn(e,...t){e.slice().forEach(n=>{n(...t)})}const zp=e=>e(),yl=Symbol(),Ho=Symbol();function bi(e,t){e instanceof Map&&t instanceof Map?t.forEach((n,r)=>e.set(r,n)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const n in t){if(!t.hasOwnProperty(n))continue;const r=t[n],s=e[n];vi(s)&&vi(r)&&e.hasOwnProperty(n)&&!Ae(r)&&!zt(r)?e[n]=bi(s,r):e[n]=r}return e}const Wp=Symbol();function Gp(e){return!vi(e)||!e.hasOwnProperty(Wp)}const{assign:tn}=Object;function Kp(e){return!!(Ae(e)&&e.effect)}function Yp(e,t,n,r){const{state:s,actions:o,getters:i}=t,a=n.state.value[e];let l;function u(){a||(n.state.value[e]=s?s():{});const c=ea(n.state.value[e]);return tn(c,o,Object.keys(i||{}).reduce((f,d)=>(f[d]=Qi(M(()=>{vo(n);const h=n._s.get(e);return i[d].call(h,h)})),f),{}))}return l=_f(e,u,t,n,r,!0),l}function _f(e,t,n={},r,s,o){let i;const a=tn({actions:{}},n),l={deep:!0};let u,c,f=[],d=[],h;const m=r.state.value[e];!o&&!m&&(r.state.value[e]={}),fe({});let w;function _(S){let A;u=c=!1,typeof S=="function"?(S(r.state.value[e]),A={type:Ar.patchFunction,storeId:e,events:h}):(bi(r.state.value[e],S),A={type:Ar.patchObject,payload:S,storeId:e,events:h});const B=w=Symbol();vt().then(()=>{w===B&&(u=!0)}),c=!0,jn(f,A,r.state.value[e])}const b=o?function(){const{state:A}=n,B=A?A():{};this.$patch(V=>{tn(V,B)})}:wf;function y(){i.stop(),f=[],d=[],r._s.delete(e)}const p=(S,A="")=>{if(yl in S)return S[Ho]=A,S;const B=function(){vo(r);const V=Array.from(arguments),L=[],G=[];function re(ee){L.push(ee)}function Z(ee){G.push(ee)}jn(d,{args:V,name:B[Ho],store:x,after:re,onError:Z});let oe;try{oe=S.apply(this&&this.$id===e?this:x,V)}catch(ee){throw jn(G,ee),ee}return oe instanceof Promise?oe.then(ee=>(jn(L,ee),ee)).catch(ee=>(jn(G,ee),Promise.reject(ee))):(jn(L,oe),oe)};return B[yl]=!0,B[Ho]=A,B},T={_p:r,$id:e,$onAction:gl.bind(null,d),$patch:_,$reset:b,$subscribe(S,A={}){const B=gl(f,S,A.detached,()=>V()),V=i.run(()=>ye(()=>r.state.value[e],L=>{(A.flush==="sync"?c:u)&&S({storeId:e,type:Ar.direct,events:h},L)},tn({},l,A)));return B},$dispose:y},x=Be(T);r._s.set(e,x);const I=(r._a&&r._a.runWithContext||zp)(()=>r._e.run(()=>(i=Mn()).run(()=>t({action:p}))));for(const S in I){const A=I[S];if(Ae(A)&&!Kp(A)||zt(A))o||(m&&Gp(A)&&(Ae(A)?A.value=m[S]:bi(A,m[S])),r.state.value[e][S]=A);else if(typeof A=="function"){const B=p(A,S);I[S]=B,a.actions[S]=A}}return tn(x,I),tn(he(x),I),Object.defineProperty(x,"$state",{get:()=>r.state.value[e],set:S=>{_(A=>{tn(A,S)})}}),r._p.forEach(S=>{tn(x,i.run(()=>S({store:x,app:r._a,pinia:r,options:a})))}),m&&o&&n.hydrate&&n.hydrate(x.$state,m),u=!0,c=!0,x}/*! #__NO_SIDE_EFFECTS__ */function Jp(e,t,n){let r,s;const o=typeof t=="function";typeof e=="string"?(r=e,s=o?n:t):(s=e,r=e.id);function i(a,l){const u=Rm();return a=a||(u?Pe(bf,null):null),a&&vo(a),a=vf,a._s.has(r)||(o?_f(r,t,s,a):Yp(r,s,a)),a._s.get(r)}return i.$id=r,i}function c_(e){{const t=he(e),n={};for(const r in t){const s=t[r];s.effect?n[r]=M({get:()=>e[r],set(o){e[r]=o}}):(Ae(s)||zt(s))&&(n[r]=ie(e,r))}return n}}function ns(e,t){let n;function r(){n=Mn(),n.run(()=>t.length?t(()=>{n==null||n.stop(),r()}):t())}ye(e,s=>{s&&!n?r():s||(n==null||n.stop(),n=void 0)},{immediate:!0}),Qe(()=>{n==null||n.stop()})}const $e=typeof window<"u",Zp=$e&&"IntersectionObserver"in window,Xp=$e&&("ontouchstart"in window||window.navigator.maxTouchPoints>0),Qp=$e&&"matchMedia"in window&&typeof window.matchMedia=="function";function vl(e,t,n){eg(e,t),t.set(e,n)}function eg(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function bl(e,t,n){return e.set(Ef(e,t),n),n}function Vt(e,t){return e.get(Ef(e,t))}function Ef(e,t,n){if(typeof e=="function"?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}function tg(e,t,n){const r=t.length-1;if(r<0)return e===void 0?n:e;for(let s=0;sQn(e[r],t[r]))}function wl(e,t,n){return e==null||!t||typeof t!="string"?n:e[t]!==void 0?e[t]:(t=t.replace(/\[(\w+)\]/g,".$1"),t=t.replace(/^\./,""),tg(e,t.split("."),n))}function Sf(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return Array.from({length:e},(n,r)=>t+r)}function pe(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"px";if(e==null||e==="")return;const n=Number(e);return isNaN(n)?String(e):isFinite(n)?`${n}${t}`:void 0}function wi(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function _l(e){let t;return e!==null&&typeof e=="object"&&((t=Object.getPrototypeOf(e))===Object.prototype||t===null)}function xf(e){if(e&&"$el"in e){const t=e.$el;return(t==null?void 0:t.nodeType)===Node.TEXT_NODE?t.nextElementSibling:t}return e}function Uo(e,t){return t.every(n=>e.hasOwnProperty(n))}function ng(e,t){const n={};for(const r of t)Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function El(e,t,n){const r=Object.create(null),s=Object.create(null);for(const o in e)t.some(i=>i instanceof RegExp?i.test(o):i===o)?r[o]=e[o]:s[o]=e[o];return[r,s]}function Cf(e,t){const n={...e};return t.forEach(r=>delete n[r]),n}const Tf=/^on[^a-z]/,kf=e=>Tf.test(e),rg=["onAfterscriptexecute","onAnimationcancel","onAnimationend","onAnimationiteration","onAnimationstart","onAuxclick","onBeforeinput","onBeforescriptexecute","onChange","onClick","onCompositionend","onCompositionstart","onCompositionupdate","onContextmenu","onCopy","onCut","onDblclick","onFocusin","onFocusout","onFullscreenchange","onFullscreenerror","onGesturechange","onGestureend","onGesturestart","onGotpointercapture","onInput","onKeydown","onKeypress","onKeyup","onLostpointercapture","onMousedown","onMousemove","onMouseout","onMouseover","onMouseup","onMousewheel","onPaste","onPointercancel","onPointerdown","onPointerenter","onPointerleave","onPointermove","onPointerout","onPointerover","onPointerup","onReset","onSelect","onSubmit","onTouchcancel","onTouchend","onTouchmove","onTouchstart","onTransitioncancel","onTransitionend","onTransitionrun","onTransitionstart","onWheel"];function u_(e){const[t,n]=El(e,[Tf]),r=Cf(t,rg),[s,o]=El(n,["class","style","id",/^data-/]);return Object.assign(s,t),Object.assign(o,r),[s,o]}function sg(e){return e==null?[]:Array.isArray(e)?e:[e]}function nr(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1;return Math.max(t,Math.min(n,e))}function Sl(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"0";return e+n.repeat(Math.max(0,t-e.length))}function xl(e,t){return(arguments.length>2&&arguments[2]!==void 0?arguments[2]:"0").repeat(Math.max(0,t-e.length))+e}function og(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;const n=[];let r=0;for(;r0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;const r={};for(const s in e)r[s]=e[s];for(const s in t){const o=e[s],i=t[s];if(_l(o)&&_l(i)){r[s]=ht(o,i,n);continue}if(n&&Array.isArray(o)&&Array.isArray(i)){r[s]=n(o,i);continue}r[s]=i}return r}function Af(e){return e.map(t=>t.type===De?Af(t.children):t).flat()}function Fn(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"";if(Fn.cache.has(e))return Fn.cache.get(e);const t=e.replace(/[^a-z]/gi,"-").replace(/\B([A-Z])/g,"-$1").toLowerCase();return Fn.cache.set(e,t),t}Fn.cache=new Map;function Gn(e,t){if(!t||typeof t!="object")return[];if(Array.isArray(t))return t.map(n=>Gn(e,n)).flat(1);if(t.suspense)return Gn(e,t.ssContent);if(Array.isArray(t.children))return t.children.map(n=>Gn(e,n)).flat(1);if(t.component){if(Object.getOwnPropertySymbols(t.component.provides).includes(e))return[t.component];if(t.component.subTree)return Gn(e,t.component.subTree).flat(1)}return[]}var Hn=new WeakMap,_n=new WeakMap;class ig{constructor(t){vl(this,Hn,[]),vl(this,_n,0),this.size=t}get isFull(){return Vt(Hn,this).length===this.size}push(t){Vt(Hn,this)[Vt(_n,this)]=t,bl(_n,this,(Vt(_n,this)+1)%this.size)}values(){return Vt(Hn,this).slice(Vt(_n,this)).concat(Vt(Hn,this).slice(0,Vt(_n,this)))}clear(){Vt(Hn,this).length=0,bl(_n,this,0)}}function ca(e){const t=Be({});Jt(()=>{const r=e();for(const s in r)t[s]=r[s]},{flush:"sync"});const n={};for(const r in t)n[r]=ie(()=>t[r]);return n}function zs(e,t){return e.includes(t)}function Rf(e){return e[2].toLowerCase()+e.slice(3)}const f_=()=>[Function,Array];function Cl(e,t){return t="on"+Yr(t),!!(e[t]||e[`${t}Once`]||e[`${t}Capture`]||e[`${t}OnceCapture`]||e[`${t}CaptureOnce`])}function d_(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r{};const n=window.setTimeout(t,e);return()=>window.clearTimeout(n)}function _i(){const e=Oe(),t=n=>{e.value=n};return Object.defineProperty(t,"value",{enumerable:!0,get:()=>e.value,set:n=>e.value=n}),Object.defineProperty(t,"el",{enumerable:!0,get:()=>xf(e.value)}),t}function cg(e){const t=["checked","disabled"];return Object.fromEntries(Object.entries(e).filter(n=>{let[r,s]=n;return t.includes(r)?!!s:s!==void 0}))}const Pf=["top","bottom"],ug=["start","end","left","right"];function Ei(e,t){let[n,r]=e.split(" ");return r||(r=zs(Pf,n)?"start":zs(ug,n)?"top":"center"),{side:Tl(n,t),align:Tl(r,t)}}function Tl(e,t){return e==="start"?t?"right":"left":e==="end"?t?"left":"right":e}function qo(e){return{side:{center:"center",top:"bottom",bottom:"top",left:"right",right:"left"}[e.side],align:e.align}}function zo(e){return{side:e.side,align:{center:"center",top:"bottom",bottom:"top",left:"right",right:"left"}[e.align]}}function kl(e){return{side:e.align,align:e.side}}function Al(e){return zs(Pf,e.side)?"y":"x"}class Dt{constructor(t){let{x:n,y:r,width:s,height:o}=t;this.x=n,this.y=r,this.width=s,this.height=o}get top(){return this.y}get bottom(){return this.y+this.height}get left(){return this.x}get right(){return this.x+this.width}}function Rl(e,t){return{x:{before:Math.max(0,t.left-e.left),after:Math.max(0,e.right-t.right)},y:{before:Math.max(0,t.top-e.top),after:Math.max(0,e.bottom-t.bottom)}}}function fg(e){return Array.isArray(e)?new Dt({x:e[0],y:e[1],width:0,height:0}):e.getBoundingClientRect()}function dg(e){if(e===document.documentElement)return visualViewport?new Dt({x:visualViewport.scale>1?0:visualViewport.offsetLeft,y:visualViewport.scale>1?0:visualViewport.offsetTop,width:visualViewport.width*visualViewport.scale,height:visualViewport.height*visualViewport.scale}):new Dt({x:0,y:0,width:document.documentElement.clientWidth,height:document.documentElement.clientHeight});{const t=e.getBoundingClientRect();return new Dt({x:t.x,y:t.y,width:e.clientWidth,height:e.clientHeight})}}function hg(e){const t=e.getBoundingClientRect(),n=getComputedStyle(e),r=n.transform;if(r){let s,o,i,a,l;if(r.startsWith("matrix3d("))s=r.slice(9,-1).split(/, /),o=Number(s[0]),i=Number(s[5]),a=Number(s[12]),l=Number(s[13]);else if(r.startsWith("matrix("))s=r.slice(7,-1).split(/, /),o=Number(s[0]),i=Number(s[3]),a=Number(s[4]),l=Number(s[5]);else return new Dt(t);const u=n.transformOrigin,c=t.x-a-(1-o)*parseFloat(u),f=t.y-l-(1-i)*parseFloat(u.slice(u.indexOf(" ")+1)),d=o?t.width/o:e.offsetWidth+1,h=i?t.height/i:e.offsetHeight+1;return new Dt({x:c,y:f,width:d,height:h})}else return new Dt(t)}function mg(e,t,n){if(typeof e.animate>"u")return{finished:Promise.resolve()};let r;try{r=e.animate(t,n)}catch{return{finished:Promise.resolve()}}return typeof r.finished>"u"&&(r.finished=new Promise(s=>{r.onfinish=()=>{s(r)}})),r}const Ts=new WeakMap;function pg(e,t){Object.keys(t).forEach(n=>{if(kf(n)){const r=Rf(n),s=Ts.get(e);if(t[n]==null)s==null||s.forEach(o=>{const[i,a]=o;i===r&&(e.removeEventListener(r,a),s.delete(o))});else if(!s||![...s].some(o=>o[0]===r&&o[1]===t[n])){e.addEventListener(r,t[n]);const o=s||new Set;o.add([r,t[n]]),Ts.has(e)||Ts.set(e,o)}}else t[n]==null?e.removeAttribute(n):e.setAttribute(n,t[n])})}function gg(e,t){Object.keys(t).forEach(n=>{if(kf(n)){const r=Rf(n),s=Ts.get(e);s==null||s.forEach(o=>{const[i,a]=o;i===r&&(e.removeEventListener(r,a),s.delete(o))})}else e.removeAttribute(n)})}const Un=2.4,Pl=.2126729,Ol=.7151522,$l=.072175,yg=.55,vg=.58,bg=.57,wg=.62,gs=.03,Fl=1.45,_g=5e-4,Eg=1.25,Sg=1.25,Ll=.078,Ml=12.82051282051282,ys=.06,Il=.001;function Dl(e,t){const n=(e.r/255)**Un,r=(e.g/255)**Un,s=(e.b/255)**Un,o=(t.r/255)**Un,i=(t.g/255)**Un,a=(t.b/255)**Un;let l=n*Pl+r*Ol+s*$l,u=o*Pl+i*Ol+a*$l;if(l<=gs&&(l+=(gs-l)**Fl),u<=gs&&(u+=(gs-u)**Fl),Math.abs(u-l)<_g)return 0;let c;if(u>l){const f=(u**yg-l**vg)*Eg;c=f-Il?0:f>-Ll?f-f*Ml*ys:f+ys}return c*100}function xg(e,t){t=Array.isArray(t)?t.slice(0,-1).map(n=>`'${n}'`).join(", ")+` or '${t.at(-1)}'`:`'${t}'`}const Ws=.20689655172413793,Cg=e=>e>Ws**3?Math.cbrt(e):e/(3*Ws**2)+4/29,Tg=e=>e>Ws?e**3:3*Ws**2*(e-4/29);function Of(e){const t=Cg,n=t(e[1]);return[116*n-16,500*(t(e[0]/.95047)-n),200*(n-t(e[2]/1.08883))]}function $f(e){const t=Tg,n=(e[0]+16)/116;return[t(n+e[1]/500)*.95047,t(n),t(n-e[2]/200)*1.08883]}const kg=[[3.2406,-1.5372,-.4986],[-.9689,1.8758,.0415],[.0557,-.204,1.057]],Ag=e=>e<=.0031308?e*12.92:1.055*e**(1/2.4)-.055,Rg=[[.4124,.3576,.1805],[.2126,.7152,.0722],[.0193,.1192,.9505]],Pg=e=>e<=.04045?e/12.92:((e+.055)/1.055)**2.4;function Ff(e){const t=Array(3),n=Ag,r=kg;for(let s=0;s<3;++s)t[s]=Math.round(nr(n(r[s][0]*e[0]+r[s][1]*e[1]+r[s][2]*e[2]))*255);return{r:t[0],g:t[1],b:t[2]}}function ua(e){let{r:t,g:n,b:r}=e;const s=[0,0,0],o=Pg,i=Rg;t=o(t/255),n=o(n/255),r=o(r/255);for(let a=0;a<3;++a)s[a]=i[a][0]*t+i[a][1]*n+i[a][2]*r;return s}function Si(e){return!!e&&/^(#|var\(--|(rgb|hsl)a?\()/.test(e)}function Og(e){return Si(e)&&!/^((rgb|hsl)a?\()?var\(--/.test(e)}const Nl=/^(?(?:rgb|hsl)a?)\((?.+)\)/,$g={rgb:(e,t,n,r)=>({r:e,g:t,b:n,a:r}),rgba:(e,t,n,r)=>({r:e,g:t,b:n,a:r}),hsl:(e,t,n,r)=>Bl({h:e,s:t,l:n,a:r}),hsla:(e,t,n,r)=>Bl({h:e,s:t,l:n,a:r}),hsv:(e,t,n,r)=>Vr({h:e,s:t,v:n,a:r}),hsva:(e,t,n,r)=>Vr({h:e,s:t,v:n,a:r})};function Mt(e){if(typeof e=="number")return{r:(e&16711680)>>16,g:(e&65280)>>8,b:e&255};if(typeof e=="string"&&Nl.test(e)){const{groups:t}=e.match(Nl),{fn:n,values:r}=t,s=r.split(/,\s*|\s*\/\s*|\s+/).map((o,i)=>o.endsWith("%")||i>0&&i<3&&["hsl","hsla","hsv","hsva"].includes(n)?parseFloat(o)/100:parseFloat(o));return $g[n](...s)}else if(typeof e=="string"){let t=e.startsWith("#")?e.slice(1):e;return[3,4].includes(t.length)?t=t.split("").map(n=>n+n).join(""):[6,8].includes(t.length),Lg(t)}else if(typeof e=="object"){if(Uo(e,["r","g","b"]))return e;if(Uo(e,["h","s","l"]))return Vr(Lf(e));if(Uo(e,["h","s","v"]))return Vr(e)}throw new TypeError(`Invalid color: ${e==null?e:String(e)||e.constructor.name} -Expected #hex, #hexa, rgb(), rgba(), hsl(), hsla(), object or number`)}function Vr(e){const{h:t,s:n,v:r,a:s}=e,o=a=>{const l=(a+t/60)%6;return r-r*n*Math.max(Math.min(l,4-l,1),0)},i=[o(5),o(3),o(1)].map(a=>Math.round(a*255));return{r:i[0],g:i[1],b:i[2],a:s}}function Bl(e){return Vr(Lf(e))}function Lf(e){const{h:t,s:n,l:r,a:s}=e,o=r+n*Math.min(r,1-r),i=o===0?0:2-2*r/o;return{h:t,s:i,v:o,a:s}}function vs(e){const t=Math.round(e).toString(16);return("00".substr(0,2-t.length)+t).toUpperCase()}function Fg(e){let{r:t,g:n,b:r,a:s}=e;return`#${[vs(t),vs(n),vs(r),s!==void 0?vs(Math.round(s*255)):""].join("")}`}function Lg(e){e=Mg(e);let[t,n,r,s]=og(e,2).map(o=>parseInt(o,16));return s=s===void 0?s:s/255,{r:t,g:n,b:r,a:s}}function Mg(e){return e.startsWith("#")&&(e=e.slice(1)),e=e.replace(/([^0-9a-f])/gi,"F"),(e.length===3||e.length===4)&&(e=e.split("").map(t=>t+t).join("")),e.length!==6&&(e=Sl(Sl(e,6),8,"F")),e}function Ig(e,t){const n=Of(ua(e));return n[0]=n[0]+t*10,Ff($f(n))}function Dg(e,t){const n=Of(ua(e));return n[0]=n[0]-t*10,Ff($f(n))}function Ng(e){const t=Mt(e);return ua(t)[1]}function Mf(e){const t=Math.abs(Dl(Mt(0),Mt(e)));return Math.abs(Dl(Mt(16777215),Mt(e)))>Math.min(t,50)?"#fff":"#000"}function me(e,t){return n=>Object.keys(e).reduce((r,s)=>{const i=typeof e[s]=="object"&&e[s]!=null&&!Array.isArray(e[s])?e[s]:{type:e[s]};return n&&s in n?r[s]={...i,default:n[s]}:r[s]=i,t&&!r[s].source&&(r[s].source=t),r},{})}const pn=me({class:[String,Array,Object],style:{type:[String,Array,Object],default:null}},"component");function et(e,t){const n=mn();if(!n)throw new Error(`[Vuetify] ${e} must be called from inside a setup function`);return n}function gn(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"composables";const t=et(e).type;return Fn((t==null?void 0:t.aliasName)||(t==null?void 0:t.name))}function Bg(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:et("injectSelf");const{provides:n}=t;if(n&&e in n)return n[e]}const rr=Symbol.for("vuetify:defaults");function Vg(e){return fe(e)}function fa(){const e=Pe(rr);if(!e)throw new Error("[Vuetify] Could not find defaults instance");return e}function If(e,t){const n=fa(),r=fe(e),s=M(()=>{if(Me(t==null?void 0:t.disabled))return n.value;const i=Me(t==null?void 0:t.scoped),a=Me(t==null?void 0:t.reset),l=Me(t==null?void 0:t.root);if(r.value==null&&!(i||a||l))return n.value;let u=ht(r.value,{prev:n.value});if(i)return u;if(a||l){const c=Number(a||1/0);for(let f=0;f<=c&&!(!u||!("prev"in u));f++)u=u.prev;return u&&typeof l=="string"&&l in u&&(u=ht(ht(u,{prev:u}),u[l])),u}return u.prev?ht(u.prev,u):u});return _t(rr,s),s}function jg(e,t){return e.props&&(typeof e.props[t]<"u"||typeof e.props[Fn(t)]<"u")}function Hg(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:fa();const r=et("useDefaults");if(t=t??r.type.name??r.type.__name,!t)throw new Error("[Vuetify] Could not determine component name");const s=M(()=>{var l;return(l=n.value)==null?void 0:l[e._as??t]}),o=new Proxy(e,{get(l,u){var h,m,w,_;const c=Reflect.get(l,u);if(u==="class"||u==="style")return[(h=s.value)==null?void 0:h[u],c].filter(b=>b!=null);if(jg(r.vnode,u))return c;const f=(m=s.value)==null?void 0:m[u];if(f!==void 0)return f;const d=(_=(w=n.value)==null?void 0:w.global)==null?void 0:_[u];return d!==void 0?d:c}}),i=Oe();Jt(()=>{if(s.value){const l=Object.entries(s.value).filter(u=>{let[c]=u;return c.startsWith(c[0].toUpperCase())});i.value=l.length?Object.fromEntries(l):void 0}else i.value=void 0});function a(){const l=Bg(rr,r);_t(rr,M(()=>i.value?ht((l==null?void 0:l.value)??{},i.value):l==null?void 0:l.value))}return{props:o,provideSubDefaults:a}}function rs(e){if(e._setup=e._setup??e.setup,!e.name)return e;if(e._setup){e.props=me(e.props??{},e.name)();const t=Object.keys(e.props).filter(n=>n!=="class"&&n!=="style");e.filterProps=function(r){return ng(r,t)},e.props._as=String,e.setup=function(r,s){const o=fa();if(!o.value)return e._setup(r,s);const{props:i,provideSubDefaults:a}=Hg(r,r._as??e.name,o),l=e._setup(i,s);return a(),l}}return e}function bt(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;return t=>(e?rs:ra)(t)}function Df(e){if(typeof e.getRootNode!="function"){for(;e.parentNode;)e=e.parentNode;return e!==document?null:document}const t=e.getRootNode();return t!==document&&t.getRootNode({composed:!0})!==document?null:t}const Ug="cubic-bezier(0.4, 0, 0.2, 1)",qg={linear:e=>e,easeInQuad:e=>e**2,easeOutQuad:e=>e*(2-e),easeInOutQuad:e=>e<.5?2*e**2:-1+(4-2*e)*e,easeInCubic:e=>e**3,easeOutCubic:e=>--e**3+1,easeInOutCubic:e=>e<.5?4*e**3:(e-1)*(2*e-2)*(2*e-2)+1,easeInQuart:e=>e**4,easeOutQuart:e=>1- --e**4,easeInOutQuart:e=>e<.5?8*e**4:1-8*--e**4,easeInQuint:e=>e**5,easeOutQuint:e=>1+--e**5,easeInOutQuint:e=>e<.5?16*e**5:1+16*--e**5};function zg(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;for(;e;){if(t?Wg(e):da(e))return e;e=e.parentElement}return document.scrollingElement}function Gs(e,t){const n=[];if(t&&e&&!t.contains(e))return n;for(;e&&(da(e)&&n.push(e),e!==t);)e=e.parentElement;return n}function da(e){if(!e||e.nodeType!==Node.ELEMENT_NODE)return!1;const t=window.getComputedStyle(e);return t.overflowY==="scroll"||t.overflowY==="auto"&&e.scrollHeight>e.clientHeight}function Wg(e){if(!e||e.nodeType!==Node.ELEMENT_NODE)return!1;const t=window.getComputedStyle(e);return["scroll","auto"].includes(t.overflowY)}function Gg(e){for(;e;){if(window.getComputedStyle(e).position==="fixed")return!0;e=e.offsetParent}return!1}function Nt(e){const t=et("useRender");t.render=e}function ss(e,t,n){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:f=>f,s=arguments.length>4&&arguments[4]!==void 0?arguments[4]:f=>f;const o=et("useProxiedModel"),i=fe(e[t]!==void 0?e[t]:n),a=Fn(t),u=M(a!==t?()=>{var f,d,h,m;return e[t],!!(((f=o.vnode.props)!=null&&f.hasOwnProperty(t)||(d=o.vnode.props)!=null&&d.hasOwnProperty(a))&&((h=o.vnode.props)!=null&&h.hasOwnProperty(`onUpdate:${t}`)||(m=o.vnode.props)!=null&&m.hasOwnProperty(`onUpdate:${a}`)))}:()=>{var f,d;return e[t],!!((f=o.vnode.props)!=null&&f.hasOwnProperty(t)&&((d=o.vnode.props)!=null&&d.hasOwnProperty(`onUpdate:${t}`)))});ns(()=>!u.value,()=>{ye(()=>e[t],f=>{i.value=f})});const c=M({get(){const f=e[t];return r(u.value?f:i.value)},set(f){const d=s(f),h=he(u.value?e[t]:i.value);h===d||r(h)===f||(i.value=d,o==null||o.emit(`update:${t}`,d))}});return Object.defineProperty(c,"externalValue",{get:()=>u.value?e[t]:i.value}),c}const Kg={badge:"Badge",open:"Open",close:"Close",dismiss:"Dismiss",confirmEdit:{ok:"OK",cancel:"Cancel"},dataIterator:{noResultsText:"No matching records found",loadingText:"Loading items..."},dataTable:{itemsPerPageText:"Rows per page:",ariaLabel:{sortDescending:"Sorted descending.",sortAscending:"Sorted ascending.",sortNone:"Not sorted.",activateNone:"Activate to remove sorting.",activateDescending:"Activate to sort descending.",activateAscending:"Activate to sort ascending."},sortBy:"Sort by"},dataFooter:{itemsPerPageText:"Items per page:",itemsPerPageAll:"All",nextPage:"Next page",prevPage:"Previous page",firstPage:"First page",lastPage:"Last page",pageText:"{0}-{1} of {2}"},dateRangeInput:{divider:"to"},datePicker:{itemsSelected:"{0} selected",range:{title:"Select dates",header:"Enter dates"},title:"Select date",header:"Enter date",input:{placeholder:"Enter date"},ariaLabel:{previousMonth:"Previous month",nextMonth:"Next month",selectYear:"Select year",selectDate:"{0}",currentDate:"Today, {0}"}},noDataText:"No data available",carousel:{prev:"Previous visual",next:"Next visual",ariaLabel:{delimiter:"Carousel slide {0} of {1}"}},calendar:{moreEvents:"{0} more",today:"Today"},input:{clear:"Clear {0}",prependAction:"{0} prepended action",appendAction:"{0} appended action",otp:"Please enter OTP character {0}"},fileInput:{counter:"{0} files",counterSize:"{0} files ({1} in total)"},fileUpload:{title:"Drag and drop files here",divider:"or",browse:"Browse Files"},timePicker:{am:"AM",pm:"PM",title:"Select Time"},pagination:{ariaLabel:{root:"Pagination Navigation",next:"Next page",previous:"Previous page",page:"Go to page {0}",currentPage:"Page {0}, Current page",first:"First page",last:"Last page"}},stepper:{next:"Next",prev:"Previous"},rating:{ariaLabel:{item:"Rating {0} of {1}"}},loading:"Loading...",infiniteScroll:{loadMore:"Load more",empty:"No more"},rules:{required:"This field is required",email:"Please enter a valid email",number:"This field can only contain numbers",integer:"This field can only contain integer values",capital:"This field can only contain uppercase letters",maxLength:"You must enter a maximum of {0} characters",minLength:"You must enter a minimum of {0} characters",strictLength:"The length of the entered field is invalid",exclude:"The {0} character is not allowed",notEmpty:"Please choose at least one value",pattern:"Invalid format"},hotkey:{then:"then",ctrl:"Ctrl",command:"Command",space:"Space",shift:"Shift",alt:"Alt",enter:"Enter",escape:"Escape",upArrow:"Up Arrow",downArrow:"Down Arrow",leftArrow:"Left Arrow",rightArrow:"Right Arrow",backspace:"Backspace",option:"Option",plus:"plus",shortcut:"Keyboard shortcut: {0}"},video:{play:"Play",pause:"Pause",seek:"Seek",volume:"Volume",showVolume:"Show volume control",mute:"Mute",unmute:"Unmute",enterFullscreen:"Full screen",exitFullscreen:"Exit full screen"}},Vl="$vuetify.",jl=(e,t)=>e.replace(/\{(\d+)\}/g,(n,r)=>String(t[Number(r)])),Nf=(e,t,n)=>function(r){for(var s=arguments.length,o=new Array(s>1?s-1:0),i=1;inew Intl.NumberFormat([e.value,t.value],r).format(n)}function Bf(e,t){return ha(e,t)(.1).includes(",")?",":"."}function Wo(e,t,n){const r=ss(e,t,e[t]??n.value);return r.value=e[t]??n.value,ye(n,s=>{e[t]==null&&(r.value=n.value)}),r}function Vf(e){return t=>{const n=Wo(t,"locale",e.current),r=Wo(t,"fallback",e.fallback),s=Wo(t,"messages",e.messages);return{name:"vuetify",current:n,fallback:r,messages:s,decimalSeparator:ie(()=>Bf(n,r)),t:Nf(n,r,s),n:ha(n,r),provide:Vf({current:n,fallback:r,messages:s})}}}function Yg(e){const t=Oe((e==null?void 0:e.locale)??"en"),n=Oe((e==null?void 0:e.fallback)??"en"),r=fe({en:Kg,...e==null?void 0:e.messages});return{name:"vuetify",current:t,fallback:n,messages:r,decimalSeparator:ie(()=>(e==null?void 0:e.decimalSeparator)??Bf(t,n)),t:Nf(t,n,r),n:ha(t,n),provide:Vf({current:t,fallback:n,messages:r})}}const Ks=Symbol.for("vuetify:locale");function Jg(e){return e.name!=null}function Zg(e){const t=e!=null&&e.adapter&&Jg(e==null?void 0:e.adapter)?e==null?void 0:e.adapter:Yg(e),n=Qg(t,e);return{...t,...n}}function h_(){const e=Pe(Ks);if(!e)throw new Error("[Vuetify] Could not find injected locale instance");return e}function Xg(){return{af:!1,ar:!0,bg:!1,ca:!1,ckb:!1,cs:!1,de:!1,el:!1,en:!1,es:!1,et:!1,fa:!0,fi:!1,fr:!1,hr:!1,hu:!1,he:!0,id:!1,it:!1,ja:!1,km:!1,ko:!1,lv:!1,lt:!1,nl:!1,no:!1,pl:!1,pt:!1,ro:!1,ru:!1,sk:!1,sl:!1,srCyrl:!1,srLatn:!1,sv:!1,th:!1,tr:!1,az:!1,uk:!1,vi:!1,zhHans:!1,zhHant:!1}}function Qg(e,t){const n=fe((t==null?void 0:t.rtl)??Xg()),r=M(()=>n.value[e.current.value]??!1);return{isRtl:r,rtl:n,rtlClasses:ie(()=>`v-locale--is-${r.value?"rtl":"ltr"}`)}}function bo(){const e=Pe(Ks);if(!e)throw new Error("[Vuetify] Could not find injected rtl instance");return{isRtl:e.isRtl,rtlClasses:e.rtlClasses}}function os(e){const t=e.slice(-2).toUpperCase();switch(!0){case e==="GB-alt-variant":return{firstDay:0,firstWeekSize:4};case e==="001":return{firstDay:1,firstWeekSize:1};case`AG AS BD BR BS BT BW BZ CA CO DM DO ET GT GU HK HN ID IL IN JM JP KE - KH KR LA MH MM MO MT MX MZ NI NP PA PE PH PK PR PY SA SG SV TH TT TW UM US - VE VI WS YE ZA ZW`.includes(t):return{firstDay:0,firstWeekSize:1};case`AI AL AM AR AU AZ BA BM BN BY CL CM CN CR CY EC GE HR KG KZ LB LK LV - MD ME MK MN MY NZ RO RS SI TJ TM TR UA UY UZ VN XK`.includes(t):return{firstDay:1,firstWeekSize:1};case`AD AN AT AX BE BG CH CZ DE DK EE ES FI FJ FO FR GB GF GP GR HU IE IS - IT LI LT LU MC MQ NL NO PL RE RU SE SK SM VA`.includes(t):return{firstDay:1,firstWeekSize:4};case"AE AF BH DJ DZ EG IQ IR JO KW LY OM QA SD SY".includes(t):return{firstDay:6,firstWeekSize:1};case t==="MV":return{firstDay:5,firstWeekSize:1};case t==="PT":return{firstDay:0,firstWeekSize:4};default:return null}}function e0(e,t,n){var c;const r=[];let s=[];const o=jf(e),i=Hf(e),a=n??((c=os(t))==null?void 0:c.firstDay)??0,l=(o.getDay()-a+7)%7,u=(i.getDay()-a+7)%7;for(let f=0;f0&&r.push(s),r}function xi(e,t,n){var o;let r=(n??((o=os(t))==null?void 0:o.firstDay)??0)%7;[0,1,2,3,4,5,6].includes(r)||(r=0);const s=new Date(e);for(;s.getDay()!==r;)s.setDate(s.getDate()-1);return s}function t0(e,t){var s;const n=new Date(e),r=((((s=os(t))==null?void 0:s.firstDay)??0)+6)%7;for(;n.getDay()!==r;)n.setDate(n.getDate()+1);return n}function jf(e){return new Date(e.getFullYear(),e.getMonth(),1)}function Hf(e){return new Date(e.getFullYear(),e.getMonth()+1,0)}function n0(e){const t=e.split("-").map(Number);return new Date(t[0],t[1]-1,t[2])}const r0=/^([12]\d{3}-([1-9]|0[1-9]|1[0-2])-([1-9]|0[1-9]|[12]\d|3[01]))$/;function Uf(e){if(e==null)return new Date;if(e instanceof Date)return e;if(typeof e=="string"){let t;if(r0.test(e))return n0(e);if(t=Date.parse(e),!isNaN(t))return new Date(t)}return null}const Hl=new Date(2e3,0,2);function s0(e,t,n){var s;const r=t??((s=os(e))==null?void 0:s.firstDay)??0;return Sf(7).map(o=>{const i=new Date(Hl);return i.setDate(Hl.getDate()+r+o),new Intl.DateTimeFormat(e,{weekday:n??"narrow"}).format(i)})}function o0(e,t,n,r){const s=Uf(e)??new Date,o=r==null?void 0:r[t];if(typeof o=="function")return o(s,t,n);let i={};switch(t){case"fullDate":i={year:"numeric",month:"short",day:"numeric"};break;case"fullDateWithWeekday":i={weekday:"long",year:"numeric",month:"long",day:"numeric"};break;case"normalDate":const a=s.getDate(),l=new Intl.DateTimeFormat(n,{month:"long"}).format(s);return`${a} ${l}`;case"normalDateWithWeekday":i={weekday:"short",day:"numeric",month:"short"};break;case"shortDate":i={month:"short",day:"numeric"};break;case"year":i={year:"numeric"};break;case"month":i={month:"long"};break;case"monthShort":i={month:"short"};break;case"monthAndYear":i={month:"long",year:"numeric"};break;case"monthAndDate":i={month:"long",day:"numeric"};break;case"weekday":i={weekday:"long"};break;case"weekdayShort":i={weekday:"short"};break;case"dayOfMonth":return new Intl.NumberFormat(n).format(s.getDate());case"hours12h":i={hour:"numeric",hour12:!0};break;case"hours24h":i={hour:"numeric",hour12:!1};break;case"minutes":i={minute:"numeric"};break;case"seconds":i={second:"numeric"};break;case"fullTime":i={hour:"numeric",minute:"numeric"};break;case"fullTime12h":i={hour:"numeric",minute:"numeric",hour12:!0};break;case"fullTime24h":i={hour:"numeric",minute:"numeric",hour12:!1};break;case"fullDateTime":i={year:"numeric",month:"short",day:"numeric",hour:"numeric",minute:"numeric"};break;case"fullDateTime12h":i={year:"numeric",month:"short",day:"numeric",hour:"numeric",minute:"numeric",hour12:!0};break;case"fullDateTime24h":i={year:"numeric",month:"short",day:"numeric",hour:"numeric",minute:"numeric",hour12:!1};break;case"keyboardDate":i={year:"numeric",month:"2-digit",day:"2-digit"};break;case"keyboardDateTime":return i={year:"numeric",month:"2-digit",day:"2-digit",hour:"numeric",minute:"numeric"},new Intl.DateTimeFormat(n,i).format(s).replace(/, /g," ");case"keyboardDateTime12h":return i={year:"numeric",month:"2-digit",day:"2-digit",hour:"numeric",minute:"numeric",hour12:!0},new Intl.DateTimeFormat(n,i).format(s).replace(/, /g," ");case"keyboardDateTime24h":return i={year:"numeric",month:"2-digit",day:"2-digit",hour:"numeric",minute:"numeric",hour12:!1},new Intl.DateTimeFormat(n,i).format(s).replace(/, /g," ");default:i=o??{timeZone:"UTC",timeZoneName:"short"}}return new Intl.DateTimeFormat(n,i).format(s)}function i0(e,t){const n=e.toJsDate(t),r=n.getFullYear(),s=xl(String(n.getMonth()+1),2,"0"),o=xl(String(n.getDate()),2,"0");return`${r}-${s}-${o}`}function a0(e){const[t,n,r]=e.split("-").map(Number);return new Date(t,n-1,r)}function l0(e,t){const n=new Date(e);return n.setMinutes(n.getMinutes()+t),n}function c0(e,t){const n=new Date(e);return n.setHours(n.getHours()+t),n}function ks(e,t){const n=new Date(e);return n.setDate(n.getDate()+t),n}function u0(e,t){const n=new Date(e);return n.setDate(n.getDate()+t*7),n}function f0(e,t){const n=new Date(e);return n.setDate(1),n.setMonth(n.getMonth()+t),n}function Ci(e){return e.getFullYear()}function d0(e){return e.getMonth()}function h0(e,t,n,r){const s=os(t),o=n??(s==null?void 0:s.firstDay)??0,i=r??(s==null?void 0:s.firstWeekSize)??1;function a(h){const m=new Date(h,0,1);return 7-Ti(m,xi(m,t,o),"days")}let l=Ci(e);const u=ks(xi(e,t,o),6);l=i&&l++;const c=new Date(l,0,1),f=a(l),d=f>=i?ks(c,f-7):ks(c,f);return 1+Ti(qf(e),Js(d),"weeks")}function m0(e){return e.getDate()}function p0(e){return new Date(e.getFullYear(),e.getMonth()+1,1)}function g0(e){return new Date(e.getFullYear(),e.getMonth()-1,1)}function y0(e){return e.getHours()}function v0(e){return e.getMinutes()}function b0(e){return new Date(e.getFullYear(),0,1)}function w0(e){return new Date(e.getFullYear(),11,31)}function _0(e,t){return Ys(e,t[0])&&x0(e,t[1])}function E0(e){const t=new Date(e);return t instanceof Date&&!isNaN(t.getTime())}function Ys(e,t){return e.getTime()>t.getTime()}function S0(e,t){return Ys(Js(e),Js(t))}function x0(e,t){return e.getTime(){n.locale=e.locale[r]??r??n.locale}),n}const m_=["sm","md","lg","xl","xxl"],ki=Symbol.for("vuetify:display"),zl={mobileBreakpoint:"lg",thresholds:{xs:0,sm:600,md:960,lg:1280,xl:1920,xxl:2560}},D0=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:zl;return ht(zl,e)};function Wl(e){return $e&&!e?window.innerWidth:typeof e=="object"&&e.clientWidth||0}function Gl(e){return $e&&!e?window.innerHeight:typeof e=="object"&&e.clientHeight||0}function Kl(e){const t=$e&&!e?window.navigator.userAgent:"ssr";function n(m){return!!t.match(m)}const r=n(/android/i),s=n(/iphone|ipad|ipod/i),o=n(/cordova/i),i=n(/electron/i),a=n(/chrome/i),l=n(/edge/i),u=n(/firefox/i),c=n(/opera/i),f=n(/win/i),d=n(/mac/i),h=n(/linux/i);return{android:r,ios:s,cordova:o,electron:i,chrome:a,edge:l,firefox:u,opera:c,win:f,mac:d,linux:h,touch:Xp,ssr:t==="ssr"}}function N0(e,t){const{thresholds:n,mobileBreakpoint:r}=D0(e),s=Oe(Gl(t)),o=Oe(Kl(t)),i=Be({}),a=Oe(Wl(t));function l(){s.value=Gl(),a.value=Wl()}function u(){l(),o.value=Kl()}return Jt(()=>{const c=a.value=n.xxl,_=c?"xs":f?"sm":d?"md":h?"lg":m?"xl":"xxl",b=typeof r=="number"?r:n[r],y=a.value{window.removeEventListener("resize",l)},!0)),{...ea(i),update:u,ssr:!!t}}function B0(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{mobile:null},t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:gn();const n=Pe(ki);if(!n)throw new Error("Could not find Vuetify display injection");const r=M(()=>e.mobile?!0:typeof e.mobileBreakpoint=="number"?n.width.valuet?{[`${t}--mobile`]:r.value}:{});return{...n,displayClasses:s,mobile:r}}const V0=Symbol.for("vuetify:goto");function j0(){return{container:void 0,duration:300,layout:!1,offset:0,easing:"easeInOutCubic",patterns:qg}}function H0(e,t){return{rtl:t.isRtl,options:ht(j0(),e)}}const U0={collapse:"mdi-chevron-up",complete:"mdi-check",cancel:"mdi-close-circle",close:"mdi-close",delete:"mdi-close-circle",clear:"mdi-close-circle",success:"mdi-check-circle",info:"mdi-information",warning:"mdi-alert-circle",error:"mdi-close-circle",prev:"mdi-chevron-left",next:"mdi-chevron-right",checkboxOn:"mdi-checkbox-marked",checkboxOff:"mdi-checkbox-blank-outline",checkboxIndeterminate:"mdi-minus-box",delimiter:"mdi-circle",sortAsc:"mdi-arrow-up",sortDesc:"mdi-arrow-down",expand:"mdi-chevron-down",menu:"mdi-menu",subgroup:"mdi-menu-down",dropdown:"mdi-menu-down",radioOn:"mdi-radiobox-marked",radioOff:"mdi-radiobox-blank",edit:"mdi-pencil",ratingEmpty:"mdi-star-outline",ratingFull:"mdi-star",ratingHalf:"mdi-star-half-full",loading:"mdi-cached",first:"mdi-page-first",last:"mdi-page-last",unfold:"mdi-unfold-more-horizontal",file:"mdi-paperclip",plus:"mdi-plus",minus:"mdi-minus",calendar:"mdi-calendar",treeviewCollapse:"mdi-menu-down",treeviewExpand:"mdi-menu-right",eyeDropper:"mdi-eyedropper",upload:"mdi-cloud-upload",color:"mdi-palette",command:"mdi-apple-keyboard-command",ctrl:"mdi-apple-keyboard-control",space:"mdi-keyboard-space",shift:"mdi-apple-keyboard-shift",alt:"mdi-apple-keyboard-option",enter:"mdi-keyboard-return",arrowup:"mdi-arrow-up",arrowdown:"mdi-arrow-down",arrowleft:"mdi-arrow-left",arrowright:"mdi-arrow-right",backspace:"mdi-backspace",play:"mdi-play",pause:"mdi-pause",fullscreen:"mdi-fullscreen",fullscreenExit:"mdi-fullscreen-exit",volumeHigh:"mdi-volume-high",volumeMedium:"mdi-volume-medium",volumeLow:"mdi-volume-low",volumeOff:"mdi-volume-variant-off"},q0={component:e=>ts(Wf,{...e,class:"mdi"})},Zs=[String,Function,Object,Array],Ai=Symbol.for("vuetify:icons"),wo=me({icon:{type:Zs},tag:{type:[String,Object,Function],required:!0}},"icon"),Yl=bt()({name:"VComponentIcon",props:wo(),setup(e,t){let{slots:n}=t;return()=>{const r=e.icon;return J(e.tag,null,{default:()=>{var s;return[e.icon?J(r,null,null):(s=n.default)==null?void 0:s.call(n)]}})}}}),zf=rs({name:"VSvgIcon",inheritAttrs:!1,props:wo(),setup(e,t){let{attrs:n}=t;return()=>J(e.tag,Xe(n,{style:null}),{default:()=>[R("svg",{class:"v-icon__svg",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",role:"img","aria-hidden":"true"},[Array.isArray(e.icon)?e.icon.map(r=>Array.isArray(r)?R("path",{d:r[0],"fill-opacity":r[1]},null):R("path",{d:r},null)):R("path",{d:e.icon},null)])]})}});rs({name:"VLigatureIcon",props:wo(),setup(e){return()=>J(e.tag,null,{default:()=>[e.icon]})}});const Wf=rs({name:"VClassIcon",props:wo(),setup(e){return()=>J(e.tag,{class:ve(e.icon)},null)}});function z0(){return{svg:{component:zf},class:{component:Wf}}}function W0(e){const t=z0(),n=(e==null?void 0:e.defaultSet)??"mdi";return n==="mdi"&&!t.mdi&&(t.mdi=q0),ht({defaultSet:n,sets:t,aliases:{...U0,vuetify:["M8.2241 14.2009L12 21L22 3H14.4459L8.2241 14.2009Z",["M7.26303 12.4733L7.00113 12L2 3H12.5261C12.5261 3 12.5261 3 12.5261 3L7.26303 12.4733Z",.6]],"vuetify-outline":"svg:M7.26 12.47 12.53 3H2L7.26 12.47ZM14.45 3 8.22 14.2 12 21 22 3H14.45ZM18.6 5 12 16.88 10.51 14.2 15.62 5ZM7.26 8.35 5.4 5H9.13L7.26 8.35Z","vuetify-play":["m6.376 13.184-4.11-7.192C1.505 4.66 2.467 3 4.003 3h8.532l-.953 1.576-.006.01-.396.677c-.429.732-.214 1.507.194 2.015.404.503 1.092.878 1.869.806a3.72 3.72 0 0 1 1.005.022c.276.053.434.143.523.237.138.146.38.635-.25 2.09-.893 1.63-1.553 1.722-1.847 1.677-.213-.033-.468-.158-.756-.406a4.95 4.95 0 0 1-.8-.927c-.39-.564-1.04-.84-1.66-.846-.625-.006-1.316.27-1.693.921l-.478.826-.911 1.506Z",["M9.093 11.552c.046-.079.144-.15.32-.148a.53.53 0 0 1 .43.207c.285.414.636.847 1.046 1.2.405.35.914.662 1.516.754 1.334.205 2.502-.698 3.48-2.495l.014-.028.013-.03c.687-1.574.774-2.852-.005-3.675-.37-.391-.861-.586-1.333-.676a5.243 5.243 0 0 0-1.447-.044c-.173.016-.393-.073-.54-.257-.145-.18-.127-.316-.082-.392l.393-.672L14.287 3h5.71c1.536 0 2.499 1.659 1.737 2.992l-7.997 13.996c-.768 1.344-2.706 1.344-3.473 0l-3.037-5.314 1.377-2.278.004-.006.004-.007.481-.831Z",.6]]}},e)}const G0=e=>{const t=Pe(Ai);if(!t)throw new Error("Missing Vuetify Icons provide!");return{iconData:M(()=>{var l;const r=un(e);if(!r)return{component:Yl};let s=r;if(typeof s=="string"&&(s=s.trim(),s.startsWith("$")&&(s=(l=t.aliases)==null?void 0:l[s.slice(1)])),Array.isArray(s))return{component:zf,icon:s};if(typeof s!="string")return{component:Yl,icon:s};const o=Object.keys(t.sets).find(u=>typeof s=="string"&&s.startsWith(`${u}:`)),i=o?s.slice(o.length+1):s;return{component:t.sets[o??t.defaultSet].component,icon:i}})}},jr=Symbol.for("vuetify:theme"),yn=me({theme:String},"theme");function Jl(){return{defaultTheme:"light",prefix:"v-",variations:{colors:[],lighten:0,darken:0},themes:{light:{dark:!1,colors:{background:"#FFFFFF",surface:"#FFFFFF","surface-bright":"#FFFFFF","surface-light":"#EEEEEE","surface-variant":"#424242","on-surface-variant":"#EEEEEE",primary:"#1867C0","primary-darken-1":"#1F5592",secondary:"#48A9A6","secondary-darken-1":"#018786",error:"#B00020",info:"#2196F3",success:"#4CAF50",warning:"#FB8C00"},variables:{"border-color":"#000000","border-opacity":.12,"high-emphasis-opacity":.87,"medium-emphasis-opacity":.6,"disabled-opacity":.38,"idle-opacity":.04,"hover-opacity":.04,"focus-opacity":.12,"selected-opacity":.08,"activated-opacity":.12,"pressed-opacity":.12,"dragged-opacity":.08,"theme-kbd":"#EEEEEE","theme-on-kbd":"#000000","theme-code":"#F5F5F5","theme-on-code":"#000000"}},dark:{dark:!0,colors:{background:"#121212",surface:"#212121","surface-bright":"#ccbfd6","surface-light":"#424242","surface-variant":"#c8c8c8","on-surface-variant":"#000000",primary:"#2196F3","primary-darken-1":"#277CC1",secondary:"#54B6B2","secondary-darken-1":"#48A9A6",error:"#CF6679",info:"#2196F3",success:"#4CAF50",warning:"#FB8C00"},variables:{"border-color":"#FFFFFF","border-opacity":.12,"high-emphasis-opacity":1,"medium-emphasis-opacity":.7,"disabled-opacity":.5,"idle-opacity":.1,"hover-opacity":.04,"focus-opacity":.12,"selected-opacity":.08,"activated-opacity":.12,"pressed-opacity":.16,"dragged-opacity":.08,"theme-kbd":"#424242","theme-on-kbd":"#FFFFFF","theme-code":"#343434","theme-on-code":"#CCCCCC"}}},stylesheetId:"vuetify-theme-stylesheet",scoped:!1,unimportant:!1,utilities:!0}}function K0(){var r,s;let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Jl();const t=Jl();if(!e)return{...t,isDisabled:!0};const n={};for(const[o,i]of Object.entries(e.themes??{})){const a=i.dark||o==="dark"?(r=t.themes)==null?void 0:r.dark:(s=t.themes)==null?void 0:s.light;n[o]=ht(a,i)}return ht(t,{...e,themes:n})}function En(e,t,n,r){e.push(`${X0(t,r)} { -`,...n.map(s=>` ${s}; -`),`} -`)}function Zl(e,t){const n=e.dark?2:1,r=e.dark?1:2,s=[];for(const[o,i]of Object.entries(e.colors)){const a=Mt(i);s.push(`--${t}theme-${o}: ${a.r},${a.g},${a.b}`),o.startsWith("on-")||s.push(`--${t}theme-${o}-overlay-multiplier: ${Ng(i)>.18?n:r}`)}for(const[o,i]of Object.entries(e.variables)){const a=typeof i=="string"&&i.startsWith("#")?Mt(i):void 0,l=a?`${a.r}, ${a.g}, ${a.b}`:void 0;s.push(`--${t}${o}: ${l??i}`)}return s}function Y0(e,t,n){const r={};if(n)for(const s of["lighten","darken"]){const o=s==="lighten"?Ig:Dg;for(const i of Sf(n[s],1))r[`${e}-${s}-${i}`]=Fg(o(Mt(t),i))}return r}function J0(e,t){if(!t)return{};let n={};for(const r of t.colors){const s=e[r];s&&(n={...n,...Y0(r,s,t)})}return n}function Z0(e){const t={};for(const n of Object.keys(e)){if(n.startsWith("on-")||e[`on-${n}`])continue;const r=`on-${n}`,s=Mt(e[n]);t[r]=Mf(s)}return t}function X0(e,t){if(!t)return e;const n=`:where(${t})`;return e===":root"?n:`${n} ${e}`}function Q0(e,t,n){const r=ey(e,t);r&&(r.innerHTML=n)}function ey(e,t){if(!$e)return null;let n=document.getElementById(e);return n||(n=document.createElement("style"),n.id=e,n.type="text/css",t&&n.setAttribute("nonce",t),document.head.appendChild(n)),n}function ty(e){const t=K0(e),n=Oe(t.defaultTheme),r=fe(t.themes),s=Oe("light"),o=M({get(){return n.value==="system"?s.value:n.value},set(b){n.value=b}}),i=M(()=>{const b={};for(const[y,p]of Object.entries(r.value)){const T={...p.colors,...J0(p.colors,t.variations)};b[y]={...p,colors:{...T,...Z0(T)}}}return b}),a=ie(()=>i.value[o.value]),l=ie(()=>n.value==="system"),u=M(()=>{var T;const b=[],y=t.unimportant?"":" !important",p=t.scoped?t.prefix:"";(T=a.value)!=null&&T.dark&&En(b,":root",["color-scheme: dark"],t.scope),En(b,":root",Zl(a.value,t.prefix),t.scope);for(const[x,P]of Object.entries(i.value))En(b,`.${t.prefix}theme--${x}`,[`color-scheme: ${P.dark?"dark":"normal"}`,...Zl(P,t.prefix)],t.scope);if(t.utilities){const x=[],P=[],I=new Set(Object.values(i.value).flatMap(S=>Object.keys(S.colors)));for(const S of I)S.startsWith("on-")?En(P,`.${S}`,[`color: rgb(var(--${t.prefix}theme-${S}))${y}`],t.scope):(En(x,`.${p}bg-${S}`,[`--${t.prefix}theme-overlay-multiplier: var(--${t.prefix}theme-${S}-overlay-multiplier)`,`background-color: rgb(var(--${t.prefix}theme-${S}))${y}`,`color: rgb(var(--${t.prefix}theme-on-${S}))${y}`],t.scope),En(P,`.${p}text-${S}`,[`color: rgb(var(--${t.prefix}theme-${S}))${y}`],t.scope),En(P,`.${p}border-${S}`,[`--${t.prefix}border-color: var(--${t.prefix}theme-${S})`],t.scope));b.push(...x,...P)}return b.map((x,P)=>P===0?x:` ${x}`).join("")}),c=ie(()=>t.isDisabled?void 0:`${t.prefix}theme--${o.value}`),f=ie(()=>Object.keys(i.value));if(Qp){let b=function(){s.value=y.matches?"dark":"light"};const y=window.matchMedia("(prefers-color-scheme: dark)");b(),y.addEventListener("change",b,{passive:!0}),Ki()&&Qe(()=>{y.removeEventListener("change",b)})}function d(b){if(t.isDisabled)return;const y=b._context.provides.usehead;if(y){let p=function(){return{style:[{textContent:u.value,id:t.stylesheetId,nonce:t.cspNonce||!1}]}};if(y.push){const T=y.push(p);$e&&ye(u,()=>{T.patch(p)})}else $e?(y.addHeadObjs(ie(p)),Jt(()=>y.updateDOM())):y.addHeadObjs(p())}else{let p=function(){Q0(t.stylesheetId,t.cspNonce,u.value)};$e?ye(u,p,{immediate:!0}):p()}}function h(b){b!=="system"&&!f.value.includes(b)||(o.value=b)}function m(){let b=arguments.length>0&&arguments[0]!==void 0?arguments[0]:f.value;const y=b.indexOf(o.value),p=y===-1?0:(y+1)%b.length;h(b[p])}function w(){let b=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["light","dark"];m(b)}const _=new Proxy(o,{get(b,y){return Reflect.get(b,y)},set(b,y,p){return y==="value"&&xg(`theme.global.name.value = ${p}`,`theme.change('${p}')`),Reflect.set(b,y,p)}});return{install:d,change:h,cycle:m,toggle:w,isDisabled:t.isDisabled,isSystem:l,name:o,themes:r,current:a,computedThemes:i,prefix:t.prefix,themeClasses:c,styles:u,global:{name:_,current:a}}}function Bn(e){et("provideTheme");const t=Pe(jr,null);if(!t)throw new Error("Could not find Vuetify theme injection");const n=ie(()=>e.theme??t.name.value),r=ie(()=>t.themes.value[n.value]),s=ie(()=>t.isDisabled?void 0:`${t.prefix}theme--${n.value}`),o={...t,name:n,current:r,themeClasses:s};return _t(jr,o),o}function ny(){et("useTheme");const e=Pe(jr,null);if(!e)throw new Error("Could not find Vuetify theme injection");return e}function Gf(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"content";const n=_i(),r=fe();if($e){const s=new ResizeObserver(o=>{o.length&&(t==="content"?r.value=o[0].contentRect:r.value=o[0].target.getBoundingClientRect())});ar(()=>{s.disconnect()}),ye(()=>n.el,(o,i)=>{i&&(s.unobserve(i),r.value=void 0),o&&s.observe(o)},{flush:"post"})}return{resizeRef:n,contentRect:Zr(r)}}const Xs=Symbol.for("vuetify:layout"),ry=Symbol.for("vuetify:layout-item"),Xl=1e3,sy=me({overlaps:{type:Array,default:()=>[]},fullHeight:Boolean},"layout");function Kf(){const e=Pe(Xs);if(!e)throw new Error("[Vuetify] Could not find injected layout");return{getLayoutItem:e.getLayoutItem,mainRect:e.mainRect,mainStyles:e.mainStyles}}const oy=(e,t,n,r)=>{let s={top:0,left:0,right:0,bottom:0};const o=[{id:"",layer:{...s}}];for(const i of e){const a=t.get(i),l=n.get(i),u=r.get(i);if(!a||!l||!u)continue;const c={...s,[a.value]:parseInt(s[a.value],10)+(u.value?parseInt(l.value,10):0)};o.push({id:i,layer:c}),s=c}return o};function iy(e){const t=Pe(Xs,null),n=M(()=>t?t.rootZIndex.value-100:Xl),r=fe([]),s=Be(new Map),o=Be(new Map),i=Be(new Map),a=Be(new Map),l=Be(new Map),{resizeRef:u,contentRect:c}=Gf(),f=M(()=>{const P=new Map,I=e.overlaps??[];for(const S of I.filter(A=>A.includes(":"))){const[A,B]=S.split(":");if(!r.value.includes(A)||!r.value.includes(B))continue;const V=s.get(A),L=s.get(B),G=o.get(A),re=o.get(B);!V||!L||!G||!re||(P.set(B,{position:V.value,amount:parseInt(G.value,10)}),P.set(A,{position:L.value,amount:-parseInt(re.value,10)}))}return P}),d=M(()=>{const P=[...new Set([...i.values()].map(S=>S.value))].sort((S,A)=>S-A),I=[];for(const S of P){const A=r.value.filter(B=>{var V;return((V=i.get(B))==null?void 0:V.value)===S});I.push(...A)}return oy(I,s,o,a)}),h=M(()=>!Array.from(l.values()).some(P=>P.value)),m=M(()=>d.value[d.value.length-1].layer),w=ie(()=>({"--v-layout-left":pe(m.value.left),"--v-layout-right":pe(m.value.right),"--v-layout-top":pe(m.value.top),"--v-layout-bottom":pe(m.value.bottom),...h.value?void 0:{transition:"none"}})),_=M(()=>d.value.slice(1).map((P,I)=>{let{id:S}=P;const{layer:A}=d.value[I],B=o.get(S),V=s.get(S);return{id:S,...A,size:Number(B.value),position:V.value}})),b=P=>_.value.find(I=>I.id===P),y=et("createLayout"),p=Oe(!1);hn(()=>{p.value=!0}),_t(Xs,{register:(P,I)=>{let{id:S,order:A,position:B,layoutSize:V,elementSize:L,active:G,disableTransitions:re,absolute:Z}=I;i.set(S,A),s.set(S,B),o.set(S,V),a.set(S,G),re&&l.set(S,re);const ee=Gn(ry,y==null?void 0:y.vnode).indexOf(P);ee>-1?r.value.splice(ee,0,S):r.value.push(S);const ce=M(()=>_.value.findIndex(Re=>Re.id===S)),Ne=M(()=>n.value+d.value.length*2-ce.value*2),Ce=M(()=>{const Re=B.value==="left"||B.value==="right",je=B.value==="right",ct=B.value==="bottom",Tt=L.value??V.value,ze=Tt===0?"%":"px",C={[B.value]:0,zIndex:Ne.value,transform:`translate${Re?"X":"Y"}(${(G.value?0:-(Tt===0?100:Tt))*(je||ct?-1:1)}${ze})`,position:Z.value||n.value!==Xl?"absolute":"fixed",...h.value?void 0:{transition:"none"}};if(!p.value)return C;const N=_.value[ce.value],j=f.value.get(S);return j&&(N[j.position]+=j.amount),{...C,height:Re?`calc(100% - ${N.top}px - ${N.bottom}px)`:L.value?`${L.value}px`:void 0,left:je?void 0:`${N.left}px`,right:je?`${N.right}px`:void 0,top:B.value!=="bottom"?`${N.top}px`:void 0,bottom:B.value!=="top"?`${N.bottom}px`:void 0,width:Re?L.value?`${L.value}px`:void 0:`calc(100% - ${N.left}px - ${N.right}px)`}}),Le=M(()=>({zIndex:Ne.value-1}));return{layoutItemStyles:Ce,layoutItemScrimStyles:Le,zIndex:Ne}},unregister:P=>{i.delete(P),s.delete(P),o.delete(P),a.delete(P),l.delete(P),r.value=r.value.filter(I=>I!==P)},mainRect:m,mainStyles:w,getLayoutItem:b,items:_,layoutRect:c,rootZIndex:n});const T=ie(()=>["v-layout",{"v-layout--full-height":e.fullHeight}]),x=ie(()=>({zIndex:t?n.value:void 0,position:t?"relative":void 0,overflow:t?"hidden":void 0}));return{layoutClasses:T,layoutStyles:x,getLayoutItem:b,items:_,layoutRect:c,layoutRef:u}}function Yf(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{blueprint:t,...n}=e,r=ht(t,n),{aliases:s={},components:o={},directives:i={}}=r,a=Mn();return a.run(()=>{const l=Vg(r.defaults),u=N0(r.display,r.ssr),c=ty(r.theme),f=W0(r.icons),d=Zg(r.locale),h=M0(r.date,d),m=H0(r.goTo,d);function w(b){for(const p in i)b.directive(p,i[p]);for(const p in o)b.component(p,o[p]);for(const p in s)b.component(p,rs({...s[p],name:p,aliasName:s[p].name}));const y=Mn();if(y.run(()=>{c.install(b)}),b.onUnmount(()=>y.stop()),b.provide(rr,l),b.provide(ki,u),b.provide(jr,c),b.provide(Ai,f),b.provide(Ks,d),b.provide(L0,h.options),b.provide(ql,h.instance),b.provide(V0,m),$e&&r.ssr)if(b.$nuxt)b.$nuxt.hook("app:suspense:resolve",()=>{u.update()});else{const{mount:p}=b;b.mount=function(){const T=p(...arguments);return vt(()=>u.update()),b.mount=p,T}}b.mixin({computed:{$vuetify(){return Be({defaults:qn.call(this,rr),display:qn.call(this,ki),theme:qn.call(this,jr),icons:qn.call(this,Ai),locale:qn.call(this,Ks),date:qn.call(this,ql)})}}})}function _(){a.stop()}return{install:w,unmount:_,defaults:l,display:u,theme:c,icons:f,locale:d,date:h,goTo:m}})}const ay="3.9.3";Yf.version=ay;function qn(e){var r,s;const t=this.$,n=((r=t.parent)==null?void 0:r.provides)??((s=t.vnode.appContext)==null?void 0:s.provides);if(n&&e in n)return n[e]}function Jf(e,t){return function(){return e.apply(t,arguments)}}const{toString:ly}=Object.prototype,{getPrototypeOf:ma}=Object,{iterator:_o,toStringTag:Zf}=Symbol,Eo=(e=>t=>{const n=ly.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),Ct=e=>(e=e.toLowerCase(),t=>Eo(t)===e),So=e=>t=>typeof t===e,{isArray:lr}=Array,Hr=So("undefined");function is(e){return e!==null&&!Hr(e)&&e.constructor!==null&&!Hr(e.constructor)&&it(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const Xf=Ct("ArrayBuffer");function cy(e){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&Xf(e.buffer),t}const uy=So("string"),it=So("function"),Qf=So("number"),as=e=>e!==null&&typeof e=="object",fy=e=>e===!0||e===!1,As=e=>{if(Eo(e)!=="object")return!1;const t=ma(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Zf in e)&&!(_o in e)},dy=e=>{if(!as(e)||is(e))return!1;try{return Object.keys(e).length===0&&Object.getPrototypeOf(e)===Object.prototype}catch{return!1}},hy=Ct("Date"),my=Ct("File"),py=Ct("Blob"),gy=Ct("FileList"),yy=e=>as(e)&&it(e.pipe),vy=e=>{let t;return e&&(typeof FormData=="function"&&e instanceof FormData||it(e.append)&&((t=Eo(e))==="formdata"||t==="object"&&it(e.toString)&&e.toString()==="[object FormData]"))},by=Ct("URLSearchParams"),[wy,_y,Ey,Sy]=["ReadableStream","Request","Response","Headers"].map(Ct),xy=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function ls(e,t,{allOwnKeys:n=!1}={}){if(e===null||typeof e>"u")return;let r,s;if(typeof e!="object"&&(e=[e]),lr(e))for(r=0,s=e.length;r0;)if(s=n[r],t===s.toLowerCase())return s;return null}const Rn=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:globalThis,td=e=>!Hr(e)&&e!==Rn;function Ri(){const{caseless:e}=td(this)&&this||{},t={},n=(r,s)=>{const o=e&&ed(t,s)||s;As(t[o])&&As(r)?t[o]=Ri(t[o],r):As(r)?t[o]=Ri({},r):lr(r)?t[o]=r.slice():t[o]=r};for(let r=0,s=arguments.length;r(ls(t,(s,o)=>{n&&it(s)?e[o]=Jf(s,n):e[o]=s},{allOwnKeys:r}),e),Ty=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),ky=(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},Ay=(e,t,n,r)=>{let s,o,i;const a={};if(t=t||{},e==null)return t;do{for(s=Object.getOwnPropertyNames(e),o=s.length;o-- >0;)i=s[o],(!r||r(i,e,t))&&!a[i]&&(t[i]=e[i],a[i]=!0);e=n!==!1&&ma(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},Ry=(e,t,n)=>{e=String(e),(n===void 0||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return r!==-1&&r===n},Py=e=>{if(!e)return null;if(lr(e))return e;let t=e.length;if(!Qf(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},Oy=(e=>t=>e&&t instanceof e)(typeof Uint8Array<"u"&&ma(Uint8Array)),$y=(e,t)=>{const r=(e&&e[_o]).call(e);let s;for(;(s=r.next())&&!s.done;){const o=s.value;t.call(e,o[0],o[1])}},Fy=(e,t)=>{let n;const r=[];for(;(n=e.exec(t))!==null;)r.push(n);return r},Ly=Ct("HTMLFormElement"),My=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,r,s){return r.toUpperCase()+s}),Ql=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),Iy=Ct("RegExp"),nd=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};ls(n,(s,o)=>{let i;(i=t(s,o,e))!==!1&&(r[o]=i||s)}),Object.defineProperties(e,r)},Dy=e=>{nd(e,(t,n)=>{if(it(e)&&["arguments","caller","callee"].indexOf(n)!==-1)return!1;const r=e[n];if(it(r)){if(t.enumerable=!1,"writable"in t){t.writable=!1;return}t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},Ny=(e,t)=>{const n={},r=s=>{s.forEach(o=>{n[o]=!0})};return lr(e)?r(e):r(String(e).split(t)),n},By=()=>{},Vy=(e,t)=>e!=null&&Number.isFinite(e=+e)?e:t;function jy(e){return!!(e&&it(e.append)&&e[Zf]==="FormData"&&e[_o])}const Hy=e=>{const t=new Array(10),n=(r,s)=>{if(as(r)){if(t.indexOf(r)>=0)return;if(is(r))return r;if(!("toJSON"in r)){t[s]=r;const o=lr(r)?[]:{};return ls(r,(i,a)=>{const l=n(i,s+1);!Hr(l)&&(o[a]=l)}),t[s]=void 0,o}}return r};return n(e,0)},Uy=Ct("AsyncFunction"),qy=e=>e&&(as(e)||it(e))&&it(e.then)&&it(e.catch),rd=((e,t)=>e?setImmediate:t?((n,r)=>(Rn.addEventListener("message",({source:s,data:o})=>{s===Rn&&o===n&&r.length&&r.shift()()},!1),s=>{r.push(s),Rn.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",it(Rn.postMessage)),zy=typeof queueMicrotask<"u"?queueMicrotask.bind(Rn):typeof process<"u"&&process.nextTick||rd,Wy=e=>e!=null&&it(e[_o]),k={isArray:lr,isArrayBuffer:Xf,isBuffer:is,isFormData:vy,isArrayBufferView:cy,isString:uy,isNumber:Qf,isBoolean:fy,isObject:as,isPlainObject:As,isEmptyObject:dy,isReadableStream:wy,isRequest:_y,isResponse:Ey,isHeaders:Sy,isUndefined:Hr,isDate:hy,isFile:my,isBlob:py,isRegExp:Iy,isFunction:it,isStream:yy,isURLSearchParams:by,isTypedArray:Oy,isFileList:gy,forEach:ls,merge:Ri,extend:Cy,trim:xy,stripBOM:Ty,inherits:ky,toFlatObject:Ay,kindOf:Eo,kindOfTest:Ct,endsWith:Ry,toArray:Py,forEachEntry:$y,matchAll:Fy,isHTMLForm:Ly,hasOwnProperty:Ql,hasOwnProp:Ql,reduceDescriptors:nd,freezeMethods:Dy,toObjectSet:Ny,toCamelCase:My,noop:By,toFiniteNumber:Vy,findKey:ed,global:Rn,isContextDefined:td,isSpecCompliantForm:jy,toJSONObject:Hy,isAsyncFn:Uy,isThenable:qy,setImmediate:rd,asap:zy,isIterable:Wy};function ue(e,t,n,r,s){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),s&&(this.response=s,this.status=s.status?s.status:null)}k.inherits(ue,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:k.toJSONObject(this.config),code:this.code,status:this.status}}});const sd=ue.prototype,od={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(e=>{od[e]={value:e}});Object.defineProperties(ue,od);Object.defineProperty(sd,"isAxiosError",{value:!0});ue.from=(e,t,n,r,s,o)=>{const i=Object.create(sd);return k.toFlatObject(e,i,function(l){return l!==Error.prototype},a=>a!=="isAxiosError"),ue.call(i,e.message,t,n,r,s),i.cause=e,i.name=e.name,o&&Object.assign(i,o),i};const Gy=null;function Pi(e){return k.isPlainObject(e)||k.isArray(e)}function id(e){return k.endsWith(e,"[]")?e.slice(0,-2):e}function ec(e,t,n){return e?e.concat(t).map(function(s,o){return s=id(s),!n&&o?"["+s+"]":s}).join(n?".":""):t}function Ky(e){return k.isArray(e)&&!e.some(Pi)}const Yy=k.toFlatObject(k,{},null,function(t){return/^is[A-Z]/.test(t)});function xo(e,t,n){if(!k.isObject(e))throw new TypeError("target must be an object");t=t||new FormData,n=k.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(w,_){return!k.isUndefined(_[w])});const r=n.metaTokens,s=n.visitor||c,o=n.dots,i=n.indexes,l=(n.Blob||typeof Blob<"u"&&Blob)&&k.isSpecCompliantForm(t);if(!k.isFunction(s))throw new TypeError("visitor must be a function");function u(m){if(m===null)return"";if(k.isDate(m))return m.toISOString();if(k.isBoolean(m))return m.toString();if(!l&&k.isBlob(m))throw new ue("Blob is not supported. Use a Buffer instead.");return k.isArrayBuffer(m)||k.isTypedArray(m)?l&&typeof Blob=="function"?new Blob([m]):Buffer.from(m):m}function c(m,w,_){let b=m;if(m&&!_&&typeof m=="object"){if(k.endsWith(w,"{}"))w=r?w:w.slice(0,-2),m=JSON.stringify(m);else if(k.isArray(m)&&Ky(m)||(k.isFileList(m)||k.endsWith(w,"[]"))&&(b=k.toArray(m)))return w=id(w),b.forEach(function(p,T){!(k.isUndefined(p)||p===null)&&t.append(i===!0?ec([w],T,o):i===null?w:w+"[]",u(p))}),!1}return Pi(m)?!0:(t.append(ec(_,w,o),u(m)),!1)}const f=[],d=Object.assign(Yy,{defaultVisitor:c,convertValue:u,isVisitable:Pi});function h(m,w){if(!k.isUndefined(m)){if(f.indexOf(m)!==-1)throw Error("Circular reference detected in "+w.join("."));f.push(m),k.forEach(m,function(b,y){(!(k.isUndefined(b)||b===null)&&s.call(t,b,k.isString(y)?y.trim():y,w,d))===!0&&h(b,w?w.concat(y):[y])}),f.pop()}}if(!k.isObject(e))throw new TypeError("data must be an object");return h(e),t}function tc(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(r){return t[r]})}function pa(e,t){this._pairs=[],e&&xo(e,this,t)}const ad=pa.prototype;ad.append=function(t,n){this._pairs.push([t,n])};ad.toString=function(t){const n=t?function(r){return t.call(this,r,tc)}:tc;return this._pairs.map(function(s){return n(s[0])+"="+n(s[1])},"").join("&")};function Jy(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function ld(e,t,n){if(!t)return e;const r=n&&n.encode||Jy;k.isFunction(n)&&(n={serialize:n});const s=n&&n.serialize;let o;if(s?o=s(t,n):o=k.isURLSearchParams(t)?t.toString():new pa(t,n).toString(r),o){const i=e.indexOf("#");i!==-1&&(e=e.slice(0,i)),e+=(e.indexOf("?")===-1?"?":"&")+o}return e}class nc{constructor(){this.handlers=[]}use(t,n,r){return this.handlers.push({fulfilled:t,rejected:n,synchronous:r?r.synchronous:!1,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(t){this.handlers[t]&&(this.handlers[t]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(t){k.forEach(this.handlers,function(r){r!==null&&t(r)})}}const cd={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Zy=typeof URLSearchParams<"u"?URLSearchParams:pa,Xy=typeof FormData<"u"?FormData:null,Qy=typeof Blob<"u"?Blob:null,ev={isBrowser:!0,classes:{URLSearchParams:Zy,FormData:Xy,Blob:Qy},protocols:["http","https","file","blob","url","data"]},ga=typeof window<"u"&&typeof document<"u",Oi=typeof navigator=="object"&&navigator||void 0,tv=ga&&(!Oi||["ReactNative","NativeScript","NS"].indexOf(Oi.product)<0),nv=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",rv=ga&&window.location.href||"http://localhost",sv=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:ga,hasStandardBrowserEnv:tv,hasStandardBrowserWebWorkerEnv:nv,navigator:Oi,origin:rv},Symbol.toStringTag,{value:"Module"})),Ze={...sv,...ev};function ov(e,t){return xo(e,new Ze.classes.URLSearchParams,{visitor:function(n,r,s,o){return Ze.isNode&&k.isBuffer(n)?(this.append(r,n.toString("base64")),!1):o.defaultVisitor.apply(this,arguments)},...t})}function iv(e){return k.matchAll(/\w+|\[(\w*)]/g,e).map(t=>t[0]==="[]"?"":t[1]||t[0])}function av(e){const t={},n=Object.keys(e);let r;const s=n.length;let o;for(r=0;r=n.length;return i=!i&&k.isArray(s)?s.length:i,l?(k.hasOwnProp(s,i)?s[i]=[s[i],r]:s[i]=r,!a):((!s[i]||!k.isObject(s[i]))&&(s[i]=[]),t(n,r,s[i],o)&&k.isArray(s[i])&&(s[i]=av(s[i])),!a)}if(k.isFormData(e)&&k.isFunction(e.entries)){const n={};return k.forEachEntry(e,(r,s)=>{t(iv(r),s,n,0)}),n}return null}function lv(e,t,n){if(k.isString(e))try{return(t||JSON.parse)(e),k.trim(e)}catch(r){if(r.name!=="SyntaxError")throw r}return(n||JSON.stringify)(e)}const cs={transitional:cd,adapter:["xhr","http","fetch"],transformRequest:[function(t,n){const r=n.getContentType()||"",s=r.indexOf("application/json")>-1,o=k.isObject(t);if(o&&k.isHTMLForm(t)&&(t=new FormData(t)),k.isFormData(t))return s?JSON.stringify(ud(t)):t;if(k.isArrayBuffer(t)||k.isBuffer(t)||k.isStream(t)||k.isFile(t)||k.isBlob(t)||k.isReadableStream(t))return t;if(k.isArrayBufferView(t))return t.buffer;if(k.isURLSearchParams(t))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let a;if(o){if(r.indexOf("application/x-www-form-urlencoded")>-1)return ov(t,this.formSerializer).toString();if((a=k.isFileList(t))||r.indexOf("multipart/form-data")>-1){const l=this.env&&this.env.FormData;return xo(a?{"files[]":t}:t,l&&new l,this.formSerializer)}}return o||s?(n.setContentType("application/json",!1),lv(t)):t}],transformResponse:[function(t){const n=this.transitional||cs.transitional,r=n&&n.forcedJSONParsing,s=this.responseType==="json";if(k.isResponse(t)||k.isReadableStream(t))return t;if(t&&k.isString(t)&&(r&&!this.responseType||s)){const i=!(n&&n.silentJSONParsing)&&s;try{return JSON.parse(t)}catch(a){if(i)throw a.name==="SyntaxError"?ue.from(a,ue.ERR_BAD_RESPONSE,this,null,this.response):a}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:Ze.classes.FormData,Blob:Ze.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};k.forEach(["delete","get","head","post","put","patch"],e=>{cs.headers[e]={}});const cv=k.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),uv=e=>{const t={};let n,r,s;return e&&e.split(` -`).forEach(function(i){s=i.indexOf(":"),n=i.substring(0,s).trim().toLowerCase(),r=i.substring(s+1).trim(),!(!n||t[n]&&cv[n])&&(n==="set-cookie"?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)}),t},rc=Symbol("internals");function gr(e){return e&&String(e).trim().toLowerCase()}function Rs(e){return e===!1||e==null?e:k.isArray(e)?e.map(Rs):String(e)}function fv(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}const dv=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function Go(e,t,n,r,s){if(k.isFunction(r))return r.call(this,t,n);if(s&&(t=n),!!k.isString(t)){if(k.isString(r))return t.indexOf(r)!==-1;if(k.isRegExp(r))return r.test(t)}}function hv(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(t,n,r)=>n.toUpperCase()+r)}function mv(e,t){const n=k.toCamelCase(" "+t);["get","set","has"].forEach(r=>{Object.defineProperty(e,r+n,{value:function(s,o,i){return this[r].call(this,t,s,o,i)},configurable:!0})})}let at=class{constructor(t){t&&this.set(t)}set(t,n,r){const s=this;function o(a,l,u){const c=gr(l);if(!c)throw new Error("header name must be a non-empty string");const f=k.findKey(s,c);(!f||s[f]===void 0||u===!0||u===void 0&&s[f]!==!1)&&(s[f||l]=Rs(a))}const i=(a,l)=>k.forEach(a,(u,c)=>o(u,c,l));if(k.isPlainObject(t)||t instanceof this.constructor)i(t,n);else if(k.isString(t)&&(t=t.trim())&&!dv(t))i(uv(t),n);else if(k.isObject(t)&&k.isIterable(t)){let a={},l,u;for(const c of t){if(!k.isArray(c))throw TypeError("Object iterator must return a key-value pair");a[u=c[0]]=(l=a[u])?k.isArray(l)?[...l,c[1]]:[l,c[1]]:c[1]}i(a,n)}else t!=null&&o(n,t,r);return this}get(t,n){if(t=gr(t),t){const r=k.findKey(this,t);if(r){const s=this[r];if(!n)return s;if(n===!0)return fv(s);if(k.isFunction(n))return n.call(this,s,r);if(k.isRegExp(n))return n.exec(s);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,n){if(t=gr(t),t){const r=k.findKey(this,t);return!!(r&&this[r]!==void 0&&(!n||Go(this,this[r],r,n)))}return!1}delete(t,n){const r=this;let s=!1;function o(i){if(i=gr(i),i){const a=k.findKey(r,i);a&&(!n||Go(r,r[a],a,n))&&(delete r[a],s=!0)}}return k.isArray(t)?t.forEach(o):o(t),s}clear(t){const n=Object.keys(this);let r=n.length,s=!1;for(;r--;){const o=n[r];(!t||Go(this,this[o],o,t,!0))&&(delete this[o],s=!0)}return s}normalize(t){const n=this,r={};return k.forEach(this,(s,o)=>{const i=k.findKey(r,o);if(i){n[i]=Rs(s),delete n[o];return}const a=t?hv(o):String(o).trim();a!==o&&delete n[o],n[a]=Rs(s),r[a]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const n=Object.create(null);return k.forEach(this,(r,s)=>{r!=null&&r!==!1&&(n[s]=t&&k.isArray(r)?r.join(", "):r)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([t,n])=>t+": "+n).join(` -`)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...n){const r=new this(t);return n.forEach(s=>r.set(s)),r}static accessor(t){const r=(this[rc]=this[rc]={accessors:{}}).accessors,s=this.prototype;function o(i){const a=gr(i);r[a]||(mv(s,i),r[a]=!0)}return k.isArray(t)?t.forEach(o):o(t),this}};at.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);k.reduceDescriptors(at.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(r){this[n]=r}}});k.freezeMethods(at);function Ko(e,t){const n=this||cs,r=t||n,s=at.from(r.headers);let o=r.data;return k.forEach(e,function(a){o=a.call(n,o,s.normalize(),t?t.status:void 0)}),s.normalize(),o}function fd(e){return!!(e&&e.__CANCEL__)}function cr(e,t,n){ue.call(this,e??"canceled",ue.ERR_CANCELED,t,n),this.name="CanceledError"}k.inherits(cr,ue,{__CANCEL__:!0});function dd(e,t,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?e(n):t(new ue("Request failed with status code "+n.status,[ue.ERR_BAD_REQUEST,ue.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}function pv(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function gv(e,t){e=e||10;const n=new Array(e),r=new Array(e);let s=0,o=0,i;return t=t!==void 0?t:1e3,function(l){const u=Date.now(),c=r[o];i||(i=u),n[s]=l,r[s]=u;let f=o,d=0;for(;f!==s;)d+=n[f++],f=f%e;if(s=(s+1)%e,s===o&&(o=(o+1)%e),u-i{n=c,s=null,o&&(clearTimeout(o),o=null),e(...u)};return[(...u)=>{const c=Date.now(),f=c-n;f>=r?i(u,c):(s=u,o||(o=setTimeout(()=>{o=null,i(s)},r-f)))},()=>s&&i(s)]}const Qs=(e,t,n=3)=>{let r=0;const s=gv(50,250);return yv(o=>{const i=o.loaded,a=o.lengthComputable?o.total:void 0,l=i-r,u=s(l),c=i<=a;r=i;const f={loaded:i,total:a,progress:a?i/a:void 0,bytes:l,rate:u||void 0,estimated:u&&a&&c?(a-i)/u:void 0,event:o,lengthComputable:a!=null,[t?"download":"upload"]:!0};e(f)},n)},sc=(e,t)=>{const n=e!=null;return[r=>t[0]({lengthComputable:n,total:e,loaded:r}),t[1]]},oc=e=>(...t)=>k.asap(()=>e(...t)),vv=Ze.hasStandardBrowserEnv?((e,t)=>n=>(n=new URL(n,Ze.origin),e.protocol===n.protocol&&e.host===n.host&&(t||e.port===n.port)))(new URL(Ze.origin),Ze.navigator&&/(msie|trident)/i.test(Ze.navigator.userAgent)):()=>!0,bv=Ze.hasStandardBrowserEnv?{write(e,t,n,r,s,o){const i=[e+"="+encodeURIComponent(t)];k.isNumber(n)&&i.push("expires="+new Date(n).toGMTString()),k.isString(r)&&i.push("path="+r),k.isString(s)&&i.push("domain="+s),o===!0&&i.push("secure"),document.cookie=i.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function wv(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function _v(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function hd(e,t,n){let r=!wv(t);return e&&(r||n==!1)?_v(e,t):t}const ic=e=>e instanceof at?{...e}:e;function Nn(e,t){t=t||{};const n={};function r(u,c,f,d){return k.isPlainObject(u)&&k.isPlainObject(c)?k.merge.call({caseless:d},u,c):k.isPlainObject(c)?k.merge({},c):k.isArray(c)?c.slice():c}function s(u,c,f,d){if(k.isUndefined(c)){if(!k.isUndefined(u))return r(void 0,u,f,d)}else return r(u,c,f,d)}function o(u,c){if(!k.isUndefined(c))return r(void 0,c)}function i(u,c){if(k.isUndefined(c)){if(!k.isUndefined(u))return r(void 0,u)}else return r(void 0,c)}function a(u,c,f){if(f in t)return r(u,c);if(f in e)return r(void 0,u)}const l={url:o,method:o,data:o,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,withXSRFToken:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,responseEncoding:i,validateStatus:a,headers:(u,c,f)=>s(ic(u),ic(c),f,!0)};return k.forEach(Object.keys({...e,...t}),function(c){const f=l[c]||s,d=f(e[c],t[c],c);k.isUndefined(d)&&f!==a||(n[c]=d)}),n}const md=e=>{const t=Nn({},e);let{data:n,withXSRFToken:r,xsrfHeaderName:s,xsrfCookieName:o,headers:i,auth:a}=t;t.headers=i=at.from(i),t.url=ld(hd(t.baseURL,t.url,t.allowAbsoluteUrls),e.params,e.paramsSerializer),a&&i.set("Authorization","Basic "+btoa((a.username||"")+":"+(a.password?unescape(encodeURIComponent(a.password)):"")));let l;if(k.isFormData(n)){if(Ze.hasStandardBrowserEnv||Ze.hasStandardBrowserWebWorkerEnv)i.setContentType(void 0);else if((l=i.getContentType())!==!1){const[u,...c]=l?l.split(";").map(f=>f.trim()).filter(Boolean):[];i.setContentType([u||"multipart/form-data",...c].join("; "))}}if(Ze.hasStandardBrowserEnv&&(r&&k.isFunction(r)&&(r=r(t)),r||r!==!1&&vv(t.url))){const u=s&&o&&bv.read(o);u&&i.set(s,u)}return t},Ev=typeof XMLHttpRequest<"u",Sv=Ev&&function(e){return new Promise(function(n,r){const s=md(e);let o=s.data;const i=at.from(s.headers).normalize();let{responseType:a,onUploadProgress:l,onDownloadProgress:u}=s,c,f,d,h,m;function w(){h&&h(),m&&m(),s.cancelToken&&s.cancelToken.unsubscribe(c),s.signal&&s.signal.removeEventListener("abort",c)}let _=new XMLHttpRequest;_.open(s.method.toUpperCase(),s.url,!0),_.timeout=s.timeout;function b(){if(!_)return;const p=at.from("getAllResponseHeaders"in _&&_.getAllResponseHeaders()),x={data:!a||a==="text"||a==="json"?_.responseText:_.response,status:_.status,statusText:_.statusText,headers:p,config:e,request:_};dd(function(I){n(I),w()},function(I){r(I),w()},x),_=null}"onloadend"in _?_.onloadend=b:_.onreadystatechange=function(){!_||_.readyState!==4||_.status===0&&!(_.responseURL&&_.responseURL.indexOf("file:")===0)||setTimeout(b)},_.onabort=function(){_&&(r(new ue("Request aborted",ue.ECONNABORTED,e,_)),_=null)},_.onerror=function(){r(new ue("Network Error",ue.ERR_NETWORK,e,_)),_=null},_.ontimeout=function(){let T=s.timeout?"timeout of "+s.timeout+"ms exceeded":"timeout exceeded";const x=s.transitional||cd;s.timeoutErrorMessage&&(T=s.timeoutErrorMessage),r(new ue(T,x.clarifyTimeoutError?ue.ETIMEDOUT:ue.ECONNABORTED,e,_)),_=null},o===void 0&&i.setContentType(null),"setRequestHeader"in _&&k.forEach(i.toJSON(),function(T,x){_.setRequestHeader(x,T)}),k.isUndefined(s.withCredentials)||(_.withCredentials=!!s.withCredentials),a&&a!=="json"&&(_.responseType=s.responseType),u&&([d,m]=Qs(u,!0),_.addEventListener("progress",d)),l&&_.upload&&([f,h]=Qs(l),_.upload.addEventListener("progress",f),_.upload.addEventListener("loadend",h)),(s.cancelToken||s.signal)&&(c=p=>{_&&(r(!p||p.type?new cr(null,e,_):p),_.abort(),_=null)},s.cancelToken&&s.cancelToken.subscribe(c),s.signal&&(s.signal.aborted?c():s.signal.addEventListener("abort",c)));const y=pv(s.url);if(y&&Ze.protocols.indexOf(y)===-1){r(new ue("Unsupported protocol "+y+":",ue.ERR_BAD_REQUEST,e));return}_.send(o||null)})},xv=(e,t)=>{const{length:n}=e=e?e.filter(Boolean):[];if(t||n){let r=new AbortController,s;const o=function(u){if(!s){s=!0,a();const c=u instanceof Error?u:this.reason;r.abort(c instanceof ue?c:new cr(c instanceof Error?c.message:c))}};let i=t&&setTimeout(()=>{i=null,o(new ue(`timeout ${t} of ms exceeded`,ue.ETIMEDOUT))},t);const a=()=>{e&&(i&&clearTimeout(i),i=null,e.forEach(u=>{u.unsubscribe?u.unsubscribe(o):u.removeEventListener("abort",o)}),e=null)};e.forEach(u=>u.addEventListener("abort",o));const{signal:l}=r;return l.unsubscribe=()=>k.asap(a),l}},Cv=function*(e,t){let n=e.byteLength;if(n{const s=Tv(e,t);let o=0,i,a=l=>{i||(i=!0,r&&r(l))};return new ReadableStream({async pull(l){try{const{done:u,value:c}=await s.next();if(u){a(),l.close();return}let f=c.byteLength;if(n){let d=o+=f;n(d)}l.enqueue(new Uint8Array(c))}catch(u){throw a(u),u}},cancel(l){return a(l),s.return()}},{highWaterMark:2})},Co=typeof fetch=="function"&&typeof Request=="function"&&typeof Response=="function",pd=Co&&typeof ReadableStream=="function",Av=Co&&(typeof TextEncoder=="function"?(e=>t=>e.encode(t))(new TextEncoder):async e=>new Uint8Array(await new Response(e).arrayBuffer())),gd=(e,...t)=>{try{return!!e(...t)}catch{return!1}},Rv=pd&&gd(()=>{let e=!1;const t=new Request(Ze.origin,{body:new ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t}),lc=64*1024,$i=pd&&gd(()=>k.isReadableStream(new Response("").body)),eo={stream:$i&&(e=>e.body)};Co&&(e=>{["text","arrayBuffer","blob","formData","stream"].forEach(t=>{!eo[t]&&(eo[t]=k.isFunction(e[t])?n=>n[t]():(n,r)=>{throw new ue(`Response type '${t}' is not supported`,ue.ERR_NOT_SUPPORT,r)})})})(new Response);const Pv=async e=>{if(e==null)return 0;if(k.isBlob(e))return e.size;if(k.isSpecCompliantForm(e))return(await new Request(Ze.origin,{method:"POST",body:e}).arrayBuffer()).byteLength;if(k.isArrayBufferView(e)||k.isArrayBuffer(e))return e.byteLength;if(k.isURLSearchParams(e)&&(e=e+""),k.isString(e))return(await Av(e)).byteLength},Ov=async(e,t)=>{const n=k.toFiniteNumber(e.getContentLength());return n??Pv(t)},$v=Co&&(async e=>{let{url:t,method:n,data:r,signal:s,cancelToken:o,timeout:i,onDownloadProgress:a,onUploadProgress:l,responseType:u,headers:c,withCredentials:f="same-origin",fetchOptions:d}=md(e);u=u?(u+"").toLowerCase():"text";let h=xv([s,o&&o.toAbortSignal()],i),m;const w=h&&h.unsubscribe&&(()=>{h.unsubscribe()});let _;try{if(l&&Rv&&n!=="get"&&n!=="head"&&(_=await Ov(c,r))!==0){let x=new Request(t,{method:"POST",body:r,duplex:"half"}),P;if(k.isFormData(r)&&(P=x.headers.get("content-type"))&&c.setContentType(P),x.body){const[I,S]=sc(_,Qs(oc(l)));r=ac(x.body,lc,I,S)}}k.isString(f)||(f=f?"include":"omit");const b="credentials"in Request.prototype;m=new Request(t,{...d,signal:h,method:n.toUpperCase(),headers:c.normalize().toJSON(),body:r,duplex:"half",credentials:b?f:void 0});let y=await fetch(m,d);const p=$i&&(u==="stream"||u==="response");if($i&&(a||p&&w)){const x={};["status","statusText","headers"].forEach(A=>{x[A]=y[A]});const P=k.toFiniteNumber(y.headers.get("content-length")),[I,S]=a&&sc(P,Qs(oc(a),!0))||[];y=new Response(ac(y.body,lc,I,()=>{S&&S(),w&&w()}),x)}u=u||"text";let T=await eo[k.findKey(eo,u)||"text"](y,e);return!p&&w&&w(),await new Promise((x,P)=>{dd(x,P,{data:T,headers:at.from(y.headers),status:y.status,statusText:y.statusText,config:e,request:m})})}catch(b){throw w&&w(),b&&b.name==="TypeError"&&/Load failed|fetch/i.test(b.message)?Object.assign(new ue("Network Error",ue.ERR_NETWORK,e,m),{cause:b.cause||b}):ue.from(b,b&&b.code,e,m)}}),Fi={http:Gy,xhr:Sv,fetch:$v};k.forEach(Fi,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});const cc=e=>`- ${e}`,Fv=e=>k.isFunction(e)||e===null||e===!1,yd={getAdapter:e=>{e=k.isArray(e)?e:[e];const{length:t}=e;let n,r;const s={};for(let o=0;o`adapter ${a} `+(l===!1?"is not supported by the environment":"is not available in the build"));let i=t?o.length>1?`since : -`+o.map(cc).join(` -`):" "+cc(o[0]):"as no adapter specified";throw new ue("There is no suitable adapter to dispatch the request "+i,"ERR_NOT_SUPPORT")}return r},adapters:Fi};function Yo(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new cr(null,e)}function uc(e){return Yo(e),e.headers=at.from(e.headers),e.data=Ko.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),yd.getAdapter(e.adapter||cs.adapter)(e).then(function(r){return Yo(e),r.data=Ko.call(e,e.transformResponse,r),r.headers=at.from(r.headers),r},function(r){return fd(r)||(Yo(e),r&&r.response&&(r.response.data=Ko.call(e,e.transformResponse,r.response),r.response.headers=at.from(r.response.headers))),Promise.reject(r)})}const vd="1.11.0",To={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{To[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}});const fc={};To.transitional=function(t,n,r){function s(o,i){return"[Axios v"+vd+"] Transitional option '"+o+"'"+i+(r?". "+r:"")}return(o,i,a)=>{if(t===!1)throw new ue(s(i," has been removed"+(n?" in "+n:"")),ue.ERR_DEPRECATED);return n&&!fc[i]&&(fc[i]=!0,console.warn(s(i," has been deprecated since v"+n+" and will be removed in the near future"))),t?t(o,i,a):!0}};To.spelling=function(t){return(n,r)=>(console.warn(`${r} is likely a misspelling of ${t}`),!0)};function Lv(e,t,n){if(typeof e!="object")throw new ue("options must be an object",ue.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let s=r.length;for(;s-- >0;){const o=r[s],i=t[o];if(i){const a=e[o],l=a===void 0||i(a,o,e);if(l!==!0)throw new ue("option "+o+" must be "+l,ue.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new ue("Unknown option "+o,ue.ERR_BAD_OPTION)}}const Ps={assertOptions:Lv,validators:To},Ot=Ps.validators;let Ln=class{constructor(t){this.defaults=t||{},this.interceptors={request:new nc,response:new nc}}async request(t,n){try{return await this._request(t,n)}catch(r){if(r instanceof Error){let s={};Error.captureStackTrace?Error.captureStackTrace(s):s=new Error;const o=s.stack?s.stack.replace(/^.+\n/,""):"";try{r.stack?o&&!String(r.stack).endsWith(o.replace(/^.+\n.+\n/,""))&&(r.stack+=` -`+o):r.stack=o}catch{}}throw r}}_request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=Nn(this.defaults,n);const{transitional:r,paramsSerializer:s,headers:o}=n;r!==void 0&&Ps.assertOptions(r,{silentJSONParsing:Ot.transitional(Ot.boolean),forcedJSONParsing:Ot.transitional(Ot.boolean),clarifyTimeoutError:Ot.transitional(Ot.boolean)},!1),s!=null&&(k.isFunction(s)?n.paramsSerializer={serialize:s}:Ps.assertOptions(s,{encode:Ot.function,serialize:Ot.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),Ps.assertOptions(n,{baseUrl:Ot.spelling("baseURL"),withXsrfToken:Ot.spelling("withXSRFToken")},!0),n.method=(n.method||this.defaults.method||"get").toLowerCase();let i=o&&k.merge(o.common,o[n.method]);o&&k.forEach(["delete","get","head","post","put","patch","common"],m=>{delete o[m]}),n.headers=at.concat(i,o);const a=[];let l=!0;this.interceptors.request.forEach(function(w){typeof w.runWhen=="function"&&w.runWhen(n)===!1||(l=l&&w.synchronous,a.unshift(w.fulfilled,w.rejected))});const u=[];this.interceptors.response.forEach(function(w){u.push(w.fulfilled,w.rejected)});let c,f=0,d;if(!l){const m=[uc.bind(this),void 0];for(m.unshift(...a),m.push(...u),d=m.length,c=Promise.resolve(n);f{if(!r._listeners)return;let o=r._listeners.length;for(;o-- >0;)r._listeners[o](s);r._listeners=null}),this.promise.then=s=>{let o;const i=new Promise(a=>{r.subscribe(a),o=a}).then(s);return i.cancel=function(){r.unsubscribe(o)},i},t(function(o,i,a){r.reason||(r.reason=new cr(o,i,a),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const t=new AbortController,n=r=>{t.abort(r)};return this.subscribe(n),t.signal.unsubscribe=()=>this.unsubscribe(n),t.signal}static source(){let t;return{token:new bd(function(s){t=s}),cancel:t}}};function Iv(e){return function(n){return e.apply(null,n)}}function Dv(e){return k.isObject(e)&&e.isAxiosError===!0}const Li={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(Li).forEach(([e,t])=>{Li[t]=e});function wd(e){const t=new Ln(e),n=Jf(Ln.prototype.request,t);return k.extend(n,Ln.prototype,t,{allOwnKeys:!0}),k.extend(n,t,null,{allOwnKeys:!0}),n.create=function(s){return wd(Nn(e,s))},n}const Ie=wd(cs);Ie.Axios=Ln;Ie.CanceledError=cr;Ie.CancelToken=Mv;Ie.isCancel=fd;Ie.VERSION=vd;Ie.toFormData=xo;Ie.AxiosError=ue;Ie.Cancel=Ie.CanceledError;Ie.all=function(t){return Promise.all(t)};Ie.spread=Iv;Ie.isAxiosError=Dv;Ie.mergeConfig=Nn;Ie.AxiosHeaders=at;Ie.formToJSON=e=>ud(k.isHTMLForm(e)?new FormData(e):e);Ie.getAdapter=yd.getAdapter;Ie.HttpStatusCode=Li;Ie.default=Ie;const{Axios:y_,AxiosError:v_,CanceledError:b_,isCancel:w_,CancelToken:__,VERSION:E_,all:S_,Cancel:x_,isAxiosError:C_,spread:T_,toFormData:k_,AxiosHeaders:A_,HttpStatusCode:R_,formToJSON:P_,getAdapter:O_,mergeConfig:$_}=Ie,U=Ie.create({baseURL:"http://localhost:8080",timeout:1e4,headers:{"Content-Type":"application/json",Accept:"application/json"}});U.interceptors.request.use(e=>{const t=localStorage.getItem("token");return t&&(e.headers.Authorization=`Bearer ${t}`),e},e=>Promise.reject(e));U.interceptors.response.use(e=>e,async e=>{var t;return((t=e.response)==null?void 0:t.status)===401&&(localStorage.removeItem("token"),localStorage.removeItem("refreshToken"),localStorage.removeItem("user"),window.location.href="/login"),Promise.reject(e)});class lt{constructor(t){this.endpoint=t}async getAll(t={}){try{return(await U.get(this.endpoint,{params:t})).data}catch(n){throw this.handleError(n)}}async getById(t){try{return(await U.get(`${this.endpoint}/${t}`)).data}catch(n){throw this.handleError(n)}}async create(t){try{return(await U.post(this.endpoint,t)).data}catch(n){throw this.handleError(n)}}async update(t,n){try{return(await U.put(`${this.endpoint}/${t}`,n)).data}catch(r){throw this.handleError(r)}}async patch(t,n){try{return(await U.patch(`${this.endpoint}/${t}`,n)).data}catch(r){throw this.handleError(r)}}async delete(t){try{return(await U.delete(`${this.endpoint}/${t}`)).data}catch(n){throw this.handleError(n)}}async request(t,n="GET",r=null,s={}){try{const o=t.startsWith("/")?`${this.endpoint}${t}`:`${this.endpoint}/${t}`;let i;switch(n.toUpperCase()){case"GET":i=await U.get(o,s);break;case"POST":i=await U.post(o,r,s);break;case"PUT":i=await U.put(o,r,s);break;case"PATCH":i=await U.patch(o,r,s);break;case"DELETE":i=await U.delete(o,s);break;default:throw new Error(`Unsupported HTTP method: ${n}`)}return i.data}catch(o){throw this.handleError(o)}}handleError(t){if(t.response){const{status:n,data:r}=t.response;return{status:n,message:r.message||r.error||"An error occurred",details:r.details||null}}else return t.request?{status:0,message:"Network error - unable to reach server",details:null}:{status:0,message:t.message||"An unexpected error occurred",details:null}}}class Nv extends lt{constructor(){super("/auth")}async login(t){try{return(await U.post("/auth/signin",{email:t.email,password:t.password,type:"client"})).data}catch(n){throw this.handleError(n)}}async register(t){var n,r;try{const s={firstName:t.firstName,lastName:t.lastName,email:t.email,password:t.password,phone:t.phone};return(n=t.companyName)!=null&&n.trim()&&(s.companyName=t.companyName.trim()),t.employeesCount&&(s.employeesCount=t.employeesCount),(r=t.language)!=null&&r.trim()&&(s.language=t.language.trim().toUpperCase()),t.subscriptionPlanId&&(s.subscriptionPlanId=t.subscriptionPlanId),t.role&&(s.role=t.role),(await U.post("/auth/signup",s)).data}catch(s){throw this.handleError(s)}}async logout(){try{return(await U.post("/auth/logout")).data}catch(t){throw this.handleError(t)}}async refreshToken(t){try{return(await U.post("/auth/refresh",{refreshToken:t})).data}catch(n){throw this.handleError(n)}}async forgotPassword(t){try{return(await U.post("/auth/forgot-password",{email:t})).data}catch(n){throw this.handleError(n)}}async resetPassword(t,n){try{return(await U.post("/auth/reset-password",{token:t,password:n})).data}catch(r){throw this.handleError(r)}}async getCurrentUser(){try{return(await U.get("/users/me")).data}catch(t){throw this.handleError(t)}}}const Mi=async e=>{const t={isValid:!1,size:e.size,type:e.type,hasCorrectMimeType:!1,hasCorrectHeader:!1,errors:[]};try{if(t.hasCorrectMimeType=e.type==="application/pdf",t.hasCorrectMimeType||t.errors.push(`Incorrect MIME type: ${e.type}, expected: application/pdf`),e.size===0)return t.errors.push("PDF blob is empty (0 bytes)"),t;e.size<100&&t.errors.push(`PDF blob suspiciously small (${e.size} bytes)`);const n=await e.slice(0,10).arrayBuffer(),r=new Uint8Array(n),s=String.fromCharCode.apply(null,r);t.hasCorrectHeader=s.startsWith("%PDF-"),t.hasCorrectHeader||t.errors.push(`Invalid PDF header: ${s}, expected: %PDF-`),t.isValid=t.hasCorrectMimeType&&t.hasCorrectHeader&&t.size>0}catch(n){t.errors.push(`Validation error: ${n.message}`)}return t},Bv=async(e,t)=>{try{const n=await Mi(e);if(!n.isValid)throw console.error("PDF validation failed:",n.errors),new Error(`PDF is corrupted: ${n.errors.join(", ")}`);console.log("PDF validation passed:",n);const r=window.URL.createObjectURL(e);try{const s=document.createElement("a");return s.href=r,s.download=t,s.target="_blank",s.setAttribute("aria-label",`Download PDF: ${t}`),s.style.display="none",document.body.appendChild(s),s.click(),document.body.removeChild(s),console.log("PDF download initiated successfully"),!0}finally{setTimeout(()=>{window.URL.revokeObjectURL(r),console.log("Object URL cleaned up")},1e3)}}catch(n){throw console.error("Safe PDF download failed:",n),n}},Sn=(e,t)=>{console.group(`🔍 PDF Debug: ${e}`),t.blob&&console.log("📄 Blob Info:",{size:t.blob.size,type:t.blob.type}),t.response&&console.log("🌐 Response Info:",{status:t.response.status,contentType:t.response.headers.get("content-type"),contentLength:t.response.headers.get("content-length")}),t.validation&&console.log("✅ Validation:",t.validation),t.errors&&t.errors.length>0&&console.error("❌ Errors:",t.errors),console.groupEnd()},Vv=e=>{var s;const{workOrder:t,config:n}=e,r=jv({title:n.title||"Work Order Report",workOrderId:t.id||"WO-DEMO",workOrderTitle:t.title||"Sample Work Order",description:t.description||"This is a demonstration work order report generated without backend connection.",status:t.status||"In Progress",priority:t.priority||"Medium",assignedTo:((s=t.assignedTo)==null?void 0:s.name)||"Demo User",createdDate:new Date(t.createdAt||Date.now()).toLocaleDateString(),sections:n.sections||{}});return new Blob([r],{type:"application/pdf"})},jv=e=>{const t=h=>String(h||"").replace(/[()\\]/g,"\\$&").replace(/[\r\n]/g," "),n=t(e.title),r=t(e.workOrderId),s=t(e.workOrderTitle),o=t(e.status),i=t(e.priority),a=t(e.assignedTo),l=t(e.createdDate),u=t(e.description).substring(0,200),c=`BT -/F1 18 Tf -50 750 Td -(${n}) Tj -0 -30 Td -/F1 12 Tf -(Work Order ID: ${r}) Tj -0 -20 Td -(Title: ${s}) Tj -0 -20 Td -(Status: ${o}) Tj -0 -20 Td -(Priority: ${i}) Tj -0 -20 Td -(Assigned To: ${a}) Tj -0 -20 Td -(Created: ${l}) Tj -0 -40 Td -/F1 14 Tf -(Description:) Tj -0 -20 Td -/F1 12 Tf -(${u}) Tj -0 -40 Td -/F1 10 Tf -(Generated: ${new Date().toLocaleString()}) Tj -0 -20 Td -(Note: This is a demonstration PDF generated without backend connection.) Tj -ET`,f=c.length;return`%PDF-1.4 -1 0 obj -<< -/Type /Catalog -/Pages 2 0 R ->> -endobj - -2 0 obj -<< -/Type /Pages -/MediaBox [0 0 612 792] -/Count 1 -/Kids [3 0 R] ->> -endobj - -3 0 obj -<< -/Type /Page -/Parent 2 0 R -/Resources << - /Font << - /F1 4 0 R - >> ->> -/Contents 5 0 R ->> -endobj - -4 0 obj -<< -/Type /Font -/Subtype /Type1 -/BaseFont /Times-Roman ->> -endobj - -5 0 obj -<< -/Length ${f} ->> -stream -${c} -endstream -endobj - -xref -0 6 -0000000000 65535 f -0000000010 00000 n -0000000079 00000 n -0000000173 00000 n -0000000301 00000 n -0000000380 00000 n -trailer -<< -/Size 6 -/Root 1 0 R ->> -startxref -${800+f} -%%EOF`},dc=async e=>(console.log("🎭 Generating simple PDF (jsPDF not installed)"),Vv(e)),Hv=(e="WO-DEMO-001")=>({id:e,title:"HVAC System Maintenance",description:"Routine maintenance and inspection of the main HVAC system including filter replacement, duct cleaning, and performance testing. This work order includes checking all components for proper operation and identifying any potential issues.",status:"In Progress",priority:"High",category:"Preventive Maintenance",assignedTo:{id:1,name:"John Maintenance",email:"john.maintenance@demo.com"},asset:{id:1,name:"Main HVAC Unit",model:"ThermoMax 3000",serialNumber:"TM3000-2021-001"},location:{id:1,name:"Building A - Mechanical Room",address:"123 Demo Street"},createdAt:new Date("2024-01-15T10:00:00Z"),updatedAt:new Date,estimatedHours:4,actualHours:2.5,parts:[{name:"Air Filter",quantity:4,unitCost:25.99,totalCost:103.96},{name:"Lubricant",quantity:1,unitCost:15.5,totalCost:15.5}],tasks:[{name:"Replace air filters",completed:!0},{name:"Clean air ducts",completed:!0},{name:"Check refrigerant levels",completed:!1},{name:"Test system performance",completed:!1}],costTracking:{costs:[{id:1,description:"Additional cleaning supplies",amount:45.5,category:"Material"},{id:2,description:"Contractor labor - specialist",amount:150,category:"Labor"},{id:3,description:"Equipment rental",amount:75,category:"Other"}],budget:500},totalCost:389.96,budget:500}),Uv=(e=1500)=>new Promise(t=>setTimeout(t,e)),qv=async(e,t="pdf")=>{switch(await Uv(1e3),t.toLowerCase()){case"pdf":return dc(e);case"html":return zv(e);case"json":return Wv(e);default:return dc(e)}},zv=e=>{var s;const{workOrder:t,config:n}=e,r=` - - - - ${n.title||"Work Order Report"} - - - -
-

${n.title||"Work Order Report"}

-
- -
-
Work Order ID: ${t.id||"WO-DEMO"}
-
Title: ${t.title||"Sample Work Order"}
-
Status: ${t.status||"In Progress"}
-
Priority: ${t.priority||"Medium"}
-
Assigned To: ${((s=t.assignedTo)==null?void 0:s.name)||"Demo User"}
-
Created: ${new Date(t.createdAt||Date.now()).toLocaleDateString()}
-
- -
-

Description

-
- ${t.description||"This is a demonstration work order report generated without backend connection."} -
-
- - - -`;return new Blob([r],{type:"text/html"})},Wv=e=>{const t={report:{title:e.config.title||"Work Order Report",generatedAt:new Date().toISOString(),format:"json"},workOrder:e.workOrder,configuration:e.config,meta:{note:"This is a demonstration report generated without backend connection."}};return new Blob([JSON.stringify(t,null,2)],{type:"application/json"})};class Gv extends lt{constructor(){super("/work-orders")}async search(t={}){try{return(await U.post(`${this.endpoint}/search`,{criteria:{page:0,size:10,direction:"DESC",sortBy:"createdAt",...t}})).data}catch(n){throw this.handleError(n)}}async searchMini(t={}){try{return(await U.post(`${this.endpoint}/search/mini`,{criteria:t})).data}catch(n){throw this.handleError(n)}}async getCalendarEvents(t,n){try{return(await U.post(`${this.endpoint}/events`,{start:t.toISOString(),end:n.toISOString()})).data}catch(r){throw this.handleError(r)}}async getByAsset(t){try{return(await U.get(`${this.endpoint}/asset/${t}`)).data}catch(n){throw this.handleError(n)}}async getByLocation(t){try{return(await U.get(`${this.endpoint}/location/${t}`)).data}catch(n){throw this.handleError(n)}}async getByPart(t){try{return(await U.get(`${this.endpoint}/part/${t}`)).data}catch(n){throw this.handleError(n)}}async getUrgentCount(){try{return(await U.get(`${this.endpoint}/urgent`)).data}catch(t){throw this.handleError(t)}}async generateReport(t,n={}){try{Sn("Starting PDF generation",{workOrderId:t,options:n});try{const a=await U.get(`${this.endpoint}/report/${t}`,{responseType:"blob",headers:{Accept:"application/pdf","Content-Type":"application/json"},params:n,timeout:5e3,transformResponse:[l=>l]});if(a.data&&a.data.size>0){let l=new Blob([a.data],{type:"application/pdf"});const u=await Mi(l);if(u.isValid)return Sn("Real PDF generated successfully",{validation:u}),l}}catch(a){console.warn("Backend API not available, switching to mock generation:",a.message)}console.log("🎭 Using mock PDF generation (no backend connection)");let r;try{r=await this.getById(t)}catch{console.log("Using sample work order data for demo"),r=Hv(t)}const s={workOrder:r,config:{title:n.title||"Work Order Report",format:n.format||"pdf",sections:n.sections||{basicInfo:!0,description:!0,assignment:!0,tasks:!0,parts:!0,costs:!0},...n}},o=await qv(s,n.format||"pdf"),i=await Mi(o);if(Sn("Mock PDF generated",{validation:i,mock:!0}),!i.isValid)throw new Error("Mock PDF generation failed validation");return o}catch(r){throw console.error("PDF generation error:",r),Sn("PDF generation failed",{errors:[r.message]}),this.handleError(r)}}async downloadReport(t,n={},r=null){try{Sn("Starting PDF download",{workOrderId:t,options:n,filename:r});const s=await this.generateReport(t,n),o=r||`work-order-${t}-report-${Date.now()}.pdf`,i=await Bv(s,o);return Sn("PDF download completed",{success:i,filename:o}),i}catch(s){throw console.error("PDF download error:",s),Sn("PDF download failed",{errors:[s.message]}),this.handleError(s)}}async create(t){try{return(await U.post(this.endpoint,{title:t.title,description:t.description||"",priority:t.priority||"NONE",asset:t.asset||null,location:t.location||null,primaryUser:t.primaryUser||null,assignedTo:t.assignedTo||[],team:t.team||null,category:t.category||null,dueDate:t.dueDate||null,estimatedDuration:t.estimatedDuration||null,requiredSignature:t.requiredSignature||!1,tasks:t.tasks||[],files:t.files||[],image:t.image||null})).data}catch(n){throw this.handleError(n)}}async changeStatus(t,n,r="",s=null){try{return(await U.patch(`${this.endpoint}/${t}/change-status`,{status:n,feedback:r,signature:s})).data}catch(o){throw this.handleError(o)}}async addFiles(t,n){try{return(await U.patch(`${this.endpoint}/files/${t}/add`,{files:n})).data}catch(r){throw this.handleError(r)}}async removeFile(t,n){try{return(await U.delete(`${this.endpoint}/files/${t}/${n}/remove`)).data}catch(r){throw this.handleError(r)}}async getWorkOrdersByStatus(t){return this.search({filterFields:[{field:"status",operation:"EQUAL",values:[t]}]})}async getWorkOrdersByPriority(t){return this.search({filterFields:[{field:"priority",operation:"EQUAL",values:[t]}]})}async getWorkOrdersByAssignee(t){return this.search({filterFields:[{field:"assignedTo",operation:"EQUAL",values:[t]}]})}async assignWorkOrder(t,n){return this.update(t,{assignedTo:[{id:n}]})}async updateStatus(t,n,r=""){return this.changeStatus(t,n,r)}}class Kv extends lt{constructor(){super("/assets")}async getAssetsByLocation(t){try{return(await U.get(`${this.endpoint}`,{params:{locationId:t}})).data}catch(n){throw this.handleError(n)}}async getAssetsByCategory(t){try{return(await U.get(`${this.endpoint}`,{params:{categoryId:t}})).data}catch(n){throw this.handleError(n)}}async getAssetHistory(t){try{return(await U.get(`${this.endpoint}/${t}/history`)).data}catch(n){throw this.handleError(n)}}async getAssetWorkOrders(t){try{return(await U.get(`${this.endpoint}/${t}/work-orders`)).data}catch(n){throw this.handleError(n)}}async updateAssetStatus(t,n){try{return(await U.patch(`${this.endpoint}/${t}/status`,{status:n})).data}catch(r){throw this.handleError(r)}}async addAssetReading(t,n){try{return(await U.post(`${this.endpoint}/${t}/readings`,{meter:n.meter,value:n.value,unit:n.unit,readingDate:n.readingDate})).data}catch(r){throw this.handleError(r)}}async getAssetReadings(t){try{return(await U.get(`${this.endpoint}/${t}/readings`)).data}catch(n){throw this.handleError(n)}}async addAssetFile(t,n){try{const r=new FormData;return r.append("file",n.file),r.append("name",n.name),r.append("description",n.description||""),(await U.post(`${this.endpoint}/${t}/files`,r,{headers:{"Content-Type":"multipart/form-data"}})).data}catch(r){throw this.handleError(r)}}async getAssetFiles(t){try{return(await U.get(`${this.endpoint}/${t}/files`)).data}catch(n){throw this.handleError(n)}}}class Yv extends lt{constructor(){super("/users")}async searchUsers(t={}){try{const n={criteria:{filterFields:t.filterFields||[],searchFields:t.searchFields||["firstName","lastName","email","phone","jobTitle"],searchValue:t.searchValue||"",page:t.page||0,size:t.size||10,direction:t.direction||"ASC",sortBy:t.sortBy||"lastName"}};return(await U.post(`${this.endpoint}/search`,n)).data}catch(n){throw this.handleError(n)}}async getUsersMini(){try{return(await U.get(`${this.endpoint}/mini`)).data}catch(t){throw this.handleError(t)}}async getDisabledUsers(){try{return(await U.get(`${this.endpoint}/mini/disabled`)).data}catch(t){throw this.handleError(t)}}async getUsersByRole(t){try{return(await U.get(`${this.endpoint}`,{params:{role:t}})).data}catch(n){throw this.handleError(n)}}async updateUserRole(t,n){try{return(await U.patch(`${this.endpoint}/${t}/role`,{role:n})).data}catch(r){throw this.handleError(r)}}async toggleUserStatus(t){try{return(await U.patch(`${this.endpoint}/${t}/disable`)).data}catch(n){throw this.handleError(n)}}async updateUserStatus(t,n){try{return(await U.patch(`${this.endpoint}/${t}/status`,{enabled:n})).data}catch(r){throw this.handleError(r)}}async inviteUsers(t,n,r=""){try{return(await U.post(`${this.endpoint}/invite`,{emails:t,role:n,message:r})).data}catch(s){throw this.handleError(s)}}async getUserTeams(t){try{return(await U.get(`${this.endpoint}/${t}/teams`)).data}catch(n){throw this.handleError(n)}}async addUserToTeam(t,n){try{return(await U.post(`${this.endpoint}/${t}/teams`,{teamId:n})).data}catch(r){throw this.handleError(r)}}async removeUserFromTeam(t,n){try{return(await U.delete(`${this.endpoint}/${t}/teams/${n}`)).data}catch(r){throw this.handleError(r)}}async updateProfile(t,n){try{return(await U.patch(`${this.endpoint}/${t}`,{firstName:n.firstName,lastName:n.lastName,email:n.email,phone:n.phone,jobTitle:n.jobTitle,rate:n.rate,image:n.image})).data}catch(r){throw this.handleError(r)}}async changePassword(t,n){try{return(await U.patch(`${this.endpoint}/${t}/password`,{currentPassword:n.currentPassword,newPassword:n.newPassword})).data}catch(r){throw this.handleError(r)}}}class Jv extends lt{constructor(){super("/files")}async upload(t,n=null){try{const r=new FormData;if(t instanceof FileList)for(let o=0;o{r.append("files",o)}):r.append("files",t);return n&&r.append("folder",n),(await U.post(`${this.endpoint}/upload`,r,{headers:{"Content-Type":"multipart/form-data"}})).data}catch(r){throw this.handleError(r)}}async search(t={}){try{return(await U.post(`${this.endpoint}/search`,{criteria:{page:0,size:10,direction:"DESC",sortBy:"createdAt",...t}})).data}catch(n){throw this.handleError(n)}}async updateMetadata(t,n){try{return(await U.patch(`${this.endpoint}/${t}`,{name:n.name,description:n.description})).data}catch(r){throw this.handleError(r)}}getDownloadUrl(t){return`${U.defaults.baseURL}${this.endpoint}/${t}`}async download(t){try{return(await U.get(`${this.endpoint}/${t}`,{responseType:"blob"})).data}catch(n){throw this.handleError(n)}}}class Zv extends lt{constructor(){super("/locations")}async searchLocations(t={}){var n;try{const r={criteria:{filterFields:t.filterFields||[],searchFields:t.searchFields||["name","description","address"],searchValue:t.searchValue||"",page:t.page||0,size:t.size||10,direction:t.direction||"ASC",sortBy:t.sortBy||"name"}};return(await U.post(`${this.endpoint}/search`,r)).data}catch(r){if((n=r.message)!=null&&n.includes("Network error")||r.code==="ECONNREFUSED")return this.getMockSearchResults(t);throw this.handleError(r)}}async getAll(){try{return(await U.get(`${this.endpoint}`)).data}catch(t){throw this.handleError(t)}}async getLocationsMini(){var t;try{return(await U.get(`${this.endpoint}/mini`)).data}catch(n){if((t=n.message)!=null&&t.includes("Network error")||n.code==="ECONNREFUSED")return this.getMockMiniLocations();throw this.handleError(n)}}async getChildren(t){try{return(await U.get(`${this.endpoint}/children/${t}`)).data}catch(n){throw this.handleError(n)}}async create(t){try{return(await U.post(`${this.endpoint}`,{name:t.name,description:t.description,address:t.address,longitude:t.longitude,latitude:t.latitude,parentLocation:t.parentLocation,files:t.files,image:t.image,workers:t.workers,teams:t.teams,customers:t.customers,vendors:t.vendors})).data}catch(n){throw this.handleError(n)}}async update(t,n){try{return(await U.patch(`${this.endpoint}/${t}`,{name:n.name,description:n.description,address:n.address,longitude:n.longitude,latitude:n.latitude,parentLocation:n.parentLocation,files:n.files,image:n.image,workers:n.workers,teams:n.teams,customers:n.customers,vendors:n.vendors})).data}catch(r){throw this.handleError(r)}}async delete(t){try{return(await U.delete(`${this.endpoint}/${t}`)).data}catch(n){throw this.handleError(n)}}async getById(t){try{return(await U.get(`${this.endpoint}/${t}`)).data}catch(n){throw this.handleError(n)}}async search(t={}){return this.searchLocations(t)}async getMini(){return this.getLocationsMini()}getMockSearchResults(t={}){const n=[{id:1,name:"Main Building",description:"Primary office building with administration",type:"building",status:"active",address:"123 Main St, City, State 12345",latitude:40.7128,longitude:-74.006,parentLocation:null,assetsCount:15,workOrdersCount:8,teams:[{id:1,name:"Facilities Team"}],workers:[{id:1,firstName:"John",lastName:"Doe"},{id:2,firstName:"Jane",lastName:"Smith"}]},{id:2,name:"Floor 1",description:"Ground floor with reception and meeting rooms",type:"floor",status:"active",address:"123 Main St, Floor 1, City, State 12345",latitude:null,longitude:null,parentLocation:{id:1,name:"Main Building"},assetsCount:8,workOrdersCount:3,teams:[{id:2,name:"Maintenance Team"}],workers:[{id:3,firstName:"Mike",lastName:"Johnson"}]},{id:3,name:"Conference Room A",description:"Large conference room with AV equipment",type:"room",status:"active",address:null,latitude:null,longitude:null,parentLocation:{id:2,name:"Floor 1"},assetsCount:5,workOrdersCount:1,teams:[],workers:[]},{id:4,name:"Warehouse",description:"Storage and inventory warehouse",type:"building",status:"active",address:"456 Storage Ave, City, State 12345",latitude:40.7589,longitude:-73.9851,parentLocation:null,assetsCount:25,workOrdersCount:12,teams:[{id:3,name:"Security Team"}],workers:[{id:4,firstName:"Sarah",lastName:"Wilson"}]},{id:5,name:"Server Room",description:"IT infrastructure and server equipment",type:"equipment_space",status:"active",address:null,latitude:null,longitude:null,parentLocation:{id:2,name:"Floor 1"},assetsCount:12,workOrdersCount:2,teams:[{id:1,name:"Facilities Team"}],workers:[]}];let r=n;if(t.searchValue){const u=t.searchValue.toLowerCase();r=n.filter(c=>{var f,d;return c.name.toLowerCase().includes(u)||((f=c.description)==null?void 0:f.toLowerCase().includes(u))||((d=c.address)==null?void 0:d.toLowerCase().includes(u))})}const s=t.page||0,o=t.size||10,i=s*o,a=i+o;return{content:r.slice(i,a),totalElements:r.length,totalPages:Math.ceil(r.length/o),currentPage:s,pageSize:o,first:s===0,last:s>=Math.ceil(r.length/o)-1}}getMockMiniLocations(){return[{id:1,name:"Main Building"},{id:2,name:"Floor 1"},{id:4,name:"Warehouse"}]}}class Xv extends lt{constructor(){super("/teams")}async search(t={}){try{const n={criteria:{filterFields:t.filterFields||[],searchFields:t.searchFields||["name","description"],searchValue:t.searchValue||"",page:t.page||0,size:t.size||10,direction:t.direction||"ASC",sortBy:t.sortBy||"name"}};return(await U.post(`${this.endpoint}/search`,n)).data}catch(n){throw this.handleError(n)}}async getMini(){try{return(await U.get(`${this.endpoint}/mini`)).data}catch(t){throw this.handleError(t)}}async create(t){try{return(await U.post(this.endpoint,{name:t.name,description:t.description||"",users:t.users||[]})).data}catch(n){throw this.handleError(n)}}async update(t,n){try{return(await U.patch(`${this.endpoint}/${t}`,{name:n.name,description:n.description,users:n.users})).data}catch(r){throw this.handleError(r)}}async delete(t){try{return(await U.delete(`${this.endpoint}/${t}`)).data}catch(n){throw this.handleError(n)}}async addUserToTeam(t,n){try{const r=await this.getById(t),s=r.users||[];if(s.some(a=>a.id===n))throw new Error("User is already a member of this team");const i=[...s,{id:n}];return await this.update(t,{...r,users:i})}catch(r){throw this.handleError(r)}}async removeUserFromTeam(t,n){try{const r=await this.getById(t),o=(r.users||[]).filter(i=>i.id!==n);return await this.update(t,{...r,users:o})}catch(r){throw this.handleError(r)}}async updateTeamMembership(t,n){try{const r=await this.getById(t),s=n.map(o=>({id:o}));return await this.update(t,{...r,users:s})}catch(r){throw this.handleError(r)}}}class Qv extends lt{constructor(){super("/parts")}async search(t={}){return await this.request("/search","POST",{criteria:{page:0,size:100,direction:"ASC",sortBy:"partNumber",...t}})}async getLowStock(t=10){return await this.request("/low-stock","GET",null,{params:{threshold:t}})}async checkAvailability(t,n){return await this.request(`/${t}/availability`,"GET",null,{params:{quantity:n}})}async reserveParts(t,n){return await this.request("/reserve","POST",{workOrderId:t,parts:n})}async releaseParts(t){return await this.request(`/reserve/${t}`,"DELETE")}async updateInventory(t,n,r="Manual adjustment"){return await this.request(`/${t}/inventory`,"POST",{quantity:n,reason:r})}async getHistory(t){return await this.request(`/${t}/history`,"GET")}async getByLocation(t){return await this.request(`/location/${t}`,"GET")}async getByCategory(t){return await this.request(`/category/${t}`,"GET")}}class eb extends lt{constructor(){super("/time-entries")}async getByWorkOrderId(t){return this.request(`/work-order/${t}`,"GET")}async create(t){return this.request("/","POST",t)}async update(t,n){return this.request(`/${t}`,"PUT",n)}async delete(t){return await this.request(`/${t}`,"DELETE"),!0}async getByUserId(t,n={}){const r=new URLSearchParams;n.startDate&&r.append("startDate",n.startDate),n.endDate&&r.append("endDate",n.endDate),n.workOrderId&&r.append("workOrderId",n.workOrderId);const s=r.toString(),o=`/user/${t}${s?`?${s}`:""}`;return this.request(o,"GET")}async getSummary(t){return this.request(`/work-order/${t}/summary`,"GET")}async bulkCreate(t){return this.request("/bulk","POST",{timeEntries:t})}async startTimer(t){return this.request("/timer/start","POST",t)}async stopTimer(t,n={}){return this.request(`/timer/${t}/stop`,"POST",n)}async getActiveTimers(t){return this.request(`/timer/active/${t}`,"GET")}}class tb extends lt{constructor(){super("/digital-signatures")}async getByWorkOrderId(t){return this.request(`/work-order/${t}`,"GET")}async create(t){return this.request("/","POST",t)}async update(t,n){return this.request(`/${t}`,"PUT",n)}async delete(t){return await this.request(`/${t}`,"DELETE"),!0}async getHistory(t){return this.request(`/work-order/${t}/history`,"GET")}async validate(t){return this.request(`/${t}/validate`,"POST")}async export(t,n="png"){return this.request(`/${t}/export?format=${n}`,"GET",null,{responseType:"blob"})}async bulkExport(t,n="pdf"){return this.request("/bulk-export","POST",{signatureIds:t,format:n},{responseType:"blob"})}async getTemplates(){return this.request("/templates","GET")}async createFromTemplate(t,n){return this.request(`/templates/${t}/create`,"POST",n)}async verifyIntegrity(t){return this.request(`/${t}/verify-integrity`,"GET")}async getAuditTrail(t){return this.request(`/${t}/audit-trail`,"GET")}async archive(t,n={}){return this.request(`/${t}/archive`,"POST",n)}async getIpGeolocation(t){return this.request(`/ip-geolocation?ip=${encodeURIComponent(t)}`,"GET")}}class nb extends lt{constructor(){super("/audio-recordings")}async getByWorkOrderId(t){return this.request(`/work-order/${t}`,"GET")}async upload(t){const n=new FormData;return t.audioBlob&&n.append("audio",t.audioBlob,t.filename||"recording.webm"),Object.keys(t).forEach(r=>{r!=="audioBlob"&&t[r]!==void 0&&n.append(r,typeof t[r]=="object"?JSON.stringify(t[r]):t[r])}),this.request("/","POST",n,{headers:{"Content-Type":"multipart/form-data"}})}async update(t,n){return this.request(`/${t}`,"PUT",n)}async delete(t){return await this.request(`/${t}`,"DELETE"),!0}async startRecordingSession(t){return this.request("/sessions/start","POST",t)}async stopRecordingSession(t,n){return this.request(`/sessions/${t}/stop`,"POST",n)}async getActiveSessions(t){return this.request(`/sessions/active/${t}`,"GET")}async transcribe(t,n={}){return this.request(`/${t}/transcribe`,"POST",n)}async getTranscriptionStatus(t){return this.request(`/${t}/transcription/status`,"GET")}async updateTranscription(t,n){return this.request(`/${t}/transcription`,"PUT",n)}async generateWaveform(t){return this.request(`/${t}/waveform`,"POST")}async getAudioAnalysis(t){return this.request(`/${t}/analysis`,"GET")}async convertFormat(t,n){return this.request(`/${t}/convert?format=${n}`,"GET",null,{responseType:"blob"})}async bulkOperation(t,n,r={}){return this.request("/bulk","POST",{recordingIds:t,operation:n,options:r})}async getStatistics(t){return this.request(`/work-order/${t}/statistics`,"GET")}async searchByContent(t,n={}){const r=new URLSearchParams({q:t,...n});return this.request(`/search?${r.toString()}`,"GET")}async getSupportedFormats(){return this.request("/formats","GET")}async validateAudioFile(t){const n=new FormData;return n.append("audio",t),this.request("/validate","POST",n,{headers:{"Content-Type":"multipart/form-data"}})}async getTranscriptionConfig(){return this.request("/transcription/config","GET")}}class ur extends lt{constructor(t="work-order-categories"){super(`/${t}`),this.categoryType=t}async getAll(){try{return(await U.get(this.endpoint)).data}catch(t){throw this.handleError(t)}}async getById(t){try{return(await U.get(`${this.endpoint}/${t}`)).data}catch(n){throw this.handleError(n)}}async create(t){try{return(await U.post(this.endpoint,{name:t.name,description:t.description||"",color:t.color||"",icon:t.icon||"",isActive:t.isActive!==void 0?t.isActive:!0,sortOrder:t.sortOrder||0})).data}catch(n){throw this.handleError(n)}}async update(t,n){try{return(await U.patch(`${this.endpoint}/${t}`,{name:n.name,description:n.description,color:n.color,icon:n.icon,isActive:n.isActive,sortOrder:n.sortOrder})).data}catch(r){throw this.handleError(r)}}async delete(t){try{await U.delete(`${this.endpoint}/${t}`)}catch(n){throw this.handleError(n)}}async getByFilters(t={}){try{const n=new URLSearchParams;t.isActive!==void 0&&n.append("isActive",t.isActive),t.search&&n.append("search",t.search),t.sortBy&&n.append("sortBy",t.sortBy),t.sortOrder&&n.append("sortOrder",t.sortOrder);const r=n.toString()?`${this.endpoint}?${n.toString()}`:this.endpoint;return(await U.get(r)).data}catch(n){throw this.handleError(n)}}async updateSortOrders(t){try{return(await U.patch(`${this.endpoint}/bulk-sort`,{categories:t.map(r=>({id:r.id,sortOrder:r.sortOrder}))})).data}catch(n){throw this.handleError(n)}}}const F_=new ur("work-order-categories"),L_=new ur("asset-categories"),M_=new ur("part-categories"),I_=new ur("cost-categories"),D_=new ur("meter-categories"),N_=new ur("purchase-order-categories");class _d extends lt{constructor(){super("/api/requests")}async search(t){return this.request("/search","POST",t)}async getByStatus(t,n={}){return this.request(`/status/${t}`,"GET",null,{params:n})}async getPendingCount(){return this.request("/pending/count","GET")}async getMyRequests(t={}){return this.request("/my-requests","GET",null,{params:t})}async getAssignedRequests(t={}){return this.request("/assigned","GET",null,{params:t})}async approve(t,n){return this.request(`/${t}/approve`,"PATCH",n)}async reject(t,n){return this.request(`/${t}/reject`,"PATCH",n)}async cancel(t,n){return this.request(`/${t}/cancel`,"PATCH",n)}async assign(t,n){return this.request(`/${t}/assign`,"PATCH",n)}async updatePriority(t,n){return this.request(`/${t}/priority`,"PATCH",n)}async addComment(t,n){return this.request(`/${t}/comments`,"POST",n)}async uploadAttachment(t,n){return this.request(`/${t}/attachments`,"POST",n,{headers:{"Content-Type":"multipart/form-data"}})}async removeAttachment(t,n){return this.request(`/${t}/attachments/${n}`,"DELETE")}async getStatistics(t={}){return this.request("/statistics","GET",null,{params:t})}async export(t){return this.request("/export","POST",t,{responseType:"blob"})}async bulkUpdate(t){return this.request("/bulk","PATCH",t)}async getTemplates(){return this.request("/templates","GET")}async createFromTemplate(t,n={}){return this.request(`/templates/${t}/create`,"POST",n)}async getHistory(t){return this.request(`/${t}/history`,"GET")}async getRelatedWorkOrders(t){return this.request(`/${t}/work-orders`,"GET")}}new _d;class Ed extends lt{constructor(){super("/api/meters")}async search(t){return this.request("/search","POST",t)}async getMini(){return this.request("/mini","GET")}async getByAsset(t){return this.request(`/asset/${t}`,"GET")}async getByLocation(t){return this.request(`/location/${t}`,"GET")}async getByUser(t){return this.request(`/user/${t}`,"GET")}async getDueForReading(t={}){return this.request("/due-for-reading","GET",null,{params:t})}async getDueForCalibration(t={}){return this.request("/due-for-calibration","GET",null,{params:t})}async assignUsers(t,n){return this.request(`/${t}/assign-users`,"PATCH",n)}async updateStatus(t,n){return this.request(`/${t}/status`,"PATCH",n)}async recordReading(t,n){return this.request(`/${t}/readings`,"POST",n)}async getReadings(t,n={}){return this.request(`/${t}/readings`,"GET",null,{params:n})}async updateReading(t,n,r){return this.request(`/${t}/readings/${n}`,"PATCH",r)}async deleteReading(t,n){return this.request(`/${t}/readings/${n}`,"DELETE")}async getReadingTrends(t,n={}){return this.request(`/${t}/trends`,"GET",null,{params:n})}async uploadImage(t,n){return this.request(`/${t}/image`,"POST",n,{headers:{"Content-Type":"multipart/form-data"}})}async removeImage(t){return this.request(`/${t}/image`,"DELETE")}async scheduleCalibration(t,n){return this.request(`/${t}/schedule-calibration`,"PATCH",n)}async completeCalibration(t,n){return this.request(`/${t}/complete-calibration`,"PATCH",n)}async getStatistics(t={}){return this.request("/statistics","GET",null,{params:t})}async export(t){return this.request("/export","POST",t,{responseType:"blob"})}async exportReadings(t,n){return this.request(`/${t}/readings/export`,"POST",n,{responseType:"blob"})}async bulkUpdate(t){return this.request("/bulk","PATCH",t)}async importReadings(t,n){return this.request(`/${t}/readings/import`,"POST",n,{headers:{"Content-Type":"multipart/form-data"}})}async getReadingTemplates(){return this.request("/reading-templates","GET")}async validateReading(t,n){return this.request(`/${t}/validate-reading`,"POST",n)}}new Ed;const xn=new Nv,B_=new Gv,V_=new Kv,j_=new Yv,H_=new Jv,U_=new Zv,q_=new Xv,z_=new Qv,W_=new eb;new tb;const G_=new nb,K_=new _d,Y_=new Ed,ya=Jp("auth",()=>{const e=fe(localStorage.getItem("token")),t=fe(localStorage.getItem("refreshToken")),n=fe((()=>{try{const y=localStorage.getItem("user");return!y||y==="undefined"||y==="null"?(localStorage.removeItem("user"),null):JSON.parse(y)}catch(y){return console.warn("Failed to parse user data from localStorage:",y),localStorage.removeItem("user"),null}})()),r=fe(!1),s=fe(null),o=M(()=>!!e.value),i=M(()=>{var y;return((y=n.value)==null?void 0:y.role)||null}),a=M(()=>n.value?`${n.value.firstName} ${n.value.lastName}`:""),l=y=>i.value===y,u=y=>{var p;return(p=n.value)!=null&&p.permissions?n.value.permissions.includes(y):!1},c=async y=>{try{r.value=!0,s.value=null;const p=await xn.login(y);return e.value=p.accessToken,t.value=p.refreshToken,n.value=p.user,localStorage.setItem("token",p.accessToken),p.refreshToken&&localStorage.setItem("refreshToken",p.refreshToken),localStorage.setItem("user",JSON.stringify(p.user)),p}catch(p){throw s.value=p.message||"Login failed",p}finally{r.value=!1}},f=async y=>{try{r.value=!0,s.value=null;const p=await xn.register(y);return e.value=p.accessToken,t.value=p.refreshToken,n.value=p.user,localStorage.setItem("token",p.accessToken),p.refreshToken&&localStorage.setItem("refreshToken",p.refreshToken),localStorage.setItem("user",JSON.stringify(p.user)),p}catch(p){throw s.value=p.message||"Registration failed",p}finally{r.value=!1}},d=async()=>{try{e.value&&await xn.logout()}catch(y){console.error("Logout error:",y)}finally{e.value=null,t.value=null,n.value=null,localStorage.removeItem("token"),localStorage.removeItem("refreshToken"),localStorage.removeItem("user")}};return{token:e,refreshToken:t,user:n,loading:r,error:s,isAuthenticated:o,userRole:i,userName:a,hasRole:l,hasPermission:u,login:c,register:f,logout:d,refreshAuthToken:async()=>{try{if(!t.value)throw new Error("No refresh token available");const y=await xn.refreshToken(t.value);return e.value=y.accessToken,y.refreshToken&&(t.value=y.refreshToken,localStorage.setItem("refreshToken",y.refreshToken)),localStorage.setItem("token",y.accessToken),y}catch(y){throw d(),y}},getCurrentUser:async()=>{try{if(!e.value)return null;const y=await xn.getCurrentUser();return n.value=y,localStorage.setItem("user",JSON.stringify(y)),y}catch(y){throw y.status===401&&d(),y}},forgotPassword:async y=>{try{return r.value=!0,s.value=null,await xn.forgotPassword(y)}catch(p){throw s.value=p.message||"Password reset request failed",p}finally{r.value=!1}},resetPassword:async(y,p)=>{try{return r.value=!0,s.value=null,await xn.resetPassword(y,p)}catch(T){throw s.value=T.message||"Password reset failed",T}finally{r.value=!1}},clearError:()=>{s.value=null}}});/*! - * vue-router v4.5.1 - * (c) 2025 Eduardo San Martin Morote - * @license MIT - */const Wn=typeof document<"u";function Sd(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function rb(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&Sd(e.default)}const we=Object.assign;function Jo(e,t){const n={};for(const r in t){const s=t[r];n[r]=xt(s)?s.map(e):e(s)}return n}const Rr=()=>{},xt=Array.isArray,xd=/#/g,sb=/&/g,ob=/\//g,ib=/=/g,ab=/\?/g,Cd=/\+/g,lb=/%5B/g,cb=/%5D/g,Td=/%5E/g,ub=/%60/g,kd=/%7B/g,fb=/%7C/g,Ad=/%7D/g,db=/%20/g;function va(e){return encodeURI(""+e).replace(fb,"|").replace(lb,"[").replace(cb,"]")}function hb(e){return va(e).replace(kd,"{").replace(Ad,"}").replace(Td,"^")}function Ii(e){return va(e).replace(Cd,"%2B").replace(db,"+").replace(xd,"%23").replace(sb,"%26").replace(ub,"`").replace(kd,"{").replace(Ad,"}").replace(Td,"^")}function mb(e){return Ii(e).replace(ib,"%3D")}function pb(e){return va(e).replace(xd,"%23").replace(ab,"%3F")}function gb(e){return e==null?"":pb(e).replace(ob,"%2F")}function Ur(e){try{return decodeURIComponent(""+e)}catch{}return""+e}const yb=/\/$/,vb=e=>e.replace(yb,"");function Zo(e,t,n="/"){let r,s={},o="",i="";const a=t.indexOf("#");let l=t.indexOf("?");return a=0&&(l=-1),l>-1&&(r=t.slice(0,l),o=t.slice(l+1,a>-1?a:t.length),s=e(o)),a>-1&&(r=r||t.slice(0,a),i=t.slice(a,t.length)),r=Eb(r??t,n),{fullPath:r+(o&&"?")+o+i,path:r,query:s,hash:Ur(i)}}function bb(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function hc(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function wb(e,t,n){const r=t.matched.length-1,s=n.matched.length-1;return r>-1&&r===s&&sr(t.matched[r],n.matched[s])&&Rd(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function sr(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function Rd(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!_b(e[n],t[n]))return!1;return!0}function _b(e,t){return xt(e)?mc(e,t):xt(t)?mc(t,e):e===t}function mc(e,t){return xt(t)?e.length===t.length&&e.every((n,r)=>n===t[r]):e.length===1&&e[0]===t}function Eb(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/"),s=r[r.length-1];(s===".."||s===".")&&r.push("");let o=n.length-1,i,a;for(i=0;i1&&o--;else break;return n.slice(0,o).join("/")+"/"+r.slice(i).join("/")}const Xt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};var qr;(function(e){e.pop="pop",e.push="push"})(qr||(qr={}));var Pr;(function(e){e.back="back",e.forward="forward",e.unknown=""})(Pr||(Pr={}));function Sb(e){if(!e)if(Wn){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),vb(e)}const xb=/^[^#]+#/;function Cb(e,t){return e.replace(xb,"#")+t}function Tb(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}const ko=()=>({left:window.scrollX,top:window.scrollY});function kb(e){let t;if("el"in e){const n=e.el,r=typeof n=="string"&&n.startsWith("#"),s=typeof n=="string"?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!s)return;t=Tb(s,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function pc(e,t){return(history.state?history.state.position-t:-1)+e}const Di=new Map;function Ab(e,t){Di.set(e,t)}function Rb(e){const t=Di.get(e);return Di.delete(e),t}let Pb=()=>location.protocol+"//"+location.host;function Pd(e,t){const{pathname:n,search:r,hash:s}=t,o=e.indexOf("#");if(o>-1){let a=s.includes(e.slice(o))?e.slice(o).length:1,l=s.slice(a);return l[0]!=="/"&&(l="/"+l),hc(l,"")}return hc(n,e)+r+s}function Ob(e,t,n,r){let s=[],o=[],i=null;const a=({state:d})=>{const h=Pd(e,location),m=n.value,w=t.value;let _=0;if(d){if(n.value=h,t.value=d,i&&i===m){i=null;return}_=w?d.position-w.position:0}else r(h);s.forEach(b=>{b(n.value,m,{delta:_,type:qr.pop,direction:_?_>0?Pr.forward:Pr.back:Pr.unknown})})};function l(){i=n.value}function u(d){s.push(d);const h=()=>{const m=s.indexOf(d);m>-1&&s.splice(m,1)};return o.push(h),h}function c(){const{history:d}=window;d.state&&d.replaceState(we({},d.state,{scroll:ko()}),"")}function f(){for(const d of o)d();o=[],window.removeEventListener("popstate",a),window.removeEventListener("beforeunload",c)}return window.addEventListener("popstate",a),window.addEventListener("beforeunload",c,{passive:!0}),{pauseListeners:l,listen:u,destroy:f}}function gc(e,t,n,r=!1,s=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:s?ko():null}}function $b(e){const{history:t,location:n}=window,r={value:Pd(e,n)},s={value:t.state};s.value||o(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(l,u,c){const f=e.indexOf("#"),d=f>-1?(n.host&&document.querySelector("base")?e:e.slice(f))+l:Pb()+e+l;try{t[c?"replaceState":"pushState"](u,"",d),s.value=u}catch(h){console.error(h),n[c?"replace":"assign"](d)}}function i(l,u){const c=we({},t.state,gc(s.value.back,l,s.value.forward,!0),u,{position:s.value.position});o(l,c,!0),r.value=l}function a(l,u){const c=we({},s.value,t.state,{forward:l,scroll:ko()});o(c.current,c,!0);const f=we({},gc(r.value,l,null),{position:c.position+1},u);o(l,f,!1),r.value=l}return{location:r,state:s,push:a,replace:i}}function Fb(e){e=Sb(e);const t=$b(e),n=Ob(e,t.state,t.location,t.replace);function r(o,i=!0){i||n.pauseListeners(),history.go(o)}const s=we({location:"",base:e,go:r,createHref:Cb.bind(null,e)},t,n);return Object.defineProperty(s,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(s,"state",{enumerable:!0,get:()=>t.state.value}),s}function Lb(e){return typeof e=="string"||e&&typeof e=="object"}function Od(e){return typeof e=="string"||typeof e=="symbol"}const $d=Symbol("");var yc;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(yc||(yc={}));function or(e,t){return we(new Error,{type:e,[$d]:!0},t)}function jt(e,t){return e instanceof Error&&$d in e&&(t==null||!!(e.type&t))}const vc="[^/]+?",Mb={sensitive:!1,strict:!1,start:!0,end:!0},Ib=/[.+*?^${}()[\]/\\]/g;function Db(e,t){const n=we({},Mb,t),r=[];let s=n.start?"^":"";const o=[];for(const u of e){const c=u.length?[]:[90];n.strict&&!u.length&&(s+="/");for(let f=0;ft.length?t.length===1&&t[0]===80?1:-1:0}function Fd(e,t){let n=0;const r=e.score,s=t.score;for(;n0&&t[t.length-1]<0}const Bb={type:0,value:""},Vb=/[a-zA-Z0-9_]/;function jb(e){if(!e)return[[]];if(e==="/")return[[Bb]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(h){throw new Error(`ERR (${n})/"${u}": ${h}`)}let n=0,r=n;const s=[];let o;function i(){o&&s.push(o),o=[]}let a=0,l,u="",c="";function f(){u&&(n===0?o.push({type:0,value:u}):n===1||n===2||n===3?(o.length>1&&(l==="*"||l==="+")&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),o.push({type:1,value:u,regexp:c,repeatable:l==="*"||l==="+",optional:l==="*"||l==="?"})):t("Invalid state to consume buffer"),u="")}function d(){u+=l}for(;a{i(p)}:Rr}function i(f){if(Od(f)){const d=r.get(f);d&&(r.delete(f),n.splice(n.indexOf(d),1),d.children.forEach(i),d.alias.forEach(i))}else{const d=n.indexOf(f);d>-1&&(n.splice(d,1),f.record.name&&r.delete(f.record.name),f.children.forEach(i),f.alias.forEach(i))}}function a(){return n}function l(f){const d=Wb(f,n);n.splice(d,0,f),f.record.name&&!Ec(f)&&r.set(f.record.name,f)}function u(f,d){let h,m={},w,_;if("name"in f&&f.name){if(h=r.get(f.name),!h)throw or(1,{location:f});_=h.record.name,m=we(wc(d.params,h.keys.filter(p=>!p.optional).concat(h.parent?h.parent.keys.filter(p=>p.optional):[]).map(p=>p.name)),f.params&&wc(f.params,h.keys.map(p=>p.name))),w=h.stringify(m)}else if(f.path!=null)w=f.path,h=n.find(p=>p.re.test(w)),h&&(m=h.parse(w),_=h.record.name);else{if(h=d.name?r.get(d.name):n.find(p=>p.re.test(d.path)),!h)throw or(1,{location:f,currentLocation:d});_=h.record.name,m=we({},d.params,f.params),w=h.stringify(m)}const b=[];let y=h;for(;y;)b.unshift(y.record),y=y.parent;return{name:_,path:w,params:m,matched:b,meta:zb(b)}}e.forEach(f=>o(f));function c(){n.length=0,r.clear()}return{addRoute:o,resolve:u,removeRoute:i,clearRoutes:c,getRoutes:a,getRecordMatcher:s}}function wc(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function _c(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:qb(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function qb(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]=typeof n=="object"?n[r]:n;return t}function Ec(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function zb(e){return e.reduce((t,n)=>we(t,n.meta),{})}function Sc(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}function Wb(e,t){let n=0,r=t.length;for(;n!==r;){const o=n+r>>1;Fd(e,t[o])<0?r=o:n=o+1}const s=Gb(e);return s&&(r=t.lastIndexOf(s,r-1)),r}function Gb(e){let t=e;for(;t=t.parent;)if(Ld(t)&&Fd(e,t)===0)return t}function Ld({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Kb(e){const t={};if(e===""||e==="?")return t;const r=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;so&&Ii(o)):[r&&Ii(r)]).forEach(o=>{o!==void 0&&(t+=(t.length?"&":"")+n,o!=null&&(t+="="+o))})}return t}function Yb(e){const t={};for(const n in e){const r=e[n];r!==void 0&&(t[n]=xt(r)?r.map(s=>s==null?null:""+s):r==null?r:""+r)}return t}const Jb=Symbol(""),Cc=Symbol(""),Ao=Symbol(""),ba=Symbol(""),Ni=Symbol("");function yr(){let e=[];function t(r){return e.push(r),()=>{const s=e.indexOf(r);s>-1&&e.splice(s,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function on(e,t,n,r,s,o=i=>i()){const i=r&&(r.enterCallbacks[s]=r.enterCallbacks[s]||[]);return()=>new Promise((a,l)=>{const u=d=>{d===!1?l(or(4,{from:n,to:t})):d instanceof Error?l(d):Lb(d)?l(or(2,{from:t,to:d})):(i&&r.enterCallbacks[s]===i&&typeof d=="function"&&i.push(d),a())},c=o(()=>e.call(r&&r.instances[s],t,n,u));let f=Promise.resolve(c);e.length<3&&(f=f.then(u)),f.catch(d=>l(d))})}function Xo(e,t,n,r,s=o=>o()){const o=[];for(const i of e)for(const a in i.components){let l=i.components[a];if(!(t!=="beforeRouteEnter"&&!i.instances[a]))if(Sd(l)){const c=(l.__vccOpts||l)[t];c&&o.push(on(c,n,r,i,a,s))}else{let u=l();o.push(()=>u.then(c=>{if(!c)throw new Error(`Couldn't resolve component "${a}" at "${i.path}"`);const f=rb(c)?c.default:c;i.mods[a]=c,i.components[a]=f;const h=(f.__vccOpts||f)[t];return h&&on(h,n,r,i,a,s)()}))}}return o}function Tc(e){const t=Pe(Ao),n=Pe(ba),r=M(()=>{const l=Me(e.to);return t.resolve(l)}),s=M(()=>{const{matched:l}=r.value,{length:u}=l,c=l[u-1],f=n.matched;if(!c||!f.length)return-1;const d=f.findIndex(sr.bind(null,c));if(d>-1)return d;const h=kc(l[u-2]);return u>1&&kc(c)===h&&f[f.length-1].path!==h?f.findIndex(sr.bind(null,l[u-2])):d}),o=M(()=>s.value>-1&&t1(n.params,r.value.params)),i=M(()=>s.value>-1&&s.value===n.matched.length-1&&Rd(n.params,r.value.params));function a(l={}){if(e1(l)){const u=t[Me(e.replace)?"replace":"push"](Me(e.to)).catch(Rr);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>u),u}return Promise.resolve()}return{route:r,href:M(()=>r.value.href),isActive:o,isExactActive:i,navigate:a}}function Zb(e){return e.length===1?e[0]:e}const Xb=ra({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:Tc,setup(e,{slots:t}){const n=Be(Tc(e)),{options:r}=Pe(Ao),s=M(()=>({[Ac(e.activeClass,r.linkActiveClass,"router-link-active")]:n.isActive,[Ac(e.exactActiveClass,r.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const o=t.default&&Zb(t.default(n));return e.custom?o:ts("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:s.value},o)}}}),Qb=Xb;function e1(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function t1(e,t){for(const n in t){const r=t[n],s=e[n];if(typeof r=="string"){if(r!==s)return!1}else if(!xt(s)||s.length!==r.length||r.some((o,i)=>o!==s[i]))return!1}return!0}function kc(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Ac=(e,t,n)=>e??t??n,n1=ra({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const r=Pe(Ni),s=M(()=>e.route||r.value),o=Pe(Cc,0),i=M(()=>{let u=Me(o);const{matched:c}=s.value;let f;for(;(f=c[u])&&!f.components;)u++;return u}),a=M(()=>s.value.matched[i.value]);_t(Cc,M(()=>i.value+1)),_t(Jb,a),_t(Ni,s);const l=fe();return ye(()=>[l.value,a.value,e.name],([u,c,f],[d,h,m])=>{c&&(c.instances[f]=u,h&&h!==c&&u&&u===d&&(c.leaveGuards.size||(c.leaveGuards=h.leaveGuards),c.updateGuards.size||(c.updateGuards=h.updateGuards))),u&&c&&(!h||!sr(c,h)||!d)&&(c.enterCallbacks[f]||[]).forEach(w=>w(u))},{flush:"post"}),()=>{const u=s.value,c=e.name,f=a.value,d=f&&f.components[c];if(!d)return Rc(n.default,{Component:d,route:u});const h=f.props[c],m=h?h===!0?u.params:typeof h=="function"?h(u):h:null,_=ts(d,we({},m,t,{onVnodeUnmounted:b=>{b.component.isUnmounted&&(f.instances[c]=null)},ref:l}));return Rc(n.default,{Component:_,route:u})||_}}});function Rc(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const r1=n1;function s1(e){const t=Ub(e.routes,e),n=e.parseQuery||Kb,r=e.stringifyQuery||xc,s=e.history,o=yr(),i=yr(),a=yr(),l=Oe(Xt);let u=Xt;Wn&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const c=Jo.bind(null,C=>""+C),f=Jo.bind(null,gb),d=Jo.bind(null,Ur);function h(C,N){let j,K;return Od(C)?(j=t.getRecordMatcher(C),K=N):K=C,t.addRoute(K,j)}function m(C){const N=t.getRecordMatcher(C);N&&t.removeRoute(N)}function w(){return t.getRoutes().map(C=>C.record)}function _(C){return!!t.getRecordMatcher(C)}function b(C,N){if(N=we({},N||l.value),typeof C=="string"){const E=Zo(n,C,N.path),O=t.resolve({path:E.path},N),F=s.createHref(E.fullPath);return we(E,O,{params:d(O.params),hash:Ur(E.hash),redirectedFrom:void 0,href:F})}let j;if(C.path!=null)j=we({},C,{path:Zo(n,C.path,N.path).path});else{const E=we({},C.params);for(const O in E)E[O]==null&&delete E[O];j=we({},C,{params:f(E)}),N.params=f(N.params)}const K=t.resolve(j,N),be=C.hash||"";K.params=c(d(K.params));const g=bb(r,we({},C,{hash:hb(be),path:K.path})),v=s.createHref(g);return we({fullPath:g,hash:be,query:r===xc?Yb(C.query):C.query||{}},K,{redirectedFrom:void 0,href:v})}function y(C){return typeof C=="string"?Zo(n,C,l.value.path):we({},C)}function p(C,N){if(u!==C)return or(8,{from:N,to:C})}function T(C){return I(C)}function x(C){return T(we(y(C),{replace:!0}))}function P(C){const N=C.matched[C.matched.length-1];if(N&&N.redirect){const{redirect:j}=N;let K=typeof j=="function"?j(C):j;return typeof K=="string"&&(K=K.includes("?")||K.includes("#")?K=y(K):{path:K},K.params={}),we({query:C.query,hash:C.hash,params:K.path!=null?{}:C.params},K)}}function I(C,N){const j=u=b(C),K=l.value,be=C.state,g=C.force,v=C.replace===!0,E=P(j);if(E)return I(we(y(E),{state:typeof E=="object"?we({},be,E.state):be,force:g,replace:v}),N||j);const O=j;O.redirectedFrom=N;let F;return!g&&wb(r,K,j)&&(F=or(16,{to:O,from:K}),Le(K,K,!0,!1)),(F?Promise.resolve(F):B(O,K)).catch($=>jt($)?jt($,2)?$:Ce($):ce($,O,K)).then($=>{if($){if(jt($,2))return I(we({replace:v},y($.to),{state:typeof $.to=="object"?we({},be,$.to.state):be,force:g}),N||O)}else $=L(O,K,!0,v,be);return V(O,K,$),$})}function S(C,N){const j=p(C,N);return j?Promise.reject(j):Promise.resolve()}function A(C){const N=ct.values().next().value;return N&&typeof N.runWithContext=="function"?N.runWithContext(C):C()}function B(C,N){let j;const[K,be,g]=o1(C,N);j=Xo(K.reverse(),"beforeRouteLeave",C,N);for(const E of K)E.leaveGuards.forEach(O=>{j.push(on(O,C,N))});const v=S.bind(null,C,N);return j.push(v),ze(j).then(()=>{j=[];for(const E of o.list())j.push(on(E,C,N));return j.push(v),ze(j)}).then(()=>{j=Xo(be,"beforeRouteUpdate",C,N);for(const E of be)E.updateGuards.forEach(O=>{j.push(on(O,C,N))});return j.push(v),ze(j)}).then(()=>{j=[];for(const E of g)if(E.beforeEnter)if(xt(E.beforeEnter))for(const O of E.beforeEnter)j.push(on(O,C,N));else j.push(on(E.beforeEnter,C,N));return j.push(v),ze(j)}).then(()=>(C.matched.forEach(E=>E.enterCallbacks={}),j=Xo(g,"beforeRouteEnter",C,N,A),j.push(v),ze(j))).then(()=>{j=[];for(const E of i.list())j.push(on(E,C,N));return j.push(v),ze(j)}).catch(E=>jt(E,8)?E:Promise.reject(E))}function V(C,N,j){a.list().forEach(K=>A(()=>K(C,N,j)))}function L(C,N,j,K,be){const g=p(C,N);if(g)return g;const v=N===Xt,E=Wn?history.state:{};j&&(K||v?s.replace(C.fullPath,we({scroll:v&&E&&E.scroll},be)):s.push(C.fullPath,be)),l.value=C,Le(C,N,j,v),Ce()}let G;function re(){G||(G=s.listen((C,N,j)=>{if(!Tt.listening)return;const K=b(C),be=P(K);if(be){I(we(be,{replace:!0,force:!0}),K).catch(Rr);return}u=K;const g=l.value;Wn&&Ab(pc(g.fullPath,j.delta),ko()),B(K,g).catch(v=>jt(v,12)?v:jt(v,2)?(I(we(y(v.to),{force:!0}),K).then(E=>{jt(E,20)&&!j.delta&&j.type===qr.pop&&s.go(-1,!1)}).catch(Rr),Promise.reject()):(j.delta&&s.go(-j.delta,!1),ce(v,K,g))).then(v=>{v=v||L(K,g,!1),v&&(j.delta&&!jt(v,8)?s.go(-j.delta,!1):j.type===qr.pop&&jt(v,20)&&s.go(-1,!1)),V(K,g,v)}).catch(Rr)}))}let Z=yr(),oe=yr(),ee;function ce(C,N,j){Ce(C);const K=oe.list();return K.length?K.forEach(be=>be(C,N,j)):console.error(C),Promise.reject(C)}function Ne(){return ee&&l.value!==Xt?Promise.resolve():new Promise((C,N)=>{Z.add([C,N])})}function Ce(C){return ee||(ee=!C,re(),Z.list().forEach(([N,j])=>C?j(C):N()),Z.reset()),C}function Le(C,N,j,K){const{scrollBehavior:be}=e;if(!Wn||!be)return Promise.resolve();const g=!j&&Rb(pc(C.fullPath,0))||(K||!j)&&history.state&&history.state.scroll||null;return vt().then(()=>be(C,N,g)).then(v=>v&&kb(v)).catch(v=>ce(v,C,N))}const Re=C=>s.go(C);let je;const ct=new Set,Tt={currentRoute:l,listening:!0,addRoute:h,removeRoute:m,clearRoutes:t.clearRoutes,hasRoute:_,getRoutes:w,resolve:b,options:e,push:T,replace:x,go:Re,back:()=>Re(-1),forward:()=>Re(1),beforeEach:o.add,beforeResolve:i.add,afterEach:a.add,onError:oe.add,isReady:Ne,install(C){const N=this;C.component("RouterLink",Qb),C.component("RouterView",r1),C.config.globalProperties.$router=N,Object.defineProperty(C.config.globalProperties,"$route",{enumerable:!0,get:()=>Me(l)}),Wn&&!je&&l.value===Xt&&(je=!0,T(s.location).catch(be=>{}));const j={};for(const be in Xt)Object.defineProperty(j,be,{get:()=>l.value[be],enumerable:!0});C.provide(Ao,N),C.provide(ba,hu(j)),C.provide(Ni,l);const K=C.unmount;ct.add(C),C.unmount=function(){ct.delete(C),ct.size<1&&(u=Xt,G&&G(),G=null,l.value=Xt,je=!1,ee=!1),K()}}};function ze(C){return C.reduce((N,j)=>N.then(()=>A(j)),Promise.resolve())}return Tt}function o1(e,t){const n=[],r=[],s=[],o=Math.max(t.matched.length,e.matched.length);for(let i=0;isr(u,a))?r.push(a):n.push(a));const l=e.matched[i];l&&(t.matched.find(u=>sr(u,l))||s.push(l))}return[n,r,s]}function i1(){return Pe(Ao)}function a1(e){return Pe(ba)}function l1(){const e=ya(),t=i1(),n=M(()=>e.isAuthenticated),r=M(()=>e.user),s=M(()=>e.loading),o=M(()=>e.error),i=async(m,w="/dashboard")=>{try{await e.login(m),t.push(w)}catch(_){throw _}},a=async(m,w="/dashboard")=>{try{await e.register(m),t.push(w)}catch(_){throw _}},l=async()=>{try{await e.logout(),t.push("/login")}catch(m){console.error("Logout error:",m),t.push("/login")}},u=m=>e.hasRole(m),c=m=>e.hasPermission(m);return{isAuthenticated:n,user:r,loading:s,error:o,login:i,register:a,logout:l,hasRole:u,hasPermission:c,requireAuth:()=>n.value?!0:(t.push("/login"),!1),requireRole:m=>u(m)?!0:(t.push("/unauthorized"),!1),requirePermission:m=>c(m)?!0:(t.push("/unauthorized"),!1)}}const Pc={ADMIN:"ADMIN",MANAGER:"MANAGER",TECHNICIAN:"TECHNICIAN",REQUESTER:"REQUESTER",VIEWER:"VIEWER"},Qt={SUCCESS:"success",ERROR:"error",WARNING:"warning",INFO:"info"},Pn={colors:{primary:{50:"#F0FDFA",100:"#CCFBF1",200:"#99F6E4",300:"#5EEAD4",400:"#2DD4BF",500:"#14B8A6",600:"#0D9488",700:"#0F766E",800:"#115E59",900:"#134E4A"},secondary:{50:"#FAFAFA",100:"#F5F5F5",200:"#EEEEEE",300:"#E0E0E0",400:"#BDBDBD",500:"#9E9E9E",600:"#757575",700:"#616161",800:"#424242",900:"#212121"},success:{50:"#E8F5E8",500:"#4CAF50",700:"#388E3C"},warning:{50:"#FFFDE7",500:"#FFC107",700:"#F57F17"},error:{50:"#FFEBEE",500:"#FF5252",700:"#D32F2F"},info:{50:"#E1F5FE",500:"#2196F3",700:"#0288D1"}},themes:{light:{name:"Light",colors:{background:"#FFFFFF",surface:"#FAFAFA","surface-variant":"#F5F5F5","on-background":"#212121","on-surface":"#424242",primary:"#1976D2","on-primary":"#FFFFFF",secondary:"#424242","on-secondary":"#FFFFFF"}},dark:{name:"Dark",colors:{background:"#121212",surface:"#1E1E1E","surface-variant":"#2D2D2D","on-background":"#FFFFFF","on-surface":"#E0E0E0",primary:"#42A5F5","on-primary":"#000000",secondary:"#BDBDBD","on-secondary":"#000000"}}},typography:{fontFamily:{sans:["Inter","ui-sans-serif","system-ui","sans-serif"],mono:["JetBrains Mono","ui-monospace","monospace"]},fontSize:{xs:"0.75rem",sm:"0.875rem",base:"1rem",lg:"1.125rem",xl:"1.25rem","2xl":"1.5rem","3xl":"1.875rem","4xl":"2.25rem"},fontWeight:{normal:"400",medium:"500",semibold:"600",bold:"700"}},spacing:{xs:"0.25rem",sm:"0.5rem",md:"1rem",lg:"1.5rem",xl:"2rem","2xl":"3rem","3xl":"4rem"},borderRadius:{none:"0",sm:"0.125rem",md:"0.25rem",lg:"0.375rem",xl:"0.5rem",full:"9999px"},components:{button:{primary:{background:"primary-600",backgroundHover:"primary-700",text:"white",border:"transparent"},secondary:{background:"white",backgroundHover:"gray-50",text:"gray-700",border:"gray-300"},ghost:{background:"transparent",backgroundHover:"gray-100",text:"gray-700",border:"transparent"}},input:{background:"white",border:"gray-300",borderFocus:"primary-500",text:"gray-900",placeholder:"gray-500"},card:{background:"white",border:"gray-200",shadow:"sm"}},animation:{transition:"all 0.2s ease-in-out",duration:{fast:"150ms",normal:"200ms",slow:"300ms"}}},Md=(e="light")=>Pn.themes[e]||Pn.themes.light,c1=(e="light")=>{const t=Md(e),n={};return Object.entries(t.colors).forEach(([r,s])=>{n[`--atlas-${r}`]=s}),n},Tn=fe("light"),zr=typeof window<"u",Id="atlas-theme";if(zr){const e=localStorage.getItem(Id);e&&Pn.themes[e]&&(Tn.value=e)}function Dd(){const e=a=>{if(Pn.themes[a]&&(Tn.value=a,zr)){localStorage.setItem(Id,a);const l=c1(a);Object.entries(l).forEach(([u,c])=>{document.documentElement.style.setProperty(u,c)}),document.body.className=document.body.className.replace(/theme-\w+/g,"").trim()+` theme-${a}`,a==="dark"?document.documentElement.classList.add("dark"):document.documentElement.classList.remove("dark")}},t=M(()=>Md(Tn.value)),n=M(()=>Tn.value==="dark"),r=M(()=>Tn.value==="light"),s=()=>{e(n.value?"light":"dark")},o=(a,l="#000000")=>{const u=a.split(".");let c=Pn.colors;for(const f of u)c=c==null?void 0:c[f];return c||l},i=a=>Pn.components[a]||{};return zr&&e(Tn.value),{currentTheme:M(()=>Tn.value),theme:t,isDark:n,isLight:r,setTheme:e,toggleTheme:s,getColor:o,getComponentTheme:i,themeConfig:Pn}}function J_(){const{getColor:e}=Dd(),t=M(()=>({50:e("primary.50"),100:e("primary.100"),200:e("primary.200"),300:e("primary.300"),400:e("primary.400"),500:e("primary.500"),600:e("primary.600"),700:e("primary.700"),800:e("primary.800"),900:e("primary.900"),DEFAULT:e("primary.700")})),n=M(()=>({success:e("success.500"),warning:e("warning.500"),error:e("error.500"),info:e("info.500")}));return{primary:t,statusColors:n,getColor:e}}function Z_(){const e={sm:640,md:768,lg:1024,xl:1280,"2xl":1536},t=fe(zr?window.innerWidth:0);if(zr){const i=()=>{t.value=window.innerWidth};window.addEventListener("resize",i)}const n=M(()=>t.valuet.value>=e.md&&t.valuet.value>=e.lg),o=M(()=>{const i=t.value;return i>=e["2xl"]?"2xl":i>=e.xl?"xl":i>=e.lg?"lg":i>=e.md?"md":i>=e.sm?"sm":"xs"});return{windowWidth:M(()=>t.value),isMobile:n,isTablet:r,isDesktop:s,breakpoint:o,breakpoints:e}}const us=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},u1=["type","disabled"],f1={__name:"FPButton",props:{type:{type:String,default:"button"},variant:{type:String,default:"primary",validator:e=>["primary","secondary","outline","ghost","danger"].includes(e)},size:{type:String,default:"md",validator:e=>["xs","sm","md","lg"].includes(e)},disabled:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},block:{type:Boolean,default:!1}},emits:["click"],setup(e){const t=e;Dd();const n=M(()=>{const r=["fp-btn","inline-flex items-center justify-center","font-medium rounded","transition-all duration-200","focus:outline-none focus:ring-2 focus:ring-offset-2"],s={xs:["px-2 py-1 text-xs"],sm:["px-3 py-1.5 text-sm"],md:["px-4 py-2 text-sm"],lg:["px-6 py-3 text-base"]},o={primary:["bg-primary-600 hover:bg-primary-700","text-white","border border-transparent","focus:ring-primary-500","disabled:bg-primary-300 disabled:cursor-not-allowed"],secondary:["bg-white hover:bg-gray-50","text-gray-700","border border-gray-300","focus:ring-primary-500","disabled:bg-gray-100 disabled:text-gray-400 disabled:cursor-not-allowed"],outline:["bg-white hover:bg-primary-50","text-primary-600 hover:text-primary-700","border border-primary-300 hover:border-primary-400","focus:ring-primary-500","disabled:bg-gray-100 disabled:text-gray-400 disabled:border-gray-300 disabled:cursor-not-allowed"],ghost:["bg-transparent hover:bg-gray-100","text-gray-700","border border-transparent","focus:ring-primary-500","disabled:text-gray-400 disabled:cursor-not-allowed"],danger:["bg-error-600 hover:bg-error-700","text-white","border border-transparent","focus:ring-error-500","disabled:bg-error-300 disabled:cursor-not-allowed"]},i=t.block?["w-full"]:[];return[...r,...s[t.size],...o[t.variant],...i].flat()});return(r,s)=>(X(),se("button",Xe({type:e.type,disabled:e.disabled||e.loading,class:n.value},r.$attrs,{onClick:s[0]||(s[0]=o=>r.$emit("click",o))}),[Nu(r.$slots,"default",{},void 0,!0)],16,u1))}},bs=us(f1,[["__scopeId","data-v-7c0145b3"]]);function Nd(){const e=fe(new Map),t=(i,a=200)=>{const l=typeof i=="string"?i.split("").reduce((c,f)=>c+f.charCodeAt(0),0):i||Math.floor(Math.random()*1e3);return[`https://picsum.photos/seed/${Math.abs(l)}/${a}/${a}`,`https://api.dicebear.com/7.x/avataaars/svg?seed=${Math.abs(l)}&size=${a}`,`https://source.boringavatars.com/marble/${a}/${Math.abs(l)}?colors=14B8A6,0D9488,0F766E,115E59,134E4A`][0]};return{getAvatarUrl:(i,a=200)=>{if(!i)return t("default",a);if(i.avatar)return i.avatar;if(e.value.has(i.id))return e.value.get(i.id);const l=i.id||`${i.firstName||""}${i.lastName||""}${i.email||""}`;return t(l,a)},uploadAvatar:async(i,a)=>{try{const l=URL.createObjectURL(a);return e.value.set(i,l),l}catch(l){throw console.error("Failed to upload avatar:",l),l}},removeAvatar:i=>{if(e.value.has(i)){const a=e.value.get(i);a.startsWith("blob:")&&URL.revokeObjectURL(a),e.value.delete(i)}},getUserInitials:i=>{var u,c,f,d,h;if(!i)return"??";const a=((u=i.firstName)==null?void 0:u[0])||((c=i.name)==null?void 0:c[0])||"",l=((f=i.lastName)==null?void 0:f[1])||((h=(d=i.name)==null?void 0:d.split(" ")[1])==null?void 0:h[0])||"";return(a+l).toUpperCase()||"??"},generatePexelsAvatar:t}}Nd();const d1=["src","alt"],h1={__name:"FPAvatar",props:{user:{type:Object,default:null},src:{type:String,default:""},size:{type:String,default:"md",validator:e=>["xs","sm","md","lg","xl","2xl"].includes(e)},rounded:{type:Boolean,default:!0},editable:{type:Boolean,default:!1},clickable:{type:Boolean,default:!1},status:{type:String,default:"",validator:e=>["","online","offline","busy","away"].includes(e)},fallbackColor:{type:String,default:"primary"}},emits:["click","upload","error"],setup(e,{emit:t}){const n=e,r=t,{getAvatarUrl:s,uploadAvatar:o,getUserInitials:i}=Nd(),a=fe(null),l=fe(!1),u=fe(!1),c=M(()=>{if(n.src)return console.log("FPAvatar: Using src prop:",n.src),n.src;if(n.user){const P=s(n.user,m.value);return console.log("FPAvatar: Generated URL for user:",n.user,"URL:",P),P}return console.log("FPAvatar: No src or user provided"),null}),f=M(()=>n.user?i(n.user):"??"),d=M(()=>n.user?`${n.user.firstName||""} ${n.user.lastName||""}`.trim()||"User Avatar":"Avatar"),h=M(()=>({xs:"w-6 h-6",sm:"w-8 h-8",md:"w-10 h-10",lg:"w-12 h-12",xl:"w-16 h-16","2xl":"w-20 h-20"})[n.size]),m=M(()=>({xs:24,sm:32,md:40,lg:48,xl:64,"2xl":80})[n.size]),w=M(()=>({xs:"text-xs",sm:"text-xs",md:"text-sm",lg:"text-base",xl:"text-lg","2xl":"text-xl"})[n.size]),_=M(()=>{const P={primary:"bg-primary-500",secondary:"bg-gray-500",success:"bg-green-500",warning:"bg-yellow-500",error:"bg-red-500"};return P[n.fallbackColor]||P.primary}),b=M(()=>`${{xs:"w-2 h-2",sm:"w-2 h-2",md:"w-3 h-3",lg:"w-3 h-3",xl:"w-4 h-4","2xl":"w-4 h-4"}[n.size]} ${{online:"bg-green-400",offline:"bg-gray-400",busy:"bg-red-400",away:"bg-yellow-400"}[n.status]||""}`),y=()=>{var P;n.editable?(P=a.value)==null||P.click():n.clickable&&r("click")},p=async P=>{var S,A;const I=(S=P.target.files)==null?void 0:S[0];if(!(!I||!((A=n.user)!=null&&A.id)))try{u.value=!0,l.value=!1;const B=await o(n.user.id,I);r("upload",{file:I,url:B})}catch(B){console.error("Avatar upload failed:",B),r("error",B)}finally{u.value=!1,a.value&&(a.value.value="")}},T=P=>{console.error("FPAvatar: Image failed to load:",P.target.src),l.value=!0},x=P=>{console.log("FPAvatar: Image loaded successfully:",P.target.src),l.value=!1};return ye(()=>n.user,()=>{l.value=!1},{deep:!0}),ye(()=>n.src,()=>{l.value=!1}),(P,I)=>(X(),se("div",{class:ve(["fp-avatar relative inline-block",[h.value,e.rounded?"rounded-full":"rounded",e.clickable?"cursor-pointer hover:opacity-80 transition-opacity":""]]),onClick:y},[!l.value&&c.value?(X(),se("img",{key:0,src:c.value,alt:d.value,class:ve(["w-full h-full object-cover",e.rounded?"rounded-full":"rounded"]),onError:T,onLoad:x},null,42,d1)):(X(),se("div",{key:1,class:ve(["w-full h-full flex items-center justify-center text-white font-medium",[e.rounded?"rounded-full":"rounded",_.value,w.value]])},pt(f.value),3)),u.value?(X(),se("div",{key:2,class:ve(["absolute inset-0 flex items-center justify-center bg-black bg-opacity-25",e.rounded?"rounded-full":"rounded"])},I[0]||(I[0]=[R("svg",{class:"animate-spin h-4 w-4 text-white",fill:"none",viewBox:"0 0 24 24"},[R("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"}),R("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})],-1)]),2)):de("",!0),e.status?(X(),se("div",{key:3,class:ve(["absolute bottom-0 right-0 block rounded-full ring-2 ring-white",b.value])},null,2)):de("",!0),e.editable?(X(),se("div",{key:4,class:ve(["absolute inset-0 flex items-center justify-center bg-black bg-opacity-50 opacity-0 hover:opacity-100 transition-opacity",e.rounded?"rounded-full":"rounded"])},I[1]||(I[1]=[R("svg",{class:"w-6 h-6 text-white",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M3 9a2 2 0 012-2h.93a2 2 0 001.664-.89l.812-1.22A2 2 0 0110.07 4h3.86a2 2 0 011.664.89l.812 1.22A2 2 0 0018.07 7H19a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V9z"}),R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 13a3 3 0 11-6 0 3 3 0 016 0z"})],-1)]),2)):de("",!0),e.editable?(X(),se("input",{key:5,ref_key:"fileInput",ref:a,type:"file",accept:"image/*",class:"hidden",onChange:p},null,544)):de("",!0)],2))}},m1=us(h1,[["__scopeId","data-v-bee50a95"]]),p1={class:"flex h-screen bg-gray-50"},g1={class:"hidden md:flex md:flex-shrink-0"},y1={class:"flex items-center"},v1={key:0,class:"text-xl font-bold text-primary-600"},b1={class:"flex flex-col flex-1 overflow-y-auto bg-white border-r border-gray-200"},w1={class:"flex-1 px-2 py-4 space-y-1"},_1={key:0,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 6a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2H6a2 2 0 01-2-2V6zM14 6a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2V6zM4 16a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2H6a2 2 0 01-2-2v-2zM14 16a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2v-2z"},E1={key:1,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5H7a2 2 0 00-2 2v10a2 2 0 002 2h8a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01"},S1={key:2,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"},x1={key:3,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4"},C1={key:4},T1={key:5,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4.354a4 4 0 110 5.292M15 21H3v-1a6 6 0 0112 0v1zm0 0h6v-1a6 6 0 00-9-5.197m13.5-9a2.5 2.5 0 11-5 0 2.5 2.5 0 015 0z"},k1={key:6,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4"},A1={key:7},R1={key:8},P1={key:9,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A1.994 1.994 0 013 12V7a4 4 0 014-4z"},O1={key:10,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4"},$1={key:11,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4.354a4 4 0 110 5.292M15 21H3v-1a6 6 0 0112 0v1zm0 0h6v-1a6 6 0 00-9-5.197m13.5-9a2.5 2.5 0 11-5 0 2.5 2.5 0 015 0z"},F1={key:12,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"},L1={key:0,class:"transition-opacity duration-200"},M1={key:1,class:"absolute left-full ml-2 px-2 py-1 bg-gray-900 text-white text-xs rounded opacity-0 invisible group-hover:opacity-100 group-hover:visible transition-all duration-200 whitespace-nowrap z-50"},I1={key:0,class:"fixed inset-0 z-40 md:hidden"},D1={class:"relative flex flex-col max-w-xs w-full bg-white"},N1={class:"flex items-center justify-between h-16 px-4 border-b border-gray-200"},B1={class:"flex-1 px-2 py-4 space-y-1 overflow-y-auto"},V1={class:"w-5 h-5 mr-3 flex-shrink-0",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},j1={key:0,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 6a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2H6a2 2 0 01-2-2V6zM14 6a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2V6zM4 16a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2H6a2 2 0 01-2-2v-2zM14 16a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2v-2z"},H1={key:1,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5H7a2 2 0 00-2 2v10a2 2 0 002 2h8a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01"},U1={key:2,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"},q1={key:3,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4"},z1={key:4},W1={key:5,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4.354a4 4 0 110 5.292M15 21H3v-1a6 6 0 0112 0v1zm0 0h6v-1a6 6 0 00-9-5.197m13.5-9a2.5 2.5 0 11-5 0 2.5 2.5 0 015 0z"},G1={key:6,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4"},K1={key:7},Y1={key:8},J1={key:9,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A1.994 1.994 0 013 12V7a4 4 0 014-4z"},Z1={key:10,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4"},X1={key:11,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4.354a4 4 0 110 5.292M15 21H3v-1a6 6 0 0112 0v1zm0 0h6v-1a6 6 0 00-9-5.197m13.5-9a2.5 2.5 0 11-5 0 2.5 2.5 0 015 0z"},Q1={key:12,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"},ew={class:"flex flex-col flex-1 overflow-hidden"},tw={class:"bg-white shadow-sm border-b border-gray-200"},nw={class:"flex items-center justify-between h-16 px-4 sm:px-6 lg:px-8"},rw={class:"flex items-center md:hidden"},sw={class:"flex items-center space-x-4 ml-auto"},ow={class:"relative"},iw={key:0,class:"absolute right-0 mt-2 w-80 bg-white rounded shadow-lg border border-gray-200 py-1 z-50"},aw={class:"relative"},lw={class:"hidden lg:block text-sm font-medium text-gray-700"},cw={key:0,class:"absolute right-0 mt-2 w-56 bg-white rounded shadow-lg border border-gray-200 py-1 z-50"},uw={class:"px-4 py-3 border-b border-gray-100"},fw={class:"text-sm font-medium text-gray-900"},dw={class:"text-sm text-gray-500"},hw={class:"flex-1 overflow-y-auto"},mw={__name:"AppNavigation",setup(e){const t=a1(),n=fe(!1),r=fe(!1),s=fe(!1),o=fe(!1),{user:i,logout:a,hasRole:l}=l1(),u=[{name:"Dashboard",to:"/dashboard"},{name:"Work Orders",to:"/work-orders"},{name:"Requests",to:"/requests"},{name:"Assets",to:"/assets"},{name:"Locations",to:"/locations"},{name:"People",to:"/people"},{name:"Inventory",to:"/inventory"},{name:"Meters",to:"/meters"},{name:"Maintenance",to:"/maintenance/preventive"},{name:"Vendors",to:"/vendors"},{name:"Customers",to:"/customers"},{name:"Categories",to:"/categories"},{name:"Reports",to:"/reports"}],c=M(()=>i.value?`${i.value.firstName} ${i.value.lastName}`:"John Doe");M(()=>{var T,x;if(!i.value)return"JD";const y=((T=i.value.firstName)==null?void 0:T[0])||"",p=((x=i.value.lastName)==null?void 0:x[0])||"";return(y+p).toUpperCase()});const f=M(()=>{var y;return((y=i.value)==null?void 0:y.role)||"Administrator"}),d=M(()=>{try{return l(Pc.ADMIN)||l(Pc.MANAGER)}catch{return!0}}),h=y=>t.path.startsWith(y),m=async()=>{try{r.value=!1,await a()}catch(y){console.error("Logout error:",y)}},w=()=>{o.value=!o.value},_=async()=>{o.value&&(o.value=!1,await vt())},b={mounted(y,p){y.clickOutsideEvent=function(T){y===T.target||y.contains(T.target)||p.value(T)},setTimeout(()=>{document.addEventListener("click",y.clickOutsideEvent)},100)},unmounted(y){document.removeEventListener("click",y.clickOutsideEvent)}};return(y,p)=>{const T=Mu("router-link");return X(),se("div",p1,[R("div",g1,[R("div",{class:ve(["flex flex-col transition-all duration-300",o.value?"w-16":"w-64"])},[R("div",{class:ve(["flex items-center h-16 px-4 bg-white border-b border-gray-200",o.value?"justify-center":"justify-between"])},[R("div",y1,[o.value?(X(),se("div",{key:1,class:"w-8 h-8 rounded bg-primary-600 flex items-center justify-center cursor-pointer hover:bg-primary-700 transition-colors",onClick:_,title:"Click to expand sidebar"},p[8]||(p[8]=[R("span",{class:"text-white font-bold text-sm"},"FP",-1)]))):(X(),se("h1",v1,"Facility Plus"))]),o.value?de("",!0):(X(),se("div",{key:0,onClick:w,class:"flex items-center cursor-pointer flex-shrink-0 ml-2",title:"Collapse sidebar"},p[9]||(p[9]=[R("div",{class:"relative"},[R("div",{class:"w-8 h-6 bg-green-500 rounded-md shadow-inner transition-colors duration-200 flex items-center justify-center"},[R("svg",{class:"w-4 h-4 text-white",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 19l-7-7 7-7"})])])],-1)])))],2),R("div",b1,[R("nav",w1,[(X(),se(De,null,ci(u,x=>J(T,{key:x.name,to:x.to,class:ve(["group flex items-center px-3 py-3 text-sm font-medium rounded-lg transition-all duration-200 relative",[h(x.to)?"text-primary-700 bg-primary-100":"text-gray-700 hover:text-primary-600 hover:bg-gray-50",o.value?"justify-center":""]]),title:o.value?x.name:"",onClick:_},{default:He(()=>[(X(),se("svg",{class:ve(["w-5 h-5 flex-shrink-0",o.value?"mr-0":"mr-3"]),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[x.name==="Dashboard"?(X(),se("path",_1)):de("",!0),x.name==="Work Orders"?(X(),se("path",E1)):de("",!0),x.name==="Requests"?(X(),se("path",S1)):de("",!0),x.name==="Assets"?(X(),se("path",x1)):de("",!0),x.name==="Locations"?(X(),se("g",C1,p[10]||(p[10]=[R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z"},null,-1),R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 11a3 3 0 11-6 0 3 3 0 016 0z"},null,-1)]))):de("",!0),x.name==="People"?(X(),se("path",T1)):de("",!0),x.name==="Inventory"?(X(),se("path",k1)):de("",!0),x.name==="Meters"?(X(),se("g",A1,p[11]||(p[11]=[R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"},null,-1),R("circle",{cx:"12",cy:"12",r:"3"},null,-1)]))):de("",!0),x.name==="Maintenance"?(X(),se("g",R1,p[12]||(p[12]=[R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"},null,-1),R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"},null,-1)]))):de("",!0),x.name==="Categories"?(X(),se("path",P1)):de("",!0),x.name==="Vendors"?(X(),se("path",O1)):de("",!0),x.name==="Customers"?(X(),se("path",$1)):de("",!0),x.name==="Reports"?(X(),se("path",F1)):de("",!0)],2)),o.value?de("",!0):(X(),se("span",L1,pt(x.name),1)),o.value?(X(),se("div",M1,pt(x.name),1)):de("",!0)]),_:2},1032,["to","class","title"])),64))])])],2)]),J(Xn,{name:"mobile-sidebar"},{default:He(()=>[n.value?(X(),se("div",I1,[R("div",{class:"fixed inset-0 bg-gray-600 bg-opacity-75",onClick:p[0]||(p[0]=x=>n.value=!1)}),R("div",D1,[R("div",N1,[p[14]||(p[14]=R("h1",{class:"text-xl font-bold text-primary-600"},"Facility Plus",-1)),J(Me(bs),{variant:"ghost",size:"sm",onClick:p[1]||(p[1]=x=>n.value=!1)},{default:He(()=>p[13]||(p[13]=[R("svg",{class:"h-6 w-6",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})],-1)])),_:1,__:[13]})]),R("nav",B1,[(X(),se(De,null,ci(u,x=>J(T,{key:x.name,to:x.to,class:ve(["group flex items-center px-3 py-3 text-base font-medium rounded-lg transition-colors duration-200",h(x.to)?"text-primary-700 bg-primary-100":"text-gray-700 hover:text-primary-600 hover:bg-gray-50"]),onClick:p[2]||(p[2]=P=>n.value=!1)},{default:He(()=>[(X(),se("svg",V1,[x.name==="Dashboard"?(X(),se("path",j1)):de("",!0),x.name==="Work Orders"?(X(),se("path",H1)):de("",!0),x.name==="Requests"?(X(),se("path",U1)):de("",!0),x.name==="Assets"?(X(),se("path",q1)):de("",!0),x.name==="Locations"?(X(),se("g",z1,p[15]||(p[15]=[R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z"},null,-1),R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 11a3 3 0 11-6 0 3 3 0 016 0z"},null,-1)]))):de("",!0),x.name==="People"?(X(),se("path",W1)):de("",!0),x.name==="Inventory"?(X(),se("path",G1)):de("",!0),x.name==="Meters"?(X(),se("g",K1,p[16]||(p[16]=[R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"},null,-1),R("circle",{cx:"12",cy:"12",r:"3"},null,-1)]))):de("",!0),x.name==="Maintenance"?(X(),se("g",Y1,p[17]||(p[17]=[R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"},null,-1),R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"},null,-1)]))):de("",!0),x.name==="Categories"?(X(),se("path",J1)):de("",!0),x.name==="Vendors"?(X(),se("path",Z1)):de("",!0),x.name==="Customers"?(X(),se("path",X1)):de("",!0),x.name==="Reports"?(X(),se("path",Q1)):de("",!0)])),An(" "+pt(x.name),1)]),_:2},1032,["to","class"])),64))])])])):de("",!0)]),_:1}),R("div",ew,[R("header",tw,[R("div",nw,[R("div",rw,[J(Me(bs),{variant:"ghost",size:"sm",class:"mr-3",onClick:p[3]||(p[3]=x=>n.value=!n.value)},{default:He(()=>p[18]||(p[18]=[R("svg",{class:"h-6 w-6",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 6h16M4 12h16M4 18h16"})],-1)])),_:1,__:[18]}),p[19]||(p[19]=R("h1",{class:"text-xl font-bold text-primary-600"},"Facility Plus",-1))]),p[27]||(p[27]=R("div",{class:"hidden md:block"},null,-1)),R("div",sw,[R("div",ow,[J(Me(bs),{variant:"ghost",size:"sm",onClick:p[4]||(p[4]=x=>s.value=!s.value)},{default:He(()=>p[20]||(p[20]=[R("svg",{class:"h-5 w-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M10 2a6 6 0 00-6 6c0 4.314-.456 6.897-.828 8.223A1.5 1.5 0 004.5 18h11a1.5 1.5 0 001.328-1.777C16.456 14.897 16 12.314 16 8a6 6 0 00-6-6zM9 21a1 1 0 011-1h0a1 1 0 011 1v.5a.5.5 0 01-.5.5h-1a.5.5 0 01-.5-.5V21z"})],-1),R("span",{class:"absolute -top-1 -right-1 h-4 w-4 bg-red-500 text-white text-xs rounded-full flex items-center justify-center"}," 3 ",-1)])),_:1,__:[20]}),J(Xn,{name:"dropdown"},{default:He(()=>[s.value?Vs((X(),se("div",iw,p[21]||(p[21]=[R("div",{class:"px-4 py-3 border-b border-gray-100"},[R("p",{class:"text-sm font-medium text-gray-900"},"Notifications")],-1),R("div",{class:"max-h-64 overflow-y-auto"},[R("div",{class:"px-4 py-3 hover:bg-gray-50 border-b border-gray-100"},[R("p",{class:"text-sm font-medium text-gray-900"},"New Work Order"),R("p",{class:"text-sm text-gray-600"},"HVAC repair requested for Building A"),R("p",{class:"text-xs text-gray-400 mt-1"},"5 minutes ago")]),R("div",{class:"px-4 py-3 hover:bg-gray-50 border-b border-gray-100"},[R("p",{class:"text-sm font-medium text-gray-900"},"Maintenance Due"),R("p",{class:"text-sm text-gray-600"},"Elevator inspection due tomorrow"),R("p",{class:"text-xs text-gray-400 mt-1"},"2 hours ago")]),R("div",{class:"px-4 py-3 hover:bg-gray-50"},[R("p",{class:"text-sm font-medium text-gray-900"},"Low Stock Alert"),R("p",{class:"text-sm text-gray-600"},"HVAC filters running low"),R("p",{class:"text-xs text-gray-400 mt-1"},"1 day ago")])],-1),R("div",{class:"px-4 py-2 border-t border-gray-100"},[R("button",{class:"text-sm text-primary-600 hover:text-primary-700"}," View all notifications ")],-1)]))),[[b,()=>s.value=!1]]):de("",!0)]),_:1})]),R("div",aw,[J(Me(bs),{variant:"ghost",size:"sm",onClick:p[5]||(p[5]=x=>r.value=!r.value),class:"flex items-center space-x-2"},{default:He(()=>[J(Me(m1),{user:Me(i)||{id:"demo",firstName:"John",lastName:"Doe"},size:"sm",status:"online"},null,8,["user"]),R("span",lw,pt(c.value),1),p[22]||(p[22]=R("svg",{class:"w-4 h-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 9l-7 7-7-7"})],-1))]),_:1,__:[22]}),J(Xn,{name:"dropdown"},{default:He(()=>[r.value?Vs((X(),se("div",cw,[R("div",uw,[R("p",fw,pt(c.value),1),R("p",dw,pt(f.value),1)]),J(T,{to:"/profile",class:"flex items-center px-4 py-2 text-sm text-gray-700 hover:bg-gray-50 transition-colors",onClick:p[6]||(p[6]=x=>r.value=!1)},{default:He(()=>p[23]||(p[23]=[R("svg",{class:"w-4 h-4 mr-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z"})],-1),An(" Profile ",-1)])),_:1,__:[23]}),d.value?(X(),Dn(T,{key:0,to:"/settings",class:"flex items-center px-4 py-2 text-sm text-gray-700 hover:bg-gray-50 transition-colors",onClick:p[7]||(p[7]=x=>r.value=!1)},{default:He(()=>p[24]||(p[24]=[R("svg",{class:"w-4 h-4 mr-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"}),R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"})],-1),An(" Settings ",-1)])),_:1,__:[24]})):de("",!0),p[26]||(p[26]=R("div",{class:"border-t border-gray-100 my-1"},null,-1)),R("button",{onClick:m,class:"flex items-center w-full px-4 py-2 text-sm text-gray-700 hover:bg-gray-50 transition-colors"},p[25]||(p[25]=[R("svg",{class:"w-4 h-4 mr-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M17 16l4-4m0 0l-4-4m4 4H7m6 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h4a3 3 0 013 3v1"})],-1),An(" Logout ",-1)]))])),[[b,()=>r.value=!1]]):de("",!0)]),_:1})])])])]),R("main",hw,[Nu(y.$slots,"default",{},void 0,!0)])])])}}},pw=us(mw,[["__scopeId","data-v-cbc322b7"]]),vr=fe([]);let gw=0;function yw(){const e=a=>{const l=++gw,u={id:l,type:"info",title:"",message:"",timeout:5e3,...a};return vr.value.push(u),u.timeout>0&&setTimeout(()=>{t(l)},u.timeout),l},t=a=>{const l=vr.value.findIndex(u=>u.id===a);l>-1&&vr.value.splice(l,1)};return{notifications:vr,addNotification:e,removeNotification:t,clearNotifications:()=>{vr.value=[]},success:(a,l="Success")=>e({type:"success",title:l,message:a}),error:(a,l="Error")=>e({type:"error",title:l,message:a,timeout:0}),warning:(a,l="Warning")=>e({type:"warning",title:l,message:a}),info:(a,l="Info")=>e({type:"info",title:l,message:a})}}const Bd=me({border:[Boolean,Number,String]},"border");function Vd(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:gn();return{borderClasses:M(()=>{const r=e.border;return r===!0||r===""?`${t}--border`:typeof r=="string"||r===0?String(r).split(" ").map(s=>`border-${s}`):[]})}}const vw=[null,"default","comfortable","compact"],jd=me({density:{type:String,default:"default",validator:e=>vw.includes(e)}},"density");function Hd(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:gn();return{densityClasses:ie(()=>`${t}--density-${e.density}`)}}const Ud=me({elevation:{type:[Number,String],validator(e){const t=parseInt(e);return!isNaN(t)&&t>=0&&t<=24}}},"elevation");function qd(e){return{elevationClasses:ie(()=>{const n=Ae(e)?e.value:e.elevation;return n==null?[]:[`elevation-${n}`]})}}const Ro=me({rounded:{type:[Boolean,Number,String],default:void 0},tile:Boolean},"rounded");function Po(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:gn();return{roundedClasses:M(()=>{const r=Ae(e)?e.value:e.rounded,s=Ae(e)?e.value:e.tile,o=[];if(r===!0||r==="")o.push(`${t}--rounded`);else if(typeof r=="string"||r===0)for(const i of String(r).split(" "))o.push(`rounded-${i}`);else(s||r===!1)&&o.push("rounded-0");return o})}}const fr=me({tag:{type:[String,Object,Function],default:"div"}},"tag");function wa(e){return ca(()=>{const t=un(e),n=[],r={};if(t.background)if(Si(t.background)){if(r.backgroundColor=t.background,!t.text&&Og(t.background)){const s=Mt(t.background);if(s.a==null||s.a===1){const o=Mf(s);r.color=o,r.caretColor=o}}}else n.push(`bg-${t.background}`);return t.text&&(Si(t.text)?(r.color=t.text,r.caretColor=t.text):n.push(`text-${t.text}`)),{colorClasses:n,colorStyles:r}})}function to(e){const{colorClasses:t,colorStyles:n}=wa(()=>({text:un(e)}));return{textColorClasses:t,textColorStyles:n}}function Os(e){const{colorClasses:t,colorStyles:n}=wa(()=>({background:un(e)}));return{backgroundColorClasses:t,backgroundColorStyles:n}}const bw=["elevated","flat","tonal","outlined","text","plain"];function zd(e,t){return R(De,null,[e&&R("span",{key:"overlay",class:ve(`${t}__overlay`)},null),R("span",{key:"underlay",class:ve(`${t}__underlay`)},null)])}const _a=me({color:String,variant:{type:String,default:"elevated",validator:e=>bw.includes(e)}},"variant");function Wd(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:gn();const n=ie(()=>{const{variant:o}=un(e);return`${t}--variant-${o}`}),{colorClasses:r,colorStyles:s}=wa(()=>{const{variant:o,color:i}=un(e);return{[["elevated","flat"].includes(o)?"background":"text"]:i}});return{colorClasses:r,colorStyles:s,variantClasses:n}}const Gd=me({baseColor:String,divided:Boolean,direction:{type:String,default:"horizontal"},...Bd(),...pn(),...jd(),...Ud(),...Ro(),...fr(),...yn(),..._a()},"VBtnGroup"),Oc=bt()({name:"VBtnGroup",props:Gd(),setup(e,t){let{slots:n}=t;const{themeClasses:r}=Bn(e),{densityClasses:s}=Hd(e),{borderClasses:o}=Vd(e),{elevationClasses:i}=qd(e),{roundedClasses:a}=Po(e);If({VBtn:{height:ie(()=>e.direction==="horizontal"?"auto":null),baseColor:ie(()=>e.baseColor),color:ie(()=>e.color),density:ie(()=>e.density),flat:!0,variant:ie(()=>e.variant)}}),Nt(()=>J(e.tag,{class:ve(["v-btn-group",`v-btn-group--${e.direction}`,{"v-btn-group--divided":e.divided},r.value,o.value,s.value,i.value,a.value,e.class]),style:Ke(e.style)},n))}}),ww=me({modelValue:{type:null,default:void 0},multiple:Boolean,mandatory:[Boolean,String],max:Number,selectedClass:String,disabled:Boolean},"group"),_w=me({value:null,disabled:Boolean,selectedClass:String},"group-item");function Ew(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;const r=et("useGroupItem");if(!r)throw new Error("[Vuetify] useGroupItem composable must be used inside a component setup function");const s=um();_t(Symbol.for(`${t.description}:id`),s);const o=Pe(t,null);if(!o){if(!n)return o;throw new Error(`[Vuetify] Could not find useGroup injection with symbol ${t.description}`)}const i=ie(()=>e.value),a=M(()=>!!(o.disabled.value||e.disabled));o.register({id:s,value:i,disabled:a},r),ar(()=>{o.unregister(s)});const l=M(()=>o.isSelected(s)),u=M(()=>o.items.value[0].id===s),c=M(()=>o.items.value[o.items.value.length-1].id===s),f=M(()=>l.value&&[o.selectedClass.value,e.selectedClass]);return ye(l,d=>{r.emit("group:selected",{value:d})},{flush:"sync"}),{id:s,isSelected:l,isFirst:u,isLast:c,toggle:()=>o.select(s,!l.value),select:d=>o.select(s,d),selectedClass:f,value:i,disabled:a,group:o}}function Sw(e,t){let n=!1;const r=Be([]),s=ss(e,"modelValue",[],d=>d==null?[]:Kd(r,sg(d)),d=>{const h=Cw(r,d);return e.multiple?h:h[0]}),o=et("useGroup");function i(d,h){const m=d,w=Symbol.for(`${t.description}:id`),b=Gn(w,o==null?void 0:o.vnode).indexOf(h);Me(m.value)==null&&(m.value=b,m.useIndexAsValue=!0),b>-1?r.splice(b,0,m):r.push(m)}function a(d){if(n)return;l();const h=r.findIndex(m=>m.id===d);r.splice(h,1)}function l(){const d=r.find(h=>!h.disabled);d&&e.mandatory==="force"&&!s.value.length&&(s.value=[d.id])}hn(()=>{l()}),ar(()=>{n=!0}),sa(()=>{for(let d=0;dw.id===d);if(!(h&&(m!=null&&m.disabled)))if(e.multiple){const w=s.value.slice(),_=w.findIndex(y=>y===d),b=~_;if(h=h??!b,b&&e.mandatory&&w.length<=1||!b&&e.max!=null&&w.length+1>e.max)return;_<0&&h?w.push(d):_>=0&&!h&&w.splice(_,1),s.value=w}else{const w=s.value.includes(d);if(e.mandatory&&w||!w&&!h)return;s.value=h??!w?[d]:[]}}function c(d){if(e.multiple,s.value.length){const h=s.value[0],m=r.findIndex(b=>b.id===h);let w=(m+d)%r.length,_=r[w];for(;_.disabled&&w!==m;)w=(w+d)%r.length,_=r[w];if(_.disabled)return;s.value=[r[w].id]}else{const h=r.find(m=>!m.disabled);h&&(s.value=[h.id])}}const f={register:i,unregister:a,selected:s,select:u,disabled:ie(()=>e.disabled),prev:()=>c(r.length-1),next:()=>c(1),isSelected:d=>s.value.includes(d),selectedClass:ie(()=>e.selectedClass),items:ie(()=>r),getItemIndex:d=>xw(r,d)};return _t(t,f),f}function xw(e,t){const n=Kd(e,[t]);return n.length?e.findIndex(r=>r.id===n[0]):-1}function Kd(e,t){const n=[];return t.forEach(r=>{const s=e.find(i=>Qn(r,i.value)),o=e[r];(s==null?void 0:s.value)!=null?n.push(s.id):o!=null&&o.useIndexAsValue&&n.push(o.id)}),n}function Cw(e,t){const n=[];return t.forEach(r=>{const s=e.findIndex(o=>o.id===r);if(~s){const o=e[s];n.push(o.value!=null?o.value:s)}}),n}const Yd=Symbol.for("vuetify:v-btn-toggle"),Tw=me({...Gd(),...ww()},"VBtnToggle");bt()({name:"VBtnToggle",props:Tw(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:n}=t;const{isSelected:r,next:s,prev:o,select:i,selected:a}=Sw(e,Yd);return Nt(()=>{const l=Oc.filterProps(e);return J(Oc,Xe({class:["v-btn-toggle",e.class]},l,{style:e.style}),{default:()=>{var u;return[(u=n.default)==null?void 0:u.call(n,{isSelected:r,next:s,prev:o,select:i,selected:a})]}})}),{next:s,prev:o,select:i}}});const kw=me({defaults:Object,disabled:Boolean,reset:[Number,String],root:[Boolean,String],scoped:Boolean},"VDefaultsProvider"),$s=bt(!1)({name:"VDefaultsProvider",props:kw(),setup(e,t){let{slots:n}=t;const{defaults:r,disabled:s,reset:o,root:i,scoped:a}=ea(e);return If(r,{reset:o,root:i,scoped:a,disabled:s}),()=>{var l;return(l=n.default)==null?void 0:l.call(n)}}}),Aw=["x-small","small","default","large","x-large"],Ea=me({size:{type:[String,Number],default:"default"}},"size");function Sa(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:gn();return ca(()=>{const n=e.size;let r,s;return zs(Aw,n)?r=`${t}--size-${n}`:n&&(s={width:pe(n),height:pe(n)}),{sizeClasses:r,sizeStyles:s}})}const Rw=me({color:String,disabled:Boolean,start:Boolean,end:Boolean,icon:Zs,opacity:[String,Number],...pn(),...Ea(),...fr({tag:"i"}),...yn()},"VIcon"),Or=bt()({name:"VIcon",props:Rw(),setup(e,t){let{attrs:n,slots:r}=t;const s=Oe(),{themeClasses:o}=ny(),{iconData:i}=G0(()=>s.value||e.icon),{sizeClasses:a}=Sa(e),{textColorClasses:l,textColorStyles:u}=to(()=>e.color);return Nt(()=>{var d,h;const c=(d=r.default)==null?void 0:d.call(r);c&&(s.value=(h=Af(c).filter(m=>m.type===Qr&&m.children&&typeof m.children=="string")[0])==null?void 0:h.children);const f=!!(n.onClick||n.onClickOnce);return J(i.value.component,{tag:e.tag,icon:i.value.icon,class:ve(["v-icon","notranslate",o.value,a.value,l.value,{"v-icon--clickable":f,"v-icon--disabled":e.disabled,"v-icon--start":e.start,"v-icon--end":e.end},e.class]),style:Ke([{"--v-icon-opacity":e.opacity},a.value?void 0:{fontSize:pe(e.size),height:pe(e.size),width:pe(e.size)},u.value,e.style]),role:f?"button":void 0,"aria-hidden":!f,tabindex:f?e.disabled?-1:0:void 0},{default:()=>[c]})}),{}}});function Jd(e,t){const n=fe(),r=Oe(!1);if(Zp){const s=new IntersectionObserver(o=>{r.value=!!o.find(i=>i.isIntersecting)},t);Qe(()=>{s.disconnect()}),ye(n,(o,i)=>{i&&(s.unobserve(i),r.value=!1),o&&s.observe(o)},{flush:"post"})}return{intersectionRef:n,isIntersecting:r}}const Pw=me({bgColor:String,color:String,indeterminate:[Boolean,String],modelValue:{type:[Number,String],default:0},rotate:{type:[Number,String],default:0},width:{type:[Number,String],default:4},...pn(),...Ea(),...fr({tag:"div"}),...yn()},"VProgressCircular"),Ow=bt()({name:"VProgressCircular",props:Pw(),setup(e,t){let{slots:n}=t;const r=20,s=2*Math.PI*r,o=fe(),{themeClasses:i}=Bn(e),{sizeClasses:a,sizeStyles:l}=Sa(e),{textColorClasses:u,textColorStyles:c}=to(()=>e.color),{textColorClasses:f,textColorStyles:d}=to(()=>e.bgColor),{intersectionRef:h,isIntersecting:m}=Jd(),{resizeRef:w,contentRect:_}=Gf(),b=ie(()=>nr(parseFloat(e.modelValue),0,100)),y=ie(()=>Number(e.width)),p=ie(()=>l.value?Number(e.size):_.value?_.value.width:Math.max(y.value,32)),T=ie(()=>r/(1-y.value/p.value)*2),x=ie(()=>y.value/p.value*T.value),P=ie(()=>pe((100-b.value)/100*s));return Jt(()=>{h.value=o.value,w.value=o.value}),Nt(()=>J(e.tag,{ref:o,class:ve(["v-progress-circular",{"v-progress-circular--indeterminate":!!e.indeterminate,"v-progress-circular--visible":m.value,"v-progress-circular--disable-shrink":e.indeterminate==="disable-shrink"},i.value,a.value,u.value,e.class]),style:Ke([l.value,c.value,e.style]),role:"progressbar","aria-valuemin":"0","aria-valuemax":"100","aria-valuenow":e.indeterminate?void 0:b.value},{default:()=>[R("svg",{style:{transform:`rotate(calc(-90deg + ${Number(e.rotate)}deg))`},xmlns:"http://www.w3.org/2000/svg",viewBox:`0 0 ${T.value} ${T.value}`},[R("circle",{class:ve(["v-progress-circular__underlay",f.value]),style:Ke(d.value),fill:"transparent",cx:"50%",cy:"50%",r,"stroke-width":x.value,"stroke-dasharray":s,"stroke-dashoffset":0},null),R("circle",{class:"v-progress-circular__overlay",fill:"transparent",cx:"50%",cy:"50%",r,"stroke-width":x.value,"stroke-dasharray":s,"stroke-dashoffset":P.value},null)]),n.default&&R("div",{class:"v-progress-circular__content"},[n.default({value:b.value})])]})),{}}}),xa=me({height:[Number,String],maxHeight:[Number,String],maxWidth:[Number,String],minHeight:[Number,String],minWidth:[Number,String],width:[Number,String]},"dimension");function Ca(e){return{dimensionStyles:M(()=>{const n={},r=pe(e.height),s=pe(e.maxHeight),o=pe(e.maxWidth),i=pe(e.minHeight),a=pe(e.minWidth),l=pe(e.width);return r!=null&&(n.height=r),s!=null&&(n.maxHeight=s),o!=null&&(n.maxWidth=o),i!=null&&(n.minHeight=i),a!=null&&(n.minWidth=a),l!=null&&(n.width=l),n})}}const $c={center:"center",top:"bottom",bottom:"top",left:"right",right:"left"},Ta=me({location:String},"location");function Zd(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,n=arguments.length>2?arguments[2]:void 0;const{isRtl:r}=bo();return{locationStyles:M(()=>{if(!e.location)return{};const{side:o,align:i}=Ei(e.location.split(" ").length>1?e.location:`${e.location} center`,r.value);function a(u){return n?n(u):0}const l={};return o!=="center"&&(t?l[$c[o]]=`calc(100% - ${a(o)}px)`:l[o]=0),i!=="center"?t?l[$c[i]]=`calc(100% - ${a(i)}px)`:l[i]=0:(o==="center"?l.top=l.left="50%":l[{top:"left",bottom:"left",left:"top",right:"top"}[o]]="50%",l.transform={top:"translateX(-50%)",bottom:"translateX(-50%)",left:"translateY(-50%)",right:"translateY(-50%)",center:"translate(-50%, -50%)"}[o]),l})}}const $w=me({absolute:Boolean,active:{type:Boolean,default:!0},bgColor:String,bgOpacity:[Number,String],bufferValue:{type:[Number,String],default:0},bufferColor:String,bufferOpacity:[Number,String],clickable:Boolean,color:String,height:{type:[Number,String],default:4},indeterminate:Boolean,max:{type:[Number,String],default:100},modelValue:{type:[Number,String],default:0},opacity:[Number,String],reverse:Boolean,stream:Boolean,striped:Boolean,roundedBar:Boolean,...pn(),...Ta({location:"top"}),...Ro(),...fr(),...yn()},"VProgressLinear"),Xd=bt()({name:"VProgressLinear",props:$w(),emits:{"update:modelValue":e=>!0},setup(e,t){var V;let{slots:n}=t;const r=ss(e,"modelValue"),{isRtl:s,rtlClasses:o}=bo(),{themeClasses:i}=Bn(e),{locationStyles:a}=Zd(e),{textColorClasses:l,textColorStyles:u}=to(()=>e.color),{backgroundColorClasses:c,backgroundColorStyles:f}=Os(()=>e.bgColor||e.color),{backgroundColorClasses:d,backgroundColorStyles:h}=Os(()=>e.bufferColor||e.bgColor||e.color),{backgroundColorClasses:m,backgroundColorStyles:w}=Os(()=>e.color),{roundedClasses:_}=Po(e),{intersectionRef:b,isIntersecting:y}=Jd(),p=M(()=>parseFloat(e.max)),T=M(()=>parseFloat(e.height)),x=M(()=>nr(parseFloat(e.bufferValue)/p.value*100,0,100)),P=M(()=>nr(parseFloat(r.value)/p.value*100,0,100)),I=M(()=>s.value!==e.reverse),S=M(()=>e.indeterminate?"fade-transition":"slide-x-transition"),A=$e&&((V=window.matchMedia)==null?void 0:V.call(window,"(forced-colors: active)").matches);function B(L){if(!b.value)return;const{left:G,right:re,width:Z}=b.value.getBoundingClientRect(),oe=I.value?Z-L.clientX+(re-Z):L.clientX-G;r.value=Math.round(oe/Z*p.value)}return Nt(()=>J(e.tag,{ref:b,class:ve(["v-progress-linear",{"v-progress-linear--absolute":e.absolute,"v-progress-linear--active":e.active&&y.value,"v-progress-linear--reverse":I.value,"v-progress-linear--rounded":e.rounded,"v-progress-linear--rounded-bar":e.roundedBar,"v-progress-linear--striped":e.striped,"v-progress-linear--clickable":e.clickable},_.value,i.value,o.value,e.class]),style:Ke([{bottom:e.location==="bottom"?0:void 0,top:e.location==="top"?0:void 0,height:e.active?pe(T.value):0,"--v-progress-linear-height":pe(T.value),...e.absolute?a.value:{}},e.style]),role:"progressbar","aria-hidden":e.active?"false":"true","aria-valuemin":"0","aria-valuemax":e.max,"aria-valuenow":e.indeterminate?void 0:Math.min(parseFloat(r.value),p.value),onClick:e.clickable&&B},{default:()=>[e.stream&&R("div",{key:"stream",class:ve(["v-progress-linear__stream",l.value]),style:{...u.value,[I.value?"left":"right"]:pe(-T.value),borderTop:`${pe(T.value/2)} dotted`,opacity:parseFloat(e.bufferOpacity),top:`calc(50% - ${pe(T.value/4)})`,width:pe(100-x.value,"%"),"--v-progress-linear-stream-to":pe(T.value*(I.value?1:-1))}},null),R("div",{class:ve(["v-progress-linear__background",A?void 0:c.value]),style:Ke([f.value,{opacity:parseFloat(e.bgOpacity),width:e.stream?0:void 0}])},null),R("div",{class:ve(["v-progress-linear__buffer",A?void 0:d.value]),style:Ke([h.value,{opacity:parseFloat(e.bufferOpacity),width:pe(x.value,"%")}])},null),J(Xn,{name:S.value},{default:()=>[e.indeterminate?R("div",{class:"v-progress-linear__indeterminate"},[["long","short"].map(L=>R("div",{key:L,class:ve(["v-progress-linear__indeterminate",L,A?void 0:m.value]),style:Ke(w.value)},null))]):R("div",{class:ve(["v-progress-linear__determinate",A?void 0:m.value]),style:Ke([w.value,{width:pe(P.value,"%")}])},null)]}),n.default&&R("div",{class:"v-progress-linear__content"},[n.default({value:P.value,buffer:x.value})])]})),{}}}),Fw=me({loading:[Boolean,String]},"loader");function Lw(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:gn();return{loaderClasses:ie(()=>({[`${t}--loading`]:e.loading}))}}function X_(e,t){var r;let{slots:n}=t;return R("div",{class:ve(`${e.name}__loader`)},[((r=n.default)==null?void 0:r.call(n,{color:e.color,isActive:e.active}))||J(Xd,{absolute:e.absolute,active:e.active,color:e.color,height:"2",indeterminate:!0},null)])}const Mw=["static","relative","fixed","absolute","sticky"],Qd=me({position:{type:String,validator:e=>Mw.includes(e)}},"position");function eh(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:gn();return{positionClasses:ie(()=>e.position?`${t}--${e.position}`:void 0)}}function Iw(){const e=et("useRoute");return M(()=>{var t;return(t=e==null?void 0:e.proxy)==null?void 0:t.$route})}function Dw(){var e,t;return(t=(e=et("useRouter"))==null?void 0:e.proxy)==null?void 0:t.$router}function Nw(e,t){var c,f;const n=wm("RouterLink"),r=ie(()=>!!(e.href||e.to)),s=M(()=>(r==null?void 0:r.value)||Cl(t,"click")||Cl(e,"click"));if(typeof n=="string"||!("useLink"in n)){const d=ie(()=>e.href);return{isLink:r,isClickable:s,href:d,linkProps:Be({href:d})}}const o=n.useLink({to:ie(()=>e.to||""),replace:ie(()=>e.replace)}),i=M(()=>e.to?o:void 0),a=Iw(),l=M(()=>{var d,h,m;return i.value?e.exact?a.value?((m=i.value.isExactActive)==null?void 0:m.value)&&Qn(i.value.route.value.query,a.value.query):((h=i.value.isExactActive)==null?void 0:h.value)??!1:((d=i.value.isActive)==null?void 0:d.value)??!1:!1}),u=M(()=>{var d;return e.to?(d=i.value)==null?void 0:d.route.value.href:e.href});return{isLink:r,isClickable:s,isActive:l,route:(c=i.value)==null?void 0:c.route,navigate:(f=i.value)==null?void 0:f.navigate,href:u,linkProps:Be({href:u,"aria-current":ie(()=>l.value?"page":void 0)})}}const Bw=me({href:String,replace:Boolean,to:[String,Object],exact:Boolean},"router");let Qo=!1;function Vw(e,t){let n=!1,r,s;$e&&(e!=null&&e.beforeEach)&&(vt(()=>{window.addEventListener("popstate",o),r=e.beforeEach((i,a,l)=>{Qo?n?t(l):l():setTimeout(()=>n?t(l):l()),Qo=!0}),s=e==null?void 0:e.afterEach(()=>{Qo=!1})}),Qe(()=>{window.removeEventListener("popstate",o),r==null||r(),s==null||s()}));function o(i){var a;(a=i.state)!=null&&a.replaced||(n=!0,setTimeout(()=>n=!1))}}function jw(e,t){ye(()=>{var n;return(n=e.isActive)==null?void 0:n.value},n=>{e.isLink.value&&n!=null&&t&&vt(()=>{t(n)})},{immediate:!0})}const Bi=Symbol("rippleStop"),Hw=80;function Fc(e,t){e.style.transform=t,e.style.webkitTransform=t}function Vi(e){return e.constructor.name==="TouchEvent"}function th(e){return e.constructor.name==="KeyboardEvent"}const Uw=function(e,t){var f;let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=0,s=0;if(!th(e)){const d=t.getBoundingClientRect(),h=Vi(e)?e.touches[e.touches.length-1]:e;r=h.clientX-d.left,s=h.clientY-d.top}let o=0,i=.3;(f=t._ripple)!=null&&f.circle?(i=.15,o=t.clientWidth/2,o=n.center?o:o+Math.sqrt((r-o)**2+(s-o)**2)/4):o=Math.sqrt(t.clientWidth**2+t.clientHeight**2)/2;const a=`${(t.clientWidth-o*2)/2}px`,l=`${(t.clientHeight-o*2)/2}px`,u=n.center?a:`${r-o}px`,c=n.center?l:`${s-o}px`;return{radius:o,scale:i,x:u,y:c,centerX:a,centerY:l}},no={show(e,t){var h;let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(!((h=t==null?void 0:t._ripple)!=null&&h.enabled))return;const r=document.createElement("span"),s=document.createElement("span");r.appendChild(s),r.className="v-ripple__container",n.class&&(r.className+=` ${n.class}`);const{radius:o,scale:i,x:a,y:l,centerX:u,centerY:c}=Uw(e,t,n),f=`${o*2}px`;s.className="v-ripple__animation",s.style.width=f,s.style.height=f,t.appendChild(r);const d=window.getComputedStyle(t);d&&d.position==="static"&&(t.style.position="relative",t.dataset.previousPosition="static"),s.classList.add("v-ripple__animation--enter"),s.classList.add("v-ripple__animation--visible"),Fc(s,`translate(${a}, ${l}) scale3d(${i},${i},${i})`),s.dataset.activated=String(performance.now()),requestAnimationFrame(()=>{requestAnimationFrame(()=>{s.classList.remove("v-ripple__animation--enter"),s.classList.add("v-ripple__animation--in"),Fc(s,`translate(${u}, ${c}) scale3d(1,1,1)`)})})},hide(e){var o;if(!((o=e==null?void 0:e._ripple)!=null&&o.enabled))return;const t=e.getElementsByClassName("v-ripple__animation");if(t.length===0)return;const n=Array.from(t).findLast(i=>!i.dataset.isHiding);if(n)n.dataset.isHiding="true";else return;const r=performance.now()-Number(n.dataset.activated),s=Math.max(250-r,0);setTimeout(()=>{n.classList.remove("v-ripple__animation--in"),n.classList.add("v-ripple__animation--out"),setTimeout(()=>{var a;e.getElementsByClassName("v-ripple__animation").length===1&&e.dataset.previousPosition&&(e.style.position=e.dataset.previousPosition,delete e.dataset.previousPosition),((a=n.parentNode)==null?void 0:a.parentNode)===e&&e.removeChild(n.parentNode)},300)},s)}};function nh(e){return typeof e>"u"||!!e}function Wr(e){const t={},n=e.currentTarget;if(!(!(n!=null&&n._ripple)||n._ripple.touched||e[Bi])){if(e[Bi]=!0,Vi(e))n._ripple.touched=!0,n._ripple.isTouch=!0;else if(n._ripple.isTouch)return;if(t.center=n._ripple.centered||th(e),n._ripple.class&&(t.class=n._ripple.class),Vi(e)){if(n._ripple.showTimerCommit)return;n._ripple.showTimerCommit=()=>{no.show(e,n,t)},n._ripple.showTimer=window.setTimeout(()=>{var r;(r=n==null?void 0:n._ripple)!=null&&r.showTimerCommit&&(n._ripple.showTimerCommit(),n._ripple.showTimerCommit=null)},Hw)}else no.show(e,n,t)}}function Lc(e){e[Bi]=!0}function ft(e){const t=e.currentTarget;if(t!=null&&t._ripple){if(window.clearTimeout(t._ripple.showTimer),e.type==="touchend"&&t._ripple.showTimerCommit){t._ripple.showTimerCommit(),t._ripple.showTimerCommit=null,t._ripple.showTimer=window.setTimeout(()=>{ft(e)});return}window.setTimeout(()=>{t._ripple&&(t._ripple.touched=!1)}),no.hide(t)}}function rh(e){const t=e.currentTarget;t!=null&&t._ripple&&(t._ripple.showTimerCommit&&(t._ripple.showTimerCommit=null),window.clearTimeout(t._ripple.showTimer))}let Gr=!1;function Mc(e,t){!Gr&&t.includes(e.key)&&(Gr=!0,Wr(e))}function sh(e){Gr=!1,ft(e)}function oh(e){Gr&&(Gr=!1,ft(e))}function ih(e,t,n){const{value:r,modifiers:s}=t,o=nh(r);o||no.hide(e),e._ripple=e._ripple??{},e._ripple.enabled=o,e._ripple.centered=s.center,e._ripple.circle=s.circle;const i=wi(r)?r:{};i.class&&(e._ripple.class=i.class);const a=i.keys??["Enter","Space"];if(e._ripple.keyDownHandler=l=>Mc(l,a),o&&!n){if(s.stop){e.addEventListener("touchstart",Lc,{passive:!0}),e.addEventListener("mousedown",Lc);return}e.addEventListener("touchstart",Wr,{passive:!0}),e.addEventListener("touchend",ft,{passive:!0}),e.addEventListener("touchmove",rh,{passive:!0}),e.addEventListener("touchcancel",ft),e.addEventListener("mousedown",Wr),e.addEventListener("mouseup",ft),e.addEventListener("mouseleave",ft),e.addEventListener("keydown",l=>Mc(l,a)),e.addEventListener("keyup",sh),e.addEventListener("blur",oh),e.addEventListener("dragstart",ft,{passive:!0})}else!o&&n&&ah(e)}function ah(e){var t;e.removeEventListener("mousedown",Wr),e.removeEventListener("touchstart",Wr),e.removeEventListener("touchend",ft),e.removeEventListener("touchmove",rh),e.removeEventListener("touchcancel",ft),e.removeEventListener("mouseup",ft),e.removeEventListener("mouseleave",ft),(t=e._ripple)!=null&&t.keyDownHandler&&e.removeEventListener("keydown",e._ripple.keyDownHandler),e.removeEventListener("keyup",sh),e.removeEventListener("dragstart",ft),e.removeEventListener("blur",oh)}function qw(e,t){ih(e,t,!1)}function zw(e){ah(e),delete e._ripple}function Ww(e,t){if(t.value===t.oldValue)return;const n=nh(t.oldValue);ih(e,t,n)}const Gw={mounted:qw,unmounted:zw,updated:Ww},Kw=me({active:{type:Boolean,default:void 0},activeColor:String,baseColor:String,symbol:{type:null,default:Yd},flat:Boolean,icon:[Boolean,String,Function,Object],prependIcon:Zs,appendIcon:Zs,block:Boolean,readonly:Boolean,slim:Boolean,stacked:Boolean,ripple:{type:[Boolean,Object],default:!0},text:{type:[String,Number,Boolean],default:void 0},...Bd(),...pn(),...jd(),...xa(),...Ud(),..._w(),...Fw(),...Ta(),...Qd(),...Ro(),...Bw(),...Ea(),...fr({tag:"button"}),...yn(),..._a({variant:"elevated"})},"VBtn"),Yw=bt()({name:"VBtn",props:Kw(),emits:{"group:selected":e=>!0},setup(e,t){let{attrs:n,slots:r}=t;const{themeClasses:s}=Bn(e),{borderClasses:o}=Vd(e),{densityClasses:i}=Hd(e),{dimensionStyles:a}=Ca(e),{elevationClasses:l}=qd(e),{loaderClasses:u}=Lw(e),{locationStyles:c}=Zd(e),{positionClasses:f}=eh(e),{roundedClasses:d}=Po(e),{sizeClasses:h,sizeStyles:m}=Sa(e),w=Ew(e,e.symbol,!1),_=Nw(e,n),b=M(()=>{var V;return e.active!==void 0?e.active:_.isLink.value?(V=_.isActive)==null?void 0:V.value:w==null?void 0:w.isSelected.value}),y=ie(()=>b.value?e.activeColor??e.color:e.color),p=M(()=>{var L,G;return{color:(w==null?void 0:w.isSelected.value)&&(!_.isLink.value||((L=_.isActive)==null?void 0:L.value))||!w||((G=_.isActive)==null?void 0:G.value)?y.value??e.baseColor:e.baseColor,variant:e.variant}}),{colorClasses:T,colorStyles:x,variantClasses:P}=Wd(p),I=M(()=>(w==null?void 0:w.disabled.value)||e.disabled),S=ie(()=>e.variant==="elevated"&&!(e.disabled||e.flat||e.border)),A=M(()=>{if(!(e.value===void 0||typeof e.value=="symbol"))return Object(e.value)===e.value?JSON.stringify(e.value,null,0):e.value});function B(V){var L;I.value||_.isLink.value&&(V.metaKey||V.ctrlKey||V.shiftKey||V.button!==0||n.target==="_blank")||((L=_.navigate)==null||L.call(_,V),w==null||w.toggle())}return jw(_,w==null?void 0:w.select),Nt(()=>{const V=_.isLink.value?"a":e.tag,L=!!(e.prependIcon||r.prepend),G=!!(e.appendIcon||r.append),re=!!(e.icon&&e.icon!==!0);return Vs(J(V,Xe({type:V==="a"?void 0:"button",class:["v-btn",w==null?void 0:w.selectedClass.value,{"v-btn--active":b.value,"v-btn--block":e.block,"v-btn--disabled":I.value,"v-btn--elevated":S.value,"v-btn--flat":e.flat,"v-btn--icon":!!e.icon,"v-btn--loading":e.loading,"v-btn--readonly":e.readonly,"v-btn--slim":e.slim,"v-btn--stacked":e.stacked},s.value,o.value,T.value,i.value,l.value,u.value,f.value,d.value,h.value,P.value,e.class],style:[x.value,a.value,c.value,m.value,e.style],"aria-busy":e.loading?!0:void 0,disabled:I.value||void 0,tabindex:e.loading||e.readonly?-1:void 0,onClick:B,value:A.value},_.linkProps),{default:()=>{var Z;return[zd(!0,"v-btn"),!e.icon&&L&&R("span",{key:"prepend",class:"v-btn__prepend"},[r.prepend?J($s,{key:"prepend-defaults",disabled:!e.prependIcon,defaults:{VIcon:{icon:e.prependIcon}}},r.prepend):J(Or,{key:"prepend-icon",icon:e.prependIcon},null)]),R("span",{class:"v-btn__content","data-no-activator":""},[!r.default&&re?J(Or,{key:"content-icon",icon:e.icon},null):J($s,{key:"content-defaults",disabled:!re,defaults:{VIcon:{icon:e.icon}}},{default:()=>{var oe;return[((oe=r.default)==null?void 0:oe.call(r))??pt(e.text)]}})]),!e.icon&&G&&R("span",{key:"append",class:"v-btn__append"},[r.append?J($s,{key:"append-defaults",disabled:!e.appendIcon,defaults:{VIcon:{icon:e.appendIcon}}},r.append):J(Or,{key:"append-icon",icon:e.appendIcon},null)]),!!e.loading&&R("span",{key:"loader",class:"v-btn__loader"},[((Z=r.loader)==null?void 0:Z.call(r))??J(Ow,{color:typeof e.loading=="boolean"?void 0:e.loading,indeterminate:!0,width:"2"},null)])]}}),[[Gw,!I.value&&e.ripple,"",{center:!!e.icon}]])}),{group:w}}});function ei(e,t){return{x:e.x+t.x,y:e.y+t.y}}function Jw(e,t){return{x:e.x-t.x,y:e.y-t.y}}function Ic(e,t){if(e.side==="top"||e.side==="bottom"){const{side:n,align:r}=e,s=r==="left"?0:r==="center"?t.width/2:r==="right"?t.width:r,o=n==="top"?0:n==="bottom"?t.height:n;return ei({x:s,y:o},t)}else if(e.side==="left"||e.side==="right"){const{side:n,align:r}=e,s=n==="left"?0:n==="right"?t.width:n,o=r==="top"?0:r==="center"?t.height/2:r==="bottom"?t.height:r;return ei({x:s,y:o},t)}return ei({x:t.width/2,y:t.height/2},t)}const lh={static:Qw,connected:t2},Zw=me({locationStrategy:{type:[String,Function],default:"static",validator:e=>typeof e=="function"||e in lh},location:{type:String,default:"bottom"},origin:{type:String,default:"auto"},offset:[Number,String,Array]},"VOverlay-location-strategies");function Xw(e,t){const n=fe({}),r=fe();$e&&ns(()=>!!(t.isActive.value&&e.locationStrategy),a=>{var l,u;ye(()=>e.locationStrategy,a),Qe(()=>{window.removeEventListener("resize",s),visualViewport==null||visualViewport.removeEventListener("resize",o),visualViewport==null||visualViewport.removeEventListener("scroll",i),r.value=void 0}),window.addEventListener("resize",s,{passive:!0}),visualViewport==null||visualViewport.addEventListener("resize",o,{passive:!0}),visualViewport==null||visualViewport.addEventListener("scroll",i,{passive:!0}),typeof e.locationStrategy=="function"?r.value=(l=e.locationStrategy(t,e,n))==null?void 0:l.updateLocation:r.value=(u=lh[e.locationStrategy](t,e,n))==null?void 0:u.updateLocation});function s(a){var l;(l=r.value)==null||l.call(r,a)}function o(a){var l;(l=r.value)==null||l.call(r,a)}function i(a){var l;(l=r.value)==null||l.call(r,a)}return{contentStyles:n,updateLocation:r}}function Qw(){}function e2(e,t){const n=hg(e);return t?n.x+=parseFloat(e.style.right||0):n.x-=parseFloat(e.style.left||0),n.y-=parseFloat(e.style.top||0),n}function t2(e,t,n){(Array.isArray(e.target.value)||Gg(e.target.value))&&Object.assign(n.value,{position:"fixed",top:0,[e.isRtl.value?"right":"left"]:0});const{preferredAnchor:s,preferredOrigin:o}=ca(()=>{const b=Ei(t.location,e.isRtl.value),y=t.origin==="overlap"?b:t.origin==="auto"?qo(b):Ei(t.origin,e.isRtl.value);return b.side===y.side&&b.align===zo(y).align?{preferredAnchor:kl(b),preferredOrigin:kl(y)}:{preferredAnchor:b,preferredOrigin:y}}),[i,a,l,u]=["minWidth","minHeight","maxWidth","maxHeight"].map(b=>M(()=>{const y=parseFloat(t[b]);return isNaN(y)?1/0:y})),c=M(()=>{if(Array.isArray(t.offset))return t.offset;if(typeof t.offset=="string"){const b=t.offset.split(" ").map(parseFloat);return b.length<2&&b.push(0),b}return typeof t.offset=="number"?[t.offset,0]:[0,0]});let f=!1,d=-1;const h=new ig(4),m=new ResizeObserver(()=>{if(!f)return;if(requestAnimationFrame(y=>{y!==d&&h.clear(),requestAnimationFrame(p=>{d=p})}),h.isFull){const y=h.values();if(Qn(y.at(-1),y.at(-3))&&!Qn(y.at(-1),y.at(-2)))return}const b=_();b&&h.push(b.flipped)});let w=new Dt({x:0,y:0,width:0,height:0});ye(e.target,(b,y)=>{y&&!Array.isArray(y)&&m.unobserve(y),Array.isArray(b)?Qn(b,y)||_():b&&m.observe(b)},{immediate:!0}),ye(e.contentEl,(b,y)=>{y&&m.unobserve(y),b&&m.observe(b)},{immediate:!0}),Qe(()=>{m.disconnect()});function _(){if(f=!1,requestAnimationFrame(()=>f=!0),!e.target.value||!e.contentEl.value)return;(Array.isArray(e.target.value)||e.target.value.offsetParent||e.target.value.getClientRects().length)&&(w=fg(e.target.value));const b=e2(e.contentEl.value,e.isRtl.value),y=Gs(e.contentEl.value),p=12;y.length||(y.push(document.documentElement),e.contentEl.value.style.top&&e.contentEl.value.style.left||(b.x-=parseFloat(document.documentElement.style.getPropertyValue("--v-body-scroll-x")||0),b.y-=parseFloat(document.documentElement.style.getPropertyValue("--v-body-scroll-y")||0)));const T=y.reduce((G,re)=>{const Z=dg(re);return G?new Dt({x:Math.max(G.left,Z.left),y:Math.max(G.top,Z.top),width:Math.min(G.right,Z.right)-Math.max(G.left,Z.left),height:Math.min(G.bottom,Z.bottom)-Math.max(G.top,Z.top)}):Z},void 0);T.x+=p,T.y+=p,T.width-=p*2,T.height-=p*2;let x={anchor:s.value,origin:o.value};function P(G){const re=new Dt(b),Z=Ic(G.anchor,w),oe=Ic(G.origin,re);let{x:ee,y:ce}=Jw(Z,oe);switch(G.anchor.side){case"top":ce-=c.value[0];break;case"bottom":ce+=c.value[0];break;case"left":ee-=c.value[0];break;case"right":ee+=c.value[0];break}switch(G.anchor.align){case"top":ce-=c.value[1];break;case"bottom":ce+=c.value[1];break;case"left":ee-=c.value[1];break;case"right":ee+=c.value[1];break}return re.x+=ee,re.y+=ce,re.width=Math.min(re.width,l.value),re.height=Math.min(re.height,u.value),{overflows:Rl(re,T),x:ee,y:ce}}let I=0,S=0;const A={x:0,y:0},B={x:!1,y:!1};let V=-1;for(;!(V++>10);){const{x:G,y:re,overflows:Z}=P(x);I+=G,S+=re,b.x+=G,b.y+=re;{const oe=Al(x.anchor),ee=Z.x.before||Z.x.after,ce=Z.y.before||Z.y.after;let Ne=!1;if(["x","y"].forEach(Ce=>{if(Ce==="x"&&ee&&!B.x||Ce==="y"&&ce&&!B.y){const Le={anchor:{...x.anchor},origin:{...x.origin}},Re=Ce==="x"?oe==="y"?zo:qo:oe==="y"?qo:zo;Le.anchor=Re(Le.anchor),Le.origin=Re(Le.origin);const{overflows:je}=P(Le);(je[Ce].before<=Z[Ce].before&&je[Ce].after<=Z[Ce].after||je[Ce].before+je[Ce].after<(Z[Ce].before+Z[Ce].after)/2)&&(x=Le,Ne=B[Ce]=!0)}}),Ne)continue}Z.x.before&&(I+=Z.x.before,b.x+=Z.x.before),Z.x.after&&(I-=Z.x.after,b.x-=Z.x.after),Z.y.before&&(S+=Z.y.before,b.y+=Z.y.before),Z.y.after&&(S-=Z.y.after,b.y-=Z.y.after);{const oe=Rl(b,T);A.x=T.width-oe.x.before-oe.x.after,A.y=T.height-oe.y.before-oe.y.after,I+=oe.x.before,b.x+=oe.x.before,S+=oe.y.before,b.y+=oe.y.before}break}const L=Al(x.anchor);return Object.assign(n.value,{"--v-overlay-anchor-origin":`${x.anchor.side} ${x.anchor.align}`,transformOrigin:`${x.origin.side} ${x.origin.align}`,top:pe(ti(S)),left:e.isRtl.value?void 0:pe(ti(I)),right:e.isRtl.value?pe(ti(-I)):void 0,minWidth:pe(L==="y"?Math.min(i.value,w.width):i.value),maxWidth:pe(Dc(nr(A.x,i.value===1/0?0:i.value,l.value))),maxHeight:pe(Dc(nr(A.y,a.value===1/0?0:a.value,u.value)))}),{available:A,contentBox:b,flipped:B}}return ye(()=>[s.value,o.value,t.offset,t.minWidth,t.minHeight,t.maxWidth,t.maxHeight],()=>_()),vt(()=>{const b=_();if(!b)return;const{available:y,contentBox:p}=b;p.height>y.y&&requestAnimationFrame(()=>{_(),requestAnimationFrame(()=>{_()})})}),{updateLocation:_}}function ti(e){return Math.round(e*devicePixelRatio)/devicePixelRatio}function Dc(e){return Math.ceil(e*devicePixelRatio)/devicePixelRatio}let ji=!0;const ro=[];function n2(e){!ji||ro.length?(ro.push(e),Hi()):(ji=!1,e(),Hi())}let Nc=-1;function Hi(){cancelAnimationFrame(Nc),Nc=requestAnimationFrame(()=>{const e=ro.shift();e&&e(),ro.length?Hi():ji=!0})}const Fs={none:null,close:o2,block:i2,reposition:a2},r2=me({scrollStrategy:{type:[String,Function],default:"block",validator:e=>typeof e=="function"||e in Fs}},"VOverlay-scroll-strategies");function s2(e,t){if(!$e)return;let n;Jt(async()=>{n==null||n.stop(),t.isActive.value&&e.scrollStrategy&&(n=Mn(),await new Promise(r=>setTimeout(r)),n.active&&n.run(()=>{var r;typeof e.scrollStrategy=="function"?e.scrollStrategy(t,e,n):(r=Fs[e.scrollStrategy])==null||r.call(Fs,t,e,n)}))}),Qe(()=>{n==null||n.stop()})}function o2(e){function t(n){e.isActive.value=!1}ch(e.target.value??e.contentEl.value,t)}function i2(e,t){var a;const n=(a=e.root.value)==null?void 0:a.offsetParent,r=Array.isArray(e.target.value)?document.elementFromPoint(...e.target.value):e.target.value,s=[...new Set([...Gs(r,t.contained?n:void 0),...Gs(e.contentEl.value,t.contained?n:void 0)])].filter(l=>!l.classList.contains("v-overlay-scroll-blocked")),o=window.innerWidth-document.documentElement.offsetWidth,i=(l=>da(l)&&l)(n||document.documentElement);i&&e.root.value.classList.add("v-overlay--scroll-blocked"),s.forEach((l,u)=>{l.style.setProperty("--v-body-scroll-x",pe(-l.scrollLeft)),l.style.setProperty("--v-body-scroll-y",pe(-l.scrollTop)),l!==document.documentElement&&l.style.setProperty("--v-scrollbar-offset",pe(o)),l.classList.add("v-overlay-scroll-blocked")}),Qe(()=>{s.forEach((l,u)=>{const c=parseFloat(l.style.getPropertyValue("--v-body-scroll-x")),f=parseFloat(l.style.getPropertyValue("--v-body-scroll-y")),d=l.style.scrollBehavior;l.style.scrollBehavior="auto",l.style.removeProperty("--v-body-scroll-x"),l.style.removeProperty("--v-body-scroll-y"),l.style.removeProperty("--v-scrollbar-offset"),l.classList.remove("v-overlay-scroll-blocked"),l.scrollLeft=-c,l.scrollTop=-f,l.style.scrollBehavior=d}),i&&e.root.value.classList.remove("v-overlay--scroll-blocked")})}function a2(e,t,n){let r=!1,s=-1,o=-1;function i(a){n2(()=>{var c,f;const l=performance.now();(f=(c=e.updateLocation).value)==null||f.call(c,a),r=(performance.now()-l)/(1e3/60)>2})}o=(typeof requestIdleCallback>"u"?a=>a():requestIdleCallback)(()=>{n.run(()=>{ch(e.target.value??e.contentEl.value,a=>{r?(cancelAnimationFrame(s),s=requestAnimationFrame(()=>{s=requestAnimationFrame(()=>{i(a)})})):i(a)})})}),Qe(()=>{typeof cancelIdleCallback<"u"&&cancelIdleCallback(o),cancelAnimationFrame(s)})}function ch(e,t){const n=Array.isArray(e)?document.elementFromPoint(...e):e,r=[document,...Gs(n)];r.forEach(s=>{s.addEventListener("scroll",t,{passive:!0})}),Qe(()=>{r.forEach(s=>{s.removeEventListener("scroll",t)})})}const l2=Symbol.for("vuetify:v-menu"),c2=me({closeDelay:[Number,String],openDelay:[Number,String]},"delay");function u2(e,t){let n=()=>{};function r(i){n==null||n();const a=Number(i?e.openDelay:e.closeDelay);return new Promise(l=>{n=lg(a,()=>{t==null||t(i),l(i)})})}function s(){return r(!0)}function o(){return r(!1)}return{clearDelay:n,runOpenDelay:s,runCloseDelay:o}}const f2=me({target:[String,Object],activator:[String,Object],activatorProps:{type:Object,default:()=>({})},openOnClick:{type:Boolean,default:void 0},openOnHover:Boolean,openOnFocus:{type:Boolean,default:void 0},closeOnContentClick:Boolean,...c2()},"VOverlay-activator");function d2(e,t){let{isActive:n,isTop:r,contentEl:s}=t;const o=et("useActivator"),i=fe();let a=!1,l=!1,u=!0;const c=M(()=>e.openOnFocus||e.openOnFocus==null&&e.openOnHover),f=M(()=>e.openOnClick||e.openOnClick==null&&!e.openOnHover&&!c.value),{runOpenDelay:d,runCloseDelay:h}=u2(e,S=>{S===(e.openOnHover&&a||c.value&&l)&&!(e.openOnHover&&n.value&&!r.value)&&(n.value!==S&&(u=!0),n.value=S)}),m=fe(),w={onClick:S=>{S.stopPropagation(),i.value=S.currentTarget||S.target,n.value||(m.value=[S.clientX,S.clientY]),n.value=!n.value},onMouseenter:S=>{var A;(A=S.sourceCapabilities)!=null&&A.firesTouchEvents||(a=!0,i.value=S.currentTarget||S.target,d())},onMouseleave:S=>{a=!1,h()},onFocus:S=>{ag(S.target,":focus-visible")!==!1&&(l=!0,S.stopPropagation(),i.value=S.currentTarget||S.target,d())},onBlur:S=>{l=!1,S.stopPropagation(),h()}},_=M(()=>{const S={};return f.value&&(S.onClick=w.onClick),e.openOnHover&&(S.onMouseenter=w.onMouseenter,S.onMouseleave=w.onMouseleave),c.value&&(S.onFocus=w.onFocus,S.onBlur=w.onBlur),S}),b=M(()=>{const S={};if(e.openOnHover&&(S.onMouseenter=()=>{a=!0,d()},S.onMouseleave=()=>{a=!1,h()}),c.value&&(S.onFocusin=()=>{l=!0,d()},S.onFocusout=()=>{l=!1,h()}),e.closeOnContentClick){const A=Pe(l2,null);S.onClick=()=>{n.value=!1,A==null||A.closeParents()}}return S}),y=M(()=>{const S={};return e.openOnHover&&(S.onMouseenter=()=>{u&&(a=!0,u=!1,d())},S.onMouseleave=()=>{a=!1,h()}),S});ye(r,S=>{var A;S&&(e.openOnHover&&!a&&(!c.value||!l)||c.value&&!l&&(!e.openOnHover||!a))&&!((A=s.value)!=null&&A.contains(document.activeElement))&&(n.value=!1)}),ye(n,S=>{S||setTimeout(()=>{m.value=void 0})},{flush:"post"});const p=_i();Jt(()=>{p.value&&vt(()=>{i.value=p.el})});const T=_i(),x=M(()=>e.target==="cursor"&&m.value?m.value:T.value?T.el:uh(e.target,o)||i.value),P=M(()=>Array.isArray(x.value)?void 0:x.value);let I;return ye(()=>!!e.activator,S=>{S&&$e?(I=Mn(),I.run(()=>{h2(e,o,{activatorEl:i,activatorEvents:_})})):I&&I.stop()},{flush:"post",immediate:!0}),Qe(()=>{I==null||I.stop()}),{activatorEl:i,activatorRef:p,target:x,targetEl:P,targetRef:T,activatorEvents:_,contentEvents:b,scrimEvents:y}}function h2(e,t,n){let{activatorEl:r,activatorEvents:s}=n;ye(()=>e.activator,(l,u)=>{if(u&&l!==u){const c=a(u);c&&i(c)}l&&vt(()=>o())},{immediate:!0}),ye(()=>e.activatorProps,()=>{o()}),Qe(()=>{i()});function o(){let l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:a(),u=arguments.length>1&&arguments[1]!==void 0?arguments[1]:e.activatorProps;l&&pg(l,Xe(s.value,u))}function i(){let l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:a(),u=arguments.length>1&&arguments[1]!==void 0?arguments[1]:e.activatorProps;l&&gg(l,Xe(s.value,u))}function a(){let l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:e.activator;const u=uh(l,t);return r.value=(u==null?void 0:u.nodeType)===Node.ELEMENT_NODE?u:void 0,r.value}}function uh(e,t){var r,s;if(!e)return;let n;if(e==="parent"){let o=(s=(r=t==null?void 0:t.proxy)==null?void 0:r.$el)==null?void 0:s.parentNode;for(;o!=null&&o.hasAttribute("data-no-activator");)o=o.parentNode;n=o}else typeof e=="string"?n=document.querySelector(e):"$el"in e?n=e.$el:n=e;return n}function m2(){if(!$e)return Oe(!1);const{ssr:e}=B0();if(e){const t=Oe(!1);return hn(()=>{t.value=!0}),t}else return Oe(!0)}const p2=me({eager:Boolean},"lazy");function g2(e,t){const n=Oe(!1),r=ie(()=>n.value||e.eager||t.value);ye(t,()=>n.value=!0);function s(){e.eager||(n.value=!1)}return{isBooted:n,hasContent:r,onAfterLeave:s}}function fh(){const t=et("useScopeId").vnode.scopeId;return{scopeId:t?{[t]:""}:void 0}}const Bc=Symbol.for("vuetify:stack"),br=Be([]);function y2(e,t,n){const r=et("useStack"),s=!n,o=Pe(Bc,void 0),i=Be({activeChildren:new Set});_t(Bc,i);const a=Oe(Number(un(t)));ns(e,()=>{var f;const c=(f=br.at(-1))==null?void 0:f[1];a.value=c?c+10:Number(un(t)),s&&br.push([r.uid,a.value]),o==null||o.activeChildren.add(r.uid),Qe(()=>{if(s){const d=he(br).findIndex(h=>h[0]===r.uid);br.splice(d,1)}o==null||o.activeChildren.delete(r.uid)})});const l=Oe(!0);s&&Jt(()=>{var f;const c=((f=br.at(-1))==null?void 0:f[0])===r.uid;setTimeout(()=>l.value=c)});const u=ie(()=>!i.activeChildren.size);return{globalTop:Zr(l),localTop:u,stackStyles:ie(()=>({zIndex:a.value}))}}function v2(e){return{teleportTarget:M(()=>{const n=e();if(n===!0||!$e)return;const r=n===!1?document.body:typeof n=="string"?document.querySelector(n):n;if(r==null)return;let s=[...r.children].find(o=>o.matches(".v-overlay-container"));return s||(s=document.createElement("div"),s.className="v-overlay-container",r.appendChild(s)),s})}}const b2=me({transition:{type:null,default:"fade-transition",validator:e=>e!==!0}},"transition"),w2=(e,t)=>{let{slots:n}=t;const{transition:r,disabled:s,group:o,...i}=e,{component:a=o?Op:Xn,...l}=wi(r)?r:{};let u;return wi(r)?u=Xe(l,cg({disabled:s,group:o}),i):u=Xe({name:s||!r?"":r},i),ts(a,u,n)};function _2(){return!0}function dh(e,t,n){if(!e||hh(e,n)===!1)return!1;const r=Df(t);if(typeof ShadowRoot<"u"&&r instanceof ShadowRoot&&r.host===e.target)return!1;const s=(typeof n.value=="object"&&n.value.include||(()=>[]))();return s.push(t),!s.some(o=>o==null?void 0:o.contains(e.target))}function hh(e,t){return(typeof t.value=="object"&&t.value.closeConditional||_2)(e)}function E2(e,t,n){const r=typeof n.value=="function"?n.value:n.value.handler;e.shadowTarget=e.target,t._clickOutside.lastMousedownWasOutside&&dh(e,t,n)&&setTimeout(()=>{hh(e,n)&&r&&r(e)},0)}function Vc(e,t){const n=Df(e);t(document),typeof ShadowRoot<"u"&&n instanceof ShadowRoot&&t(n)}const jc={mounted(e,t){const n=s=>E2(s,e,t),r=s=>{e._clickOutside.lastMousedownWasOutside=dh(s,e,t)};Vc(e,s=>{s.addEventListener("click",n,!0),s.addEventListener("mousedown",r,!0)}),e._clickOutside||(e._clickOutside={lastMousedownWasOutside:!1}),e._clickOutside[t.instance.$.uid]={onClick:n,onMousedown:r}},beforeUnmount(e,t){e._clickOutside&&(Vc(e,n=>{var o;if(!n||!((o=e._clickOutside)!=null&&o[t.instance.$.uid]))return;const{onClick:r,onMousedown:s}=e._clickOutside[t.instance.$.uid];n.removeEventListener("click",r,!0),n.removeEventListener("mousedown",s,!0)}),delete e._clickOutside[t.instance.$.uid])}};function S2(e){const{modelValue:t,color:n,...r}=e;return J(Xn,{name:"fade-transition",appear:!0},{default:()=>[e.modelValue&&R("div",Xe({class:["v-overlay__scrim",e.color.backgroundColorClasses.value],style:e.color.backgroundColorStyles.value},r),null)]})}const mh=me({absolute:Boolean,attach:[Boolean,String,Object],closeOnBack:{type:Boolean,default:!0},contained:Boolean,contentClass:null,contentProps:null,disabled:Boolean,opacity:[Number,String],noClickAnimation:Boolean,modelValue:Boolean,persistent:Boolean,scrim:{type:[Boolean,String],default:!0},zIndex:{type:[Number,String],default:2e3},...f2(),...pn(),...xa(),...p2(),...Zw(),...r2(),...yn(),...b2()},"VOverlay"),Hc=bt()({name:"VOverlay",directives:{vClickOutside:jc},inheritAttrs:!1,props:{_disableGlobalStack:Boolean,...mh()},emits:{"click:outside":e=>!0,"update:modelValue":e=>!0,keydown:e=>!0,afterEnter:()=>!0,afterLeave:()=>!0},setup(e,t){let{slots:n,attrs:r,emit:s}=t;const o=et("VOverlay"),i=fe(),a=fe(),l=fe(),u=ss(e,"modelValue"),c=M({get:()=>u.value,set:C=>{C&&e.disabled||(u.value=C)}}),{themeClasses:f}=Bn(e),{rtlClasses:d,isRtl:h}=bo(),{hasContent:m,onAfterLeave:w}=g2(e,c),_=Os(()=>typeof e.scrim=="string"?e.scrim:null),{globalTop:b,localTop:y,stackStyles:p}=y2(c,()=>e.zIndex,e._disableGlobalStack),{activatorEl:T,activatorRef:x,target:P,targetEl:I,targetRef:S,activatorEvents:A,contentEvents:B,scrimEvents:V}=d2(e,{isActive:c,isTop:y,contentEl:l}),{teleportTarget:L}=v2(()=>{var j,K,be;const C=e.attach||e.contained;if(C)return C;const N=((j=T==null?void 0:T.value)==null?void 0:j.getRootNode())||((be=(K=o.proxy)==null?void 0:K.$el)==null?void 0:be.getRootNode());return N instanceof ShadowRoot?N:!1}),{dimensionStyles:G}=Ca(e),re=m2(),{scopeId:Z}=fh();ye(()=>e.disabled,C=>{C&&(c.value=!1)});const{contentStyles:oe,updateLocation:ee}=Xw(e,{isRtl:h,contentEl:l,target:P,isActive:c});s2(e,{root:i,contentEl:l,targetEl:I,target:P,isActive:c,updateLocation:ee});function ce(C){s("click:outside",C),e.persistent?ct():c.value=!1}function Ne(C){return c.value&&b.value&&(!e.scrim||C.target===a.value||C instanceof MouseEvent&&C.shadowTarget===a.value)}$e&&ye(c,C=>{C?window.addEventListener("keydown",Ce):window.removeEventListener("keydown",Ce)},{immediate:!0}),ar(()=>{$e&&window.removeEventListener("keydown",Ce)});function Ce(C){var N,j,K;C.key==="Escape"&&b.value&&((N=l.value)!=null&&N.contains(document.activeElement)||s("keydown",C),e.persistent?ct():(c.value=!1,(j=l.value)!=null&&j.contains(document.activeElement)&&((K=T.value)==null||K.focus())))}function Le(C){C.key==="Escape"&&!b.value||s("keydown",C)}const Re=Dw();ns(()=>e.closeOnBack,()=>{Vw(Re,C=>{b.value&&c.value?(C(!1),e.persistent?ct():c.value=!1):C()})});const je=fe();ye(()=>c.value&&(e.absolute||e.contained)&&L.value==null,C=>{if(C){const N=zg(i.value);N&&N!==document.scrollingElement&&(je.value=N.scrollTop)}});function ct(){e.noClickAnimation||l.value&&mg(l.value,[{transformOrigin:"center"},{transform:"scale(1.03)"},{transformOrigin:"center"}],{duration:150,easing:Ug})}function Tt(){s("afterEnter")}function ze(){w(),s("afterLeave")}return Nt(()=>{var C;return R(De,null,[(C=n.activator)==null?void 0:C.call(n,{isActive:c.value,targetRef:S,props:Xe({ref:x},A.value,e.activatorProps)}),re.value&&m.value&&J(am,{disabled:!L.value,to:L.value},{default:()=>[R("div",Xe({class:["v-overlay",{"v-overlay--absolute":e.absolute||e.contained,"v-overlay--active":c.value,"v-overlay--contained":e.contained},f.value,d.value,e.class],style:[p.value,{"--v-overlay-opacity":e.opacity,top:pe(je.value)},e.style],ref:i,onKeydown:Le},Z,r),[J(S2,Xe({color:_,modelValue:c.value&&!!e.scrim,ref:a},V.value),null),J(w2,{appear:!0,persisted:!0,transition:e.transition,target:P.value,onAfterEnter:Tt,onAfterLeave:ze},{default:()=>{var N;return[Vs(R("div",Xe({ref:l,class:["v-overlay__content",e.contentClass],style:[G.value,oe.value]},B.value,e.contentProps),[(N=n.default)==null?void 0:N.call(n,{isActive:c})]),[[pp,c.value],[jc,{handler:ce,closeConditional:Ne,include:()=>[T.value]}]])]}})])]})])}),{activatorEl:T,scrimEl:a,target:P,animateClick:ct,contentEl:l,globalTop:b,localTop:y,updateLocation:ee}}}),ni=Symbol("Forwarded refs");function ri(e,t){let n=e;for(;n;){const r=Reflect.getOwnPropertyDescriptor(n,t);if(r)return r;n=Object.getPrototypeOf(n)}}function x2(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;rt.value=e())}function o(i){const a=i?getComputedStyle(i):{transitionDuration:.2},l=parseFloat(a.transitionDuration)*1e3||200;if(r(),t.value<=0)return;const u=performance.now();n=window.setInterval(()=>{const c=performance.now()-u+l;t.value=Math.max(e()-c,0),t.value<=0&&r()},l)}return Qe(r),{clear:r,time:t,start:o,reset:s}}const T2=me({multiLine:Boolean,text:String,timer:[Boolean,String],timeout:{type:[Number,String],default:5e3},vertical:Boolean,...Ta({location:"bottom"}),...Qd(),...Ro(),..._a(),...yn(),...Cf(mh({transition:"v-snackbar-transition"}),["persistent","noClickAnimation","scrim","scrollStrategy"])},"VSnackbar"),k2=bt()({name:"VSnackbar",props:T2(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:n}=t;const r=ss(e,"modelValue"),{positionClasses:s}=eh(e),{scopeId:o}=fh(),{themeClasses:i}=Bn(e),{colorClasses:a,colorStyles:l,variantClasses:u}=Wd(e),{roundedClasses:c}=Po(e),f=C2(()=>Number(e.timeout)),d=fe(),h=fe(),m=Oe(!1),w=Oe(0),_=fe(),b=Pe(Xs,void 0);ns(()=>!!b,()=>{const V=Kf();Jt(()=>{_.value=V.mainStyles.value})}),ye(r,p),ye(()=>e.timeout,p),hn(()=>{r.value&&p()});let y=-1;function p(){f.reset(),window.clearTimeout(y);const V=Number(e.timeout);if(!r.value||V===-1)return;const L=xf(h.value);f.start(L),y=window.setTimeout(()=>{r.value=!1},V)}function T(){f.reset(),window.clearTimeout(y)}function x(){m.value=!0,T()}function P(){m.value=!1,p()}function I(V){w.value=V.touches[0].clientY}function S(V){Math.abs(w.value-V.changedTouches[0].clientY)>50&&(r.value=!1)}function A(){m.value&&P()}const B=M(()=>e.location.split(" ").reduce((V,L)=>(V[`v-snackbar--${L}`]=!0,V),{}));return Nt(()=>{const V=Hc.filterProps(e),L=!!(n.default||n.text||e.text);return J(Hc,Xe({ref:d,class:["v-snackbar",{"v-snackbar--active":r.value,"v-snackbar--multi-line":e.multiLine&&!e.vertical,"v-snackbar--timer":!!e.timer,"v-snackbar--vertical":e.vertical},B.value,s.value,e.class],style:[_.value,e.style]},V,{modelValue:r.value,"onUpdate:modelValue":G=>r.value=G,contentProps:Xe({class:["v-snackbar__wrapper",i.value,a.value,c.value,u.value],style:[l.value],onPointerenter:x,onPointerleave:P},V.contentProps),persistent:!0,noClickAnimation:!0,scrim:!1,scrollStrategy:"none",_disableGlobalStack:!0,onTouchstartPassive:I,onTouchend:S,onAfterLeave:A},o),{default:()=>{var G,re;return[zd(!1,"v-snackbar"),e.timer&&!m.value&&R("div",{key:"timer",class:"v-snackbar__timer"},[J(Xd,{ref:h,color:typeof e.timer=="string"?e.timer:"info",max:e.timeout,modelValue:f.time.value},null)]),L&&R("div",{key:"content",class:"v-snackbar__content",role:"status","aria-live":"polite"},[((G=n.text)==null?void 0:G.call(n))??e.text,(re=n.default)==null?void 0:re.call(n)]),n.actions&&J($s,{defaults:{VBtn:{variant:"text",ripple:!1,slim:!0}}},{default:()=>[R("div",{class:"v-snackbar__actions"},[n.actions({isActive:r})])]})]},activator:n.activator})}),x2({},d)}}),A2={class:"notifications-container"},R2={class:"d-flex align-center"},P2={class:"flex-grow-1"},O2={key:0,class:"font-weight-medium"},$2={__name:"AppNotifications",setup(e){const{notifications:t,removeNotification:n}=yw(),r=fe([]);ye(t,i=>{i.forEach(a=>{r.value.findIndex(u=>u.id===a.id)===-1&&r.value.push({...a,visible:!0})}),r.value=r.value.filter(a=>i.some(l=>l.id===a.id))},{immediate:!0,deep:!0});const s=i=>{switch(i){case Qt.SUCCESS:return"success";case Qt.ERROR:return"error";case Qt.WARNING:return"warning";case Qt.INFO:default:return"info"}},o=i=>{switch(i){case Qt.SUCCESS:return"mdi-check-circle";case Qt.ERROR:return"mdi-alert-circle";case Qt.WARNING:return"mdi-alert";case Qt.INFO:default:return"mdi-information"}};return(i,a)=>(X(),se("div",A2,[(X(!0),se(De,null,ci(Me(t),l=>(X(),Dn(k2,{key:l.id,modelValue:l.visible,"onUpdate:modelValue":[u=>l.visible=u,u=>!u&&Me(n)(l.id)],color:s(l.type),timeout:l.timeout,location:"top right",style:Ke({"z-index":9999+l.id})},{default:He(()=>[R("div",R2,[J(Or,{class:"me-2"},{default:He(()=>[An(pt(o(l.type)),1)]),_:2},1024),R("div",P2,[l.title?(X(),se("div",O2,pt(l.title),1)):de("",!0),R("div",null,pt(l.message),1)]),J(Yw,{icon:"",size:"small",onClick:u=>Me(n)(l.id)},{default:He(()=>[J(Or,null,{default:He(()=>a[0]||(a[0]=[An("mdi-close",-1)])),_:1,__:[0]})]),_:2},1032,["onClick"])])]),_:2},1032,["modelValue","onUpdate:modelValue","color","timeout","style"]))),128))]))}},F2=us($2,[["__scopeId","data-v-9b99d032"]]),L2=me({...pn(),...sy({fullHeight:!0}),...yn()},"VApp"),M2=bt()({name:"VApp",props:L2(),setup(e,t){let{slots:n}=t;const r=Bn(e),{layoutClasses:s,getLayoutItem:o,items:i,layoutRef:a}=iy(e),{rtlClasses:l}=bo();return Nt(()=>{var u;return R("div",{ref:a,class:ve(["v-application",r.themeClasses.value,s.value,l.value,e.class]),style:Ke([e.style])},[R("div",{class:"v-application__wrap"},[(u=n.default)==null?void 0:u.call(n)])])}),{getLayoutItem:o,items:i,theme:r}}});function I2(){const e=Oe(!1);return hn(()=>{window.requestAnimationFrame(()=>{e.value=!0})}),{ssrBootStyles:ie(()=>e.value?void 0:{transition:"none !important"}),isBooted:Zr(e)}}const D2=me({scrollable:Boolean,...pn(),...xa(),...fr({tag:"main"})},"VMain"),N2=bt()({name:"VMain",props:D2(),setup(e,t){let{slots:n}=t;const{dimensionStyles:r}=Ca(e),{mainStyles:s}=Kf(),{ssrBootStyles:o}=I2();return Nt(()=>J(e.tag,{class:ve(["v-main",{"v-main--scrollable":e.scrollable},e.class]),style:Ke([s.value,o.value,r.value,e.style])},{default:()=>{var i,a;return[e.scrollable?R("div",{class:"v-main__scroller"},[(i=n.default)==null?void 0:i.call(n)]):(a=n.default)==null?void 0:a.call(n)]}})),{}}}),B2={__name:"App",setup(e){const t=ya(),n=M(()=>t.isAuthenticated);return hn(async()=>{if(t.token&&!t.user)try{await t.getCurrentUser()}catch(r){console.error("Failed to get current user on app mount:",r)}}),(r,s)=>{const o=Mu("router-view");return X(),Dn(M2,null,{default:He(()=>[n.value?(X(),Dn(pw,{key:0})):de("",!0),J(N2,null,{default:He(()=>[J(o)]),_:1}),J(F2)]),_:1})}}},V2=us(B2,[["__scopeId","data-v-a961ccf3"]]),j2="modulepreload",H2=function(e){return"/"+e},Uc={},Y=function(t,n,r){let s=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),a=(i==null?void 0:i.nonce)||(i==null?void 0:i.getAttribute("nonce"));s=Promise.allSettled(n.map(l=>{if(l=H2(l),l in Uc)return;Uc[l]=!0;const u=l.endsWith(".css"),c=u?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${l}"]${c}`))return;const f=document.createElement("link");if(f.rel=u?"stylesheet":j2,u||(f.as="script"),f.crossOrigin="",f.href=l,a&&f.setAttribute("nonce",a),document.head.appendChild(f),u)return new Promise((d,h)=>{f.addEventListener("load",d),f.addEventListener("error",()=>h(new Error(`Unable to preload CSS for ${l}`)))})}))}function o(i){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=i,window.dispatchEvent(a),!a.defaultPrevented)throw i}return s.then(i=>{for(const a of i||[])a.status==="rejected"&&o(a.reason);return t().catch(o)})},U2=[{path:"/",redirect:"/dashboard"},{path:"/login",name:"Login",component:()=>Y(()=>import("./LoginView-DHbMd_ru.js"),__vite__mapDeps([0,1,2,3,4,5,6])),meta:{requiresGuest:!0}},{path:"/register",name:"Register",component:()=>Y(()=>import("./RegisterView-BAfp3jPJ.js"),__vite__mapDeps([7,1,2,3,5,8,9])),meta:{requiresGuest:!0}},{path:"/forgot-password",name:"ForgotPassword",component:()=>Y(()=>import("./ForgotPasswordView-DMDfTgVH.js"),__vite__mapDeps([10,1,11,12,13,14,15])),meta:{requiresGuest:!0}},{path:"/reset-password",name:"ResetPassword",component:()=>Y(()=>import("./ResetPasswordView-DU40_52o.js"),__vite__mapDeps([16,1,11,12,13,14,17])),meta:{requiresGuest:!0}},{path:"/dashboard",name:"Dashboard",component:()=>Y(()=>import("./DashboardView-BMT2_nib.js"),__vite__mapDeps([18,19,20,21,3,22,23,24,25,26,27,28,29,30]))},{path:"/work-orders",name:"WorkOrders",component:()=>Y(()=>import("./WorkOrdersView-oeb2ik7Q.js"),[]),children:[{path:"",name:"WorkOrdersList",component:()=>Y(()=>import("./WorkOrdersListView-D2P7n4OF.js"),__vite__mapDeps([31,25,26,27,20,21,32,2,4,8,23,33,34,35,36,37,38,39,40,41,42,22,43,44,45]))},{path:"create",name:"CreateWorkOrder",component:()=>Y(()=>import("./CreateWorkOrderView-Cry3C_bU.js"),__vite__mapDeps([46,2,8,38,39,32,4,23,33,21]))},{path:":id",name:"WorkOrderDetail",component:()=>Y(()=>import("./WorkOrderDetailView-UFwsRvY7.js"),__vite__mapDeps([47,23,34,2,8,35,32,4,33,48,49,36,27,37,21])),props:!0},{path:":id/edit",name:"EditWorkOrder",component:()=>Y(()=>import("./EditWorkOrderView-D2FfecvI.js"),__vite__mapDeps([50,2,8,34,35,32,4,23,33,48,49,21])),props:!0},{path:"calendar",name:"WorkOrdersCalendar",component:()=>Y(()=>import("./WorkOrdersCalendarView-XWSDIuv_.js"),__vite__mapDeps([51,25,26,27,20,21,8,22,23,24,28,32,2,4,33,34,35,36,37,38,39,40,41,43,44,45,52]))}]},{path:"/assets",name:"Assets",component:()=>Y(()=>import("./AssetsView-Dxw39KQD.js"),__vite__mapDeps([53,54])),children:[{path:"",name:"AssetsList",component:()=>Y(()=>import("./AssetsListView-CX_TFbT7.js"),__vite__mapDeps([55,19,56,57,2,4,8,58,20,21,29,3,42,22,23,43,44,45,59]))},{path:"create",name:"CreateAsset",component:()=>Y(()=>import("./CreateAssetView-COgGs-cL.js"),__vite__mapDeps([60,19,56,2,3,8,22,57,4,58,61]))},{path:":id",name:"AssetDetail",component:()=>Y(()=>import("./AssetDetailView-DzqeTmEM.js"),__vite__mapDeps([62,23,20,21])),props:!0},{path:":id/edit",name:"EditAsset",component:()=>Y(()=>import("./EditAssetView-DjSfVV7v.js"),__vite__mapDeps([63,2,3,4,8,64])),props:!0}]},{path:"/locations",name:"Locations",component:()=>Y(()=>import("./LocationsView-OT-1gojY.js"),[]),children:[{path:"",name:"LocationsList",component:()=>Y(()=>import("./LocationsListView-CZh_u7tU.js"),__vite__mapDeps([65,56,26,66,67,20,21,2,8,29,3,42,22,23,43,45]))},{path:":id",name:"LocationDetail",component:()=>Y(()=>import("./LocationDetailView-CDUR53_5.js"),__vite__mapDeps([68,56,20,21,23])),props:!0}]},{path:"/people",name:"People",component:()=>Y(()=>import("./PeopleView-CYrsa8L-.js"),__vite__mapDeps([69,70])),children:[{path:"",name:"PeopleList",component:()=>Y(()=>import("./PeopleListView-B0nZJzbG.js"),__vite__mapDeps([71,20,21,2,8,29,3,42,22,23,43,72,73]))},{path:"teams",name:"TeamsList",component:()=>Y(()=>import("./TeamsListView-BMyhC_wf.js"),__vite__mapDeps([74,20,21,2,29,3,42,22,23,73]))}]},{path:"/inventory",name:"Inventory",component:()=>Y(()=>import("./InventoryView-Dvb43sMl.js"),__vite__mapDeps([75,76,20,21,29,3]))},{path:"/inventory/parts",name:"Parts",component:()=>Y(()=>import("./PartsView-sO6yRU0X.js"),[]),children:[{path:"",name:"PartsList",component:()=>Y(()=>import("./PartsListView-BrMDoBjw.js"),__vite__mapDeps([77,76,26,78,66,67,20,21,2,8,29,3,42,22,23,43,45]))},{path:":id",name:"PartDetail",component:()=>Y(()=>import("./PartDetailView-BURhvJ9p.js"),__vite__mapDeps([79,76,78,20,21,23])),props:!0}]},{path:"/inventory/stock-alerts",name:"StockAlerts",component:()=>Y(()=>import("./StockAlertsView-COqyScqS.js"),__vite__mapDeps([80,76,81,26,66,67,20,21,2,8,29,3,42,22,23,43,45]))},{path:"/inventory/transfers",name:"InventoryTransfers",component:()=>Y(()=>import("./InventoryTransfersView-C5SAFO28.js"),__vite__mapDeps([82,76,81,26,66,67,20,21,2,8,29,3,42,22,23,43,45]))},{path:"/maintenance",name:"Maintenance",component:()=>Y(()=>import("./MaintenanceView-5F1rzr4C.js"),[])},{path:"/maintenance/preventive",name:"PreventiveMaintenance",component:()=>Y(()=>import("./PreventiveMaintenanceView-UjhmzhEW.js"),[]),children:[{path:"",name:"PreventiveMaintenanceList",component:()=>Y(()=>import("./PreventiveMaintenanceListView-BhRxnL6J.js"),__vite__mapDeps([83,28,26,84,66,67,20,21,2,8,29,3,42,22,23,43,45]))},{path:":id",name:"PreventiveMaintenanceDetail",component:()=>Y(()=>import("./PreventiveMaintenanceDetailView-C9-E0bMm.js"),__vite__mapDeps([85,28,84,20,21,2,22,23])),props:!0}]},{path:"/reports",name:"Reports",component:()=>Y(()=>import("./ReportsView-CBYhF-qa.js"),__vite__mapDeps([86,26,20,21,2,3,8,22,23,43,45,87]))},{path:"/categories",name:"Categories",component:()=>Y(()=>import("./CategoriesView-CaAkUQbP.js"),[]),children:[{path:"",name:"CategoriesIndex",component:()=>Y(()=>import("./CategoriesIndexView-DYtaWxTm.js"),__vite__mapDeps([88,89,20,21]))},{path:"work-order-categories",name:"WorkOrderCategories",component:()=>Y(()=>import("./CategoriesListView-BP98cpP_.js"),__vite__mapDeps([90,89,26,66,67,20,21,2,8,29,3,42,22,23,43,45])),props:{categoryType:"work-order-categories"}},{path:"asset-categories",name:"AssetCategories",component:()=>Y(()=>import("./CategoriesListView-BP98cpP_.js"),__vite__mapDeps([90,89,26,66,67,20,21,2,8,29,3,42,22,23,43,45])),props:{categoryType:"asset-categories"}},{path:"part-categories",name:"PartCategories",component:()=>Y(()=>import("./CategoriesListView-BP98cpP_.js"),__vite__mapDeps([90,89,26,66,67,20,21,2,8,29,3,42,22,23,43,45])),props:{categoryType:"part-categories"}},{path:"cost-categories",name:"CostCategories",component:()=>Y(()=>import("./CategoriesListView-BP98cpP_.js"),__vite__mapDeps([90,89,26,66,67,20,21,2,8,29,3,42,22,23,43,45])),props:{categoryType:"cost-categories"}},{path:"meter-categories",name:"MeterCategories",component:()=>Y(()=>import("./CategoriesListView-BP98cpP_.js"),__vite__mapDeps([90,89,26,66,67,20,21,2,8,29,3,42,22,23,43,45])),props:{categoryType:"meter-categories"}},{path:"purchase-order-categories",name:"PurchaseOrderCategories",component:()=>Y(()=>import("./CategoriesListView-BP98cpP_.js"),__vite__mapDeps([90,89,26,66,67,20,21,2,8,29,3,42,22,23,43,45])),props:{categoryType:"purchase-order-categories"}}]},{path:"/vendors",name:"Vendors",component:()=>Y(()=>import("./VendorsView-DsPmbjUd.js"),[]),children:[{path:"",name:"VendorsList",component:()=>Y(()=>import("./VendorsListView-DhYeR9jE.js"),__vite__mapDeps([91,92,26,66,67,20,21,2,8,29,3,42,22,23,43,45]))},{path:":id",name:"VendorDetail",component:()=>Y(()=>import("./VendorDetailView-lJ2x0gCu.js"),__vite__mapDeps([93,92,20,21,3,23,43])),props:!0}]},{path:"/requests",name:"Requests",component:()=>Y(()=>import("./RequestsView-9xBIesQz.js"),[]),children:[{path:"",name:"RequestsList",component:()=>Y(()=>import("./RequestsListView-01sUQsK4.js"),__vite__mapDeps([94,95,19,56,72,26,20,21,2,8,29,3,42,22,23,43,45]))},{path:":id",name:"RequestDetail",component:()=>Y(()=>import("./RequestDetailView-BkDwCZ7I.js"),__vite__mapDeps([96,95,20,21,3,22,23,43])),props:!0}]},{path:"/meters",name:"Meters",component:()=>Y(()=>import("./MetersView-3RpgORZ4.js"),[]),children:[{path:"",name:"MetersList",component:()=>Y(()=>import("./MetersListView-DK0MHuyn.js"),__vite__mapDeps([97,98,19,56,26,20,21,2,4,8,29,3,42,22,23,43,45]))},{path:":id",name:"MeterDetail",component:()=>Y(()=>import("./MeterDetailView-BRhPlyL8.js"),__vite__mapDeps([99,98,20,21,2,3,4,22,23,43])),props:!0}]},{path:"/customers",name:"Customers",component:()=>Y(()=>import("./CustomersView-AWJgF30U.js"),[]),children:[{path:"",name:"CustomersList",component:()=>Y(()=>import("./CustomersListView-Bc4T8qVE.js"),__vite__mapDeps([100,101,26,20,21,2,4,8,29,3,42,22,23,43,45]))},{path:":id",name:"CustomerDetail",component:()=>Y(()=>import("./CustomerDetailView-B1CXIshh.js"),__vite__mapDeps([102,101,20,21,3,4,23,43])),props:!0}]},{path:"/settings",name:"Settings",component:()=>Y(()=>import("./SettingsView-CAdpolKN.js"),__vite__mapDeps([103,20,21,2,3,4,8,42,22,23,43]))},{path:"/profile",name:"Profile",component:()=>Y(()=>import("./ProfileView-B6ls_uOw.js"),__vite__mapDeps([104,20,21,2,3,4,8,22,23]))},{path:"/demo",name:"FrappeUIDemo",component:()=>Y(()=>import("./FrappeUIDemo-Cdw03urn.js"),__vite__mapDeps([105,2,3,21]))},{path:"/simple-demo",name:"SimpleDemo",component:()=>Y(()=>import("./SimpleDemo-BNaqYHXS.js"),__vite__mapDeps([106,67,107]))},{path:"/basic-test",name:"BasicTest",component:()=>Y(()=>import("./BasicTest-BWCbZv-Z.js"),[])},{path:"/theme-test",name:"ThemeTest",component:()=>Y(()=>import("./ThemeTest-k1ybLIOn.js"),[])},{path:"/unauthorized",name:"Unauthorized",component:()=>Y(()=>import("./UnauthorizedView-CevgHCyZ.js"),__vite__mapDeps([108,11,12]))},{path:"/:pathMatch(.*)*",name:"NotFound",component:()=>Y(()=>import("./NotFoundView-ChJiJ8lW.js"),__vite__mapDeps([109,11,12]))}],ph=s1({history:Fb(),routes:U2});ph.beforeEach(async(e,t,n)=>{const r=ya();if(e.meta.requiresAuth){if(!r.isAuthenticated){n("/login");return}if(!r.user)try{await r.getCurrentUser()}catch(s){console.error("Failed to get current user:",s),n("/login");return}if(e.meta.requiresRole){const s=r.userRole;if(!(Array.isArray(e.meta.requiresRole)?e.meta.requiresRole:[e.meta.requiresRole]).includes(s)){n("/unauthorized");return}}if(e.meta.requiresPermission&&!(Array.isArray(e.meta.requiresPermission)?e.meta.requiresPermission:[e.meta.requiresPermission]).every(i=>r.hasPermission(i))){n("/unauthorized");return}}if(e.meta.requiresGuest&&r.isAuthenticated){n("/dashboard");return}n()});const q2=Yf({theme:{defaultTheme:"light",themes:{light:{colors:{primary:"#1976D2",secondary:"#424242",accent:"#82B1FF",error:"#FF5252",info:"#2196F3",success:"#4CAF50",warning:"#FFC107"}},dark:{colors:{primary:"#2196F3",secondary:"#424242",accent:"#FF4081",error:"#FF5252",info:"#2196F3",success:"#4CAF50",warning:"#FB8C00"}}}}}),z2=qp(),Oo=jp(V2);Oo.use(z2);Oo.use(ph);Oo.use(q2);Oo.mount("#app");export{jd as $,ts as A,yt as B,me as C,ss as D,ie as E,bs as F,Bn as G,Wd as H,Hd as I,Ca as J,qd as K,Zd as L,eh as M,Po as N,to as O,h_ as P,Ke as Q,_a as R,yn as S,fr as T,Ro as U,Yw as V,Qd as W,Ta as X,Ud as Y,xa as Z,us as _,se as a,q_ as a$,Zs as a0,zd as a1,Or as a2,Xe as a3,$s as a4,If as a5,Nt as a6,Zp as a7,Os as a8,et as a9,Xn as aA,f_ as aB,d_ as aC,gn as aD,bo as aE,um as aF,hg as aG,mg as aH,Ug as aI,sg as aJ,ns as aK,ng as aL,u_ as aM,fn as aN,Jp as aO,B_ as aP,ci as aQ,m1 as aR,n_ as aS,o_ as aT,r_ as aU,Ae as aV,wm as aW,Be as aX,V_ as aY,U_ as aZ,j_ as a_,Oe as aa,mm as ab,vt as ac,ar as ad,Vs as ae,De as af,pe as ag,b2 as ah,pp as ai,w2 as aj,Vd as ak,Sa as al,Ea as am,Bd as an,Gw as ao,Lw as ap,Nw as aq,Bw as ar,Fw as as,X_ as at,_t as au,Pe as av,Qi as aw,x2 as ax,m_ as ay,Op as az,R as b,F_ as b0,H_ as b1,W_ as b2,c_ as b3,Fu as b4,a_ as b5,z_ as b6,G_ as b7,Kv as b8,J2 as b9,Jt as bA,K2 as bB,Mn as bC,mn as bD,ws as bE,ea as bF,Ye as bG,W2 as bH,Xm as bI,t_ as bJ,G2 as bK,e_ as bL,Z2 as bM,Q2 as bN,l_ as bO,Y2 as bP,jp as bQ,pm as bR,s_ as ba,Xv as bb,lt as bc,U as bd,Qv as be,Dd as bf,X2 as bg,pw as bh,am as bi,Zv as bj,Yv as bk,Y as bl,N_ as bm,D_ as bn,I_ as bo,M_ as bp,L_ as bq,K_ as br,Y_ as bs,J_ as bt,Z_ as bu,ra as bv,Zr as bw,un as bx,Ki as by,Qe as bz,M as c,J as d,Me as e,Mu as f,X as g,i_ as h,Dn as i,de as j,An as k,yw as l,ye as m,ve as n,hn as o,Nu as p,ya as q,fe as r,a1 as s,pt as t,l1 as u,i1 as v,He as w,bt as x,pn as y,Yr as z}; diff --git a/frontend/dist/assets/index-QAlcqU00.js b/frontend/dist/assets/index-QAlcqU00.js new file mode 100644 index 00000000..aa340dbb --- /dev/null +++ b/frontend/dist/assets/index-QAlcqU00.js @@ -0,0 +1,169 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/LoginView-B4ND79y8.js","assets/validators-BsFa-KD7.js","assets/FPInput-D5RURom0.js","assets/FPCard-AB6NRXg5.js","assets/FPCheckbox-DcRYwN3n.js","assets/FPAlert-CZx0ew6-.js","assets/LoginView-BcwGO_tK.css","assets/RegisterView-B1dtlGYy.js","assets/FPSelect-j7n_x8eB.js","assets/RegisterView-SeiuDtCj.css","assets/ForgotPasswordView-D6HmO_LL.js","assets/VContainer-DnjqAjRY.js","assets/VContainer-Cb7FdSrp.css","assets/VTextField-BNQ_nyd-.js","assets/VTextField-DNSnnpKh.css","assets/ForgotPasswordView-DSC1mpP5.css","assets/ResetPasswordView-7Zg8RSWn.js","assets/ResetPasswordView-CSiVOdOM.css","assets/DashboardView-Ud-cY9iD.js","assets/assets-CvfPiugk.js","assets/FPPageHeader-CFIwZZgQ.js","assets/WorkOrdersListView-tn0RQdqM.css","assets/FPModal-DMoPysvU.js","assets/FPBadge-DvOitM1C.js","assets/useUniversalCalendar-C6fCeunY.js","assets/useWorkOrders-CVmaGBfy.js","assets/useFormAutoSave-BrW9Wl2Q.js","assets/workOrder-jNxj_kjQ.js","assets/usePreventiveMaintenanceDisplay-DE1jAbPb.js","assets/FPStats-DOY0PQQF.js","assets/DashboardView-DBTWDaYr.css","assets/WorkOrdersListView-DHY1nn-j.js","assets/useMobileOptimization-Ds6Eb1bE.js","assets/AudioRecorder-BzlZ8cXI.js","assets/AudioRecorder-Cqp4C4vr.css","assets/TimeTracker-DBp8PrtX.js","assets/TimeTracker-8Kq5cSPU.css","assets/StatusHistory-C7FtpZlE.js","assets/StatusHistory-Ce5lyf1i.css","assets/WorkOrderIdGenerator-2pnsJNJL.js","assets/WorkOrderIdGenerator-DxPcXLI6.css","assets/ReportGenerator-Dld_SPXF.js","assets/ReportGenerator-D3qwfB3A.css","assets/FPTable-CWvngIYd.js","assets/FPTabs-qq-Tmb7J.js","assets/FPFileUpload-Bk17EQTg.js","assets/FormRestoreNotification-2Wflg1mH.js","assets/CreateWorkOrderView-CTlG1l1H.js","assets/WorkOrderDetailView-D9lPqwSW.js","assets/DigitalSignature-CzkShzQj.js","assets/DigitalSignature-Bnx6vipo.css","assets/EditWorkOrderView-Cx6d-pcV.js","assets/WorkOrdersCalendarView-Dr2kGEQk.js","assets/WorkOrdersCalendarView-BNspoYbX.css","assets/AssetsView-B4-po3PV.js","assets/AssetsView-DOlY43sR.css","assets/AssetsListView-8qBNA660.js","assets/locations-ElrWcwNd.js","assets/CustomFieldsForm-BwcGiCuE.js","assets/CustomFieldsForm-5dTXu1Nl.css","assets/AssetsListView-CpleWBqM.css","assets/CreateAssetView-WCmUfURR.js","assets/CreateAssetView-PDXNYTww.css","assets/AssetDetailView-BJoQpmcV.js","assets/EditAssetView-CUJ7_T6-.js","assets/EditAssetView-D0DrzVdE.css","assets/LocationsListView-Cu3aECgW.js","assets/lodash-RqMXHFU9.js","assets/_commonjsHelpers-NT8qMgGI.js","assets/LocationDetailView-C5-PbNmX.js","assets/PeopleView-ZO1Y3BMt.js","assets/PeopleView-9c6mSFQw.css","assets/PeopleListView-Cmts--ZM.js","assets/users-DgNL-A0F.js","assets/roles-BzkoUpaM.js","assets/TeamsListView-Dk6DYIks.js","assets/InventoryView-FW6Kr3o1.js","assets/parts-imZSnlsl.js","assets/PartsListView-fCKSmo2E.js","assets/usePartDisplay-DgOw31kV.js","assets/PartDetailView-9j9nkS1s.js","assets/StockAlertsView-AbF3nGDU.js","assets/inventory-C_cwbKdQ.js","assets/InventoryTransfersView-8DopotVP.js","assets/PreventiveMaintenanceListView-Dycb2ZSP.js","assets/usePreventiveMaintenanceOperations-Dd7Aro2G.js","assets/PreventiveMaintenanceDetailView-C_K8Kyaz.js","assets/ReportsView-RBaluUKL.js","assets/ReportsView-liUXIOJU.css","assets/CategoriesIndexView-CjHjTbKf.js","assets/useCategoryDisplay-DtoUGbrc.js","assets/CategoriesListView-BrLbxiBd.js","assets/VendorsListView-RDXjMLTt.js","assets/vendors-C-y6J9yC.js","assets/VendorDetailView-qw2GAvub.js","assets/RequestsListView-ChMnc6ly.js","assets/useRequestManagement-BaHfQU2h.js","assets/RequestDetailView-yLJ0QKmY.js","assets/MetersListView-DimOX87s.js","assets/useMeterManagement-Ckbf_zVR.js","assets/MeterDetailView-BPbRGZV7.js","assets/CustomersListView-Dh2vfIHr.js","assets/customers-Gpmak2fJ.js","assets/CustomerDetailView-D2R4iIWj.js","assets/ContractsListView-Cj14_kTl.js","assets/useContractManagement-OiJwK-RO.js","assets/ContractDetailView-ClB2gGkj.js","assets/DocumentsListView-BSKVRIyQ.js","assets/useDocumentManagement-BJ6Z87hG.js","assets/DocumentDetailView-Bon7Yp5Y.js","assets/SettingsView-osLRBmGa.js","assets/ProfileView-B9z7U8vB.js","assets/FrappeUIDemo-221PS2xS.js","assets/SimpleDemo-DQQNE0yU.js","assets/SimpleDemo-unJ_zLf1.css","assets/UnauthorizedView-WX3S9B4Q.js","assets/NotFoundView-CoAE6lPw.js"])))=>i.map(i=>d[i]); +(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))r(s);new MutationObserver(s=>{for(const o of s)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&r(i)}).observe(document,{childList:!0,subtree:!0});function n(s){const o={};return s.integrity&&(o.integrity=s.integrity),s.referrerPolicy&&(o.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?o.credentials="include":s.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(s){if(s.ep)return;s.ep=!0;const o=n(s);fetch(s.href,o)}})();/** +* @vue/shared v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**//*! #__NO_SIDE_EFFECTS__ */function Ui(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const Se={},Jn=[],It=()=>{},gh=()=>!1,so=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),qi=e=>e.startsWith("onUpdate:"),Ve=Object.assign,zi=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},yh=Object.prototype.hasOwnProperty,_e=(e,t)=>yh.call(e,t),Q=Array.isArray,Zn=e=>Yr(e)==="[object Map]",lr=e=>Yr(e)==="[object Set]",Pa=e=>Yr(e)==="[object Date]",ae=e=>typeof e=="function",Fe=e=>typeof e=="string",St=e=>typeof e=="symbol",xe=e=>e!==null&&typeof e=="object",qc=e=>(xe(e)||ae(e))&&ae(e.then)&&ae(e.catch),zc=Object.prototype.toString,Yr=e=>zc.call(e),vh=e=>Yr(e).slice(8,-1),Wc=e=>Yr(e)==="[object Object]",Wi=e=>Fe(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Sr=Ui(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),oo=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},bh=/-(\w)/g,vt=oo(e=>e.replace(bh,(t,n)=>n?n.toUpperCase():"")),wh=/\B([A-Z])/g,hn=oo(e=>e.replace(wh,"-$1").toLowerCase()),Jr=oo(e=>e.charAt(0).toUpperCase()+e.slice(1)),ws=oo(e=>e?`on${Jr(e)}`:""),ln=(e,t)=>!Object.is(e,t),_s=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},Ls=e=>{const t=parseFloat(e);return isNaN(t)?e:t},_h=e=>{const t=Fe(e)?Number(e):NaN;return isNaN(t)?e:t};let Oa;const io=()=>Oa||(Oa=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof globalThis<"u"?globalThis:{});function Ke(e){if(Q(e)){const t={};for(let n=0;n{if(n){const r=n.split(Sh);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function ve(e){let t="";if(Fe(e))t=e;else if(Q(e))for(let n=0;nDn(n,t))}const Kc=e=>!!(e&&e.__v_isRef===!0),pt=e=>Fe(e)?e:e==null?"":Q(e)||xe(e)&&(e.toString===zc||!ae(e.toString))?Kc(e)?pt(e.value):JSON.stringify(e,Yc,2):String(e),Yc=(e,t)=>Kc(t)?Yc(e,t.value):Zn(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,s],o)=>(n[$o(r,o)+" =>"]=s,n),{})}:lr(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>$o(n))}:St(t)?$o(t):xe(t)&&!Q(t)&&!Wc(t)?String(t):t,$o=(e,t="")=>{var n;return St(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let We;class Jc{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=We,!t&&We&&(this.index=(We.scopes||(We.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0&&--this._on===0&&(We=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let n,r;for(n=0,r=this.effects.length;n0)return;if(Cr){let t=Cr;for(Cr=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;xr;){let t=xr;for(xr=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(r){e||(e=r)}t=n}}if(e)throw e}function eu(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function tu(e){let t,n=e.depsTail,r=n;for(;r;){const s=r.prevDep;r.version===-1?(r===n&&(n=s),Zi(r),Rh(r)):t=r,r.dep.activeLink=r.prevActiveLink,r.prevActiveLink=void 0,r=s}e.deps=t,e.depsTail=n}function oi(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(nu(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function nu(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Lr)||(e.globalVersion=Lr,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!oi(e))))return;e.flags|=2;const t=e.dep,n=Te,r=_t;Te=e,_t=!0;try{eu(e);const s=e.fn(e._value);(t.version===0||ln(s,e._value))&&(e.flags|=128,e._value=s,t.version++)}catch(s){throw t.version++,s}finally{Te=n,_t=r,tu(e),e.flags&=-3}}function Zi(e,t=!1){const{dep:n,prevSub:r,nextSub:s}=e;if(r&&(r.nextSub=s,e.prevSub=void 0),s&&(s.prevSub=r,e.nextSub=void 0),n.subs===e&&(n.subs=r,!r&&n.computed)){n.computed.flags&=-5;for(let o=n.computed.deps;o;o=o.nextDep)Zi(o,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Rh(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let _t=!0;const ru=[];function Kt(){ru.push(_t),_t=!1}function Yt(){const e=ru.pop();_t=e===void 0?!0:e}function $a(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=Te;Te=void 0;try{t()}finally{Te=n}}}let Lr=0;class Ph{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class ao{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!Te||!_t||Te===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==Te)n=this.activeLink=new Ph(Te,this),Te.deps?(n.prevDep=Te.depsTail,Te.depsTail.nextDep=n,Te.depsTail=n):Te.deps=Te.depsTail=n,su(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const r=n.nextDep;r.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=r),n.prevDep=Te.depsTail,n.nextDep=void 0,Te.depsTail.nextDep=n,Te.depsTail=n,Te.deps===n&&(Te.deps=r)}return n}trigger(t){this.version++,Lr++,this.notify(t)}notify(t){Yi();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Ji()}}}function su(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let r=t.deps;r;r=r.nextDep)su(r)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Ms=new WeakMap,$n=Symbol(""),ii=Symbol(""),Mr=Symbol("");function Ge(e,t,n){if(_t&&Te){let r=Ms.get(e);r||Ms.set(e,r=new Map);let s=r.get(n);s||(r.set(n,s=new ao),s.map=r,s.key=n),s.track()}}function qt(e,t,n,r,s,o){const i=Ms.get(e);if(!i){Lr++;return}const a=l=>{l&&l.trigger()};if(Yi(),t==="clear")i.forEach(a);else{const l=Q(e),u=l&&Wi(n);if(l&&n==="length"){const c=Number(r);i.forEach((f,d)=>{(d==="length"||d===Mr||!St(d)&&d>=c)&&a(f)})}else switch((n!==void 0||i.has(void 0))&&a(i.get(n)),u&&a(i.get(Mr)),t){case"add":l?u&&a(i.get("length")):(a(i.get($n)),Zn(e)&&a(i.get(ii)));break;case"delete":l||(a(i.get($n)),Zn(e)&&a(i.get(ii)));break;case"set":Zn(e)&&a(i.get($n));break}}Ji()}function Oh(e,t){const n=Ms.get(e);return n&&n.get(t)}function Hn(e){const t=he(e);return t===e?t:(Ge(t,"iterate",Mr),gt(e)?t:t.map(Ue))}function lo(e){return Ge(e=he(e),"iterate",Mr),e}const $h={__proto__:null,[Symbol.iterator](){return Lo(this,Symbol.iterator,Ue)},concat(...e){return Hn(this).concat(...e.map(t=>Q(t)?Hn(t):t))},entries(){return Lo(this,"entries",e=>(e[1]=Ue(e[1]),e))},every(e,t){return Vt(this,"every",e,t,void 0,arguments)},filter(e,t){return Vt(this,"filter",e,t,n=>n.map(Ue),arguments)},find(e,t){return Vt(this,"find",e,t,Ue,arguments)},findIndex(e,t){return Vt(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Vt(this,"findLast",e,t,Ue,arguments)},findLastIndex(e,t){return Vt(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Vt(this,"forEach",e,t,void 0,arguments)},includes(...e){return Mo(this,"includes",e)},indexOf(...e){return Mo(this,"indexOf",e)},join(e){return Hn(this).join(e)},lastIndexOf(...e){return Mo(this,"lastIndexOf",e)},map(e,t){return Vt(this,"map",e,t,void 0,arguments)},pop(){return pr(this,"pop")},push(...e){return pr(this,"push",e)},reduce(e,...t){return Fa(this,"reduce",e,t)},reduceRight(e,...t){return Fa(this,"reduceRight",e,t)},shift(){return pr(this,"shift")},some(e,t){return Vt(this,"some",e,t,void 0,arguments)},splice(...e){return pr(this,"splice",e)},toReversed(){return Hn(this).toReversed()},toSorted(e){return Hn(this).toSorted(e)},toSpliced(...e){return Hn(this).toSpliced(...e)},unshift(...e){return pr(this,"unshift",e)},values(){return Lo(this,"values",Ue)}};function Lo(e,t,n){const r=lo(e),s=r[t]();return r!==e&&!gt(e)&&(s._next=s.next,s.next=()=>{const o=s._next();return o.value&&(o.value=n(o.value)),o}),s}const Fh=Array.prototype;function Vt(e,t,n,r,s,o){const i=lo(e),a=i!==e&&!gt(e),l=i[t];if(l!==Fh[t]){const f=l.apply(e,o);return a?Ue(f):f}let u=n;i!==e&&(a?u=function(f,d){return n.call(this,Ue(f),d,e)}:n.length>2&&(u=function(f,d){return n.call(this,f,d,e)}));const c=l.call(i,u,r);return a&&s?s(c):c}function Fa(e,t,n,r){const s=lo(e);let o=n;return s!==e&&(gt(e)?n.length>3&&(o=function(i,a,l){return n.call(this,i,a,l,e)}):o=function(i,a,l){return n.call(this,i,Ue(a),l,e)}),s[t](o,...r)}function Mo(e,t,n){const r=he(e);Ge(r,"iterate",Mr);const s=r[t](...n);return(s===-1||s===!1)&&Xi(n[0])?(n[0]=he(n[0]),r[t](...n)):s}function pr(e,t,n=[]){Kt(),Yi();const r=he(e)[t].apply(e,n);return Ji(),Yt(),r}const Lh=Ui("__proto__,__v_isRef,__isVue"),ou=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(St));function Mh(e){St(e)||(e=String(e));const t=he(this);return Ge(t,"has",e),t.hasOwnProperty(e)}class iu{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){if(n==="__v_skip")return t.__v_skip;const s=this._isReadonly,o=this._isShallow;if(n==="__v_isReactive")return!s;if(n==="__v_isReadonly")return s;if(n==="__v_isShallow")return o;if(n==="__v_raw")return r===(s?o?du:fu:o?uu:cu).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const i=Q(t);if(!s){let l;if(i&&(l=$h[n]))return l;if(n==="hasOwnProperty")return Mh}const a=Reflect.get(t,n,Ae(t)?t:r);return(St(n)?ou.has(n):Lh(n))||(s||Ge(t,"get",n),o)?a:Ae(a)?i&&Wi(n)?a:a.value:xe(a)?s?Zr(a):Be(a):a}}class au extends iu{constructor(t=!1){super(!1,t)}set(t,n,r,s){let o=t[n];if(!this._isShallow){const l=cn(o);if(!gt(r)&&!cn(r)&&(o=he(o),r=he(r)),!Q(t)&&Ae(o)&&!Ae(r))return l?!1:(o.value=r,!0)}const i=Q(t)&&Wi(n)?Number(n)e,fs=e=>Reflect.getPrototypeOf(e);function Vh(e,t,n){return function(...r){const s=this.__v_raw,o=he(s),i=Zn(o),a=e==="entries"||e===Symbol.iterator&&i,l=e==="keys"&&i,u=s[e](...r),c=n?ai:t?Ds:Ue;return!t&&Ge(o,"iterate",l?ii:$n),{next(){const{value:f,done:d}=u.next();return d?{value:f,done:d}:{value:a?[c(f[0]),c(f[1])]:c(f),done:d}},[Symbol.iterator](){return this}}}}function ds(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function jh(e,t){const n={get(s){const o=this.__v_raw,i=he(o),a=he(s);e||(ln(s,a)&&Ge(i,"get",s),Ge(i,"get",a));const{has:l}=fs(i),u=t?ai:e?Ds:Ue;if(l.call(i,s))return u(o.get(s));if(l.call(i,a))return u(o.get(a));o!==i&&o.get(s)},get size(){const s=this.__v_raw;return!e&&Ge(he(s),"iterate",$n),Reflect.get(s,"size",s)},has(s){const o=this.__v_raw,i=he(o),a=he(s);return e||(ln(s,a)&&Ge(i,"has",s),Ge(i,"has",a)),s===a?o.has(s):o.has(s)||o.has(a)},forEach(s,o){const i=this,a=i.__v_raw,l=he(a),u=t?ai:e?Ds:Ue;return!e&&Ge(l,"iterate",$n),a.forEach((c,f)=>s.call(o,u(c),u(f),i))}};return Ve(n,e?{add:ds("add"),set:ds("set"),delete:ds("delete"),clear:ds("clear")}:{add(s){!t&&!gt(s)&&!cn(s)&&(s=he(s));const o=he(this);return fs(o).has.call(o,s)||(o.add(s),qt(o,"add",s,s)),this},set(s,o){!t&&!gt(o)&&!cn(o)&&(o=he(o));const i=he(this),{has:a,get:l}=fs(i);let u=a.call(i,s);u||(s=he(s),u=a.call(i,s));const c=l.call(i,s);return i.set(s,o),u?ln(o,c)&&qt(i,"set",s,o):qt(i,"add",s,o),this},delete(s){const o=he(this),{has:i,get:a}=fs(o);let l=i.call(o,s);l||(s=he(s),l=i.call(o,s)),a&&a.call(o,s);const u=o.delete(s);return l&&qt(o,"delete",s,void 0),u},clear(){const s=he(this),o=s.size!==0,i=s.clear();return o&&qt(s,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(s=>{n[s]=Vh(s,e,t)}),n}function co(e,t){const n=jh(e,t);return(r,s,o)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?r:Reflect.get(_e(n,s)&&s in r?n:r,s,o)}const Hh={get:co(!1,!1)},Uh={get:co(!1,!0)},qh={get:co(!0,!1)},zh={get:co(!0,!0)},cu=new WeakMap,uu=new WeakMap,fu=new WeakMap,du=new WeakMap;function Wh(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Gh(e){return e.__v_skip||!Object.isExtensible(e)?0:Wh(vh(e))}function Be(e){return cn(e)?e:uo(e,!1,Dh,Hh,cu)}function hu(e){return uo(e,!1,Nh,Uh,uu)}function Zr(e){return uo(e,!0,Ih,qh,fu)}function Z2(e){return uo(e,!0,Bh,zh,du)}function uo(e,t,n,r,s){if(!xe(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=Gh(e);if(o===0)return e;const i=s.get(e);if(i)return i;const a=new Proxy(e,o===2?r:n);return s.set(e,a),a}function Gt(e){return cn(e)?Gt(e.__v_raw):!!(e&&e.__v_isReactive)}function cn(e){return!!(e&&e.__v_isReadonly)}function gt(e){return!!(e&&e.__v_isShallow)}function Xi(e){return e?!!e.__v_raw:!1}function he(e){const t=e&&e.__v_raw;return t?he(t):e}function Qi(e){return!_e(e,"__v_skip")&&Object.isExtensible(e)&&si(e,"__v_skip",!0),e}const Ue=e=>xe(e)?Be(e):e,Ds=e=>xe(e)?Zr(e):e;function Ae(e){return e?e.__v_isRef===!0:!1}function de(e){return mu(e,!1)}function Oe(e){return mu(e,!0)}function mu(e,t){return Ae(e)?e:new Kh(e,t)}class Kh{constructor(t,n){this.dep=new ao,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:he(t),this._value=n?t:Ue(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,r=this.__v_isShallow||gt(t)||cn(t);t=r?t:he(t),ln(t,n)&&(this._rawValue=t,this._value=r?t:Ue(t),this.dep.trigger())}}function Me(e){return Ae(e)?e.value:e}function un(e){return ae(e)?e():Me(e)}const Yh={get:(e,t,n)=>t==="__v_raw"?e:Me(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const s=e[t];return Ae(s)&&!Ae(n)?(s.value=n,!0):Reflect.set(e,t,n,r)}};function pu(e){return Gt(e)?e:new Proxy(e,Yh)}class Jh{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new ao,{get:r,set:s}=t(n.track.bind(n),n.trigger.bind(n));this._get=r,this._set=s}get value(){return this._value=this._get()}set value(t){this._set(t)}}function X2(e){return new Jh(e)}function ea(e){const t=Q(e)?new Array(e.length):{};for(const n in e)t[n]=gu(e,n);return t}class Zh{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return Oh(he(this._object),this._key)}}class Xh{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function ie(e,t,n){return Ae(e)?e:ae(e)?new Xh(e):xe(e)&&arguments.length>1?gu(e,t,n):de(e)}function gu(e,t,n){const r=e[t];return Ae(r)?r:new Zh(e,t,n)}class Qh{constructor(t,n,r){this.fn=t,this.setter=n,this._value=void 0,this.dep=new ao(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Lr-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=r}notify(){if(this.flags|=16,!(this.flags&8)&&Te!==this)return Qc(this,!0),!0}get value(){const t=this.dep.track();return nu(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function em(e,t,n=!1){let r,s;return ae(e)?r=e:(r=e.get,s=e.set),new Qh(r,s,n)}const hs={},Is=new WeakMap;let kn;function tm(e,t=!1,n=kn){if(n){let r=Is.get(n);r||Is.set(n,r=[]),r.push(e)}}function nm(e,t,n=Se){const{immediate:r,deep:s,once:o,scheduler:i,augmentJob:a,call:l}=n,u=k=>s?k:gt(k)||s===!1||s===0?zt(k,1):zt(k);let c,f,d,h,m=!1,w=!1;if(Ae(e)?(f=()=>e.value,m=gt(e)):Gt(e)?(f=()=>u(e),m=!0):Q(e)?(w=!0,m=e.some(k=>Gt(k)||gt(k)),f=()=>e.map(k=>{if(Ae(k))return k.value;if(Gt(k))return u(k);if(ae(k))return l?l(k,2):k()})):ae(e)?t?f=l?()=>l(e,2):e:f=()=>{if(d){Kt();try{d()}finally{Yt()}}const k=kn;kn=c;try{return l?l(e,3,[h]):e(h)}finally{kn=k}}:f=It,t&&s){const k=f,S=s===!0?1/0:s;f=()=>zt(k(),S)}const _=Ki(),b=()=>{c.stop(),_&&_.active&&zi(_.effects,c)};if(o&&t){const k=t;t=(...S)=>{k(...S),b()}}let y=w?new Array(e.length).fill(hs):hs;const p=k=>{if(!(!(c.flags&1)||!c.dirty&&!k))if(t){const S=c.run();if(s||m||(w?S.some((P,D)=>ln(P,y[D])):ln(S,y))){d&&d();const P=kn;kn=c;try{const D=[S,y===hs?void 0:w&&y[0]===hs?[]:y,h];y=S,l?l(t,3,D):t(...D)}finally{kn=P}}}else c.run()};return a&&a(p),c=new Zc(f),c.scheduler=i?()=>i(p,!1):p,h=k=>tm(k,!1,c),d=c.onStop=()=>{const k=Is.get(c);if(k){if(l)l(k,4);else for(const S of k)S();Is.delete(c)}},t?r?p(!0):y=c.run():i?i(p.bind(null,!0),!0):c.run(),b.pause=c.pause.bind(c),b.resume=c.resume.bind(c),b.stop=b,b}function zt(e,t=1/0,n){if(t<=0||!xe(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,Ae(e))zt(e.value,t,n);else if(Q(e))for(let r=0;r{zt(r,t,n)});else if(Wc(e)){for(const r in e)zt(e[r],t,n);for(const r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&zt(e[r],t,n)}return e}/** +* @vue/runtime-core v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Xr(e,t,n,r){try{return r?e(...r):e()}catch(s){fo(s,t,n)}}function xt(e,t,n,r){if(ae(e)){const s=Xr(e,t,n,r);return s&&qc(s)&&s.catch(o=>{fo(o,t,n)}),s}if(Q(e)){const s=[];for(let o=0;o>>1,s=rt[r],o=Dr(s);o=Dr(n)?rt.push(e):rt.splice(sm(t),0,e),e.flags|=1,vu()}}function vu(){Ns||(Ns=yu.then(wu))}function om(e){Q(e)?Xn.push(...e):rn&&e.id===-1?rn.splice(Gn+1,0,e):e.flags&1||(Xn.push(e),e.flags|=1),vu()}function La(e,t,n=Lt+1){for(;nDr(n)-Dr(r));if(Xn.length=0,rn){rn.push(...t);return}for(rn=t,Gn=0;Gne.id==null?e.flags&2?-1:1/0:e.id;function wu(e){try{for(Lt=0;Lt{r._d&&Ga(-1);const o=Bs(t);let i;try{i=e(...s)}finally{Bs(o),r._d&&Ga(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function Vs(e,t){if(qe===null)return e;const n=yo(qe),r=e.dirs||(e.dirs=[]);for(let s=0;se.__isTeleport,kr=e=>e&&(e.disabled||e.disabled===""),Ma=e=>e&&(e.defer||e.defer===""),Da=e=>typeof SVGElement<"u"&&e instanceof SVGElement,Ia=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,li=(e,t)=>{const n=e&&e.to;return Fe(n)?t?t(n):null:n},xu={name:"Teleport",__isTeleport:!0,process(e,t,n,r,s,o,i,a,l,u){const{mc:c,pc:f,pbc:d,o:{insert:h,querySelector:m,createText:w,createComment:_}}=u,b=kr(t.props);let{shapeFlag:y,children:p,dynamicChildren:k}=t;if(e==null){const S=t.el=w(""),P=t.anchor=w("");h(S,n,r),h(P,n,r);const D=(A,B)=>{y&16&&(s&&s.isCE&&(s.ce._teleportTarget=A),c(p,A,B,s,o,i,a,l))},x=()=>{const A=t.target=li(t.props,m),B=Cu(A,t,w,h);A&&(i!=="svg"&&Da(A)?i="svg":i!=="mathml"&&Ia(A)&&(i="mathml"),b||(D(A,B),Es(t,!1)))};b&&(D(n,P),Es(t,!0)),Ma(t.props)?(t.el.__isMounted=!1,nt(()=>{x(),delete t.el.__isMounted},o)):x()}else{if(Ma(t.props)&&e.el.__isMounted===!1){nt(()=>{xu.process(e,t,n,r,s,o,i,a,l,u)},o);return}t.el=e.el,t.targetStart=e.targetStart;const S=t.anchor=e.anchor,P=t.target=e.target,D=t.targetAnchor=e.targetAnchor,x=kr(e.props),A=x?n:P,B=x?S:D;if(i==="svg"||Da(P)?i="svg":(i==="mathml"||Ia(P))&&(i="mathml"),k?(d(e.dynamicChildren,k,A,s,o,i,a),aa(e,t,!0)):l||f(e,t,A,B,s,o,i,a,!1),b)x?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):ms(t,n,S,u,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const V=t.target=li(t.props,m);V&&ms(t,V,null,u,0)}else x&&ms(t,P,D,u,1);Es(t,b)}},remove(e,t,n,{um:r,o:{remove:s}},o){const{shapeFlag:i,children:a,anchor:l,targetStart:u,targetAnchor:c,target:f,props:d}=e;if(f&&(s(u),s(c)),o&&s(l),i&16){const h=o||!kr(d);for(let m=0;m{e.isMounted=!0}),cr(()=>{e.isUnmounting=!0}),e}const mt=[Function,Array],Tu={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:mt,onEnter:mt,onAfterEnter:mt,onEnterCancelled:mt,onBeforeLeave:mt,onLeave:mt,onAfterLeave:mt,onLeaveCancelled:mt,onBeforeAppear:mt,onAppear:mt,onAfterAppear:mt,onAppearCancelled:mt},Au=e=>{const t=e.subTree;return t.component?Au(t.component):t},lm={name:"BaseTransition",props:Tu,setup(e,{slots:t}){const n=pn(),r=ku();return()=>{const s=t.default&&na(t.default(),!0);if(!s||!s.length)return;const o=Ru(s),i=he(e),{mode:a}=i;if(r.isLeaving)return Do(o);const l=Na(o);if(!l)return Do(o);let u=Ir(l,i,r,n,f=>u=f);l.type!==Ye&&Nn(l,u);let c=n.subTree&&Na(n.subTree);if(c&&c.type!==Ye&&!An(l,c)&&Au(n).type!==Ye){let f=Ir(c,i,r,n);if(Nn(c,f),a==="out-in"&&l.type!==Ye)return r.isLeaving=!0,f.afterLeave=()=>{r.isLeaving=!1,n.job.flags&8||n.update(),delete f.afterLeave,c=void 0},Do(o);a==="in-out"&&l.type!==Ye?f.delayLeave=(d,h,m)=>{const w=Pu(r,c);w[String(c.key)]=c,d[sn]=()=>{h(),d[sn]=void 0,delete u.delayedLeave,c=void 0},u.delayedLeave=()=>{m(),delete u.delayedLeave,c=void 0}}:c=void 0}else c&&(c=void 0);return o}}};function Ru(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==Ye){t=n;break}}return t}const cm=lm;function Pu(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function Ir(e,t,n,r,s){const{appear:o,mode:i,persisted:a=!1,onBeforeEnter:l,onEnter:u,onAfterEnter:c,onEnterCancelled:f,onBeforeLeave:d,onLeave:h,onAfterLeave:m,onLeaveCancelled:w,onBeforeAppear:_,onAppear:b,onAfterAppear:y,onAppearCancelled:p}=t,k=String(e.key),S=Pu(n,e),P=(A,B)=>{A&&xt(A,r,9,B)},D=(A,B)=>{const V=B[1];P(A,B),Q(A)?A.every(L=>L.length<=1)&&V():A.length<=1&&V()},x={mode:i,persisted:a,beforeEnter(A){let B=l;if(!n.isMounted)if(o)B=_||l;else return;A[sn]&&A[sn](!0);const V=S[k];V&&An(e,V)&&V.el[sn]&&V.el[sn](),P(B,[A])},enter(A){let B=u,V=c,L=f;if(!n.isMounted)if(o)B=b||u,V=y||c,L=p||f;else return;let G=!1;const se=A[ps]=X=>{G||(G=!0,X?P(L,[A]):P(V,[A]),x.delayedLeave&&x.delayedLeave(),A[ps]=void 0)};B?D(B,[A,se]):se()},leave(A,B){const V=String(e.key);if(A[ps]&&A[ps](!0),n.isUnmounting)return B();P(d,[A]);let L=!1;const G=A[sn]=se=>{L||(L=!0,B(),se?P(w,[A]):P(m,[A]),A[sn]=void 0,S[V]===e&&delete S[V])};S[V]=e,h?D(h,[A,G]):G()},clone(A){const B=Ir(A,t,n,r,s);return s&&s(B),B}};return x}function Do(e){if(ho(e))return e=fn(e),e.children=null,e}function Na(e){if(!ho(e))return Su(e.type)&&e.children?Ru(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&ae(n.default))return n.default()}}function Nn(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Nn(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function na(e,t=!1,n){let r=[],s=0;for(let o=0;o1)for(let o=0;on.value,set:o=>n.value=o})}return n}function Tr(e,t,n,r,s=!1){if(Q(e)){e.forEach((m,w)=>Tr(m,t&&(Q(t)?t[w]:t),n,r,s));return}if(Qn(r)&&!s){r.shapeFlag&512&&r.type.__asyncResolved&&r.component.subTree.component&&Tr(e,t,n,r.component.subTree);return}const o=r.shapeFlag&4?yo(r.component):r.el,i=s?null:o,{i:a,r:l}=e,u=t&&t.r,c=a.refs===Se?a.refs={}:a.refs,f=a.setupState,d=he(f),h=f===Se?()=>!1:m=>_e(d,m);if(u!=null&&u!==l&&(Fe(u)?(c[u]=null,h(u)&&(f[u]=null)):Ae(u)&&(u.value=null)),ae(l))Xr(l,a,12,[i,c]);else{const m=Fe(l),w=Ae(l);if(m||w){const _=()=>{if(e.f){const b=m?h(l)?f[l]:c[l]:l.value;s?Q(b)&&zi(b,o):Q(b)?b.includes(o)||b.push(o):m?(c[l]=[o],h(l)&&(f[l]=c[l])):(l.value=[o],e.k&&(c[e.k]=l.value))}else m?(c[l]=i,h(l)&&(f[l]=i)):w&&(l.value=i,e.k&&(c[e.k]=i))};i?(_.id=-1,nt(_,n)):_()}}}io().requestIdleCallback;io().cancelIdleCallback;const Qn=e=>!!e.type.__asyncLoader,ho=e=>e.type.__isKeepAlive;function fm(e,t){$u(e,"a",t)}function dm(e,t){$u(e,"da",t)}function $u(e,t,n=Je){const r=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(mo(t,r,n),n){let s=n.parent;for(;s&&s.parent;)ho(s.parent.vnode)&&hm(r,t,n,s),s=s.parent}}function hm(e,t,n,r){const s=mo(t,e,r,!0);Fu(()=>{zi(r[t],s)},n)}function mo(e,t,n=Je,r=!1){if(n){const s=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{Kt();const a=es(n),l=xt(t,n,e,i);return a(),Yt(),l});return r?s.unshift(o):s.push(o),o}}const Jt=e=>(t,n=Je)=>{(!Vr||e==="sp")&&mo(e,(...r)=>t(...r),n)},mm=Jt("bm"),mn=Jt("m"),pm=Jt("bu"),sa=Jt("u"),cr=Jt("bum"),Fu=Jt("um"),gm=Jt("sp"),ym=Jt("rtg"),vm=Jt("rtc");function bm(e,t=Je){mo("ec",e,t)}const Lu="components";function Mu(e,t){return Iu(Lu,e,!0,t)||e}const Du=Symbol.for("v-ndc");function wm(e){return Fe(e)?Iu(Lu,e,!1)||e:e||Du}function Iu(e,t,n=!0,r=!1){const s=qe||Je;if(s){const o=s.type;{const a=op(o,!1);if(a&&(a===t||a===vt(t)||a===Jr(vt(t))))return o}const i=Ba(s[e]||o[e],t)||Ba(s.appContext[e],t);return!i&&r?o:i}}function Ba(e,t){return e&&(e[t]||e[vt(t)]||e[Jr(vt(t))])}function ci(e,t,n,r){let s;const o=n,i=Q(e);if(i||Fe(e)){const a=i&&Gt(e);let l=!1,u=!1;a&&(l=!gt(e),u=cn(e),e=lo(e)),s=new Array(e.length);for(let c=0,f=e.length;ct(a,l,void 0,o));else{const a=Object.keys(e);s=new Array(a.length);for(let l=0,u=a.length;l{const o=r.fn(...s);return o&&(o.key=r.key),o}:r.fn)}return e}function Nu(e,t,n={},r,s){if(qe.ce||qe.parent&&Qn(qe.parent)&&qe.parent.ce)return t!=="default"&&(n.name=t),J(),Bn(Ie,null,[Z("slot",n,r&&r())],64);let o=e[t];o&&o._c&&(o._d=!1),J();const i=o&&Bu(o(n)),a=n.key||i&&i.key,l=Bn(Ie,{key:(a&&!St(a)?a:`_${t}`)+(!i&&r?"_fb":"")},i||(r?r():[]),i&&e._===1?64:-2);return!s&&l.scopeId&&(l.slotScopeIds=[l.scopeId+"-s"]),o&&o._c&&(o._d=!0),l}function Bu(e){return e.some(t=>Br(t)?!(t.type===Ye||t.type===Ie&&!Bu(t.children)):!0)?e:null}function t_(e,t){const n={};for(const r in e)n[ws(r)]=e[r];return n}const ui=e=>e?sf(e)?yo(e):ui(e.parent):null,Ar=Ve(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>ui(e.parent),$root:e=>ui(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Hu(e),$forceUpdate:e=>e.f||(e.f=()=>{ta(e.update)}),$nextTick:e=>e.n||(e.n=bt.bind(e.proxy)),$watch:e=>Hm.bind(e)}),Io=(e,t)=>e!==Se&&!e.__isScriptSetup&&_e(e,t),_m={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:r,data:s,props:o,accessCache:i,type:a,appContext:l}=e;let u;if(t[0]!=="$"){const h=i[t];if(h!==void 0)switch(h){case 1:return r[t];case 2:return s[t];case 4:return n[t];case 3:return o[t]}else{if(Io(r,t))return i[t]=1,r[t];if(s!==Se&&_e(s,t))return i[t]=2,s[t];if((u=e.propsOptions[0])&&_e(u,t))return i[t]=3,o[t];if(n!==Se&&_e(n,t))return i[t]=4,n[t];di&&(i[t]=0)}}const c=Ar[t];let f,d;if(c)return t==="$attrs"&&Ge(e.attrs,"get",""),c(e);if((f=a.__cssModules)&&(f=f[t]))return f;if(n!==Se&&_e(n,t))return i[t]=4,n[t];if(d=l.config.globalProperties,_e(d,t))return d[t]},set({_:e},t,n){const{data:r,setupState:s,ctx:o}=e;return Io(s,t)?(s[t]=n,!0):r!==Se&&_e(r,t)?(r[t]=n,!0):_e(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:s,propsOptions:o}},i){let a;return!!n[i]||e!==Se&&_e(e,i)||Io(t,i)||(a=o[0])&&_e(a,i)||_e(r,i)||_e(Ar,i)||_e(s.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:_e(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function n_(){return Vu().slots}function r_(){return Vu().attrs}function Vu(e){const t=pn();return t.setupContext||(t.setupContext=af(t))}function fi(e){return Q(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}function s_(e,t){const n=fi(e);for(const r in t){if(r.startsWith("__skip"))continue;let s=n[r];s?Q(s)||ae(s)?s=n[r]={type:s,default:t[r]}:s.default=t[r]:s===null&&(s=n[r]={default:t[r]}),s&&t[`__skip_${r}`]&&(s.skipFactory=!0)}return n}let di=!0;function Em(e){const t=Hu(e),n=e.proxy,r=e.ctx;di=!1,t.beforeCreate&&Va(t.beforeCreate,e,"bc");const{data:s,computed:o,methods:i,watch:a,provide:l,inject:u,created:c,beforeMount:f,mounted:d,beforeUpdate:h,updated:m,activated:w,deactivated:_,beforeDestroy:b,beforeUnmount:y,destroyed:p,unmounted:k,render:S,renderTracked:P,renderTriggered:D,errorCaptured:x,serverPrefetch:A,expose:B,inheritAttrs:V,components:L,directives:G,filters:se}=t;if(u&&Sm(u,r,null),i)for(const ee in i){const ce=i[ee];ae(ce)&&(r[ee]=ce.bind(n))}if(s){const ee=s.call(n,n);xe(ee)&&(e.data=Be(ee))}if(di=!0,o)for(const ee in o){const ce=o[ee],Ne=ae(ce)?ce.bind(n,n):ae(ce.get)?ce.get.bind(n,n):It,Ce=!ae(ce)&&ae(ce.set)?ce.set.bind(n):It,Le=M({get:Ne,set:Ce});Object.defineProperty(r,ee,{enumerable:!0,configurable:!0,get:()=>Le.value,set:Re=>Le.value=Re})}if(a)for(const ee in a)ju(a[ee],r,n,ee);if(l){const ee=ae(l)?l.call(n):l;Reflect.ownKeys(ee).forEach(ce=>{Et(ce,ee[ce])})}c&&Va(c,e,"c");function oe(ee,ce){Q(ce)?ce.forEach(Ne=>ee(Ne.bind(n))):ce&&ee(ce.bind(n))}if(oe(mm,f),oe(mn,d),oe(pm,h),oe(sa,m),oe(fm,w),oe(dm,_),oe(bm,x),oe(vm,P),oe(ym,D),oe(cr,y),oe(Fu,k),oe(gm,A),Q(B))if(B.length){const ee=e.exposed||(e.exposed={});B.forEach(ce=>{Object.defineProperty(ee,ce,{get:()=>n[ce],set:Ne=>n[ce]=Ne,enumerable:!0})})}else e.exposed||(e.exposed={});S&&e.render===It&&(e.render=S),V!=null&&(e.inheritAttrs=V),L&&(e.components=L),G&&(e.directives=G),A&&Ou(e)}function Sm(e,t,n=It){Q(e)&&(e=hi(e));for(const r in e){const s=e[r];let o;xe(s)?"default"in s?o=Pe(s.from||r,s.default,!0):o=Pe(s.from||r):o=Pe(s),Ae(o)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[r]=o}}function Va(e,t,n){xt(Q(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function ju(e,t,n,r){let s=r.includes(".")?Qu(n,r):()=>n[r];if(Fe(e)){const o=t[e];ae(o)&&ye(s,o)}else if(ae(e))ye(s,e.bind(n));else if(xe(e))if(Q(e))e.forEach(o=>ju(o,t,n,r));else{const o=ae(e.handler)?e.handler.bind(n):t[e.handler];ae(o)&&ye(s,o,e)}}function Hu(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:s,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,a=o.get(t);let l;return a?l=a:!s.length&&!n&&!r?l=t:(l={},s.length&&s.forEach(u=>js(l,u,i,!0)),js(l,t,i)),xe(t)&&o.set(t,l),l}function js(e,t,n,r=!1){const{mixins:s,extends:o}=t;o&&js(e,o,n,!0),s&&s.forEach(i=>js(e,i,n,!0));for(const i in t)if(!(r&&i==="expose")){const a=xm[i]||n&&n[i];e[i]=a?a(e[i],t[i]):t[i]}return e}const xm={data:ja,props:Ha,emits:Ha,methods:Er,computed:Er,beforeCreate:tt,created:tt,beforeMount:tt,mounted:tt,beforeUpdate:tt,updated:tt,beforeDestroy:tt,beforeUnmount:tt,destroyed:tt,unmounted:tt,activated:tt,deactivated:tt,errorCaptured:tt,serverPrefetch:tt,components:Er,directives:Er,watch:km,provide:ja,inject:Cm};function ja(e,t){return t?e?function(){return Ve(ae(e)?e.call(this,this):e,ae(t)?t.call(this,this):t)}:t:e}function Cm(e,t){return Er(hi(e),hi(t))}function hi(e){if(Q(e)){const t={};for(let n=0;n1)return n&&ae(t)?t.call(r&&r.proxy):t}}function Rm(){return!!(pn()||Fn)}const qu={},zu=()=>Object.create(qu),Wu=e=>Object.getPrototypeOf(e)===qu;function Pm(e,t,n,r=!1){const s={},o=zu();e.propsDefaults=Object.create(null),Gu(e,t,s,o);for(const i in e.propsOptions[0])i in s||(s[i]=void 0);n?e.props=r?s:hu(s):e.type.props?e.props=s:e.props=o,e.attrs=o}function Om(e,t,n,r){const{props:s,attrs:o,vnode:{patchFlag:i}}=e,a=he(s),[l]=e.propsOptions;let u=!1;if((r||i>0)&&!(i&16)){if(i&8){const c=e.vnode.dynamicProps;for(let f=0;f{l=!0;const[d,h]=Ku(f,t,!0);Ve(i,d),h&&a.push(...h)};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}if(!o&&!l)return xe(e)&&r.set(e,Jn),Jn;if(Q(o))for(let c=0;ce==="_"||e==="__"||e==="_ctx"||e==="$stable",ia=e=>Q(e)?e.map(Mt):[Mt(e)],Fm=(e,t,n)=>{if(t._n)return t;const r=He((...s)=>ia(t(...s)),n);return r._c=!1,r},Yu=(e,t,n)=>{const r=e._ctx;for(const s in e){if(oa(s))continue;const o=e[s];if(ae(o))t[s]=Fm(s,o,r);else if(o!=null){const i=ia(o);t[s]=()=>i}}},Ju=(e,t)=>{const n=ia(t);e.slots.default=()=>n},Zu=(e,t,n)=>{for(const r in t)(n||!oa(r))&&(e[r]=t[r])},Lm=(e,t,n)=>{const r=e.slots=zu();if(e.vnode.shapeFlag&32){const s=t.__;s&&si(r,"__",s,!0);const o=t._;o?(Zu(r,t,n),n&&si(r,"_",o,!0)):Yu(t,r)}else t&&Ju(e,t)},Mm=(e,t,n)=>{const{vnode:r,slots:s}=e;let o=!0,i=Se;if(r.shapeFlag&32){const a=t._;a?n&&a===1?o=!1:Zu(s,t,n):(o=!t.$stable,Yu(t,s)),i=t}else t&&(Ju(e,t),i={default:1});if(o)for(const a in s)!oa(a)&&i[a]==null&&delete s[a]},nt=Ym;function Dm(e){return Im(e)}function Im(e,t){const n=io();n.__VUE__=!0;const{insert:r,remove:s,patchProp:o,createElement:i,createText:a,createComment:l,setText:u,setElementText:c,parentNode:f,nextSibling:d,setScopeId:h=It,insertStaticContent:m}=e,w=(g,v,E,O=null,F=null,$=null,z=void 0,q=null,U=!!v.dynamicChildren)=>{if(g===v)return;g&&!An(g,v)&&(O=C(g),Re(g,F,$,!0),g=null),v.patchFlag===-2&&(U=!1,v.dynamicChildren=null);const{type:I,ref:re,shapeFlag:W}=v;switch(I){case Qr:_(g,v,E,O);break;case Ye:b(g,v,E,O);break;case Ss:g==null&&y(v,E,O,z);break;case Ie:L(g,v,E,O,F,$,z,q,U);break;default:W&1?S(g,v,E,O,F,$,z,q,U):W&6?G(g,v,E,O,F,$,z,q,U):(W&64||W&128)&&I.process(g,v,E,O,F,$,z,q,U,Y)}re!=null&&F?Tr(re,g&&g.ref,$,v||g,!v):re==null&&g&&g.ref!=null&&Tr(g.ref,null,$,g,!0)},_=(g,v,E,O)=>{if(g==null)r(v.el=a(v.children),E,O);else{const F=v.el=g.el;v.children!==g.children&&u(F,v.children)}},b=(g,v,E,O)=>{g==null?r(v.el=l(v.children||""),E,O):v.el=g.el},y=(g,v,E,O)=>{[g.el,g.anchor]=m(g.children,v,E,O,g.el,g.anchor)},p=({el:g,anchor:v},E,O)=>{let F;for(;g&&g!==v;)F=d(g),r(g,E,O),g=F;r(v,E,O)},k=({el:g,anchor:v})=>{let E;for(;g&&g!==v;)E=d(g),s(g),g=E;s(v)},S=(g,v,E,O,F,$,z,q,U)=>{v.type==="svg"?z="svg":v.type==="math"&&(z="mathml"),g==null?P(v,E,O,F,$,z,q,U):A(g,v,F,$,z,q,U)},P=(g,v,E,O,F,$,z,q)=>{let U,I;const{props:re,shapeFlag:W,transition:te,dirs:le}=g;if(U=g.el=i(g.type,$,re&&re.is,re),W&8?c(U,g.children):W&16&&x(g.children,U,null,O,F,No(g,$),z,q),le&&bn(g,null,O,"created"),D(U,g,g.scopeId,z,O),re){for(const ke in re)ke!=="value"&&!Sr(ke)&&o(U,ke,null,re[ke],$,O);"value"in re&&o(U,"value",null,re.value,$),(I=re.onVnodeBeforeMount)&&Ot(I,O,g)}le&&bn(g,null,O,"beforeMount");const ge=Nm(F,te);ge&&te.beforeEnter(U),r(U,v,E),((I=re&&re.onVnodeMounted)||ge||le)&&nt(()=>{I&&Ot(I,O,g),ge&&te.enter(U),le&&bn(g,null,O,"mounted")},F)},D=(g,v,E,O,F)=>{if(E&&h(g,E),O)for(let $=0;${for(let I=U;I{const q=v.el=g.el;let{patchFlag:U,dynamicChildren:I,dirs:re}=v;U|=g.patchFlag&16;const W=g.props||Se,te=v.props||Se;let le;if(E&&wn(E,!1),(le=te.onVnodeBeforeUpdate)&&Ot(le,E,v,g),re&&bn(v,g,E,"beforeUpdate"),E&&wn(E,!0),(W.innerHTML&&te.innerHTML==null||W.textContent&&te.textContent==null)&&c(q,""),I?B(g.dynamicChildren,I,q,E,O,No(v,F),$):z||ce(g,v,q,null,E,O,No(v,F),$,!1),U>0){if(U&16)V(q,W,te,E,F);else if(U&2&&W.class!==te.class&&o(q,"class",null,te.class,F),U&4&&o(q,"style",W.style,te.style,F),U&8){const ge=v.dynamicProps;for(let ke=0;ke{le&&Ot(le,E,v,g),re&&bn(v,g,E,"updated")},O)},B=(g,v,E,O,F,$,z)=>{for(let q=0;q{if(v!==E){if(v!==Se)for(const $ in v)!Sr($)&&!($ in E)&&o(g,$,v[$],null,F,O);for(const $ in E){if(Sr($))continue;const z=E[$],q=v[$];z!==q&&$!=="value"&&o(g,$,q,z,F,O)}"value"in E&&o(g,"value",v.value,E.value,F)}},L=(g,v,E,O,F,$,z,q,U)=>{const I=v.el=g?g.el:a(""),re=v.anchor=g?g.anchor:a("");let{patchFlag:W,dynamicChildren:te,slotScopeIds:le}=v;le&&(q=q?q.concat(le):le),g==null?(r(I,E,O),r(re,E,O),x(v.children||[],E,re,F,$,z,q,U)):W>0&&W&64&&te&&g.dynamicChildren?(B(g.dynamicChildren,te,E,F,$,z,q),(v.key!=null||F&&v===F.subTree)&&aa(g,v,!0)):ce(g,v,E,re,F,$,z,q,U)},G=(g,v,E,O,F,$,z,q,U)=>{v.slotScopeIds=q,g==null?v.shapeFlag&512?F.ctx.activate(v,E,O,z,U):se(v,E,O,F,$,z,U):X(g,v,U)},se=(g,v,E,O,F,$,z)=>{const q=g.component=tp(g,O,F);if(ho(g)&&(q.ctx.renderer=Y),np(q,!1,z),q.asyncDep){if(F&&F.registerDep(q,oe,z),!g.el){const U=q.subTree=Z(Ye);b(null,U,v,E),g.placeholder=U.el}}else oe(q,g,v,E,F,$,z)},X=(g,v,E)=>{const O=v.component=g.component;if(Gm(g,v,E))if(O.asyncDep&&!O.asyncResolved){ee(O,v,E);return}else O.next=v,O.update();else v.el=g.el,O.vnode=v},oe=(g,v,E,O,F,$,z)=>{const q=()=>{if(g.isMounted){let{next:W,bu:te,u:le,parent:ge,vnode:ke}=g;{const Rt=Xu(g);if(Rt){W&&(W.el=ke.el,ee(g,W,z)),Rt.asyncDep.then(()=>{g.isUnmounted||q()});return}}let Ee=W,st;wn(g,!1),W?(W.el=ke.el,ee(g,W,z)):W=ke,te&&_s(te),(st=W.props&&W.props.onVnodeBeforeUpdate)&&Ot(st,ge,W,ke),wn(g,!0);const ot=za(g),At=g.subTree;g.subTree=ot,w(At,ot,f(At.el),C(At),g,F,$),W.el=ot.el,Ee===null&&Km(g,ot.el),le&&nt(le,F),(st=W.props&&W.props.onVnodeUpdated)&&nt(()=>Ot(st,ge,W,ke),F)}else{let W;const{el:te,props:le}=v,{bm:ge,m:ke,parent:Ee,root:st,type:ot}=g,At=Qn(v);wn(g,!1),ge&&_s(ge),!At&&(W=le&&le.onVnodeBeforeMount)&&Ot(W,Ee,v),wn(g,!0);{st.ce&&st.ce._def.shadowRoot!==!1&&st.ce._injectChildStyle(ot);const Rt=g.subTree=za(g);w(null,Rt,E,O,g,F,$),v.el=Rt.el}if(ke&&nt(ke,F),!At&&(W=le&&le.onVnodeMounted)){const Rt=v;nt(()=>Ot(W,Ee,Rt),F)}(v.shapeFlag&256||Ee&&Qn(Ee.vnode)&&Ee.vnode.shapeFlag&256)&&g.a&&nt(g.a,F),g.isMounted=!0,v=E=O=null}};g.scope.on();const U=g.effect=new Zc(q);g.scope.off();const I=g.update=U.run.bind(U),re=g.job=U.runIfDirty.bind(U);re.i=g,re.id=g.uid,U.scheduler=()=>ta(re),wn(g,!0),I()},ee=(g,v,E)=>{v.component=g;const O=g.vnode.props;g.vnode=v,g.next=null,Om(g,v.props,O,E),Mm(g,v.children,E),Kt(),La(g),Yt()},ce=(g,v,E,O,F,$,z,q,U=!1)=>{const I=g&&g.children,re=g?g.shapeFlag:0,W=v.children,{patchFlag:te,shapeFlag:le}=v;if(te>0){if(te&128){Ce(I,W,E,O,F,$,z,q,U);return}else if(te&256){Ne(I,W,E,O,F,$,z,q,U);return}}le&8?(re&16&&ze(I,F,$),W!==I&&c(E,W)):re&16?le&16?Ce(I,W,E,O,F,$,z,q,U):ze(I,F,$,!0):(re&8&&c(E,""),le&16&&x(W,E,O,F,$,z,q,U))},Ne=(g,v,E,O,F,$,z,q,U)=>{g=g||Jn,v=v||Jn;const I=g.length,re=v.length,W=Math.min(I,re);let te;for(te=0;tere?ze(g,F,$,!0,!1,W):x(v,E,O,F,$,z,q,U,W)},Ce=(g,v,E,O,F,$,z,q,U)=>{let I=0;const re=v.length;let W=g.length-1,te=re-1;for(;I<=W&&I<=te;){const le=g[I],ge=v[I]=U?on(v[I]):Mt(v[I]);if(An(le,ge))w(le,ge,E,null,F,$,z,q,U);else break;I++}for(;I<=W&&I<=te;){const le=g[W],ge=v[te]=U?on(v[te]):Mt(v[te]);if(An(le,ge))w(le,ge,E,null,F,$,z,q,U);else break;W--,te--}if(I>W){if(I<=te){const le=te+1,ge=lete)for(;I<=W;)Re(g[I],F,$,!0),I++;else{const le=I,ge=I,ke=new Map;for(I=ge;I<=te;I++){const ut=v[I]=U?on(v[I]):Mt(v[I]);ut.key!=null&&ke.set(ut.key,I)}let Ee,st=0;const ot=te-ge+1;let At=!1,Rt=0;const mr=new Array(ot);for(I=0;I=ot){Re(ut,F,$,!0);continue}let Pt;if(ut.key!=null)Pt=ke.get(ut.key);else for(Ee=ge;Ee<=te;Ee++)if(mr[Ee-ge]===0&&An(ut,v[Ee])){Pt=Ee;break}Pt===void 0?Re(ut,F,$,!0):(mr[Pt-ge]=I+1,Pt>=Rt?Rt=Pt:At=!0,w(ut,v[Pt],E,null,F,$,z,q,U),st++)}const Ta=At?Bm(mr):Jn;for(Ee=Ta.length-1,I=ot-1;I>=0;I--){const ut=ge+I,Pt=v[ut],Aa=v[ut+1],Ra=ut+1{const{el:$,type:z,transition:q,children:U,shapeFlag:I}=g;if(I&6){Le(g.component.subTree,v,E,O);return}if(I&128){g.suspense.move(v,E,O);return}if(I&64){z.move(g,v,E,Y);return}if(z===Ie){r($,v,E);for(let W=0;Wq.enter($),F);else{const{leave:W,delayLeave:te,afterLeave:le}=q,ge=()=>{g.ctx.isUnmounted?s($):r($,v,E)},ke=()=>{W($,()=>{ge(),le&&le()})};te?te($,ge,ke):ke()}else r($,v,E)},Re=(g,v,E,O=!1,F=!1)=>{const{type:$,props:z,ref:q,children:U,dynamicChildren:I,shapeFlag:re,patchFlag:W,dirs:te,cacheIndex:le}=g;if(W===-2&&(F=!1),q!=null&&(Kt(),Tr(q,null,E,g,!0),Yt()),le!=null&&(v.renderCache[le]=void 0),re&256){v.ctx.deactivate(g);return}const ge=re&1&&te,ke=!Qn(g);let Ee;if(ke&&(Ee=z&&z.onVnodeBeforeUnmount)&&Ot(Ee,v,g),re&6)Tt(g.component,E,O);else{if(re&128){g.suspense.unmount(E,O);return}ge&&bn(g,null,v,"beforeUnmount"),re&64?g.type.remove(g,v,E,Y,O):I&&!I.hasOnce&&($!==Ie||W>0&&W&64)?ze(I,v,E,!1,!0):($===Ie&&W&384||!F&&re&16)&&ze(U,v,E),O&&je(g)}(ke&&(Ee=z&&z.onVnodeUnmounted)||ge)&&nt(()=>{Ee&&Ot(Ee,v,g),ge&&bn(g,null,v,"unmounted")},E)},je=g=>{const{type:v,el:E,anchor:O,transition:F}=g;if(v===Ie){ct(E,O);return}if(v===Ss){k(g);return}const $=()=>{s(E),F&&!F.persisted&&F.afterLeave&&F.afterLeave()};if(g.shapeFlag&1&&F&&!F.persisted){const{leave:z,delayLeave:q}=F,U=()=>z(E,$);q?q(g.el,$,U):U()}else $()},ct=(g,v)=>{let E;for(;g!==v;)E=d(g),s(g),g=E;s(v)},Tt=(g,v,E)=>{const{bum:O,scope:F,job:$,subTree:z,um:q,m:U,a:I,parent:re,slots:{__:W}}=g;qa(U),qa(I),O&&_s(O),re&&Q(W)&&W.forEach(te=>{re.renderCache[te]=void 0}),F.stop(),$&&($.flags|=8,Re(z,g,v,E)),q&&nt(q,v),nt(()=>{g.isUnmounted=!0},v),v&&v.pendingBranch&&!v.isUnmounted&&g.asyncDep&&!g.asyncResolved&&g.suspenseId===v.pendingId&&(v.deps--,v.deps===0&&v.resolve())},ze=(g,v,E,O=!1,F=!1,$=0)=>{for(let z=$;z{if(g.shapeFlag&6)return C(g.component.subTree);if(g.shapeFlag&128)return g.suspense.next();const v=d(g.anchor||g.el),E=v&&v[Eu];return E?d(E):v};let N=!1;const j=(g,v,E)=>{g==null?v._vnode&&Re(v._vnode,null,null,!0):w(v._vnode||null,g,v,null,null,null,E),v._vnode=g,N||(N=!0,La(),bu(),N=!1)},Y={p:w,um:Re,m:Le,r:je,mt:se,mc:x,pc:ce,pbc:B,n:C,o:e};return{render:j,hydrate:void 0,createApp:Am(j)}}function No({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function wn({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Nm(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function aa(e,t,n=!1){const r=e.children,s=t.children;if(Q(r)&&Q(s))for(let o=0;o>1,e[n[a]]0&&(t[r]=n[o-1]),n[o]=r)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}function Xu(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Xu(t)}function qa(e){if(e)for(let t=0;tPe(Vm);function Zt(e,t){return po(e,null,t)}function o_(e,t){return po(e,null,{flush:"post"})}function ye(e,t,n){return po(e,t,n)}function po(e,t,n=Se){const{immediate:r,deep:s,flush:o,once:i}=n,a=Ve({},n),l=t&&r||!t&&o!=="post";let u;if(Vr){if(o==="sync"){const h=jm();u=h.__watcherHandles||(h.__watcherHandles=[])}else if(!l){const h=()=>{};return h.stop=It,h.resume=It,h.pause=It,h}}const c=Je;a.call=(h,m,w)=>xt(h,c,m,w);let f=!1;o==="post"?a.scheduler=h=>{nt(h,c&&c.suspense)}:o!=="sync"&&(f=!0,a.scheduler=(h,m)=>{m?h():ta(h)}),a.augmentJob=h=>{t&&(h.flags|=4),f&&(h.flags|=2,c&&(h.id=c.uid,h.i=c))};const d=nm(e,t,a);return Vr&&(u?u.push(d):l&&d()),d}function Hm(e,t,n){const r=this.proxy,s=Fe(e)?e.includes(".")?Qu(r,e):()=>r[e]:e.bind(r,r);let o;ae(t)?o=t:(o=t.handler,n=t);const i=es(this),a=po(s,o.bind(r),n);return i(),a}function Qu(e,t){const n=t.split(".");return()=>{let r=e;for(let s=0;st==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${vt(t)}Modifiers`]||e[`${hn(t)}Modifiers`];function qm(e,t,...n){if(e.isUnmounted)return;const r=e.vnode.props||Se;let s=n;const o=t.startsWith("update:"),i=o&&Um(r,t.slice(7));i&&(i.trim&&(s=n.map(c=>Fe(c)?c.trim():c)),i.number&&(s=n.map(Ls)));let a,l=r[a=ws(t)]||r[a=ws(vt(t))];!l&&o&&(l=r[a=ws(hn(t))]),l&&xt(l,e,6,s);const u=r[a+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[a])return;e.emitted[a]=!0,xt(u,e,6,s)}}function ef(e,t,n=!1){const r=t.emitsCache,s=r.get(e);if(s!==void 0)return s;const o=e.emits;let i={},a=!1;if(!ae(e)){const l=u=>{const c=ef(u,t,!0);c&&(a=!0,Ve(i,c))};!n&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!o&&!a?(xe(e)&&r.set(e,null),null):(Q(o)?o.forEach(l=>i[l]=null):Ve(i,o),xe(e)&&r.set(e,i),i)}function go(e,t){return!e||!so(t)?!1:(t=t.slice(2).replace(/Once$/,""),_e(e,t[0].toLowerCase()+t.slice(1))||_e(e,hn(t))||_e(e,t))}function za(e){const{type:t,vnode:n,proxy:r,withProxy:s,propsOptions:[o],slots:i,attrs:a,emit:l,render:u,renderCache:c,props:f,data:d,setupState:h,ctx:m,inheritAttrs:w}=e,_=Bs(e);let b,y;try{if(n.shapeFlag&4){const k=s||r,S=k;b=Mt(u.call(S,k,c,f,h,d,m)),y=a}else{const k=t;b=Mt(k.length>1?k(f,{attrs:a,slots:i,emit:l}):k(f,null)),y=t.props?a:zm(a)}}catch(k){Rr.length=0,fo(k,e,1),b=Z(Ye)}let p=b;if(y&&w!==!1){const k=Object.keys(y),{shapeFlag:S}=p;k.length&&S&7&&(o&&k.some(qi)&&(y=Wm(y,o)),p=fn(p,y,!1,!0))}return n.dirs&&(p=fn(p,null,!1,!0),p.dirs=p.dirs?p.dirs.concat(n.dirs):n.dirs),n.transition&&Nn(p,n.transition),b=p,Bs(_),b}const zm=e=>{let t;for(const n in e)(n==="class"||n==="style"||so(n))&&((t||(t={}))[n]=e[n]);return t},Wm=(e,t)=>{const n={};for(const r in e)(!qi(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function Gm(e,t,n){const{props:r,children:s,component:o}=e,{props:i,children:a,patchFlag:l}=t,u=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&l>=0){if(l&1024)return!0;if(l&16)return r?Wa(r,i,u):!!i;if(l&8){const c=t.dynamicProps;for(let f=0;fe.__isSuspense;function Ym(e,t){t&&t.pendingBranch?Q(e)?t.effects.push(...e):t.effects.push(e):om(e)}const Ie=Symbol.for("v-fgt"),Qr=Symbol.for("v-txt"),Ye=Symbol.for("v-cmt"),Ss=Symbol.for("v-stc"),Rr=[];let dt=null;function J(e=!1){Rr.push(dt=e?null:[])}function Jm(){Rr.pop(),dt=Rr[Rr.length-1]||null}let Nr=1;function Ga(e,t=!1){Nr+=e,e<0&&dt&&t&&(dt.hasOnce=!0)}function nf(e){return e.dynamicChildren=Nr>0?dt||Jn:null,Jm(),Nr>0&&dt&&dt.push(e),e}function ne(e,t,n,r,s,o){return nf(R(e,t,n,r,s,o,!0))}function Bn(e,t,n,r,s){return nf(Z(e,t,n,r,s,!0))}function Br(e){return e?e.__v_isVNode===!0:!1}function An(e,t){return e.type===t.type&&e.key===t.key}const rf=({key:e})=>e??null,xs=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?Fe(e)||Ae(e)||ae(e)?{i:qe,r:e,k:t,f:!!n}:e:null);function R(e,t=null,n=null,r=0,s=null,o=e===Ie?0:1,i=!1,a=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&rf(t),ref:t&&xs(t),scopeId:_u,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:r,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:qe};return a?(la(l,n),o&128&&e.normalize(l)):n&&(l.shapeFlag|=Fe(n)?8:16),Nr>0&&!i&&dt&&(l.patchFlag>0||o&6)&&l.patchFlag!==32&&dt.push(l),l}const Z=Zm;function Zm(e,t=null,n=null,r=0,s=null,o=!1){if((!e||e===Du)&&(e=Ye),Br(e)){const a=fn(e,t,!0);return n&&la(a,n),Nr>0&&!o&&dt&&(a.shapeFlag&6?dt[dt.indexOf(e)]=a:dt.push(a)),a.patchFlag=-2,a}if(ip(e)&&(e=e.__vccOpts),t){t=Xm(t);let{class:a,style:l}=t;a&&!Fe(a)&&(t.class=ve(a)),xe(l)&&(Xi(l)&&!Q(l)&&(l=Ve({},l)),t.style=Ke(l))}const i=Fe(e)?1:tf(e)?128:Su(e)?64:xe(e)?4:ae(e)?2:0;return R(e,t,n,r,s,i,o,!0)}function Xm(e){return e?Xi(e)||Wu(e)?Ve({},e):e:null}function fn(e,t,n=!1,r=!1){const{props:s,ref:o,patchFlag:i,children:a,transition:l}=e,u=t?Xe(s||{},t):s,c={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&rf(u),ref:t&&t.ref?n&&o?Q(o)?o.concat(xs(t)):[o,xs(t)]:xs(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:a,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Ie?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:l,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&fn(e.ssContent),ssFallback:e.ssFallback&&fn(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return l&&r&&Nn(c,l.clone(c)),c}function Rn(e=" ",t=0){return Z(Qr,null,e,t)}function i_(e,t){const n=Z(Ss,null,e);return n.staticCount=t,n}function ue(e="",t=!1){return t?(J(),Bn(Ye,null,e)):Z(Ye,null,e)}function Mt(e){return e==null||typeof e=="boolean"?Z(Ye):Q(e)?Z(Ie,null,e.slice()):Br(e)?on(e):Z(Qr,null,String(e))}function on(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:fn(e)}function la(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(Q(t))n=16;else if(typeof t=="object")if(r&65){const s=t.default;s&&(s._c&&(s._d=!1),la(e,s()),s._c&&(s._d=!0));return}else{n=32;const s=t._;!s&&!Wu(t)?t._ctx=qe:s===3&&qe&&(qe.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else ae(t)?(t={default:t,_ctx:qe},n=32):(t=String(t),r&64?(n=16,t=[Rn(t)]):n=8);e.children=t,e.shapeFlag|=n}function Xe(...e){const t={};for(let n=0;nJe||qe;let Hs,pi;{const e=io(),t=(n,r)=>{let s;return(s=e[n])||(s=e[n]=[]),s.push(r),o=>{s.length>1?s.forEach(i=>i(o)):s[0](o)}};Hs=t("__VUE_INSTANCE_SETTERS__",n=>Je=n),pi=t("__VUE_SSR_SETTERS__",n=>Vr=n)}const es=e=>{const t=Je;return Hs(e),e.scope.on(),()=>{e.scope.off(),Hs(t)}},Ka=()=>{Je&&Je.scope.off(),Hs(null)};function sf(e){return e.vnode.shapeFlag&4}let Vr=!1;function np(e,t=!1,n=!1){t&&pi(t);const{props:r,children:s}=e.vnode,o=sf(e);Pm(e,r,o,t),Lm(e,s,n||t);const i=o?rp(e,t):void 0;return t&&pi(!1),i}function rp(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,_m);const{setup:r}=n;if(r){Kt();const s=e.setupContext=r.length>1?af(e):null,o=es(e),i=Xr(r,e,0,[e.props,s]),a=qc(i);if(Yt(),o(),(a||e.sp)&&!Qn(e)&&Ou(e),a){if(i.then(Ka,Ka),t)return i.then(l=>{Ya(e,l)}).catch(l=>{fo(l,e,0)});e.asyncDep=i}else Ya(e,i)}else of(e)}function Ya(e,t,n){ae(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:xe(t)&&(e.setupState=pu(t)),of(e)}function of(e,t,n){const r=e.type;e.render||(e.render=r.render||It);{const s=es(e);Kt();try{Em(e)}finally{Yt(),s()}}}const sp={get(e,t){return Ge(e,"get",""),e[t]}};function af(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,sp),slots:e.slots,emit:e.emit,expose:t}}function yo(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(pu(Qi(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Ar)return Ar[n](e)},has(t,n){return n in t||n in Ar}})):e.proxy}function op(e,t=!0){return ae(e)?e.displayName||e.name:e.name||t&&e.__name}function ip(e){return ae(e)&&"__vccOpts"in e}const M=(e,t)=>em(e,t,Vr);function ts(e,t,n){const r=arguments.length;return r===2?xe(t)&&!Q(t)?Br(t)?Z(e,null,[t]):Z(e,t):Z(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&Br(n)&&(n=[n]),Z(e,t,n))}const ap="3.5.18";/** +* @vue/runtime-dom v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let gi;const Ja=typeof window<"u"&&window.trustedTypes;if(Ja)try{gi=Ja.createPolicy("vue",{createHTML:e=>e})}catch{}const lf=gi?e=>gi.createHTML(e):e=>e,lp="http://www.w3.org/2000/svg",cp="http://www.w3.org/1998/Math/MathML",Ut=typeof document<"u"?document:null,Za=Ut&&Ut.createElement("template"),up={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const s=t==="svg"?Ut.createElementNS(lp,e):t==="mathml"?Ut.createElementNS(cp,e):n?Ut.createElement(e,{is:n}):Ut.createElement(e);return e==="select"&&r&&r.multiple!=null&&s.setAttribute("multiple",r.multiple),s},createText:e=>Ut.createTextNode(e),createComment:e=>Ut.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ut.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,s,o){const i=n?n.previousSibling:t.lastChild;if(s&&(s===o||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===o||!(s=s.nextSibling)););else{Za.innerHTML=lf(r==="svg"?`${e}`:r==="mathml"?`${e}`:e);const a=Za.content;if(r==="svg"||r==="mathml"){const l=a.firstChild;for(;l.firstChild;)a.appendChild(l.firstChild);a.removeChild(l)}t.insertBefore(a,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Xt="transition",gr="animation",nr=Symbol("_vtc"),cf={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},uf=Ve({},Tu,cf),fp=e=>(e.displayName="Transition",e.props=uf,e),er=fp((e,{slots:t})=>ts(cm,ff(e),t)),_n=(e,t=[])=>{Q(e)?e.forEach(n=>n(...t)):e&&e(...t)},Xa=e=>e?Q(e)?e.some(t=>t.length>1):e.length>1:!1;function ff(e){const t={};for(const L in e)L in cf||(t[L]=e[L]);if(e.css===!1)return t;const{name:n="v",type:r,duration:s,enterFromClass:o=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:a=`${n}-enter-to`,appearFromClass:l=o,appearActiveClass:u=i,appearToClass:c=a,leaveFromClass:f=`${n}-leave-from`,leaveActiveClass:d=`${n}-leave-active`,leaveToClass:h=`${n}-leave-to`}=e,m=dp(s),w=m&&m[0],_=m&&m[1],{onBeforeEnter:b,onEnter:y,onEnterCancelled:p,onLeave:k,onLeaveCancelled:S,onBeforeAppear:P=b,onAppear:D=y,onAppearCancelled:x=p}=t,A=(L,G,se,X)=>{L._enterCancelled=X,tn(L,G?c:a),tn(L,G?u:i),se&&se()},B=(L,G)=>{L._isLeaving=!1,tn(L,f),tn(L,h),tn(L,d),G&&G()},V=L=>(G,se)=>{const X=L?D:y,oe=()=>A(G,L,se);_n(X,[G,oe]),Qa(()=>{tn(G,L?l:o),Ft(G,L?c:a),Xa(X)||el(G,r,w,oe)})};return Ve(t,{onBeforeEnter(L){_n(b,[L]),Ft(L,o),Ft(L,i)},onBeforeAppear(L){_n(P,[L]),Ft(L,l),Ft(L,u)},onEnter:V(!1),onAppear:V(!0),onLeave(L,G){L._isLeaving=!0;const se=()=>B(L,G);Ft(L,f),L._enterCancelled?(Ft(L,d),yi()):(yi(),Ft(L,d)),Qa(()=>{L._isLeaving&&(tn(L,f),Ft(L,h),Xa(k)||el(L,r,_,se))}),_n(k,[L,se])},onEnterCancelled(L){A(L,!1,void 0,!0),_n(p,[L])},onAppearCancelled(L){A(L,!0,void 0,!0),_n(x,[L])},onLeaveCancelled(L){B(L),_n(S,[L])}})}function dp(e){if(e==null)return null;if(xe(e))return[Bo(e.enter),Bo(e.leave)];{const t=Bo(e);return[t,t]}}function Bo(e){return _h(e)}function Ft(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[nr]||(e[nr]=new Set)).add(t)}function tn(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[nr];n&&(n.delete(t),n.size||(e[nr]=void 0))}function Qa(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let hp=0;function el(e,t,n,r){const s=e._endId=++hp,o=()=>{s===e._endId&&r()};if(n!=null)return setTimeout(o,n);const{type:i,timeout:a,propCount:l}=df(e,t);if(!i)return r();const u=i+"end";let c=0;const f=()=>{e.removeEventListener(u,d),o()},d=h=>{h.target===e&&++c>=l&&f()};setTimeout(()=>{c(n[m]||"").split(", "),s=r(`${Xt}Delay`),o=r(`${Xt}Duration`),i=tl(s,o),a=r(`${gr}Delay`),l=r(`${gr}Duration`),u=tl(a,l);let c=null,f=0,d=0;t===Xt?i>0&&(c=Xt,f=i,d=o.length):t===gr?u>0&&(c=gr,f=u,d=l.length):(f=Math.max(i,u),c=f>0?i>u?Xt:gr:null,d=c?c===Xt?o.length:l.length:0);const h=c===Xt&&/\b(transform|all)(,|$)/.test(r(`${Xt}Property`).toString());return{type:c,timeout:f,propCount:d,hasTransform:h}}function tl(e,t){for(;e.lengthnl(n)+nl(e[r])))}function nl(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function yi(){return document.body.offsetHeight}function mp(e,t,n){const r=e[nr];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Us=Symbol("_vod"),hf=Symbol("_vsh"),pp={beforeMount(e,{value:t},{transition:n}){e[Us]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):yr(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),yr(e,!0),r.enter(e)):r.leave(e,()=>{yr(e,!1)}):yr(e,t))},beforeUnmount(e,{value:t}){yr(e,t)}};function yr(e,t){e.style.display=t?e[Us]:"none",e[hf]=!t}const gp=Symbol(""),yp=/(^|;)\s*display\s*:/;function vp(e,t,n){const r=e.style,s=Fe(n);let o=!1;if(n&&!s){if(t)if(Fe(t))for(const i of t.split(";")){const a=i.slice(0,i.indexOf(":")).trim();n[a]==null&&Cs(r,a,"")}else for(const i in t)n[i]==null&&Cs(r,i,"");for(const i in n)i==="display"&&(o=!0),Cs(r,i,n[i])}else if(s){if(t!==n){const i=r[gp];i&&(n+=";"+i),r.cssText=n,o=yp.test(n)}}else t&&e.removeAttribute("style");Us in e&&(e[Us]=o?r.display:"",e[hf]&&(r.display="none"))}const rl=/\s*!important$/;function Cs(e,t,n){if(Q(n))n.forEach(r=>Cs(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=bp(e,t);rl.test(n)?e.setProperty(hn(r),n.replace(rl,""),"important"):e[r]=n}}const sl=["Webkit","Moz","ms"],Vo={};function bp(e,t){const n=Vo[t];if(n)return n;let r=vt(t);if(r!=="filter"&&r in e)return Vo[t]=r;r=Jr(r);for(let s=0;sjo||(Sp.then(()=>jo=0),jo=Date.now());function Cp(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;xt(kp(r,n.value),t,5,[r])};return n.value=e,n.attached=xp(),n}function kp(e,t){if(Q(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>s=>!s._stopped&&r&&r(s))}else return t}const ul=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Tp=(e,t,n,r,s,o)=>{const i=s==="svg";t==="class"?mp(e,r,i):t==="style"?vp(e,n,r):so(t)?qi(t)||_p(e,t,n,r,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Ap(e,t,r,i))?(al(e,t,r),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&il(e,t,r,i,o,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!Fe(r))?al(e,vt(t),r,o,t):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),il(e,t,r,i))};function Ap(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&ul(t)&&ae(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return ul(t)&&Fe(n)?!1:t in e}const mf=new WeakMap,pf=new WeakMap,qs=Symbol("_moveCb"),fl=Symbol("_enterCb"),Rp=e=>(delete e.props.mode,e),Pp=Rp({name:"TransitionGroup",props:Ve({},uf,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=pn(),r=ku();let s,o;return sa(()=>{if(!s.length)return;const i=e.moveClass||`${e.name||"v"}-move`;if(!Mp(s[0].el,n.vnode.el,i)){s=[];return}s.forEach($p),s.forEach(Fp);const a=s.filter(Lp);yi(),a.forEach(l=>{const u=l.el,c=u.style;Ft(u,i),c.transform=c.webkitTransform=c.transitionDuration="";const f=u[qs]=d=>{d&&d.target!==u||(!d||/transform$/.test(d.propertyName))&&(u.removeEventListener("transitionend",f),u[qs]=null,tn(u,i))};u.addEventListener("transitionend",f)}),s=[]}),()=>{const i=he(e),a=ff(i);let l=i.tag||Ie;if(s=[],o)for(let u=0;u{a.split(/\s+/).forEach(l=>l&&r.classList.remove(l))}),n.split(/\s+/).forEach(a=>a&&r.classList.add(a)),r.style.display="none";const o=t.nodeType===1?t:t.parentNode;o.appendChild(r);const{hasTransform:i}=df(r);return o.removeChild(r),i}const dn=e=>{const t=e.props["onUpdate:modelValue"]||!1;return Q(t)?n=>_s(t,n):t};function Dp(e){e.target.composing=!0}function dl(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const yt=Symbol("_assign"),a_={created(e,{modifiers:{lazy:t,trim:n,number:r}},s){e[yt]=dn(s);const o=r||s.props&&s.props.type==="number";Wt(e,t?"change":"input",i=>{if(i.target.composing)return;let a=e.value;n&&(a=a.trim()),o&&(a=Ls(a)),e[yt](a)}),n&&Wt(e,"change",()=>{e.value=e.value.trim()}),t||(Wt(e,"compositionstart",Dp),Wt(e,"compositionend",dl),Wt(e,"change",dl))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:r,trim:s,number:o}},i){if(e[yt]=dn(i),e.composing)return;const a=(o||e.type==="number")&&!/^0\d/.test(e.value)?Ls(e.value):e.value,l=t??"";a!==l&&(document.activeElement===e&&e.type!=="range"&&(r&&t===n||s&&e.value.trim()===l)||(e.value=l))}},l_={deep:!0,created(e,t,n){e[yt]=dn(n),Wt(e,"change",()=>{const r=e._modelValue,s=rr(e),o=e.checked,i=e[yt];if(Q(r)){const a=Gi(r,s),l=a!==-1;if(o&&!l)i(r.concat(s));else if(!o&&l){const u=[...r];u.splice(a,1),i(u)}}else if(lr(r)){const a=new Set(r);o?a.add(s):a.delete(s),i(a)}else i(gf(e,o))})},mounted:hl,beforeUpdate(e,t,n){e[yt]=dn(n),hl(e,t,n)}};function hl(e,{value:t,oldValue:n},r){e._modelValue=t;let s;if(Q(t))s=Gi(t,r.props.value)>-1;else if(lr(t))s=t.has(r.props.value);else{if(t===n)return;s=Dn(t,gf(e,!0))}e.checked!==s&&(e.checked=s)}const c_={created(e,{value:t},n){e.checked=Dn(t,n.props.value),e[yt]=dn(n),Wt(e,"change",()=>{e[yt](rr(e))})},beforeUpdate(e,{value:t,oldValue:n},r){e[yt]=dn(r),t!==n&&(e.checked=Dn(t,r.props.value))}},u_={deep:!0,created(e,{value:t,modifiers:{number:n}},r){const s=lr(t);Wt(e,"change",()=>{const o=Array.prototype.filter.call(e.options,i=>i.selected).map(i=>n?Ls(rr(i)):rr(i));e[yt](e.multiple?s?new Set(o):o:o[0]),e._assigning=!0,bt(()=>{e._assigning=!1})}),e[yt]=dn(r)},mounted(e,{value:t}){ml(e,t)},beforeUpdate(e,t,n){e[yt]=dn(n)},updated(e,{value:t}){e._assigning||ml(e,t)}};function ml(e,t){const n=e.multiple,r=Q(t);if(!(n&&!r&&!lr(t))){for(let s=0,o=e.options.length;sString(u)===String(a)):i.selected=Gi(t,a)>-1}else i.selected=t.has(a);else if(Dn(rr(i),t)){e.selectedIndex!==s&&(e.selectedIndex=s);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function rr(e){return"_value"in e?e._value:e.value}function gf(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const Ip=["ctrl","shift","alt","meta"],Np={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Ip.some(n=>e[`${n}Key`]&&!t.includes(n))},f_=(e,t)=>{const n=e._withMods||(e._withMods={}),r=t.join(".");return n[r]||(n[r]=(s,...o)=>{for(let i=0;i{const n=e._withKeys||(e._withKeys={}),r=t.join(".");return n[r]||(n[r]=s=>{if(!("key"in s))return;const o=hn(s.key);if(t.some(i=>i===o||Bp[i]===o))return e(s)})},Vp=Ve({patchProp:Tp},up);let pl;function yf(){return pl||(pl=Dm(Vp))}const h_=(...e)=>{yf().render(...e)},jp=(...e)=>{const t=yf().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=Up(r);if(!s)return;const o=t._component;!ae(o)&&!o.render&&!o.template&&(o.template=s.innerHTML),s.nodeType===1&&(s.textContent="");const i=n(s,!1,Hp(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),i},t};function Hp(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Up(e){return Fe(e)?document.querySelector(e):e}/*! + * pinia v2.3.1 + * (c) 2025 Eduardo San Martin Morote + * @license MIT + */let vf;const vo=e=>vf=e,bf=Symbol();function vi(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var Pr;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(Pr||(Pr={}));function qp(){const e=In(!0),t=e.run(()=>de({}));let n=[],r=[];const s=Qi({install(o){vo(s),s._a=o,o.provide(bf,s),o.config.globalProperties.$pinia=s,r.forEach(i=>n.push(i)),r=[]},use(o){return this._a?n.push(o):r.push(o),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return s}const wf=()=>{};function gl(e,t,n,r=wf){e.push(t);const s=()=>{const o=e.indexOf(t);o>-1&&(e.splice(o,1),r())};return!n&&Ki()&&Qe(s),s}function Un(e,...t){e.slice().forEach(n=>{n(...t)})}const zp=e=>e(),yl=Symbol(),Ho=Symbol();function bi(e,t){e instanceof Map&&t instanceof Map?t.forEach((n,r)=>e.set(r,n)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const n in t){if(!t.hasOwnProperty(n))continue;const r=t[n],s=e[n];vi(s)&&vi(r)&&e.hasOwnProperty(n)&&!Ae(r)&&!Gt(r)?e[n]=bi(s,r):e[n]=r}return e}const Wp=Symbol();function Gp(e){return!vi(e)||!e.hasOwnProperty(Wp)}const{assign:nn}=Object;function Kp(e){return!!(Ae(e)&&e.effect)}function Yp(e,t,n,r){const{state:s,actions:o,getters:i}=t,a=n.state.value[e];let l;function u(){a||(n.state.value[e]=s?s():{});const c=ea(n.state.value[e]);return nn(c,o,Object.keys(i||{}).reduce((f,d)=>(f[d]=Qi(M(()=>{vo(n);const h=n._s.get(e);return i[d].call(h,h)})),f),{}))}return l=_f(e,u,t,n,r,!0),l}function _f(e,t,n={},r,s,o){let i;const a=nn({actions:{}},n),l={deep:!0};let u,c,f=[],d=[],h;const m=r.state.value[e];!o&&!m&&(r.state.value[e]={}),de({});let w;function _(x){let A;u=c=!1,typeof x=="function"?(x(r.state.value[e]),A={type:Pr.patchFunction,storeId:e,events:h}):(bi(r.state.value[e],x),A={type:Pr.patchObject,payload:x,storeId:e,events:h});const B=w=Symbol();bt().then(()=>{w===B&&(u=!0)}),c=!0,Un(f,A,r.state.value[e])}const b=o?function(){const{state:A}=n,B=A?A():{};this.$patch(V=>{nn(V,B)})}:wf;function y(){i.stop(),f=[],d=[],r._s.delete(e)}const p=(x,A="")=>{if(yl in x)return x[Ho]=A,x;const B=function(){vo(r);const V=Array.from(arguments),L=[],G=[];function se(ee){L.push(ee)}function X(ee){G.push(ee)}Un(d,{args:V,name:B[Ho],store:S,after:se,onError:X});let oe;try{oe=x.apply(this&&this.$id===e?this:S,V)}catch(ee){throw Un(G,ee),ee}return oe instanceof Promise?oe.then(ee=>(Un(L,ee),ee)).catch(ee=>(Un(G,ee),Promise.reject(ee))):(Un(L,oe),oe)};return B[yl]=!0,B[Ho]=A,B},k={_p:r,$id:e,$onAction:gl.bind(null,d),$patch:_,$reset:b,$subscribe(x,A={}){const B=gl(f,x,A.detached,()=>V()),V=i.run(()=>ye(()=>r.state.value[e],L=>{(A.flush==="sync"?c:u)&&x({storeId:e,type:Pr.direct,events:h},L)},nn({},l,A)));return B},$dispose:y},S=Be(k);r._s.set(e,S);const D=(r._a&&r._a.runWithContext||zp)(()=>r._e.run(()=>(i=In()).run(()=>t({action:p}))));for(const x in D){const A=D[x];if(Ae(A)&&!Kp(A)||Gt(A))o||(m&&Gp(A)&&(Ae(A)?A.value=m[x]:bi(A,m[x])),r.state.value[e][x]=A);else if(typeof A=="function"){const B=p(A,x);D[x]=B,a.actions[x]=A}}return nn(S,D),nn(he(S),D),Object.defineProperty(S,"$state",{get:()=>r.state.value[e],set:x=>{_(A=>{nn(A,x)})}}),r._p.forEach(x=>{nn(S,i.run(()=>x({store:S,app:r._a,pinia:r,options:a})))}),m&&o&&n.hydrate&&n.hydrate(S.$state,m),u=!0,c=!0,S}/*! #__NO_SIDE_EFFECTS__ */function Jp(e,t,n){let r,s;const o=typeof t=="function";typeof e=="string"?(r=e,s=o?n:t):(s=e,r=e.id);function i(a,l){const u=Rm();return a=a||(u?Pe(bf,null):null),a&&vo(a),a=vf,a._s.has(r)||(o?_f(r,t,s,a):Yp(r,s,a)),a._s.get(r)}return i.$id=r,i}function m_(e){{const t=he(e),n={};for(const r in t){const s=t[r];s.effect?n[r]=M({get:()=>e[r],set(o){e[r]=o}}):(Ae(s)||Gt(s))&&(n[r]=ie(e,r))}return n}}function ns(e,t){let n;function r(){n=In(),n.run(()=>t.length?t(()=>{n==null||n.stop(),r()}):t())}ye(e,s=>{s&&!n?r():s||(n==null||n.stop(),n=void 0)},{immediate:!0}),Qe(()=>{n==null||n.stop()})}const $e=typeof window<"u",Zp=$e&&"IntersectionObserver"in window,Xp=$e&&("ontouchstart"in window||window.navigator.maxTouchPoints>0),Qp=$e&&"matchMedia"in window&&typeof window.matchMedia=="function";function vl(e,t,n){eg(e,t),t.set(e,n)}function eg(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function bl(e,t,n){return e.set(Ef(e,t),n),n}function jt(e,t){return e.get(Ef(e,t))}function Ef(e,t,n){if(typeof e=="function"?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}function tg(e,t,n){const r=t.length-1;if(r<0)return e===void 0?n:e;for(let s=0;str(e[r],t[r]))}function wl(e,t,n){return e==null||!t||typeof t!="string"?n:e[t]!==void 0?e[t]:(t=t.replace(/\[(\w+)\]/g,".$1"),t=t.replace(/^\./,""),tg(e,t.split("."),n))}function Sf(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return Array.from({length:e},(n,r)=>t+r)}function pe(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"px";if(e==null||e==="")return;const n=Number(e);return isNaN(n)?String(e):isFinite(n)?`${n}${t}`:void 0}function wi(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function _l(e){let t;return e!==null&&typeof e=="object"&&((t=Object.getPrototypeOf(e))===Object.prototype||t===null)}function xf(e){if(e&&"$el"in e){const t=e.$el;return(t==null?void 0:t.nodeType)===Node.TEXT_NODE?t.nextElementSibling:t}return e}function Uo(e,t){return t.every(n=>e.hasOwnProperty(n))}function ng(e,t){const n={};for(const r of t)Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function El(e,t,n){const r=Object.create(null),s=Object.create(null);for(const o in e)t.some(i=>i instanceof RegExp?i.test(o):i===o)?r[o]=e[o]:s[o]=e[o];return[r,s]}function Cf(e,t){const n={...e};return t.forEach(r=>delete n[r]),n}const kf=/^on[^a-z]/,Tf=e=>kf.test(e),rg=["onAfterscriptexecute","onAnimationcancel","onAnimationend","onAnimationiteration","onAnimationstart","onAuxclick","onBeforeinput","onBeforescriptexecute","onChange","onClick","onCompositionend","onCompositionstart","onCompositionupdate","onContextmenu","onCopy","onCut","onDblclick","onFocusin","onFocusout","onFullscreenchange","onFullscreenerror","onGesturechange","onGestureend","onGesturestart","onGotpointercapture","onInput","onKeydown","onKeypress","onKeyup","onLostpointercapture","onMousedown","onMousemove","onMouseout","onMouseover","onMouseup","onMousewheel","onPaste","onPointercancel","onPointerdown","onPointerenter","onPointerleave","onPointermove","onPointerout","onPointerover","onPointerup","onReset","onSelect","onSubmit","onTouchcancel","onTouchend","onTouchmove","onTouchstart","onTransitioncancel","onTransitionend","onTransitionrun","onTransitionstart","onWheel"];function p_(e){const[t,n]=El(e,[kf]),r=Cf(t,rg),[s,o]=El(n,["class","style","id",/^data-/]);return Object.assign(s,t),Object.assign(o,r),[s,o]}function sg(e){return e==null?[]:Array.isArray(e)?e:[e]}function sr(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1;return Math.max(t,Math.min(n,e))}function Sl(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"0";return e+n.repeat(Math.max(0,t-e.length))}function xl(e,t){return(arguments.length>2&&arguments[2]!==void 0?arguments[2]:"0").repeat(Math.max(0,t-e.length))+e}function og(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;const n=[];let r=0;for(;r0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;const r={};for(const s in e)r[s]=e[s];for(const s in t){const o=e[s],i=t[s];if(_l(o)&&_l(i)){r[s]=ht(o,i,n);continue}if(n&&Array.isArray(o)&&Array.isArray(i)){r[s]=n(o,i);continue}r[s]=i}return r}function Af(e){return e.map(t=>t.type===Ie?Af(t.children):t).flat()}function Ln(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"";if(Ln.cache.has(e))return Ln.cache.get(e);const t=e.replace(/[^a-z]/gi,"-").replace(/\B([A-Z])/g,"-$1").toLowerCase();return Ln.cache.set(e,t),t}Ln.cache=new Map;function Yn(e,t){if(!t||typeof t!="object")return[];if(Array.isArray(t))return t.map(n=>Yn(e,n)).flat(1);if(t.suspense)return Yn(e,t.ssContent);if(Array.isArray(t.children))return t.children.map(n=>Yn(e,n)).flat(1);if(t.component){if(Object.getOwnPropertySymbols(t.component.provides).includes(e))return[t.component];if(t.component.subTree)return Yn(e,t.component.subTree).flat(1)}return[]}var qn=new WeakMap,En=new WeakMap;class ig{constructor(t){vl(this,qn,[]),vl(this,En,0),this.size=t}get isFull(){return jt(qn,this).length===this.size}push(t){jt(qn,this)[jt(En,this)]=t,bl(En,this,(jt(En,this)+1)%this.size)}values(){return jt(qn,this).slice(jt(En,this)).concat(jt(qn,this).slice(0,jt(En,this)))}clear(){jt(qn,this).length=0,bl(En,this,0)}}function ca(e){const t=Be({});Zt(()=>{const r=e();for(const s in r)t[s]=r[s]},{flush:"sync"});const n={};for(const r in t)n[r]=ie(()=>t[r]);return n}function zs(e,t){return e.includes(t)}function Rf(e){return e[2].toLowerCase()+e.slice(3)}const g_=()=>[Function,Array];function Cl(e,t){return t="on"+Jr(t),!!(e[t]||e[`${t}Once`]||e[`${t}Capture`]||e[`${t}OnceCapture`]||e[`${t}CaptureOnce`])}function y_(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r{};const n=window.setTimeout(t,e);return()=>window.clearTimeout(n)}function _i(){const e=Oe(),t=n=>{e.value=n};return Object.defineProperty(t,"value",{enumerable:!0,get:()=>e.value,set:n=>e.value=n}),Object.defineProperty(t,"el",{enumerable:!0,get:()=>xf(e.value)}),t}function cg(e){const t=["checked","disabled"];return Object.fromEntries(Object.entries(e).filter(n=>{let[r,s]=n;return t.includes(r)?!!s:s!==void 0}))}const Pf=["top","bottom"],ug=["start","end","left","right"];function Ei(e,t){let[n,r]=e.split(" ");return r||(r=zs(Pf,n)?"start":zs(ug,n)?"top":"center"),{side:kl(n,t),align:kl(r,t)}}function kl(e,t){return e==="start"?t?"right":"left":e==="end"?t?"left":"right":e}function qo(e){return{side:{center:"center",top:"bottom",bottom:"top",left:"right",right:"left"}[e.side],align:e.align}}function zo(e){return{side:e.side,align:{center:"center",top:"bottom",bottom:"top",left:"right",right:"left"}[e.align]}}function Tl(e){return{side:e.align,align:e.side}}function Al(e){return zs(Pf,e.side)?"y":"x"}class Nt{constructor(t){let{x:n,y:r,width:s,height:o}=t;this.x=n,this.y=r,this.width=s,this.height=o}get top(){return this.y}get bottom(){return this.y+this.height}get left(){return this.x}get right(){return this.x+this.width}}function Rl(e,t){return{x:{before:Math.max(0,t.left-e.left),after:Math.max(0,e.right-t.right)},y:{before:Math.max(0,t.top-e.top),after:Math.max(0,e.bottom-t.bottom)}}}function fg(e){return Array.isArray(e)?new Nt({x:e[0],y:e[1],width:0,height:0}):e.getBoundingClientRect()}function dg(e){if(e===document.documentElement)return visualViewport?new Nt({x:visualViewport.scale>1?0:visualViewport.offsetLeft,y:visualViewport.scale>1?0:visualViewport.offsetTop,width:visualViewport.width*visualViewport.scale,height:visualViewport.height*visualViewport.scale}):new Nt({x:0,y:0,width:document.documentElement.clientWidth,height:document.documentElement.clientHeight});{const t=e.getBoundingClientRect();return new Nt({x:t.x,y:t.y,width:e.clientWidth,height:e.clientHeight})}}function hg(e){const t=e.getBoundingClientRect(),n=getComputedStyle(e),r=n.transform;if(r){let s,o,i,a,l;if(r.startsWith("matrix3d("))s=r.slice(9,-1).split(/, /),o=Number(s[0]),i=Number(s[5]),a=Number(s[12]),l=Number(s[13]);else if(r.startsWith("matrix("))s=r.slice(7,-1).split(/, /),o=Number(s[0]),i=Number(s[3]),a=Number(s[4]),l=Number(s[5]);else return new Nt(t);const u=n.transformOrigin,c=t.x-a-(1-o)*parseFloat(u),f=t.y-l-(1-i)*parseFloat(u.slice(u.indexOf(" ")+1)),d=o?t.width/o:e.offsetWidth+1,h=i?t.height/i:e.offsetHeight+1;return new Nt({x:c,y:f,width:d,height:h})}else return new Nt(t)}function mg(e,t,n){if(typeof e.animate>"u")return{finished:Promise.resolve()};let r;try{r=e.animate(t,n)}catch{return{finished:Promise.resolve()}}return typeof r.finished>"u"&&(r.finished=new Promise(s=>{r.onfinish=()=>{s(r)}})),r}const ks=new WeakMap;function pg(e,t){Object.keys(t).forEach(n=>{if(Tf(n)){const r=Rf(n),s=ks.get(e);if(t[n]==null)s==null||s.forEach(o=>{const[i,a]=o;i===r&&(e.removeEventListener(r,a),s.delete(o))});else if(!s||![...s].some(o=>o[0]===r&&o[1]===t[n])){e.addEventListener(r,t[n]);const o=s||new Set;o.add([r,t[n]]),ks.has(e)||ks.set(e,o)}}else t[n]==null?e.removeAttribute(n):e.setAttribute(n,t[n])})}function gg(e,t){Object.keys(t).forEach(n=>{if(Tf(n)){const r=Rf(n),s=ks.get(e);s==null||s.forEach(o=>{const[i,a]=o;i===r&&(e.removeEventListener(r,a),s.delete(o))})}else e.removeAttribute(n)})}const zn=2.4,Pl=.2126729,Ol=.7151522,$l=.072175,yg=.55,vg=.58,bg=.57,wg=.62,gs=.03,Fl=1.45,_g=5e-4,Eg=1.25,Sg=1.25,Ll=.078,Ml=12.82051282051282,ys=.06,Dl=.001;function Il(e,t){const n=(e.r/255)**zn,r=(e.g/255)**zn,s=(e.b/255)**zn,o=(t.r/255)**zn,i=(t.g/255)**zn,a=(t.b/255)**zn;let l=n*Pl+r*Ol+s*$l,u=o*Pl+i*Ol+a*$l;if(l<=gs&&(l+=(gs-l)**Fl),u<=gs&&(u+=(gs-u)**Fl),Math.abs(u-l)<_g)return 0;let c;if(u>l){const f=(u**yg-l**vg)*Eg;c=f-Dl?0:f>-Ll?f-f*Ml*ys:f+ys}return c*100}function xg(e,t){t=Array.isArray(t)?t.slice(0,-1).map(n=>`'${n}'`).join(", ")+` or '${t.at(-1)}'`:`'${t}'`}const Ws=.20689655172413793,Cg=e=>e>Ws**3?Math.cbrt(e):e/(3*Ws**2)+4/29,kg=e=>e>Ws?e**3:3*Ws**2*(e-4/29);function Of(e){const t=Cg,n=t(e[1]);return[116*n-16,500*(t(e[0]/.95047)-n),200*(n-t(e[2]/1.08883))]}function $f(e){const t=kg,n=(e[0]+16)/116;return[t(n+e[1]/500)*.95047,t(n),t(n-e[2]/200)*1.08883]}const Tg=[[3.2406,-1.5372,-.4986],[-.9689,1.8758,.0415],[.0557,-.204,1.057]],Ag=e=>e<=.0031308?e*12.92:1.055*e**(1/2.4)-.055,Rg=[[.4124,.3576,.1805],[.2126,.7152,.0722],[.0193,.1192,.9505]],Pg=e=>e<=.04045?e/12.92:((e+.055)/1.055)**2.4;function Ff(e){const t=Array(3),n=Ag,r=Tg;for(let s=0;s<3;++s)t[s]=Math.round(sr(n(r[s][0]*e[0]+r[s][1]*e[1]+r[s][2]*e[2]))*255);return{r:t[0],g:t[1],b:t[2]}}function ua(e){let{r:t,g:n,b:r}=e;const s=[0,0,0],o=Pg,i=Rg;t=o(t/255),n=o(n/255),r=o(r/255);for(let a=0;a<3;++a)s[a]=i[a][0]*t+i[a][1]*n+i[a][2]*r;return s}function Si(e){return!!e&&/^(#|var\(--|(rgb|hsl)a?\()/.test(e)}function Og(e){return Si(e)&&!/^((rgb|hsl)a?\()?var\(--/.test(e)}const Nl=/^(?(?:rgb|hsl)a?)\((?.+)\)/,$g={rgb:(e,t,n,r)=>({r:e,g:t,b:n,a:r}),rgba:(e,t,n,r)=>({r:e,g:t,b:n,a:r}),hsl:(e,t,n,r)=>Bl({h:e,s:t,l:n,a:r}),hsla:(e,t,n,r)=>Bl({h:e,s:t,l:n,a:r}),hsv:(e,t,n,r)=>jr({h:e,s:t,v:n,a:r}),hsva:(e,t,n,r)=>jr({h:e,s:t,v:n,a:r})};function Dt(e){if(typeof e=="number")return{r:(e&16711680)>>16,g:(e&65280)>>8,b:e&255};if(typeof e=="string"&&Nl.test(e)){const{groups:t}=e.match(Nl),{fn:n,values:r}=t,s=r.split(/,\s*|\s*\/\s*|\s+/).map((o,i)=>o.endsWith("%")||i>0&&i<3&&["hsl","hsla","hsv","hsva"].includes(n)?parseFloat(o)/100:parseFloat(o));return $g[n](...s)}else if(typeof e=="string"){let t=e.startsWith("#")?e.slice(1):e;return[3,4].includes(t.length)?t=t.split("").map(n=>n+n).join(""):[6,8].includes(t.length),Lg(t)}else if(typeof e=="object"){if(Uo(e,["r","g","b"]))return e;if(Uo(e,["h","s","l"]))return jr(Lf(e));if(Uo(e,["h","s","v"]))return jr(e)}throw new TypeError(`Invalid color: ${e==null?e:String(e)||e.constructor.name} +Expected #hex, #hexa, rgb(), rgba(), hsl(), hsla(), object or number`)}function jr(e){const{h:t,s:n,v:r,a:s}=e,o=a=>{const l=(a+t/60)%6;return r-r*n*Math.max(Math.min(l,4-l,1),0)},i=[o(5),o(3),o(1)].map(a=>Math.round(a*255));return{r:i[0],g:i[1],b:i[2],a:s}}function Bl(e){return jr(Lf(e))}function Lf(e){const{h:t,s:n,l:r,a:s}=e,o=r+n*Math.min(r,1-r),i=o===0?0:2-2*r/o;return{h:t,s:i,v:o,a:s}}function vs(e){const t=Math.round(e).toString(16);return("00".substr(0,2-t.length)+t).toUpperCase()}function Fg(e){let{r:t,g:n,b:r,a:s}=e;return`#${[vs(t),vs(n),vs(r),s!==void 0?vs(Math.round(s*255)):""].join("")}`}function Lg(e){e=Mg(e);let[t,n,r,s]=og(e,2).map(o=>parseInt(o,16));return s=s===void 0?s:s/255,{r:t,g:n,b:r,a:s}}function Mg(e){return e.startsWith("#")&&(e=e.slice(1)),e=e.replace(/([^0-9a-f])/gi,"F"),(e.length===3||e.length===4)&&(e=e.split("").map(t=>t+t).join("")),e.length!==6&&(e=Sl(Sl(e,6),8,"F")),e}function Dg(e,t){const n=Of(ua(e));return n[0]=n[0]+t*10,Ff($f(n))}function Ig(e,t){const n=Of(ua(e));return n[0]=n[0]-t*10,Ff($f(n))}function Ng(e){const t=Dt(e);return ua(t)[1]}function Mf(e){const t=Math.abs(Il(Dt(0),Dt(e)));return Math.abs(Il(Dt(16777215),Dt(e)))>Math.min(t,50)?"#fff":"#000"}function me(e,t){return n=>Object.keys(e).reduce((r,s)=>{const i=typeof e[s]=="object"&&e[s]!=null&&!Array.isArray(e[s])?e[s]:{type:e[s]};return n&&s in n?r[s]={...i,default:n[s]}:r[s]=i,t&&!r[s].source&&(r[s].source=t),r},{})}const gn=me({class:[String,Array,Object],style:{type:[String,Array,Object],default:null}},"component");function et(e,t){const n=pn();if(!n)throw new Error(`[Vuetify] ${e} must be called from inside a setup function`);return n}function yn(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"composables";const t=et(e).type;return Ln((t==null?void 0:t.aliasName)||(t==null?void 0:t.name))}function Bg(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:et("injectSelf");const{provides:n}=t;if(n&&e in n)return n[e]}const or=Symbol.for("vuetify:defaults");function Vg(e){return de(e)}function fa(){const e=Pe(or);if(!e)throw new Error("[Vuetify] Could not find defaults instance");return e}function Df(e,t){const n=fa(),r=de(e),s=M(()=>{if(Me(t==null?void 0:t.disabled))return n.value;const i=Me(t==null?void 0:t.scoped),a=Me(t==null?void 0:t.reset),l=Me(t==null?void 0:t.root);if(r.value==null&&!(i||a||l))return n.value;let u=ht(r.value,{prev:n.value});if(i)return u;if(a||l){const c=Number(a||1/0);for(let f=0;f<=c&&!(!u||!("prev"in u));f++)u=u.prev;return u&&typeof l=="string"&&l in u&&(u=ht(ht(u,{prev:u}),u[l])),u}return u.prev?ht(u.prev,u):u});return Et(or,s),s}function jg(e,t){return e.props&&(typeof e.props[t]<"u"||typeof e.props[Ln(t)]<"u")}function Hg(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:fa();const r=et("useDefaults");if(t=t??r.type.name??r.type.__name,!t)throw new Error("[Vuetify] Could not determine component name");const s=M(()=>{var l;return(l=n.value)==null?void 0:l[e._as??t]}),o=new Proxy(e,{get(l,u){var h,m,w,_;const c=Reflect.get(l,u);if(u==="class"||u==="style")return[(h=s.value)==null?void 0:h[u],c].filter(b=>b!=null);if(jg(r.vnode,u))return c;const f=(m=s.value)==null?void 0:m[u];if(f!==void 0)return f;const d=(_=(w=n.value)==null?void 0:w.global)==null?void 0:_[u];return d!==void 0?d:c}}),i=Oe();Zt(()=>{if(s.value){const l=Object.entries(s.value).filter(u=>{let[c]=u;return c.startsWith(c[0].toUpperCase())});i.value=l.length?Object.fromEntries(l):void 0}else i.value=void 0});function a(){const l=Bg(or,r);Et(or,M(()=>i.value?ht((l==null?void 0:l.value)??{},i.value):l==null?void 0:l.value))}return{props:o,provideSubDefaults:a}}function rs(e){if(e._setup=e._setup??e.setup,!e.name)return e;if(e._setup){e.props=me(e.props??{},e.name)();const t=Object.keys(e.props).filter(n=>n!=="class"&&n!=="style");e.filterProps=function(r){return ng(r,t)},e.props._as=String,e.setup=function(r,s){const o=fa();if(!o.value)return e._setup(r,s);const{props:i,provideSubDefaults:a}=Hg(r,r._as??e.name,o),l=e._setup(i,s);return a(),l}}return e}function wt(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;return t=>(e?rs:ra)(t)}function If(e){if(typeof e.getRootNode!="function"){for(;e.parentNode;)e=e.parentNode;return e!==document?null:document}const t=e.getRootNode();return t!==document&&t.getRootNode({composed:!0})!==document?null:t}const Ug="cubic-bezier(0.4, 0, 0.2, 1)",qg={linear:e=>e,easeInQuad:e=>e**2,easeOutQuad:e=>e*(2-e),easeInOutQuad:e=>e<.5?2*e**2:-1+(4-2*e)*e,easeInCubic:e=>e**3,easeOutCubic:e=>--e**3+1,easeInOutCubic:e=>e<.5?4*e**3:(e-1)*(2*e-2)*(2*e-2)+1,easeInQuart:e=>e**4,easeOutQuart:e=>1- --e**4,easeInOutQuart:e=>e<.5?8*e**4:1-8*--e**4,easeInQuint:e=>e**5,easeOutQuint:e=>1+--e**5,easeInOutQuint:e=>e<.5?16*e**5:1+16*--e**5};function zg(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;for(;e;){if(t?Wg(e):da(e))return e;e=e.parentElement}return document.scrollingElement}function Gs(e,t){const n=[];if(t&&e&&!t.contains(e))return n;for(;e&&(da(e)&&n.push(e),e!==t);)e=e.parentElement;return n}function da(e){if(!e||e.nodeType!==Node.ELEMENT_NODE)return!1;const t=window.getComputedStyle(e);return t.overflowY==="scroll"||t.overflowY==="auto"&&e.scrollHeight>e.clientHeight}function Wg(e){if(!e||e.nodeType!==Node.ELEMENT_NODE)return!1;const t=window.getComputedStyle(e);return["scroll","auto"].includes(t.overflowY)}function Gg(e){for(;e;){if(window.getComputedStyle(e).position==="fixed")return!0;e=e.offsetParent}return!1}function Bt(e){const t=et("useRender");t.render=e}function ss(e,t,n){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:f=>f,s=arguments.length>4&&arguments[4]!==void 0?arguments[4]:f=>f;const o=et("useProxiedModel"),i=de(e[t]!==void 0?e[t]:n),a=Ln(t),u=M(a!==t?()=>{var f,d,h,m;return e[t],!!(((f=o.vnode.props)!=null&&f.hasOwnProperty(t)||(d=o.vnode.props)!=null&&d.hasOwnProperty(a))&&((h=o.vnode.props)!=null&&h.hasOwnProperty(`onUpdate:${t}`)||(m=o.vnode.props)!=null&&m.hasOwnProperty(`onUpdate:${a}`)))}:()=>{var f,d;return e[t],!!((f=o.vnode.props)!=null&&f.hasOwnProperty(t)&&((d=o.vnode.props)!=null&&d.hasOwnProperty(`onUpdate:${t}`)))});ns(()=>!u.value,()=>{ye(()=>e[t],f=>{i.value=f})});const c=M({get(){const f=e[t];return r(u.value?f:i.value)},set(f){const d=s(f),h=he(u.value?e[t]:i.value);h===d||r(h)===f||(i.value=d,o==null||o.emit(`update:${t}`,d))}});return Object.defineProperty(c,"externalValue",{get:()=>u.value?e[t]:i.value}),c}const Kg={badge:"Badge",open:"Open",close:"Close",dismiss:"Dismiss",confirmEdit:{ok:"OK",cancel:"Cancel"},dataIterator:{noResultsText:"No matching records found",loadingText:"Loading items..."},dataTable:{itemsPerPageText:"Rows per page:",ariaLabel:{sortDescending:"Sorted descending.",sortAscending:"Sorted ascending.",sortNone:"Not sorted.",activateNone:"Activate to remove sorting.",activateDescending:"Activate to sort descending.",activateAscending:"Activate to sort ascending."},sortBy:"Sort by"},dataFooter:{itemsPerPageText:"Items per page:",itemsPerPageAll:"All",nextPage:"Next page",prevPage:"Previous page",firstPage:"First page",lastPage:"Last page",pageText:"{0}-{1} of {2}"},dateRangeInput:{divider:"to"},datePicker:{itemsSelected:"{0} selected",range:{title:"Select dates",header:"Enter dates"},title:"Select date",header:"Enter date",input:{placeholder:"Enter date"},ariaLabel:{previousMonth:"Previous month",nextMonth:"Next month",selectYear:"Select year",selectDate:"{0}",currentDate:"Today, {0}"}},noDataText:"No data available",carousel:{prev:"Previous visual",next:"Next visual",ariaLabel:{delimiter:"Carousel slide {0} of {1}"}},calendar:{moreEvents:"{0} more",today:"Today"},input:{clear:"Clear {0}",prependAction:"{0} prepended action",appendAction:"{0} appended action",otp:"Please enter OTP character {0}"},fileInput:{counter:"{0} files",counterSize:"{0} files ({1} in total)"},fileUpload:{title:"Drag and drop files here",divider:"or",browse:"Browse Files"},timePicker:{am:"AM",pm:"PM",title:"Select Time"},pagination:{ariaLabel:{root:"Pagination Navigation",next:"Next page",previous:"Previous page",page:"Go to page {0}",currentPage:"Page {0}, Current page",first:"First page",last:"Last page"}},stepper:{next:"Next",prev:"Previous"},rating:{ariaLabel:{item:"Rating {0} of {1}"}},loading:"Loading...",infiniteScroll:{loadMore:"Load more",empty:"No more"},rules:{required:"This field is required",email:"Please enter a valid email",number:"This field can only contain numbers",integer:"This field can only contain integer values",capital:"This field can only contain uppercase letters",maxLength:"You must enter a maximum of {0} characters",minLength:"You must enter a minimum of {0} characters",strictLength:"The length of the entered field is invalid",exclude:"The {0} character is not allowed",notEmpty:"Please choose at least one value",pattern:"Invalid format"},hotkey:{then:"then",ctrl:"Ctrl",command:"Command",space:"Space",shift:"Shift",alt:"Alt",enter:"Enter",escape:"Escape",upArrow:"Up Arrow",downArrow:"Down Arrow",leftArrow:"Left Arrow",rightArrow:"Right Arrow",backspace:"Backspace",option:"Option",plus:"plus",shortcut:"Keyboard shortcut: {0}"},video:{play:"Play",pause:"Pause",seek:"Seek",volume:"Volume",showVolume:"Show volume control",mute:"Mute",unmute:"Unmute",enterFullscreen:"Full screen",exitFullscreen:"Exit full screen"}},Vl="$vuetify.",jl=(e,t)=>e.replace(/\{(\d+)\}/g,(n,r)=>String(t[Number(r)])),Nf=(e,t,n)=>function(r){for(var s=arguments.length,o=new Array(s>1?s-1:0),i=1;inew Intl.NumberFormat([e.value,t.value],r).format(n)}function Bf(e,t){return ha(e,t)(.1).includes(",")?",":"."}function Wo(e,t,n){const r=ss(e,t,e[t]??n.value);return r.value=e[t]??n.value,ye(n,s=>{e[t]==null&&(r.value=n.value)}),r}function Vf(e){return t=>{const n=Wo(t,"locale",e.current),r=Wo(t,"fallback",e.fallback),s=Wo(t,"messages",e.messages);return{name:"vuetify",current:n,fallback:r,messages:s,decimalSeparator:ie(()=>Bf(n,r)),t:Nf(n,r,s),n:ha(n,r),provide:Vf({current:n,fallback:r,messages:s})}}}function Yg(e){const t=Oe((e==null?void 0:e.locale)??"en"),n=Oe((e==null?void 0:e.fallback)??"en"),r=de({en:Kg,...e==null?void 0:e.messages});return{name:"vuetify",current:t,fallback:n,messages:r,decimalSeparator:ie(()=>(e==null?void 0:e.decimalSeparator)??Bf(t,n)),t:Nf(t,n,r),n:ha(t,n),provide:Vf({current:t,fallback:n,messages:r})}}const Ks=Symbol.for("vuetify:locale");function Jg(e){return e.name!=null}function Zg(e){const t=e!=null&&e.adapter&&Jg(e==null?void 0:e.adapter)?e==null?void 0:e.adapter:Yg(e),n=Qg(t,e);return{...t,...n}}function v_(){const e=Pe(Ks);if(!e)throw new Error("[Vuetify] Could not find injected locale instance");return e}function Xg(){return{af:!1,ar:!0,bg:!1,ca:!1,ckb:!1,cs:!1,de:!1,el:!1,en:!1,es:!1,et:!1,fa:!0,fi:!1,fr:!1,hr:!1,hu:!1,he:!0,id:!1,it:!1,ja:!1,km:!1,ko:!1,lv:!1,lt:!1,nl:!1,no:!1,pl:!1,pt:!1,ro:!1,ru:!1,sk:!1,sl:!1,srCyrl:!1,srLatn:!1,sv:!1,th:!1,tr:!1,az:!1,uk:!1,vi:!1,zhHans:!1,zhHant:!1}}function Qg(e,t){const n=de((t==null?void 0:t.rtl)??Xg()),r=M(()=>n.value[e.current.value]??!1);return{isRtl:r,rtl:n,rtlClasses:ie(()=>`v-locale--is-${r.value?"rtl":"ltr"}`)}}function bo(){const e=Pe(Ks);if(!e)throw new Error("[Vuetify] Could not find injected rtl instance");return{isRtl:e.isRtl,rtlClasses:e.rtlClasses}}function os(e){const t=e.slice(-2).toUpperCase();switch(!0){case e==="GB-alt-variant":return{firstDay:0,firstWeekSize:4};case e==="001":return{firstDay:1,firstWeekSize:1};case`AG AS BD BR BS BT BW BZ CA CO DM DO ET GT GU HK HN ID IL IN JM JP KE + KH KR LA MH MM MO MT MX MZ NI NP PA PE PH PK PR PY SA SG SV TH TT TW UM US + VE VI WS YE ZA ZW`.includes(t):return{firstDay:0,firstWeekSize:1};case`AI AL AM AR AU AZ BA BM BN BY CL CM CN CR CY EC GE HR KG KZ LB LK LV + MD ME MK MN MY NZ RO RS SI TJ TM TR UA UY UZ VN XK`.includes(t):return{firstDay:1,firstWeekSize:1};case`AD AN AT AX BE BG CH CZ DE DK EE ES FI FJ FO FR GB GF GP GR HU IE IS + IT LI LT LU MC MQ NL NO PL RE RU SE SK SM VA`.includes(t):return{firstDay:1,firstWeekSize:4};case"AE AF BH DJ DZ EG IQ IR JO KW LY OM QA SD SY".includes(t):return{firstDay:6,firstWeekSize:1};case t==="MV":return{firstDay:5,firstWeekSize:1};case t==="PT":return{firstDay:0,firstWeekSize:4};default:return null}}function e0(e,t,n){var c;const r=[];let s=[];const o=jf(e),i=Hf(e),a=n??((c=os(t))==null?void 0:c.firstDay)??0,l=(o.getDay()-a+7)%7,u=(i.getDay()-a+7)%7;for(let f=0;f0&&r.push(s),r}function xi(e,t,n){var o;let r=(n??((o=os(t))==null?void 0:o.firstDay)??0)%7;[0,1,2,3,4,5,6].includes(r)||(r=0);const s=new Date(e);for(;s.getDay()!==r;)s.setDate(s.getDate()-1);return s}function t0(e,t){var s;const n=new Date(e),r=((((s=os(t))==null?void 0:s.firstDay)??0)+6)%7;for(;n.getDay()!==r;)n.setDate(n.getDate()+1);return n}function jf(e){return new Date(e.getFullYear(),e.getMonth(),1)}function Hf(e){return new Date(e.getFullYear(),e.getMonth()+1,0)}function n0(e){const t=e.split("-").map(Number);return new Date(t[0],t[1]-1,t[2])}const r0=/^([12]\d{3}-([1-9]|0[1-9]|1[0-2])-([1-9]|0[1-9]|[12]\d|3[01]))$/;function Uf(e){if(e==null)return new Date;if(e instanceof Date)return e;if(typeof e=="string"){let t;if(r0.test(e))return n0(e);if(t=Date.parse(e),!isNaN(t))return new Date(t)}return null}const Hl=new Date(2e3,0,2);function s0(e,t,n){var s;const r=t??((s=os(e))==null?void 0:s.firstDay)??0;return Sf(7).map(o=>{const i=new Date(Hl);return i.setDate(Hl.getDate()+r+o),new Intl.DateTimeFormat(e,{weekday:n??"narrow"}).format(i)})}function o0(e,t,n,r){const s=Uf(e)??new Date,o=r==null?void 0:r[t];if(typeof o=="function")return o(s,t,n);let i={};switch(t){case"fullDate":i={year:"numeric",month:"short",day:"numeric"};break;case"fullDateWithWeekday":i={weekday:"long",year:"numeric",month:"long",day:"numeric"};break;case"normalDate":const a=s.getDate(),l=new Intl.DateTimeFormat(n,{month:"long"}).format(s);return`${a} ${l}`;case"normalDateWithWeekday":i={weekday:"short",day:"numeric",month:"short"};break;case"shortDate":i={month:"short",day:"numeric"};break;case"year":i={year:"numeric"};break;case"month":i={month:"long"};break;case"monthShort":i={month:"short"};break;case"monthAndYear":i={month:"long",year:"numeric"};break;case"monthAndDate":i={month:"long",day:"numeric"};break;case"weekday":i={weekday:"long"};break;case"weekdayShort":i={weekday:"short"};break;case"dayOfMonth":return new Intl.NumberFormat(n).format(s.getDate());case"hours12h":i={hour:"numeric",hour12:!0};break;case"hours24h":i={hour:"numeric",hour12:!1};break;case"minutes":i={minute:"numeric"};break;case"seconds":i={second:"numeric"};break;case"fullTime":i={hour:"numeric",minute:"numeric"};break;case"fullTime12h":i={hour:"numeric",minute:"numeric",hour12:!0};break;case"fullTime24h":i={hour:"numeric",minute:"numeric",hour12:!1};break;case"fullDateTime":i={year:"numeric",month:"short",day:"numeric",hour:"numeric",minute:"numeric"};break;case"fullDateTime12h":i={year:"numeric",month:"short",day:"numeric",hour:"numeric",minute:"numeric",hour12:!0};break;case"fullDateTime24h":i={year:"numeric",month:"short",day:"numeric",hour:"numeric",minute:"numeric",hour12:!1};break;case"keyboardDate":i={year:"numeric",month:"2-digit",day:"2-digit"};break;case"keyboardDateTime":return i={year:"numeric",month:"2-digit",day:"2-digit",hour:"numeric",minute:"numeric"},new Intl.DateTimeFormat(n,i).format(s).replace(/, /g," ");case"keyboardDateTime12h":return i={year:"numeric",month:"2-digit",day:"2-digit",hour:"numeric",minute:"numeric",hour12:!0},new Intl.DateTimeFormat(n,i).format(s).replace(/, /g," ");case"keyboardDateTime24h":return i={year:"numeric",month:"2-digit",day:"2-digit",hour:"numeric",minute:"numeric",hour12:!1},new Intl.DateTimeFormat(n,i).format(s).replace(/, /g," ");default:i=o??{timeZone:"UTC",timeZoneName:"short"}}return new Intl.DateTimeFormat(n,i).format(s)}function i0(e,t){const n=e.toJsDate(t),r=n.getFullYear(),s=xl(String(n.getMonth()+1),2,"0"),o=xl(String(n.getDate()),2,"0");return`${r}-${s}-${o}`}function a0(e){const[t,n,r]=e.split("-").map(Number);return new Date(t,n-1,r)}function l0(e,t){const n=new Date(e);return n.setMinutes(n.getMinutes()+t),n}function c0(e,t){const n=new Date(e);return n.setHours(n.getHours()+t),n}function Ts(e,t){const n=new Date(e);return n.setDate(n.getDate()+t),n}function u0(e,t){const n=new Date(e);return n.setDate(n.getDate()+t*7),n}function f0(e,t){const n=new Date(e);return n.setDate(1),n.setMonth(n.getMonth()+t),n}function Ci(e){return e.getFullYear()}function d0(e){return e.getMonth()}function h0(e,t,n,r){const s=os(t),o=n??(s==null?void 0:s.firstDay)??0,i=r??(s==null?void 0:s.firstWeekSize)??1;function a(h){const m=new Date(h,0,1);return 7-ki(m,xi(m,t,o),"days")}let l=Ci(e);const u=Ts(xi(e,t,o),6);l=i&&l++;const c=new Date(l,0,1),f=a(l),d=f>=i?Ts(c,f-7):Ts(c,f);return 1+ki(qf(e),Js(d),"weeks")}function m0(e){return e.getDate()}function p0(e){return new Date(e.getFullYear(),e.getMonth()+1,1)}function g0(e){return new Date(e.getFullYear(),e.getMonth()-1,1)}function y0(e){return e.getHours()}function v0(e){return e.getMinutes()}function b0(e){return new Date(e.getFullYear(),0,1)}function w0(e){return new Date(e.getFullYear(),11,31)}function _0(e,t){return Ys(e,t[0])&&x0(e,t[1])}function E0(e){const t=new Date(e);return t instanceof Date&&!isNaN(t.getTime())}function Ys(e,t){return e.getTime()>t.getTime()}function S0(e,t){return Ys(Js(e),Js(t))}function x0(e,t){return e.getTime(){n.locale=e.locale[r]??r??n.locale}),n}const b_=["sm","md","lg","xl","xxl"],Ti=Symbol.for("vuetify:display"),zl={mobileBreakpoint:"lg",thresholds:{xs:0,sm:600,md:960,lg:1280,xl:1920,xxl:2560}},I0=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:zl;return ht(zl,e)};function Wl(e){return $e&&!e?window.innerWidth:typeof e=="object"&&e.clientWidth||0}function Gl(e){return $e&&!e?window.innerHeight:typeof e=="object"&&e.clientHeight||0}function Kl(e){const t=$e&&!e?window.navigator.userAgent:"ssr";function n(m){return!!t.match(m)}const r=n(/android/i),s=n(/iphone|ipad|ipod/i),o=n(/cordova/i),i=n(/electron/i),a=n(/chrome/i),l=n(/edge/i),u=n(/firefox/i),c=n(/opera/i),f=n(/win/i),d=n(/mac/i),h=n(/linux/i);return{android:r,ios:s,cordova:o,electron:i,chrome:a,edge:l,firefox:u,opera:c,win:f,mac:d,linux:h,touch:Xp,ssr:t==="ssr"}}function N0(e,t){const{thresholds:n,mobileBreakpoint:r}=I0(e),s=Oe(Gl(t)),o=Oe(Kl(t)),i=Be({}),a=Oe(Wl(t));function l(){s.value=Gl(),a.value=Wl()}function u(){l(),o.value=Kl()}return Zt(()=>{const c=a.value=n.xxl,_=c?"xs":f?"sm":d?"md":h?"lg":m?"xl":"xxl",b=typeof r=="number"?r:n[r],y=a.value{window.removeEventListener("resize",l)},!0)),{...ea(i),update:u,ssr:!!t}}function B0(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{mobile:null},t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:yn();const n=Pe(Ti);if(!n)throw new Error("Could not find Vuetify display injection");const r=M(()=>e.mobile?!0:typeof e.mobileBreakpoint=="number"?n.width.valuet?{[`${t}--mobile`]:r.value}:{});return{...n,displayClasses:s,mobile:r}}const V0=Symbol.for("vuetify:goto");function j0(){return{container:void 0,duration:300,layout:!1,offset:0,easing:"easeInOutCubic",patterns:qg}}function H0(e,t){return{rtl:t.isRtl,options:ht(j0(),e)}}const U0={collapse:"mdi-chevron-up",complete:"mdi-check",cancel:"mdi-close-circle",close:"mdi-close",delete:"mdi-close-circle",clear:"mdi-close-circle",success:"mdi-check-circle",info:"mdi-information",warning:"mdi-alert-circle",error:"mdi-close-circle",prev:"mdi-chevron-left",next:"mdi-chevron-right",checkboxOn:"mdi-checkbox-marked",checkboxOff:"mdi-checkbox-blank-outline",checkboxIndeterminate:"mdi-minus-box",delimiter:"mdi-circle",sortAsc:"mdi-arrow-up",sortDesc:"mdi-arrow-down",expand:"mdi-chevron-down",menu:"mdi-menu",subgroup:"mdi-menu-down",dropdown:"mdi-menu-down",radioOn:"mdi-radiobox-marked",radioOff:"mdi-radiobox-blank",edit:"mdi-pencil",ratingEmpty:"mdi-star-outline",ratingFull:"mdi-star",ratingHalf:"mdi-star-half-full",loading:"mdi-cached",first:"mdi-page-first",last:"mdi-page-last",unfold:"mdi-unfold-more-horizontal",file:"mdi-paperclip",plus:"mdi-plus",minus:"mdi-minus",calendar:"mdi-calendar",treeviewCollapse:"mdi-menu-down",treeviewExpand:"mdi-menu-right",eyeDropper:"mdi-eyedropper",upload:"mdi-cloud-upload",color:"mdi-palette",command:"mdi-apple-keyboard-command",ctrl:"mdi-apple-keyboard-control",space:"mdi-keyboard-space",shift:"mdi-apple-keyboard-shift",alt:"mdi-apple-keyboard-option",enter:"mdi-keyboard-return",arrowup:"mdi-arrow-up",arrowdown:"mdi-arrow-down",arrowleft:"mdi-arrow-left",arrowright:"mdi-arrow-right",backspace:"mdi-backspace",play:"mdi-play",pause:"mdi-pause",fullscreen:"mdi-fullscreen",fullscreenExit:"mdi-fullscreen-exit",volumeHigh:"mdi-volume-high",volumeMedium:"mdi-volume-medium",volumeLow:"mdi-volume-low",volumeOff:"mdi-volume-variant-off"},q0={component:e=>ts(Wf,{...e,class:"mdi"})},Zs=[String,Function,Object,Array],Ai=Symbol.for("vuetify:icons"),wo=me({icon:{type:Zs},tag:{type:[String,Object,Function],required:!0}},"icon"),Yl=wt()({name:"VComponentIcon",props:wo(),setup(e,t){let{slots:n}=t;return()=>{const r=e.icon;return Z(e.tag,null,{default:()=>{var s;return[e.icon?Z(r,null,null):(s=n.default)==null?void 0:s.call(n)]}})}}}),zf=rs({name:"VSvgIcon",inheritAttrs:!1,props:wo(),setup(e,t){let{attrs:n}=t;return()=>Z(e.tag,Xe(n,{style:null}),{default:()=>[R("svg",{class:"v-icon__svg",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",role:"img","aria-hidden":"true"},[Array.isArray(e.icon)?e.icon.map(r=>Array.isArray(r)?R("path",{d:r[0],"fill-opacity":r[1]},null):R("path",{d:r},null)):R("path",{d:e.icon},null)])]})}});rs({name:"VLigatureIcon",props:wo(),setup(e){return()=>Z(e.tag,null,{default:()=>[e.icon]})}});const Wf=rs({name:"VClassIcon",props:wo(),setup(e){return()=>Z(e.tag,{class:ve(e.icon)},null)}});function z0(){return{svg:{component:zf},class:{component:Wf}}}function W0(e){const t=z0(),n=(e==null?void 0:e.defaultSet)??"mdi";return n==="mdi"&&!t.mdi&&(t.mdi=q0),ht({defaultSet:n,sets:t,aliases:{...U0,vuetify:["M8.2241 14.2009L12 21L22 3H14.4459L8.2241 14.2009Z",["M7.26303 12.4733L7.00113 12L2 3H12.5261C12.5261 3 12.5261 3 12.5261 3L7.26303 12.4733Z",.6]],"vuetify-outline":"svg:M7.26 12.47 12.53 3H2L7.26 12.47ZM14.45 3 8.22 14.2 12 21 22 3H14.45ZM18.6 5 12 16.88 10.51 14.2 15.62 5ZM7.26 8.35 5.4 5H9.13L7.26 8.35Z","vuetify-play":["m6.376 13.184-4.11-7.192C1.505 4.66 2.467 3 4.003 3h8.532l-.953 1.576-.006.01-.396.677c-.429.732-.214 1.507.194 2.015.404.503 1.092.878 1.869.806a3.72 3.72 0 0 1 1.005.022c.276.053.434.143.523.237.138.146.38.635-.25 2.09-.893 1.63-1.553 1.722-1.847 1.677-.213-.033-.468-.158-.756-.406a4.95 4.95 0 0 1-.8-.927c-.39-.564-1.04-.84-1.66-.846-.625-.006-1.316.27-1.693.921l-.478.826-.911 1.506Z",["M9.093 11.552c.046-.079.144-.15.32-.148a.53.53 0 0 1 .43.207c.285.414.636.847 1.046 1.2.405.35.914.662 1.516.754 1.334.205 2.502-.698 3.48-2.495l.014-.028.013-.03c.687-1.574.774-2.852-.005-3.675-.37-.391-.861-.586-1.333-.676a5.243 5.243 0 0 0-1.447-.044c-.173.016-.393-.073-.54-.257-.145-.18-.127-.316-.082-.392l.393-.672L14.287 3h5.71c1.536 0 2.499 1.659 1.737 2.992l-7.997 13.996c-.768 1.344-2.706 1.344-3.473 0l-3.037-5.314 1.377-2.278.004-.006.004-.007.481-.831Z",.6]]}},e)}const G0=e=>{const t=Pe(Ai);if(!t)throw new Error("Missing Vuetify Icons provide!");return{iconData:M(()=>{var l;const r=un(e);if(!r)return{component:Yl};let s=r;if(typeof s=="string"&&(s=s.trim(),s.startsWith("$")&&(s=(l=t.aliases)==null?void 0:l[s.slice(1)])),Array.isArray(s))return{component:zf,icon:s};if(typeof s!="string")return{component:Yl,icon:s};const o=Object.keys(t.sets).find(u=>typeof s=="string"&&s.startsWith(`${u}:`)),i=o?s.slice(o.length+1):s;return{component:t.sets[o??t.defaultSet].component,icon:i}})}},Hr=Symbol.for("vuetify:theme"),vn=me({theme:String},"theme");function Jl(){return{defaultTheme:"light",prefix:"v-",variations:{colors:[],lighten:0,darken:0},themes:{light:{dark:!1,colors:{background:"#FFFFFF",surface:"#FFFFFF","surface-bright":"#FFFFFF","surface-light":"#EEEEEE","surface-variant":"#424242","on-surface-variant":"#EEEEEE",primary:"#1867C0","primary-darken-1":"#1F5592",secondary:"#48A9A6","secondary-darken-1":"#018786",error:"#B00020",info:"#2196F3",success:"#4CAF50",warning:"#FB8C00"},variables:{"border-color":"#000000","border-opacity":.12,"high-emphasis-opacity":.87,"medium-emphasis-opacity":.6,"disabled-opacity":.38,"idle-opacity":.04,"hover-opacity":.04,"focus-opacity":.12,"selected-opacity":.08,"activated-opacity":.12,"pressed-opacity":.12,"dragged-opacity":.08,"theme-kbd":"#EEEEEE","theme-on-kbd":"#000000","theme-code":"#F5F5F5","theme-on-code":"#000000"}},dark:{dark:!0,colors:{background:"#121212",surface:"#212121","surface-bright":"#ccbfd6","surface-light":"#424242","surface-variant":"#c8c8c8","on-surface-variant":"#000000",primary:"#2196F3","primary-darken-1":"#277CC1",secondary:"#54B6B2","secondary-darken-1":"#48A9A6",error:"#CF6679",info:"#2196F3",success:"#4CAF50",warning:"#FB8C00"},variables:{"border-color":"#FFFFFF","border-opacity":.12,"high-emphasis-opacity":1,"medium-emphasis-opacity":.7,"disabled-opacity":.5,"idle-opacity":.1,"hover-opacity":.04,"focus-opacity":.12,"selected-opacity":.08,"activated-opacity":.12,"pressed-opacity":.16,"dragged-opacity":.08,"theme-kbd":"#424242","theme-on-kbd":"#FFFFFF","theme-code":"#343434","theme-on-code":"#CCCCCC"}}},stylesheetId:"vuetify-theme-stylesheet",scoped:!1,unimportant:!1,utilities:!0}}function K0(){var r,s;let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Jl();const t=Jl();if(!e)return{...t,isDisabled:!0};const n={};for(const[o,i]of Object.entries(e.themes??{})){const a=i.dark||o==="dark"?(r=t.themes)==null?void 0:r.dark:(s=t.themes)==null?void 0:s.light;n[o]=ht(a,i)}return ht(t,{...e,themes:n})}function Sn(e,t,n,r){e.push(`${X0(t,r)} { +`,...n.map(s=>` ${s}; +`),`} +`)}function Zl(e,t){const n=e.dark?2:1,r=e.dark?1:2,s=[];for(const[o,i]of Object.entries(e.colors)){const a=Dt(i);s.push(`--${t}theme-${o}: ${a.r},${a.g},${a.b}`),o.startsWith("on-")||s.push(`--${t}theme-${o}-overlay-multiplier: ${Ng(i)>.18?n:r}`)}for(const[o,i]of Object.entries(e.variables)){const a=typeof i=="string"&&i.startsWith("#")?Dt(i):void 0,l=a?`${a.r}, ${a.g}, ${a.b}`:void 0;s.push(`--${t}${o}: ${l??i}`)}return s}function Y0(e,t,n){const r={};if(n)for(const s of["lighten","darken"]){const o=s==="lighten"?Dg:Ig;for(const i of Sf(n[s],1))r[`${e}-${s}-${i}`]=Fg(o(Dt(t),i))}return r}function J0(e,t){if(!t)return{};let n={};for(const r of t.colors){const s=e[r];s&&(n={...n,...Y0(r,s,t)})}return n}function Z0(e){const t={};for(const n of Object.keys(e)){if(n.startsWith("on-")||e[`on-${n}`])continue;const r=`on-${n}`,s=Dt(e[n]);t[r]=Mf(s)}return t}function X0(e,t){if(!t)return e;const n=`:where(${t})`;return e===":root"?n:`${n} ${e}`}function Q0(e,t,n){const r=ey(e,t);r&&(r.innerHTML=n)}function ey(e,t){if(!$e)return null;let n=document.getElementById(e);return n||(n=document.createElement("style"),n.id=e,n.type="text/css",t&&n.setAttribute("nonce",t),document.head.appendChild(n)),n}function ty(e){const t=K0(e),n=Oe(t.defaultTheme),r=de(t.themes),s=Oe("light"),o=M({get(){return n.value==="system"?s.value:n.value},set(b){n.value=b}}),i=M(()=>{const b={};for(const[y,p]of Object.entries(r.value)){const k={...p.colors,...J0(p.colors,t.variations)};b[y]={...p,colors:{...k,...Z0(k)}}}return b}),a=ie(()=>i.value[o.value]),l=ie(()=>n.value==="system"),u=M(()=>{var k;const b=[],y=t.unimportant?"":" !important",p=t.scoped?t.prefix:"";(k=a.value)!=null&&k.dark&&Sn(b,":root",["color-scheme: dark"],t.scope),Sn(b,":root",Zl(a.value,t.prefix),t.scope);for(const[S,P]of Object.entries(i.value))Sn(b,`.${t.prefix}theme--${S}`,[`color-scheme: ${P.dark?"dark":"normal"}`,...Zl(P,t.prefix)],t.scope);if(t.utilities){const S=[],P=[],D=new Set(Object.values(i.value).flatMap(x=>Object.keys(x.colors)));for(const x of D)x.startsWith("on-")?Sn(P,`.${x}`,[`color: rgb(var(--${t.prefix}theme-${x}))${y}`],t.scope):(Sn(S,`.${p}bg-${x}`,[`--${t.prefix}theme-overlay-multiplier: var(--${t.prefix}theme-${x}-overlay-multiplier)`,`background-color: rgb(var(--${t.prefix}theme-${x}))${y}`,`color: rgb(var(--${t.prefix}theme-on-${x}))${y}`],t.scope),Sn(P,`.${p}text-${x}`,[`color: rgb(var(--${t.prefix}theme-${x}))${y}`],t.scope),Sn(P,`.${p}border-${x}`,[`--${t.prefix}border-color: var(--${t.prefix}theme-${x})`],t.scope));b.push(...S,...P)}return b.map((S,P)=>P===0?S:` ${S}`).join("")}),c=ie(()=>t.isDisabled?void 0:`${t.prefix}theme--${o.value}`),f=ie(()=>Object.keys(i.value));if(Qp){let b=function(){s.value=y.matches?"dark":"light"};const y=window.matchMedia("(prefers-color-scheme: dark)");b(),y.addEventListener("change",b,{passive:!0}),Ki()&&Qe(()=>{y.removeEventListener("change",b)})}function d(b){if(t.isDisabled)return;const y=b._context.provides.usehead;if(y){let p=function(){return{style:[{textContent:u.value,id:t.stylesheetId,nonce:t.cspNonce||!1}]}};if(y.push){const k=y.push(p);$e&&ye(u,()=>{k.patch(p)})}else $e?(y.addHeadObjs(ie(p)),Zt(()=>y.updateDOM())):y.addHeadObjs(p())}else{let p=function(){Q0(t.stylesheetId,t.cspNonce,u.value)};$e?ye(u,p,{immediate:!0}):p()}}function h(b){b!=="system"&&!f.value.includes(b)||(o.value=b)}function m(){let b=arguments.length>0&&arguments[0]!==void 0?arguments[0]:f.value;const y=b.indexOf(o.value),p=y===-1?0:(y+1)%b.length;h(b[p])}function w(){let b=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["light","dark"];m(b)}const _=new Proxy(o,{get(b,y){return Reflect.get(b,y)},set(b,y,p){return y==="value"&&xg(`theme.global.name.value = ${p}`,`theme.change('${p}')`),Reflect.set(b,y,p)}});return{install:d,change:h,cycle:m,toggle:w,isDisabled:t.isDisabled,isSystem:l,name:o,themes:r,current:a,computedThemes:i,prefix:t.prefix,themeClasses:c,styles:u,global:{name:_,current:a}}}function jn(e){et("provideTheme");const t=Pe(Hr,null);if(!t)throw new Error("Could not find Vuetify theme injection");const n=ie(()=>e.theme??t.name.value),r=ie(()=>t.themes.value[n.value]),s=ie(()=>t.isDisabled?void 0:`${t.prefix}theme--${n.value}`),o={...t,name:n,current:r,themeClasses:s};return Et(Hr,o),o}function ny(){et("useTheme");const e=Pe(Hr,null);if(!e)throw new Error("Could not find Vuetify theme injection");return e}function Gf(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"content";const n=_i(),r=de();if($e){const s=new ResizeObserver(o=>{o.length&&(t==="content"?r.value=o[0].contentRect:r.value=o[0].target.getBoundingClientRect())});cr(()=>{s.disconnect()}),ye(()=>n.el,(o,i)=>{i&&(s.unobserve(i),r.value=void 0),o&&s.observe(o)},{flush:"post"})}return{resizeRef:n,contentRect:Zr(r)}}const Xs=Symbol.for("vuetify:layout"),ry=Symbol.for("vuetify:layout-item"),Xl=1e3,sy=me({overlaps:{type:Array,default:()=>[]},fullHeight:Boolean},"layout");function Kf(){const e=Pe(Xs);if(!e)throw new Error("[Vuetify] Could not find injected layout");return{getLayoutItem:e.getLayoutItem,mainRect:e.mainRect,mainStyles:e.mainStyles}}const oy=(e,t,n,r)=>{let s={top:0,left:0,right:0,bottom:0};const o=[{id:"",layer:{...s}}];for(const i of e){const a=t.get(i),l=n.get(i),u=r.get(i);if(!a||!l||!u)continue;const c={...s,[a.value]:parseInt(s[a.value],10)+(u.value?parseInt(l.value,10):0)};o.push({id:i,layer:c}),s=c}return o};function iy(e){const t=Pe(Xs,null),n=M(()=>t?t.rootZIndex.value-100:Xl),r=de([]),s=Be(new Map),o=Be(new Map),i=Be(new Map),a=Be(new Map),l=Be(new Map),{resizeRef:u,contentRect:c}=Gf(),f=M(()=>{const P=new Map,D=e.overlaps??[];for(const x of D.filter(A=>A.includes(":"))){const[A,B]=x.split(":");if(!r.value.includes(A)||!r.value.includes(B))continue;const V=s.get(A),L=s.get(B),G=o.get(A),se=o.get(B);!V||!L||!G||!se||(P.set(B,{position:V.value,amount:parseInt(G.value,10)}),P.set(A,{position:L.value,amount:-parseInt(se.value,10)}))}return P}),d=M(()=>{const P=[...new Set([...i.values()].map(x=>x.value))].sort((x,A)=>x-A),D=[];for(const x of P){const A=r.value.filter(B=>{var V;return((V=i.get(B))==null?void 0:V.value)===x});D.push(...A)}return oy(D,s,o,a)}),h=M(()=>!Array.from(l.values()).some(P=>P.value)),m=M(()=>d.value[d.value.length-1].layer),w=ie(()=>({"--v-layout-left":pe(m.value.left),"--v-layout-right":pe(m.value.right),"--v-layout-top":pe(m.value.top),"--v-layout-bottom":pe(m.value.bottom),...h.value?void 0:{transition:"none"}})),_=M(()=>d.value.slice(1).map((P,D)=>{let{id:x}=P;const{layer:A}=d.value[D],B=o.get(x),V=s.get(x);return{id:x,...A,size:Number(B.value),position:V.value}})),b=P=>_.value.find(D=>D.id===P),y=et("createLayout"),p=Oe(!1);mn(()=>{p.value=!0}),Et(Xs,{register:(P,D)=>{let{id:x,order:A,position:B,layoutSize:V,elementSize:L,active:G,disableTransitions:se,absolute:X}=D;i.set(x,A),s.set(x,B),o.set(x,V),a.set(x,G),se&&l.set(x,se);const ee=Yn(ry,y==null?void 0:y.vnode).indexOf(P);ee>-1?r.value.splice(ee,0,x):r.value.push(x);const ce=M(()=>_.value.findIndex(Re=>Re.id===x)),Ne=M(()=>n.value+d.value.length*2-ce.value*2),Ce=M(()=>{const Re=B.value==="left"||B.value==="right",je=B.value==="right",ct=B.value==="bottom",Tt=L.value??V.value,ze=Tt===0?"%":"px",C={[B.value]:0,zIndex:Ne.value,transform:`translate${Re?"X":"Y"}(${(G.value?0:-(Tt===0?100:Tt))*(je||ct?-1:1)}${ze})`,position:X.value||n.value!==Xl?"absolute":"fixed",...h.value?void 0:{transition:"none"}};if(!p.value)return C;const N=_.value[ce.value],j=f.value.get(x);return j&&(N[j.position]+=j.amount),{...C,height:Re?`calc(100% - ${N.top}px - ${N.bottom}px)`:L.value?`${L.value}px`:void 0,left:je?void 0:`${N.left}px`,right:je?`${N.right}px`:void 0,top:B.value!=="bottom"?`${N.top}px`:void 0,bottom:B.value!=="top"?`${N.bottom}px`:void 0,width:Re?L.value?`${L.value}px`:void 0:`calc(100% - ${N.left}px - ${N.right}px)`}}),Le=M(()=>({zIndex:Ne.value-1}));return{layoutItemStyles:Ce,layoutItemScrimStyles:Le,zIndex:Ne}},unregister:P=>{i.delete(P),s.delete(P),o.delete(P),a.delete(P),l.delete(P),r.value=r.value.filter(D=>D!==P)},mainRect:m,mainStyles:w,getLayoutItem:b,items:_,layoutRect:c,rootZIndex:n});const k=ie(()=>["v-layout",{"v-layout--full-height":e.fullHeight}]),S=ie(()=>({zIndex:t?n.value:void 0,position:t?"relative":void 0,overflow:t?"hidden":void 0}));return{layoutClasses:k,layoutStyles:S,getLayoutItem:b,items:_,layoutRect:c,layoutRef:u}}function Yf(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{blueprint:t,...n}=e,r=ht(t,n),{aliases:s={},components:o={},directives:i={}}=r,a=In();return a.run(()=>{const l=Vg(r.defaults),u=N0(r.display,r.ssr),c=ty(r.theme),f=W0(r.icons),d=Zg(r.locale),h=M0(r.date,d),m=H0(r.goTo,d);function w(b){for(const p in i)b.directive(p,i[p]);for(const p in o)b.component(p,o[p]);for(const p in s)b.component(p,rs({...s[p],name:p,aliasName:s[p].name}));const y=In();if(y.run(()=>{c.install(b)}),b.onUnmount(()=>y.stop()),b.provide(or,l),b.provide(Ti,u),b.provide(Hr,c),b.provide(Ai,f),b.provide(Ks,d),b.provide(L0,h.options),b.provide(ql,h.instance),b.provide(V0,m),$e&&r.ssr)if(b.$nuxt)b.$nuxt.hook("app:suspense:resolve",()=>{u.update()});else{const{mount:p}=b;b.mount=function(){const k=p(...arguments);return bt(()=>u.update()),b.mount=p,k}}b.mixin({computed:{$vuetify(){return Be({defaults:Wn.call(this,or),display:Wn.call(this,Ti),theme:Wn.call(this,Hr),icons:Wn.call(this,Ai),locale:Wn.call(this,Ks),date:Wn.call(this,ql)})}}})}function _(){a.stop()}return{install:w,unmount:_,defaults:l,display:u,theme:c,icons:f,locale:d,date:h,goTo:m}})}const ay="3.9.3";Yf.version=ay;function Wn(e){var r,s;const t=this.$,n=((r=t.parent)==null?void 0:r.provides)??((s=t.vnode.appContext)==null?void 0:s.provides);if(n&&e in n)return n[e]}function Jf(e,t){return function(){return e.apply(t,arguments)}}const{toString:ly}=Object.prototype,{getPrototypeOf:ma}=Object,{iterator:_o,toStringTag:Zf}=Symbol,Eo=(e=>t=>{const n=ly.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),kt=e=>(e=e.toLowerCase(),t=>Eo(t)===e),So=e=>t=>typeof t===e,{isArray:ur}=Array,Ur=So("undefined");function is(e){return e!==null&&!Ur(e)&&e.constructor!==null&&!Ur(e.constructor)&&it(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const Xf=kt("ArrayBuffer");function cy(e){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&Xf(e.buffer),t}const uy=So("string"),it=So("function"),Qf=So("number"),as=e=>e!==null&&typeof e=="object",fy=e=>e===!0||e===!1,As=e=>{if(Eo(e)!=="object")return!1;const t=ma(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Zf in e)&&!(_o in e)},dy=e=>{if(!as(e)||is(e))return!1;try{return Object.keys(e).length===0&&Object.getPrototypeOf(e)===Object.prototype}catch{return!1}},hy=kt("Date"),my=kt("File"),py=kt("Blob"),gy=kt("FileList"),yy=e=>as(e)&&it(e.pipe),vy=e=>{let t;return e&&(typeof FormData=="function"&&e instanceof FormData||it(e.append)&&((t=Eo(e))==="formdata"||t==="object"&&it(e.toString)&&e.toString()==="[object FormData]"))},by=kt("URLSearchParams"),[wy,_y,Ey,Sy]=["ReadableStream","Request","Response","Headers"].map(kt),xy=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function ls(e,t,{allOwnKeys:n=!1}={}){if(e===null||typeof e>"u")return;let r,s;if(typeof e!="object"&&(e=[e]),ur(e))for(r=0,s=e.length;r0;)if(s=n[r],t===s.toLowerCase())return s;return null}const Pn=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:globalThis,td=e=>!Ur(e)&&e!==Pn;function Ri(){const{caseless:e}=td(this)&&this||{},t={},n=(r,s)=>{const o=e&&ed(t,s)||s;As(t[o])&&As(r)?t[o]=Ri(t[o],r):As(r)?t[o]=Ri({},r):ur(r)?t[o]=r.slice():t[o]=r};for(let r=0,s=arguments.length;r(ls(t,(s,o)=>{n&&it(s)?e[o]=Jf(s,n):e[o]=s},{allOwnKeys:r}),e),ky=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),Ty=(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},Ay=(e,t,n,r)=>{let s,o,i;const a={};if(t=t||{},e==null)return t;do{for(s=Object.getOwnPropertyNames(e),o=s.length;o-- >0;)i=s[o],(!r||r(i,e,t))&&!a[i]&&(t[i]=e[i],a[i]=!0);e=n!==!1&&ma(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},Ry=(e,t,n)=>{e=String(e),(n===void 0||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return r!==-1&&r===n},Py=e=>{if(!e)return null;if(ur(e))return e;let t=e.length;if(!Qf(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},Oy=(e=>t=>e&&t instanceof e)(typeof Uint8Array<"u"&&ma(Uint8Array)),$y=(e,t)=>{const r=(e&&e[_o]).call(e);let s;for(;(s=r.next())&&!s.done;){const o=s.value;t.call(e,o[0],o[1])}},Fy=(e,t)=>{let n;const r=[];for(;(n=e.exec(t))!==null;)r.push(n);return r},Ly=kt("HTMLFormElement"),My=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,r,s){return r.toUpperCase()+s}),Ql=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),Dy=kt("RegExp"),nd=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};ls(n,(s,o)=>{let i;(i=t(s,o,e))!==!1&&(r[o]=i||s)}),Object.defineProperties(e,r)},Iy=e=>{nd(e,(t,n)=>{if(it(e)&&["arguments","caller","callee"].indexOf(n)!==-1)return!1;const r=e[n];if(it(r)){if(t.enumerable=!1,"writable"in t){t.writable=!1;return}t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},Ny=(e,t)=>{const n={},r=s=>{s.forEach(o=>{n[o]=!0})};return ur(e)?r(e):r(String(e).split(t)),n},By=()=>{},Vy=(e,t)=>e!=null&&Number.isFinite(e=+e)?e:t;function jy(e){return!!(e&&it(e.append)&&e[Zf]==="FormData"&&e[_o])}const Hy=e=>{const t=new Array(10),n=(r,s)=>{if(as(r)){if(t.indexOf(r)>=0)return;if(is(r))return r;if(!("toJSON"in r)){t[s]=r;const o=ur(r)?[]:{};return ls(r,(i,a)=>{const l=n(i,s+1);!Ur(l)&&(o[a]=l)}),t[s]=void 0,o}}return r};return n(e,0)},Uy=kt("AsyncFunction"),qy=e=>e&&(as(e)||it(e))&&it(e.then)&&it(e.catch),rd=((e,t)=>e?setImmediate:t?((n,r)=>(Pn.addEventListener("message",({source:s,data:o})=>{s===Pn&&o===n&&r.length&&r.shift()()},!1),s=>{r.push(s),Pn.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",it(Pn.postMessage)),zy=typeof queueMicrotask<"u"?queueMicrotask.bind(Pn):typeof process<"u"&&process.nextTick||rd,Wy=e=>e!=null&&it(e[_o]),T={isArray:ur,isArrayBuffer:Xf,isBuffer:is,isFormData:vy,isArrayBufferView:cy,isString:uy,isNumber:Qf,isBoolean:fy,isObject:as,isPlainObject:As,isEmptyObject:dy,isReadableStream:wy,isRequest:_y,isResponse:Ey,isHeaders:Sy,isUndefined:Ur,isDate:hy,isFile:my,isBlob:py,isRegExp:Dy,isFunction:it,isStream:yy,isURLSearchParams:by,isTypedArray:Oy,isFileList:gy,forEach:ls,merge:Ri,extend:Cy,trim:xy,stripBOM:ky,inherits:Ty,toFlatObject:Ay,kindOf:Eo,kindOfTest:kt,endsWith:Ry,toArray:Py,forEachEntry:$y,matchAll:Fy,isHTMLForm:Ly,hasOwnProperty:Ql,hasOwnProp:Ql,reduceDescriptors:nd,freezeMethods:Iy,toObjectSet:Ny,toCamelCase:My,noop:By,toFiniteNumber:Vy,findKey:ed,global:Pn,isContextDefined:td,isSpecCompliantForm:jy,toJSONObject:Hy,isAsyncFn:Uy,isThenable:qy,setImmediate:rd,asap:zy,isIterable:Wy};function fe(e,t,n,r,s){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),s&&(this.response=s,this.status=s.status?s.status:null)}T.inherits(fe,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:T.toJSONObject(this.config),code:this.code,status:this.status}}});const sd=fe.prototype,od={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(e=>{od[e]={value:e}});Object.defineProperties(fe,od);Object.defineProperty(sd,"isAxiosError",{value:!0});fe.from=(e,t,n,r,s,o)=>{const i=Object.create(sd);return T.toFlatObject(e,i,function(l){return l!==Error.prototype},a=>a!=="isAxiosError"),fe.call(i,e.message,t,n,r,s),i.cause=e,i.name=e.name,o&&Object.assign(i,o),i};const Gy=null;function Pi(e){return T.isPlainObject(e)||T.isArray(e)}function id(e){return T.endsWith(e,"[]")?e.slice(0,-2):e}function ec(e,t,n){return e?e.concat(t).map(function(s,o){return s=id(s),!n&&o?"["+s+"]":s}).join(n?".":""):t}function Ky(e){return T.isArray(e)&&!e.some(Pi)}const Yy=T.toFlatObject(T,{},null,function(t){return/^is[A-Z]/.test(t)});function xo(e,t,n){if(!T.isObject(e))throw new TypeError("target must be an object");t=t||new FormData,n=T.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(w,_){return!T.isUndefined(_[w])});const r=n.metaTokens,s=n.visitor||c,o=n.dots,i=n.indexes,l=(n.Blob||typeof Blob<"u"&&Blob)&&T.isSpecCompliantForm(t);if(!T.isFunction(s))throw new TypeError("visitor must be a function");function u(m){if(m===null)return"";if(T.isDate(m))return m.toISOString();if(T.isBoolean(m))return m.toString();if(!l&&T.isBlob(m))throw new fe("Blob is not supported. Use a Buffer instead.");return T.isArrayBuffer(m)||T.isTypedArray(m)?l&&typeof Blob=="function"?new Blob([m]):Buffer.from(m):m}function c(m,w,_){let b=m;if(m&&!_&&typeof m=="object"){if(T.endsWith(w,"{}"))w=r?w:w.slice(0,-2),m=JSON.stringify(m);else if(T.isArray(m)&&Ky(m)||(T.isFileList(m)||T.endsWith(w,"[]"))&&(b=T.toArray(m)))return w=id(w),b.forEach(function(p,k){!(T.isUndefined(p)||p===null)&&t.append(i===!0?ec([w],k,o):i===null?w:w+"[]",u(p))}),!1}return Pi(m)?!0:(t.append(ec(_,w,o),u(m)),!1)}const f=[],d=Object.assign(Yy,{defaultVisitor:c,convertValue:u,isVisitable:Pi});function h(m,w){if(!T.isUndefined(m)){if(f.indexOf(m)!==-1)throw Error("Circular reference detected in "+w.join("."));f.push(m),T.forEach(m,function(b,y){(!(T.isUndefined(b)||b===null)&&s.call(t,b,T.isString(y)?y.trim():y,w,d))===!0&&h(b,w?w.concat(y):[y])}),f.pop()}}if(!T.isObject(e))throw new TypeError("data must be an object");return h(e),t}function tc(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(r){return t[r]})}function pa(e,t){this._pairs=[],e&&xo(e,this,t)}const ad=pa.prototype;ad.append=function(t,n){this._pairs.push([t,n])};ad.toString=function(t){const n=t?function(r){return t.call(this,r,tc)}:tc;return this._pairs.map(function(s){return n(s[0])+"="+n(s[1])},"").join("&")};function Jy(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function ld(e,t,n){if(!t)return e;const r=n&&n.encode||Jy;T.isFunction(n)&&(n={serialize:n});const s=n&&n.serialize;let o;if(s?o=s(t,n):o=T.isURLSearchParams(t)?t.toString():new pa(t,n).toString(r),o){const i=e.indexOf("#");i!==-1&&(e=e.slice(0,i)),e+=(e.indexOf("?")===-1?"?":"&")+o}return e}class nc{constructor(){this.handlers=[]}use(t,n,r){return this.handlers.push({fulfilled:t,rejected:n,synchronous:r?r.synchronous:!1,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(t){this.handlers[t]&&(this.handlers[t]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(t){T.forEach(this.handlers,function(r){r!==null&&t(r)})}}const cd={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Zy=typeof URLSearchParams<"u"?URLSearchParams:pa,Xy=typeof FormData<"u"?FormData:null,Qy=typeof Blob<"u"?Blob:null,ev={isBrowser:!0,classes:{URLSearchParams:Zy,FormData:Xy,Blob:Qy},protocols:["http","https","file","blob","url","data"]},ga=typeof window<"u"&&typeof document<"u",Oi=typeof navigator=="object"&&navigator||void 0,tv=ga&&(!Oi||["ReactNative","NativeScript","NS"].indexOf(Oi.product)<0),nv=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",rv=ga&&window.location.href||"http://localhost",sv=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:ga,hasStandardBrowserEnv:tv,hasStandardBrowserWebWorkerEnv:nv,navigator:Oi,origin:rv},Symbol.toStringTag,{value:"Module"})),Ze={...sv,...ev};function ov(e,t){return xo(e,new Ze.classes.URLSearchParams,{visitor:function(n,r,s,o){return Ze.isNode&&T.isBuffer(n)?(this.append(r,n.toString("base64")),!1):o.defaultVisitor.apply(this,arguments)},...t})}function iv(e){return T.matchAll(/\w+|\[(\w*)]/g,e).map(t=>t[0]==="[]"?"":t[1]||t[0])}function av(e){const t={},n=Object.keys(e);let r;const s=n.length;let o;for(r=0;r=n.length;return i=!i&&T.isArray(s)?s.length:i,l?(T.hasOwnProp(s,i)?s[i]=[s[i],r]:s[i]=r,!a):((!s[i]||!T.isObject(s[i]))&&(s[i]=[]),t(n,r,s[i],o)&&T.isArray(s[i])&&(s[i]=av(s[i])),!a)}if(T.isFormData(e)&&T.isFunction(e.entries)){const n={};return T.forEachEntry(e,(r,s)=>{t(iv(r),s,n,0)}),n}return null}function lv(e,t,n){if(T.isString(e))try{return(t||JSON.parse)(e),T.trim(e)}catch(r){if(r.name!=="SyntaxError")throw r}return(n||JSON.stringify)(e)}const cs={transitional:cd,adapter:["xhr","http","fetch"],transformRequest:[function(t,n){const r=n.getContentType()||"",s=r.indexOf("application/json")>-1,o=T.isObject(t);if(o&&T.isHTMLForm(t)&&(t=new FormData(t)),T.isFormData(t))return s?JSON.stringify(ud(t)):t;if(T.isArrayBuffer(t)||T.isBuffer(t)||T.isStream(t)||T.isFile(t)||T.isBlob(t)||T.isReadableStream(t))return t;if(T.isArrayBufferView(t))return t.buffer;if(T.isURLSearchParams(t))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let a;if(o){if(r.indexOf("application/x-www-form-urlencoded")>-1)return ov(t,this.formSerializer).toString();if((a=T.isFileList(t))||r.indexOf("multipart/form-data")>-1){const l=this.env&&this.env.FormData;return xo(a?{"files[]":t}:t,l&&new l,this.formSerializer)}}return o||s?(n.setContentType("application/json",!1),lv(t)):t}],transformResponse:[function(t){const n=this.transitional||cs.transitional,r=n&&n.forcedJSONParsing,s=this.responseType==="json";if(T.isResponse(t)||T.isReadableStream(t))return t;if(t&&T.isString(t)&&(r&&!this.responseType||s)){const i=!(n&&n.silentJSONParsing)&&s;try{return JSON.parse(t)}catch(a){if(i)throw a.name==="SyntaxError"?fe.from(a,fe.ERR_BAD_RESPONSE,this,null,this.response):a}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:Ze.classes.FormData,Blob:Ze.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};T.forEach(["delete","get","head","post","put","patch"],e=>{cs.headers[e]={}});const cv=T.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),uv=e=>{const t={};let n,r,s;return e&&e.split(` +`).forEach(function(i){s=i.indexOf(":"),n=i.substring(0,s).trim().toLowerCase(),r=i.substring(s+1).trim(),!(!n||t[n]&&cv[n])&&(n==="set-cookie"?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)}),t},rc=Symbol("internals");function vr(e){return e&&String(e).trim().toLowerCase()}function Rs(e){return e===!1||e==null?e:T.isArray(e)?e.map(Rs):String(e)}function fv(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}const dv=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function Go(e,t,n,r,s){if(T.isFunction(r))return r.call(this,t,n);if(s&&(t=n),!!T.isString(t)){if(T.isString(r))return t.indexOf(r)!==-1;if(T.isRegExp(r))return r.test(t)}}function hv(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(t,n,r)=>n.toUpperCase()+r)}function mv(e,t){const n=T.toCamelCase(" "+t);["get","set","has"].forEach(r=>{Object.defineProperty(e,r+n,{value:function(s,o,i){return this[r].call(this,t,s,o,i)},configurable:!0})})}let at=class{constructor(t){t&&this.set(t)}set(t,n,r){const s=this;function o(a,l,u){const c=vr(l);if(!c)throw new Error("header name must be a non-empty string");const f=T.findKey(s,c);(!f||s[f]===void 0||u===!0||u===void 0&&s[f]!==!1)&&(s[f||l]=Rs(a))}const i=(a,l)=>T.forEach(a,(u,c)=>o(u,c,l));if(T.isPlainObject(t)||t instanceof this.constructor)i(t,n);else if(T.isString(t)&&(t=t.trim())&&!dv(t))i(uv(t),n);else if(T.isObject(t)&&T.isIterable(t)){let a={},l,u;for(const c of t){if(!T.isArray(c))throw TypeError("Object iterator must return a key-value pair");a[u=c[0]]=(l=a[u])?T.isArray(l)?[...l,c[1]]:[l,c[1]]:c[1]}i(a,n)}else t!=null&&o(n,t,r);return this}get(t,n){if(t=vr(t),t){const r=T.findKey(this,t);if(r){const s=this[r];if(!n)return s;if(n===!0)return fv(s);if(T.isFunction(n))return n.call(this,s,r);if(T.isRegExp(n))return n.exec(s);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,n){if(t=vr(t),t){const r=T.findKey(this,t);return!!(r&&this[r]!==void 0&&(!n||Go(this,this[r],r,n)))}return!1}delete(t,n){const r=this;let s=!1;function o(i){if(i=vr(i),i){const a=T.findKey(r,i);a&&(!n||Go(r,r[a],a,n))&&(delete r[a],s=!0)}}return T.isArray(t)?t.forEach(o):o(t),s}clear(t){const n=Object.keys(this);let r=n.length,s=!1;for(;r--;){const o=n[r];(!t||Go(this,this[o],o,t,!0))&&(delete this[o],s=!0)}return s}normalize(t){const n=this,r={};return T.forEach(this,(s,o)=>{const i=T.findKey(r,o);if(i){n[i]=Rs(s),delete n[o];return}const a=t?hv(o):String(o).trim();a!==o&&delete n[o],n[a]=Rs(s),r[a]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const n=Object.create(null);return T.forEach(this,(r,s)=>{r!=null&&r!==!1&&(n[s]=t&&T.isArray(r)?r.join(", "):r)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([t,n])=>t+": "+n).join(` +`)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...n){const r=new this(t);return n.forEach(s=>r.set(s)),r}static accessor(t){const r=(this[rc]=this[rc]={accessors:{}}).accessors,s=this.prototype;function o(i){const a=vr(i);r[a]||(mv(s,i),r[a]=!0)}return T.isArray(t)?t.forEach(o):o(t),this}};at.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);T.reduceDescriptors(at.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(r){this[n]=r}}});T.freezeMethods(at);function Ko(e,t){const n=this||cs,r=t||n,s=at.from(r.headers);let o=r.data;return T.forEach(e,function(a){o=a.call(n,o,s.normalize(),t?t.status:void 0)}),s.normalize(),o}function fd(e){return!!(e&&e.__CANCEL__)}function fr(e,t,n){fe.call(this,e??"canceled",fe.ERR_CANCELED,t,n),this.name="CanceledError"}T.inherits(fr,fe,{__CANCEL__:!0});function dd(e,t,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?e(n):t(new fe("Request failed with status code "+n.status,[fe.ERR_BAD_REQUEST,fe.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}function pv(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function gv(e,t){e=e||10;const n=new Array(e),r=new Array(e);let s=0,o=0,i;return t=t!==void 0?t:1e3,function(l){const u=Date.now(),c=r[o];i||(i=u),n[s]=l,r[s]=u;let f=o,d=0;for(;f!==s;)d+=n[f++],f=f%e;if(s=(s+1)%e,s===o&&(o=(o+1)%e),u-i{n=c,s=null,o&&(clearTimeout(o),o=null),e(...u)};return[(...u)=>{const c=Date.now(),f=c-n;f>=r?i(u,c):(s=u,o||(o=setTimeout(()=>{o=null,i(s)},r-f)))},()=>s&&i(s)]}const Qs=(e,t,n=3)=>{let r=0;const s=gv(50,250);return yv(o=>{const i=o.loaded,a=o.lengthComputable?o.total:void 0,l=i-r,u=s(l),c=i<=a;r=i;const f={loaded:i,total:a,progress:a?i/a:void 0,bytes:l,rate:u||void 0,estimated:u&&a&&c?(a-i)/u:void 0,event:o,lengthComputable:a!=null,[t?"download":"upload"]:!0};e(f)},n)},sc=(e,t)=>{const n=e!=null;return[r=>t[0]({lengthComputable:n,total:e,loaded:r}),t[1]]},oc=e=>(...t)=>T.asap(()=>e(...t)),vv=Ze.hasStandardBrowserEnv?((e,t)=>n=>(n=new URL(n,Ze.origin),e.protocol===n.protocol&&e.host===n.host&&(t||e.port===n.port)))(new URL(Ze.origin),Ze.navigator&&/(msie|trident)/i.test(Ze.navigator.userAgent)):()=>!0,bv=Ze.hasStandardBrowserEnv?{write(e,t,n,r,s,o){const i=[e+"="+encodeURIComponent(t)];T.isNumber(n)&&i.push("expires="+new Date(n).toGMTString()),T.isString(r)&&i.push("path="+r),T.isString(s)&&i.push("domain="+s),o===!0&&i.push("secure"),document.cookie=i.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function wv(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function _v(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function hd(e,t,n){let r=!wv(t);return e&&(r||n==!1)?_v(e,t):t}const ic=e=>e instanceof at?{...e}:e;function Vn(e,t){t=t||{};const n={};function r(u,c,f,d){return T.isPlainObject(u)&&T.isPlainObject(c)?T.merge.call({caseless:d},u,c):T.isPlainObject(c)?T.merge({},c):T.isArray(c)?c.slice():c}function s(u,c,f,d){if(T.isUndefined(c)){if(!T.isUndefined(u))return r(void 0,u,f,d)}else return r(u,c,f,d)}function o(u,c){if(!T.isUndefined(c))return r(void 0,c)}function i(u,c){if(T.isUndefined(c)){if(!T.isUndefined(u))return r(void 0,u)}else return r(void 0,c)}function a(u,c,f){if(f in t)return r(u,c);if(f in e)return r(void 0,u)}const l={url:o,method:o,data:o,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,withXSRFToken:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,responseEncoding:i,validateStatus:a,headers:(u,c,f)=>s(ic(u),ic(c),f,!0)};return T.forEach(Object.keys({...e,...t}),function(c){const f=l[c]||s,d=f(e[c],t[c],c);T.isUndefined(d)&&f!==a||(n[c]=d)}),n}const md=e=>{const t=Vn({},e);let{data:n,withXSRFToken:r,xsrfHeaderName:s,xsrfCookieName:o,headers:i,auth:a}=t;t.headers=i=at.from(i),t.url=ld(hd(t.baseURL,t.url,t.allowAbsoluteUrls),e.params,e.paramsSerializer),a&&i.set("Authorization","Basic "+btoa((a.username||"")+":"+(a.password?unescape(encodeURIComponent(a.password)):"")));let l;if(T.isFormData(n)){if(Ze.hasStandardBrowserEnv||Ze.hasStandardBrowserWebWorkerEnv)i.setContentType(void 0);else if((l=i.getContentType())!==!1){const[u,...c]=l?l.split(";").map(f=>f.trim()).filter(Boolean):[];i.setContentType([u||"multipart/form-data",...c].join("; "))}}if(Ze.hasStandardBrowserEnv&&(r&&T.isFunction(r)&&(r=r(t)),r||r!==!1&&vv(t.url))){const u=s&&o&&bv.read(o);u&&i.set(s,u)}return t},Ev=typeof XMLHttpRequest<"u",Sv=Ev&&function(e){return new Promise(function(n,r){const s=md(e);let o=s.data;const i=at.from(s.headers).normalize();let{responseType:a,onUploadProgress:l,onDownloadProgress:u}=s,c,f,d,h,m;function w(){h&&h(),m&&m(),s.cancelToken&&s.cancelToken.unsubscribe(c),s.signal&&s.signal.removeEventListener("abort",c)}let _=new XMLHttpRequest;_.open(s.method.toUpperCase(),s.url,!0),_.timeout=s.timeout;function b(){if(!_)return;const p=at.from("getAllResponseHeaders"in _&&_.getAllResponseHeaders()),S={data:!a||a==="text"||a==="json"?_.responseText:_.response,status:_.status,statusText:_.statusText,headers:p,config:e,request:_};dd(function(D){n(D),w()},function(D){r(D),w()},S),_=null}"onloadend"in _?_.onloadend=b:_.onreadystatechange=function(){!_||_.readyState!==4||_.status===0&&!(_.responseURL&&_.responseURL.indexOf("file:")===0)||setTimeout(b)},_.onabort=function(){_&&(r(new fe("Request aborted",fe.ECONNABORTED,e,_)),_=null)},_.onerror=function(){r(new fe("Network Error",fe.ERR_NETWORK,e,_)),_=null},_.ontimeout=function(){let k=s.timeout?"timeout of "+s.timeout+"ms exceeded":"timeout exceeded";const S=s.transitional||cd;s.timeoutErrorMessage&&(k=s.timeoutErrorMessage),r(new fe(k,S.clarifyTimeoutError?fe.ETIMEDOUT:fe.ECONNABORTED,e,_)),_=null},o===void 0&&i.setContentType(null),"setRequestHeader"in _&&T.forEach(i.toJSON(),function(k,S){_.setRequestHeader(S,k)}),T.isUndefined(s.withCredentials)||(_.withCredentials=!!s.withCredentials),a&&a!=="json"&&(_.responseType=s.responseType),u&&([d,m]=Qs(u,!0),_.addEventListener("progress",d)),l&&_.upload&&([f,h]=Qs(l),_.upload.addEventListener("progress",f),_.upload.addEventListener("loadend",h)),(s.cancelToken||s.signal)&&(c=p=>{_&&(r(!p||p.type?new fr(null,e,_):p),_.abort(),_=null)},s.cancelToken&&s.cancelToken.subscribe(c),s.signal&&(s.signal.aborted?c():s.signal.addEventListener("abort",c)));const y=pv(s.url);if(y&&Ze.protocols.indexOf(y)===-1){r(new fe("Unsupported protocol "+y+":",fe.ERR_BAD_REQUEST,e));return}_.send(o||null)})},xv=(e,t)=>{const{length:n}=e=e?e.filter(Boolean):[];if(t||n){let r=new AbortController,s;const o=function(u){if(!s){s=!0,a();const c=u instanceof Error?u:this.reason;r.abort(c instanceof fe?c:new fr(c instanceof Error?c.message:c))}};let i=t&&setTimeout(()=>{i=null,o(new fe(`timeout ${t} of ms exceeded`,fe.ETIMEDOUT))},t);const a=()=>{e&&(i&&clearTimeout(i),i=null,e.forEach(u=>{u.unsubscribe?u.unsubscribe(o):u.removeEventListener("abort",o)}),e=null)};e.forEach(u=>u.addEventListener("abort",o));const{signal:l}=r;return l.unsubscribe=()=>T.asap(a),l}},Cv=function*(e,t){let n=e.byteLength;if(n{const s=kv(e,t);let o=0,i,a=l=>{i||(i=!0,r&&r(l))};return new ReadableStream({async pull(l){try{const{done:u,value:c}=await s.next();if(u){a(),l.close();return}let f=c.byteLength;if(n){let d=o+=f;n(d)}l.enqueue(new Uint8Array(c))}catch(u){throw a(u),u}},cancel(l){return a(l),s.return()}},{highWaterMark:2})},Co=typeof fetch=="function"&&typeof Request=="function"&&typeof Response=="function",pd=Co&&typeof ReadableStream=="function",Av=Co&&(typeof TextEncoder=="function"?(e=>t=>e.encode(t))(new TextEncoder):async e=>new Uint8Array(await new Response(e).arrayBuffer())),gd=(e,...t)=>{try{return!!e(...t)}catch{return!1}},Rv=pd&&gd(()=>{let e=!1;const t=new Request(Ze.origin,{body:new ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t}),lc=64*1024,$i=pd&&gd(()=>T.isReadableStream(new Response("").body)),eo={stream:$i&&(e=>e.body)};Co&&(e=>{["text","arrayBuffer","blob","formData","stream"].forEach(t=>{!eo[t]&&(eo[t]=T.isFunction(e[t])?n=>n[t]():(n,r)=>{throw new fe(`Response type '${t}' is not supported`,fe.ERR_NOT_SUPPORT,r)})})})(new Response);const Pv=async e=>{if(e==null)return 0;if(T.isBlob(e))return e.size;if(T.isSpecCompliantForm(e))return(await new Request(Ze.origin,{method:"POST",body:e}).arrayBuffer()).byteLength;if(T.isArrayBufferView(e)||T.isArrayBuffer(e))return e.byteLength;if(T.isURLSearchParams(e)&&(e=e+""),T.isString(e))return(await Av(e)).byteLength},Ov=async(e,t)=>{const n=T.toFiniteNumber(e.getContentLength());return n??Pv(t)},$v=Co&&(async e=>{let{url:t,method:n,data:r,signal:s,cancelToken:o,timeout:i,onDownloadProgress:a,onUploadProgress:l,responseType:u,headers:c,withCredentials:f="same-origin",fetchOptions:d}=md(e);u=u?(u+"").toLowerCase():"text";let h=xv([s,o&&o.toAbortSignal()],i),m;const w=h&&h.unsubscribe&&(()=>{h.unsubscribe()});let _;try{if(l&&Rv&&n!=="get"&&n!=="head"&&(_=await Ov(c,r))!==0){let S=new Request(t,{method:"POST",body:r,duplex:"half"}),P;if(T.isFormData(r)&&(P=S.headers.get("content-type"))&&c.setContentType(P),S.body){const[D,x]=sc(_,Qs(oc(l)));r=ac(S.body,lc,D,x)}}T.isString(f)||(f=f?"include":"omit");const b="credentials"in Request.prototype;m=new Request(t,{...d,signal:h,method:n.toUpperCase(),headers:c.normalize().toJSON(),body:r,duplex:"half",credentials:b?f:void 0});let y=await fetch(m,d);const p=$i&&(u==="stream"||u==="response");if($i&&(a||p&&w)){const S={};["status","statusText","headers"].forEach(A=>{S[A]=y[A]});const P=T.toFiniteNumber(y.headers.get("content-length")),[D,x]=a&&sc(P,Qs(oc(a),!0))||[];y=new Response(ac(y.body,lc,D,()=>{x&&x(),w&&w()}),S)}u=u||"text";let k=await eo[T.findKey(eo,u)||"text"](y,e);return!p&&w&&w(),await new Promise((S,P)=>{dd(S,P,{data:k,headers:at.from(y.headers),status:y.status,statusText:y.statusText,config:e,request:m})})}catch(b){throw w&&w(),b&&b.name==="TypeError"&&/Load failed|fetch/i.test(b.message)?Object.assign(new fe("Network Error",fe.ERR_NETWORK,e,m),{cause:b.cause||b}):fe.from(b,b&&b.code,e,m)}}),Fi={http:Gy,xhr:Sv,fetch:$v};T.forEach(Fi,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});const cc=e=>`- ${e}`,Fv=e=>T.isFunction(e)||e===null||e===!1,yd={getAdapter:e=>{e=T.isArray(e)?e:[e];const{length:t}=e;let n,r;const s={};for(let o=0;o`adapter ${a} `+(l===!1?"is not supported by the environment":"is not available in the build"));let i=t?o.length>1?`since : +`+o.map(cc).join(` +`):" "+cc(o[0]):"as no adapter specified";throw new fe("There is no suitable adapter to dispatch the request "+i,"ERR_NOT_SUPPORT")}return r},adapters:Fi};function Yo(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new fr(null,e)}function uc(e){return Yo(e),e.headers=at.from(e.headers),e.data=Ko.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),yd.getAdapter(e.adapter||cs.adapter)(e).then(function(r){return Yo(e),r.data=Ko.call(e,e.transformResponse,r),r.headers=at.from(r.headers),r},function(r){return fd(r)||(Yo(e),r&&r.response&&(r.response.data=Ko.call(e,e.transformResponse,r.response),r.response.headers=at.from(r.response.headers))),Promise.reject(r)})}const vd="1.11.0",ko={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{ko[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}});const fc={};ko.transitional=function(t,n,r){function s(o,i){return"[Axios v"+vd+"] Transitional option '"+o+"'"+i+(r?". "+r:"")}return(o,i,a)=>{if(t===!1)throw new fe(s(i," has been removed"+(n?" in "+n:"")),fe.ERR_DEPRECATED);return n&&!fc[i]&&(fc[i]=!0,console.warn(s(i," has been deprecated since v"+n+" and will be removed in the near future"))),t?t(o,i,a):!0}};ko.spelling=function(t){return(n,r)=>(console.warn(`${r} is likely a misspelling of ${t}`),!0)};function Lv(e,t,n){if(typeof e!="object")throw new fe("options must be an object",fe.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let s=r.length;for(;s-- >0;){const o=r[s],i=t[o];if(i){const a=e[o],l=a===void 0||i(a,o,e);if(l!==!0)throw new fe("option "+o+" must be "+l,fe.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new fe("Unknown option "+o,fe.ERR_BAD_OPTION)}}const Ps={assertOptions:Lv,validators:ko},$t=Ps.validators;let Mn=class{constructor(t){this.defaults=t||{},this.interceptors={request:new nc,response:new nc}}async request(t,n){try{return await this._request(t,n)}catch(r){if(r instanceof Error){let s={};Error.captureStackTrace?Error.captureStackTrace(s):s=new Error;const o=s.stack?s.stack.replace(/^.+\n/,""):"";try{r.stack?o&&!String(r.stack).endsWith(o.replace(/^.+\n.+\n/,""))&&(r.stack+=` +`+o):r.stack=o}catch{}}throw r}}_request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=Vn(this.defaults,n);const{transitional:r,paramsSerializer:s,headers:o}=n;r!==void 0&&Ps.assertOptions(r,{silentJSONParsing:$t.transitional($t.boolean),forcedJSONParsing:$t.transitional($t.boolean),clarifyTimeoutError:$t.transitional($t.boolean)},!1),s!=null&&(T.isFunction(s)?n.paramsSerializer={serialize:s}:Ps.assertOptions(s,{encode:$t.function,serialize:$t.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),Ps.assertOptions(n,{baseUrl:$t.spelling("baseURL"),withXsrfToken:$t.spelling("withXSRFToken")},!0),n.method=(n.method||this.defaults.method||"get").toLowerCase();let i=o&&T.merge(o.common,o[n.method]);o&&T.forEach(["delete","get","head","post","put","patch","common"],m=>{delete o[m]}),n.headers=at.concat(i,o);const a=[];let l=!0;this.interceptors.request.forEach(function(w){typeof w.runWhen=="function"&&w.runWhen(n)===!1||(l=l&&w.synchronous,a.unshift(w.fulfilled,w.rejected))});const u=[];this.interceptors.response.forEach(function(w){u.push(w.fulfilled,w.rejected)});let c,f=0,d;if(!l){const m=[uc.bind(this),void 0];for(m.unshift(...a),m.push(...u),d=m.length,c=Promise.resolve(n);f{if(!r._listeners)return;let o=r._listeners.length;for(;o-- >0;)r._listeners[o](s);r._listeners=null}),this.promise.then=s=>{let o;const i=new Promise(a=>{r.subscribe(a),o=a}).then(s);return i.cancel=function(){r.unsubscribe(o)},i},t(function(o,i,a){r.reason||(r.reason=new fr(o,i,a),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const t=new AbortController,n=r=>{t.abort(r)};return this.subscribe(n),t.signal.unsubscribe=()=>this.unsubscribe(n),t.signal}static source(){let t;return{token:new bd(function(s){t=s}),cancel:t}}};function Dv(e){return function(n){return e.apply(null,n)}}function Iv(e){return T.isObject(e)&&e.isAxiosError===!0}const Li={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(Li).forEach(([e,t])=>{Li[t]=e});function wd(e){const t=new Mn(e),n=Jf(Mn.prototype.request,t);return T.extend(n,Mn.prototype,t,{allOwnKeys:!0}),T.extend(n,t,null,{allOwnKeys:!0}),n.create=function(s){return wd(Vn(e,s))},n}const De=wd(cs);De.Axios=Mn;De.CanceledError=fr;De.CancelToken=Mv;De.isCancel=fd;De.VERSION=vd;De.toFormData=xo;De.AxiosError=fe;De.Cancel=De.CanceledError;De.all=function(t){return Promise.all(t)};De.spread=Dv;De.isAxiosError=Iv;De.mergeConfig=Vn;De.AxiosHeaders=at;De.formToJSON=e=>ud(T.isHTMLForm(e)?new FormData(e):e);De.getAdapter=yd.getAdapter;De.HttpStatusCode=Li;De.default=De;const{Axios:E_,AxiosError:S_,CanceledError:x_,isCancel:C_,CancelToken:k_,VERSION:T_,all:A_,Cancel:R_,isAxiosError:P_,spread:O_,toFormData:$_,AxiosHeaders:F_,HttpStatusCode:L_,formToJSON:M_,getAdapter:D_,mergeConfig:I_}=De,H=De.create({baseURL:"http://localhost:8080",timeout:1e4,headers:{"Content-Type":"application/json",Accept:"application/json"}});H.interceptors.request.use(e=>{const t=localStorage.getItem("token");return t&&(e.headers.Authorization=`Bearer ${t}`),e},e=>Promise.reject(e));H.interceptors.response.use(e=>e,async e=>{var t;return((t=e.response)==null?void 0:t.status)===401&&(localStorage.removeItem("token"),localStorage.removeItem("refreshToken"),localStorage.removeItem("user"),window.location.href="/login"),Promise.reject(e)});class lt{constructor(t){this.endpoint=t}async getAll(t={}){try{return(await H.get(this.endpoint,{params:t})).data}catch(n){throw this.handleError(n)}}async getById(t){try{return(await H.get(`${this.endpoint}/${t}`)).data}catch(n){throw this.handleError(n)}}async create(t){try{return(await H.post(this.endpoint,t)).data}catch(n){throw this.handleError(n)}}async update(t,n){try{return(await H.put(`${this.endpoint}/${t}`,n)).data}catch(r){throw this.handleError(r)}}async patch(t,n){try{return(await H.patch(`${this.endpoint}/${t}`,n)).data}catch(r){throw this.handleError(r)}}async delete(t){try{return(await H.delete(`${this.endpoint}/${t}`)).data}catch(n){throw this.handleError(n)}}async get(t,n={}){try{const r=t.startsWith("/")?t:`${this.endpoint}/${t}`;return(await H.get(r,n)).data}catch(r){throw this.handleError(r)}}async post(t,n=null,r={}){try{const s=t.startsWith("/")?t:`${this.endpoint}/${t}`;return(await H.post(s,n,r)).data}catch(s){throw this.handleError(s)}}async put(t,n=null,r={}){try{const s=t.startsWith("/")?t:`${this.endpoint}/${t}`;return(await H.put(s,n,r)).data}catch(s){throw this.handleError(s)}}async request(t,n="GET",r=null,s={}){try{const o=t.startsWith("/")?`${this.endpoint}${t}`:`${this.endpoint}/${t}`;let i;switch(n.toUpperCase()){case"GET":i=await H.get(o,s);break;case"POST":i=await H.post(o,r,s);break;case"PUT":i=await H.put(o,r,s);break;case"PATCH":i=await H.patch(o,r,s);break;case"DELETE":i=await H.delete(o,s);break;default:throw new Error(`Unsupported HTTP method: ${n}`)}return i.data}catch(o){throw this.handleError(o)}}handleError(t){if(t.response){const{status:n,data:r}=t.response;return{status:n,message:r.message||r.error||"An error occurred",details:r.details||null}}else return t.request?{status:0,message:"Network error - unable to reach server",details:null}:{status:0,message:t.message||"An unexpected error occurred",details:null}}}class Nv extends lt{constructor(){super("/auth")}async login(t){try{return(await H.post("/auth/signin",{email:t.email,password:t.password,type:"client"})).data}catch(n){throw this.handleError(n)}}async register(t){var n,r;try{const s={firstName:t.firstName,lastName:t.lastName,email:t.email,password:t.password,phone:t.phone};return(n=t.companyName)!=null&&n.trim()&&(s.companyName=t.companyName.trim()),t.employeesCount&&(s.employeesCount=t.employeesCount),(r=t.language)!=null&&r.trim()&&(s.language=t.language.trim().toUpperCase()),t.subscriptionPlanId&&(s.subscriptionPlanId=t.subscriptionPlanId),t.role&&(s.role=t.role),(await H.post("/auth/signup",s)).data}catch(s){throw this.handleError(s)}}async logout(){try{return(await H.post("/auth/logout")).data}catch(t){throw this.handleError(t)}}async refreshToken(t){try{return(await H.post("/auth/refresh",{refreshToken:t})).data}catch(n){throw this.handleError(n)}}async forgotPassword(t){try{return(await H.post("/auth/forgot-password",{email:t})).data}catch(n){throw this.handleError(n)}}async resetPassword(t,n){try{return(await H.post("/auth/reset-password",{token:t,password:n})).data}catch(r){throw this.handleError(r)}}async getCurrentUser(){try{return(await H.get("/users/me")).data}catch(t){throw this.handleError(t)}}}const Mi=async e=>{const t={isValid:!1,size:e.size,type:e.type,hasCorrectMimeType:!1,hasCorrectHeader:!1,errors:[]};try{if(t.hasCorrectMimeType=e.type==="application/pdf",t.hasCorrectMimeType||t.errors.push(`Incorrect MIME type: ${e.type}, expected: application/pdf`),e.size===0)return t.errors.push("PDF blob is empty (0 bytes)"),t;e.size<100&&t.errors.push(`PDF blob suspiciously small (${e.size} bytes)`);const n=await e.slice(0,10).arrayBuffer(),r=new Uint8Array(n),s=String.fromCharCode.apply(null,r);t.hasCorrectHeader=s.startsWith("%PDF-"),t.hasCorrectHeader||t.errors.push(`Invalid PDF header: ${s}, expected: %PDF-`),t.isValid=t.hasCorrectMimeType&&t.hasCorrectHeader&&t.size>0}catch(n){t.errors.push(`Validation error: ${n.message}`)}return t},Bv=async(e,t)=>{try{const n=await Mi(e);if(!n.isValid)throw console.error("PDF validation failed:",n.errors),new Error(`PDF is corrupted: ${n.errors.join(", ")}`);console.log("PDF validation passed:",n);const r=window.URL.createObjectURL(e);try{const s=document.createElement("a");return s.href=r,s.download=t,s.target="_blank",s.setAttribute("aria-label",`Download PDF: ${t}`),s.style.display="none",document.body.appendChild(s),s.click(),document.body.removeChild(s),console.log("PDF download initiated successfully"),!0}finally{setTimeout(()=>{window.URL.revokeObjectURL(r),console.log("Object URL cleaned up")},1e3)}}catch(n){throw console.error("Safe PDF download failed:",n),n}},xn=(e,t)=>{console.group(`🔍 PDF Debug: ${e}`),t.blob&&console.log("📄 Blob Info:",{size:t.blob.size,type:t.blob.type}),t.response&&console.log("🌐 Response Info:",{status:t.response.status,contentType:t.response.headers.get("content-type"),contentLength:t.response.headers.get("content-length")}),t.validation&&console.log("✅ Validation:",t.validation),t.errors&&t.errors.length>0&&console.error("❌ Errors:",t.errors),console.groupEnd()},Vv=e=>{var s;const{workOrder:t,config:n}=e,r=jv({title:n.title||"Work Order Report",workOrderId:t.id||"WO-DEMO",workOrderTitle:t.title||"Sample Work Order",description:t.description||"This is a demonstration work order report generated without backend connection.",status:t.status||"In Progress",priority:t.priority||"Medium",assignedTo:((s=t.assignedTo)==null?void 0:s.name)||"Demo User",createdDate:new Date(t.createdAt||Date.now()).toLocaleDateString(),sections:n.sections||{}});return new Blob([r],{type:"application/pdf"})},jv=e=>{const t=h=>String(h||"").replace(/[()\\]/g,"\\$&").replace(/[\r\n]/g," "),n=t(e.title),r=t(e.workOrderId),s=t(e.workOrderTitle),o=t(e.status),i=t(e.priority),a=t(e.assignedTo),l=t(e.createdDate),u=t(e.description).substring(0,200),c=`BT +/F1 18 Tf +50 750 Td +(${n}) Tj +0 -30 Td +/F1 12 Tf +(Work Order ID: ${r}) Tj +0 -20 Td +(Title: ${s}) Tj +0 -20 Td +(Status: ${o}) Tj +0 -20 Td +(Priority: ${i}) Tj +0 -20 Td +(Assigned To: ${a}) Tj +0 -20 Td +(Created: ${l}) Tj +0 -40 Td +/F1 14 Tf +(Description:) Tj +0 -20 Td +/F1 12 Tf +(${u}) Tj +0 -40 Td +/F1 10 Tf +(Generated: ${new Date().toLocaleString()}) Tj +0 -20 Td +(Note: This is a demonstration PDF generated without backend connection.) Tj +ET`,f=c.length;return`%PDF-1.4 +1 0 obj +<< +/Type /Catalog +/Pages 2 0 R +>> +endobj + +2 0 obj +<< +/Type /Pages +/MediaBox [0 0 612 792] +/Count 1 +/Kids [3 0 R] +>> +endobj + +3 0 obj +<< +/Type /Page +/Parent 2 0 R +/Resources << + /Font << + /F1 4 0 R + >> +>> +/Contents 5 0 R +>> +endobj + +4 0 obj +<< +/Type /Font +/Subtype /Type1 +/BaseFont /Times-Roman +>> +endobj + +5 0 obj +<< +/Length ${f} +>> +stream +${c} +endstream +endobj + +xref +0 6 +0000000000 65535 f +0000000010 00000 n +0000000079 00000 n +0000000173 00000 n +0000000301 00000 n +0000000380 00000 n +trailer +<< +/Size 6 +/Root 1 0 R +>> +startxref +${800+f} +%%EOF`},dc=async e=>(console.log("🎭 Generating simple PDF (jsPDF not installed)"),Vv(e)),Hv=(e="WO-DEMO-001")=>({id:e,title:"HVAC System Maintenance",description:"Routine maintenance and inspection of the main HVAC system including filter replacement, duct cleaning, and performance testing. This work order includes checking all components for proper operation and identifying any potential issues.",status:"In Progress",priority:"High",category:"Preventive Maintenance",assignedTo:{id:1,name:"John Maintenance",email:"john.maintenance@demo.com"},asset:{id:1,name:"Main HVAC Unit",model:"ThermoMax 3000",serialNumber:"TM3000-2021-001"},location:{id:1,name:"Building A - Mechanical Room",address:"123 Demo Street"},createdAt:new Date("2024-01-15T10:00:00Z"),updatedAt:new Date,estimatedHours:4,actualHours:2.5,parts:[{name:"Air Filter",quantity:4,unitCost:25.99,totalCost:103.96},{name:"Lubricant",quantity:1,unitCost:15.5,totalCost:15.5}],tasks:[{name:"Replace air filters",completed:!0},{name:"Clean air ducts",completed:!0},{name:"Check refrigerant levels",completed:!1},{name:"Test system performance",completed:!1}],costTracking:{costs:[{id:1,description:"Additional cleaning supplies",amount:45.5,category:"Material"},{id:2,description:"Contractor labor - specialist",amount:150,category:"Labor"},{id:3,description:"Equipment rental",amount:75,category:"Other"}],budget:500},totalCost:389.96,budget:500}),Uv=(e=1500)=>new Promise(t=>setTimeout(t,e)),qv=async(e,t="pdf")=>{switch(await Uv(1e3),t.toLowerCase()){case"pdf":return dc(e);case"html":return zv(e);case"json":return Wv(e);default:return dc(e)}},zv=e=>{var s;const{workOrder:t,config:n}=e,r=` + + + + ${n.title||"Work Order Report"} + + + +
+

${n.title||"Work Order Report"}

+
+ +
+
Work Order ID: ${t.id||"WO-DEMO"}
+
Title: ${t.title||"Sample Work Order"}
+
Status: ${t.status||"In Progress"}
+
Priority: ${t.priority||"Medium"}
+
Assigned To: ${((s=t.assignedTo)==null?void 0:s.name)||"Demo User"}
+
Created: ${new Date(t.createdAt||Date.now()).toLocaleDateString()}
+
+ +
+

Description

+
+ ${t.description||"This is a demonstration work order report generated without backend connection."} +
+
+ + + +`;return new Blob([r],{type:"text/html"})},Wv=e=>{const t={report:{title:e.config.title||"Work Order Report",generatedAt:new Date().toISOString(),format:"json"},workOrder:e.workOrder,configuration:e.config,meta:{note:"This is a demonstration report generated without backend connection."}};return new Blob([JSON.stringify(t,null,2)],{type:"application/json"})};class Gv extends lt{constructor(){super("/work-orders")}async search(t={}){try{return(await H.post(`${this.endpoint}/search`,{criteria:{page:0,size:10,direction:"DESC",sortBy:"createdAt",...t}})).data}catch(n){throw this.handleError(n)}}async searchMini(t={}){try{return(await H.post(`${this.endpoint}/search/mini`,{criteria:t})).data}catch(n){throw this.handleError(n)}}async getCalendarEvents(t,n){try{return(await H.post(`${this.endpoint}/events`,{start:t.toISOString(),end:n.toISOString()})).data}catch(r){throw this.handleError(r)}}async getByAsset(t){try{return(await H.get(`${this.endpoint}/asset/${t}`)).data}catch(n){throw this.handleError(n)}}async getByLocation(t){try{return(await H.get(`${this.endpoint}/location/${t}`)).data}catch(n){throw this.handleError(n)}}async getByPart(t){try{return(await H.get(`${this.endpoint}/part/${t}`)).data}catch(n){throw this.handleError(n)}}async getUrgentCount(){try{return(await H.get(`${this.endpoint}/urgent`)).data}catch(t){throw this.handleError(t)}}async generateReport(t,n={}){try{xn("Starting PDF generation",{workOrderId:t,options:n});try{const a=await H.get(`${this.endpoint}/report/${t}`,{responseType:"blob",headers:{Accept:"application/pdf","Content-Type":"application/json"},params:n,timeout:5e3,transformResponse:[l=>l]});if(a.data&&a.data.size>0){let l=new Blob([a.data],{type:"application/pdf"});const u=await Mi(l);if(u.isValid)return xn("Real PDF generated successfully",{validation:u}),l}}catch(a){console.warn("Backend API not available, switching to mock generation:",a.message)}console.log("🎭 Using mock PDF generation (no backend connection)");let r;try{r=await this.getById(t)}catch{console.log("Using sample work order data for demo"),r=Hv(t)}const s={workOrder:r,config:{title:n.title||"Work Order Report",format:n.format||"pdf",sections:n.sections||{basicInfo:!0,description:!0,assignment:!0,tasks:!0,parts:!0,costs:!0},...n}},o=await qv(s,n.format||"pdf"),i=await Mi(o);if(xn("Mock PDF generated",{validation:i,mock:!0}),!i.isValid)throw new Error("Mock PDF generation failed validation");return o}catch(r){throw console.error("PDF generation error:",r),xn("PDF generation failed",{errors:[r.message]}),this.handleError(r)}}async downloadReport(t,n={},r=null){try{xn("Starting PDF download",{workOrderId:t,options:n,filename:r});const s=await this.generateReport(t,n),o=r||`work-order-${t}-report-${Date.now()}.pdf`,i=await Bv(s,o);return xn("PDF download completed",{success:i,filename:o}),i}catch(s){throw console.error("PDF download error:",s),xn("PDF download failed",{errors:[s.message]}),this.handleError(s)}}async create(t){try{return(await H.post(this.endpoint,{title:t.title,description:t.description||"",priority:t.priority||"NONE",asset:t.asset||null,location:t.location||null,primaryUser:t.primaryUser||null,assignedTo:t.assignedTo||[],team:t.team||null,category:t.category||null,dueDate:t.dueDate||null,estimatedDuration:t.estimatedDuration||null,requiredSignature:t.requiredSignature||!1,tasks:t.tasks||[],files:t.files||[],image:t.image||null})).data}catch(n){throw this.handleError(n)}}async changeStatus(t,n,r="",s=null){try{return(await H.patch(`${this.endpoint}/${t}/change-status`,{status:n,feedback:r,signature:s})).data}catch(o){throw this.handleError(o)}}async addFiles(t,n){try{return(await H.patch(`${this.endpoint}/files/${t}/add`,{files:n})).data}catch(r){throw this.handleError(r)}}async removeFile(t,n){try{return(await H.delete(`${this.endpoint}/files/${t}/${n}/remove`)).data}catch(r){throw this.handleError(r)}}async getWorkOrdersByStatus(t){return this.search({filterFields:[{field:"status",operation:"EQUAL",values:[t]}]})}async getWorkOrdersByPriority(t){return this.search({filterFields:[{field:"priority",operation:"EQUAL",values:[t]}]})}async getWorkOrdersByAssignee(t){return this.search({filterFields:[{field:"assignedTo",operation:"EQUAL",values:[t]}]})}async assignWorkOrder(t,n){return this.update(t,{assignedTo:[{id:n}]})}async updateStatus(t,n,r=""){return this.changeStatus(t,n,r)}}class Kv extends lt{constructor(){super("/assets")}async getAssetsByLocation(t){try{return(await H.get(`${this.endpoint}`,{params:{locationId:t}})).data}catch(n){throw this.handleError(n)}}async getAssetsByCategory(t){try{return(await H.get(`${this.endpoint}`,{params:{categoryId:t}})).data}catch(n){throw this.handleError(n)}}async getAssetHistory(t){try{return(await H.get(`${this.endpoint}/${t}/history`)).data}catch(n){throw this.handleError(n)}}async getAssetWorkOrders(t){try{return(await H.get(`${this.endpoint}/${t}/work-orders`)).data}catch(n){throw this.handleError(n)}}async updateAssetStatus(t,n){try{return(await H.patch(`${this.endpoint}/${t}/status`,{status:n})).data}catch(r){throw this.handleError(r)}}async addAssetReading(t,n){try{return(await H.post(`${this.endpoint}/${t}/readings`,{meter:n.meter,value:n.value,unit:n.unit,readingDate:n.readingDate})).data}catch(r){throw this.handleError(r)}}async getAssetReadings(t){try{return(await H.get(`${this.endpoint}/${t}/readings`)).data}catch(n){throw this.handleError(n)}}async addAssetFile(t,n){try{const r=new FormData;return r.append("file",n.file),r.append("name",n.name),r.append("description",n.description||""),(await H.post(`${this.endpoint}/${t}/files`,r,{headers:{"Content-Type":"multipart/form-data"}})).data}catch(r){throw this.handleError(r)}}async getAssetFiles(t){try{return(await H.get(`${this.endpoint}/${t}/files`)).data}catch(n){throw this.handleError(n)}}}class Yv extends lt{constructor(){super("/users")}async searchUsers(t={}){try{const n={criteria:{filterFields:t.filterFields||[],searchFields:t.searchFields||["firstName","lastName","email","phone","jobTitle"],searchValue:t.searchValue||"",page:t.page||0,size:t.size||10,direction:t.direction||"ASC",sortBy:t.sortBy||"lastName"}};return(await H.post(`${this.endpoint}/search`,n)).data}catch(n){throw this.handleError(n)}}async getUsersMini(){try{return(await H.get(`${this.endpoint}/mini`)).data}catch(t){throw this.handleError(t)}}async getDisabledUsers(){try{return(await H.get(`${this.endpoint}/mini/disabled`)).data}catch(t){throw this.handleError(t)}}async getUsersByRole(t){try{return(await H.get(`${this.endpoint}`,{params:{role:t}})).data}catch(n){throw this.handleError(n)}}async updateUserRole(t,n){try{return(await H.patch(`${this.endpoint}/${t}/role`,{role:n})).data}catch(r){throw this.handleError(r)}}async toggleUserStatus(t){try{return(await H.patch(`${this.endpoint}/${t}/disable`)).data}catch(n){throw this.handleError(n)}}async updateUserStatus(t,n){try{return(await H.patch(`${this.endpoint}/${t}/status`,{enabled:n})).data}catch(r){throw this.handleError(r)}}async inviteUsers(t,n,r=""){try{return(await H.post(`${this.endpoint}/invite`,{emails:t,role:n,message:r})).data}catch(s){throw this.handleError(s)}}async getUserTeams(t){try{return(await H.get(`${this.endpoint}/${t}/teams`)).data}catch(n){throw this.handleError(n)}}async addUserToTeam(t,n){try{return(await H.post(`${this.endpoint}/${t}/teams`,{teamId:n})).data}catch(r){throw this.handleError(r)}}async removeUserFromTeam(t,n){try{return(await H.delete(`${this.endpoint}/${t}/teams/${n}`)).data}catch(r){throw this.handleError(r)}}async updateProfile(t,n){try{return(await H.patch(`${this.endpoint}/${t}`,{firstName:n.firstName,lastName:n.lastName,email:n.email,phone:n.phone,jobTitle:n.jobTitle,rate:n.rate,image:n.image})).data}catch(r){throw this.handleError(r)}}async changePassword(t,n){try{return(await H.patch(`${this.endpoint}/${t}/password`,{currentPassword:n.currentPassword,newPassword:n.newPassword})).data}catch(r){throw this.handleError(r)}}}class Jv extends lt{constructor(){super("/files")}async upload(t,n=null){try{const r=new FormData;if(t instanceof FileList)for(let o=0;o{r.append("files",o)}):r.append("files",t);return n&&r.append("folder",n),(await H.post(`${this.endpoint}/upload`,r,{headers:{"Content-Type":"multipart/form-data"}})).data}catch(r){throw this.handleError(r)}}async search(t={}){try{return(await H.post(`${this.endpoint}/search`,{criteria:{page:0,size:10,direction:"DESC",sortBy:"createdAt",...t}})).data}catch(n){throw this.handleError(n)}}async updateMetadata(t,n){try{return(await H.patch(`${this.endpoint}/${t}`,{name:n.name,description:n.description})).data}catch(r){throw this.handleError(r)}}getDownloadUrl(t){return`${H.defaults.baseURL}${this.endpoint}/${t}`}async download(t){try{return(await H.get(`${this.endpoint}/${t}`,{responseType:"blob"})).data}catch(n){throw this.handleError(n)}}}class Zv extends lt{constructor(){super("/locations")}async searchLocations(t={}){var n;try{const r={criteria:{filterFields:t.filterFields||[],searchFields:t.searchFields||["name","description","address"],searchValue:t.searchValue||"",page:t.page||0,size:t.size||10,direction:t.direction||"ASC",sortBy:t.sortBy||"name"}};return(await H.post(`${this.endpoint}/search`,r)).data}catch(r){if((n=r.message)!=null&&n.includes("Network error")||r.code==="ECONNREFUSED")return this.getMockSearchResults(t);throw this.handleError(r)}}async getAll(){try{return(await H.get(`${this.endpoint}`)).data}catch(t){throw this.handleError(t)}}async getLocationsMini(){var t;try{return(await H.get(`${this.endpoint}/mini`)).data}catch(n){if((t=n.message)!=null&&t.includes("Network error")||n.code==="ECONNREFUSED")return this.getMockMiniLocations();throw this.handleError(n)}}async getChildren(t){try{return(await H.get(`${this.endpoint}/children/${t}`)).data}catch(n){throw this.handleError(n)}}async create(t){try{return(await H.post(`${this.endpoint}`,{name:t.name,description:t.description,address:t.address,longitude:t.longitude,latitude:t.latitude,parentLocation:t.parentLocation,files:t.files,image:t.image,workers:t.workers,teams:t.teams,customers:t.customers,vendors:t.vendors})).data}catch(n){throw this.handleError(n)}}async update(t,n){try{return(await H.patch(`${this.endpoint}/${t}`,{name:n.name,description:n.description,address:n.address,longitude:n.longitude,latitude:n.latitude,parentLocation:n.parentLocation,files:n.files,image:n.image,workers:n.workers,teams:n.teams,customers:n.customers,vendors:n.vendors})).data}catch(r){throw this.handleError(r)}}async delete(t){try{return(await H.delete(`${this.endpoint}/${t}`)).data}catch(n){throw this.handleError(n)}}async getById(t){try{return(await H.get(`${this.endpoint}/${t}`)).data}catch(n){throw this.handleError(n)}}async search(t={}){return this.searchLocations(t)}async getMini(){return this.getLocationsMini()}getMockSearchResults(t={}){const n=[{id:1,name:"Main Building",description:"Primary office building with administration",type:"building",status:"active",address:"123 Main St, City, State 12345",latitude:40.7128,longitude:-74.006,parentLocation:null,assetsCount:15,workOrdersCount:8,teams:[{id:1,name:"Facilities Team"}],workers:[{id:1,firstName:"John",lastName:"Doe"},{id:2,firstName:"Jane",lastName:"Smith"}]},{id:2,name:"Floor 1",description:"Ground floor with reception and meeting rooms",type:"floor",status:"active",address:"123 Main St, Floor 1, City, State 12345",latitude:null,longitude:null,parentLocation:{id:1,name:"Main Building"},assetsCount:8,workOrdersCount:3,teams:[{id:2,name:"Maintenance Team"}],workers:[{id:3,firstName:"Mike",lastName:"Johnson"}]},{id:3,name:"Conference Room A",description:"Large conference room with AV equipment",type:"room",status:"active",address:null,latitude:null,longitude:null,parentLocation:{id:2,name:"Floor 1"},assetsCount:5,workOrdersCount:1,teams:[],workers:[]},{id:4,name:"Warehouse",description:"Storage and inventory warehouse",type:"building",status:"active",address:"456 Storage Ave, City, State 12345",latitude:40.7589,longitude:-73.9851,parentLocation:null,assetsCount:25,workOrdersCount:12,teams:[{id:3,name:"Security Team"}],workers:[{id:4,firstName:"Sarah",lastName:"Wilson"}]},{id:5,name:"Server Room",description:"IT infrastructure and server equipment",type:"equipment_space",status:"active",address:null,latitude:null,longitude:null,parentLocation:{id:2,name:"Floor 1"},assetsCount:12,workOrdersCount:2,teams:[{id:1,name:"Facilities Team"}],workers:[]}];let r=n;if(t.searchValue){const u=t.searchValue.toLowerCase();r=n.filter(c=>{var f,d;return c.name.toLowerCase().includes(u)||((f=c.description)==null?void 0:f.toLowerCase().includes(u))||((d=c.address)==null?void 0:d.toLowerCase().includes(u))})}const s=t.page||0,o=t.size||10,i=s*o,a=i+o;return{content:r.slice(i,a),totalElements:r.length,totalPages:Math.ceil(r.length/o),currentPage:s,pageSize:o,first:s===0,last:s>=Math.ceil(r.length/o)-1}}getMockMiniLocations(){return[{id:1,name:"Main Building"},{id:2,name:"Floor 1"},{id:4,name:"Warehouse"}]}}class Xv extends lt{constructor(){super("/teams")}async search(t={}){try{const n={criteria:{filterFields:t.filterFields||[],searchFields:t.searchFields||["name","description"],searchValue:t.searchValue||"",page:t.page||0,size:t.size||10,direction:t.direction||"ASC",sortBy:t.sortBy||"name"}};return(await H.post(`${this.endpoint}/search`,n)).data}catch(n){throw this.handleError(n)}}async getMini(){try{return(await H.get(`${this.endpoint}/mini`)).data}catch(t){throw this.handleError(t)}}async create(t){try{return(await H.post(this.endpoint,{name:t.name,description:t.description||"",users:t.users||[]})).data}catch(n){throw this.handleError(n)}}async update(t,n){try{return(await H.patch(`${this.endpoint}/${t}`,{name:n.name,description:n.description,users:n.users})).data}catch(r){throw this.handleError(r)}}async delete(t){try{return(await H.delete(`${this.endpoint}/${t}`)).data}catch(n){throw this.handleError(n)}}async addUserToTeam(t,n){try{const r=await this.getById(t),s=r.users||[];if(s.some(a=>a.id===n))throw new Error("User is already a member of this team");const i=[...s,{id:n}];return await this.update(t,{...r,users:i})}catch(r){throw this.handleError(r)}}async removeUserFromTeam(t,n){try{const r=await this.getById(t),o=(r.users||[]).filter(i=>i.id!==n);return await this.update(t,{...r,users:o})}catch(r){throw this.handleError(r)}}async updateTeamMembership(t,n){try{const r=await this.getById(t),s=n.map(o=>({id:o}));return await this.update(t,{...r,users:s})}catch(r){throw this.handleError(r)}}}class Qv extends lt{constructor(){super("/parts")}async search(t={}){return await this.request("/search","POST",{criteria:{page:0,size:100,direction:"ASC",sortBy:"partNumber",...t}})}async getLowStock(t=10){return await this.request("/low-stock","GET",null,{params:{threshold:t}})}async checkAvailability(t,n){return await this.request(`/${t}/availability`,"GET",null,{params:{quantity:n}})}async reserveParts(t,n){return await this.request("/reserve","POST",{workOrderId:t,parts:n})}async releaseParts(t){return await this.request(`/reserve/${t}`,"DELETE")}async updateInventory(t,n,r="Manual adjustment"){return await this.request(`/${t}/inventory`,"POST",{quantity:n,reason:r})}async getHistory(t){return await this.request(`/${t}/history`,"GET")}async getByLocation(t){return await this.request(`/location/${t}`,"GET")}async getByCategory(t){return await this.request(`/category/${t}`,"GET")}}class e1 extends lt{constructor(){super("/time-entries")}async getByWorkOrderId(t){return this.request(`/work-order/${t}`,"GET")}async create(t){return this.request("/","POST",t)}async update(t,n){return this.request(`/${t}`,"PUT",n)}async delete(t){return await this.request(`/${t}`,"DELETE"),!0}async getByUserId(t,n={}){const r=new URLSearchParams;n.startDate&&r.append("startDate",n.startDate),n.endDate&&r.append("endDate",n.endDate),n.workOrderId&&r.append("workOrderId",n.workOrderId);const s=r.toString(),o=`/user/${t}${s?`?${s}`:""}`;return this.request(o,"GET")}async getSummary(t){return this.request(`/work-order/${t}/summary`,"GET")}async bulkCreate(t){return this.request("/bulk","POST",{timeEntries:t})}async startTimer(t){return this.request("/timer/start","POST",t)}async stopTimer(t,n={}){return this.request(`/timer/${t}/stop`,"POST",n)}async getActiveTimers(t){return this.request(`/timer/active/${t}`,"GET")}}class t1 extends lt{constructor(){super("/digital-signatures")}async getByWorkOrderId(t){return this.request(`/work-order/${t}`,"GET")}async create(t){return this.request("/","POST",t)}async update(t,n){return this.request(`/${t}`,"PUT",n)}async delete(t){return await this.request(`/${t}`,"DELETE"),!0}async getHistory(t){return this.request(`/work-order/${t}/history`,"GET")}async validate(t){return this.request(`/${t}/validate`,"POST")}async export(t,n="png"){return this.request(`/${t}/export?format=${n}`,"GET",null,{responseType:"blob"})}async bulkExport(t,n="pdf"){return this.request("/bulk-export","POST",{signatureIds:t,format:n},{responseType:"blob"})}async getTemplates(){return this.request("/templates","GET")}async createFromTemplate(t,n){return this.request(`/templates/${t}/create`,"POST",n)}async verifyIntegrity(t){return this.request(`/${t}/verify-integrity`,"GET")}async getAuditTrail(t){return this.request(`/${t}/audit-trail`,"GET")}async archive(t,n={}){return this.request(`/${t}/archive`,"POST",n)}async getIpGeolocation(t){return this.request(`/ip-geolocation?ip=${encodeURIComponent(t)}`,"GET")}}class n1 extends lt{constructor(){super("/audio-recordings")}async getByWorkOrderId(t){return this.request(`/work-order/${t}`,"GET")}async upload(t){const n=new FormData;return t.audioBlob&&n.append("audio",t.audioBlob,t.filename||"recording.webm"),Object.keys(t).forEach(r=>{r!=="audioBlob"&&t[r]!==void 0&&n.append(r,typeof t[r]=="object"?JSON.stringify(t[r]):t[r])}),this.request("/","POST",n,{headers:{"Content-Type":"multipart/form-data"}})}async update(t,n){return this.request(`/${t}`,"PUT",n)}async delete(t){return await this.request(`/${t}`,"DELETE"),!0}async startRecordingSession(t){return this.request("/sessions/start","POST",t)}async stopRecordingSession(t,n){return this.request(`/sessions/${t}/stop`,"POST",n)}async getActiveSessions(t){return this.request(`/sessions/active/${t}`,"GET")}async transcribe(t,n={}){return this.request(`/${t}/transcribe`,"POST",n)}async getTranscriptionStatus(t){return this.request(`/${t}/transcription/status`,"GET")}async updateTranscription(t,n){return this.request(`/${t}/transcription`,"PUT",n)}async generateWaveform(t){return this.request(`/${t}/waveform`,"POST")}async getAudioAnalysis(t){return this.request(`/${t}/analysis`,"GET")}async convertFormat(t,n){return this.request(`/${t}/convert?format=${n}`,"GET",null,{responseType:"blob"})}async bulkOperation(t,n,r={}){return this.request("/bulk","POST",{recordingIds:t,operation:n,options:r})}async getStatistics(t){return this.request(`/work-order/${t}/statistics`,"GET")}async searchByContent(t,n={}){const r=new URLSearchParams({q:t,...n});return this.request(`/search?${r.toString()}`,"GET")}async getSupportedFormats(){return this.request("/formats","GET")}async validateAudioFile(t){const n=new FormData;return n.append("audio",t),this.request("/validate","POST",n,{headers:{"Content-Type":"multipart/form-data"}})}async getTranscriptionConfig(){return this.request("/transcription/config","GET")}}class dr extends lt{constructor(t="work-order-categories"){super(`/${t}`),this.categoryType=t}async getAll(){try{return(await H.get(this.endpoint)).data}catch(t){throw this.handleError(t)}}async getById(t){try{return(await H.get(`${this.endpoint}/${t}`)).data}catch(n){throw this.handleError(n)}}async create(t){try{return(await H.post(this.endpoint,{name:t.name,description:t.description||"",color:t.color||"",icon:t.icon||"",isActive:t.isActive!==void 0?t.isActive:!0,sortOrder:t.sortOrder||0})).data}catch(n){throw this.handleError(n)}}async update(t,n){try{return(await H.patch(`${this.endpoint}/${t}`,{name:n.name,description:n.description,color:n.color,icon:n.icon,isActive:n.isActive,sortOrder:n.sortOrder})).data}catch(r){throw this.handleError(r)}}async delete(t){try{await H.delete(`${this.endpoint}/${t}`)}catch(n){throw this.handleError(n)}}async getByFilters(t={}){try{const n=new URLSearchParams;t.isActive!==void 0&&n.append("isActive",t.isActive),t.search&&n.append("search",t.search),t.sortBy&&n.append("sortBy",t.sortBy),t.sortOrder&&n.append("sortOrder",t.sortOrder);const r=n.toString()?`${this.endpoint}?${n.toString()}`:this.endpoint;return(await H.get(r)).data}catch(n){throw this.handleError(n)}}async updateSortOrders(t){try{return(await H.patch(`${this.endpoint}/bulk-sort`,{categories:t.map(r=>({id:r.id,sortOrder:r.sortOrder}))})).data}catch(n){throw this.handleError(n)}}}const N_=new dr("work-order-categories"),B_=new dr("asset-categories"),V_=new dr("part-categories"),j_=new dr("cost-categories"),H_=new dr("meter-categories"),U_=new dr("purchase-order-categories");class _d extends lt{constructor(){super("/api/requests")}async search(t){return this.request("/search","POST",t)}async getByStatus(t,n={}){return this.request(`/status/${t}`,"GET",null,{params:n})}async getPendingCount(){return this.request("/pending/count","GET")}async getMyRequests(t={}){return this.request("/my-requests","GET",null,{params:t})}async getAssignedRequests(t={}){return this.request("/assigned","GET",null,{params:t})}async approve(t,n){return this.request(`/${t}/approve`,"PATCH",n)}async reject(t,n){return this.request(`/${t}/reject`,"PATCH",n)}async cancel(t,n){return this.request(`/${t}/cancel`,"PATCH",n)}async assign(t,n){return this.request(`/${t}/assign`,"PATCH",n)}async updatePriority(t,n){return this.request(`/${t}/priority`,"PATCH",n)}async addComment(t,n){return this.request(`/${t}/comments`,"POST",n)}async uploadAttachment(t,n){return this.request(`/${t}/attachments`,"POST",n,{headers:{"Content-Type":"multipart/form-data"}})}async removeAttachment(t,n){return this.request(`/${t}/attachments/${n}`,"DELETE")}async getStatistics(t={}){return this.request("/statistics","GET",null,{params:t})}async export(t){return this.request("/export","POST",t,{responseType:"blob"})}async bulkUpdate(t){return this.request("/bulk","PATCH",t)}async getTemplates(){return this.request("/templates","GET")}async createFromTemplate(t,n={}){return this.request(`/templates/${t}/create`,"POST",n)}async getHistory(t){return this.request(`/${t}/history`,"GET")}async getRelatedWorkOrders(t){return this.request(`/${t}/work-orders`,"GET")}}new _d;class Ed extends lt{constructor(){super("/api/meters")}async search(t){return this.request("/search","POST",t)}async getMini(){return this.request("/mini","GET")}async getByAsset(t){return this.request(`/asset/${t}`,"GET")}async getByLocation(t){return this.request(`/location/${t}`,"GET")}async getByUser(t){return this.request(`/user/${t}`,"GET")}async getDueForReading(t={}){return this.request("/due-for-reading","GET",null,{params:t})}async getDueForCalibration(t={}){return this.request("/due-for-calibration","GET",null,{params:t})}async assignUsers(t,n){return this.request(`/${t}/assign-users`,"PATCH",n)}async updateStatus(t,n){return this.request(`/${t}/status`,"PATCH",n)}async recordReading(t,n){return this.request(`/${t}/readings`,"POST",n)}async getReadings(t,n={}){return this.request(`/${t}/readings`,"GET",null,{params:n})}async updateReading(t,n,r){return this.request(`/${t}/readings/${n}`,"PATCH",r)}async deleteReading(t,n){return this.request(`/${t}/readings/${n}`,"DELETE")}async getReadingTrends(t,n={}){return this.request(`/${t}/trends`,"GET",null,{params:n})}async uploadImage(t,n){return this.request(`/${t}/image`,"POST",n,{headers:{"Content-Type":"multipart/form-data"}})}async removeImage(t){return this.request(`/${t}/image`,"DELETE")}async scheduleCalibration(t,n){return this.request(`/${t}/schedule-calibration`,"PATCH",n)}async completeCalibration(t,n){return this.request(`/${t}/complete-calibration`,"PATCH",n)}async getStatistics(t={}){return this.request("/statistics","GET",null,{params:t})}async export(t){return this.request("/export","POST",t,{responseType:"blob"})}async exportReadings(t,n){return this.request(`/${t}/readings/export`,"POST",n,{responseType:"blob"})}async bulkUpdate(t){return this.request("/bulk","PATCH",t)}async importReadings(t,n){return this.request(`/${t}/readings/import`,"POST",n,{headers:{"Content-Type":"multipart/form-data"}})}async getReadingTemplates(){return this.request("/reading-templates","GET")}async validateReading(t,n){return this.request(`/${t}/validate-reading`,"POST",n)}}new Ed;const Cn=new Nv,q_=new Gv,z_=new Kv,W_=new Yv,G_=new Jv,K_=new Zv,Y_=new Xv,J_=new Qv,Z_=new e1;new t1;const X_=new n1,Q_=new _d,eE=new Ed,ya=Jp("auth",()=>{const e=de(localStorage.getItem("token")),t=de(localStorage.getItem("refreshToken")),n=de((()=>{try{const y=localStorage.getItem("user");return!y||y==="undefined"||y==="null"?(localStorage.removeItem("user"),null):JSON.parse(y)}catch(y){return console.warn("Failed to parse user data from localStorage:",y),localStorage.removeItem("user"),null}})()),r=de(!1),s=de(null),o=M(()=>!!e.value),i=M(()=>{var y;return((y=n.value)==null?void 0:y.role)||null}),a=M(()=>n.value?`${n.value.firstName} ${n.value.lastName}`:""),l=y=>i.value===y,u=y=>{var p;return(p=n.value)!=null&&p.permissions?n.value.permissions.includes(y):!1},c=async y=>{try{r.value=!0,s.value=null;const p=await Cn.login(y);return e.value=p.accessToken,t.value=p.refreshToken,n.value=p.user,localStorage.setItem("token",p.accessToken),p.refreshToken&&localStorage.setItem("refreshToken",p.refreshToken),localStorage.setItem("user",JSON.stringify(p.user)),p}catch(p){throw s.value=p.message||"Login failed",p}finally{r.value=!1}},f=async y=>{try{r.value=!0,s.value=null;const p=await Cn.register(y);return e.value=p.accessToken,t.value=p.refreshToken,n.value=p.user,localStorage.setItem("token",p.accessToken),p.refreshToken&&localStorage.setItem("refreshToken",p.refreshToken),localStorage.setItem("user",JSON.stringify(p.user)),p}catch(p){throw s.value=p.message||"Registration failed",p}finally{r.value=!1}},d=async()=>{try{e.value&&await Cn.logout()}catch(y){console.error("Logout error:",y)}finally{e.value=null,t.value=null,n.value=null,localStorage.removeItem("token"),localStorage.removeItem("refreshToken"),localStorage.removeItem("user")}};return{token:e,refreshToken:t,user:n,loading:r,error:s,isAuthenticated:o,userRole:i,userName:a,hasRole:l,hasPermission:u,login:c,register:f,logout:d,refreshAuthToken:async()=>{try{if(!t.value)throw new Error("No refresh token available");const y=await Cn.refreshToken(t.value);return e.value=y.accessToken,y.refreshToken&&(t.value=y.refreshToken,localStorage.setItem("refreshToken",y.refreshToken)),localStorage.setItem("token",y.accessToken),y}catch(y){throw d(),y}},getCurrentUser:async()=>{try{if(!e.value)return null;const y=await Cn.getCurrentUser();return n.value=y,localStorage.setItem("user",JSON.stringify(y)),y}catch(y){throw y.status===401&&d(),y}},forgotPassword:async y=>{try{return r.value=!0,s.value=null,await Cn.forgotPassword(y)}catch(p){throw s.value=p.message||"Password reset request failed",p}finally{r.value=!1}},resetPassword:async(y,p)=>{try{return r.value=!0,s.value=null,await Cn.resetPassword(y,p)}catch(k){throw s.value=k.message||"Password reset failed",k}finally{r.value=!1}},clearError:()=>{s.value=null}}});/*! + * vue-router v4.5.1 + * (c) 2025 Eduardo San Martin Morote + * @license MIT + */const Kn=typeof document<"u";function Sd(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function r1(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&Sd(e.default)}const we=Object.assign;function Jo(e,t){const n={};for(const r in t){const s=t[r];n[r]=Ct(s)?s.map(e):e(s)}return n}const Or=()=>{},Ct=Array.isArray,xd=/#/g,s1=/&/g,o1=/\//g,i1=/=/g,a1=/\?/g,Cd=/\+/g,l1=/%5B/g,c1=/%5D/g,kd=/%5E/g,u1=/%60/g,Td=/%7B/g,f1=/%7C/g,Ad=/%7D/g,d1=/%20/g;function va(e){return encodeURI(""+e).replace(f1,"|").replace(l1,"[").replace(c1,"]")}function h1(e){return va(e).replace(Td,"{").replace(Ad,"}").replace(kd,"^")}function Di(e){return va(e).replace(Cd,"%2B").replace(d1,"+").replace(xd,"%23").replace(s1,"%26").replace(u1,"`").replace(Td,"{").replace(Ad,"}").replace(kd,"^")}function m1(e){return Di(e).replace(i1,"%3D")}function p1(e){return va(e).replace(xd,"%23").replace(a1,"%3F")}function g1(e){return e==null?"":p1(e).replace(o1,"%2F")}function qr(e){try{return decodeURIComponent(""+e)}catch{}return""+e}const y1=/\/$/,v1=e=>e.replace(y1,"");function Zo(e,t,n="/"){let r,s={},o="",i="";const a=t.indexOf("#");let l=t.indexOf("?");return a=0&&(l=-1),l>-1&&(r=t.slice(0,l),o=t.slice(l+1,a>-1?a:t.length),s=e(o)),a>-1&&(r=r||t.slice(0,a),i=t.slice(a,t.length)),r=E1(r??t,n),{fullPath:r+(o&&"?")+o+i,path:r,query:s,hash:qr(i)}}function b1(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function hc(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function w1(e,t,n){const r=t.matched.length-1,s=n.matched.length-1;return r>-1&&r===s&&ir(t.matched[r],n.matched[s])&&Rd(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function ir(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function Rd(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!_1(e[n],t[n]))return!1;return!0}function _1(e,t){return Ct(e)?mc(e,t):Ct(t)?mc(t,e):e===t}function mc(e,t){return Ct(t)?e.length===t.length&&e.every((n,r)=>n===t[r]):e.length===1&&e[0]===t}function E1(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/"),s=r[r.length-1];(s===".."||s===".")&&r.push("");let o=n.length-1,i,a;for(i=0;i1&&o--;else break;return n.slice(0,o).join("/")+"/"+r.slice(i).join("/")}const Qt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};var zr;(function(e){e.pop="pop",e.push="push"})(zr||(zr={}));var $r;(function(e){e.back="back",e.forward="forward",e.unknown=""})($r||($r={}));function S1(e){if(!e)if(Kn){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),v1(e)}const x1=/^[^#]+#/;function C1(e,t){return e.replace(x1,"#")+t}function k1(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}const To=()=>({left:window.scrollX,top:window.scrollY});function T1(e){let t;if("el"in e){const n=e.el,r=typeof n=="string"&&n.startsWith("#"),s=typeof n=="string"?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!s)return;t=k1(s,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function pc(e,t){return(history.state?history.state.position-t:-1)+e}const Ii=new Map;function A1(e,t){Ii.set(e,t)}function R1(e){const t=Ii.get(e);return Ii.delete(e),t}let P1=()=>location.protocol+"//"+location.host;function Pd(e,t){const{pathname:n,search:r,hash:s}=t,o=e.indexOf("#");if(o>-1){let a=s.includes(e.slice(o))?e.slice(o).length:1,l=s.slice(a);return l[0]!=="/"&&(l="/"+l),hc(l,"")}return hc(n,e)+r+s}function O1(e,t,n,r){let s=[],o=[],i=null;const a=({state:d})=>{const h=Pd(e,location),m=n.value,w=t.value;let _=0;if(d){if(n.value=h,t.value=d,i&&i===m){i=null;return}_=w?d.position-w.position:0}else r(h);s.forEach(b=>{b(n.value,m,{delta:_,type:zr.pop,direction:_?_>0?$r.forward:$r.back:$r.unknown})})};function l(){i=n.value}function u(d){s.push(d);const h=()=>{const m=s.indexOf(d);m>-1&&s.splice(m,1)};return o.push(h),h}function c(){const{history:d}=window;d.state&&d.replaceState(we({},d.state,{scroll:To()}),"")}function f(){for(const d of o)d();o=[],window.removeEventListener("popstate",a),window.removeEventListener("beforeunload",c)}return window.addEventListener("popstate",a),window.addEventListener("beforeunload",c,{passive:!0}),{pauseListeners:l,listen:u,destroy:f}}function gc(e,t,n,r=!1,s=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:s?To():null}}function $1(e){const{history:t,location:n}=window,r={value:Pd(e,n)},s={value:t.state};s.value||o(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(l,u,c){const f=e.indexOf("#"),d=f>-1?(n.host&&document.querySelector("base")?e:e.slice(f))+l:P1()+e+l;try{t[c?"replaceState":"pushState"](u,"",d),s.value=u}catch(h){console.error(h),n[c?"replace":"assign"](d)}}function i(l,u){const c=we({},t.state,gc(s.value.back,l,s.value.forward,!0),u,{position:s.value.position});o(l,c,!0),r.value=l}function a(l,u){const c=we({},s.value,t.state,{forward:l,scroll:To()});o(c.current,c,!0);const f=we({},gc(r.value,l,null),{position:c.position+1},u);o(l,f,!1),r.value=l}return{location:r,state:s,push:a,replace:i}}function F1(e){e=S1(e);const t=$1(e),n=O1(e,t.state,t.location,t.replace);function r(o,i=!0){i||n.pauseListeners(),history.go(o)}const s=we({location:"",base:e,go:r,createHref:C1.bind(null,e)},t,n);return Object.defineProperty(s,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(s,"state",{enumerable:!0,get:()=>t.state.value}),s}function L1(e){return typeof e=="string"||e&&typeof e=="object"}function Od(e){return typeof e=="string"||typeof e=="symbol"}const $d=Symbol("");var yc;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(yc||(yc={}));function ar(e,t){return we(new Error,{type:e,[$d]:!0},t)}function Ht(e,t){return e instanceof Error&&$d in e&&(t==null||!!(e.type&t))}const vc="[^/]+?",M1={sensitive:!1,strict:!1,start:!0,end:!0},D1=/[.+*?^${}()[\]/\\]/g;function I1(e,t){const n=we({},M1,t),r=[];let s=n.start?"^":"";const o=[];for(const u of e){const c=u.length?[]:[90];n.strict&&!u.length&&(s+="/");for(let f=0;ft.length?t.length===1&&t[0]===80?1:-1:0}function Fd(e,t){let n=0;const r=e.score,s=t.score;for(;n0&&t[t.length-1]<0}const B1={type:0,value:""},V1=/[a-zA-Z0-9_]/;function j1(e){if(!e)return[[]];if(e==="/")return[[B1]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(h){throw new Error(`ERR (${n})/"${u}": ${h}`)}let n=0,r=n;const s=[];let o;function i(){o&&s.push(o),o=[]}let a=0,l,u="",c="";function f(){u&&(n===0?o.push({type:0,value:u}):n===1||n===2||n===3?(o.length>1&&(l==="*"||l==="+")&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),o.push({type:1,value:u,regexp:c,repeatable:l==="*"||l==="+",optional:l==="*"||l==="?"})):t("Invalid state to consume buffer"),u="")}function d(){u+=l}for(;a{i(p)}:Or}function i(f){if(Od(f)){const d=r.get(f);d&&(r.delete(f),n.splice(n.indexOf(d),1),d.children.forEach(i),d.alias.forEach(i))}else{const d=n.indexOf(f);d>-1&&(n.splice(d,1),f.record.name&&r.delete(f.record.name),f.children.forEach(i),f.alias.forEach(i))}}function a(){return n}function l(f){const d=W1(f,n);n.splice(d,0,f),f.record.name&&!Ec(f)&&r.set(f.record.name,f)}function u(f,d){let h,m={},w,_;if("name"in f&&f.name){if(h=r.get(f.name),!h)throw ar(1,{location:f});_=h.record.name,m=we(wc(d.params,h.keys.filter(p=>!p.optional).concat(h.parent?h.parent.keys.filter(p=>p.optional):[]).map(p=>p.name)),f.params&&wc(f.params,h.keys.map(p=>p.name))),w=h.stringify(m)}else if(f.path!=null)w=f.path,h=n.find(p=>p.re.test(w)),h&&(m=h.parse(w),_=h.record.name);else{if(h=d.name?r.get(d.name):n.find(p=>p.re.test(d.path)),!h)throw ar(1,{location:f,currentLocation:d});_=h.record.name,m=we({},d.params,f.params),w=h.stringify(m)}const b=[];let y=h;for(;y;)b.unshift(y.record),y=y.parent;return{name:_,path:w,params:m,matched:b,meta:z1(b)}}e.forEach(f=>o(f));function c(){n.length=0,r.clear()}return{addRoute:o,resolve:u,removeRoute:i,clearRoutes:c,getRoutes:a,getRecordMatcher:s}}function wc(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function _c(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:q1(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function q1(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]=typeof n=="object"?n[r]:n;return t}function Ec(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function z1(e){return e.reduce((t,n)=>we(t,n.meta),{})}function Sc(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}function W1(e,t){let n=0,r=t.length;for(;n!==r;){const o=n+r>>1;Fd(e,t[o])<0?r=o:n=o+1}const s=G1(e);return s&&(r=t.lastIndexOf(s,r-1)),r}function G1(e){let t=e;for(;t=t.parent;)if(Ld(t)&&Fd(e,t)===0)return t}function Ld({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function K1(e){const t={};if(e===""||e==="?")return t;const r=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;so&&Di(o)):[r&&Di(r)]).forEach(o=>{o!==void 0&&(t+=(t.length?"&":"")+n,o!=null&&(t+="="+o))})}return t}function Y1(e){const t={};for(const n in e){const r=e[n];r!==void 0&&(t[n]=Ct(r)?r.map(s=>s==null?null:""+s):r==null?r:""+r)}return t}const J1=Symbol(""),Cc=Symbol(""),Ao=Symbol(""),ba=Symbol(""),Ni=Symbol("");function br(){let e=[];function t(r){return e.push(r),()=>{const s=e.indexOf(r);s>-1&&e.splice(s,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function an(e,t,n,r,s,o=i=>i()){const i=r&&(r.enterCallbacks[s]=r.enterCallbacks[s]||[]);return()=>new Promise((a,l)=>{const u=d=>{d===!1?l(ar(4,{from:n,to:t})):d instanceof Error?l(d):L1(d)?l(ar(2,{from:t,to:d})):(i&&r.enterCallbacks[s]===i&&typeof d=="function"&&i.push(d),a())},c=o(()=>e.call(r&&r.instances[s],t,n,u));let f=Promise.resolve(c);e.length<3&&(f=f.then(u)),f.catch(d=>l(d))})}function Xo(e,t,n,r,s=o=>o()){const o=[];for(const i of e)for(const a in i.components){let l=i.components[a];if(!(t!=="beforeRouteEnter"&&!i.instances[a]))if(Sd(l)){const c=(l.__vccOpts||l)[t];c&&o.push(an(c,n,r,i,a,s))}else{let u=l();o.push(()=>u.then(c=>{if(!c)throw new Error(`Couldn't resolve component "${a}" at "${i.path}"`);const f=r1(c)?c.default:c;i.mods[a]=c,i.components[a]=f;const h=(f.__vccOpts||f)[t];return h&&an(h,n,r,i,a,s)()}))}}return o}function kc(e){const t=Pe(Ao),n=Pe(ba),r=M(()=>{const l=Me(e.to);return t.resolve(l)}),s=M(()=>{const{matched:l}=r.value,{length:u}=l,c=l[u-1],f=n.matched;if(!c||!f.length)return-1;const d=f.findIndex(ir.bind(null,c));if(d>-1)return d;const h=Tc(l[u-2]);return u>1&&Tc(c)===h&&f[f.length-1].path!==h?f.findIndex(ir.bind(null,l[u-2])):d}),o=M(()=>s.value>-1&&tb(n.params,r.value.params)),i=M(()=>s.value>-1&&s.value===n.matched.length-1&&Rd(n.params,r.value.params));function a(l={}){if(eb(l)){const u=t[Me(e.replace)?"replace":"push"](Me(e.to)).catch(Or);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>u),u}return Promise.resolve()}return{route:r,href:M(()=>r.value.href),isActive:o,isExactActive:i,navigate:a}}function Z1(e){return e.length===1?e[0]:e}const X1=ra({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:kc,setup(e,{slots:t}){const n=Be(kc(e)),{options:r}=Pe(Ao),s=M(()=>({[Ac(e.activeClass,r.linkActiveClass,"router-link-active")]:n.isActive,[Ac(e.exactActiveClass,r.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const o=t.default&&Z1(t.default(n));return e.custom?o:ts("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:s.value},o)}}}),Q1=X1;function eb(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function tb(e,t){for(const n in t){const r=t[n],s=e[n];if(typeof r=="string"){if(r!==s)return!1}else if(!Ct(s)||s.length!==r.length||r.some((o,i)=>o!==s[i]))return!1}return!0}function Tc(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Ac=(e,t,n)=>e??t??n,nb=ra({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const r=Pe(Ni),s=M(()=>e.route||r.value),o=Pe(Cc,0),i=M(()=>{let u=Me(o);const{matched:c}=s.value;let f;for(;(f=c[u])&&!f.components;)u++;return u}),a=M(()=>s.value.matched[i.value]);Et(Cc,M(()=>i.value+1)),Et(J1,a),Et(Ni,s);const l=de();return ye(()=>[l.value,a.value,e.name],([u,c,f],[d,h,m])=>{c&&(c.instances[f]=u,h&&h!==c&&u&&u===d&&(c.leaveGuards.size||(c.leaveGuards=h.leaveGuards),c.updateGuards.size||(c.updateGuards=h.updateGuards))),u&&c&&(!h||!ir(c,h)||!d)&&(c.enterCallbacks[f]||[]).forEach(w=>w(u))},{flush:"post"}),()=>{const u=s.value,c=e.name,f=a.value,d=f&&f.components[c];if(!d)return Rc(n.default,{Component:d,route:u});const h=f.props[c],m=h?h===!0?u.params:typeof h=="function"?h(u):h:null,_=ts(d,we({},m,t,{onVnodeUnmounted:b=>{b.component.isUnmounted&&(f.instances[c]=null)},ref:l}));return Rc(n.default,{Component:_,route:u})||_}}});function Rc(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const rb=nb;function sb(e){const t=U1(e.routes,e),n=e.parseQuery||K1,r=e.stringifyQuery||xc,s=e.history,o=br(),i=br(),a=br(),l=Oe(Qt);let u=Qt;Kn&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const c=Jo.bind(null,C=>""+C),f=Jo.bind(null,g1),d=Jo.bind(null,qr);function h(C,N){let j,Y;return Od(C)?(j=t.getRecordMatcher(C),Y=N):Y=C,t.addRoute(Y,j)}function m(C){const N=t.getRecordMatcher(C);N&&t.removeRoute(N)}function w(){return t.getRoutes().map(C=>C.record)}function _(C){return!!t.getRecordMatcher(C)}function b(C,N){if(N=we({},N||l.value),typeof C=="string"){const E=Zo(n,C,N.path),O=t.resolve({path:E.path},N),F=s.createHref(E.fullPath);return we(E,O,{params:d(O.params),hash:qr(E.hash),redirectedFrom:void 0,href:F})}let j;if(C.path!=null)j=we({},C,{path:Zo(n,C.path,N.path).path});else{const E=we({},C.params);for(const O in E)E[O]==null&&delete E[O];j=we({},C,{params:f(E)}),N.params=f(N.params)}const Y=t.resolve(j,N),be=C.hash||"";Y.params=c(d(Y.params));const g=b1(r,we({},C,{hash:h1(be),path:Y.path})),v=s.createHref(g);return we({fullPath:g,hash:be,query:r===xc?Y1(C.query):C.query||{}},Y,{redirectedFrom:void 0,href:v})}function y(C){return typeof C=="string"?Zo(n,C,l.value.path):we({},C)}function p(C,N){if(u!==C)return ar(8,{from:N,to:C})}function k(C){return D(C)}function S(C){return k(we(y(C),{replace:!0}))}function P(C){const N=C.matched[C.matched.length-1];if(N&&N.redirect){const{redirect:j}=N;let Y=typeof j=="function"?j(C):j;return typeof Y=="string"&&(Y=Y.includes("?")||Y.includes("#")?Y=y(Y):{path:Y},Y.params={}),we({query:C.query,hash:C.hash,params:Y.path!=null?{}:C.params},Y)}}function D(C,N){const j=u=b(C),Y=l.value,be=C.state,g=C.force,v=C.replace===!0,E=P(j);if(E)return D(we(y(E),{state:typeof E=="object"?we({},be,E.state):be,force:g,replace:v}),N||j);const O=j;O.redirectedFrom=N;let F;return!g&&w1(r,Y,j)&&(F=ar(16,{to:O,from:Y}),Le(Y,Y,!0,!1)),(F?Promise.resolve(F):B(O,Y)).catch($=>Ht($)?Ht($,2)?$:Ce($):ce($,O,Y)).then($=>{if($){if(Ht($,2))return D(we({replace:v},y($.to),{state:typeof $.to=="object"?we({},be,$.to.state):be,force:g}),N||O)}else $=L(O,Y,!0,v,be);return V(O,Y,$),$})}function x(C,N){const j=p(C,N);return j?Promise.reject(j):Promise.resolve()}function A(C){const N=ct.values().next().value;return N&&typeof N.runWithContext=="function"?N.runWithContext(C):C()}function B(C,N){let j;const[Y,be,g]=ob(C,N);j=Xo(Y.reverse(),"beforeRouteLeave",C,N);for(const E of Y)E.leaveGuards.forEach(O=>{j.push(an(O,C,N))});const v=x.bind(null,C,N);return j.push(v),ze(j).then(()=>{j=[];for(const E of o.list())j.push(an(E,C,N));return j.push(v),ze(j)}).then(()=>{j=Xo(be,"beforeRouteUpdate",C,N);for(const E of be)E.updateGuards.forEach(O=>{j.push(an(O,C,N))});return j.push(v),ze(j)}).then(()=>{j=[];for(const E of g)if(E.beforeEnter)if(Ct(E.beforeEnter))for(const O of E.beforeEnter)j.push(an(O,C,N));else j.push(an(E.beforeEnter,C,N));return j.push(v),ze(j)}).then(()=>(C.matched.forEach(E=>E.enterCallbacks={}),j=Xo(g,"beforeRouteEnter",C,N,A),j.push(v),ze(j))).then(()=>{j=[];for(const E of i.list())j.push(an(E,C,N));return j.push(v),ze(j)}).catch(E=>Ht(E,8)?E:Promise.reject(E))}function V(C,N,j){a.list().forEach(Y=>A(()=>Y(C,N,j)))}function L(C,N,j,Y,be){const g=p(C,N);if(g)return g;const v=N===Qt,E=Kn?history.state:{};j&&(Y||v?s.replace(C.fullPath,we({scroll:v&&E&&E.scroll},be)):s.push(C.fullPath,be)),l.value=C,Le(C,N,j,v),Ce()}let G;function se(){G||(G=s.listen((C,N,j)=>{if(!Tt.listening)return;const Y=b(C),be=P(Y);if(be){D(we(be,{replace:!0,force:!0}),Y).catch(Or);return}u=Y;const g=l.value;Kn&&A1(pc(g.fullPath,j.delta),To()),B(Y,g).catch(v=>Ht(v,12)?v:Ht(v,2)?(D(we(y(v.to),{force:!0}),Y).then(E=>{Ht(E,20)&&!j.delta&&j.type===zr.pop&&s.go(-1,!1)}).catch(Or),Promise.reject()):(j.delta&&s.go(-j.delta,!1),ce(v,Y,g))).then(v=>{v=v||L(Y,g,!1),v&&(j.delta&&!Ht(v,8)?s.go(-j.delta,!1):j.type===zr.pop&&Ht(v,20)&&s.go(-1,!1)),V(Y,g,v)}).catch(Or)}))}let X=br(),oe=br(),ee;function ce(C,N,j){Ce(C);const Y=oe.list();return Y.length?Y.forEach(be=>be(C,N,j)):console.error(C),Promise.reject(C)}function Ne(){return ee&&l.value!==Qt?Promise.resolve():new Promise((C,N)=>{X.add([C,N])})}function Ce(C){return ee||(ee=!C,se(),X.list().forEach(([N,j])=>C?j(C):N()),X.reset()),C}function Le(C,N,j,Y){const{scrollBehavior:be}=e;if(!Kn||!be)return Promise.resolve();const g=!j&&R1(pc(C.fullPath,0))||(Y||!j)&&history.state&&history.state.scroll||null;return bt().then(()=>be(C,N,g)).then(v=>v&&T1(v)).catch(v=>ce(v,C,N))}const Re=C=>s.go(C);let je;const ct=new Set,Tt={currentRoute:l,listening:!0,addRoute:h,removeRoute:m,clearRoutes:t.clearRoutes,hasRoute:_,getRoutes:w,resolve:b,options:e,push:k,replace:S,go:Re,back:()=>Re(-1),forward:()=>Re(1),beforeEach:o.add,beforeResolve:i.add,afterEach:a.add,onError:oe.add,isReady:Ne,install(C){const N=this;C.component("RouterLink",Q1),C.component("RouterView",rb),C.config.globalProperties.$router=N,Object.defineProperty(C.config.globalProperties,"$route",{enumerable:!0,get:()=>Me(l)}),Kn&&!je&&l.value===Qt&&(je=!0,k(s.location).catch(be=>{}));const j={};for(const be in Qt)Object.defineProperty(j,be,{get:()=>l.value[be],enumerable:!0});C.provide(Ao,N),C.provide(ba,hu(j)),C.provide(Ni,l);const Y=C.unmount;ct.add(C),C.unmount=function(){ct.delete(C),ct.size<1&&(u=Qt,G&&G(),G=null,l.value=Qt,je=!1,ee=!1),Y()}}};function ze(C){return C.reduce((N,j)=>N.then(()=>A(j)),Promise.resolve())}return Tt}function ob(e,t){const n=[],r=[],s=[],o=Math.max(t.matched.length,e.matched.length);for(let i=0;iir(u,a))?r.push(a):n.push(a));const l=e.matched[i];l&&(t.matched.find(u=>ir(u,l))||s.push(l))}return[n,r,s]}function ib(){return Pe(Ao)}function ab(e){return Pe(ba)}function lb(){const e=ya(),t=ib(),n=M(()=>e.isAuthenticated),r=M(()=>e.user),s=M(()=>e.loading),o=M(()=>e.error),i=async(m,w="/dashboard")=>{try{await e.login(m),t.push(w)}catch(_){throw _}},a=async(m,w="/dashboard")=>{try{await e.register(m),t.push(w)}catch(_){throw _}},l=async()=>{try{await e.logout(),t.push("/login")}catch(m){console.error("Logout error:",m),t.push("/login")}},u=m=>e.hasRole(m),c=m=>e.hasPermission(m);return{isAuthenticated:n,user:r,loading:s,error:o,login:i,register:a,logout:l,hasRole:u,hasPermission:c,requireAuth:()=>n.value?!0:(t.push("/login"),!1),requireRole:m=>u(m)?!0:(t.push("/unauthorized"),!1),requirePermission:m=>c(m)?!0:(t.push("/unauthorized"),!1)}}const Pc={ADMIN:"ADMIN",MANAGER:"MANAGER",TECHNICIAN:"TECHNICIAN",REQUESTER:"REQUESTER",VIEWER:"VIEWER"},en={SUCCESS:"success",ERROR:"error",WARNING:"warning",INFO:"info"},On={colors:{primary:{50:"#F0FDFA",100:"#CCFBF1",200:"#99F6E4",300:"#5EEAD4",400:"#2DD4BF",500:"#14B8A6",600:"#0D9488",700:"#0F766E",800:"#115E59",900:"#134E4A"},secondary:{50:"#FAFAFA",100:"#F5F5F5",200:"#EEEEEE",300:"#E0E0E0",400:"#BDBDBD",500:"#9E9E9E",600:"#757575",700:"#616161",800:"#424242",900:"#212121"},success:{50:"#E8F5E8",500:"#4CAF50",700:"#388E3C"},warning:{50:"#FFFDE7",500:"#FFC107",700:"#F57F17"},error:{50:"#FFEBEE",500:"#FF5252",700:"#D32F2F"},info:{50:"#E1F5FE",500:"#2196F3",700:"#0288D1"}},themes:{light:{name:"Light",colors:{background:"#FFFFFF",surface:"#FAFAFA","surface-variant":"#F5F5F5","on-background":"#212121","on-surface":"#424242",primary:"#1976D2","on-primary":"#FFFFFF",secondary:"#424242","on-secondary":"#FFFFFF"}},dark:{name:"Dark",colors:{background:"#121212",surface:"#1E1E1E","surface-variant":"#2D2D2D","on-background":"#FFFFFF","on-surface":"#E0E0E0",primary:"#42A5F5","on-primary":"#000000",secondary:"#BDBDBD","on-secondary":"#000000"}}},typography:{fontFamily:{sans:["Inter","ui-sans-serif","system-ui","sans-serif"],mono:["JetBrains Mono","ui-monospace","monospace"]},fontSize:{xs:"0.75rem",sm:"0.875rem",base:"1rem",lg:"1.125rem",xl:"1.25rem","2xl":"1.5rem","3xl":"1.875rem","4xl":"2.25rem"},fontWeight:{normal:"400",medium:"500",semibold:"600",bold:"700"}},spacing:{xs:"0.25rem",sm:"0.5rem",md:"1rem",lg:"1.5rem",xl:"2rem","2xl":"3rem","3xl":"4rem"},borderRadius:{none:"0",sm:"0.125rem",md:"0.25rem",lg:"0.375rem",xl:"0.5rem",full:"9999px"},components:{button:{primary:{background:"primary-600",backgroundHover:"primary-700",text:"white",border:"transparent"},secondary:{background:"white",backgroundHover:"gray-50",text:"gray-700",border:"gray-300"},ghost:{background:"transparent",backgroundHover:"gray-100",text:"gray-700",border:"transparent"}},input:{background:"white",border:"gray-300",borderFocus:"primary-500",text:"gray-900",placeholder:"gray-500"},card:{background:"white",border:"gray-200",shadow:"sm"}},animation:{transition:"all 0.2s ease-in-out",duration:{fast:"150ms",normal:"200ms",slow:"300ms"}}},Md=(e="light")=>On.themes[e]||On.themes.light,cb=(e="light")=>{const t=Md(e),n={};return Object.entries(t.colors).forEach(([r,s])=>{n[`--atlas-${r}`]=s}),n},Tn=de("light"),Wr=typeof window<"u",Dd="atlas-theme";if(Wr){const e=localStorage.getItem(Dd);e&&On.themes[e]&&(Tn.value=e)}function Id(){const e=a=>{if(On.themes[a]&&(Tn.value=a,Wr)){localStorage.setItem(Dd,a);const l=cb(a);Object.entries(l).forEach(([u,c])=>{document.documentElement.style.setProperty(u,c)}),document.body.className=document.body.className.replace(/theme-\w+/g,"").trim()+` theme-${a}`,a==="dark"?document.documentElement.classList.add("dark"):document.documentElement.classList.remove("dark")}},t=M(()=>Md(Tn.value)),n=M(()=>Tn.value==="dark"),r=M(()=>Tn.value==="light"),s=()=>{e(n.value?"light":"dark")},o=(a,l="#000000")=>{const u=a.split(".");let c=On.colors;for(const f of u)c=c==null?void 0:c[f];return c||l},i=a=>On.components[a]||{};return Wr&&e(Tn.value),{currentTheme:M(()=>Tn.value),theme:t,isDark:n,isLight:r,setTheme:e,toggleTheme:s,getColor:o,getComponentTheme:i,themeConfig:On}}function tE(){const{getColor:e}=Id(),t=M(()=>({50:e("primary.50"),100:e("primary.100"),200:e("primary.200"),300:e("primary.300"),400:e("primary.400"),500:e("primary.500"),600:e("primary.600"),700:e("primary.700"),800:e("primary.800"),900:e("primary.900"),DEFAULT:e("primary.700")})),n=M(()=>({success:e("success.500"),warning:e("warning.500"),error:e("error.500"),info:e("info.500")}));return{primary:t,statusColors:n,getColor:e}}function nE(){const e={sm:640,md:768,lg:1024,xl:1280,"2xl":1536},t=de(Wr?window.innerWidth:0);if(Wr){const i=()=>{t.value=window.innerWidth};window.addEventListener("resize",i)}const n=M(()=>t.valuet.value>=e.md&&t.valuet.value>=e.lg),o=M(()=>{const i=t.value;return i>=e["2xl"]?"2xl":i>=e.xl?"xl":i>=e.lg?"lg":i>=e.md?"md":i>=e.sm?"sm":"xs"});return{windowWidth:M(()=>t.value),isMobile:n,isTablet:r,isDesktop:s,breakpoint:o,breakpoints:e}}const us=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},ub=["type","disabled"],fb={__name:"FPButton",props:{type:{type:String,default:"button"},variant:{type:String,default:"primary",validator:e=>["primary","secondary","outline","ghost","danger"].includes(e)},size:{type:String,default:"md",validator:e=>["xs","sm","md","lg"].includes(e)},disabled:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},block:{type:Boolean,default:!1}},emits:["click"],setup(e){const t=e;Id();const n=M(()=>{const r=["fp-btn","inline-flex items-center justify-center","font-medium rounded","transition-all duration-200","focus:outline-none focus:ring-2 focus:ring-offset-2"],s={xs:["px-2 py-1 text-xs"],sm:["px-3 py-1.5 text-sm"],md:["px-4 py-2 text-sm"],lg:["px-6 py-3 text-base"]},o={primary:["bg-primary-600 hover:bg-primary-700","text-white","border border-transparent","focus:ring-primary-500","disabled:bg-primary-300 disabled:cursor-not-allowed"],secondary:["bg-white hover:bg-gray-50","text-gray-700","border border-gray-300","focus:ring-primary-500","disabled:bg-gray-100 disabled:text-gray-400 disabled:cursor-not-allowed"],outline:["bg-white hover:bg-primary-50","text-primary-600 hover:text-primary-700","border border-primary-300 hover:border-primary-400","focus:ring-primary-500","disabled:bg-gray-100 disabled:text-gray-400 disabled:border-gray-300 disabled:cursor-not-allowed"],ghost:["bg-transparent hover:bg-gray-100","text-gray-700","border border-transparent","focus:ring-primary-500","disabled:text-gray-400 disabled:cursor-not-allowed"],danger:["bg-error-600 hover:bg-error-700","text-white","border border-transparent","focus:ring-error-500","disabled:bg-error-300 disabled:cursor-not-allowed"]},i=t.block?["w-full"]:[];return[...r,...s[t.size],...o[t.variant],...i].flat()});return(r,s)=>(J(),ne("button",Xe({type:e.type,disabled:e.disabled||e.loading,class:n.value},r.$attrs,{onClick:s[0]||(s[0]=o=>r.$emit("click",o))}),[Nu(r.$slots,"default",{},void 0,!0)],16,ub))}},bs=us(fb,[["__scopeId","data-v-7c0145b3"]]);function Nd(){const e=de(new Map),t=(i,a=200)=>{const l=typeof i=="string"?i.split("").reduce((c,f)=>c+f.charCodeAt(0),0):i||Math.floor(Math.random()*1e3);return[`https://picsum.photos/seed/${Math.abs(l)}/${a}/${a}`,`https://api.dicebear.com/7.x/avataaars/svg?seed=${Math.abs(l)}&size=${a}`,`https://source.boringavatars.com/marble/${a}/${Math.abs(l)}?colors=14B8A6,0D9488,0F766E,115E59,134E4A`][0]};return{getAvatarUrl:(i,a=200)=>{if(!i)return t("default",a);if(i.avatar)return i.avatar;if(e.value.has(i.id))return e.value.get(i.id);const l=i.id||`${i.firstName||""}${i.lastName||""}${i.email||""}`;return t(l,a)},uploadAvatar:async(i,a)=>{try{const l=URL.createObjectURL(a);return e.value.set(i,l),l}catch(l){throw console.error("Failed to upload avatar:",l),l}},removeAvatar:i=>{if(e.value.has(i)){const a=e.value.get(i);a.startsWith("blob:")&&URL.revokeObjectURL(a),e.value.delete(i)}},getUserInitials:i=>{var u,c,f,d,h;if(!i)return"??";const a=((u=i.firstName)==null?void 0:u[0])||((c=i.name)==null?void 0:c[0])||"",l=((f=i.lastName)==null?void 0:f[1])||((h=(d=i.name)==null?void 0:d.split(" ")[1])==null?void 0:h[0])||"";return(a+l).toUpperCase()||"??"},generatePexelsAvatar:t}}Nd();const db=["src","alt"],hb={__name:"FPAvatar",props:{user:{type:Object,default:null},src:{type:String,default:""},size:{type:String,default:"md",validator:e=>["xs","sm","md","lg","xl","2xl"].includes(e)},rounded:{type:Boolean,default:!0},editable:{type:Boolean,default:!1},clickable:{type:Boolean,default:!1},status:{type:String,default:"",validator:e=>["","online","offline","busy","away"].includes(e)},fallbackColor:{type:String,default:"primary"}},emits:["click","upload","error"],setup(e,{emit:t}){const n=e,r=t,{getAvatarUrl:s,uploadAvatar:o,getUserInitials:i}=Nd(),a=de(null),l=de(!1),u=de(!1),c=M(()=>{if(n.src)return console.log("FPAvatar: Using src prop:",n.src),n.src;if(n.user){const P=s(n.user,m.value);return console.log("FPAvatar: Generated URL for user:",n.user,"URL:",P),P}return console.log("FPAvatar: No src or user provided"),null}),f=M(()=>n.user?i(n.user):"??"),d=M(()=>n.user?`${n.user.firstName||""} ${n.user.lastName||""}`.trim()||"User Avatar":"Avatar"),h=M(()=>({xs:"w-6 h-6",sm:"w-8 h-8",md:"w-10 h-10",lg:"w-12 h-12",xl:"w-16 h-16","2xl":"w-20 h-20"})[n.size]),m=M(()=>({xs:24,sm:32,md:40,lg:48,xl:64,"2xl":80})[n.size]),w=M(()=>({xs:"text-xs",sm:"text-xs",md:"text-sm",lg:"text-base",xl:"text-lg","2xl":"text-xl"})[n.size]),_=M(()=>{const P={primary:"bg-primary-500",secondary:"bg-gray-500",success:"bg-green-500",warning:"bg-yellow-500",error:"bg-red-500"};return P[n.fallbackColor]||P.primary}),b=M(()=>`${{xs:"w-2 h-2",sm:"w-2 h-2",md:"w-3 h-3",lg:"w-3 h-3",xl:"w-4 h-4","2xl":"w-4 h-4"}[n.size]} ${{online:"bg-green-400",offline:"bg-gray-400",busy:"bg-red-400",away:"bg-yellow-400"}[n.status]||""}`),y=()=>{var P;n.editable?(P=a.value)==null||P.click():n.clickable&&r("click")},p=async P=>{var x,A;const D=(x=P.target.files)==null?void 0:x[0];if(!(!D||!((A=n.user)!=null&&A.id)))try{u.value=!0,l.value=!1;const B=await o(n.user.id,D);r("upload",{file:D,url:B})}catch(B){console.error("Avatar upload failed:",B),r("error",B)}finally{u.value=!1,a.value&&(a.value.value="")}},k=P=>{console.error("FPAvatar: Image failed to load:",P.target.src),l.value=!0},S=P=>{console.log("FPAvatar: Image loaded successfully:",P.target.src),l.value=!1};return ye(()=>n.user,()=>{l.value=!1},{deep:!0}),ye(()=>n.src,()=>{l.value=!1}),(P,D)=>(J(),ne("div",{class:ve(["fp-avatar relative inline-block",[h.value,e.rounded?"rounded-full":"rounded",e.clickable?"cursor-pointer hover:opacity-80 transition-opacity":""]]),onClick:y},[!l.value&&c.value?(J(),ne("img",{key:0,src:c.value,alt:d.value,class:ve(["w-full h-full object-cover",e.rounded?"rounded-full":"rounded"]),onError:k,onLoad:S},null,42,db)):(J(),ne("div",{key:1,class:ve(["w-full h-full flex items-center justify-center text-white font-medium",[e.rounded?"rounded-full":"rounded",_.value,w.value]])},pt(f.value),3)),u.value?(J(),ne("div",{key:2,class:ve(["absolute inset-0 flex items-center justify-center bg-black bg-opacity-25",e.rounded?"rounded-full":"rounded"])},D[0]||(D[0]=[R("svg",{class:"animate-spin h-4 w-4 text-white",fill:"none",viewBox:"0 0 24 24"},[R("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"}),R("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})],-1)]),2)):ue("",!0),e.status?(J(),ne("div",{key:3,class:ve(["absolute bottom-0 right-0 block rounded-full ring-2 ring-white",b.value])},null,2)):ue("",!0),e.editable?(J(),ne("div",{key:4,class:ve(["absolute inset-0 flex items-center justify-center bg-black bg-opacity-50 opacity-0 hover:opacity-100 transition-opacity",e.rounded?"rounded-full":"rounded"])},D[1]||(D[1]=[R("svg",{class:"w-6 h-6 text-white",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M3 9a2 2 0 012-2h.93a2 2 0 001.664-.89l.812-1.22A2 2 0 0110.07 4h3.86a2 2 0 011.664.89l.812 1.22A2 2 0 0018.07 7H19a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V9z"}),R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 13a3 3 0 11-6 0 3 3 0 016 0z"})],-1)]),2)):ue("",!0),e.editable?(J(),ne("input",{key:5,ref_key:"fileInput",ref:a,type:"file",accept:"image/*",class:"hidden",onChange:p},null,544)):ue("",!0)],2))}},mb=us(hb,[["__scopeId","data-v-bee50a95"]]),pb={class:"flex h-screen bg-gray-50"},gb={class:"hidden md:flex md:flex-shrink-0"},yb={class:"flex items-center"},vb={key:0,class:"text-xl font-bold text-primary-600"},bb={class:"flex flex-col flex-1 overflow-y-auto bg-white border-r border-gray-200"},wb={class:"flex-1 px-2 py-4 space-y-1"},_b={key:0,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 6a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2H6a2 2 0 01-2-2V6zM14 6a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2V6zM4 16a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2H6a2 2 0 01-2-2v-2zM14 16a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2v-2z"},Eb={key:1,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5H7a2 2 0 00-2 2v10a2 2 0 002 2h8a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01"},Sb={key:2,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"},xb={key:3,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4"},Cb={key:4},kb={key:5,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4.354a4 4 0 110 5.292M15 21H3v-1a6 6 0 0112 0v1zm0 0h6v-1a6 6 0 00-9-5.197m13.5-9a2.5 2.5 0 11-5 0 2.5 2.5 0 015 0z"},Tb={key:6,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4"},Ab={key:7},Rb={key:8},Pb={key:9,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"},Ob={key:10,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A1.994 1.994 0 013 12V7a4 4 0 014-4z"},$b={key:11,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"},Fb={key:12,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4"},Lb={key:13,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4.354a4 4 0 110 5.292M15 21H3v-1a6 6 0 0112 0v1zm0 0h6v-1a6 6 0 00-9-5.197m13.5-9a2.5 2.5 0 11-5 0 2.5 2.5 0 015 0z"},Mb={key:14,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"},Db={key:0,class:"transition-opacity duration-200"},Ib={key:1,class:"absolute left-full ml-2 px-2 py-1 bg-gray-900 text-white text-xs rounded opacity-0 invisible group-hover:opacity-100 group-hover:visible transition-all duration-200 whitespace-nowrap z-50"},Nb={key:0,class:"fixed inset-0 z-40 md:hidden"},Bb={class:"relative flex flex-col max-w-xs w-full bg-white"},Vb={class:"flex items-center justify-between h-16 px-4 border-b border-gray-200"},jb={class:"flex-1 px-2 py-4 space-y-1 overflow-y-auto"},Hb={class:"w-5 h-5 mr-3 flex-shrink-0",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},Ub={key:0,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 6a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2H6a2 2 0 01-2-2V6zM14 6a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2V6zM4 16a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2H6a2 2 0 01-2-2v-2zM14 16a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2v-2z"},qb={key:1,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5H7a2 2 0 00-2 2v10a2 2 0 002 2h8a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01"},zb={key:2,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"},Wb={key:3,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4"},Gb={key:4},Kb={key:5,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4.354a4 4 0 110 5.292M15 21H3v-1a6 6 0 0112 0v1zm0 0h6v-1a6 6 0 00-9-5.197m13.5-9a2.5 2.5 0 11-5 0 2.5 2.5 0 015 0z"},Yb={key:6,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4"},Jb={key:7},Zb={key:8},Xb={key:9,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"},Qb={key:10,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A1.994 1.994 0 013 12V7a4 4 0 014-4z"},ew={key:11,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"},tw={key:12,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4"},nw={key:13,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4.354a4 4 0 110 5.292M15 21H3v-1a6 6 0 0112 0v1zm0 0h6v-1a6 6 0 00-9-5.197m13.5-9a2.5 2.5 0 11-5 0 2.5 2.5 0 015 0z"},rw={key:14,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"},sw={class:"flex flex-col flex-1 overflow-hidden"},ow={class:"bg-white shadow-sm border-b border-gray-200"},iw={class:"flex items-center justify-between h-16 px-4 sm:px-6 lg:px-8"},aw={class:"flex items-center md:hidden"},lw={class:"flex items-center space-x-4 ml-auto"},cw={class:"relative"},uw={key:0,class:"absolute right-0 mt-2 w-80 bg-white rounded shadow-lg border border-gray-200 py-1 z-50"},fw={class:"relative"},dw={class:"hidden lg:block text-sm font-medium text-gray-700"},hw={key:0,class:"absolute right-0 mt-2 w-56 bg-white rounded shadow-lg border border-gray-200 py-1 z-50"},mw={class:"px-4 py-3 border-b border-gray-100"},pw={class:"text-sm font-medium text-gray-900"},gw={class:"text-sm text-gray-500"},yw={class:"flex-1 overflow-y-auto"},vw={__name:"AppNavigation",setup(e){const t=ab(),n=de(!1),r=de(!1),s=de(!1),o=de(!1),{user:i,logout:a,hasRole:l}=lb(),u=[{name:"Dashboard",to:"/dashboard"},{name:"Work Orders",to:"/work-orders"},{name:"Requests",to:"/requests"},{name:"Assets",to:"/assets"},{name:"Locations",to:"/locations"},{name:"People",to:"/people"},{name:"Inventory",to:"/inventory"},{name:"Meters",to:"/meters"},{name:"Maintenance",to:"/maintenance/preventive"},{name:"Documents",to:"/documents"},{name:"Contracts",to:"/contracts"},{name:"Vendors",to:"/vendors"},{name:"Customers",to:"/customers"},{name:"Categories",to:"/categories"},{name:"Reports",to:"/reports"}],c=M(()=>i.value?`${i.value.firstName} ${i.value.lastName}`:"John Doe");M(()=>{var k,S;if(!i.value)return"JD";const y=((k=i.value.firstName)==null?void 0:k[0])||"",p=((S=i.value.lastName)==null?void 0:S[0])||"";return(y+p).toUpperCase()});const f=M(()=>{var y;return((y=i.value)==null?void 0:y.role)||"Administrator"}),d=M(()=>{try{return l(Pc.ADMIN)||l(Pc.MANAGER)}catch{return!0}}),h=y=>t.path.startsWith(y),m=async()=>{try{r.value=!1,await a()}catch(y){console.error("Logout error:",y)}},w=()=>{o.value=!o.value},_=async()=>{o.value&&(o.value=!1,await bt())},b={mounted(y,p){y.clickOutsideEvent=function(k){y===k.target||y.contains(k.target)||p.value(k)},setTimeout(()=>{document.addEventListener("click",y.clickOutsideEvent)},100)},unmounted(y){document.removeEventListener("click",y.clickOutsideEvent)}};return(y,p)=>{const k=Mu("router-link");return J(),ne("div",pb,[R("div",gb,[R("div",{class:ve(["flex flex-col transition-all duration-300",o.value?"w-16":"w-64"])},[R("div",{class:ve(["flex items-center h-16 px-4 bg-white border-b border-gray-200",o.value?"justify-center":"justify-between"])},[R("div",yb,[o.value?(J(),ne("div",{key:1,class:"w-8 h-8 rounded bg-primary-600 flex items-center justify-center cursor-pointer hover:bg-primary-700 transition-colors",onClick:_,title:"Click to expand sidebar"},p[8]||(p[8]=[R("span",{class:"text-white font-bold text-sm"},"FP",-1)]))):(J(),ne("h1",vb,"Facility Plus"))]),o.value?ue("",!0):(J(),ne("div",{key:0,onClick:w,class:"flex items-center cursor-pointer flex-shrink-0 ml-2",title:"Collapse sidebar"},p[9]||(p[9]=[R("div",{class:"relative"},[R("div",{class:"w-8 h-6 bg-green-500 rounded-md shadow-inner transition-colors duration-200 flex items-center justify-center"},[R("svg",{class:"w-4 h-4 text-white",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 19l-7-7 7-7"})])])],-1)])))],2),R("div",bb,[R("nav",wb,[(J(),ne(Ie,null,ci(u,S=>Z(k,{key:S.name,to:S.to,class:ve(["group flex items-center px-3 py-3 text-sm font-medium rounded-lg transition-all duration-200 relative",[h(S.to)?"text-primary-700 bg-primary-100":"text-gray-700 hover:text-primary-600 hover:bg-gray-50",o.value?"justify-center":""]]),title:o.value?S.name:"",onClick:_},{default:He(()=>[(J(),ne("svg",{class:ve(["w-5 h-5 flex-shrink-0",o.value?"mr-0":"mr-3"]),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[S.name==="Dashboard"?(J(),ne("path",_b)):ue("",!0),S.name==="Work Orders"?(J(),ne("path",Eb)):ue("",!0),S.name==="Requests"?(J(),ne("path",Sb)):ue("",!0),S.name==="Assets"?(J(),ne("path",xb)):ue("",!0),S.name==="Locations"?(J(),ne("g",Cb,p[10]||(p[10]=[R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z"},null,-1),R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 11a3 3 0 11-6 0 3 3 0 016 0z"},null,-1)]))):ue("",!0),S.name==="People"?(J(),ne("path",kb)):ue("",!0),S.name==="Inventory"?(J(),ne("path",Tb)):ue("",!0),S.name==="Meters"?(J(),ne("g",Ab,p[11]||(p[11]=[R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"},null,-1),R("circle",{cx:"12",cy:"12",r:"3"},null,-1)]))):ue("",!0),S.name==="Maintenance"?(J(),ne("g",Rb,p[12]||(p[12]=[R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"},null,-1),R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"},null,-1)]))):ue("",!0),S.name==="Documents"?(J(),ne("path",Pb)):ue("",!0),S.name==="Categories"?(J(),ne("path",Ob)):ue("",!0),S.name==="Contracts"?(J(),ne("path",$b)):ue("",!0),S.name==="Vendors"?(J(),ne("path",Fb)):ue("",!0),S.name==="Customers"?(J(),ne("path",Lb)):ue("",!0),S.name==="Reports"?(J(),ne("path",Mb)):ue("",!0)],2)),o.value?ue("",!0):(J(),ne("span",Db,pt(S.name),1)),o.value?(J(),ne("div",Ib,pt(S.name),1)):ue("",!0)]),_:2},1032,["to","class","title"])),64))])])],2)]),Z(er,{name:"mobile-sidebar"},{default:He(()=>[n.value?(J(),ne("div",Nb,[R("div",{class:"fixed inset-0 bg-gray-600 bg-opacity-75",onClick:p[0]||(p[0]=S=>n.value=!1)}),R("div",Bb,[R("div",Vb,[p[14]||(p[14]=R("h1",{class:"text-xl font-bold text-primary-600"},"Facility Plus",-1)),Z(Me(bs),{variant:"ghost",size:"sm",onClick:p[1]||(p[1]=S=>n.value=!1)},{default:He(()=>p[13]||(p[13]=[R("svg",{class:"h-6 w-6",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})],-1)])),_:1,__:[13]})]),R("nav",jb,[(J(),ne(Ie,null,ci(u,S=>Z(k,{key:S.name,to:S.to,class:ve(["group flex items-center px-3 py-3 text-base font-medium rounded-lg transition-colors duration-200",h(S.to)?"text-primary-700 bg-primary-100":"text-gray-700 hover:text-primary-600 hover:bg-gray-50"]),onClick:p[2]||(p[2]=P=>n.value=!1)},{default:He(()=>[(J(),ne("svg",Hb,[S.name==="Dashboard"?(J(),ne("path",Ub)):ue("",!0),S.name==="Work Orders"?(J(),ne("path",qb)):ue("",!0),S.name==="Requests"?(J(),ne("path",zb)):ue("",!0),S.name==="Assets"?(J(),ne("path",Wb)):ue("",!0),S.name==="Locations"?(J(),ne("g",Gb,p[15]||(p[15]=[R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z"},null,-1),R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 11a3 3 0 11-6 0 3 3 0 016 0z"},null,-1)]))):ue("",!0),S.name==="People"?(J(),ne("path",Kb)):ue("",!0),S.name==="Inventory"?(J(),ne("path",Yb)):ue("",!0),S.name==="Meters"?(J(),ne("g",Jb,p[16]||(p[16]=[R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"},null,-1),R("circle",{cx:"12",cy:"12",r:"3"},null,-1)]))):ue("",!0),S.name==="Maintenance"?(J(),ne("g",Zb,p[17]||(p[17]=[R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"},null,-1),R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"},null,-1)]))):ue("",!0),S.name==="Documents"?(J(),ne("path",Xb)):ue("",!0),S.name==="Categories"?(J(),ne("path",Qb)):ue("",!0),S.name==="Contracts"?(J(),ne("path",ew)):ue("",!0),S.name==="Vendors"?(J(),ne("path",tw)):ue("",!0),S.name==="Customers"?(J(),ne("path",nw)):ue("",!0),S.name==="Reports"?(J(),ne("path",rw)):ue("",!0)])),Rn(" "+pt(S.name),1)]),_:2},1032,["to","class"])),64))])])])):ue("",!0)]),_:1}),R("div",sw,[R("header",ow,[R("div",iw,[R("div",aw,[Z(Me(bs),{variant:"ghost",size:"sm",class:"mr-3",onClick:p[3]||(p[3]=S=>n.value=!n.value)},{default:He(()=>p[18]||(p[18]=[R("svg",{class:"h-6 w-6",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 6h16M4 12h16M4 18h16"})],-1)])),_:1,__:[18]}),p[19]||(p[19]=R("h1",{class:"text-xl font-bold text-primary-600"},"Facility Plus",-1))]),p[27]||(p[27]=R("div",{class:"hidden md:block"},null,-1)),R("div",lw,[R("div",cw,[Z(Me(bs),{variant:"ghost",size:"sm",onClick:p[4]||(p[4]=S=>s.value=!s.value)},{default:He(()=>p[20]||(p[20]=[R("svg",{class:"h-5 w-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M10 2a6 6 0 00-6 6c0 4.314-.456 6.897-.828 8.223A1.5 1.5 0 004.5 18h11a1.5 1.5 0 001.328-1.777C16.456 14.897 16 12.314 16 8a6 6 0 00-6-6zM9 21a1 1 0 011-1h0a1 1 0 011 1v.5a.5.5 0 01-.5.5h-1a.5.5 0 01-.5-.5V21z"})],-1),R("span",{class:"absolute -top-1 -right-1 h-4 w-4 bg-red-500 text-white text-xs rounded-full flex items-center justify-center"}," 3 ",-1)])),_:1,__:[20]}),Z(er,{name:"dropdown"},{default:He(()=>[s.value?Vs((J(),ne("div",uw,p[21]||(p[21]=[R("div",{class:"px-4 py-3 border-b border-gray-100"},[R("p",{class:"text-sm font-medium text-gray-900"},"Notifications")],-1),R("div",{class:"max-h-64 overflow-y-auto"},[R("div",{class:"px-4 py-3 hover:bg-gray-50 border-b border-gray-100"},[R("p",{class:"text-sm font-medium text-gray-900"},"New Work Order"),R("p",{class:"text-sm text-gray-600"},"HVAC repair requested for Building A"),R("p",{class:"text-xs text-gray-400 mt-1"},"5 minutes ago")]),R("div",{class:"px-4 py-3 hover:bg-gray-50 border-b border-gray-100"},[R("p",{class:"text-sm font-medium text-gray-900"},"Maintenance Due"),R("p",{class:"text-sm text-gray-600"},"Elevator inspection due tomorrow"),R("p",{class:"text-xs text-gray-400 mt-1"},"2 hours ago")]),R("div",{class:"px-4 py-3 hover:bg-gray-50"},[R("p",{class:"text-sm font-medium text-gray-900"},"Low Stock Alert"),R("p",{class:"text-sm text-gray-600"},"HVAC filters running low"),R("p",{class:"text-xs text-gray-400 mt-1"},"1 day ago")])],-1),R("div",{class:"px-4 py-2 border-t border-gray-100"},[R("button",{class:"text-sm text-primary-600 hover:text-primary-700"}," View all notifications ")],-1)]))),[[b,()=>s.value=!1]]):ue("",!0)]),_:1})]),R("div",fw,[Z(Me(bs),{variant:"ghost",size:"sm",onClick:p[5]||(p[5]=S=>r.value=!r.value),class:"flex items-center space-x-2"},{default:He(()=>[Z(Me(mb),{user:Me(i)||{id:"demo",firstName:"John",lastName:"Doe"},size:"sm",status:"online"},null,8,["user"]),R("span",dw,pt(c.value),1),p[22]||(p[22]=R("svg",{class:"w-4 h-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 9l-7 7-7-7"})],-1))]),_:1,__:[22]}),Z(er,{name:"dropdown"},{default:He(()=>[r.value?Vs((J(),ne("div",hw,[R("div",mw,[R("p",pw,pt(c.value),1),R("p",gw,pt(f.value),1)]),Z(k,{to:"/profile",class:"flex items-center px-4 py-2 text-sm text-gray-700 hover:bg-gray-50 transition-colors",onClick:p[6]||(p[6]=S=>r.value=!1)},{default:He(()=>p[23]||(p[23]=[R("svg",{class:"w-4 h-4 mr-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z"})],-1),Rn(" Profile ",-1)])),_:1,__:[23]}),d.value?(J(),Bn(k,{key:0,to:"/settings",class:"flex items-center px-4 py-2 text-sm text-gray-700 hover:bg-gray-50 transition-colors",onClick:p[7]||(p[7]=S=>r.value=!1)},{default:He(()=>p[24]||(p[24]=[R("svg",{class:"w-4 h-4 mr-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"}),R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"})],-1),Rn(" Settings ",-1)])),_:1,__:[24]})):ue("",!0),p[26]||(p[26]=R("div",{class:"border-t border-gray-100 my-1"},null,-1)),R("button",{onClick:m,class:"flex items-center w-full px-4 py-2 text-sm text-gray-700 hover:bg-gray-50 transition-colors"},p[25]||(p[25]=[R("svg",{class:"w-4 h-4 mr-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[R("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M17 16l4-4m0 0l-4-4m4 4H7m6 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h4a3 3 0 013 3v1"})],-1),Rn(" Logout ",-1)]))])),[[b,()=>r.value=!1]]):ue("",!0)]),_:1})])])])]),R("main",yw,[Nu(y.$slots,"default",{},void 0,!0)])])])}}},bw=us(vw,[["__scopeId","data-v-342f9714"]]),wr=de([]);let ww=0;function _w(){const e=a=>{const l=++ww,u={id:l,type:"info",title:"",message:"",timeout:5e3,...a};return wr.value.push(u),u.timeout>0&&setTimeout(()=>{t(l)},u.timeout),l},t=a=>{const l=wr.value.findIndex(u=>u.id===a);l>-1&&wr.value.splice(l,1)};return{notifications:wr,addNotification:e,removeNotification:t,clearNotifications:()=>{wr.value=[]},success:(a,l="Success")=>e({type:"success",title:l,message:a}),error:(a,l="Error")=>e({type:"error",title:l,message:a,timeout:0}),warning:(a,l="Warning")=>e({type:"warning",title:l,message:a}),info:(a,l="Info")=>e({type:"info",title:l,message:a})}}const Bd=me({border:[Boolean,Number,String]},"border");function Vd(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:yn();return{borderClasses:M(()=>{const r=e.border;return r===!0||r===""?`${t}--border`:typeof r=="string"||r===0?String(r).split(" ").map(s=>`border-${s}`):[]})}}const Ew=[null,"default","comfortable","compact"],jd=me({density:{type:String,default:"default",validator:e=>Ew.includes(e)}},"density");function Hd(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:yn();return{densityClasses:ie(()=>`${t}--density-${e.density}`)}}const Ud=me({elevation:{type:[Number,String],validator(e){const t=parseInt(e);return!isNaN(t)&&t>=0&&t<=24}}},"elevation");function qd(e){return{elevationClasses:ie(()=>{const n=Ae(e)?e.value:e.elevation;return n==null?[]:[`elevation-${n}`]})}}const Ro=me({rounded:{type:[Boolean,Number,String],default:void 0},tile:Boolean},"rounded");function Po(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:yn();return{roundedClasses:M(()=>{const r=Ae(e)?e.value:e.rounded,s=Ae(e)?e.value:e.tile,o=[];if(r===!0||r==="")o.push(`${t}--rounded`);else if(typeof r=="string"||r===0)for(const i of String(r).split(" "))o.push(`rounded-${i}`);else(s||r===!1)&&o.push("rounded-0");return o})}}const hr=me({tag:{type:[String,Object,Function],default:"div"}},"tag");function wa(e){return ca(()=>{const t=un(e),n=[],r={};if(t.background)if(Si(t.background)){if(r.backgroundColor=t.background,!t.text&&Og(t.background)){const s=Dt(t.background);if(s.a==null||s.a===1){const o=Mf(s);r.color=o,r.caretColor=o}}}else n.push(`bg-${t.background}`);return t.text&&(Si(t.text)?(r.color=t.text,r.caretColor=t.text):n.push(`text-${t.text}`)),{colorClasses:n,colorStyles:r}})}function to(e){const{colorClasses:t,colorStyles:n}=wa(()=>({text:un(e)}));return{textColorClasses:t,textColorStyles:n}}function Os(e){const{colorClasses:t,colorStyles:n}=wa(()=>({background:un(e)}));return{backgroundColorClasses:t,backgroundColorStyles:n}}const Sw=["elevated","flat","tonal","outlined","text","plain"];function zd(e,t){return R(Ie,null,[e&&R("span",{key:"overlay",class:ve(`${t}__overlay`)},null),R("span",{key:"underlay",class:ve(`${t}__underlay`)},null)])}const _a=me({color:String,variant:{type:String,default:"elevated",validator:e=>Sw.includes(e)}},"variant");function Wd(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:yn();const n=ie(()=>{const{variant:o}=un(e);return`${t}--variant-${o}`}),{colorClasses:r,colorStyles:s}=wa(()=>{const{variant:o,color:i}=un(e);return{[["elevated","flat"].includes(o)?"background":"text"]:i}});return{colorClasses:r,colorStyles:s,variantClasses:n}}const Gd=me({baseColor:String,divided:Boolean,direction:{type:String,default:"horizontal"},...Bd(),...gn(),...jd(),...Ud(),...Ro(),...hr(),...vn(),..._a()},"VBtnGroup"),Oc=wt()({name:"VBtnGroup",props:Gd(),setup(e,t){let{slots:n}=t;const{themeClasses:r}=jn(e),{densityClasses:s}=Hd(e),{borderClasses:o}=Vd(e),{elevationClasses:i}=qd(e),{roundedClasses:a}=Po(e);Df({VBtn:{height:ie(()=>e.direction==="horizontal"?"auto":null),baseColor:ie(()=>e.baseColor),color:ie(()=>e.color),density:ie(()=>e.density),flat:!0,variant:ie(()=>e.variant)}}),Bt(()=>Z(e.tag,{class:ve(["v-btn-group",`v-btn-group--${e.direction}`,{"v-btn-group--divided":e.divided},r.value,o.value,s.value,i.value,a.value,e.class]),style:Ke(e.style)},n))}}),xw=me({modelValue:{type:null,default:void 0},multiple:Boolean,mandatory:[Boolean,String],max:Number,selectedClass:String,disabled:Boolean},"group"),Cw=me({value:null,disabled:Boolean,selectedClass:String},"group-item");function kw(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;const r=et("useGroupItem");if(!r)throw new Error("[Vuetify] useGroupItem composable must be used inside a component setup function");const s=um();Et(Symbol.for(`${t.description}:id`),s);const o=Pe(t,null);if(!o){if(!n)return o;throw new Error(`[Vuetify] Could not find useGroup injection with symbol ${t.description}`)}const i=ie(()=>e.value),a=M(()=>!!(o.disabled.value||e.disabled));o.register({id:s,value:i,disabled:a},r),cr(()=>{o.unregister(s)});const l=M(()=>o.isSelected(s)),u=M(()=>o.items.value[0].id===s),c=M(()=>o.items.value[o.items.value.length-1].id===s),f=M(()=>l.value&&[o.selectedClass.value,e.selectedClass]);return ye(l,d=>{r.emit("group:selected",{value:d})},{flush:"sync"}),{id:s,isSelected:l,isFirst:u,isLast:c,toggle:()=>o.select(s,!l.value),select:d=>o.select(s,d),selectedClass:f,value:i,disabled:a,group:o}}function Tw(e,t){let n=!1;const r=Be([]),s=ss(e,"modelValue",[],d=>d==null?[]:Kd(r,sg(d)),d=>{const h=Rw(r,d);return e.multiple?h:h[0]}),o=et("useGroup");function i(d,h){const m=d,w=Symbol.for(`${t.description}:id`),b=Yn(w,o==null?void 0:o.vnode).indexOf(h);Me(m.value)==null&&(m.value=b,m.useIndexAsValue=!0),b>-1?r.splice(b,0,m):r.push(m)}function a(d){if(n)return;l();const h=r.findIndex(m=>m.id===d);r.splice(h,1)}function l(){const d=r.find(h=>!h.disabled);d&&e.mandatory==="force"&&!s.value.length&&(s.value=[d.id])}mn(()=>{l()}),cr(()=>{n=!0}),sa(()=>{for(let d=0;dw.id===d);if(!(h&&(m!=null&&m.disabled)))if(e.multiple){const w=s.value.slice(),_=w.findIndex(y=>y===d),b=~_;if(h=h??!b,b&&e.mandatory&&w.length<=1||!b&&e.max!=null&&w.length+1>e.max)return;_<0&&h?w.push(d):_>=0&&!h&&w.splice(_,1),s.value=w}else{const w=s.value.includes(d);if(e.mandatory&&w||!w&&!h)return;s.value=h??!w?[d]:[]}}function c(d){if(e.multiple,s.value.length){const h=s.value[0],m=r.findIndex(b=>b.id===h);let w=(m+d)%r.length,_=r[w];for(;_.disabled&&w!==m;)w=(w+d)%r.length,_=r[w];if(_.disabled)return;s.value=[r[w].id]}else{const h=r.find(m=>!m.disabled);h&&(s.value=[h.id])}}const f={register:i,unregister:a,selected:s,select:u,disabled:ie(()=>e.disabled),prev:()=>c(r.length-1),next:()=>c(1),isSelected:d=>s.value.includes(d),selectedClass:ie(()=>e.selectedClass),items:ie(()=>r),getItemIndex:d=>Aw(r,d)};return Et(t,f),f}function Aw(e,t){const n=Kd(e,[t]);return n.length?e.findIndex(r=>r.id===n[0]):-1}function Kd(e,t){const n=[];return t.forEach(r=>{const s=e.find(i=>tr(r,i.value)),o=e[r];(s==null?void 0:s.value)!=null?n.push(s.id):o!=null&&o.useIndexAsValue&&n.push(o.id)}),n}function Rw(e,t){const n=[];return t.forEach(r=>{const s=e.findIndex(o=>o.id===r);if(~s){const o=e[s];n.push(o.value!=null?o.value:s)}}),n}const Yd=Symbol.for("vuetify:v-btn-toggle"),Pw=me({...Gd(),...xw()},"VBtnToggle");wt()({name:"VBtnToggle",props:Pw(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:n}=t;const{isSelected:r,next:s,prev:o,select:i,selected:a}=Tw(e,Yd);return Bt(()=>{const l=Oc.filterProps(e);return Z(Oc,Xe({class:["v-btn-toggle",e.class]},l,{style:e.style}),{default:()=>{var u;return[(u=n.default)==null?void 0:u.call(n,{isSelected:r,next:s,prev:o,select:i,selected:a})]}})}),{next:s,prev:o,select:i}}});const Ow=me({defaults:Object,disabled:Boolean,reset:[Number,String],root:[Boolean,String],scoped:Boolean},"VDefaultsProvider"),$s=wt(!1)({name:"VDefaultsProvider",props:Ow(),setup(e,t){let{slots:n}=t;const{defaults:r,disabled:s,reset:o,root:i,scoped:a}=ea(e);return Df(r,{reset:o,root:i,scoped:a,disabled:s}),()=>{var l;return(l=n.default)==null?void 0:l.call(n)}}}),$w=["x-small","small","default","large","x-large"],Ea=me({size:{type:[String,Number],default:"default"}},"size");function Sa(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:yn();return ca(()=>{const n=e.size;let r,s;return zs($w,n)?r=`${t}--size-${n}`:n&&(s={width:pe(n),height:pe(n)}),{sizeClasses:r,sizeStyles:s}})}const Fw=me({color:String,disabled:Boolean,start:Boolean,end:Boolean,icon:Zs,opacity:[String,Number],...gn(),...Ea(),...hr({tag:"i"}),...vn()},"VIcon"),Fr=wt()({name:"VIcon",props:Fw(),setup(e,t){let{attrs:n,slots:r}=t;const s=Oe(),{themeClasses:o}=ny(),{iconData:i}=G0(()=>s.value||e.icon),{sizeClasses:a}=Sa(e),{textColorClasses:l,textColorStyles:u}=to(()=>e.color);return Bt(()=>{var d,h;const c=(d=r.default)==null?void 0:d.call(r);c&&(s.value=(h=Af(c).filter(m=>m.type===Qr&&m.children&&typeof m.children=="string")[0])==null?void 0:h.children);const f=!!(n.onClick||n.onClickOnce);return Z(i.value.component,{tag:e.tag,icon:i.value.icon,class:ve(["v-icon","notranslate",o.value,a.value,l.value,{"v-icon--clickable":f,"v-icon--disabled":e.disabled,"v-icon--start":e.start,"v-icon--end":e.end},e.class]),style:Ke([{"--v-icon-opacity":e.opacity},a.value?void 0:{fontSize:pe(e.size),height:pe(e.size),width:pe(e.size)},u.value,e.style]),role:f?"button":void 0,"aria-hidden":!f,tabindex:f?e.disabled?-1:0:void 0},{default:()=>[c]})}),{}}});function Jd(e,t){const n=de(),r=Oe(!1);if(Zp){const s=new IntersectionObserver(o=>{r.value=!!o.find(i=>i.isIntersecting)},t);Qe(()=>{s.disconnect()}),ye(n,(o,i)=>{i&&(s.unobserve(i),r.value=!1),o&&s.observe(o)},{flush:"post"})}return{intersectionRef:n,isIntersecting:r}}const Lw=me({bgColor:String,color:String,indeterminate:[Boolean,String],modelValue:{type:[Number,String],default:0},rotate:{type:[Number,String],default:0},width:{type:[Number,String],default:4},...gn(),...Ea(),...hr({tag:"div"}),...vn()},"VProgressCircular"),Mw=wt()({name:"VProgressCircular",props:Lw(),setup(e,t){let{slots:n}=t;const r=20,s=2*Math.PI*r,o=de(),{themeClasses:i}=jn(e),{sizeClasses:a,sizeStyles:l}=Sa(e),{textColorClasses:u,textColorStyles:c}=to(()=>e.color),{textColorClasses:f,textColorStyles:d}=to(()=>e.bgColor),{intersectionRef:h,isIntersecting:m}=Jd(),{resizeRef:w,contentRect:_}=Gf(),b=ie(()=>sr(parseFloat(e.modelValue),0,100)),y=ie(()=>Number(e.width)),p=ie(()=>l.value?Number(e.size):_.value?_.value.width:Math.max(y.value,32)),k=ie(()=>r/(1-y.value/p.value)*2),S=ie(()=>y.value/p.value*k.value),P=ie(()=>pe((100-b.value)/100*s));return Zt(()=>{h.value=o.value,w.value=o.value}),Bt(()=>Z(e.tag,{ref:o,class:ve(["v-progress-circular",{"v-progress-circular--indeterminate":!!e.indeterminate,"v-progress-circular--visible":m.value,"v-progress-circular--disable-shrink":e.indeterminate==="disable-shrink"},i.value,a.value,u.value,e.class]),style:Ke([l.value,c.value,e.style]),role:"progressbar","aria-valuemin":"0","aria-valuemax":"100","aria-valuenow":e.indeterminate?void 0:b.value},{default:()=>[R("svg",{style:{transform:`rotate(calc(-90deg + ${Number(e.rotate)}deg))`},xmlns:"http://www.w3.org/2000/svg",viewBox:`0 0 ${k.value} ${k.value}`},[R("circle",{class:ve(["v-progress-circular__underlay",f.value]),style:Ke(d.value),fill:"transparent",cx:"50%",cy:"50%",r,"stroke-width":S.value,"stroke-dasharray":s,"stroke-dashoffset":0},null),R("circle",{class:"v-progress-circular__overlay",fill:"transparent",cx:"50%",cy:"50%",r,"stroke-width":S.value,"stroke-dasharray":s,"stroke-dashoffset":P.value},null)]),n.default&&R("div",{class:"v-progress-circular__content"},[n.default({value:b.value})])]})),{}}}),xa=me({height:[Number,String],maxHeight:[Number,String],maxWidth:[Number,String],minHeight:[Number,String],minWidth:[Number,String],width:[Number,String]},"dimension");function Ca(e){return{dimensionStyles:M(()=>{const n={},r=pe(e.height),s=pe(e.maxHeight),o=pe(e.maxWidth),i=pe(e.minHeight),a=pe(e.minWidth),l=pe(e.width);return r!=null&&(n.height=r),s!=null&&(n.maxHeight=s),o!=null&&(n.maxWidth=o),i!=null&&(n.minHeight=i),a!=null&&(n.minWidth=a),l!=null&&(n.width=l),n})}}const $c={center:"center",top:"bottom",bottom:"top",left:"right",right:"left"},ka=me({location:String},"location");function Zd(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,n=arguments.length>2?arguments[2]:void 0;const{isRtl:r}=bo();return{locationStyles:M(()=>{if(!e.location)return{};const{side:o,align:i}=Ei(e.location.split(" ").length>1?e.location:`${e.location} center`,r.value);function a(u){return n?n(u):0}const l={};return o!=="center"&&(t?l[$c[o]]=`calc(100% - ${a(o)}px)`:l[o]=0),i!=="center"?t?l[$c[i]]=`calc(100% - ${a(i)}px)`:l[i]=0:(o==="center"?l.top=l.left="50%":l[{top:"left",bottom:"left",left:"top",right:"top"}[o]]="50%",l.transform={top:"translateX(-50%)",bottom:"translateX(-50%)",left:"translateY(-50%)",right:"translateY(-50%)",center:"translate(-50%, -50%)"}[o]),l})}}const Dw=me({absolute:Boolean,active:{type:Boolean,default:!0},bgColor:String,bgOpacity:[Number,String],bufferValue:{type:[Number,String],default:0},bufferColor:String,bufferOpacity:[Number,String],clickable:Boolean,color:String,height:{type:[Number,String],default:4},indeterminate:Boolean,max:{type:[Number,String],default:100},modelValue:{type:[Number,String],default:0},opacity:[Number,String],reverse:Boolean,stream:Boolean,striped:Boolean,roundedBar:Boolean,...gn(),...ka({location:"top"}),...Ro(),...hr(),...vn()},"VProgressLinear"),Xd=wt()({name:"VProgressLinear",props:Dw(),emits:{"update:modelValue":e=>!0},setup(e,t){var V;let{slots:n}=t;const r=ss(e,"modelValue"),{isRtl:s,rtlClasses:o}=bo(),{themeClasses:i}=jn(e),{locationStyles:a}=Zd(e),{textColorClasses:l,textColorStyles:u}=to(()=>e.color),{backgroundColorClasses:c,backgroundColorStyles:f}=Os(()=>e.bgColor||e.color),{backgroundColorClasses:d,backgroundColorStyles:h}=Os(()=>e.bufferColor||e.bgColor||e.color),{backgroundColorClasses:m,backgroundColorStyles:w}=Os(()=>e.color),{roundedClasses:_}=Po(e),{intersectionRef:b,isIntersecting:y}=Jd(),p=M(()=>parseFloat(e.max)),k=M(()=>parseFloat(e.height)),S=M(()=>sr(parseFloat(e.bufferValue)/p.value*100,0,100)),P=M(()=>sr(parseFloat(r.value)/p.value*100,0,100)),D=M(()=>s.value!==e.reverse),x=M(()=>e.indeterminate?"fade-transition":"slide-x-transition"),A=$e&&((V=window.matchMedia)==null?void 0:V.call(window,"(forced-colors: active)").matches);function B(L){if(!b.value)return;const{left:G,right:se,width:X}=b.value.getBoundingClientRect(),oe=D.value?X-L.clientX+(se-X):L.clientX-G;r.value=Math.round(oe/X*p.value)}return Bt(()=>Z(e.tag,{ref:b,class:ve(["v-progress-linear",{"v-progress-linear--absolute":e.absolute,"v-progress-linear--active":e.active&&y.value,"v-progress-linear--reverse":D.value,"v-progress-linear--rounded":e.rounded,"v-progress-linear--rounded-bar":e.roundedBar,"v-progress-linear--striped":e.striped,"v-progress-linear--clickable":e.clickable},_.value,i.value,o.value,e.class]),style:Ke([{bottom:e.location==="bottom"?0:void 0,top:e.location==="top"?0:void 0,height:e.active?pe(k.value):0,"--v-progress-linear-height":pe(k.value),...e.absolute?a.value:{}},e.style]),role:"progressbar","aria-hidden":e.active?"false":"true","aria-valuemin":"0","aria-valuemax":e.max,"aria-valuenow":e.indeterminate?void 0:Math.min(parseFloat(r.value),p.value),onClick:e.clickable&&B},{default:()=>[e.stream&&R("div",{key:"stream",class:ve(["v-progress-linear__stream",l.value]),style:{...u.value,[D.value?"left":"right"]:pe(-k.value),borderTop:`${pe(k.value/2)} dotted`,opacity:parseFloat(e.bufferOpacity),top:`calc(50% - ${pe(k.value/4)})`,width:pe(100-S.value,"%"),"--v-progress-linear-stream-to":pe(k.value*(D.value?1:-1))}},null),R("div",{class:ve(["v-progress-linear__background",A?void 0:c.value]),style:Ke([f.value,{opacity:parseFloat(e.bgOpacity),width:e.stream?0:void 0}])},null),R("div",{class:ve(["v-progress-linear__buffer",A?void 0:d.value]),style:Ke([h.value,{opacity:parseFloat(e.bufferOpacity),width:pe(S.value,"%")}])},null),Z(er,{name:x.value},{default:()=>[e.indeterminate?R("div",{class:"v-progress-linear__indeterminate"},[["long","short"].map(L=>R("div",{key:L,class:ve(["v-progress-linear__indeterminate",L,A?void 0:m.value]),style:Ke(w.value)},null))]):R("div",{class:ve(["v-progress-linear__determinate",A?void 0:m.value]),style:Ke([w.value,{width:pe(P.value,"%")}])},null)]}),n.default&&R("div",{class:"v-progress-linear__content"},[n.default({value:P.value,buffer:S.value})])]})),{}}}),Iw=me({loading:[Boolean,String]},"loader");function Nw(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:yn();return{loaderClasses:ie(()=>({[`${t}--loading`]:e.loading}))}}function rE(e,t){var r;let{slots:n}=t;return R("div",{class:ve(`${e.name}__loader`)},[((r=n.default)==null?void 0:r.call(n,{color:e.color,isActive:e.active}))||Z(Xd,{absolute:e.absolute,active:e.active,color:e.color,height:"2",indeterminate:!0},null)])}const Bw=["static","relative","fixed","absolute","sticky"],Qd=me({position:{type:String,validator:e=>Bw.includes(e)}},"position");function eh(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:yn();return{positionClasses:ie(()=>e.position?`${t}--${e.position}`:void 0)}}function Vw(){const e=et("useRoute");return M(()=>{var t;return(t=e==null?void 0:e.proxy)==null?void 0:t.$route})}function jw(){var e,t;return(t=(e=et("useRouter"))==null?void 0:e.proxy)==null?void 0:t.$router}function Hw(e,t){var c,f;const n=wm("RouterLink"),r=ie(()=>!!(e.href||e.to)),s=M(()=>(r==null?void 0:r.value)||Cl(t,"click")||Cl(e,"click"));if(typeof n=="string"||!("useLink"in n)){const d=ie(()=>e.href);return{isLink:r,isClickable:s,href:d,linkProps:Be({href:d})}}const o=n.useLink({to:ie(()=>e.to||""),replace:ie(()=>e.replace)}),i=M(()=>e.to?o:void 0),a=Vw(),l=M(()=>{var d,h,m;return i.value?e.exact?a.value?((m=i.value.isExactActive)==null?void 0:m.value)&&tr(i.value.route.value.query,a.value.query):((h=i.value.isExactActive)==null?void 0:h.value)??!1:((d=i.value.isActive)==null?void 0:d.value)??!1:!1}),u=M(()=>{var d;return e.to?(d=i.value)==null?void 0:d.route.value.href:e.href});return{isLink:r,isClickable:s,isActive:l,route:(c=i.value)==null?void 0:c.route,navigate:(f=i.value)==null?void 0:f.navigate,href:u,linkProps:Be({href:u,"aria-current":ie(()=>l.value?"page":void 0)})}}const Uw=me({href:String,replace:Boolean,to:[String,Object],exact:Boolean},"router");let Qo=!1;function qw(e,t){let n=!1,r,s;$e&&(e!=null&&e.beforeEach)&&(bt(()=>{window.addEventListener("popstate",o),r=e.beforeEach((i,a,l)=>{Qo?n?t(l):l():setTimeout(()=>n?t(l):l()),Qo=!0}),s=e==null?void 0:e.afterEach(()=>{Qo=!1})}),Qe(()=>{window.removeEventListener("popstate",o),r==null||r(),s==null||s()}));function o(i){var a;(a=i.state)!=null&&a.replaced||(n=!0,setTimeout(()=>n=!1))}}function zw(e,t){ye(()=>{var n;return(n=e.isActive)==null?void 0:n.value},n=>{e.isLink.value&&n!=null&&t&&bt(()=>{t(n)})},{immediate:!0})}const Bi=Symbol("rippleStop"),Ww=80;function Fc(e,t){e.style.transform=t,e.style.webkitTransform=t}function Vi(e){return e.constructor.name==="TouchEvent"}function th(e){return e.constructor.name==="KeyboardEvent"}const Gw=function(e,t){var f;let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=0,s=0;if(!th(e)){const d=t.getBoundingClientRect(),h=Vi(e)?e.touches[e.touches.length-1]:e;r=h.clientX-d.left,s=h.clientY-d.top}let o=0,i=.3;(f=t._ripple)!=null&&f.circle?(i=.15,o=t.clientWidth/2,o=n.center?o:o+Math.sqrt((r-o)**2+(s-o)**2)/4):o=Math.sqrt(t.clientWidth**2+t.clientHeight**2)/2;const a=`${(t.clientWidth-o*2)/2}px`,l=`${(t.clientHeight-o*2)/2}px`,u=n.center?a:`${r-o}px`,c=n.center?l:`${s-o}px`;return{radius:o,scale:i,x:u,y:c,centerX:a,centerY:l}},no={show(e,t){var h;let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(!((h=t==null?void 0:t._ripple)!=null&&h.enabled))return;const r=document.createElement("span"),s=document.createElement("span");r.appendChild(s),r.className="v-ripple__container",n.class&&(r.className+=` ${n.class}`);const{radius:o,scale:i,x:a,y:l,centerX:u,centerY:c}=Gw(e,t,n),f=`${o*2}px`;s.className="v-ripple__animation",s.style.width=f,s.style.height=f,t.appendChild(r);const d=window.getComputedStyle(t);d&&d.position==="static"&&(t.style.position="relative",t.dataset.previousPosition="static"),s.classList.add("v-ripple__animation--enter"),s.classList.add("v-ripple__animation--visible"),Fc(s,`translate(${a}, ${l}) scale3d(${i},${i},${i})`),s.dataset.activated=String(performance.now()),requestAnimationFrame(()=>{requestAnimationFrame(()=>{s.classList.remove("v-ripple__animation--enter"),s.classList.add("v-ripple__animation--in"),Fc(s,`translate(${u}, ${c}) scale3d(1,1,1)`)})})},hide(e){var o;if(!((o=e==null?void 0:e._ripple)!=null&&o.enabled))return;const t=e.getElementsByClassName("v-ripple__animation");if(t.length===0)return;const n=Array.from(t).findLast(i=>!i.dataset.isHiding);if(n)n.dataset.isHiding="true";else return;const r=performance.now()-Number(n.dataset.activated),s=Math.max(250-r,0);setTimeout(()=>{n.classList.remove("v-ripple__animation--in"),n.classList.add("v-ripple__animation--out"),setTimeout(()=>{var a;e.getElementsByClassName("v-ripple__animation").length===1&&e.dataset.previousPosition&&(e.style.position=e.dataset.previousPosition,delete e.dataset.previousPosition),((a=n.parentNode)==null?void 0:a.parentNode)===e&&e.removeChild(n.parentNode)},300)},s)}};function nh(e){return typeof e>"u"||!!e}function Gr(e){const t={},n=e.currentTarget;if(!(!(n!=null&&n._ripple)||n._ripple.touched||e[Bi])){if(e[Bi]=!0,Vi(e))n._ripple.touched=!0,n._ripple.isTouch=!0;else if(n._ripple.isTouch)return;if(t.center=n._ripple.centered||th(e),n._ripple.class&&(t.class=n._ripple.class),Vi(e)){if(n._ripple.showTimerCommit)return;n._ripple.showTimerCommit=()=>{no.show(e,n,t)},n._ripple.showTimer=window.setTimeout(()=>{var r;(r=n==null?void 0:n._ripple)!=null&&r.showTimerCommit&&(n._ripple.showTimerCommit(),n._ripple.showTimerCommit=null)},Ww)}else no.show(e,n,t)}}function Lc(e){e[Bi]=!0}function ft(e){const t=e.currentTarget;if(t!=null&&t._ripple){if(window.clearTimeout(t._ripple.showTimer),e.type==="touchend"&&t._ripple.showTimerCommit){t._ripple.showTimerCommit(),t._ripple.showTimerCommit=null,t._ripple.showTimer=window.setTimeout(()=>{ft(e)});return}window.setTimeout(()=>{t._ripple&&(t._ripple.touched=!1)}),no.hide(t)}}function rh(e){const t=e.currentTarget;t!=null&&t._ripple&&(t._ripple.showTimerCommit&&(t._ripple.showTimerCommit=null),window.clearTimeout(t._ripple.showTimer))}let Kr=!1;function Mc(e,t){!Kr&&t.includes(e.key)&&(Kr=!0,Gr(e))}function sh(e){Kr=!1,ft(e)}function oh(e){Kr&&(Kr=!1,ft(e))}function ih(e,t,n){const{value:r,modifiers:s}=t,o=nh(r);o||no.hide(e),e._ripple=e._ripple??{},e._ripple.enabled=o,e._ripple.centered=s.center,e._ripple.circle=s.circle;const i=wi(r)?r:{};i.class&&(e._ripple.class=i.class);const a=i.keys??["Enter","Space"];if(e._ripple.keyDownHandler=l=>Mc(l,a),o&&!n){if(s.stop){e.addEventListener("touchstart",Lc,{passive:!0}),e.addEventListener("mousedown",Lc);return}e.addEventListener("touchstart",Gr,{passive:!0}),e.addEventListener("touchend",ft,{passive:!0}),e.addEventListener("touchmove",rh,{passive:!0}),e.addEventListener("touchcancel",ft),e.addEventListener("mousedown",Gr),e.addEventListener("mouseup",ft),e.addEventListener("mouseleave",ft),e.addEventListener("keydown",l=>Mc(l,a)),e.addEventListener("keyup",sh),e.addEventListener("blur",oh),e.addEventListener("dragstart",ft,{passive:!0})}else!o&&n&&ah(e)}function ah(e){var t;e.removeEventListener("mousedown",Gr),e.removeEventListener("touchstart",Gr),e.removeEventListener("touchend",ft),e.removeEventListener("touchmove",rh),e.removeEventListener("touchcancel",ft),e.removeEventListener("mouseup",ft),e.removeEventListener("mouseleave",ft),(t=e._ripple)!=null&&t.keyDownHandler&&e.removeEventListener("keydown",e._ripple.keyDownHandler),e.removeEventListener("keyup",sh),e.removeEventListener("dragstart",ft),e.removeEventListener("blur",oh)}function Kw(e,t){ih(e,t,!1)}function Yw(e){ah(e),delete e._ripple}function Jw(e,t){if(t.value===t.oldValue)return;const n=nh(t.oldValue);ih(e,t,n)}const Zw={mounted:Kw,unmounted:Yw,updated:Jw},Xw=me({active:{type:Boolean,default:void 0},activeColor:String,baseColor:String,symbol:{type:null,default:Yd},flat:Boolean,icon:[Boolean,String,Function,Object],prependIcon:Zs,appendIcon:Zs,block:Boolean,readonly:Boolean,slim:Boolean,stacked:Boolean,ripple:{type:[Boolean,Object],default:!0},text:{type:[String,Number,Boolean],default:void 0},...Bd(),...gn(),...jd(),...xa(),...Ud(),...Cw(),...Iw(),...ka(),...Qd(),...Ro(),...Uw(),...Ea(),...hr({tag:"button"}),...vn(),..._a({variant:"elevated"})},"VBtn"),Qw=wt()({name:"VBtn",props:Xw(),emits:{"group:selected":e=>!0},setup(e,t){let{attrs:n,slots:r}=t;const{themeClasses:s}=jn(e),{borderClasses:o}=Vd(e),{densityClasses:i}=Hd(e),{dimensionStyles:a}=Ca(e),{elevationClasses:l}=qd(e),{loaderClasses:u}=Nw(e),{locationStyles:c}=Zd(e),{positionClasses:f}=eh(e),{roundedClasses:d}=Po(e),{sizeClasses:h,sizeStyles:m}=Sa(e),w=kw(e,e.symbol,!1),_=Hw(e,n),b=M(()=>{var V;return e.active!==void 0?e.active:_.isLink.value?(V=_.isActive)==null?void 0:V.value:w==null?void 0:w.isSelected.value}),y=ie(()=>b.value?e.activeColor??e.color:e.color),p=M(()=>{var L,G;return{color:(w==null?void 0:w.isSelected.value)&&(!_.isLink.value||((L=_.isActive)==null?void 0:L.value))||!w||((G=_.isActive)==null?void 0:G.value)?y.value??e.baseColor:e.baseColor,variant:e.variant}}),{colorClasses:k,colorStyles:S,variantClasses:P}=Wd(p),D=M(()=>(w==null?void 0:w.disabled.value)||e.disabled),x=ie(()=>e.variant==="elevated"&&!(e.disabled||e.flat||e.border)),A=M(()=>{if(!(e.value===void 0||typeof e.value=="symbol"))return Object(e.value)===e.value?JSON.stringify(e.value,null,0):e.value});function B(V){var L;D.value||_.isLink.value&&(V.metaKey||V.ctrlKey||V.shiftKey||V.button!==0||n.target==="_blank")||((L=_.navigate)==null||L.call(_,V),w==null||w.toggle())}return zw(_,w==null?void 0:w.select),Bt(()=>{const V=_.isLink.value?"a":e.tag,L=!!(e.prependIcon||r.prepend),G=!!(e.appendIcon||r.append),se=!!(e.icon&&e.icon!==!0);return Vs(Z(V,Xe({type:V==="a"?void 0:"button",class:["v-btn",w==null?void 0:w.selectedClass.value,{"v-btn--active":b.value,"v-btn--block":e.block,"v-btn--disabled":D.value,"v-btn--elevated":x.value,"v-btn--flat":e.flat,"v-btn--icon":!!e.icon,"v-btn--loading":e.loading,"v-btn--readonly":e.readonly,"v-btn--slim":e.slim,"v-btn--stacked":e.stacked},s.value,o.value,k.value,i.value,l.value,u.value,f.value,d.value,h.value,P.value,e.class],style:[S.value,a.value,c.value,m.value,e.style],"aria-busy":e.loading?!0:void 0,disabled:D.value||void 0,tabindex:e.loading||e.readonly?-1:void 0,onClick:B,value:A.value},_.linkProps),{default:()=>{var X;return[zd(!0,"v-btn"),!e.icon&&L&&R("span",{key:"prepend",class:"v-btn__prepend"},[r.prepend?Z($s,{key:"prepend-defaults",disabled:!e.prependIcon,defaults:{VIcon:{icon:e.prependIcon}}},r.prepend):Z(Fr,{key:"prepend-icon",icon:e.prependIcon},null)]),R("span",{class:"v-btn__content","data-no-activator":""},[!r.default&&se?Z(Fr,{key:"content-icon",icon:e.icon},null):Z($s,{key:"content-defaults",disabled:!se,defaults:{VIcon:{icon:e.icon}}},{default:()=>{var oe;return[((oe=r.default)==null?void 0:oe.call(r))??pt(e.text)]}})]),!e.icon&&G&&R("span",{key:"append",class:"v-btn__append"},[r.append?Z($s,{key:"append-defaults",disabled:!e.appendIcon,defaults:{VIcon:{icon:e.appendIcon}}},r.append):Z(Fr,{key:"append-icon",icon:e.appendIcon},null)]),!!e.loading&&R("span",{key:"loader",class:"v-btn__loader"},[((X=r.loader)==null?void 0:X.call(r))??Z(Mw,{color:typeof e.loading=="boolean"?void 0:e.loading,indeterminate:!0,width:"2"},null)])]}}),[[Zw,!D.value&&e.ripple,"",{center:!!e.icon}]])}),{group:w}}});function ei(e,t){return{x:e.x+t.x,y:e.y+t.y}}function e2(e,t){return{x:e.x-t.x,y:e.y-t.y}}function Dc(e,t){if(e.side==="top"||e.side==="bottom"){const{side:n,align:r}=e,s=r==="left"?0:r==="center"?t.width/2:r==="right"?t.width:r,o=n==="top"?0:n==="bottom"?t.height:n;return ei({x:s,y:o},t)}else if(e.side==="left"||e.side==="right"){const{side:n,align:r}=e,s=n==="left"?0:n==="right"?t.width:n,o=r==="top"?0:r==="center"?t.height/2:r==="bottom"?t.height:r;return ei({x:s,y:o},t)}return ei({x:t.width/2,y:t.height/2},t)}const lh={static:r2,connected:o2},t2=me({locationStrategy:{type:[String,Function],default:"static",validator:e=>typeof e=="function"||e in lh},location:{type:String,default:"bottom"},origin:{type:String,default:"auto"},offset:[Number,String,Array]},"VOverlay-location-strategies");function n2(e,t){const n=de({}),r=de();$e&&ns(()=>!!(t.isActive.value&&e.locationStrategy),a=>{var l,u;ye(()=>e.locationStrategy,a),Qe(()=>{window.removeEventListener("resize",s),visualViewport==null||visualViewport.removeEventListener("resize",o),visualViewport==null||visualViewport.removeEventListener("scroll",i),r.value=void 0}),window.addEventListener("resize",s,{passive:!0}),visualViewport==null||visualViewport.addEventListener("resize",o,{passive:!0}),visualViewport==null||visualViewport.addEventListener("scroll",i,{passive:!0}),typeof e.locationStrategy=="function"?r.value=(l=e.locationStrategy(t,e,n))==null?void 0:l.updateLocation:r.value=(u=lh[e.locationStrategy](t,e,n))==null?void 0:u.updateLocation});function s(a){var l;(l=r.value)==null||l.call(r,a)}function o(a){var l;(l=r.value)==null||l.call(r,a)}function i(a){var l;(l=r.value)==null||l.call(r,a)}return{contentStyles:n,updateLocation:r}}function r2(){}function s2(e,t){const n=hg(e);return t?n.x+=parseFloat(e.style.right||0):n.x-=parseFloat(e.style.left||0),n.y-=parseFloat(e.style.top||0),n}function o2(e,t,n){(Array.isArray(e.target.value)||Gg(e.target.value))&&Object.assign(n.value,{position:"fixed",top:0,[e.isRtl.value?"right":"left"]:0});const{preferredAnchor:s,preferredOrigin:o}=ca(()=>{const b=Ei(t.location,e.isRtl.value),y=t.origin==="overlap"?b:t.origin==="auto"?qo(b):Ei(t.origin,e.isRtl.value);return b.side===y.side&&b.align===zo(y).align?{preferredAnchor:Tl(b),preferredOrigin:Tl(y)}:{preferredAnchor:b,preferredOrigin:y}}),[i,a,l,u]=["minWidth","minHeight","maxWidth","maxHeight"].map(b=>M(()=>{const y=parseFloat(t[b]);return isNaN(y)?1/0:y})),c=M(()=>{if(Array.isArray(t.offset))return t.offset;if(typeof t.offset=="string"){const b=t.offset.split(" ").map(parseFloat);return b.length<2&&b.push(0),b}return typeof t.offset=="number"?[t.offset,0]:[0,0]});let f=!1,d=-1;const h=new ig(4),m=new ResizeObserver(()=>{if(!f)return;if(requestAnimationFrame(y=>{y!==d&&h.clear(),requestAnimationFrame(p=>{d=p})}),h.isFull){const y=h.values();if(tr(y.at(-1),y.at(-3))&&!tr(y.at(-1),y.at(-2)))return}const b=_();b&&h.push(b.flipped)});let w=new Nt({x:0,y:0,width:0,height:0});ye(e.target,(b,y)=>{y&&!Array.isArray(y)&&m.unobserve(y),Array.isArray(b)?tr(b,y)||_():b&&m.observe(b)},{immediate:!0}),ye(e.contentEl,(b,y)=>{y&&m.unobserve(y),b&&m.observe(b)},{immediate:!0}),Qe(()=>{m.disconnect()});function _(){if(f=!1,requestAnimationFrame(()=>f=!0),!e.target.value||!e.contentEl.value)return;(Array.isArray(e.target.value)||e.target.value.offsetParent||e.target.value.getClientRects().length)&&(w=fg(e.target.value));const b=s2(e.contentEl.value,e.isRtl.value),y=Gs(e.contentEl.value),p=12;y.length||(y.push(document.documentElement),e.contentEl.value.style.top&&e.contentEl.value.style.left||(b.x-=parseFloat(document.documentElement.style.getPropertyValue("--v-body-scroll-x")||0),b.y-=parseFloat(document.documentElement.style.getPropertyValue("--v-body-scroll-y")||0)));const k=y.reduce((G,se)=>{const X=dg(se);return G?new Nt({x:Math.max(G.left,X.left),y:Math.max(G.top,X.top),width:Math.min(G.right,X.right)-Math.max(G.left,X.left),height:Math.min(G.bottom,X.bottom)-Math.max(G.top,X.top)}):X},void 0);k.x+=p,k.y+=p,k.width-=p*2,k.height-=p*2;let S={anchor:s.value,origin:o.value};function P(G){const se=new Nt(b),X=Dc(G.anchor,w),oe=Dc(G.origin,se);let{x:ee,y:ce}=e2(X,oe);switch(G.anchor.side){case"top":ce-=c.value[0];break;case"bottom":ce+=c.value[0];break;case"left":ee-=c.value[0];break;case"right":ee+=c.value[0];break}switch(G.anchor.align){case"top":ce-=c.value[1];break;case"bottom":ce+=c.value[1];break;case"left":ee-=c.value[1];break;case"right":ee+=c.value[1];break}return se.x+=ee,se.y+=ce,se.width=Math.min(se.width,l.value),se.height=Math.min(se.height,u.value),{overflows:Rl(se,k),x:ee,y:ce}}let D=0,x=0;const A={x:0,y:0},B={x:!1,y:!1};let V=-1;for(;!(V++>10);){const{x:G,y:se,overflows:X}=P(S);D+=G,x+=se,b.x+=G,b.y+=se;{const oe=Al(S.anchor),ee=X.x.before||X.x.after,ce=X.y.before||X.y.after;let Ne=!1;if(["x","y"].forEach(Ce=>{if(Ce==="x"&&ee&&!B.x||Ce==="y"&&ce&&!B.y){const Le={anchor:{...S.anchor},origin:{...S.origin}},Re=Ce==="x"?oe==="y"?zo:qo:oe==="y"?qo:zo;Le.anchor=Re(Le.anchor),Le.origin=Re(Le.origin);const{overflows:je}=P(Le);(je[Ce].before<=X[Ce].before&&je[Ce].after<=X[Ce].after||je[Ce].before+je[Ce].after<(X[Ce].before+X[Ce].after)/2)&&(S=Le,Ne=B[Ce]=!0)}}),Ne)continue}X.x.before&&(D+=X.x.before,b.x+=X.x.before),X.x.after&&(D-=X.x.after,b.x-=X.x.after),X.y.before&&(x+=X.y.before,b.y+=X.y.before),X.y.after&&(x-=X.y.after,b.y-=X.y.after);{const oe=Rl(b,k);A.x=k.width-oe.x.before-oe.x.after,A.y=k.height-oe.y.before-oe.y.after,D+=oe.x.before,b.x+=oe.x.before,x+=oe.y.before,b.y+=oe.y.before}break}const L=Al(S.anchor);return Object.assign(n.value,{"--v-overlay-anchor-origin":`${S.anchor.side} ${S.anchor.align}`,transformOrigin:`${S.origin.side} ${S.origin.align}`,top:pe(ti(x)),left:e.isRtl.value?void 0:pe(ti(D)),right:e.isRtl.value?pe(ti(-D)):void 0,minWidth:pe(L==="y"?Math.min(i.value,w.width):i.value),maxWidth:pe(Ic(sr(A.x,i.value===1/0?0:i.value,l.value))),maxHeight:pe(Ic(sr(A.y,a.value===1/0?0:a.value,u.value)))}),{available:A,contentBox:b,flipped:B}}return ye(()=>[s.value,o.value,t.offset,t.minWidth,t.minHeight,t.maxWidth,t.maxHeight],()=>_()),bt(()=>{const b=_();if(!b)return;const{available:y,contentBox:p}=b;p.height>y.y&&requestAnimationFrame(()=>{_(),requestAnimationFrame(()=>{_()})})}),{updateLocation:_}}function ti(e){return Math.round(e*devicePixelRatio)/devicePixelRatio}function Ic(e){return Math.ceil(e*devicePixelRatio)/devicePixelRatio}let ji=!0;const ro=[];function i2(e){!ji||ro.length?(ro.push(e),Hi()):(ji=!1,e(),Hi())}let Nc=-1;function Hi(){cancelAnimationFrame(Nc),Nc=requestAnimationFrame(()=>{const e=ro.shift();e&&e(),ro.length?Hi():ji=!0})}const Fs={none:null,close:c2,block:u2,reposition:f2},a2=me({scrollStrategy:{type:[String,Function],default:"block",validator:e=>typeof e=="function"||e in Fs}},"VOverlay-scroll-strategies");function l2(e,t){if(!$e)return;let n;Zt(async()=>{n==null||n.stop(),t.isActive.value&&e.scrollStrategy&&(n=In(),await new Promise(r=>setTimeout(r)),n.active&&n.run(()=>{var r;typeof e.scrollStrategy=="function"?e.scrollStrategy(t,e,n):(r=Fs[e.scrollStrategy])==null||r.call(Fs,t,e,n)}))}),Qe(()=>{n==null||n.stop()})}function c2(e){function t(n){e.isActive.value=!1}ch(e.target.value??e.contentEl.value,t)}function u2(e,t){var a;const n=(a=e.root.value)==null?void 0:a.offsetParent,r=Array.isArray(e.target.value)?document.elementFromPoint(...e.target.value):e.target.value,s=[...new Set([...Gs(r,t.contained?n:void 0),...Gs(e.contentEl.value,t.contained?n:void 0)])].filter(l=>!l.classList.contains("v-overlay-scroll-blocked")),o=window.innerWidth-document.documentElement.offsetWidth,i=(l=>da(l)&&l)(n||document.documentElement);i&&e.root.value.classList.add("v-overlay--scroll-blocked"),s.forEach((l,u)=>{l.style.setProperty("--v-body-scroll-x",pe(-l.scrollLeft)),l.style.setProperty("--v-body-scroll-y",pe(-l.scrollTop)),l!==document.documentElement&&l.style.setProperty("--v-scrollbar-offset",pe(o)),l.classList.add("v-overlay-scroll-blocked")}),Qe(()=>{s.forEach((l,u)=>{const c=parseFloat(l.style.getPropertyValue("--v-body-scroll-x")),f=parseFloat(l.style.getPropertyValue("--v-body-scroll-y")),d=l.style.scrollBehavior;l.style.scrollBehavior="auto",l.style.removeProperty("--v-body-scroll-x"),l.style.removeProperty("--v-body-scroll-y"),l.style.removeProperty("--v-scrollbar-offset"),l.classList.remove("v-overlay-scroll-blocked"),l.scrollLeft=-c,l.scrollTop=-f,l.style.scrollBehavior=d}),i&&e.root.value.classList.remove("v-overlay--scroll-blocked")})}function f2(e,t,n){let r=!1,s=-1,o=-1;function i(a){i2(()=>{var c,f;const l=performance.now();(f=(c=e.updateLocation).value)==null||f.call(c,a),r=(performance.now()-l)/(1e3/60)>2})}o=(typeof requestIdleCallback>"u"?a=>a():requestIdleCallback)(()=>{n.run(()=>{ch(e.target.value??e.contentEl.value,a=>{r?(cancelAnimationFrame(s),s=requestAnimationFrame(()=>{s=requestAnimationFrame(()=>{i(a)})})):i(a)})})}),Qe(()=>{typeof cancelIdleCallback<"u"&&cancelIdleCallback(o),cancelAnimationFrame(s)})}function ch(e,t){const n=Array.isArray(e)?document.elementFromPoint(...e):e,r=[document,...Gs(n)];r.forEach(s=>{s.addEventListener("scroll",t,{passive:!0})}),Qe(()=>{r.forEach(s=>{s.removeEventListener("scroll",t)})})}const d2=Symbol.for("vuetify:v-menu"),h2=me({closeDelay:[Number,String],openDelay:[Number,String]},"delay");function m2(e,t){let n=()=>{};function r(i){n==null||n();const a=Number(i?e.openDelay:e.closeDelay);return new Promise(l=>{n=lg(a,()=>{t==null||t(i),l(i)})})}function s(){return r(!0)}function o(){return r(!1)}return{clearDelay:n,runOpenDelay:s,runCloseDelay:o}}const p2=me({target:[String,Object],activator:[String,Object],activatorProps:{type:Object,default:()=>({})},openOnClick:{type:Boolean,default:void 0},openOnHover:Boolean,openOnFocus:{type:Boolean,default:void 0},closeOnContentClick:Boolean,...h2()},"VOverlay-activator");function g2(e,t){let{isActive:n,isTop:r,contentEl:s}=t;const o=et("useActivator"),i=de();let a=!1,l=!1,u=!0;const c=M(()=>e.openOnFocus||e.openOnFocus==null&&e.openOnHover),f=M(()=>e.openOnClick||e.openOnClick==null&&!e.openOnHover&&!c.value),{runOpenDelay:d,runCloseDelay:h}=m2(e,x=>{x===(e.openOnHover&&a||c.value&&l)&&!(e.openOnHover&&n.value&&!r.value)&&(n.value!==x&&(u=!0),n.value=x)}),m=de(),w={onClick:x=>{x.stopPropagation(),i.value=x.currentTarget||x.target,n.value||(m.value=[x.clientX,x.clientY]),n.value=!n.value},onMouseenter:x=>{var A;(A=x.sourceCapabilities)!=null&&A.firesTouchEvents||(a=!0,i.value=x.currentTarget||x.target,d())},onMouseleave:x=>{a=!1,h()},onFocus:x=>{ag(x.target,":focus-visible")!==!1&&(l=!0,x.stopPropagation(),i.value=x.currentTarget||x.target,d())},onBlur:x=>{l=!1,x.stopPropagation(),h()}},_=M(()=>{const x={};return f.value&&(x.onClick=w.onClick),e.openOnHover&&(x.onMouseenter=w.onMouseenter,x.onMouseleave=w.onMouseleave),c.value&&(x.onFocus=w.onFocus,x.onBlur=w.onBlur),x}),b=M(()=>{const x={};if(e.openOnHover&&(x.onMouseenter=()=>{a=!0,d()},x.onMouseleave=()=>{a=!1,h()}),c.value&&(x.onFocusin=()=>{l=!0,d()},x.onFocusout=()=>{l=!1,h()}),e.closeOnContentClick){const A=Pe(d2,null);x.onClick=()=>{n.value=!1,A==null||A.closeParents()}}return x}),y=M(()=>{const x={};return e.openOnHover&&(x.onMouseenter=()=>{u&&(a=!0,u=!1,d())},x.onMouseleave=()=>{a=!1,h()}),x});ye(r,x=>{var A;x&&(e.openOnHover&&!a&&(!c.value||!l)||c.value&&!l&&(!e.openOnHover||!a))&&!((A=s.value)!=null&&A.contains(document.activeElement))&&(n.value=!1)}),ye(n,x=>{x||setTimeout(()=>{m.value=void 0})},{flush:"post"});const p=_i();Zt(()=>{p.value&&bt(()=>{i.value=p.el})});const k=_i(),S=M(()=>e.target==="cursor"&&m.value?m.value:k.value?k.el:uh(e.target,o)||i.value),P=M(()=>Array.isArray(S.value)?void 0:S.value);let D;return ye(()=>!!e.activator,x=>{x&&$e?(D=In(),D.run(()=>{y2(e,o,{activatorEl:i,activatorEvents:_})})):D&&D.stop()},{flush:"post",immediate:!0}),Qe(()=>{D==null||D.stop()}),{activatorEl:i,activatorRef:p,target:S,targetEl:P,targetRef:k,activatorEvents:_,contentEvents:b,scrimEvents:y}}function y2(e,t,n){let{activatorEl:r,activatorEvents:s}=n;ye(()=>e.activator,(l,u)=>{if(u&&l!==u){const c=a(u);c&&i(c)}l&&bt(()=>o())},{immediate:!0}),ye(()=>e.activatorProps,()=>{o()}),Qe(()=>{i()});function o(){let l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:a(),u=arguments.length>1&&arguments[1]!==void 0?arguments[1]:e.activatorProps;l&&pg(l,Xe(s.value,u))}function i(){let l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:a(),u=arguments.length>1&&arguments[1]!==void 0?arguments[1]:e.activatorProps;l&&gg(l,Xe(s.value,u))}function a(){let l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:e.activator;const u=uh(l,t);return r.value=(u==null?void 0:u.nodeType)===Node.ELEMENT_NODE?u:void 0,r.value}}function uh(e,t){var r,s;if(!e)return;let n;if(e==="parent"){let o=(s=(r=t==null?void 0:t.proxy)==null?void 0:r.$el)==null?void 0:s.parentNode;for(;o!=null&&o.hasAttribute("data-no-activator");)o=o.parentNode;n=o}else typeof e=="string"?n=document.querySelector(e):"$el"in e?n=e.$el:n=e;return n}function v2(){if(!$e)return Oe(!1);const{ssr:e}=B0();if(e){const t=Oe(!1);return mn(()=>{t.value=!0}),t}else return Oe(!0)}const b2=me({eager:Boolean},"lazy");function w2(e,t){const n=Oe(!1),r=ie(()=>n.value||e.eager||t.value);ye(t,()=>n.value=!0);function s(){e.eager||(n.value=!1)}return{isBooted:n,hasContent:r,onAfterLeave:s}}function fh(){const t=et("useScopeId").vnode.scopeId;return{scopeId:t?{[t]:""}:void 0}}const Bc=Symbol.for("vuetify:stack"),_r=Be([]);function _2(e,t,n){const r=et("useStack"),s=!n,o=Pe(Bc,void 0),i=Be({activeChildren:new Set});Et(Bc,i);const a=Oe(Number(un(t)));ns(e,()=>{var f;const c=(f=_r.at(-1))==null?void 0:f[1];a.value=c?c+10:Number(un(t)),s&&_r.push([r.uid,a.value]),o==null||o.activeChildren.add(r.uid),Qe(()=>{if(s){const d=he(_r).findIndex(h=>h[0]===r.uid);_r.splice(d,1)}o==null||o.activeChildren.delete(r.uid)})});const l=Oe(!0);s&&Zt(()=>{var f;const c=((f=_r.at(-1))==null?void 0:f[0])===r.uid;setTimeout(()=>l.value=c)});const u=ie(()=>!i.activeChildren.size);return{globalTop:Zr(l),localTop:u,stackStyles:ie(()=>({zIndex:a.value}))}}function E2(e){return{teleportTarget:M(()=>{const n=e();if(n===!0||!$e)return;const r=n===!1?document.body:typeof n=="string"?document.querySelector(n):n;if(r==null)return;let s=[...r.children].find(o=>o.matches(".v-overlay-container"));return s||(s=document.createElement("div"),s.className="v-overlay-container",r.appendChild(s)),s})}}const S2=me({transition:{type:null,default:"fade-transition",validator:e=>e!==!0}},"transition"),x2=(e,t)=>{let{slots:n}=t;const{transition:r,disabled:s,group:o,...i}=e,{component:a=o?Op:er,...l}=wi(r)?r:{};let u;return wi(r)?u=Xe(l,cg({disabled:s,group:o}),i):u=Xe({name:s||!r?"":r},i),ts(a,u,n)};function C2(){return!0}function dh(e,t,n){if(!e||hh(e,n)===!1)return!1;const r=If(t);if(typeof ShadowRoot<"u"&&r instanceof ShadowRoot&&r.host===e.target)return!1;const s=(typeof n.value=="object"&&n.value.include||(()=>[]))();return s.push(t),!s.some(o=>o==null?void 0:o.contains(e.target))}function hh(e,t){return(typeof t.value=="object"&&t.value.closeConditional||C2)(e)}function k2(e,t,n){const r=typeof n.value=="function"?n.value:n.value.handler;e.shadowTarget=e.target,t._clickOutside.lastMousedownWasOutside&&dh(e,t,n)&&setTimeout(()=>{hh(e,n)&&r&&r(e)},0)}function Vc(e,t){const n=If(e);t(document),typeof ShadowRoot<"u"&&n instanceof ShadowRoot&&t(n)}const jc={mounted(e,t){const n=s=>k2(s,e,t),r=s=>{e._clickOutside.lastMousedownWasOutside=dh(s,e,t)};Vc(e,s=>{s.addEventListener("click",n,!0),s.addEventListener("mousedown",r,!0)}),e._clickOutside||(e._clickOutside={lastMousedownWasOutside:!1}),e._clickOutside[t.instance.$.uid]={onClick:n,onMousedown:r}},beforeUnmount(e,t){e._clickOutside&&(Vc(e,n=>{var o;if(!n||!((o=e._clickOutside)!=null&&o[t.instance.$.uid]))return;const{onClick:r,onMousedown:s}=e._clickOutside[t.instance.$.uid];n.removeEventListener("click",r,!0),n.removeEventListener("mousedown",s,!0)}),delete e._clickOutside[t.instance.$.uid])}};function T2(e){const{modelValue:t,color:n,...r}=e;return Z(er,{name:"fade-transition",appear:!0},{default:()=>[e.modelValue&&R("div",Xe({class:["v-overlay__scrim",e.color.backgroundColorClasses.value],style:e.color.backgroundColorStyles.value},r),null)]})}const mh=me({absolute:Boolean,attach:[Boolean,String,Object],closeOnBack:{type:Boolean,default:!0},contained:Boolean,contentClass:null,contentProps:null,disabled:Boolean,opacity:[Number,String],noClickAnimation:Boolean,modelValue:Boolean,persistent:Boolean,scrim:{type:[Boolean,String],default:!0},zIndex:{type:[Number,String],default:2e3},...p2(),...gn(),...xa(),...b2(),...t2(),...a2(),...vn(),...S2()},"VOverlay"),Hc=wt()({name:"VOverlay",directives:{vClickOutside:jc},inheritAttrs:!1,props:{_disableGlobalStack:Boolean,...mh()},emits:{"click:outside":e=>!0,"update:modelValue":e=>!0,keydown:e=>!0,afterEnter:()=>!0,afterLeave:()=>!0},setup(e,t){let{slots:n,attrs:r,emit:s}=t;const o=et("VOverlay"),i=de(),a=de(),l=de(),u=ss(e,"modelValue"),c=M({get:()=>u.value,set:C=>{C&&e.disabled||(u.value=C)}}),{themeClasses:f}=jn(e),{rtlClasses:d,isRtl:h}=bo(),{hasContent:m,onAfterLeave:w}=w2(e,c),_=Os(()=>typeof e.scrim=="string"?e.scrim:null),{globalTop:b,localTop:y,stackStyles:p}=_2(c,()=>e.zIndex,e._disableGlobalStack),{activatorEl:k,activatorRef:S,target:P,targetEl:D,targetRef:x,activatorEvents:A,contentEvents:B,scrimEvents:V}=g2(e,{isActive:c,isTop:y,contentEl:l}),{teleportTarget:L}=E2(()=>{var j,Y,be;const C=e.attach||e.contained;if(C)return C;const N=((j=k==null?void 0:k.value)==null?void 0:j.getRootNode())||((be=(Y=o.proxy)==null?void 0:Y.$el)==null?void 0:be.getRootNode());return N instanceof ShadowRoot?N:!1}),{dimensionStyles:G}=Ca(e),se=v2(),{scopeId:X}=fh();ye(()=>e.disabled,C=>{C&&(c.value=!1)});const{contentStyles:oe,updateLocation:ee}=n2(e,{isRtl:h,contentEl:l,target:P,isActive:c});l2(e,{root:i,contentEl:l,targetEl:D,target:P,isActive:c,updateLocation:ee});function ce(C){s("click:outside",C),e.persistent?ct():c.value=!1}function Ne(C){return c.value&&b.value&&(!e.scrim||C.target===a.value||C instanceof MouseEvent&&C.shadowTarget===a.value)}$e&&ye(c,C=>{C?window.addEventListener("keydown",Ce):window.removeEventListener("keydown",Ce)},{immediate:!0}),cr(()=>{$e&&window.removeEventListener("keydown",Ce)});function Ce(C){var N,j,Y;C.key==="Escape"&&b.value&&((N=l.value)!=null&&N.contains(document.activeElement)||s("keydown",C),e.persistent?ct():(c.value=!1,(j=l.value)!=null&&j.contains(document.activeElement)&&((Y=k.value)==null||Y.focus())))}function Le(C){C.key==="Escape"&&!b.value||s("keydown",C)}const Re=jw();ns(()=>e.closeOnBack,()=>{qw(Re,C=>{b.value&&c.value?(C(!1),e.persistent?ct():c.value=!1):C()})});const je=de();ye(()=>c.value&&(e.absolute||e.contained)&&L.value==null,C=>{if(C){const N=zg(i.value);N&&N!==document.scrollingElement&&(je.value=N.scrollTop)}});function ct(){e.noClickAnimation||l.value&&mg(l.value,[{transformOrigin:"center"},{transform:"scale(1.03)"},{transformOrigin:"center"}],{duration:150,easing:Ug})}function Tt(){s("afterEnter")}function ze(){w(),s("afterLeave")}return Bt(()=>{var C;return R(Ie,null,[(C=n.activator)==null?void 0:C.call(n,{isActive:c.value,targetRef:x,props:Xe({ref:S},A.value,e.activatorProps)}),se.value&&m.value&&Z(am,{disabled:!L.value,to:L.value},{default:()=>[R("div",Xe({class:["v-overlay",{"v-overlay--absolute":e.absolute||e.contained,"v-overlay--active":c.value,"v-overlay--contained":e.contained},f.value,d.value,e.class],style:[p.value,{"--v-overlay-opacity":e.opacity,top:pe(je.value)},e.style],ref:i,onKeydown:Le},X,r),[Z(T2,Xe({color:_,modelValue:c.value&&!!e.scrim,ref:a},V.value),null),Z(x2,{appear:!0,persisted:!0,transition:e.transition,target:P.value,onAfterEnter:Tt,onAfterLeave:ze},{default:()=>{var N;return[Vs(R("div",Xe({ref:l,class:["v-overlay__content",e.contentClass],style:[G.value,oe.value]},B.value,e.contentProps),[(N=n.default)==null?void 0:N.call(n,{isActive:c})]),[[pp,c.value],[jc,{handler:ce,closeConditional:Ne,include:()=>[k.value]}]])]}})])]})])}),{activatorEl:k,scrimEl:a,target:P,animateClick:ct,contentEl:l,globalTop:b,localTop:y,updateLocation:ee}}}),ni=Symbol("Forwarded refs");function ri(e,t){let n=e;for(;n;){const r=Reflect.getOwnPropertyDescriptor(n,t);if(r)return r;n=Object.getPrototypeOf(n)}}function A2(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;rt.value=e())}function o(i){const a=i?getComputedStyle(i):{transitionDuration:.2},l=parseFloat(a.transitionDuration)*1e3||200;if(r(),t.value<=0)return;const u=performance.now();n=window.setInterval(()=>{const c=performance.now()-u+l;t.value=Math.max(e()-c,0),t.value<=0&&r()},l)}return Qe(r),{clear:r,time:t,start:o,reset:s}}const P2=me({multiLine:Boolean,text:String,timer:[Boolean,String],timeout:{type:[Number,String],default:5e3},vertical:Boolean,...ka({location:"bottom"}),...Qd(),...Ro(),..._a(),...vn(),...Cf(mh({transition:"v-snackbar-transition"}),["persistent","noClickAnimation","scrim","scrollStrategy"])},"VSnackbar"),O2=wt()({name:"VSnackbar",props:P2(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:n}=t;const r=ss(e,"modelValue"),{positionClasses:s}=eh(e),{scopeId:o}=fh(),{themeClasses:i}=jn(e),{colorClasses:a,colorStyles:l,variantClasses:u}=Wd(e),{roundedClasses:c}=Po(e),f=R2(()=>Number(e.timeout)),d=de(),h=de(),m=Oe(!1),w=Oe(0),_=de(),b=Pe(Xs,void 0);ns(()=>!!b,()=>{const V=Kf();Zt(()=>{_.value=V.mainStyles.value})}),ye(r,p),ye(()=>e.timeout,p),mn(()=>{r.value&&p()});let y=-1;function p(){f.reset(),window.clearTimeout(y);const V=Number(e.timeout);if(!r.value||V===-1)return;const L=xf(h.value);f.start(L),y=window.setTimeout(()=>{r.value=!1},V)}function k(){f.reset(),window.clearTimeout(y)}function S(){m.value=!0,k()}function P(){m.value=!1,p()}function D(V){w.value=V.touches[0].clientY}function x(V){Math.abs(w.value-V.changedTouches[0].clientY)>50&&(r.value=!1)}function A(){m.value&&P()}const B=M(()=>e.location.split(" ").reduce((V,L)=>(V[`v-snackbar--${L}`]=!0,V),{}));return Bt(()=>{const V=Hc.filterProps(e),L=!!(n.default||n.text||e.text);return Z(Hc,Xe({ref:d,class:["v-snackbar",{"v-snackbar--active":r.value,"v-snackbar--multi-line":e.multiLine&&!e.vertical,"v-snackbar--timer":!!e.timer,"v-snackbar--vertical":e.vertical},B.value,s.value,e.class],style:[_.value,e.style]},V,{modelValue:r.value,"onUpdate:modelValue":G=>r.value=G,contentProps:Xe({class:["v-snackbar__wrapper",i.value,a.value,c.value,u.value],style:[l.value],onPointerenter:S,onPointerleave:P},V.contentProps),persistent:!0,noClickAnimation:!0,scrim:!1,scrollStrategy:"none",_disableGlobalStack:!0,onTouchstartPassive:D,onTouchend:x,onAfterLeave:A},o),{default:()=>{var G,se;return[zd(!1,"v-snackbar"),e.timer&&!m.value&&R("div",{key:"timer",class:"v-snackbar__timer"},[Z(Xd,{ref:h,color:typeof e.timer=="string"?e.timer:"info",max:e.timeout,modelValue:f.time.value},null)]),L&&R("div",{key:"content",class:"v-snackbar__content",role:"status","aria-live":"polite"},[((G=n.text)==null?void 0:G.call(n))??e.text,(se=n.default)==null?void 0:se.call(n)]),n.actions&&Z($s,{defaults:{VBtn:{variant:"text",ripple:!1,slim:!0}}},{default:()=>[R("div",{class:"v-snackbar__actions"},[n.actions({isActive:r})])]})]},activator:n.activator})}),A2({},d)}}),$2={class:"notifications-container"},F2={class:"d-flex align-center"},L2={class:"flex-grow-1"},M2={key:0,class:"font-weight-medium"},D2={__name:"AppNotifications",setup(e){const{notifications:t,removeNotification:n}=_w(),r=de([]);ye(t,i=>{i.forEach(a=>{r.value.findIndex(u=>u.id===a.id)===-1&&r.value.push({...a,visible:!0})}),r.value=r.value.filter(a=>i.some(l=>l.id===a.id))},{immediate:!0,deep:!0});const s=i=>{switch(i){case en.SUCCESS:return"success";case en.ERROR:return"error";case en.WARNING:return"warning";case en.INFO:default:return"info"}},o=i=>{switch(i){case en.SUCCESS:return"mdi-check-circle";case en.ERROR:return"mdi-alert-circle";case en.WARNING:return"mdi-alert";case en.INFO:default:return"mdi-information"}};return(i,a)=>(J(),ne("div",$2,[(J(!0),ne(Ie,null,ci(Me(t),l=>(J(),Bn(O2,{key:l.id,modelValue:l.visible,"onUpdate:modelValue":[u=>l.visible=u,u=>!u&&Me(n)(l.id)],color:s(l.type),timeout:l.timeout,location:"top right",style:Ke({"z-index":9999+l.id})},{default:He(()=>[R("div",F2,[Z(Fr,{class:"me-2"},{default:He(()=>[Rn(pt(o(l.type)),1)]),_:2},1024),R("div",L2,[l.title?(J(),ne("div",M2,pt(l.title),1)):ue("",!0),R("div",null,pt(l.message),1)]),Z(Qw,{icon:"",size:"small",onClick:u=>Me(n)(l.id)},{default:He(()=>[Z(Fr,null,{default:He(()=>a[0]||(a[0]=[Rn("mdi-close",-1)])),_:1,__:[0]})]),_:2},1032,["onClick"])])]),_:2},1032,["modelValue","onUpdate:modelValue","color","timeout","style"]))),128))]))}},I2=us(D2,[["__scopeId","data-v-9b99d032"]]),N2=me({...gn(),...sy({fullHeight:!0}),...vn()},"VApp"),B2=wt()({name:"VApp",props:N2(),setup(e,t){let{slots:n}=t;const r=jn(e),{layoutClasses:s,getLayoutItem:o,items:i,layoutRef:a}=iy(e),{rtlClasses:l}=bo();return Bt(()=>{var u;return R("div",{ref:a,class:ve(["v-application",r.themeClasses.value,s.value,l.value,e.class]),style:Ke([e.style])},[R("div",{class:"v-application__wrap"},[(u=n.default)==null?void 0:u.call(n)])])}),{getLayoutItem:o,items:i,theme:r}}});function V2(){const e=Oe(!1);return mn(()=>{window.requestAnimationFrame(()=>{e.value=!0})}),{ssrBootStyles:ie(()=>e.value?void 0:{transition:"none !important"}),isBooted:Zr(e)}}const j2=me({scrollable:Boolean,...gn(),...xa(),...hr({tag:"main"})},"VMain"),H2=wt()({name:"VMain",props:j2(),setup(e,t){let{slots:n}=t;const{dimensionStyles:r}=Ca(e),{mainStyles:s}=Kf(),{ssrBootStyles:o}=V2();return Bt(()=>Z(e.tag,{class:ve(["v-main",{"v-main--scrollable":e.scrollable},e.class]),style:Ke([s.value,o.value,r.value,e.style])},{default:()=>{var i,a;return[e.scrollable?R("div",{class:"v-main__scroller"},[(i=n.default)==null?void 0:i.call(n)]):(a=n.default)==null?void 0:a.call(n)]}})),{}}}),U2={__name:"App",setup(e){const t=ya(),n=M(()=>t.isAuthenticated);return mn(async()=>{if(t.token&&!t.user)try{await t.getCurrentUser()}catch(r){console.error("Failed to get current user on app mount:",r)}}),(r,s)=>{const o=Mu("router-view");return J(),Bn(B2,null,{default:He(()=>[n.value?(J(),Bn(bw,{key:0})):ue("",!0),Z(H2,null,{default:He(()=>[Z(o)]),_:1}),Z(I2)]),_:1})}}},q2=us(U2,[["__scopeId","data-v-a961ccf3"]]),z2="modulepreload",W2=function(e){return"/"+e},Uc={},K=function(t,n,r){let s=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),a=(i==null?void 0:i.nonce)||(i==null?void 0:i.getAttribute("nonce"));s=Promise.allSettled(n.map(l=>{if(l=W2(l),l in Uc)return;Uc[l]=!0;const u=l.endsWith(".css"),c=u?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${l}"]${c}`))return;const f=document.createElement("link");if(f.rel=u?"stylesheet":z2,u||(f.as="script"),f.crossOrigin="",f.href=l,a&&f.setAttribute("nonce",a),document.head.appendChild(f),u)return new Promise((d,h)=>{f.addEventListener("load",d),f.addEventListener("error",()=>h(new Error(`Unable to preload CSS for ${l}`)))})}))}function o(i){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=i,window.dispatchEvent(a),!a.defaultPrevented)throw i}return s.then(i=>{for(const a of i||[])a.status==="rejected"&&o(a.reason);return t().catch(o)})},G2=[{path:"/",redirect:"/dashboard"},{path:"/login",name:"Login",component:()=>K(()=>import("./LoginView-B4ND79y8.js"),__vite__mapDeps([0,1,2,3,4,5,6])),meta:{requiresGuest:!0}},{path:"/register",name:"Register",component:()=>K(()=>import("./RegisterView-B1dtlGYy.js"),__vite__mapDeps([7,1,2,3,5,8,9])),meta:{requiresGuest:!0}},{path:"/forgot-password",name:"ForgotPassword",component:()=>K(()=>import("./ForgotPasswordView-D6HmO_LL.js"),__vite__mapDeps([10,1,11,12,13,14,15])),meta:{requiresGuest:!0}},{path:"/reset-password",name:"ResetPassword",component:()=>K(()=>import("./ResetPasswordView-7Zg8RSWn.js"),__vite__mapDeps([16,1,11,12,13,14,17])),meta:{requiresGuest:!0}},{path:"/dashboard",name:"Dashboard",component:()=>K(()=>import("./DashboardView-Ud-cY9iD.js"),__vite__mapDeps([18,19,20,21,3,22,23,24,25,26,27,28,29,30]))},{path:"/work-orders",name:"WorkOrders",component:()=>K(()=>import("./WorkOrdersView-aifn5dEF.js"),[]),children:[{path:"",name:"WorkOrdersList",component:()=>K(()=>import("./WorkOrdersListView-DHY1nn-j.js"),__vite__mapDeps([31,25,26,27,32,20,21,33,2,4,8,23,34,35,36,37,38,39,40,41,42,43,22,44,45,46]))},{path:"create",name:"CreateWorkOrder",component:()=>K(()=>import("./CreateWorkOrderView-CTlG1l1H.js"),__vite__mapDeps([47,2,8,39,40,33,4,23,34,21]))},{path:":id",name:"WorkOrderDetail",component:()=>K(()=>import("./WorkOrderDetailView-D9lPqwSW.js"),__vite__mapDeps([48,32,23,35,2,8,36,33,4,34,49,50,37,27,38,21])),props:!0},{path:":id/edit",name:"EditWorkOrder",component:()=>K(()=>import("./EditWorkOrderView-Cx6d-pcV.js"),__vite__mapDeps([51,2,8,35,36,33,4,23,34,49,50,21])),props:!0},{path:"calendar",name:"WorkOrdersCalendar",component:()=>K(()=>import("./WorkOrdersCalendarView-Dr2kGEQk.js"),__vite__mapDeps([52,25,26,27,20,21,8,22,23,24,28,33,2,4,34,35,36,37,38,39,40,41,42,44,45,46,53]))}]},{path:"/assets",name:"Assets",component:()=>K(()=>import("./AssetsView-B4-po3PV.js"),__vite__mapDeps([54,55])),children:[{path:"",name:"AssetsList",component:()=>K(()=>import("./AssetsListView-8qBNA660.js"),__vite__mapDeps([56,19,57,58,2,4,8,59,32,20,21,29,3,43,22,23,44,45,46,60]))},{path:"create",name:"CreateAsset",component:()=>K(()=>import("./CreateAssetView-WCmUfURR.js"),__vite__mapDeps([61,19,57,2,3,8,22,58,4,59,62]))},{path:":id",name:"AssetDetail",component:()=>K(()=>import("./AssetDetailView-BJoQpmcV.js"),__vite__mapDeps([63,32,23,20,21])),props:!0},{path:":id/edit",name:"EditAsset",component:()=>K(()=>import("./EditAssetView-CUJ7_T6-.js"),__vite__mapDeps([64,2,3,4,8,65])),props:!0}]},{path:"/locations",name:"Locations",component:()=>K(()=>import("./LocationsView-kjEylhU6.js"),[]),children:[{path:"",name:"LocationsList",component:()=>K(()=>import("./LocationsListView-Cu3aECgW.js"),__vite__mapDeps([66,57,26,67,68,20,21,2,8,29,3,43,22,23,44,46]))},{path:":id",name:"LocationDetail",component:()=>K(()=>import("./LocationDetailView-C5-PbNmX.js"),__vite__mapDeps([69,57,20,21,23])),props:!0}]},{path:"/people",name:"People",component:()=>K(()=>import("./PeopleView-ZO1Y3BMt.js"),__vite__mapDeps([70,71])),children:[{path:"",name:"PeopleList",component:()=>K(()=>import("./PeopleListView-Cmts--ZM.js"),__vite__mapDeps([72,20,21,2,8,29,3,43,22,23,44,73,74]))},{path:"teams",name:"TeamsList",component:()=>K(()=>import("./TeamsListView-Dk6DYIks.js"),__vite__mapDeps([75,20,21,2,29,3,43,22,23,74]))}]},{path:"/inventory",name:"Inventory",component:()=>K(()=>import("./InventoryView-FW6Kr3o1.js"),__vite__mapDeps([76,77,20,21,29,3]))},{path:"/inventory/parts",name:"Parts",component:()=>K(()=>import("./PartsView-alieN3OC.js"),[]),children:[{path:"",name:"PartsList",component:()=>K(()=>import("./PartsListView-fCKSmo2E.js"),__vite__mapDeps([78,77,26,79,67,68,20,21,2,8,29,3,43,22,23,44,46]))},{path:":id",name:"PartDetail",component:()=>K(()=>import("./PartDetailView-9j9nkS1s.js"),__vite__mapDeps([80,77,79,20,21,23])),props:!0}]},{path:"/inventory/stock-alerts",name:"StockAlerts",component:()=>K(()=>import("./StockAlertsView-AbF3nGDU.js"),__vite__mapDeps([81,77,82,26,67,68,20,21,2,8,29,3,43,22,23,44,46]))},{path:"/inventory/transfers",name:"InventoryTransfers",component:()=>K(()=>import("./InventoryTransfersView-8DopotVP.js"),__vite__mapDeps([83,77,82,26,67,68,20,21,2,8,29,3,43,22,23,44,46]))},{path:"/maintenance",name:"Maintenance",component:()=>K(()=>import("./MaintenanceView-CZWE_pAX.js"),[])},{path:"/maintenance/preventive",name:"PreventiveMaintenance",component:()=>K(()=>import("./PreventiveMaintenanceView-DXXgUjJk.js"),[]),children:[{path:"",name:"PreventiveMaintenanceList",component:()=>K(()=>import("./PreventiveMaintenanceListView-Dycb2ZSP.js"),__vite__mapDeps([84,28,26,85,67,68,20,21,2,8,29,3,43,22,23,44,46]))},{path:":id",name:"PreventiveMaintenanceDetail",component:()=>K(()=>import("./PreventiveMaintenanceDetailView-C_K8Kyaz.js"),__vite__mapDeps([86,28,85,20,21,2,22,23])),props:!0}]},{path:"/reports",name:"Reports",component:()=>K(()=>import("./ReportsView-RBaluUKL.js"),__vite__mapDeps([87,26,20,21,2,3,8,22,23,44,46,88]))},{path:"/categories",name:"Categories",component:()=>K(()=>import("./CategoriesView-DZHjzlZD.js"),[]),children:[{path:"",name:"CategoriesIndex",component:()=>K(()=>import("./CategoriesIndexView-CjHjTbKf.js"),__vite__mapDeps([89,90,20,21]))},{path:"work-order-categories",name:"WorkOrderCategories",component:()=>K(()=>import("./CategoriesListView-BrLbxiBd.js"),__vite__mapDeps([91,90,26,67,68,20,21,2,8,29,3,43,22,23,44,46])),props:{categoryType:"work-order-categories"}},{path:"asset-categories",name:"AssetCategories",component:()=>K(()=>import("./CategoriesListView-BrLbxiBd.js"),__vite__mapDeps([91,90,26,67,68,20,21,2,8,29,3,43,22,23,44,46])),props:{categoryType:"asset-categories"}},{path:"part-categories",name:"PartCategories",component:()=>K(()=>import("./CategoriesListView-BrLbxiBd.js"),__vite__mapDeps([91,90,26,67,68,20,21,2,8,29,3,43,22,23,44,46])),props:{categoryType:"part-categories"}},{path:"cost-categories",name:"CostCategories",component:()=>K(()=>import("./CategoriesListView-BrLbxiBd.js"),__vite__mapDeps([91,90,26,67,68,20,21,2,8,29,3,43,22,23,44,46])),props:{categoryType:"cost-categories"}},{path:"meter-categories",name:"MeterCategories",component:()=>K(()=>import("./CategoriesListView-BrLbxiBd.js"),__vite__mapDeps([91,90,26,67,68,20,21,2,8,29,3,43,22,23,44,46])),props:{categoryType:"meter-categories"}},{path:"purchase-order-categories",name:"PurchaseOrderCategories",component:()=>K(()=>import("./CategoriesListView-BrLbxiBd.js"),__vite__mapDeps([91,90,26,67,68,20,21,2,8,29,3,43,22,23,44,46])),props:{categoryType:"purchase-order-categories"}}]},{path:"/vendors",name:"Vendors",component:()=>K(()=>import("./VendorsView-CD95-yCL.js"),[]),children:[{path:"",name:"VendorsList",component:()=>K(()=>import("./VendorsListView-RDXjMLTt.js"),__vite__mapDeps([92,93,26,67,68,20,21,2,8,29,3,43,22,23,44,46]))},{path:":id",name:"VendorDetail",component:()=>K(()=>import("./VendorDetailView-qw2GAvub.js"),__vite__mapDeps([94,93,20,21,3,23,44])),props:!0}]},{path:"/requests",name:"Requests",component:()=>K(()=>import("./RequestsView-BNuSwOXJ.js"),[]),children:[{path:"",name:"RequestsList",component:()=>K(()=>import("./RequestsListView-ChMnc6ly.js"),__vite__mapDeps([95,96,19,57,73,26,20,21,2,8,29,3,43,22,23,44,46]))},{path:":id",name:"RequestDetail",component:()=>K(()=>import("./RequestDetailView-yLJ0QKmY.js"),__vite__mapDeps([97,96,20,21,3,22,23,44])),props:!0}]},{path:"/meters",name:"Meters",component:()=>K(()=>import("./MetersView-cVOIPKlq.js"),[]),children:[{path:"",name:"MetersList",component:()=>K(()=>import("./MetersListView-DimOX87s.js"),__vite__mapDeps([98,99,19,57,26,20,21,2,4,8,29,3,43,22,23,44,46]))},{path:":id",name:"MeterDetail",component:()=>K(()=>import("./MeterDetailView-BPbRGZV7.js"),__vite__mapDeps([100,99,20,21,2,3,4,22,23,44])),props:!0}]},{path:"/customers",name:"Customers",component:()=>K(()=>import("./CustomersView-D22jEzVQ.js"),[]),children:[{path:"",name:"CustomersList",component:()=>K(()=>import("./CustomersListView-Dh2vfIHr.js"),__vite__mapDeps([101,102,26,20,21,2,4,8,29,3,43,22,23,44,46]))},{path:":id",name:"CustomerDetail",component:()=>K(()=>import("./CustomerDetailView-D2R4iIWj.js"),__vite__mapDeps([103,102,20,21,3,4,23,44])),props:!0}]},{path:"/contracts",name:"Contracts",component:()=>K(()=>import("./ContractsView-C2LjMx7v.js"),[]),children:[{path:"",name:"ContractsList",component:()=>K(()=>import("./ContractsListView-Cj14_kTl.js"),__vite__mapDeps([104,105,26,20,21,2,4,8,29,3,43,22,23,44,46]))},{path:":id",name:"ContractDetail",component:()=>K(()=>import("./ContractDetailView-ClB2gGkj.js"),__vite__mapDeps([106,105,20,21,23])),props:!0}]},{path:"/documents",name:"Documents",component:()=>K(()=>import("./DocumentsView-CtN4VG-T.js"),[]),children:[{path:"",name:"DocumentsList",component:()=>K(()=>import("./DocumentsListView-BSKVRIyQ.js"),__vite__mapDeps([107,108,26,20,21,22,46,2,8,4,29,3,43,23,44]))},{path:":id",name:"DocumentDetail",component:()=>K(()=>import("./DocumentDetailView-Bon7Yp5Y.js"),__vite__mapDeps([109,108,20,21,26,22,46,2,8,4,23,44])),props:!0}]},{path:"/settings",name:"Settings",component:()=>K(()=>import("./SettingsView-osLRBmGa.js"),__vite__mapDeps([110,20,21,2,3,4,8,43,22,23,44]))},{path:"/profile",name:"Profile",component:()=>K(()=>import("./ProfileView-B9z7U8vB.js"),__vite__mapDeps([111,20,21,2,3,4,8,22,23]))},{path:"/demo",name:"FrappeUIDemo",component:()=>K(()=>import("./FrappeUIDemo-221PS2xS.js"),__vite__mapDeps([112,2,3,21]))},{path:"/simple-demo",name:"SimpleDemo",component:()=>K(()=>import("./SimpleDemo-DQQNE0yU.js"),__vite__mapDeps([113,68,114]))},{path:"/basic-test",name:"BasicTest",component:()=>K(()=>import("./BasicTest-TErwUzKT.js"),[])},{path:"/theme-test",name:"ThemeTest",component:()=>K(()=>import("./ThemeTest-3bWyKweP.js"),[])},{path:"/unauthorized",name:"Unauthorized",component:()=>K(()=>import("./UnauthorizedView-WX3S9B4Q.js"),__vite__mapDeps([115,11,12]))},{path:"/:pathMatch(.*)*",name:"NotFound",component:()=>K(()=>import("./NotFoundView-CoAE6lPw.js"),__vite__mapDeps([116,11,12]))}],ph=sb({history:F1(),routes:G2});ph.beforeEach(async(e,t,n)=>{const r=ya();if(e.meta.requiresAuth){if(!r.isAuthenticated){n("/login");return}if(!r.user)try{await r.getCurrentUser()}catch(s){console.error("Failed to get current user:",s),n("/login");return}if(e.meta.requiresRole){const s=r.userRole;if(!(Array.isArray(e.meta.requiresRole)?e.meta.requiresRole:[e.meta.requiresRole]).includes(s)){n("/unauthorized");return}}if(e.meta.requiresPermission&&!(Array.isArray(e.meta.requiresPermission)?e.meta.requiresPermission:[e.meta.requiresPermission]).every(i=>r.hasPermission(i))){n("/unauthorized");return}}if(e.meta.requiresGuest&&r.isAuthenticated){n("/dashboard");return}n()});const K2=Yf({theme:{defaultTheme:"light",themes:{light:{colors:{primary:"#1976D2",secondary:"#424242",accent:"#82B1FF",error:"#FF5252",info:"#2196F3",success:"#4CAF50",warning:"#FFC107"}},dark:{colors:{primary:"#2196F3",secondary:"#424242",accent:"#FF4081",error:"#FF5252",info:"#2196F3",success:"#4CAF50",warning:"#FB8C00"}}}}}),Y2=qp(),Oo=jp(q2);Oo.use(Y2);Oo.use(ph);Oo.use(K2);Oo.mount("#app");export{jd as $,ts as A,vt as B,me as C,ss as D,ie as E,bs as F,jn as G,Wd as H,Hd as I,Ca as J,qd as K,Zd as L,eh as M,Po as N,to as O,v_ as P,Ke as Q,_a as R,vn as S,hr as T,Ro as U,Qw as V,Qd as W,ka as X,Ud as Y,xa as Z,us as _,ne as a,W_ as a$,Zs as a0,zd as a1,Fr as a2,Xe as a3,$s as a4,Df as a5,Bt as a6,Zp as a7,Os as a8,et as a9,er as aA,g_ as aB,y_ as aC,yn as aD,bo as aE,um as aF,hg as aG,mg as aH,Ug as aI,sg as aJ,ns as aK,ng as aL,p_ as aM,fn as aN,Fu as aO,Jp as aP,q_ as aQ,ci as aR,mb as aS,i_ as aT,u_ as aU,a_ as aV,Ae as aW,wm as aX,Be as aY,z_ as aZ,K_ as a_,Oe as aa,mm as ab,bt as ac,cr as ad,Vs as ae,Ie as af,pe as ag,S2 as ah,pp as ai,x2 as aj,Vd as ak,Sa as al,Ea as am,Bd as an,Zw as ao,Nw as ap,Hw as aq,Uw as ar,Iw as as,rE as at,Et as au,Pe as av,Qi as aw,A2 as ax,b_ as ay,Op as az,R as b,Y_ as b0,N_ as b1,G_ as b2,Z_ as b3,m_ as b4,d_ as b5,J_ as b6,X_ as b7,Kv as b8,e_ as b9,Qe as bA,Zt as bB,X2 as bC,In as bD,pn as bE,ws as bF,ea as bG,Ye as bH,J2 as bI,Xm as bJ,o_ as bK,Z2 as bL,s_ as bM,t_ as bN,r_ as bO,h_ as bP,Q2 as bQ,jp as bR,pm as bS,l_ as ba,Xv as bb,lt as bc,H as bd,Qv as be,Id as bf,n_ as bg,bw as bh,am as bi,Zv as bj,Yv as bk,K as bl,U_ as bm,H_ as bn,j_ as bo,V_ as bp,B_ as bq,Q_ as br,eE as bs,c_ as bt,tE as bu,nE as bv,ra as bw,Zr as bx,un as by,Ki as bz,M as c,Z as d,Me as e,Mu as f,J as g,f_ as h,Bn as i,ue as j,Rn as k,_w as l,ye as m,ve as n,mn as o,Nu as p,ya as q,de as r,ab as s,pt as t,lb as u,ib as v,He as w,wt as x,gn as y,Jr as z}; diff --git a/frontend/dist/assets/index-BH4xAAE_.css b/frontend/dist/assets/index-uZsiOIA-.css similarity index 87% rename from frontend/dist/assets/index-BH4xAAE_.css rename to frontend/dist/assets/index-uZsiOIA-.css index 908111e4..889e47b6 100644 --- a/frontend/dist/assets/index-BH4xAAE_.css +++ b/frontend/dist/assets/index-uZsiOIA-.css @@ -2,4 +2,4 @@ * ress.css • v2.0.4 * MIT License * github.com/filipelinhares/ress - */html{box-sizing:border-box;overflow-y:scroll;-webkit-text-size-adjust:100%;word-break:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4}*,:before,:after{background-repeat:no-repeat;box-sizing:inherit}:before,:after{text-decoration:inherit;vertical-align:inherit}*{padding:0;margin:0}hr{overflow:visible;height:0}details,main{display:block}[hidden]{display:none}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}a{background-color:transparent}a:active,a:hover{outline-width:0}code,kbd,pre,samp{font-family:monospace,monospace}pre{font-size:1em}input{border-radius:0}[disabled]{cursor:default}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}textarea{overflow:auto;resize:vertical}button,input,optgroup,select,textarea{font:inherit}optgroup{font-weight:700}button{overflow:visible}button,[type=button],[type=reset],[type=submit],[role=button]{cursor:pointer;color:inherit}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{outline:1px dotted ButtonText}button,html [type=button],[type=reset],[type=submit]{-webkit-appearance:button}button,input,select,textarea{background-color:transparent;border-style:none}select{-moz-appearance:none;-webkit-appearance:none}select::-ms-expand{display:none}select::-ms-value{color:currentColor}legend{border:0;color:inherit;display:table;white-space:normal;max-width:100%}::-webkit-file-upload-button{-webkit-appearance:button;color:inherit;font:inherit}::-ms-clear,::-ms-reveal{display:none}img{border-style:none}@media screen{[hidden~=screen]{display:inherit}[hidden~=screen]:not(:active):not(:focus):not(:target){position:absolute!important;clip:rect(0 0 0 0)!important}}[aria-busy=true]{cursor:progress}[aria-controls]{cursor:pointer}[aria-disabled=true]{cursor:default}.dialog-transition-enter-active,.dialog-bottom-transition-enter-active,.dialog-top-transition-enter-active{transition-duration:225ms!important;transition-timing-function:cubic-bezier(0,0,.2,1)!important}.dialog-transition-leave-active,.dialog-bottom-transition-leave-active,.dialog-top-transition-leave-active{transition-duration:125ms!important;transition-timing-function:cubic-bezier(.4,0,1,1)!important}.dialog-transition-enter-active,.dialog-transition-leave-active,.dialog-bottom-transition-enter-active,.dialog-bottom-transition-leave-active,.dialog-top-transition-enter-active,.dialog-top-transition-leave-active{transition-property:transform,opacity!important;pointer-events:none}.dialog-transition-enter-from,.dialog-transition-leave-to{transform:scale(.9);opacity:0}.dialog-transition-enter-to,.dialog-transition-leave-from{opacity:1}.dialog-bottom-transition-enter-from,.dialog-bottom-transition-leave-to{transform:translateY(calc(50vh + 50%))}.dialog-top-transition-enter-from,.dialog-top-transition-leave-to{transform:translateY(calc(-50vh - 50%))}.picker-transition-enter-active,.picker-reverse-transition-enter-active,.picker-transition-leave-active,.picker-reverse-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.picker-transition-move,.picker-reverse-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.picker-transition-enter-from,.picker-transition-leave-to,.picker-reverse-transition-enter-from,.picker-reverse-transition-leave-to{opacity:0}.picker-transition-leave-from,.picker-transition-leave-active,.picker-transition-leave-to,.picker-reverse-transition-leave-from,.picker-reverse-transition-leave-active,.picker-reverse-transition-leave-to{position:absolute!important}.picker-transition-enter-active,.picker-transition-leave-active,.picker-reverse-transition-enter-active,.picker-reverse-transition-leave-active{transition-property:transform,opacity!important}.picker-transition-enter-active,.picker-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.picker-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.picker-transition-enter-from{transform:translate(100%)}.picker-transition-leave-to{transform:translate(-100%)}.picker-reverse-transition-enter-active,.picker-reverse-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.picker-reverse-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.picker-reverse-transition-enter-from{transform:translate(-100%)}.picker-reverse-transition-leave-to{transform:translate(100%)}.expand-transition-enter-active,.expand-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.expand-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.expand-transition-enter-active,.expand-transition-leave-active{transition-property:height!important}.expand-x-transition-enter-active,.expand-x-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.expand-x-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.expand-x-transition-enter-active,.expand-x-transition-leave-active{transition-property:width!important}.scale-transition-enter-active,.scale-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scale-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scale-transition-leave-to{opacity:0}.scale-transition-leave-active{transition-duration:.1s!important}.scale-transition-enter-from{opacity:0;transform:scale(0)}.scale-transition-enter-active,.scale-transition-leave-active{transition-property:transform,opacity!important}.scale-rotate-transition-enter-active,.scale-rotate-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scale-rotate-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scale-rotate-transition-leave-to{opacity:0}.scale-rotate-transition-leave-active{transition-duration:.1s!important}.scale-rotate-transition-enter-from{opacity:0;transform:scale(0) rotate(-45deg)}.scale-rotate-transition-enter-active,.scale-rotate-transition-leave-active{transition-property:transform,opacity!important}.scale-rotate-reverse-transition-enter-active,.scale-rotate-reverse-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scale-rotate-reverse-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scale-rotate-reverse-transition-leave-to{opacity:0}.scale-rotate-reverse-transition-leave-active{transition-duration:.1s!important}.scale-rotate-reverse-transition-enter-from{opacity:0;transform:scale(0) rotate(45deg)}.scale-rotate-reverse-transition-enter-active,.scale-rotate-reverse-transition-leave-active{transition-property:transform,opacity!important}.message-transition-enter-active,.message-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.message-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.message-transition-enter-from,.message-transition-leave-to{opacity:0;transform:translateY(-15px)}.message-transition-leave-from,.message-transition-leave-active{position:absolute}.message-transition-enter-active,.message-transition-leave-active{transition-property:transform,opacity!important}.slide-y-transition-enter-active,.slide-y-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.slide-y-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.slide-y-transition-enter-from,.slide-y-transition-leave-to{opacity:0;transform:translateY(-15px)}.slide-y-transition-enter-active,.slide-y-transition-leave-active{transition-property:transform,opacity!important}.slide-y-reverse-transition-enter-active,.slide-y-reverse-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.slide-y-reverse-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.slide-y-reverse-transition-enter-from,.slide-y-reverse-transition-leave-to{opacity:0;transform:translateY(15px)}.slide-y-reverse-transition-enter-active,.slide-y-reverse-transition-leave-active{transition-property:transform,opacity!important}.scroll-y-transition-enter-active,.scroll-y-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scroll-y-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scroll-y-transition-enter-from,.scroll-y-transition-leave-to{opacity:0}.scroll-y-transition-enter-from{transform:translateY(-15px)}.scroll-y-transition-leave-to{transform:translateY(15px)}.scroll-y-transition-enter-active,.scroll-y-transition-leave-active{transition-property:transform,opacity!important}.scroll-y-reverse-transition-enter-active,.scroll-y-reverse-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scroll-y-reverse-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scroll-y-reverse-transition-enter-from,.scroll-y-reverse-transition-leave-to{opacity:0}.scroll-y-reverse-transition-enter-from{transform:translateY(15px)}.scroll-y-reverse-transition-leave-to{transform:translateY(-15px)}.scroll-y-reverse-transition-enter-active,.scroll-y-reverse-transition-leave-active{transition-property:transform,opacity!important}.scroll-x-transition-enter-active,.scroll-x-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scroll-x-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scroll-x-transition-enter-from,.scroll-x-transition-leave-to{opacity:0}.scroll-x-transition-enter-from{transform:translate(-15px)}.scroll-x-transition-leave-to{transform:translate(15px)}.scroll-x-transition-enter-active,.scroll-x-transition-leave-active{transition-property:transform,opacity!important}.scroll-x-reverse-transition-enter-active,.scroll-x-reverse-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scroll-x-reverse-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scroll-x-reverse-transition-enter-from,.scroll-x-reverse-transition-leave-to{opacity:0}.scroll-x-reverse-transition-enter-from{transform:translate(15px)}.scroll-x-reverse-transition-leave-to{transform:translate(-15px)}.scroll-x-reverse-transition-enter-active,.scroll-x-reverse-transition-leave-active{transition-property:transform,opacity!important}.slide-x-transition-enter-active,.slide-x-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.slide-x-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.slide-x-transition-enter-from,.slide-x-transition-leave-to{opacity:0;transform:translate(-15px)}.slide-x-transition-enter-active,.slide-x-transition-leave-active{transition-property:transform,opacity!important}.slide-x-reverse-transition-enter-active,.slide-x-reverse-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.slide-x-reverse-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.slide-x-reverse-transition-enter-from,.slide-x-reverse-transition-leave-to{opacity:0;transform:translate(15px)}.slide-x-reverse-transition-enter-active,.slide-x-reverse-transition-leave-active{transition-property:transform,opacity!important}.fade-transition-enter-active,.fade-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.fade-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.fade-transition-enter-from,.fade-transition-leave-to{opacity:0!important}.fade-transition-enter-active,.fade-transition-leave-active{transition-property:opacity!important}.fab-transition-enter-active,.fab-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.fab-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.fab-transition-enter-from,.fab-transition-leave-to{transform:scale(0) rotate(-45deg)}.fab-transition-enter-active,.fab-transition-leave-active{transition-property:transform!important}.v-locale--is-rtl{direction:rtl}.v-locale--is-ltr{direction:ltr}.blockquote{padding:16px 0 16px 24px;font-size:18px;font-weight:300}html{font-family:Roboto,sans-serif;line-height:1.5;font-size:1rem;overflow-x:hidden;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:rgba(0,0,0,0)}html.overflow-y-hidden{overflow-y:hidden!important}:root{--v-theme-overlay-multiplier: 1;--v-scrollbar-offset: 0px}@supports (-webkit-touch-callout: none){body{cursor:pointer}}@media only print{.hidden-print-only{display:none!important}}@media only screen{.hidden-screen-only{display:none!important}}@media (max-width: 599.98px){.hidden-xs{display:none!important}}@media (min-width: 600px) and (max-width: 959.98px){.hidden-sm{display:none!important}}@media (min-width: 960px) and (max-width: 1279.98px){.hidden-md{display:none!important}}@media (min-width: 1280px) and (max-width: 1919.98px){.hidden-lg{display:none!important}}@media (min-width: 1920px) and (max-width: 2559.98px){.hidden-xl{display:none!important}}@media (min-width: 2560px){.hidden-xxl{display:none!important}}@media (min-width: 600px){.hidden-sm-and-up{display:none!important}}@media (min-width: 960px){.hidden-md-and-up{display:none!important}}@media (min-width: 1280px){.hidden-lg-and-up{display:none!important}}@media (min-width: 1920px){.hidden-xl-and-up{display:none!important}}@media (max-width: 959.98px){.hidden-sm-and-down{display:none!important}}@media (max-width: 1279.98px){.hidden-md-and-down{display:none!important}}@media (max-width: 1919.98px){.hidden-lg-and-down{display:none!important}}@media (max-width: 2559.98px){.hidden-xl-and-down{display:none!important}}.elevation-24{box-shadow:0 11px 15px -7px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 24px 38px 3px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 9px 46px 8px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-23{box-shadow:0 11px 14px -7px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 23px 36px 3px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 9px 44px 8px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-22{box-shadow:0 10px 14px -6px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 22px 35px 3px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 8px 42px 7px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-21{box-shadow:0 10px 13px -6px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 21px 33px 3px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 8px 40px 7px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-20{box-shadow:0 10px 13px -6px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 20px 31px 3px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 8px 38px 7px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-19{box-shadow:0 9px 12px -6px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 19px 29px 2px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 7px 36px 6px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-18{box-shadow:0 9px 11px -5px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 18px 28px 2px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 7px 34px 6px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-17{box-shadow:0 8px 11px -5px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 17px 26px 2px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 6px 32px 5px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-16{box-shadow:0 8px 10px -5px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 16px 24px 2px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 6px 30px 5px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-15{box-shadow:0 8px 9px -5px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 15px 22px 2px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 6px 28px 5px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-14{box-shadow:0 7px 9px -4px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 14px 21px 2px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 5px 26px 4px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-13{box-shadow:0 7px 8px -4px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 13px 19px 2px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 5px 24px 4px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-12{box-shadow:0 7px 8px -4px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 12px 17px 2px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 5px 22px 4px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-11{box-shadow:0 6px 7px -4px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 11px 15px 1px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 4px 20px 3px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-10{box-shadow:0 6px 6px -3px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 10px 14px 1px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 4px 18px 3px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-9{box-shadow:0 5px 6px -3px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 9px 12px 1px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 3px 16px 2px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-8{box-shadow:0 5px 5px -3px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 8px 10px 1px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 3px 14px 2px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-7{box-shadow:0 4px 5px -2px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 7px 10px 1px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 2px 16px 1px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-6{box-shadow:0 3px 5px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 6px 10px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 18px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-5{box-shadow:0 3px 5px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 5px 8px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 14px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-4{box-shadow:0 2px 4px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 4px 5px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 10px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-3{box-shadow:0 3px 3px -2px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 3px 4px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 8px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-2{box-shadow:0 3px 1px -2px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 2px 2px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 5px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-1{box-shadow:0 2px 1px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 1px 1px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 3px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-0{box-shadow:0 0 0 0 var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 0 0 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 0 0 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.pointer-events-none{pointer-events:none!important}.pointer-events-auto{pointer-events:auto!important}.pointer-pass-through{pointer-events:none!important}.pointer-pass-through>*{pointer-events:auto!important}.d-sr-only,.d-sr-only-focusable:not(:focus){border:0!important;clip:rect(0,0,0,0)!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:1px!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.overflow-x-auto{overflow-x:auto!important}.overflow-x-hidden{overflow-x:hidden!important}.overflow-x-scroll{overflow-x:scroll!important}.overflow-y-auto{overflow-y:auto!important}.overflow-y-hidden{overflow-y:hidden!important}.overflow-y-scroll{overflow-y:scroll!important}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.float-none{float:none!important}.float-left{float:left!important}.float-right{float:right!important}.v-locale--is-rtl .float-end{float:left!important}.v-locale--is-rtl .float-start,.v-locale--is-ltr .float-end{float:right!important}.v-locale--is-ltr .float-start{float:left!important}.flex-fill,.flex-1-1{flex:1 1 auto!important}.flex-1-0{flex:1 0 auto!important}.flex-0-1{flex:0 1 auto!important}.flex-0-0{flex:0 0 auto!important}.flex-1-1-100{flex:1 1 100%!important}.flex-1-0-100{flex:1 0 100%!important}.flex-0-1-100{flex:0 1 100%!important}.flex-0-0-100{flex:0 0 100%!important}.flex-1-1-0{flex:1 1 0!important}.flex-1-0-0{flex:1 0 0!important}.flex-0-1-0{flex:0 1 0!important}.flex-0-0-0{flex:0 0 0!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-start{justify-content:flex-start!important}.justify-end{justify-content:flex-end!important}.justify-center{justify-content:center!important}.justify-space-between{justify-content:space-between!important}.justify-space-around{justify-content:space-around!important}.justify-space-evenly{justify-content:space-evenly!important}.align-start{align-items:flex-start!important}.align-end{align-items:flex-end!important}.align-center{align-items:center!important}.align-baseline{align-items:baseline!important}.align-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-space-between{align-content:space-between!important}.align-content-space-around{align-content:space-around!important}.align-content-space-evenly{align-content:space-evenly!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-6{order:6!important}.order-7{order:7!important}.order-8{order:8!important}.order-9{order:9!important}.order-10{order:10!important}.order-11{order:11!important}.order-12{order:12!important}.order-last{order:13!important}.ga-0{gap:0px!important}.ga-1{gap:4px!important}.ga-2{gap:8px!important}.ga-3{gap:12px!important}.ga-4{gap:16px!important}.ga-5{gap:20px!important}.ga-6{gap:24px!important}.ga-7{gap:28px!important}.ga-8{gap:32px!important}.ga-9{gap:36px!important}.ga-10{gap:40px!important}.ga-11{gap:44px!important}.ga-12{gap:48px!important}.ga-13{gap:52px!important}.ga-14{gap:56px!important}.ga-15{gap:60px!important}.ga-16{gap:64px!important}.ga-auto{gap:auto!important}.gr-0{row-gap:0px!important}.gr-1{row-gap:4px!important}.gr-2{row-gap:8px!important}.gr-3{row-gap:12px!important}.gr-4{row-gap:16px!important}.gr-5{row-gap:20px!important}.gr-6{row-gap:24px!important}.gr-7{row-gap:28px!important}.gr-8{row-gap:32px!important}.gr-9{row-gap:36px!important}.gr-10{row-gap:40px!important}.gr-11{row-gap:44px!important}.gr-12{row-gap:48px!important}.gr-13{row-gap:52px!important}.gr-14{row-gap:56px!important}.gr-15{row-gap:60px!important}.gr-16{row-gap:64px!important}.gr-auto{row-gap:auto!important}.gc-0{-moz-column-gap:0px!important;column-gap:0px!important}.gc-1{-moz-column-gap:4px!important;column-gap:4px!important}.gc-2{-moz-column-gap:8px!important;column-gap:8px!important}.gc-3{-moz-column-gap:12px!important;column-gap:12px!important}.gc-4{-moz-column-gap:16px!important;column-gap:16px!important}.gc-5{-moz-column-gap:20px!important;column-gap:20px!important}.gc-6{-moz-column-gap:24px!important;column-gap:24px!important}.gc-7{-moz-column-gap:28px!important;column-gap:28px!important}.gc-8{-moz-column-gap:32px!important;column-gap:32px!important}.gc-9{-moz-column-gap:36px!important;column-gap:36px!important}.gc-10{-moz-column-gap:40px!important;column-gap:40px!important}.gc-11{-moz-column-gap:44px!important;column-gap:44px!important}.gc-12{-moz-column-gap:48px!important;column-gap:48px!important}.gc-13{-moz-column-gap:52px!important;column-gap:52px!important}.gc-14{-moz-column-gap:56px!important;column-gap:56px!important}.gc-15{-moz-column-gap:60px!important;column-gap:60px!important}.gc-16{-moz-column-gap:64px!important;column-gap:64px!important}.gc-auto{-moz-column-gap:auto!important;column-gap:auto!important}.ma-0{margin:0!important}.ma-1{margin:4px!important}.ma-2{margin:8px!important}.ma-3{margin:12px!important}.ma-4{margin:16px!important}.ma-5{margin:20px!important}.ma-6{margin:24px!important}.ma-7{margin:28px!important}.ma-8{margin:32px!important}.ma-9{margin:36px!important}.ma-10{margin:40px!important}.ma-11{margin:44px!important}.ma-12{margin:48px!important}.ma-13{margin:52px!important}.ma-14{margin:56px!important}.ma-15{margin:60px!important}.ma-16{margin:64px!important}.ma-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:4px!important;margin-left:4px!important}.mx-2{margin-right:8px!important;margin-left:8px!important}.mx-3{margin-right:12px!important;margin-left:12px!important}.mx-4{margin-right:16px!important;margin-left:16px!important}.mx-5{margin-right:20px!important;margin-left:20px!important}.mx-6{margin-right:24px!important;margin-left:24px!important}.mx-7{margin-right:28px!important;margin-left:28px!important}.mx-8{margin-right:32px!important;margin-left:32px!important}.mx-9{margin-right:36px!important;margin-left:36px!important}.mx-10{margin-right:40px!important;margin-left:40px!important}.mx-11{margin-right:44px!important;margin-left:44px!important}.mx-12{margin-right:48px!important;margin-left:48px!important}.mx-13{margin-right:52px!important;margin-left:52px!important}.mx-14{margin-right:56px!important;margin-left:56px!important}.mx-15{margin-right:60px!important;margin-left:60px!important}.mx-16{margin-right:64px!important;margin-left:64px!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:4px!important;margin-bottom:4px!important}.my-2{margin-top:8px!important;margin-bottom:8px!important}.my-3{margin-top:12px!important;margin-bottom:12px!important}.my-4{margin-top:16px!important;margin-bottom:16px!important}.my-5{margin-top:20px!important;margin-bottom:20px!important}.my-6{margin-top:24px!important;margin-bottom:24px!important}.my-7{margin-top:28px!important;margin-bottom:28px!important}.my-8{margin-top:32px!important;margin-bottom:32px!important}.my-9{margin-top:36px!important;margin-bottom:36px!important}.my-10{margin-top:40px!important;margin-bottom:40px!important}.my-11{margin-top:44px!important;margin-bottom:44px!important}.my-12{margin-top:48px!important;margin-bottom:48px!important}.my-13{margin-top:52px!important;margin-bottom:52px!important}.my-14{margin-top:56px!important;margin-bottom:56px!important}.my-15{margin-top:60px!important;margin-bottom:60px!important}.my-16{margin-top:64px!important;margin-bottom:64px!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:4px!important}.mt-2{margin-top:8px!important}.mt-3{margin-top:12px!important}.mt-4{margin-top:16px!important}.mt-5{margin-top:20px!important}.mt-6{margin-top:24px!important}.mt-7{margin-top:28px!important}.mt-8{margin-top:32px!important}.mt-9{margin-top:36px!important}.mt-10{margin-top:40px!important}.mt-11{margin-top:44px!important}.mt-12{margin-top:48px!important}.mt-13{margin-top:52px!important}.mt-14{margin-top:56px!important}.mt-15{margin-top:60px!important}.mt-16{margin-top:64px!important}.mt-auto{margin-top:auto!important}.mr-0{margin-right:0!important}.mr-1{margin-right:4px!important}.mr-2{margin-right:8px!important}.mr-3{margin-right:12px!important}.mr-4{margin-right:16px!important}.mr-5{margin-right:20px!important}.mr-6{margin-right:24px!important}.mr-7{margin-right:28px!important}.mr-8{margin-right:32px!important}.mr-9{margin-right:36px!important}.mr-10{margin-right:40px!important}.mr-11{margin-right:44px!important}.mr-12{margin-right:48px!important}.mr-13{margin-right:52px!important}.mr-14{margin-right:56px!important}.mr-15{margin-right:60px!important}.mr-16{margin-right:64px!important}.mr-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:4px!important}.mb-2{margin-bottom:8px!important}.mb-3{margin-bottom:12px!important}.mb-4{margin-bottom:16px!important}.mb-5{margin-bottom:20px!important}.mb-6{margin-bottom:24px!important}.mb-7{margin-bottom:28px!important}.mb-8{margin-bottom:32px!important}.mb-9{margin-bottom:36px!important}.mb-10{margin-bottom:40px!important}.mb-11{margin-bottom:44px!important}.mb-12{margin-bottom:48px!important}.mb-13{margin-bottom:52px!important}.mb-14{margin-bottom:56px!important}.mb-15{margin-bottom:60px!important}.mb-16{margin-bottom:64px!important}.mb-auto{margin-bottom:auto!important}.ml-0{margin-left:0!important}.ml-1{margin-left:4px!important}.ml-2{margin-left:8px!important}.ml-3{margin-left:12px!important}.ml-4{margin-left:16px!important}.ml-5{margin-left:20px!important}.ml-6{margin-left:24px!important}.ml-7{margin-left:28px!important}.ml-8{margin-left:32px!important}.ml-9{margin-left:36px!important}.ml-10{margin-left:40px!important}.ml-11{margin-left:44px!important}.ml-12{margin-left:48px!important}.ml-13{margin-left:52px!important}.ml-14{margin-left:56px!important}.ml-15{margin-left:60px!important}.ml-16{margin-left:64px!important}.ml-auto{margin-left:auto!important}.ms-0{margin-inline-start:0px!important}.ms-1{margin-inline-start:4px!important}.ms-2{margin-inline-start:8px!important}.ms-3{margin-inline-start:12px!important}.ms-4{margin-inline-start:16px!important}.ms-5{margin-inline-start:20px!important}.ms-6{margin-inline-start:24px!important}.ms-7{margin-inline-start:28px!important}.ms-8{margin-inline-start:32px!important}.ms-9{margin-inline-start:36px!important}.ms-10{margin-inline-start:40px!important}.ms-11{margin-inline-start:44px!important}.ms-12{margin-inline-start:48px!important}.ms-13{margin-inline-start:52px!important}.ms-14{margin-inline-start:56px!important}.ms-15{margin-inline-start:60px!important}.ms-16{margin-inline-start:64px!important}.ms-auto{margin-inline-start:auto!important}.me-0{margin-inline-end:0px!important}.me-1{margin-inline-end:4px!important}.me-2{margin-inline-end:8px!important}.me-3{margin-inline-end:12px!important}.me-4{margin-inline-end:16px!important}.me-5{margin-inline-end:20px!important}.me-6{margin-inline-end:24px!important}.me-7{margin-inline-end:28px!important}.me-8{margin-inline-end:32px!important}.me-9{margin-inline-end:36px!important}.me-10{margin-inline-end:40px!important}.me-11{margin-inline-end:44px!important}.me-12{margin-inline-end:48px!important}.me-13{margin-inline-end:52px!important}.me-14{margin-inline-end:56px!important}.me-15{margin-inline-end:60px!important}.me-16{margin-inline-end:64px!important}.me-auto{margin-inline-end:auto!important}.ma-n1{margin:-4px!important}.ma-n2{margin:-8px!important}.ma-n3{margin:-12px!important}.ma-n4{margin:-16px!important}.ma-n5{margin:-20px!important}.ma-n6{margin:-24px!important}.ma-n7{margin:-28px!important}.ma-n8{margin:-32px!important}.ma-n9{margin:-36px!important}.ma-n10{margin:-40px!important}.ma-n11{margin:-44px!important}.ma-n12{margin:-48px!important}.ma-n13{margin:-52px!important}.ma-n14{margin:-56px!important}.ma-n15{margin:-60px!important}.ma-n16{margin:-64px!important}.mx-n1{margin-right:-4px!important;margin-left:-4px!important}.mx-n2{margin-right:-8px!important;margin-left:-8px!important}.mx-n3{margin-right:-12px!important;margin-left:-12px!important}.mx-n4{margin-right:-16px!important;margin-left:-16px!important}.mx-n5{margin-right:-20px!important;margin-left:-20px!important}.mx-n6{margin-right:-24px!important;margin-left:-24px!important}.mx-n7{margin-right:-28px!important;margin-left:-28px!important}.mx-n8{margin-right:-32px!important;margin-left:-32px!important}.mx-n9{margin-right:-36px!important;margin-left:-36px!important}.mx-n10{margin-right:-40px!important;margin-left:-40px!important}.mx-n11{margin-right:-44px!important;margin-left:-44px!important}.mx-n12{margin-right:-48px!important;margin-left:-48px!important}.mx-n13{margin-right:-52px!important;margin-left:-52px!important}.mx-n14{margin-right:-56px!important;margin-left:-56px!important}.mx-n15{margin-right:-60px!important;margin-left:-60px!important}.mx-n16{margin-right:-64px!important;margin-left:-64px!important}.my-n1{margin-top:-4px!important;margin-bottom:-4px!important}.my-n2{margin-top:-8px!important;margin-bottom:-8px!important}.my-n3{margin-top:-12px!important;margin-bottom:-12px!important}.my-n4{margin-top:-16px!important;margin-bottom:-16px!important}.my-n5{margin-top:-20px!important;margin-bottom:-20px!important}.my-n6{margin-top:-24px!important;margin-bottom:-24px!important}.my-n7{margin-top:-28px!important;margin-bottom:-28px!important}.my-n8{margin-top:-32px!important;margin-bottom:-32px!important}.my-n9{margin-top:-36px!important;margin-bottom:-36px!important}.my-n10{margin-top:-40px!important;margin-bottom:-40px!important}.my-n11{margin-top:-44px!important;margin-bottom:-44px!important}.my-n12{margin-top:-48px!important;margin-bottom:-48px!important}.my-n13{margin-top:-52px!important;margin-bottom:-52px!important}.my-n14{margin-top:-56px!important;margin-bottom:-56px!important}.my-n15{margin-top:-60px!important;margin-bottom:-60px!important}.my-n16{margin-top:-64px!important;margin-bottom:-64px!important}.mt-n1{margin-top:-4px!important}.mt-n2{margin-top:-8px!important}.mt-n3{margin-top:-12px!important}.mt-n4{margin-top:-16px!important}.mt-n5{margin-top:-20px!important}.mt-n6{margin-top:-24px!important}.mt-n7{margin-top:-28px!important}.mt-n8{margin-top:-32px!important}.mt-n9{margin-top:-36px!important}.mt-n10{margin-top:-40px!important}.mt-n11{margin-top:-44px!important}.mt-n12{margin-top:-48px!important}.mt-n13{margin-top:-52px!important}.mt-n14{margin-top:-56px!important}.mt-n15{margin-top:-60px!important}.mt-n16{margin-top:-64px!important}.mr-n1{margin-right:-4px!important}.mr-n2{margin-right:-8px!important}.mr-n3{margin-right:-12px!important}.mr-n4{margin-right:-16px!important}.mr-n5{margin-right:-20px!important}.mr-n6{margin-right:-24px!important}.mr-n7{margin-right:-28px!important}.mr-n8{margin-right:-32px!important}.mr-n9{margin-right:-36px!important}.mr-n10{margin-right:-40px!important}.mr-n11{margin-right:-44px!important}.mr-n12{margin-right:-48px!important}.mr-n13{margin-right:-52px!important}.mr-n14{margin-right:-56px!important}.mr-n15{margin-right:-60px!important}.mr-n16{margin-right:-64px!important}.mb-n1{margin-bottom:-4px!important}.mb-n2{margin-bottom:-8px!important}.mb-n3{margin-bottom:-12px!important}.mb-n4{margin-bottom:-16px!important}.mb-n5{margin-bottom:-20px!important}.mb-n6{margin-bottom:-24px!important}.mb-n7{margin-bottom:-28px!important}.mb-n8{margin-bottom:-32px!important}.mb-n9{margin-bottom:-36px!important}.mb-n10{margin-bottom:-40px!important}.mb-n11{margin-bottom:-44px!important}.mb-n12{margin-bottom:-48px!important}.mb-n13{margin-bottom:-52px!important}.mb-n14{margin-bottom:-56px!important}.mb-n15{margin-bottom:-60px!important}.mb-n16{margin-bottom:-64px!important}.ml-n1{margin-left:-4px!important}.ml-n2{margin-left:-8px!important}.ml-n3{margin-left:-12px!important}.ml-n4{margin-left:-16px!important}.ml-n5{margin-left:-20px!important}.ml-n6{margin-left:-24px!important}.ml-n7{margin-left:-28px!important}.ml-n8{margin-left:-32px!important}.ml-n9{margin-left:-36px!important}.ml-n10{margin-left:-40px!important}.ml-n11{margin-left:-44px!important}.ml-n12{margin-left:-48px!important}.ml-n13{margin-left:-52px!important}.ml-n14{margin-left:-56px!important}.ml-n15{margin-left:-60px!important}.ml-n16{margin-left:-64px!important}.ms-n1{margin-inline-start:-4px!important}.ms-n2{margin-inline-start:-8px!important}.ms-n3{margin-inline-start:-12px!important}.ms-n4{margin-inline-start:-16px!important}.ms-n5{margin-inline-start:-20px!important}.ms-n6{margin-inline-start:-24px!important}.ms-n7{margin-inline-start:-28px!important}.ms-n8{margin-inline-start:-32px!important}.ms-n9{margin-inline-start:-36px!important}.ms-n10{margin-inline-start:-40px!important}.ms-n11{margin-inline-start:-44px!important}.ms-n12{margin-inline-start:-48px!important}.ms-n13{margin-inline-start:-52px!important}.ms-n14{margin-inline-start:-56px!important}.ms-n15{margin-inline-start:-60px!important}.ms-n16{margin-inline-start:-64px!important}.me-n1{margin-inline-end:-4px!important}.me-n2{margin-inline-end:-8px!important}.me-n3{margin-inline-end:-12px!important}.me-n4{margin-inline-end:-16px!important}.me-n5{margin-inline-end:-20px!important}.me-n6{margin-inline-end:-24px!important}.me-n7{margin-inline-end:-28px!important}.me-n8{margin-inline-end:-32px!important}.me-n9{margin-inline-end:-36px!important}.me-n10{margin-inline-end:-40px!important}.me-n11{margin-inline-end:-44px!important}.me-n12{margin-inline-end:-48px!important}.me-n13{margin-inline-end:-52px!important}.me-n14{margin-inline-end:-56px!important}.me-n15{margin-inline-end:-60px!important}.me-n16{margin-inline-end:-64px!important}.pa-0{padding:0!important}.pa-1{padding:4px!important}.pa-2{padding:8px!important}.pa-3{padding:12px!important}.pa-4{padding:16px!important}.pa-5{padding:20px!important}.pa-6{padding:24px!important}.pa-7{padding:28px!important}.pa-8{padding:32px!important}.pa-9{padding:36px!important}.pa-10{padding:40px!important}.pa-11{padding:44px!important}.pa-12{padding:48px!important}.pa-13{padding:52px!important}.pa-14{padding:56px!important}.pa-15{padding:60px!important}.pa-16{padding:64px!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:4px!important;padding-left:4px!important}.px-2{padding-right:8px!important;padding-left:8px!important}.px-3{padding-right:12px!important;padding-left:12px!important}.px-4{padding-right:16px!important;padding-left:16px!important}.px-5{padding-right:20px!important;padding-left:20px!important}.px-6{padding-right:24px!important;padding-left:24px!important}.px-7{padding-right:28px!important;padding-left:28px!important}.px-8{padding-right:32px!important;padding-left:32px!important}.px-9{padding-right:36px!important;padding-left:36px!important}.px-10{padding-right:40px!important;padding-left:40px!important}.px-11{padding-right:44px!important;padding-left:44px!important}.px-12{padding-right:48px!important;padding-left:48px!important}.px-13{padding-right:52px!important;padding-left:52px!important}.px-14{padding-right:56px!important;padding-left:56px!important}.px-15{padding-right:60px!important;padding-left:60px!important}.px-16{padding-right:64px!important;padding-left:64px!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:4px!important;padding-bottom:4px!important}.py-2{padding-top:8px!important;padding-bottom:8px!important}.py-3{padding-top:12px!important;padding-bottom:12px!important}.py-4{padding-top:16px!important;padding-bottom:16px!important}.py-5{padding-top:20px!important;padding-bottom:20px!important}.py-6{padding-top:24px!important;padding-bottom:24px!important}.py-7{padding-top:28px!important;padding-bottom:28px!important}.py-8{padding-top:32px!important;padding-bottom:32px!important}.py-9{padding-top:36px!important;padding-bottom:36px!important}.py-10{padding-top:40px!important;padding-bottom:40px!important}.py-11{padding-top:44px!important;padding-bottom:44px!important}.py-12{padding-top:48px!important;padding-bottom:48px!important}.py-13{padding-top:52px!important;padding-bottom:52px!important}.py-14{padding-top:56px!important;padding-bottom:56px!important}.py-15{padding-top:60px!important;padding-bottom:60px!important}.py-16{padding-top:64px!important;padding-bottom:64px!important}.pt-0{padding-top:0!important}.pt-1{padding-top:4px!important}.pt-2{padding-top:8px!important}.pt-3{padding-top:12px!important}.pt-4{padding-top:16px!important}.pt-5{padding-top:20px!important}.pt-6{padding-top:24px!important}.pt-7{padding-top:28px!important}.pt-8{padding-top:32px!important}.pt-9{padding-top:36px!important}.pt-10{padding-top:40px!important}.pt-11{padding-top:44px!important}.pt-12{padding-top:48px!important}.pt-13{padding-top:52px!important}.pt-14{padding-top:56px!important}.pt-15{padding-top:60px!important}.pt-16{padding-top:64px!important}.pr-0{padding-right:0!important}.pr-1{padding-right:4px!important}.pr-2{padding-right:8px!important}.pr-3{padding-right:12px!important}.pr-4{padding-right:16px!important}.pr-5{padding-right:20px!important}.pr-6{padding-right:24px!important}.pr-7{padding-right:28px!important}.pr-8{padding-right:32px!important}.pr-9{padding-right:36px!important}.pr-10{padding-right:40px!important}.pr-11{padding-right:44px!important}.pr-12{padding-right:48px!important}.pr-13{padding-right:52px!important}.pr-14{padding-right:56px!important}.pr-15{padding-right:60px!important}.pr-16{padding-right:64px!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:4px!important}.pb-2{padding-bottom:8px!important}.pb-3{padding-bottom:12px!important}.pb-4{padding-bottom:16px!important}.pb-5{padding-bottom:20px!important}.pb-6{padding-bottom:24px!important}.pb-7{padding-bottom:28px!important}.pb-8{padding-bottom:32px!important}.pb-9{padding-bottom:36px!important}.pb-10{padding-bottom:40px!important}.pb-11{padding-bottom:44px!important}.pb-12{padding-bottom:48px!important}.pb-13{padding-bottom:52px!important}.pb-14{padding-bottom:56px!important}.pb-15{padding-bottom:60px!important}.pb-16{padding-bottom:64px!important}.pl-0{padding-left:0!important}.pl-1{padding-left:4px!important}.pl-2{padding-left:8px!important}.pl-3{padding-left:12px!important}.pl-4{padding-left:16px!important}.pl-5{padding-left:20px!important}.pl-6{padding-left:24px!important}.pl-7{padding-left:28px!important}.pl-8{padding-left:32px!important}.pl-9{padding-left:36px!important}.pl-10{padding-left:40px!important}.pl-11{padding-left:44px!important}.pl-12{padding-left:48px!important}.pl-13{padding-left:52px!important}.pl-14{padding-left:56px!important}.pl-15{padding-left:60px!important}.pl-16{padding-left:64px!important}.ps-0{padding-inline-start:0px!important}.ps-1{padding-inline-start:4px!important}.ps-2{padding-inline-start:8px!important}.ps-3{padding-inline-start:12px!important}.ps-4{padding-inline-start:16px!important}.ps-5{padding-inline-start:20px!important}.ps-6{padding-inline-start:24px!important}.ps-7{padding-inline-start:28px!important}.ps-8{padding-inline-start:32px!important}.ps-9{padding-inline-start:36px!important}.ps-10{padding-inline-start:40px!important}.ps-11{padding-inline-start:44px!important}.ps-12{padding-inline-start:48px!important}.ps-13{padding-inline-start:52px!important}.ps-14{padding-inline-start:56px!important}.ps-15{padding-inline-start:60px!important}.ps-16{padding-inline-start:64px!important}.pe-0{padding-inline-end:0px!important}.pe-1{padding-inline-end:4px!important}.pe-2{padding-inline-end:8px!important}.pe-3{padding-inline-end:12px!important}.pe-4{padding-inline-end:16px!important}.pe-5{padding-inline-end:20px!important}.pe-6{padding-inline-end:24px!important}.pe-7{padding-inline-end:28px!important}.pe-8{padding-inline-end:32px!important}.pe-9{padding-inline-end:36px!important}.pe-10{padding-inline-end:40px!important}.pe-11{padding-inline-end:44px!important}.pe-12{padding-inline-end:48px!important}.pe-13{padding-inline-end:52px!important}.pe-14{padding-inline-end:56px!important}.pe-15{padding-inline-end:60px!important}.pe-16{padding-inline-end:64px!important}.rounded-0{border-radius:0!important}.rounded-sm{border-radius:2px!important}.rounded{border-radius:4px!important}.rounded-lg{border-radius:8px!important}.rounded-xl{border-radius:24px!important}.rounded-pill{border-radius:9999px!important}.rounded-circle{border-radius:50%!important}.rounded-shaped{border-radius:24px 0!important}.rounded-t-0{border-top-left-radius:0!important;border-top-right-radius:0!important}.rounded-t-sm{border-top-left-radius:2px!important;border-top-right-radius:2px!important}.rounded-t{border-top-left-radius:4px!important;border-top-right-radius:4px!important}.rounded-t-lg{border-top-left-radius:8px!important;border-top-right-radius:8px!important}.rounded-t-xl{border-top-left-radius:24px!important;border-top-right-radius:24px!important}.rounded-t-pill{border-top-left-radius:9999px!important;border-top-right-radius:9999px!important}.rounded-t-circle{border-top-left-radius:50%!important;border-top-right-radius:50%!important}.rounded-t-shaped{border-top-left-radius:24px!important;border-top-right-radius:0!important}.v-locale--is-ltr .rounded-e-0{border-top-right-radius:0!important;border-bottom-right-radius:0!important}.v-locale--is-rtl .rounded-e-0{border-top-left-radius:0!important;border-bottom-left-radius:0!important}.v-locale--is-ltr .rounded-e-sm{border-top-right-radius:2px!important;border-bottom-right-radius:2px!important}.v-locale--is-rtl .rounded-e-sm{border-top-left-radius:2px!important;border-bottom-left-radius:2px!important}.v-locale--is-ltr .rounded-e{border-top-right-radius:4px!important;border-bottom-right-radius:4px!important}.v-locale--is-rtl .rounded-e{border-top-left-radius:4px!important;border-bottom-left-radius:4px!important}.v-locale--is-ltr .rounded-e-lg{border-top-right-radius:8px!important;border-bottom-right-radius:8px!important}.v-locale--is-rtl .rounded-e-lg{border-top-left-radius:8px!important;border-bottom-left-radius:8px!important}.v-locale--is-ltr .rounded-e-xl{border-top-right-radius:24px!important;border-bottom-right-radius:24px!important}.v-locale--is-rtl .rounded-e-xl{border-top-left-radius:24px!important;border-bottom-left-radius:24px!important}.v-locale--is-ltr .rounded-e-pill{border-top-right-radius:9999px!important;border-bottom-right-radius:9999px!important}.v-locale--is-rtl .rounded-e-pill{border-top-left-radius:9999px!important;border-bottom-left-radius:9999px!important}.v-locale--is-ltr .rounded-e-circle{border-top-right-radius:50%!important;border-bottom-right-radius:50%!important}.v-locale--is-rtl .rounded-e-circle{border-top-left-radius:50%!important;border-bottom-left-radius:50%!important}.v-locale--is-ltr .rounded-e-shaped{border-top-right-radius:24px!important;border-bottom-right-radius:0!important}.v-locale--is-rtl .rounded-e-shaped{border-top-left-radius:24px!important;border-bottom-left-radius:0!important}.rounded-b-0{border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.rounded-b-sm{border-bottom-left-radius:2px!important;border-bottom-right-radius:2px!important}.rounded-b{border-bottom-left-radius:4px!important;border-bottom-right-radius:4px!important}.rounded-b-lg{border-bottom-left-radius:8px!important;border-bottom-right-radius:8px!important}.rounded-b-xl{border-bottom-left-radius:24px!important;border-bottom-right-radius:24px!important}.rounded-b-pill{border-bottom-left-radius:9999px!important;border-bottom-right-radius:9999px!important}.rounded-b-circle{border-bottom-left-radius:50%!important;border-bottom-right-radius:50%!important}.rounded-b-shaped{border-bottom-left-radius:24px!important;border-bottom-right-radius:0!important}.v-locale--is-ltr .rounded-s-0{border-top-left-radius:0!important;border-bottom-left-radius:0!important}.v-locale--is-rtl .rounded-s-0{border-top-right-radius:0!important;border-bottom-right-radius:0!important}.v-locale--is-ltr .rounded-s-sm{border-top-left-radius:2px!important;border-bottom-left-radius:2px!important}.v-locale--is-rtl .rounded-s-sm{border-top-right-radius:2px!important;border-bottom-right-radius:2px!important}.v-locale--is-ltr .rounded-s{border-top-left-radius:4px!important;border-bottom-left-radius:4px!important}.v-locale--is-rtl .rounded-s{border-top-right-radius:4px!important;border-bottom-right-radius:4px!important}.v-locale--is-ltr .rounded-s-lg{border-top-left-radius:8px!important;border-bottom-left-radius:8px!important}.v-locale--is-rtl .rounded-s-lg{border-top-right-radius:8px!important;border-bottom-right-radius:8px!important}.v-locale--is-ltr .rounded-s-xl{border-top-left-radius:24px!important;border-bottom-left-radius:24px!important}.v-locale--is-rtl .rounded-s-xl{border-top-right-radius:24px!important;border-bottom-right-radius:24px!important}.v-locale--is-ltr .rounded-s-pill{border-top-left-radius:9999px!important;border-bottom-left-radius:9999px!important}.v-locale--is-rtl .rounded-s-pill{border-top-right-radius:9999px!important;border-bottom-right-radius:9999px!important}.v-locale--is-ltr .rounded-s-circle{border-top-left-radius:50%!important;border-bottom-left-radius:50%!important}.v-locale--is-rtl .rounded-s-circle{border-top-right-radius:50%!important;border-bottom-right-radius:50%!important}.v-locale--is-ltr .rounded-s-shaped{border-top-left-radius:24px!important;border-bottom-left-radius:0!important}.v-locale--is-rtl .rounded-s-shaped{border-top-right-radius:24px!important;border-bottom-right-radius:0!important}.v-locale--is-ltr .rounded-ts-0{border-top-left-radius:0!important}.v-locale--is-rtl .rounded-ts-0{border-top-right-radius:0!important}.v-locale--is-ltr .rounded-ts-sm{border-top-left-radius:2px!important}.v-locale--is-rtl .rounded-ts-sm{border-top-right-radius:2px!important}.v-locale--is-ltr .rounded-ts{border-top-left-radius:4px!important}.v-locale--is-rtl .rounded-ts{border-top-right-radius:4px!important}.v-locale--is-ltr .rounded-ts-lg{border-top-left-radius:8px!important}.v-locale--is-rtl .rounded-ts-lg{border-top-right-radius:8px!important}.v-locale--is-ltr .rounded-ts-xl{border-top-left-radius:24px!important}.v-locale--is-rtl .rounded-ts-xl{border-top-right-radius:24px!important}.v-locale--is-ltr .rounded-ts-pill{border-top-left-radius:9999px!important}.v-locale--is-rtl .rounded-ts-pill{border-top-right-radius:9999px!important}.v-locale--is-ltr .rounded-ts-circle{border-top-left-radius:50%!important}.v-locale--is-rtl .rounded-ts-circle{border-top-right-radius:50%!important}.v-locale--is-ltr .rounded-ts-shaped{border-top-left-radius:24px 0!important}.v-locale--is-rtl .rounded-ts-shaped{border-top-right-radius:24px 0!important}.v-locale--is-ltr .rounded-te-0{border-top-right-radius:0!important}.v-locale--is-rtl .rounded-te-0{border-top-left-radius:0!important}.v-locale--is-ltr .rounded-te-sm{border-top-right-radius:2px!important}.v-locale--is-rtl .rounded-te-sm{border-top-left-radius:2px!important}.v-locale--is-ltr .rounded-te{border-top-right-radius:4px!important}.v-locale--is-rtl .rounded-te{border-top-left-radius:4px!important}.v-locale--is-ltr .rounded-te-lg{border-top-right-radius:8px!important}.v-locale--is-rtl .rounded-te-lg{border-top-left-radius:8px!important}.v-locale--is-ltr .rounded-te-xl{border-top-right-radius:24px!important}.v-locale--is-rtl .rounded-te-xl{border-top-left-radius:24px!important}.v-locale--is-ltr .rounded-te-pill{border-top-right-radius:9999px!important}.v-locale--is-rtl .rounded-te-pill{border-top-left-radius:9999px!important}.v-locale--is-ltr .rounded-te-circle{border-top-right-radius:50%!important}.v-locale--is-rtl .rounded-te-circle{border-top-left-radius:50%!important}.v-locale--is-ltr .rounded-te-shaped{border-top-right-radius:24px 0!important}.v-locale--is-rtl .rounded-te-shaped{border-top-left-radius:24px 0!important}.v-locale--is-ltr .rounded-be-0{border-bottom-right-radius:0!important}.v-locale--is-rtl .rounded-be-0{border-bottom-left-radius:0!important}.v-locale--is-ltr .rounded-be-sm{border-bottom-right-radius:2px!important}.v-locale--is-rtl .rounded-be-sm{border-bottom-left-radius:2px!important}.v-locale--is-ltr .rounded-be{border-bottom-right-radius:4px!important}.v-locale--is-rtl .rounded-be{border-bottom-left-radius:4px!important}.v-locale--is-ltr .rounded-be-lg{border-bottom-right-radius:8px!important}.v-locale--is-rtl .rounded-be-lg{border-bottom-left-radius:8px!important}.v-locale--is-ltr .rounded-be-xl{border-bottom-right-radius:24px!important}.v-locale--is-rtl .rounded-be-xl{border-bottom-left-radius:24px!important}.v-locale--is-ltr .rounded-be-pill{border-bottom-right-radius:9999px!important}.v-locale--is-rtl .rounded-be-pill{border-bottom-left-radius:9999px!important}.v-locale--is-ltr .rounded-be-circle{border-bottom-right-radius:50%!important}.v-locale--is-rtl .rounded-be-circle{border-bottom-left-radius:50%!important}.v-locale--is-ltr .rounded-be-shaped{border-bottom-right-radius:24px 0!important}.v-locale--is-rtl .rounded-be-shaped{border-bottom-left-radius:24px 0!important}.v-locale--is-ltr .rounded-bs-0{border-bottom-left-radius:0!important}.v-locale--is-rtl .rounded-bs-0{border-bottom-right-radius:0!important}.v-locale--is-ltr .rounded-bs-sm{border-bottom-left-radius:2px!important}.v-locale--is-rtl .rounded-bs-sm{border-bottom-right-radius:2px!important}.v-locale--is-ltr .rounded-bs{border-bottom-left-radius:4px!important}.v-locale--is-rtl .rounded-bs{border-bottom-right-radius:4px!important}.v-locale--is-ltr .rounded-bs-lg{border-bottom-left-radius:8px!important}.v-locale--is-rtl .rounded-bs-lg{border-bottom-right-radius:8px!important}.v-locale--is-ltr .rounded-bs-xl{border-bottom-left-radius:24px!important}.v-locale--is-rtl .rounded-bs-xl{border-bottom-right-radius:24px!important}.v-locale--is-ltr .rounded-bs-pill{border-bottom-left-radius:9999px!important}.v-locale--is-rtl .rounded-bs-pill{border-bottom-right-radius:9999px!important}.v-locale--is-ltr .rounded-bs-circle{border-bottom-left-radius:50%!important}.v-locale--is-rtl .rounded-bs-circle{border-bottom-right-radius:50%!important}.v-locale--is-ltr .rounded-bs-shaped{border-bottom-left-radius:24px 0!important}.v-locale--is-rtl .rounded-bs-shaped{border-bottom-right-radius:24px 0!important}.border-0{border-width:0!important;border-style:solid!important;border-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border,.border-thin{border-width:thin!important;border-style:solid!important;border-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-sm{border-width:1px!important;border-style:solid!important;border-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-md{border-width:2px!important;border-style:solid!important;border-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-lg{border-width:4px!important;border-style:solid!important;border-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-xl{border-width:8px!important;border-style:solid!important;border-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-current{border-color:currentColor!important}.border-opacity-0{--v-border-opacity: 0 !important}.border-opacity{--v-border-opacity: .12 !important}.border-opacity-25{--v-border-opacity: .25 !important}.border-opacity-50{--v-border-opacity: .5 !important}.border-opacity-75{--v-border-opacity: .75 !important}.border-opacity-100{--v-border-opacity: 1 !important}.border-t-0{border-block-start-width:0!important;border-block-start-style:solid!important;border-block-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-t,.border-t-thin{border-block-start-width:thin!important;border-block-start-style:solid!important;border-block-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-t-sm{border-block-start-width:1px!important;border-block-start-style:solid!important;border-block-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-t-md{border-block-start-width:2px!important;border-block-start-style:solid!important;border-block-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-t-lg{border-block-start-width:4px!important;border-block-start-style:solid!important;border-block-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-t-xl{border-block-start-width:8px!important;border-block-start-style:solid!important;border-block-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-e-0{border-inline-end-width:0!important;border-inline-end-style:solid!important;border-inline-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-e,.border-e-thin{border-inline-end-width:thin!important;border-inline-end-style:solid!important;border-inline-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-e-sm{border-inline-end-width:1px!important;border-inline-end-style:solid!important;border-inline-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-e-md{border-inline-end-width:2px!important;border-inline-end-style:solid!important;border-inline-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-e-lg{border-inline-end-width:4px!important;border-inline-end-style:solid!important;border-inline-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-e-xl{border-inline-end-width:8px!important;border-inline-end-style:solid!important;border-inline-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-b-0{border-block-end-width:0!important;border-block-end-style:solid!important;border-block-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-b,.border-b-thin{border-block-end-width:thin!important;border-block-end-style:solid!important;border-block-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-b-sm{border-block-end-width:1px!important;border-block-end-style:solid!important;border-block-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-b-md{border-block-end-width:2px!important;border-block-end-style:solid!important;border-block-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-b-lg{border-block-end-width:4px!important;border-block-end-style:solid!important;border-block-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-b-xl{border-block-end-width:8px!important;border-block-end-style:solid!important;border-block-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-s-0{border-inline-start-width:0!important;border-inline-start-style:solid!important;border-inline-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-s,.border-s-thin{border-inline-start-width:thin!important;border-inline-start-style:solid!important;border-inline-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-s-sm{border-inline-start-width:1px!important;border-inline-start-style:solid!important;border-inline-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-s-md{border-inline-start-width:2px!important;border-inline-start-style:solid!important;border-inline-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-s-lg{border-inline-start-width:4px!important;border-inline-start-style:solid!important;border-inline-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-s-xl{border-inline-start-width:8px!important;border-inline-start-style:solid!important;border-inline-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-solid{border-style:solid!important}.border-dashed{border-style:dashed!important}.border-dotted{border-style:dotted!important}.border-double{border-style:double!important}.border-none{border-style:none!important}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}.text-justify{text-align:justify!important}.text-start{text-align:start!important}.text-end{text-align:end!important}.text-decoration-line-through{text-decoration:line-through!important}.text-decoration-none{text-decoration:none!important}.text-decoration-overline{text-decoration:overline!important}.text-decoration-underline{text-decoration:underline!important}.text-wrap{white-space:normal!important}.text-no-wrap{white-space:nowrap!important}.text-pre{white-space:pre!important}.text-pre-line{white-space:pre-line!important}.text-pre-wrap{white-space:pre-wrap!important}.text-break{overflow-wrap:break-word!important;word-break:break-word!important}.opacity-hover{opacity:var(--v-hover-opacity)!important}.opacity-focus{opacity:var(--v-focus-opacity)!important}.opacity-selected{opacity:var(--v-selected-opacity)!important}.opacity-activated{opacity:var(--v-activated-opacity)!important}.opacity-pressed{opacity:var(--v-pressed-opacity)!important}.opacity-dragged{opacity:var(--v-dragged-opacity)!important}.opacity-0{opacity:0!important}.opacity-10{opacity:.1!important}.opacity-20{opacity:.2!important}.opacity-30{opacity:.3!important}.opacity-40{opacity:.4!important}.opacity-50{opacity:.5!important}.opacity-60{opacity:.6!important}.opacity-70{opacity:.7!important}.opacity-80{opacity:.8!important}.opacity-90{opacity:.9!important}.opacity-100{opacity:1!important}.text-high-emphasis{color:rgba(var(--v-theme-on-background),var(--v-high-emphasis-opacity))!important}.text-medium-emphasis{color:rgba(var(--v-theme-on-background),var(--v-medium-emphasis-opacity))!important}.text-disabled{color:rgba(var(--v-theme-on-background),var(--v-disabled-opacity))!important}.text-truncate{white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}.text-h1{font-size:6rem!important;font-weight:300;line-height:1;letter-spacing:-.015625em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-h2{font-size:3.75rem!important;font-weight:300;line-height:1;letter-spacing:-.0083333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-h3{font-size:3rem!important;font-weight:400;line-height:1.05;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-h4{font-size:2.125rem!important;font-weight:400;line-height:1.175;letter-spacing:.0073529412em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-h5{font-size:1.5rem!important;font-weight:400;line-height:1.333;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-h6{font-size:1.25rem!important;font-weight:500;line-height:1.6;letter-spacing:.0125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-subtitle-1{font-size:1rem!important;font-weight:400;line-height:1.75;letter-spacing:.009375em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-subtitle-2{font-size:.875rem!important;font-weight:500;line-height:1.6;letter-spacing:.0071428571em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-body-1{font-size:1rem!important;font-weight:400;line-height:1.5;letter-spacing:.03125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-body-2{font-size:.875rem!important;font-weight:400;line-height:1.425;letter-spacing:.0178571429em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-button{font-size:.875rem!important;font-weight:500;line-height:2.6;letter-spacing:.0892857143em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}.text-caption{font-size:.75rem!important;font-weight:400;line-height:1.667;letter-spacing:.0333333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-overline{font-size:.75rem!important;font-weight:500;line-height:2.667;letter-spacing:.1666666667em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}.text-none{text-transform:none!important}.text-capitalize{text-transform:capitalize!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.font-weight-thin{font-weight:100!important}.font-weight-light{font-weight:300!important}.font-weight-regular{font-weight:400!important}.font-weight-medium{font-weight:500!important}.font-weight-bold{font-weight:700!important}.font-weight-black{font-weight:900!important}.font-italic{font-style:italic!important}.text-mono{font-family:monospace!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-fixed{position:fixed!important}.position-absolute{position:absolute!important}.position-sticky{position:sticky!important}.top-0{top:0!important}.right-0{right:0!important}.bottom-0{bottom:0!important}.left-0{left:0!important}.cursor-auto{cursor:auto!important}.cursor-default{cursor:default!important}.cursor-pointer{cursor:pointer!important}.cursor-wait{cursor:wait!important}.cursor-text{cursor:text!important}.cursor-move{cursor:move!important}.cursor-help{cursor:help!important}.cursor-not-allowed{cursor:not-allowed!important}.cursor-progress{cursor:progress!important}.cursor-grab{cursor:grab!important}.cursor-grabbing{cursor:grabbing!important}.cursor-none{cursor:none!important}.fill-height{height:100%!important}.h-auto{height:auto!important}.h-screen{height:100vh!important}.h-0{height:0!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-screen{height:100dvh!important}.w-auto{width:auto!important}.w-0{width:0!important}.w-25{width:25%!important}.w-33{width:33%!important}.w-50{width:50%!important}.w-66{width:66%!important}.w-75{width:75%!important}.w-100{width:100%!important}@media (min-width: 600px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.float-sm-none{float:none!important}.float-sm-left{float:left!important}.float-sm-right{float:right!important}.v-locale--is-rtl .float-sm-end{float:left!important}.v-locale--is-rtl .float-sm-start,.v-locale--is-ltr .float-sm-end{float:right!important}.v-locale--is-ltr .float-sm-start{float:left!important}.flex-sm-fill,.flex-sm-1-1{flex:1 1 auto!important}.flex-sm-1-0{flex:1 0 auto!important}.flex-sm-0-1{flex:0 1 auto!important}.flex-sm-0-0{flex:0 0 auto!important}.flex-sm-1-1-100{flex:1 1 100%!important}.flex-sm-1-0-100{flex:1 0 100%!important}.flex-sm-0-1-100{flex:0 1 100%!important}.flex-sm-0-0-100{flex:0 0 100%!important}.flex-sm-1-1-0{flex:1 1 0!important}.flex-sm-1-0-0{flex:1 0 0!important}.flex-sm-0-1-0{flex:0 1 0!important}.flex-sm-0-0-0{flex:0 0 0!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-sm-start{justify-content:flex-start!important}.justify-sm-end{justify-content:flex-end!important}.justify-sm-center{justify-content:center!important}.justify-sm-space-between{justify-content:space-between!important}.justify-sm-space-around{justify-content:space-around!important}.justify-sm-space-evenly{justify-content:space-evenly!important}.align-sm-start{align-items:flex-start!important}.align-sm-end{align-items:flex-end!important}.align-sm-center{align-items:center!important}.align-sm-baseline{align-items:baseline!important}.align-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-space-between{align-content:space-between!important}.align-content-sm-space-around{align-content:space-around!important}.align-content-sm-space-evenly{align-content:space-evenly!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-6{order:6!important}.order-sm-7{order:7!important}.order-sm-8{order:8!important}.order-sm-9{order:9!important}.order-sm-10{order:10!important}.order-sm-11{order:11!important}.order-sm-12{order:12!important}.order-sm-last{order:13!important}.ga-sm-0{gap:0px!important}.ga-sm-1{gap:4px!important}.ga-sm-2{gap:8px!important}.ga-sm-3{gap:12px!important}.ga-sm-4{gap:16px!important}.ga-sm-5{gap:20px!important}.ga-sm-6{gap:24px!important}.ga-sm-7{gap:28px!important}.ga-sm-8{gap:32px!important}.ga-sm-9{gap:36px!important}.ga-sm-10{gap:40px!important}.ga-sm-11{gap:44px!important}.ga-sm-12{gap:48px!important}.ga-sm-13{gap:52px!important}.ga-sm-14{gap:56px!important}.ga-sm-15{gap:60px!important}.ga-sm-16{gap:64px!important}.ga-sm-auto{gap:auto!important}.gr-sm-0{row-gap:0px!important}.gr-sm-1{row-gap:4px!important}.gr-sm-2{row-gap:8px!important}.gr-sm-3{row-gap:12px!important}.gr-sm-4{row-gap:16px!important}.gr-sm-5{row-gap:20px!important}.gr-sm-6{row-gap:24px!important}.gr-sm-7{row-gap:28px!important}.gr-sm-8{row-gap:32px!important}.gr-sm-9{row-gap:36px!important}.gr-sm-10{row-gap:40px!important}.gr-sm-11{row-gap:44px!important}.gr-sm-12{row-gap:48px!important}.gr-sm-13{row-gap:52px!important}.gr-sm-14{row-gap:56px!important}.gr-sm-15{row-gap:60px!important}.gr-sm-16{row-gap:64px!important}.gr-sm-auto{row-gap:auto!important}.gc-sm-0{-moz-column-gap:0px!important;column-gap:0px!important}.gc-sm-1{-moz-column-gap:4px!important;column-gap:4px!important}.gc-sm-2{-moz-column-gap:8px!important;column-gap:8px!important}.gc-sm-3{-moz-column-gap:12px!important;column-gap:12px!important}.gc-sm-4{-moz-column-gap:16px!important;column-gap:16px!important}.gc-sm-5{-moz-column-gap:20px!important;column-gap:20px!important}.gc-sm-6{-moz-column-gap:24px!important;column-gap:24px!important}.gc-sm-7{-moz-column-gap:28px!important;column-gap:28px!important}.gc-sm-8{-moz-column-gap:32px!important;column-gap:32px!important}.gc-sm-9{-moz-column-gap:36px!important;column-gap:36px!important}.gc-sm-10{-moz-column-gap:40px!important;column-gap:40px!important}.gc-sm-11{-moz-column-gap:44px!important;column-gap:44px!important}.gc-sm-12{-moz-column-gap:48px!important;column-gap:48px!important}.gc-sm-13{-moz-column-gap:52px!important;column-gap:52px!important}.gc-sm-14{-moz-column-gap:56px!important;column-gap:56px!important}.gc-sm-15{-moz-column-gap:60px!important;column-gap:60px!important}.gc-sm-16{-moz-column-gap:64px!important;column-gap:64px!important}.gc-sm-auto{-moz-column-gap:auto!important;column-gap:auto!important}.ma-sm-0{margin:0!important}.ma-sm-1{margin:4px!important}.ma-sm-2{margin:8px!important}.ma-sm-3{margin:12px!important}.ma-sm-4{margin:16px!important}.ma-sm-5{margin:20px!important}.ma-sm-6{margin:24px!important}.ma-sm-7{margin:28px!important}.ma-sm-8{margin:32px!important}.ma-sm-9{margin:36px!important}.ma-sm-10{margin:40px!important}.ma-sm-11{margin:44px!important}.ma-sm-12{margin:48px!important}.ma-sm-13{margin:52px!important}.ma-sm-14{margin:56px!important}.ma-sm-15{margin:60px!important}.ma-sm-16{margin:64px!important}.ma-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:4px!important;margin-left:4px!important}.mx-sm-2{margin-right:8px!important;margin-left:8px!important}.mx-sm-3{margin-right:12px!important;margin-left:12px!important}.mx-sm-4{margin-right:16px!important;margin-left:16px!important}.mx-sm-5{margin-right:20px!important;margin-left:20px!important}.mx-sm-6{margin-right:24px!important;margin-left:24px!important}.mx-sm-7{margin-right:28px!important;margin-left:28px!important}.mx-sm-8{margin-right:32px!important;margin-left:32px!important}.mx-sm-9{margin-right:36px!important;margin-left:36px!important}.mx-sm-10{margin-right:40px!important;margin-left:40px!important}.mx-sm-11{margin-right:44px!important;margin-left:44px!important}.mx-sm-12{margin-right:48px!important;margin-left:48px!important}.mx-sm-13{margin-right:52px!important;margin-left:52px!important}.mx-sm-14{margin-right:56px!important;margin-left:56px!important}.mx-sm-15{margin-right:60px!important;margin-left:60px!important}.mx-sm-16{margin-right:64px!important;margin-left:64px!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:4px!important;margin-bottom:4px!important}.my-sm-2{margin-top:8px!important;margin-bottom:8px!important}.my-sm-3{margin-top:12px!important;margin-bottom:12px!important}.my-sm-4{margin-top:16px!important;margin-bottom:16px!important}.my-sm-5{margin-top:20px!important;margin-bottom:20px!important}.my-sm-6{margin-top:24px!important;margin-bottom:24px!important}.my-sm-7{margin-top:28px!important;margin-bottom:28px!important}.my-sm-8{margin-top:32px!important;margin-bottom:32px!important}.my-sm-9{margin-top:36px!important;margin-bottom:36px!important}.my-sm-10{margin-top:40px!important;margin-bottom:40px!important}.my-sm-11{margin-top:44px!important;margin-bottom:44px!important}.my-sm-12{margin-top:48px!important;margin-bottom:48px!important}.my-sm-13{margin-top:52px!important;margin-bottom:52px!important}.my-sm-14{margin-top:56px!important;margin-bottom:56px!important}.my-sm-15{margin-top:60px!important;margin-bottom:60px!important}.my-sm-16{margin-top:64px!important;margin-bottom:64px!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:4px!important}.mt-sm-2{margin-top:8px!important}.mt-sm-3{margin-top:12px!important}.mt-sm-4{margin-top:16px!important}.mt-sm-5{margin-top:20px!important}.mt-sm-6{margin-top:24px!important}.mt-sm-7{margin-top:28px!important}.mt-sm-8{margin-top:32px!important}.mt-sm-9{margin-top:36px!important}.mt-sm-10{margin-top:40px!important}.mt-sm-11{margin-top:44px!important}.mt-sm-12{margin-top:48px!important}.mt-sm-13{margin-top:52px!important}.mt-sm-14{margin-top:56px!important}.mt-sm-15{margin-top:60px!important}.mt-sm-16{margin-top:64px!important}.mt-sm-auto{margin-top:auto!important}.mr-sm-0{margin-right:0!important}.mr-sm-1{margin-right:4px!important}.mr-sm-2{margin-right:8px!important}.mr-sm-3{margin-right:12px!important}.mr-sm-4{margin-right:16px!important}.mr-sm-5{margin-right:20px!important}.mr-sm-6{margin-right:24px!important}.mr-sm-7{margin-right:28px!important}.mr-sm-8{margin-right:32px!important}.mr-sm-9{margin-right:36px!important}.mr-sm-10{margin-right:40px!important}.mr-sm-11{margin-right:44px!important}.mr-sm-12{margin-right:48px!important}.mr-sm-13{margin-right:52px!important}.mr-sm-14{margin-right:56px!important}.mr-sm-15{margin-right:60px!important}.mr-sm-16{margin-right:64px!important}.mr-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:4px!important}.mb-sm-2{margin-bottom:8px!important}.mb-sm-3{margin-bottom:12px!important}.mb-sm-4{margin-bottom:16px!important}.mb-sm-5{margin-bottom:20px!important}.mb-sm-6{margin-bottom:24px!important}.mb-sm-7{margin-bottom:28px!important}.mb-sm-8{margin-bottom:32px!important}.mb-sm-9{margin-bottom:36px!important}.mb-sm-10{margin-bottom:40px!important}.mb-sm-11{margin-bottom:44px!important}.mb-sm-12{margin-bottom:48px!important}.mb-sm-13{margin-bottom:52px!important}.mb-sm-14{margin-bottom:56px!important}.mb-sm-15{margin-bottom:60px!important}.mb-sm-16{margin-bottom:64px!important}.mb-sm-auto{margin-bottom:auto!important}.ml-sm-0{margin-left:0!important}.ml-sm-1{margin-left:4px!important}.ml-sm-2{margin-left:8px!important}.ml-sm-3{margin-left:12px!important}.ml-sm-4{margin-left:16px!important}.ml-sm-5{margin-left:20px!important}.ml-sm-6{margin-left:24px!important}.ml-sm-7{margin-left:28px!important}.ml-sm-8{margin-left:32px!important}.ml-sm-9{margin-left:36px!important}.ml-sm-10{margin-left:40px!important}.ml-sm-11{margin-left:44px!important}.ml-sm-12{margin-left:48px!important}.ml-sm-13{margin-left:52px!important}.ml-sm-14{margin-left:56px!important}.ml-sm-15{margin-left:60px!important}.ml-sm-16{margin-left:64px!important}.ml-sm-auto{margin-left:auto!important}.ms-sm-0{margin-inline-start:0px!important}.ms-sm-1{margin-inline-start:4px!important}.ms-sm-2{margin-inline-start:8px!important}.ms-sm-3{margin-inline-start:12px!important}.ms-sm-4{margin-inline-start:16px!important}.ms-sm-5{margin-inline-start:20px!important}.ms-sm-6{margin-inline-start:24px!important}.ms-sm-7{margin-inline-start:28px!important}.ms-sm-8{margin-inline-start:32px!important}.ms-sm-9{margin-inline-start:36px!important}.ms-sm-10{margin-inline-start:40px!important}.ms-sm-11{margin-inline-start:44px!important}.ms-sm-12{margin-inline-start:48px!important}.ms-sm-13{margin-inline-start:52px!important}.ms-sm-14{margin-inline-start:56px!important}.ms-sm-15{margin-inline-start:60px!important}.ms-sm-16{margin-inline-start:64px!important}.ms-sm-auto{margin-inline-start:auto!important}.me-sm-0{margin-inline-end:0px!important}.me-sm-1{margin-inline-end:4px!important}.me-sm-2{margin-inline-end:8px!important}.me-sm-3{margin-inline-end:12px!important}.me-sm-4{margin-inline-end:16px!important}.me-sm-5{margin-inline-end:20px!important}.me-sm-6{margin-inline-end:24px!important}.me-sm-7{margin-inline-end:28px!important}.me-sm-8{margin-inline-end:32px!important}.me-sm-9{margin-inline-end:36px!important}.me-sm-10{margin-inline-end:40px!important}.me-sm-11{margin-inline-end:44px!important}.me-sm-12{margin-inline-end:48px!important}.me-sm-13{margin-inline-end:52px!important}.me-sm-14{margin-inline-end:56px!important}.me-sm-15{margin-inline-end:60px!important}.me-sm-16{margin-inline-end:64px!important}.me-sm-auto{margin-inline-end:auto!important}.ma-sm-n1{margin:-4px!important}.ma-sm-n2{margin:-8px!important}.ma-sm-n3{margin:-12px!important}.ma-sm-n4{margin:-16px!important}.ma-sm-n5{margin:-20px!important}.ma-sm-n6{margin:-24px!important}.ma-sm-n7{margin:-28px!important}.ma-sm-n8{margin:-32px!important}.ma-sm-n9{margin:-36px!important}.ma-sm-n10{margin:-40px!important}.ma-sm-n11{margin:-44px!important}.ma-sm-n12{margin:-48px!important}.ma-sm-n13{margin:-52px!important}.ma-sm-n14{margin:-56px!important}.ma-sm-n15{margin:-60px!important}.ma-sm-n16{margin:-64px!important}.mx-sm-n1{margin-right:-4px!important;margin-left:-4px!important}.mx-sm-n2{margin-right:-8px!important;margin-left:-8px!important}.mx-sm-n3{margin-right:-12px!important;margin-left:-12px!important}.mx-sm-n4{margin-right:-16px!important;margin-left:-16px!important}.mx-sm-n5{margin-right:-20px!important;margin-left:-20px!important}.mx-sm-n6{margin-right:-24px!important;margin-left:-24px!important}.mx-sm-n7{margin-right:-28px!important;margin-left:-28px!important}.mx-sm-n8{margin-right:-32px!important;margin-left:-32px!important}.mx-sm-n9{margin-right:-36px!important;margin-left:-36px!important}.mx-sm-n10{margin-right:-40px!important;margin-left:-40px!important}.mx-sm-n11{margin-right:-44px!important;margin-left:-44px!important}.mx-sm-n12{margin-right:-48px!important;margin-left:-48px!important}.mx-sm-n13{margin-right:-52px!important;margin-left:-52px!important}.mx-sm-n14{margin-right:-56px!important;margin-left:-56px!important}.mx-sm-n15{margin-right:-60px!important;margin-left:-60px!important}.mx-sm-n16{margin-right:-64px!important;margin-left:-64px!important}.my-sm-n1{margin-top:-4px!important;margin-bottom:-4px!important}.my-sm-n2{margin-top:-8px!important;margin-bottom:-8px!important}.my-sm-n3{margin-top:-12px!important;margin-bottom:-12px!important}.my-sm-n4{margin-top:-16px!important;margin-bottom:-16px!important}.my-sm-n5{margin-top:-20px!important;margin-bottom:-20px!important}.my-sm-n6{margin-top:-24px!important;margin-bottom:-24px!important}.my-sm-n7{margin-top:-28px!important;margin-bottom:-28px!important}.my-sm-n8{margin-top:-32px!important;margin-bottom:-32px!important}.my-sm-n9{margin-top:-36px!important;margin-bottom:-36px!important}.my-sm-n10{margin-top:-40px!important;margin-bottom:-40px!important}.my-sm-n11{margin-top:-44px!important;margin-bottom:-44px!important}.my-sm-n12{margin-top:-48px!important;margin-bottom:-48px!important}.my-sm-n13{margin-top:-52px!important;margin-bottom:-52px!important}.my-sm-n14{margin-top:-56px!important;margin-bottom:-56px!important}.my-sm-n15{margin-top:-60px!important;margin-bottom:-60px!important}.my-sm-n16{margin-top:-64px!important;margin-bottom:-64px!important}.mt-sm-n1{margin-top:-4px!important}.mt-sm-n2{margin-top:-8px!important}.mt-sm-n3{margin-top:-12px!important}.mt-sm-n4{margin-top:-16px!important}.mt-sm-n5{margin-top:-20px!important}.mt-sm-n6{margin-top:-24px!important}.mt-sm-n7{margin-top:-28px!important}.mt-sm-n8{margin-top:-32px!important}.mt-sm-n9{margin-top:-36px!important}.mt-sm-n10{margin-top:-40px!important}.mt-sm-n11{margin-top:-44px!important}.mt-sm-n12{margin-top:-48px!important}.mt-sm-n13{margin-top:-52px!important}.mt-sm-n14{margin-top:-56px!important}.mt-sm-n15{margin-top:-60px!important}.mt-sm-n16{margin-top:-64px!important}.mr-sm-n1{margin-right:-4px!important}.mr-sm-n2{margin-right:-8px!important}.mr-sm-n3{margin-right:-12px!important}.mr-sm-n4{margin-right:-16px!important}.mr-sm-n5{margin-right:-20px!important}.mr-sm-n6{margin-right:-24px!important}.mr-sm-n7{margin-right:-28px!important}.mr-sm-n8{margin-right:-32px!important}.mr-sm-n9{margin-right:-36px!important}.mr-sm-n10{margin-right:-40px!important}.mr-sm-n11{margin-right:-44px!important}.mr-sm-n12{margin-right:-48px!important}.mr-sm-n13{margin-right:-52px!important}.mr-sm-n14{margin-right:-56px!important}.mr-sm-n15{margin-right:-60px!important}.mr-sm-n16{margin-right:-64px!important}.mb-sm-n1{margin-bottom:-4px!important}.mb-sm-n2{margin-bottom:-8px!important}.mb-sm-n3{margin-bottom:-12px!important}.mb-sm-n4{margin-bottom:-16px!important}.mb-sm-n5{margin-bottom:-20px!important}.mb-sm-n6{margin-bottom:-24px!important}.mb-sm-n7{margin-bottom:-28px!important}.mb-sm-n8{margin-bottom:-32px!important}.mb-sm-n9{margin-bottom:-36px!important}.mb-sm-n10{margin-bottom:-40px!important}.mb-sm-n11{margin-bottom:-44px!important}.mb-sm-n12{margin-bottom:-48px!important}.mb-sm-n13{margin-bottom:-52px!important}.mb-sm-n14{margin-bottom:-56px!important}.mb-sm-n15{margin-bottom:-60px!important}.mb-sm-n16{margin-bottom:-64px!important}.ml-sm-n1{margin-left:-4px!important}.ml-sm-n2{margin-left:-8px!important}.ml-sm-n3{margin-left:-12px!important}.ml-sm-n4{margin-left:-16px!important}.ml-sm-n5{margin-left:-20px!important}.ml-sm-n6{margin-left:-24px!important}.ml-sm-n7{margin-left:-28px!important}.ml-sm-n8{margin-left:-32px!important}.ml-sm-n9{margin-left:-36px!important}.ml-sm-n10{margin-left:-40px!important}.ml-sm-n11{margin-left:-44px!important}.ml-sm-n12{margin-left:-48px!important}.ml-sm-n13{margin-left:-52px!important}.ml-sm-n14{margin-left:-56px!important}.ml-sm-n15{margin-left:-60px!important}.ml-sm-n16{margin-left:-64px!important}.ms-sm-n1{margin-inline-start:-4px!important}.ms-sm-n2{margin-inline-start:-8px!important}.ms-sm-n3{margin-inline-start:-12px!important}.ms-sm-n4{margin-inline-start:-16px!important}.ms-sm-n5{margin-inline-start:-20px!important}.ms-sm-n6{margin-inline-start:-24px!important}.ms-sm-n7{margin-inline-start:-28px!important}.ms-sm-n8{margin-inline-start:-32px!important}.ms-sm-n9{margin-inline-start:-36px!important}.ms-sm-n10{margin-inline-start:-40px!important}.ms-sm-n11{margin-inline-start:-44px!important}.ms-sm-n12{margin-inline-start:-48px!important}.ms-sm-n13{margin-inline-start:-52px!important}.ms-sm-n14{margin-inline-start:-56px!important}.ms-sm-n15{margin-inline-start:-60px!important}.ms-sm-n16{margin-inline-start:-64px!important}.me-sm-n1{margin-inline-end:-4px!important}.me-sm-n2{margin-inline-end:-8px!important}.me-sm-n3{margin-inline-end:-12px!important}.me-sm-n4{margin-inline-end:-16px!important}.me-sm-n5{margin-inline-end:-20px!important}.me-sm-n6{margin-inline-end:-24px!important}.me-sm-n7{margin-inline-end:-28px!important}.me-sm-n8{margin-inline-end:-32px!important}.me-sm-n9{margin-inline-end:-36px!important}.me-sm-n10{margin-inline-end:-40px!important}.me-sm-n11{margin-inline-end:-44px!important}.me-sm-n12{margin-inline-end:-48px!important}.me-sm-n13{margin-inline-end:-52px!important}.me-sm-n14{margin-inline-end:-56px!important}.me-sm-n15{margin-inline-end:-60px!important}.me-sm-n16{margin-inline-end:-64px!important}.pa-sm-0{padding:0!important}.pa-sm-1{padding:4px!important}.pa-sm-2{padding:8px!important}.pa-sm-3{padding:12px!important}.pa-sm-4{padding:16px!important}.pa-sm-5{padding:20px!important}.pa-sm-6{padding:24px!important}.pa-sm-7{padding:28px!important}.pa-sm-8{padding:32px!important}.pa-sm-9{padding:36px!important}.pa-sm-10{padding:40px!important}.pa-sm-11{padding:44px!important}.pa-sm-12{padding:48px!important}.pa-sm-13{padding:52px!important}.pa-sm-14{padding:56px!important}.pa-sm-15{padding:60px!important}.pa-sm-16{padding:64px!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:4px!important;padding-left:4px!important}.px-sm-2{padding-right:8px!important;padding-left:8px!important}.px-sm-3{padding-right:12px!important;padding-left:12px!important}.px-sm-4{padding-right:16px!important;padding-left:16px!important}.px-sm-5{padding-right:20px!important;padding-left:20px!important}.px-sm-6{padding-right:24px!important;padding-left:24px!important}.px-sm-7{padding-right:28px!important;padding-left:28px!important}.px-sm-8{padding-right:32px!important;padding-left:32px!important}.px-sm-9{padding-right:36px!important;padding-left:36px!important}.px-sm-10{padding-right:40px!important;padding-left:40px!important}.px-sm-11{padding-right:44px!important;padding-left:44px!important}.px-sm-12{padding-right:48px!important;padding-left:48px!important}.px-sm-13{padding-right:52px!important;padding-left:52px!important}.px-sm-14{padding-right:56px!important;padding-left:56px!important}.px-sm-15{padding-right:60px!important;padding-left:60px!important}.px-sm-16{padding-right:64px!important;padding-left:64px!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:4px!important;padding-bottom:4px!important}.py-sm-2{padding-top:8px!important;padding-bottom:8px!important}.py-sm-3{padding-top:12px!important;padding-bottom:12px!important}.py-sm-4{padding-top:16px!important;padding-bottom:16px!important}.py-sm-5{padding-top:20px!important;padding-bottom:20px!important}.py-sm-6{padding-top:24px!important;padding-bottom:24px!important}.py-sm-7{padding-top:28px!important;padding-bottom:28px!important}.py-sm-8{padding-top:32px!important;padding-bottom:32px!important}.py-sm-9{padding-top:36px!important;padding-bottom:36px!important}.py-sm-10{padding-top:40px!important;padding-bottom:40px!important}.py-sm-11{padding-top:44px!important;padding-bottom:44px!important}.py-sm-12{padding-top:48px!important;padding-bottom:48px!important}.py-sm-13{padding-top:52px!important;padding-bottom:52px!important}.py-sm-14{padding-top:56px!important;padding-bottom:56px!important}.py-sm-15{padding-top:60px!important;padding-bottom:60px!important}.py-sm-16{padding-top:64px!important;padding-bottom:64px!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:4px!important}.pt-sm-2{padding-top:8px!important}.pt-sm-3{padding-top:12px!important}.pt-sm-4{padding-top:16px!important}.pt-sm-5{padding-top:20px!important}.pt-sm-6{padding-top:24px!important}.pt-sm-7{padding-top:28px!important}.pt-sm-8{padding-top:32px!important}.pt-sm-9{padding-top:36px!important}.pt-sm-10{padding-top:40px!important}.pt-sm-11{padding-top:44px!important}.pt-sm-12{padding-top:48px!important}.pt-sm-13{padding-top:52px!important}.pt-sm-14{padding-top:56px!important}.pt-sm-15{padding-top:60px!important}.pt-sm-16{padding-top:64px!important}.pr-sm-0{padding-right:0!important}.pr-sm-1{padding-right:4px!important}.pr-sm-2{padding-right:8px!important}.pr-sm-3{padding-right:12px!important}.pr-sm-4{padding-right:16px!important}.pr-sm-5{padding-right:20px!important}.pr-sm-6{padding-right:24px!important}.pr-sm-7{padding-right:28px!important}.pr-sm-8{padding-right:32px!important}.pr-sm-9{padding-right:36px!important}.pr-sm-10{padding-right:40px!important}.pr-sm-11{padding-right:44px!important}.pr-sm-12{padding-right:48px!important}.pr-sm-13{padding-right:52px!important}.pr-sm-14{padding-right:56px!important}.pr-sm-15{padding-right:60px!important}.pr-sm-16{padding-right:64px!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:4px!important}.pb-sm-2{padding-bottom:8px!important}.pb-sm-3{padding-bottom:12px!important}.pb-sm-4{padding-bottom:16px!important}.pb-sm-5{padding-bottom:20px!important}.pb-sm-6{padding-bottom:24px!important}.pb-sm-7{padding-bottom:28px!important}.pb-sm-8{padding-bottom:32px!important}.pb-sm-9{padding-bottom:36px!important}.pb-sm-10{padding-bottom:40px!important}.pb-sm-11{padding-bottom:44px!important}.pb-sm-12{padding-bottom:48px!important}.pb-sm-13{padding-bottom:52px!important}.pb-sm-14{padding-bottom:56px!important}.pb-sm-15{padding-bottom:60px!important}.pb-sm-16{padding-bottom:64px!important}.pl-sm-0{padding-left:0!important}.pl-sm-1{padding-left:4px!important}.pl-sm-2{padding-left:8px!important}.pl-sm-3{padding-left:12px!important}.pl-sm-4{padding-left:16px!important}.pl-sm-5{padding-left:20px!important}.pl-sm-6{padding-left:24px!important}.pl-sm-7{padding-left:28px!important}.pl-sm-8{padding-left:32px!important}.pl-sm-9{padding-left:36px!important}.pl-sm-10{padding-left:40px!important}.pl-sm-11{padding-left:44px!important}.pl-sm-12{padding-left:48px!important}.pl-sm-13{padding-left:52px!important}.pl-sm-14{padding-left:56px!important}.pl-sm-15{padding-left:60px!important}.pl-sm-16{padding-left:64px!important}.ps-sm-0{padding-inline-start:0px!important}.ps-sm-1{padding-inline-start:4px!important}.ps-sm-2{padding-inline-start:8px!important}.ps-sm-3{padding-inline-start:12px!important}.ps-sm-4{padding-inline-start:16px!important}.ps-sm-5{padding-inline-start:20px!important}.ps-sm-6{padding-inline-start:24px!important}.ps-sm-7{padding-inline-start:28px!important}.ps-sm-8{padding-inline-start:32px!important}.ps-sm-9{padding-inline-start:36px!important}.ps-sm-10{padding-inline-start:40px!important}.ps-sm-11{padding-inline-start:44px!important}.ps-sm-12{padding-inline-start:48px!important}.ps-sm-13{padding-inline-start:52px!important}.ps-sm-14{padding-inline-start:56px!important}.ps-sm-15{padding-inline-start:60px!important}.ps-sm-16{padding-inline-start:64px!important}.pe-sm-0{padding-inline-end:0px!important}.pe-sm-1{padding-inline-end:4px!important}.pe-sm-2{padding-inline-end:8px!important}.pe-sm-3{padding-inline-end:12px!important}.pe-sm-4{padding-inline-end:16px!important}.pe-sm-5{padding-inline-end:20px!important}.pe-sm-6{padding-inline-end:24px!important}.pe-sm-7{padding-inline-end:28px!important}.pe-sm-8{padding-inline-end:32px!important}.pe-sm-9{padding-inline-end:36px!important}.pe-sm-10{padding-inline-end:40px!important}.pe-sm-11{padding-inline-end:44px!important}.pe-sm-12{padding-inline-end:48px!important}.pe-sm-13{padding-inline-end:52px!important}.pe-sm-14{padding-inline-end:56px!important}.pe-sm-15{padding-inline-end:60px!important}.pe-sm-16{padding-inline-end:64px!important}.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}.text-sm-justify{text-align:justify!important}.text-sm-start{text-align:start!important}.text-sm-end{text-align:end!important}.text-sm-h1{font-size:6rem!important;font-weight:300;line-height:1;letter-spacing:-.015625em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-sm-h2{font-size:3.75rem!important;font-weight:300;line-height:1;letter-spacing:-.0083333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-sm-h3{font-size:3rem!important;font-weight:400;line-height:1.05;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-sm-h4{font-size:2.125rem!important;font-weight:400;line-height:1.175;letter-spacing:.0073529412em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-sm-h5{font-size:1.5rem!important;font-weight:400;line-height:1.333;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-sm-h6{font-size:1.25rem!important;font-weight:500;line-height:1.6;letter-spacing:.0125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-sm-subtitle-1{font-size:1rem!important;font-weight:400;line-height:1.75;letter-spacing:.009375em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-sm-subtitle-2{font-size:.875rem!important;font-weight:500;line-height:1.6;letter-spacing:.0071428571em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-sm-body-1{font-size:1rem!important;font-weight:400;line-height:1.5;letter-spacing:.03125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-sm-body-2{font-size:.875rem!important;font-weight:400;line-height:1.425;letter-spacing:.0178571429em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-sm-button{font-size:.875rem!important;font-weight:500;line-height:2.6;letter-spacing:.0892857143em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}.text-sm-caption{font-size:.75rem!important;font-weight:400;line-height:1.667;letter-spacing:.0333333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-sm-overline{font-size:.75rem!important;font-weight:500;line-height:2.667;letter-spacing:.1666666667em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}.h-sm-auto{height:auto!important}.h-sm-screen{height:100vh!important}.h-sm-0{height:0!important}.h-sm-25{height:25%!important}.h-sm-50{height:50%!important}.h-sm-75{height:75%!important}.h-sm-100{height:100%!important}.w-sm-auto{width:auto!important}.w-sm-0{width:0!important}.w-sm-25{width:25%!important}.w-sm-33{width:33%!important}.w-sm-50{width:50%!important}.w-sm-66{width:66%!important}.w-sm-75{width:75%!important}.w-sm-100{width:100%!important}}@media (min-width: 960px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.float-md-none{float:none!important}.float-md-left{float:left!important}.float-md-right{float:right!important}.v-locale--is-rtl .float-md-end{float:left!important}.v-locale--is-rtl .float-md-start,.v-locale--is-ltr .float-md-end{float:right!important}.v-locale--is-ltr .float-md-start{float:left!important}.flex-md-fill,.flex-md-1-1{flex:1 1 auto!important}.flex-md-1-0{flex:1 0 auto!important}.flex-md-0-1{flex:0 1 auto!important}.flex-md-0-0{flex:0 0 auto!important}.flex-md-1-1-100{flex:1 1 100%!important}.flex-md-1-0-100{flex:1 0 100%!important}.flex-md-0-1-100{flex:0 1 100%!important}.flex-md-0-0-100{flex:0 0 100%!important}.flex-md-1-1-0{flex:1 1 0!important}.flex-md-1-0-0{flex:1 0 0!important}.flex-md-0-1-0{flex:0 1 0!important}.flex-md-0-0-0{flex:0 0 0!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-md-start{justify-content:flex-start!important}.justify-md-end{justify-content:flex-end!important}.justify-md-center{justify-content:center!important}.justify-md-space-between{justify-content:space-between!important}.justify-md-space-around{justify-content:space-around!important}.justify-md-space-evenly{justify-content:space-evenly!important}.align-md-start{align-items:flex-start!important}.align-md-end{align-items:flex-end!important}.align-md-center{align-items:center!important}.align-md-baseline{align-items:baseline!important}.align-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-space-between{align-content:space-between!important}.align-content-md-space-around{align-content:space-around!important}.align-content-md-space-evenly{align-content:space-evenly!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-6{order:6!important}.order-md-7{order:7!important}.order-md-8{order:8!important}.order-md-9{order:9!important}.order-md-10{order:10!important}.order-md-11{order:11!important}.order-md-12{order:12!important}.order-md-last{order:13!important}.ga-md-0{gap:0px!important}.ga-md-1{gap:4px!important}.ga-md-2{gap:8px!important}.ga-md-3{gap:12px!important}.ga-md-4{gap:16px!important}.ga-md-5{gap:20px!important}.ga-md-6{gap:24px!important}.ga-md-7{gap:28px!important}.ga-md-8{gap:32px!important}.ga-md-9{gap:36px!important}.ga-md-10{gap:40px!important}.ga-md-11{gap:44px!important}.ga-md-12{gap:48px!important}.ga-md-13{gap:52px!important}.ga-md-14{gap:56px!important}.ga-md-15{gap:60px!important}.ga-md-16{gap:64px!important}.ga-md-auto{gap:auto!important}.gr-md-0{row-gap:0px!important}.gr-md-1{row-gap:4px!important}.gr-md-2{row-gap:8px!important}.gr-md-3{row-gap:12px!important}.gr-md-4{row-gap:16px!important}.gr-md-5{row-gap:20px!important}.gr-md-6{row-gap:24px!important}.gr-md-7{row-gap:28px!important}.gr-md-8{row-gap:32px!important}.gr-md-9{row-gap:36px!important}.gr-md-10{row-gap:40px!important}.gr-md-11{row-gap:44px!important}.gr-md-12{row-gap:48px!important}.gr-md-13{row-gap:52px!important}.gr-md-14{row-gap:56px!important}.gr-md-15{row-gap:60px!important}.gr-md-16{row-gap:64px!important}.gr-md-auto{row-gap:auto!important}.gc-md-0{-moz-column-gap:0px!important;column-gap:0px!important}.gc-md-1{-moz-column-gap:4px!important;column-gap:4px!important}.gc-md-2{-moz-column-gap:8px!important;column-gap:8px!important}.gc-md-3{-moz-column-gap:12px!important;column-gap:12px!important}.gc-md-4{-moz-column-gap:16px!important;column-gap:16px!important}.gc-md-5{-moz-column-gap:20px!important;column-gap:20px!important}.gc-md-6{-moz-column-gap:24px!important;column-gap:24px!important}.gc-md-7{-moz-column-gap:28px!important;column-gap:28px!important}.gc-md-8{-moz-column-gap:32px!important;column-gap:32px!important}.gc-md-9{-moz-column-gap:36px!important;column-gap:36px!important}.gc-md-10{-moz-column-gap:40px!important;column-gap:40px!important}.gc-md-11{-moz-column-gap:44px!important;column-gap:44px!important}.gc-md-12{-moz-column-gap:48px!important;column-gap:48px!important}.gc-md-13{-moz-column-gap:52px!important;column-gap:52px!important}.gc-md-14{-moz-column-gap:56px!important;column-gap:56px!important}.gc-md-15{-moz-column-gap:60px!important;column-gap:60px!important}.gc-md-16{-moz-column-gap:64px!important;column-gap:64px!important}.gc-md-auto{-moz-column-gap:auto!important;column-gap:auto!important}.ma-md-0{margin:0!important}.ma-md-1{margin:4px!important}.ma-md-2{margin:8px!important}.ma-md-3{margin:12px!important}.ma-md-4{margin:16px!important}.ma-md-5{margin:20px!important}.ma-md-6{margin:24px!important}.ma-md-7{margin:28px!important}.ma-md-8{margin:32px!important}.ma-md-9{margin:36px!important}.ma-md-10{margin:40px!important}.ma-md-11{margin:44px!important}.ma-md-12{margin:48px!important}.ma-md-13{margin:52px!important}.ma-md-14{margin:56px!important}.ma-md-15{margin:60px!important}.ma-md-16{margin:64px!important}.ma-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:4px!important;margin-left:4px!important}.mx-md-2{margin-right:8px!important;margin-left:8px!important}.mx-md-3{margin-right:12px!important;margin-left:12px!important}.mx-md-4{margin-right:16px!important;margin-left:16px!important}.mx-md-5{margin-right:20px!important;margin-left:20px!important}.mx-md-6{margin-right:24px!important;margin-left:24px!important}.mx-md-7{margin-right:28px!important;margin-left:28px!important}.mx-md-8{margin-right:32px!important;margin-left:32px!important}.mx-md-9{margin-right:36px!important;margin-left:36px!important}.mx-md-10{margin-right:40px!important;margin-left:40px!important}.mx-md-11{margin-right:44px!important;margin-left:44px!important}.mx-md-12{margin-right:48px!important;margin-left:48px!important}.mx-md-13{margin-right:52px!important;margin-left:52px!important}.mx-md-14{margin-right:56px!important;margin-left:56px!important}.mx-md-15{margin-right:60px!important;margin-left:60px!important}.mx-md-16{margin-right:64px!important;margin-left:64px!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:4px!important;margin-bottom:4px!important}.my-md-2{margin-top:8px!important;margin-bottom:8px!important}.my-md-3{margin-top:12px!important;margin-bottom:12px!important}.my-md-4{margin-top:16px!important;margin-bottom:16px!important}.my-md-5{margin-top:20px!important;margin-bottom:20px!important}.my-md-6{margin-top:24px!important;margin-bottom:24px!important}.my-md-7{margin-top:28px!important;margin-bottom:28px!important}.my-md-8{margin-top:32px!important;margin-bottom:32px!important}.my-md-9{margin-top:36px!important;margin-bottom:36px!important}.my-md-10{margin-top:40px!important;margin-bottom:40px!important}.my-md-11{margin-top:44px!important;margin-bottom:44px!important}.my-md-12{margin-top:48px!important;margin-bottom:48px!important}.my-md-13{margin-top:52px!important;margin-bottom:52px!important}.my-md-14{margin-top:56px!important;margin-bottom:56px!important}.my-md-15{margin-top:60px!important;margin-bottom:60px!important}.my-md-16{margin-top:64px!important;margin-bottom:64px!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:4px!important}.mt-md-2{margin-top:8px!important}.mt-md-3{margin-top:12px!important}.mt-md-4{margin-top:16px!important}.mt-md-5{margin-top:20px!important}.mt-md-6{margin-top:24px!important}.mt-md-7{margin-top:28px!important}.mt-md-8{margin-top:32px!important}.mt-md-9{margin-top:36px!important}.mt-md-10{margin-top:40px!important}.mt-md-11{margin-top:44px!important}.mt-md-12{margin-top:48px!important}.mt-md-13{margin-top:52px!important}.mt-md-14{margin-top:56px!important}.mt-md-15{margin-top:60px!important}.mt-md-16{margin-top:64px!important}.mt-md-auto{margin-top:auto!important}.mr-md-0{margin-right:0!important}.mr-md-1{margin-right:4px!important}.mr-md-2{margin-right:8px!important}.mr-md-3{margin-right:12px!important}.mr-md-4{margin-right:16px!important}.mr-md-5{margin-right:20px!important}.mr-md-6{margin-right:24px!important}.mr-md-7{margin-right:28px!important}.mr-md-8{margin-right:32px!important}.mr-md-9{margin-right:36px!important}.mr-md-10{margin-right:40px!important}.mr-md-11{margin-right:44px!important}.mr-md-12{margin-right:48px!important}.mr-md-13{margin-right:52px!important}.mr-md-14{margin-right:56px!important}.mr-md-15{margin-right:60px!important}.mr-md-16{margin-right:64px!important}.mr-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:4px!important}.mb-md-2{margin-bottom:8px!important}.mb-md-3{margin-bottom:12px!important}.mb-md-4{margin-bottom:16px!important}.mb-md-5{margin-bottom:20px!important}.mb-md-6{margin-bottom:24px!important}.mb-md-7{margin-bottom:28px!important}.mb-md-8{margin-bottom:32px!important}.mb-md-9{margin-bottom:36px!important}.mb-md-10{margin-bottom:40px!important}.mb-md-11{margin-bottom:44px!important}.mb-md-12{margin-bottom:48px!important}.mb-md-13{margin-bottom:52px!important}.mb-md-14{margin-bottom:56px!important}.mb-md-15{margin-bottom:60px!important}.mb-md-16{margin-bottom:64px!important}.mb-md-auto{margin-bottom:auto!important}.ml-md-0{margin-left:0!important}.ml-md-1{margin-left:4px!important}.ml-md-2{margin-left:8px!important}.ml-md-3{margin-left:12px!important}.ml-md-4{margin-left:16px!important}.ml-md-5{margin-left:20px!important}.ml-md-6{margin-left:24px!important}.ml-md-7{margin-left:28px!important}.ml-md-8{margin-left:32px!important}.ml-md-9{margin-left:36px!important}.ml-md-10{margin-left:40px!important}.ml-md-11{margin-left:44px!important}.ml-md-12{margin-left:48px!important}.ml-md-13{margin-left:52px!important}.ml-md-14{margin-left:56px!important}.ml-md-15{margin-left:60px!important}.ml-md-16{margin-left:64px!important}.ml-md-auto{margin-left:auto!important}.ms-md-0{margin-inline-start:0px!important}.ms-md-1{margin-inline-start:4px!important}.ms-md-2{margin-inline-start:8px!important}.ms-md-3{margin-inline-start:12px!important}.ms-md-4{margin-inline-start:16px!important}.ms-md-5{margin-inline-start:20px!important}.ms-md-6{margin-inline-start:24px!important}.ms-md-7{margin-inline-start:28px!important}.ms-md-8{margin-inline-start:32px!important}.ms-md-9{margin-inline-start:36px!important}.ms-md-10{margin-inline-start:40px!important}.ms-md-11{margin-inline-start:44px!important}.ms-md-12{margin-inline-start:48px!important}.ms-md-13{margin-inline-start:52px!important}.ms-md-14{margin-inline-start:56px!important}.ms-md-15{margin-inline-start:60px!important}.ms-md-16{margin-inline-start:64px!important}.ms-md-auto{margin-inline-start:auto!important}.me-md-0{margin-inline-end:0px!important}.me-md-1{margin-inline-end:4px!important}.me-md-2{margin-inline-end:8px!important}.me-md-3{margin-inline-end:12px!important}.me-md-4{margin-inline-end:16px!important}.me-md-5{margin-inline-end:20px!important}.me-md-6{margin-inline-end:24px!important}.me-md-7{margin-inline-end:28px!important}.me-md-8{margin-inline-end:32px!important}.me-md-9{margin-inline-end:36px!important}.me-md-10{margin-inline-end:40px!important}.me-md-11{margin-inline-end:44px!important}.me-md-12{margin-inline-end:48px!important}.me-md-13{margin-inline-end:52px!important}.me-md-14{margin-inline-end:56px!important}.me-md-15{margin-inline-end:60px!important}.me-md-16{margin-inline-end:64px!important}.me-md-auto{margin-inline-end:auto!important}.ma-md-n1{margin:-4px!important}.ma-md-n2{margin:-8px!important}.ma-md-n3{margin:-12px!important}.ma-md-n4{margin:-16px!important}.ma-md-n5{margin:-20px!important}.ma-md-n6{margin:-24px!important}.ma-md-n7{margin:-28px!important}.ma-md-n8{margin:-32px!important}.ma-md-n9{margin:-36px!important}.ma-md-n10{margin:-40px!important}.ma-md-n11{margin:-44px!important}.ma-md-n12{margin:-48px!important}.ma-md-n13{margin:-52px!important}.ma-md-n14{margin:-56px!important}.ma-md-n15{margin:-60px!important}.ma-md-n16{margin:-64px!important}.mx-md-n1{margin-right:-4px!important;margin-left:-4px!important}.mx-md-n2{margin-right:-8px!important;margin-left:-8px!important}.mx-md-n3{margin-right:-12px!important;margin-left:-12px!important}.mx-md-n4{margin-right:-16px!important;margin-left:-16px!important}.mx-md-n5{margin-right:-20px!important;margin-left:-20px!important}.mx-md-n6{margin-right:-24px!important;margin-left:-24px!important}.mx-md-n7{margin-right:-28px!important;margin-left:-28px!important}.mx-md-n8{margin-right:-32px!important;margin-left:-32px!important}.mx-md-n9{margin-right:-36px!important;margin-left:-36px!important}.mx-md-n10{margin-right:-40px!important;margin-left:-40px!important}.mx-md-n11{margin-right:-44px!important;margin-left:-44px!important}.mx-md-n12{margin-right:-48px!important;margin-left:-48px!important}.mx-md-n13{margin-right:-52px!important;margin-left:-52px!important}.mx-md-n14{margin-right:-56px!important;margin-left:-56px!important}.mx-md-n15{margin-right:-60px!important;margin-left:-60px!important}.mx-md-n16{margin-right:-64px!important;margin-left:-64px!important}.my-md-n1{margin-top:-4px!important;margin-bottom:-4px!important}.my-md-n2{margin-top:-8px!important;margin-bottom:-8px!important}.my-md-n3{margin-top:-12px!important;margin-bottom:-12px!important}.my-md-n4{margin-top:-16px!important;margin-bottom:-16px!important}.my-md-n5{margin-top:-20px!important;margin-bottom:-20px!important}.my-md-n6{margin-top:-24px!important;margin-bottom:-24px!important}.my-md-n7{margin-top:-28px!important;margin-bottom:-28px!important}.my-md-n8{margin-top:-32px!important;margin-bottom:-32px!important}.my-md-n9{margin-top:-36px!important;margin-bottom:-36px!important}.my-md-n10{margin-top:-40px!important;margin-bottom:-40px!important}.my-md-n11{margin-top:-44px!important;margin-bottom:-44px!important}.my-md-n12{margin-top:-48px!important;margin-bottom:-48px!important}.my-md-n13{margin-top:-52px!important;margin-bottom:-52px!important}.my-md-n14{margin-top:-56px!important;margin-bottom:-56px!important}.my-md-n15{margin-top:-60px!important;margin-bottom:-60px!important}.my-md-n16{margin-top:-64px!important;margin-bottom:-64px!important}.mt-md-n1{margin-top:-4px!important}.mt-md-n2{margin-top:-8px!important}.mt-md-n3{margin-top:-12px!important}.mt-md-n4{margin-top:-16px!important}.mt-md-n5{margin-top:-20px!important}.mt-md-n6{margin-top:-24px!important}.mt-md-n7{margin-top:-28px!important}.mt-md-n8{margin-top:-32px!important}.mt-md-n9{margin-top:-36px!important}.mt-md-n10{margin-top:-40px!important}.mt-md-n11{margin-top:-44px!important}.mt-md-n12{margin-top:-48px!important}.mt-md-n13{margin-top:-52px!important}.mt-md-n14{margin-top:-56px!important}.mt-md-n15{margin-top:-60px!important}.mt-md-n16{margin-top:-64px!important}.mr-md-n1{margin-right:-4px!important}.mr-md-n2{margin-right:-8px!important}.mr-md-n3{margin-right:-12px!important}.mr-md-n4{margin-right:-16px!important}.mr-md-n5{margin-right:-20px!important}.mr-md-n6{margin-right:-24px!important}.mr-md-n7{margin-right:-28px!important}.mr-md-n8{margin-right:-32px!important}.mr-md-n9{margin-right:-36px!important}.mr-md-n10{margin-right:-40px!important}.mr-md-n11{margin-right:-44px!important}.mr-md-n12{margin-right:-48px!important}.mr-md-n13{margin-right:-52px!important}.mr-md-n14{margin-right:-56px!important}.mr-md-n15{margin-right:-60px!important}.mr-md-n16{margin-right:-64px!important}.mb-md-n1{margin-bottom:-4px!important}.mb-md-n2{margin-bottom:-8px!important}.mb-md-n3{margin-bottom:-12px!important}.mb-md-n4{margin-bottom:-16px!important}.mb-md-n5{margin-bottom:-20px!important}.mb-md-n6{margin-bottom:-24px!important}.mb-md-n7{margin-bottom:-28px!important}.mb-md-n8{margin-bottom:-32px!important}.mb-md-n9{margin-bottom:-36px!important}.mb-md-n10{margin-bottom:-40px!important}.mb-md-n11{margin-bottom:-44px!important}.mb-md-n12{margin-bottom:-48px!important}.mb-md-n13{margin-bottom:-52px!important}.mb-md-n14{margin-bottom:-56px!important}.mb-md-n15{margin-bottom:-60px!important}.mb-md-n16{margin-bottom:-64px!important}.ml-md-n1{margin-left:-4px!important}.ml-md-n2{margin-left:-8px!important}.ml-md-n3{margin-left:-12px!important}.ml-md-n4{margin-left:-16px!important}.ml-md-n5{margin-left:-20px!important}.ml-md-n6{margin-left:-24px!important}.ml-md-n7{margin-left:-28px!important}.ml-md-n8{margin-left:-32px!important}.ml-md-n9{margin-left:-36px!important}.ml-md-n10{margin-left:-40px!important}.ml-md-n11{margin-left:-44px!important}.ml-md-n12{margin-left:-48px!important}.ml-md-n13{margin-left:-52px!important}.ml-md-n14{margin-left:-56px!important}.ml-md-n15{margin-left:-60px!important}.ml-md-n16{margin-left:-64px!important}.ms-md-n1{margin-inline-start:-4px!important}.ms-md-n2{margin-inline-start:-8px!important}.ms-md-n3{margin-inline-start:-12px!important}.ms-md-n4{margin-inline-start:-16px!important}.ms-md-n5{margin-inline-start:-20px!important}.ms-md-n6{margin-inline-start:-24px!important}.ms-md-n7{margin-inline-start:-28px!important}.ms-md-n8{margin-inline-start:-32px!important}.ms-md-n9{margin-inline-start:-36px!important}.ms-md-n10{margin-inline-start:-40px!important}.ms-md-n11{margin-inline-start:-44px!important}.ms-md-n12{margin-inline-start:-48px!important}.ms-md-n13{margin-inline-start:-52px!important}.ms-md-n14{margin-inline-start:-56px!important}.ms-md-n15{margin-inline-start:-60px!important}.ms-md-n16{margin-inline-start:-64px!important}.me-md-n1{margin-inline-end:-4px!important}.me-md-n2{margin-inline-end:-8px!important}.me-md-n3{margin-inline-end:-12px!important}.me-md-n4{margin-inline-end:-16px!important}.me-md-n5{margin-inline-end:-20px!important}.me-md-n6{margin-inline-end:-24px!important}.me-md-n7{margin-inline-end:-28px!important}.me-md-n8{margin-inline-end:-32px!important}.me-md-n9{margin-inline-end:-36px!important}.me-md-n10{margin-inline-end:-40px!important}.me-md-n11{margin-inline-end:-44px!important}.me-md-n12{margin-inline-end:-48px!important}.me-md-n13{margin-inline-end:-52px!important}.me-md-n14{margin-inline-end:-56px!important}.me-md-n15{margin-inline-end:-60px!important}.me-md-n16{margin-inline-end:-64px!important}.pa-md-0{padding:0!important}.pa-md-1{padding:4px!important}.pa-md-2{padding:8px!important}.pa-md-3{padding:12px!important}.pa-md-4{padding:16px!important}.pa-md-5{padding:20px!important}.pa-md-6{padding:24px!important}.pa-md-7{padding:28px!important}.pa-md-8{padding:32px!important}.pa-md-9{padding:36px!important}.pa-md-10{padding:40px!important}.pa-md-11{padding:44px!important}.pa-md-12{padding:48px!important}.pa-md-13{padding:52px!important}.pa-md-14{padding:56px!important}.pa-md-15{padding:60px!important}.pa-md-16{padding:64px!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:4px!important;padding-left:4px!important}.px-md-2{padding-right:8px!important;padding-left:8px!important}.px-md-3{padding-right:12px!important;padding-left:12px!important}.px-md-4{padding-right:16px!important;padding-left:16px!important}.px-md-5{padding-right:20px!important;padding-left:20px!important}.px-md-6{padding-right:24px!important;padding-left:24px!important}.px-md-7{padding-right:28px!important;padding-left:28px!important}.px-md-8{padding-right:32px!important;padding-left:32px!important}.px-md-9{padding-right:36px!important;padding-left:36px!important}.px-md-10{padding-right:40px!important;padding-left:40px!important}.px-md-11{padding-right:44px!important;padding-left:44px!important}.px-md-12{padding-right:48px!important;padding-left:48px!important}.px-md-13{padding-right:52px!important;padding-left:52px!important}.px-md-14{padding-right:56px!important;padding-left:56px!important}.px-md-15{padding-right:60px!important;padding-left:60px!important}.px-md-16{padding-right:64px!important;padding-left:64px!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:4px!important;padding-bottom:4px!important}.py-md-2{padding-top:8px!important;padding-bottom:8px!important}.py-md-3{padding-top:12px!important;padding-bottom:12px!important}.py-md-4{padding-top:16px!important;padding-bottom:16px!important}.py-md-5{padding-top:20px!important;padding-bottom:20px!important}.py-md-6{padding-top:24px!important;padding-bottom:24px!important}.py-md-7{padding-top:28px!important;padding-bottom:28px!important}.py-md-8{padding-top:32px!important;padding-bottom:32px!important}.py-md-9{padding-top:36px!important;padding-bottom:36px!important}.py-md-10{padding-top:40px!important;padding-bottom:40px!important}.py-md-11{padding-top:44px!important;padding-bottom:44px!important}.py-md-12{padding-top:48px!important;padding-bottom:48px!important}.py-md-13{padding-top:52px!important;padding-bottom:52px!important}.py-md-14{padding-top:56px!important;padding-bottom:56px!important}.py-md-15{padding-top:60px!important;padding-bottom:60px!important}.py-md-16{padding-top:64px!important;padding-bottom:64px!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:4px!important}.pt-md-2{padding-top:8px!important}.pt-md-3{padding-top:12px!important}.pt-md-4{padding-top:16px!important}.pt-md-5{padding-top:20px!important}.pt-md-6{padding-top:24px!important}.pt-md-7{padding-top:28px!important}.pt-md-8{padding-top:32px!important}.pt-md-9{padding-top:36px!important}.pt-md-10{padding-top:40px!important}.pt-md-11{padding-top:44px!important}.pt-md-12{padding-top:48px!important}.pt-md-13{padding-top:52px!important}.pt-md-14{padding-top:56px!important}.pt-md-15{padding-top:60px!important}.pt-md-16{padding-top:64px!important}.pr-md-0{padding-right:0!important}.pr-md-1{padding-right:4px!important}.pr-md-2{padding-right:8px!important}.pr-md-3{padding-right:12px!important}.pr-md-4{padding-right:16px!important}.pr-md-5{padding-right:20px!important}.pr-md-6{padding-right:24px!important}.pr-md-7{padding-right:28px!important}.pr-md-8{padding-right:32px!important}.pr-md-9{padding-right:36px!important}.pr-md-10{padding-right:40px!important}.pr-md-11{padding-right:44px!important}.pr-md-12{padding-right:48px!important}.pr-md-13{padding-right:52px!important}.pr-md-14{padding-right:56px!important}.pr-md-15{padding-right:60px!important}.pr-md-16{padding-right:64px!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:4px!important}.pb-md-2{padding-bottom:8px!important}.pb-md-3{padding-bottom:12px!important}.pb-md-4{padding-bottom:16px!important}.pb-md-5{padding-bottom:20px!important}.pb-md-6{padding-bottom:24px!important}.pb-md-7{padding-bottom:28px!important}.pb-md-8{padding-bottom:32px!important}.pb-md-9{padding-bottom:36px!important}.pb-md-10{padding-bottom:40px!important}.pb-md-11{padding-bottom:44px!important}.pb-md-12{padding-bottom:48px!important}.pb-md-13{padding-bottom:52px!important}.pb-md-14{padding-bottom:56px!important}.pb-md-15{padding-bottom:60px!important}.pb-md-16{padding-bottom:64px!important}.pl-md-0{padding-left:0!important}.pl-md-1{padding-left:4px!important}.pl-md-2{padding-left:8px!important}.pl-md-3{padding-left:12px!important}.pl-md-4{padding-left:16px!important}.pl-md-5{padding-left:20px!important}.pl-md-6{padding-left:24px!important}.pl-md-7{padding-left:28px!important}.pl-md-8{padding-left:32px!important}.pl-md-9{padding-left:36px!important}.pl-md-10{padding-left:40px!important}.pl-md-11{padding-left:44px!important}.pl-md-12{padding-left:48px!important}.pl-md-13{padding-left:52px!important}.pl-md-14{padding-left:56px!important}.pl-md-15{padding-left:60px!important}.pl-md-16{padding-left:64px!important}.ps-md-0{padding-inline-start:0px!important}.ps-md-1{padding-inline-start:4px!important}.ps-md-2{padding-inline-start:8px!important}.ps-md-3{padding-inline-start:12px!important}.ps-md-4{padding-inline-start:16px!important}.ps-md-5{padding-inline-start:20px!important}.ps-md-6{padding-inline-start:24px!important}.ps-md-7{padding-inline-start:28px!important}.ps-md-8{padding-inline-start:32px!important}.ps-md-9{padding-inline-start:36px!important}.ps-md-10{padding-inline-start:40px!important}.ps-md-11{padding-inline-start:44px!important}.ps-md-12{padding-inline-start:48px!important}.ps-md-13{padding-inline-start:52px!important}.ps-md-14{padding-inline-start:56px!important}.ps-md-15{padding-inline-start:60px!important}.ps-md-16{padding-inline-start:64px!important}.pe-md-0{padding-inline-end:0px!important}.pe-md-1{padding-inline-end:4px!important}.pe-md-2{padding-inline-end:8px!important}.pe-md-3{padding-inline-end:12px!important}.pe-md-4{padding-inline-end:16px!important}.pe-md-5{padding-inline-end:20px!important}.pe-md-6{padding-inline-end:24px!important}.pe-md-7{padding-inline-end:28px!important}.pe-md-8{padding-inline-end:32px!important}.pe-md-9{padding-inline-end:36px!important}.pe-md-10{padding-inline-end:40px!important}.pe-md-11{padding-inline-end:44px!important}.pe-md-12{padding-inline-end:48px!important}.pe-md-13{padding-inline-end:52px!important}.pe-md-14{padding-inline-end:56px!important}.pe-md-15{padding-inline-end:60px!important}.pe-md-16{padding-inline-end:64px!important}.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}.text-md-justify{text-align:justify!important}.text-md-start{text-align:start!important}.text-md-end{text-align:end!important}.text-md-h1{font-size:6rem!important;font-weight:300;line-height:1;letter-spacing:-.015625em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-md-h2{font-size:3.75rem!important;font-weight:300;line-height:1;letter-spacing:-.0083333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-md-h3{font-size:3rem!important;font-weight:400;line-height:1.05;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-md-h4{font-size:2.125rem!important;font-weight:400;line-height:1.175;letter-spacing:.0073529412em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-md-h5{font-size:1.5rem!important;font-weight:400;line-height:1.333;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-md-h6{font-size:1.25rem!important;font-weight:500;line-height:1.6;letter-spacing:.0125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-md-subtitle-1{font-size:1rem!important;font-weight:400;line-height:1.75;letter-spacing:.009375em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-md-subtitle-2{font-size:.875rem!important;font-weight:500;line-height:1.6;letter-spacing:.0071428571em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-md-body-1{font-size:1rem!important;font-weight:400;line-height:1.5;letter-spacing:.03125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-md-body-2{font-size:.875rem!important;font-weight:400;line-height:1.425;letter-spacing:.0178571429em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-md-button{font-size:.875rem!important;font-weight:500;line-height:2.6;letter-spacing:.0892857143em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}.text-md-caption{font-size:.75rem!important;font-weight:400;line-height:1.667;letter-spacing:.0333333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-md-overline{font-size:.75rem!important;font-weight:500;line-height:2.667;letter-spacing:.1666666667em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}.h-md-auto{height:auto!important}.h-md-screen{height:100vh!important}.h-md-0{height:0!important}.h-md-25{height:25%!important}.h-md-50{height:50%!important}.h-md-75{height:75%!important}.h-md-100{height:100%!important}.w-md-auto{width:auto!important}.w-md-0{width:0!important}.w-md-25{width:25%!important}.w-md-33{width:33%!important}.w-md-50{width:50%!important}.w-md-66{width:66%!important}.w-md-75{width:75%!important}.w-md-100{width:100%!important}}@media (min-width: 1280px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.float-lg-none{float:none!important}.float-lg-left{float:left!important}.float-lg-right{float:right!important}.v-locale--is-rtl .float-lg-end{float:left!important}.v-locale--is-rtl .float-lg-start,.v-locale--is-ltr .float-lg-end{float:right!important}.v-locale--is-ltr .float-lg-start{float:left!important}.flex-lg-fill,.flex-lg-1-1{flex:1 1 auto!important}.flex-lg-1-0{flex:1 0 auto!important}.flex-lg-0-1{flex:0 1 auto!important}.flex-lg-0-0{flex:0 0 auto!important}.flex-lg-1-1-100{flex:1 1 100%!important}.flex-lg-1-0-100{flex:1 0 100%!important}.flex-lg-0-1-100{flex:0 1 100%!important}.flex-lg-0-0-100{flex:0 0 100%!important}.flex-lg-1-1-0{flex:1 1 0!important}.flex-lg-1-0-0{flex:1 0 0!important}.flex-lg-0-1-0{flex:0 1 0!important}.flex-lg-0-0-0{flex:0 0 0!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-lg-start{justify-content:flex-start!important}.justify-lg-end{justify-content:flex-end!important}.justify-lg-center{justify-content:center!important}.justify-lg-space-between{justify-content:space-between!important}.justify-lg-space-around{justify-content:space-around!important}.justify-lg-space-evenly{justify-content:space-evenly!important}.align-lg-start{align-items:flex-start!important}.align-lg-end{align-items:flex-end!important}.align-lg-center{align-items:center!important}.align-lg-baseline{align-items:baseline!important}.align-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-space-between{align-content:space-between!important}.align-content-lg-space-around{align-content:space-around!important}.align-content-lg-space-evenly{align-content:space-evenly!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-6{order:6!important}.order-lg-7{order:7!important}.order-lg-8{order:8!important}.order-lg-9{order:9!important}.order-lg-10{order:10!important}.order-lg-11{order:11!important}.order-lg-12{order:12!important}.order-lg-last{order:13!important}.ga-lg-0{gap:0px!important}.ga-lg-1{gap:4px!important}.ga-lg-2{gap:8px!important}.ga-lg-3{gap:12px!important}.ga-lg-4{gap:16px!important}.ga-lg-5{gap:20px!important}.ga-lg-6{gap:24px!important}.ga-lg-7{gap:28px!important}.ga-lg-8{gap:32px!important}.ga-lg-9{gap:36px!important}.ga-lg-10{gap:40px!important}.ga-lg-11{gap:44px!important}.ga-lg-12{gap:48px!important}.ga-lg-13{gap:52px!important}.ga-lg-14{gap:56px!important}.ga-lg-15{gap:60px!important}.ga-lg-16{gap:64px!important}.ga-lg-auto{gap:auto!important}.gr-lg-0{row-gap:0px!important}.gr-lg-1{row-gap:4px!important}.gr-lg-2{row-gap:8px!important}.gr-lg-3{row-gap:12px!important}.gr-lg-4{row-gap:16px!important}.gr-lg-5{row-gap:20px!important}.gr-lg-6{row-gap:24px!important}.gr-lg-7{row-gap:28px!important}.gr-lg-8{row-gap:32px!important}.gr-lg-9{row-gap:36px!important}.gr-lg-10{row-gap:40px!important}.gr-lg-11{row-gap:44px!important}.gr-lg-12{row-gap:48px!important}.gr-lg-13{row-gap:52px!important}.gr-lg-14{row-gap:56px!important}.gr-lg-15{row-gap:60px!important}.gr-lg-16{row-gap:64px!important}.gr-lg-auto{row-gap:auto!important}.gc-lg-0{-moz-column-gap:0px!important;column-gap:0px!important}.gc-lg-1{-moz-column-gap:4px!important;column-gap:4px!important}.gc-lg-2{-moz-column-gap:8px!important;column-gap:8px!important}.gc-lg-3{-moz-column-gap:12px!important;column-gap:12px!important}.gc-lg-4{-moz-column-gap:16px!important;column-gap:16px!important}.gc-lg-5{-moz-column-gap:20px!important;column-gap:20px!important}.gc-lg-6{-moz-column-gap:24px!important;column-gap:24px!important}.gc-lg-7{-moz-column-gap:28px!important;column-gap:28px!important}.gc-lg-8{-moz-column-gap:32px!important;column-gap:32px!important}.gc-lg-9{-moz-column-gap:36px!important;column-gap:36px!important}.gc-lg-10{-moz-column-gap:40px!important;column-gap:40px!important}.gc-lg-11{-moz-column-gap:44px!important;column-gap:44px!important}.gc-lg-12{-moz-column-gap:48px!important;column-gap:48px!important}.gc-lg-13{-moz-column-gap:52px!important;column-gap:52px!important}.gc-lg-14{-moz-column-gap:56px!important;column-gap:56px!important}.gc-lg-15{-moz-column-gap:60px!important;column-gap:60px!important}.gc-lg-16{-moz-column-gap:64px!important;column-gap:64px!important}.gc-lg-auto{-moz-column-gap:auto!important;column-gap:auto!important}.ma-lg-0{margin:0!important}.ma-lg-1{margin:4px!important}.ma-lg-2{margin:8px!important}.ma-lg-3{margin:12px!important}.ma-lg-4{margin:16px!important}.ma-lg-5{margin:20px!important}.ma-lg-6{margin:24px!important}.ma-lg-7{margin:28px!important}.ma-lg-8{margin:32px!important}.ma-lg-9{margin:36px!important}.ma-lg-10{margin:40px!important}.ma-lg-11{margin:44px!important}.ma-lg-12{margin:48px!important}.ma-lg-13{margin:52px!important}.ma-lg-14{margin:56px!important}.ma-lg-15{margin:60px!important}.ma-lg-16{margin:64px!important}.ma-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:4px!important;margin-left:4px!important}.mx-lg-2{margin-right:8px!important;margin-left:8px!important}.mx-lg-3{margin-right:12px!important;margin-left:12px!important}.mx-lg-4{margin-right:16px!important;margin-left:16px!important}.mx-lg-5{margin-right:20px!important;margin-left:20px!important}.mx-lg-6{margin-right:24px!important;margin-left:24px!important}.mx-lg-7{margin-right:28px!important;margin-left:28px!important}.mx-lg-8{margin-right:32px!important;margin-left:32px!important}.mx-lg-9{margin-right:36px!important;margin-left:36px!important}.mx-lg-10{margin-right:40px!important;margin-left:40px!important}.mx-lg-11{margin-right:44px!important;margin-left:44px!important}.mx-lg-12{margin-right:48px!important;margin-left:48px!important}.mx-lg-13{margin-right:52px!important;margin-left:52px!important}.mx-lg-14{margin-right:56px!important;margin-left:56px!important}.mx-lg-15{margin-right:60px!important;margin-left:60px!important}.mx-lg-16{margin-right:64px!important;margin-left:64px!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:4px!important;margin-bottom:4px!important}.my-lg-2{margin-top:8px!important;margin-bottom:8px!important}.my-lg-3{margin-top:12px!important;margin-bottom:12px!important}.my-lg-4{margin-top:16px!important;margin-bottom:16px!important}.my-lg-5{margin-top:20px!important;margin-bottom:20px!important}.my-lg-6{margin-top:24px!important;margin-bottom:24px!important}.my-lg-7{margin-top:28px!important;margin-bottom:28px!important}.my-lg-8{margin-top:32px!important;margin-bottom:32px!important}.my-lg-9{margin-top:36px!important;margin-bottom:36px!important}.my-lg-10{margin-top:40px!important;margin-bottom:40px!important}.my-lg-11{margin-top:44px!important;margin-bottom:44px!important}.my-lg-12{margin-top:48px!important;margin-bottom:48px!important}.my-lg-13{margin-top:52px!important;margin-bottom:52px!important}.my-lg-14{margin-top:56px!important;margin-bottom:56px!important}.my-lg-15{margin-top:60px!important;margin-bottom:60px!important}.my-lg-16{margin-top:64px!important;margin-bottom:64px!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:4px!important}.mt-lg-2{margin-top:8px!important}.mt-lg-3{margin-top:12px!important}.mt-lg-4{margin-top:16px!important}.mt-lg-5{margin-top:20px!important}.mt-lg-6{margin-top:24px!important}.mt-lg-7{margin-top:28px!important}.mt-lg-8{margin-top:32px!important}.mt-lg-9{margin-top:36px!important}.mt-lg-10{margin-top:40px!important}.mt-lg-11{margin-top:44px!important}.mt-lg-12{margin-top:48px!important}.mt-lg-13{margin-top:52px!important}.mt-lg-14{margin-top:56px!important}.mt-lg-15{margin-top:60px!important}.mt-lg-16{margin-top:64px!important}.mt-lg-auto{margin-top:auto!important}.mr-lg-0{margin-right:0!important}.mr-lg-1{margin-right:4px!important}.mr-lg-2{margin-right:8px!important}.mr-lg-3{margin-right:12px!important}.mr-lg-4{margin-right:16px!important}.mr-lg-5{margin-right:20px!important}.mr-lg-6{margin-right:24px!important}.mr-lg-7{margin-right:28px!important}.mr-lg-8{margin-right:32px!important}.mr-lg-9{margin-right:36px!important}.mr-lg-10{margin-right:40px!important}.mr-lg-11{margin-right:44px!important}.mr-lg-12{margin-right:48px!important}.mr-lg-13{margin-right:52px!important}.mr-lg-14{margin-right:56px!important}.mr-lg-15{margin-right:60px!important}.mr-lg-16{margin-right:64px!important}.mr-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:4px!important}.mb-lg-2{margin-bottom:8px!important}.mb-lg-3{margin-bottom:12px!important}.mb-lg-4{margin-bottom:16px!important}.mb-lg-5{margin-bottom:20px!important}.mb-lg-6{margin-bottom:24px!important}.mb-lg-7{margin-bottom:28px!important}.mb-lg-8{margin-bottom:32px!important}.mb-lg-9{margin-bottom:36px!important}.mb-lg-10{margin-bottom:40px!important}.mb-lg-11{margin-bottom:44px!important}.mb-lg-12{margin-bottom:48px!important}.mb-lg-13{margin-bottom:52px!important}.mb-lg-14{margin-bottom:56px!important}.mb-lg-15{margin-bottom:60px!important}.mb-lg-16{margin-bottom:64px!important}.mb-lg-auto{margin-bottom:auto!important}.ml-lg-0{margin-left:0!important}.ml-lg-1{margin-left:4px!important}.ml-lg-2{margin-left:8px!important}.ml-lg-3{margin-left:12px!important}.ml-lg-4{margin-left:16px!important}.ml-lg-5{margin-left:20px!important}.ml-lg-6{margin-left:24px!important}.ml-lg-7{margin-left:28px!important}.ml-lg-8{margin-left:32px!important}.ml-lg-9{margin-left:36px!important}.ml-lg-10{margin-left:40px!important}.ml-lg-11{margin-left:44px!important}.ml-lg-12{margin-left:48px!important}.ml-lg-13{margin-left:52px!important}.ml-lg-14{margin-left:56px!important}.ml-lg-15{margin-left:60px!important}.ml-lg-16{margin-left:64px!important}.ml-lg-auto{margin-left:auto!important}.ms-lg-0{margin-inline-start:0px!important}.ms-lg-1{margin-inline-start:4px!important}.ms-lg-2{margin-inline-start:8px!important}.ms-lg-3{margin-inline-start:12px!important}.ms-lg-4{margin-inline-start:16px!important}.ms-lg-5{margin-inline-start:20px!important}.ms-lg-6{margin-inline-start:24px!important}.ms-lg-7{margin-inline-start:28px!important}.ms-lg-8{margin-inline-start:32px!important}.ms-lg-9{margin-inline-start:36px!important}.ms-lg-10{margin-inline-start:40px!important}.ms-lg-11{margin-inline-start:44px!important}.ms-lg-12{margin-inline-start:48px!important}.ms-lg-13{margin-inline-start:52px!important}.ms-lg-14{margin-inline-start:56px!important}.ms-lg-15{margin-inline-start:60px!important}.ms-lg-16{margin-inline-start:64px!important}.ms-lg-auto{margin-inline-start:auto!important}.me-lg-0{margin-inline-end:0px!important}.me-lg-1{margin-inline-end:4px!important}.me-lg-2{margin-inline-end:8px!important}.me-lg-3{margin-inline-end:12px!important}.me-lg-4{margin-inline-end:16px!important}.me-lg-5{margin-inline-end:20px!important}.me-lg-6{margin-inline-end:24px!important}.me-lg-7{margin-inline-end:28px!important}.me-lg-8{margin-inline-end:32px!important}.me-lg-9{margin-inline-end:36px!important}.me-lg-10{margin-inline-end:40px!important}.me-lg-11{margin-inline-end:44px!important}.me-lg-12{margin-inline-end:48px!important}.me-lg-13{margin-inline-end:52px!important}.me-lg-14{margin-inline-end:56px!important}.me-lg-15{margin-inline-end:60px!important}.me-lg-16{margin-inline-end:64px!important}.me-lg-auto{margin-inline-end:auto!important}.ma-lg-n1{margin:-4px!important}.ma-lg-n2{margin:-8px!important}.ma-lg-n3{margin:-12px!important}.ma-lg-n4{margin:-16px!important}.ma-lg-n5{margin:-20px!important}.ma-lg-n6{margin:-24px!important}.ma-lg-n7{margin:-28px!important}.ma-lg-n8{margin:-32px!important}.ma-lg-n9{margin:-36px!important}.ma-lg-n10{margin:-40px!important}.ma-lg-n11{margin:-44px!important}.ma-lg-n12{margin:-48px!important}.ma-lg-n13{margin:-52px!important}.ma-lg-n14{margin:-56px!important}.ma-lg-n15{margin:-60px!important}.ma-lg-n16{margin:-64px!important}.mx-lg-n1{margin-right:-4px!important;margin-left:-4px!important}.mx-lg-n2{margin-right:-8px!important;margin-left:-8px!important}.mx-lg-n3{margin-right:-12px!important;margin-left:-12px!important}.mx-lg-n4{margin-right:-16px!important;margin-left:-16px!important}.mx-lg-n5{margin-right:-20px!important;margin-left:-20px!important}.mx-lg-n6{margin-right:-24px!important;margin-left:-24px!important}.mx-lg-n7{margin-right:-28px!important;margin-left:-28px!important}.mx-lg-n8{margin-right:-32px!important;margin-left:-32px!important}.mx-lg-n9{margin-right:-36px!important;margin-left:-36px!important}.mx-lg-n10{margin-right:-40px!important;margin-left:-40px!important}.mx-lg-n11{margin-right:-44px!important;margin-left:-44px!important}.mx-lg-n12{margin-right:-48px!important;margin-left:-48px!important}.mx-lg-n13{margin-right:-52px!important;margin-left:-52px!important}.mx-lg-n14{margin-right:-56px!important;margin-left:-56px!important}.mx-lg-n15{margin-right:-60px!important;margin-left:-60px!important}.mx-lg-n16{margin-right:-64px!important;margin-left:-64px!important}.my-lg-n1{margin-top:-4px!important;margin-bottom:-4px!important}.my-lg-n2{margin-top:-8px!important;margin-bottom:-8px!important}.my-lg-n3{margin-top:-12px!important;margin-bottom:-12px!important}.my-lg-n4{margin-top:-16px!important;margin-bottom:-16px!important}.my-lg-n5{margin-top:-20px!important;margin-bottom:-20px!important}.my-lg-n6{margin-top:-24px!important;margin-bottom:-24px!important}.my-lg-n7{margin-top:-28px!important;margin-bottom:-28px!important}.my-lg-n8{margin-top:-32px!important;margin-bottom:-32px!important}.my-lg-n9{margin-top:-36px!important;margin-bottom:-36px!important}.my-lg-n10{margin-top:-40px!important;margin-bottom:-40px!important}.my-lg-n11{margin-top:-44px!important;margin-bottom:-44px!important}.my-lg-n12{margin-top:-48px!important;margin-bottom:-48px!important}.my-lg-n13{margin-top:-52px!important;margin-bottom:-52px!important}.my-lg-n14{margin-top:-56px!important;margin-bottom:-56px!important}.my-lg-n15{margin-top:-60px!important;margin-bottom:-60px!important}.my-lg-n16{margin-top:-64px!important;margin-bottom:-64px!important}.mt-lg-n1{margin-top:-4px!important}.mt-lg-n2{margin-top:-8px!important}.mt-lg-n3{margin-top:-12px!important}.mt-lg-n4{margin-top:-16px!important}.mt-lg-n5{margin-top:-20px!important}.mt-lg-n6{margin-top:-24px!important}.mt-lg-n7{margin-top:-28px!important}.mt-lg-n8{margin-top:-32px!important}.mt-lg-n9{margin-top:-36px!important}.mt-lg-n10{margin-top:-40px!important}.mt-lg-n11{margin-top:-44px!important}.mt-lg-n12{margin-top:-48px!important}.mt-lg-n13{margin-top:-52px!important}.mt-lg-n14{margin-top:-56px!important}.mt-lg-n15{margin-top:-60px!important}.mt-lg-n16{margin-top:-64px!important}.mr-lg-n1{margin-right:-4px!important}.mr-lg-n2{margin-right:-8px!important}.mr-lg-n3{margin-right:-12px!important}.mr-lg-n4{margin-right:-16px!important}.mr-lg-n5{margin-right:-20px!important}.mr-lg-n6{margin-right:-24px!important}.mr-lg-n7{margin-right:-28px!important}.mr-lg-n8{margin-right:-32px!important}.mr-lg-n9{margin-right:-36px!important}.mr-lg-n10{margin-right:-40px!important}.mr-lg-n11{margin-right:-44px!important}.mr-lg-n12{margin-right:-48px!important}.mr-lg-n13{margin-right:-52px!important}.mr-lg-n14{margin-right:-56px!important}.mr-lg-n15{margin-right:-60px!important}.mr-lg-n16{margin-right:-64px!important}.mb-lg-n1{margin-bottom:-4px!important}.mb-lg-n2{margin-bottom:-8px!important}.mb-lg-n3{margin-bottom:-12px!important}.mb-lg-n4{margin-bottom:-16px!important}.mb-lg-n5{margin-bottom:-20px!important}.mb-lg-n6{margin-bottom:-24px!important}.mb-lg-n7{margin-bottom:-28px!important}.mb-lg-n8{margin-bottom:-32px!important}.mb-lg-n9{margin-bottom:-36px!important}.mb-lg-n10{margin-bottom:-40px!important}.mb-lg-n11{margin-bottom:-44px!important}.mb-lg-n12{margin-bottom:-48px!important}.mb-lg-n13{margin-bottom:-52px!important}.mb-lg-n14{margin-bottom:-56px!important}.mb-lg-n15{margin-bottom:-60px!important}.mb-lg-n16{margin-bottom:-64px!important}.ml-lg-n1{margin-left:-4px!important}.ml-lg-n2{margin-left:-8px!important}.ml-lg-n3{margin-left:-12px!important}.ml-lg-n4{margin-left:-16px!important}.ml-lg-n5{margin-left:-20px!important}.ml-lg-n6{margin-left:-24px!important}.ml-lg-n7{margin-left:-28px!important}.ml-lg-n8{margin-left:-32px!important}.ml-lg-n9{margin-left:-36px!important}.ml-lg-n10{margin-left:-40px!important}.ml-lg-n11{margin-left:-44px!important}.ml-lg-n12{margin-left:-48px!important}.ml-lg-n13{margin-left:-52px!important}.ml-lg-n14{margin-left:-56px!important}.ml-lg-n15{margin-left:-60px!important}.ml-lg-n16{margin-left:-64px!important}.ms-lg-n1{margin-inline-start:-4px!important}.ms-lg-n2{margin-inline-start:-8px!important}.ms-lg-n3{margin-inline-start:-12px!important}.ms-lg-n4{margin-inline-start:-16px!important}.ms-lg-n5{margin-inline-start:-20px!important}.ms-lg-n6{margin-inline-start:-24px!important}.ms-lg-n7{margin-inline-start:-28px!important}.ms-lg-n8{margin-inline-start:-32px!important}.ms-lg-n9{margin-inline-start:-36px!important}.ms-lg-n10{margin-inline-start:-40px!important}.ms-lg-n11{margin-inline-start:-44px!important}.ms-lg-n12{margin-inline-start:-48px!important}.ms-lg-n13{margin-inline-start:-52px!important}.ms-lg-n14{margin-inline-start:-56px!important}.ms-lg-n15{margin-inline-start:-60px!important}.ms-lg-n16{margin-inline-start:-64px!important}.me-lg-n1{margin-inline-end:-4px!important}.me-lg-n2{margin-inline-end:-8px!important}.me-lg-n3{margin-inline-end:-12px!important}.me-lg-n4{margin-inline-end:-16px!important}.me-lg-n5{margin-inline-end:-20px!important}.me-lg-n6{margin-inline-end:-24px!important}.me-lg-n7{margin-inline-end:-28px!important}.me-lg-n8{margin-inline-end:-32px!important}.me-lg-n9{margin-inline-end:-36px!important}.me-lg-n10{margin-inline-end:-40px!important}.me-lg-n11{margin-inline-end:-44px!important}.me-lg-n12{margin-inline-end:-48px!important}.me-lg-n13{margin-inline-end:-52px!important}.me-lg-n14{margin-inline-end:-56px!important}.me-lg-n15{margin-inline-end:-60px!important}.me-lg-n16{margin-inline-end:-64px!important}.pa-lg-0{padding:0!important}.pa-lg-1{padding:4px!important}.pa-lg-2{padding:8px!important}.pa-lg-3{padding:12px!important}.pa-lg-4{padding:16px!important}.pa-lg-5{padding:20px!important}.pa-lg-6{padding:24px!important}.pa-lg-7{padding:28px!important}.pa-lg-8{padding:32px!important}.pa-lg-9{padding:36px!important}.pa-lg-10{padding:40px!important}.pa-lg-11{padding:44px!important}.pa-lg-12{padding:48px!important}.pa-lg-13{padding:52px!important}.pa-lg-14{padding:56px!important}.pa-lg-15{padding:60px!important}.pa-lg-16{padding:64px!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:4px!important;padding-left:4px!important}.px-lg-2{padding-right:8px!important;padding-left:8px!important}.px-lg-3{padding-right:12px!important;padding-left:12px!important}.px-lg-4{padding-right:16px!important;padding-left:16px!important}.px-lg-5{padding-right:20px!important;padding-left:20px!important}.px-lg-6{padding-right:24px!important;padding-left:24px!important}.px-lg-7{padding-right:28px!important;padding-left:28px!important}.px-lg-8{padding-right:32px!important;padding-left:32px!important}.px-lg-9{padding-right:36px!important;padding-left:36px!important}.px-lg-10{padding-right:40px!important;padding-left:40px!important}.px-lg-11{padding-right:44px!important;padding-left:44px!important}.px-lg-12{padding-right:48px!important;padding-left:48px!important}.px-lg-13{padding-right:52px!important;padding-left:52px!important}.px-lg-14{padding-right:56px!important;padding-left:56px!important}.px-lg-15{padding-right:60px!important;padding-left:60px!important}.px-lg-16{padding-right:64px!important;padding-left:64px!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:4px!important;padding-bottom:4px!important}.py-lg-2{padding-top:8px!important;padding-bottom:8px!important}.py-lg-3{padding-top:12px!important;padding-bottom:12px!important}.py-lg-4{padding-top:16px!important;padding-bottom:16px!important}.py-lg-5{padding-top:20px!important;padding-bottom:20px!important}.py-lg-6{padding-top:24px!important;padding-bottom:24px!important}.py-lg-7{padding-top:28px!important;padding-bottom:28px!important}.py-lg-8{padding-top:32px!important;padding-bottom:32px!important}.py-lg-9{padding-top:36px!important;padding-bottom:36px!important}.py-lg-10{padding-top:40px!important;padding-bottom:40px!important}.py-lg-11{padding-top:44px!important;padding-bottom:44px!important}.py-lg-12{padding-top:48px!important;padding-bottom:48px!important}.py-lg-13{padding-top:52px!important;padding-bottom:52px!important}.py-lg-14{padding-top:56px!important;padding-bottom:56px!important}.py-lg-15{padding-top:60px!important;padding-bottom:60px!important}.py-lg-16{padding-top:64px!important;padding-bottom:64px!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:4px!important}.pt-lg-2{padding-top:8px!important}.pt-lg-3{padding-top:12px!important}.pt-lg-4{padding-top:16px!important}.pt-lg-5{padding-top:20px!important}.pt-lg-6{padding-top:24px!important}.pt-lg-7{padding-top:28px!important}.pt-lg-8{padding-top:32px!important}.pt-lg-9{padding-top:36px!important}.pt-lg-10{padding-top:40px!important}.pt-lg-11{padding-top:44px!important}.pt-lg-12{padding-top:48px!important}.pt-lg-13{padding-top:52px!important}.pt-lg-14{padding-top:56px!important}.pt-lg-15{padding-top:60px!important}.pt-lg-16{padding-top:64px!important}.pr-lg-0{padding-right:0!important}.pr-lg-1{padding-right:4px!important}.pr-lg-2{padding-right:8px!important}.pr-lg-3{padding-right:12px!important}.pr-lg-4{padding-right:16px!important}.pr-lg-5{padding-right:20px!important}.pr-lg-6{padding-right:24px!important}.pr-lg-7{padding-right:28px!important}.pr-lg-8{padding-right:32px!important}.pr-lg-9{padding-right:36px!important}.pr-lg-10{padding-right:40px!important}.pr-lg-11{padding-right:44px!important}.pr-lg-12{padding-right:48px!important}.pr-lg-13{padding-right:52px!important}.pr-lg-14{padding-right:56px!important}.pr-lg-15{padding-right:60px!important}.pr-lg-16{padding-right:64px!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:4px!important}.pb-lg-2{padding-bottom:8px!important}.pb-lg-3{padding-bottom:12px!important}.pb-lg-4{padding-bottom:16px!important}.pb-lg-5{padding-bottom:20px!important}.pb-lg-6{padding-bottom:24px!important}.pb-lg-7{padding-bottom:28px!important}.pb-lg-8{padding-bottom:32px!important}.pb-lg-9{padding-bottom:36px!important}.pb-lg-10{padding-bottom:40px!important}.pb-lg-11{padding-bottom:44px!important}.pb-lg-12{padding-bottom:48px!important}.pb-lg-13{padding-bottom:52px!important}.pb-lg-14{padding-bottom:56px!important}.pb-lg-15{padding-bottom:60px!important}.pb-lg-16{padding-bottom:64px!important}.pl-lg-0{padding-left:0!important}.pl-lg-1{padding-left:4px!important}.pl-lg-2{padding-left:8px!important}.pl-lg-3{padding-left:12px!important}.pl-lg-4{padding-left:16px!important}.pl-lg-5{padding-left:20px!important}.pl-lg-6{padding-left:24px!important}.pl-lg-7{padding-left:28px!important}.pl-lg-8{padding-left:32px!important}.pl-lg-9{padding-left:36px!important}.pl-lg-10{padding-left:40px!important}.pl-lg-11{padding-left:44px!important}.pl-lg-12{padding-left:48px!important}.pl-lg-13{padding-left:52px!important}.pl-lg-14{padding-left:56px!important}.pl-lg-15{padding-left:60px!important}.pl-lg-16{padding-left:64px!important}.ps-lg-0{padding-inline-start:0px!important}.ps-lg-1{padding-inline-start:4px!important}.ps-lg-2{padding-inline-start:8px!important}.ps-lg-3{padding-inline-start:12px!important}.ps-lg-4{padding-inline-start:16px!important}.ps-lg-5{padding-inline-start:20px!important}.ps-lg-6{padding-inline-start:24px!important}.ps-lg-7{padding-inline-start:28px!important}.ps-lg-8{padding-inline-start:32px!important}.ps-lg-9{padding-inline-start:36px!important}.ps-lg-10{padding-inline-start:40px!important}.ps-lg-11{padding-inline-start:44px!important}.ps-lg-12{padding-inline-start:48px!important}.ps-lg-13{padding-inline-start:52px!important}.ps-lg-14{padding-inline-start:56px!important}.ps-lg-15{padding-inline-start:60px!important}.ps-lg-16{padding-inline-start:64px!important}.pe-lg-0{padding-inline-end:0px!important}.pe-lg-1{padding-inline-end:4px!important}.pe-lg-2{padding-inline-end:8px!important}.pe-lg-3{padding-inline-end:12px!important}.pe-lg-4{padding-inline-end:16px!important}.pe-lg-5{padding-inline-end:20px!important}.pe-lg-6{padding-inline-end:24px!important}.pe-lg-7{padding-inline-end:28px!important}.pe-lg-8{padding-inline-end:32px!important}.pe-lg-9{padding-inline-end:36px!important}.pe-lg-10{padding-inline-end:40px!important}.pe-lg-11{padding-inline-end:44px!important}.pe-lg-12{padding-inline-end:48px!important}.pe-lg-13{padding-inline-end:52px!important}.pe-lg-14{padding-inline-end:56px!important}.pe-lg-15{padding-inline-end:60px!important}.pe-lg-16{padding-inline-end:64px!important}.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}.text-lg-justify{text-align:justify!important}.text-lg-start{text-align:start!important}.text-lg-end{text-align:end!important}.text-lg-h1{font-size:6rem!important;font-weight:300;line-height:1;letter-spacing:-.015625em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-lg-h2{font-size:3.75rem!important;font-weight:300;line-height:1;letter-spacing:-.0083333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-lg-h3{font-size:3rem!important;font-weight:400;line-height:1.05;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-lg-h4{font-size:2.125rem!important;font-weight:400;line-height:1.175;letter-spacing:.0073529412em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-lg-h5{font-size:1.5rem!important;font-weight:400;line-height:1.333;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-lg-h6{font-size:1.25rem!important;font-weight:500;line-height:1.6;letter-spacing:.0125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-lg-subtitle-1{font-size:1rem!important;font-weight:400;line-height:1.75;letter-spacing:.009375em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-lg-subtitle-2{font-size:.875rem!important;font-weight:500;line-height:1.6;letter-spacing:.0071428571em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-lg-body-1{font-size:1rem!important;font-weight:400;line-height:1.5;letter-spacing:.03125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-lg-body-2{font-size:.875rem!important;font-weight:400;line-height:1.425;letter-spacing:.0178571429em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-lg-button{font-size:.875rem!important;font-weight:500;line-height:2.6;letter-spacing:.0892857143em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}.text-lg-caption{font-size:.75rem!important;font-weight:400;line-height:1.667;letter-spacing:.0333333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-lg-overline{font-size:.75rem!important;font-weight:500;line-height:2.667;letter-spacing:.1666666667em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}.h-lg-auto{height:auto!important}.h-lg-screen{height:100vh!important}.h-lg-0{height:0!important}.h-lg-25{height:25%!important}.h-lg-50{height:50%!important}.h-lg-75{height:75%!important}.h-lg-100{height:100%!important}.w-lg-auto{width:auto!important}.w-lg-0{width:0!important}.w-lg-25{width:25%!important}.w-lg-33{width:33%!important}.w-lg-50{width:50%!important}.w-lg-66{width:66%!important}.w-lg-75{width:75%!important}.w-lg-100{width:100%!important}}@media (min-width: 1920px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.float-xl-none{float:none!important}.float-xl-left{float:left!important}.float-xl-right{float:right!important}.v-locale--is-rtl .float-xl-end{float:left!important}.v-locale--is-rtl .float-xl-start,.v-locale--is-ltr .float-xl-end{float:right!important}.v-locale--is-ltr .float-xl-start{float:left!important}.flex-xl-fill,.flex-xl-1-1{flex:1 1 auto!important}.flex-xl-1-0{flex:1 0 auto!important}.flex-xl-0-1{flex:0 1 auto!important}.flex-xl-0-0{flex:0 0 auto!important}.flex-xl-1-1-100{flex:1 1 100%!important}.flex-xl-1-0-100{flex:1 0 100%!important}.flex-xl-0-1-100{flex:0 1 100%!important}.flex-xl-0-0-100{flex:0 0 100%!important}.flex-xl-1-1-0{flex:1 1 0!important}.flex-xl-1-0-0{flex:1 0 0!important}.flex-xl-0-1-0{flex:0 1 0!important}.flex-xl-0-0-0{flex:0 0 0!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-xl-start{justify-content:flex-start!important}.justify-xl-end{justify-content:flex-end!important}.justify-xl-center{justify-content:center!important}.justify-xl-space-between{justify-content:space-between!important}.justify-xl-space-around{justify-content:space-around!important}.justify-xl-space-evenly{justify-content:space-evenly!important}.align-xl-start{align-items:flex-start!important}.align-xl-end{align-items:flex-end!important}.align-xl-center{align-items:center!important}.align-xl-baseline{align-items:baseline!important}.align-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-space-between{align-content:space-between!important}.align-content-xl-space-around{align-content:space-around!important}.align-content-xl-space-evenly{align-content:space-evenly!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-6{order:6!important}.order-xl-7{order:7!important}.order-xl-8{order:8!important}.order-xl-9{order:9!important}.order-xl-10{order:10!important}.order-xl-11{order:11!important}.order-xl-12{order:12!important}.order-xl-last{order:13!important}.ga-xl-0{gap:0px!important}.ga-xl-1{gap:4px!important}.ga-xl-2{gap:8px!important}.ga-xl-3{gap:12px!important}.ga-xl-4{gap:16px!important}.ga-xl-5{gap:20px!important}.ga-xl-6{gap:24px!important}.ga-xl-7{gap:28px!important}.ga-xl-8{gap:32px!important}.ga-xl-9{gap:36px!important}.ga-xl-10{gap:40px!important}.ga-xl-11{gap:44px!important}.ga-xl-12{gap:48px!important}.ga-xl-13{gap:52px!important}.ga-xl-14{gap:56px!important}.ga-xl-15{gap:60px!important}.ga-xl-16{gap:64px!important}.ga-xl-auto{gap:auto!important}.gr-xl-0{row-gap:0px!important}.gr-xl-1{row-gap:4px!important}.gr-xl-2{row-gap:8px!important}.gr-xl-3{row-gap:12px!important}.gr-xl-4{row-gap:16px!important}.gr-xl-5{row-gap:20px!important}.gr-xl-6{row-gap:24px!important}.gr-xl-7{row-gap:28px!important}.gr-xl-8{row-gap:32px!important}.gr-xl-9{row-gap:36px!important}.gr-xl-10{row-gap:40px!important}.gr-xl-11{row-gap:44px!important}.gr-xl-12{row-gap:48px!important}.gr-xl-13{row-gap:52px!important}.gr-xl-14{row-gap:56px!important}.gr-xl-15{row-gap:60px!important}.gr-xl-16{row-gap:64px!important}.gr-xl-auto{row-gap:auto!important}.gc-xl-0{-moz-column-gap:0px!important;column-gap:0px!important}.gc-xl-1{-moz-column-gap:4px!important;column-gap:4px!important}.gc-xl-2{-moz-column-gap:8px!important;column-gap:8px!important}.gc-xl-3{-moz-column-gap:12px!important;column-gap:12px!important}.gc-xl-4{-moz-column-gap:16px!important;column-gap:16px!important}.gc-xl-5{-moz-column-gap:20px!important;column-gap:20px!important}.gc-xl-6{-moz-column-gap:24px!important;column-gap:24px!important}.gc-xl-7{-moz-column-gap:28px!important;column-gap:28px!important}.gc-xl-8{-moz-column-gap:32px!important;column-gap:32px!important}.gc-xl-9{-moz-column-gap:36px!important;column-gap:36px!important}.gc-xl-10{-moz-column-gap:40px!important;column-gap:40px!important}.gc-xl-11{-moz-column-gap:44px!important;column-gap:44px!important}.gc-xl-12{-moz-column-gap:48px!important;column-gap:48px!important}.gc-xl-13{-moz-column-gap:52px!important;column-gap:52px!important}.gc-xl-14{-moz-column-gap:56px!important;column-gap:56px!important}.gc-xl-15{-moz-column-gap:60px!important;column-gap:60px!important}.gc-xl-16{-moz-column-gap:64px!important;column-gap:64px!important}.gc-xl-auto{-moz-column-gap:auto!important;column-gap:auto!important}.ma-xl-0{margin:0!important}.ma-xl-1{margin:4px!important}.ma-xl-2{margin:8px!important}.ma-xl-3{margin:12px!important}.ma-xl-4{margin:16px!important}.ma-xl-5{margin:20px!important}.ma-xl-6{margin:24px!important}.ma-xl-7{margin:28px!important}.ma-xl-8{margin:32px!important}.ma-xl-9{margin:36px!important}.ma-xl-10{margin:40px!important}.ma-xl-11{margin:44px!important}.ma-xl-12{margin:48px!important}.ma-xl-13{margin:52px!important}.ma-xl-14{margin:56px!important}.ma-xl-15{margin:60px!important}.ma-xl-16{margin:64px!important}.ma-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:4px!important;margin-left:4px!important}.mx-xl-2{margin-right:8px!important;margin-left:8px!important}.mx-xl-3{margin-right:12px!important;margin-left:12px!important}.mx-xl-4{margin-right:16px!important;margin-left:16px!important}.mx-xl-5{margin-right:20px!important;margin-left:20px!important}.mx-xl-6{margin-right:24px!important;margin-left:24px!important}.mx-xl-7{margin-right:28px!important;margin-left:28px!important}.mx-xl-8{margin-right:32px!important;margin-left:32px!important}.mx-xl-9{margin-right:36px!important;margin-left:36px!important}.mx-xl-10{margin-right:40px!important;margin-left:40px!important}.mx-xl-11{margin-right:44px!important;margin-left:44px!important}.mx-xl-12{margin-right:48px!important;margin-left:48px!important}.mx-xl-13{margin-right:52px!important;margin-left:52px!important}.mx-xl-14{margin-right:56px!important;margin-left:56px!important}.mx-xl-15{margin-right:60px!important;margin-left:60px!important}.mx-xl-16{margin-right:64px!important;margin-left:64px!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:4px!important;margin-bottom:4px!important}.my-xl-2{margin-top:8px!important;margin-bottom:8px!important}.my-xl-3{margin-top:12px!important;margin-bottom:12px!important}.my-xl-4{margin-top:16px!important;margin-bottom:16px!important}.my-xl-5{margin-top:20px!important;margin-bottom:20px!important}.my-xl-6{margin-top:24px!important;margin-bottom:24px!important}.my-xl-7{margin-top:28px!important;margin-bottom:28px!important}.my-xl-8{margin-top:32px!important;margin-bottom:32px!important}.my-xl-9{margin-top:36px!important;margin-bottom:36px!important}.my-xl-10{margin-top:40px!important;margin-bottom:40px!important}.my-xl-11{margin-top:44px!important;margin-bottom:44px!important}.my-xl-12{margin-top:48px!important;margin-bottom:48px!important}.my-xl-13{margin-top:52px!important;margin-bottom:52px!important}.my-xl-14{margin-top:56px!important;margin-bottom:56px!important}.my-xl-15{margin-top:60px!important;margin-bottom:60px!important}.my-xl-16{margin-top:64px!important;margin-bottom:64px!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:4px!important}.mt-xl-2{margin-top:8px!important}.mt-xl-3{margin-top:12px!important}.mt-xl-4{margin-top:16px!important}.mt-xl-5{margin-top:20px!important}.mt-xl-6{margin-top:24px!important}.mt-xl-7{margin-top:28px!important}.mt-xl-8{margin-top:32px!important}.mt-xl-9{margin-top:36px!important}.mt-xl-10{margin-top:40px!important}.mt-xl-11{margin-top:44px!important}.mt-xl-12{margin-top:48px!important}.mt-xl-13{margin-top:52px!important}.mt-xl-14{margin-top:56px!important}.mt-xl-15{margin-top:60px!important}.mt-xl-16{margin-top:64px!important}.mt-xl-auto{margin-top:auto!important}.mr-xl-0{margin-right:0!important}.mr-xl-1{margin-right:4px!important}.mr-xl-2{margin-right:8px!important}.mr-xl-3{margin-right:12px!important}.mr-xl-4{margin-right:16px!important}.mr-xl-5{margin-right:20px!important}.mr-xl-6{margin-right:24px!important}.mr-xl-7{margin-right:28px!important}.mr-xl-8{margin-right:32px!important}.mr-xl-9{margin-right:36px!important}.mr-xl-10{margin-right:40px!important}.mr-xl-11{margin-right:44px!important}.mr-xl-12{margin-right:48px!important}.mr-xl-13{margin-right:52px!important}.mr-xl-14{margin-right:56px!important}.mr-xl-15{margin-right:60px!important}.mr-xl-16{margin-right:64px!important}.mr-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:4px!important}.mb-xl-2{margin-bottom:8px!important}.mb-xl-3{margin-bottom:12px!important}.mb-xl-4{margin-bottom:16px!important}.mb-xl-5{margin-bottom:20px!important}.mb-xl-6{margin-bottom:24px!important}.mb-xl-7{margin-bottom:28px!important}.mb-xl-8{margin-bottom:32px!important}.mb-xl-9{margin-bottom:36px!important}.mb-xl-10{margin-bottom:40px!important}.mb-xl-11{margin-bottom:44px!important}.mb-xl-12{margin-bottom:48px!important}.mb-xl-13{margin-bottom:52px!important}.mb-xl-14{margin-bottom:56px!important}.mb-xl-15{margin-bottom:60px!important}.mb-xl-16{margin-bottom:64px!important}.mb-xl-auto{margin-bottom:auto!important}.ml-xl-0{margin-left:0!important}.ml-xl-1{margin-left:4px!important}.ml-xl-2{margin-left:8px!important}.ml-xl-3{margin-left:12px!important}.ml-xl-4{margin-left:16px!important}.ml-xl-5{margin-left:20px!important}.ml-xl-6{margin-left:24px!important}.ml-xl-7{margin-left:28px!important}.ml-xl-8{margin-left:32px!important}.ml-xl-9{margin-left:36px!important}.ml-xl-10{margin-left:40px!important}.ml-xl-11{margin-left:44px!important}.ml-xl-12{margin-left:48px!important}.ml-xl-13{margin-left:52px!important}.ml-xl-14{margin-left:56px!important}.ml-xl-15{margin-left:60px!important}.ml-xl-16{margin-left:64px!important}.ml-xl-auto{margin-left:auto!important}.ms-xl-0{margin-inline-start:0px!important}.ms-xl-1{margin-inline-start:4px!important}.ms-xl-2{margin-inline-start:8px!important}.ms-xl-3{margin-inline-start:12px!important}.ms-xl-4{margin-inline-start:16px!important}.ms-xl-5{margin-inline-start:20px!important}.ms-xl-6{margin-inline-start:24px!important}.ms-xl-7{margin-inline-start:28px!important}.ms-xl-8{margin-inline-start:32px!important}.ms-xl-9{margin-inline-start:36px!important}.ms-xl-10{margin-inline-start:40px!important}.ms-xl-11{margin-inline-start:44px!important}.ms-xl-12{margin-inline-start:48px!important}.ms-xl-13{margin-inline-start:52px!important}.ms-xl-14{margin-inline-start:56px!important}.ms-xl-15{margin-inline-start:60px!important}.ms-xl-16{margin-inline-start:64px!important}.ms-xl-auto{margin-inline-start:auto!important}.me-xl-0{margin-inline-end:0px!important}.me-xl-1{margin-inline-end:4px!important}.me-xl-2{margin-inline-end:8px!important}.me-xl-3{margin-inline-end:12px!important}.me-xl-4{margin-inline-end:16px!important}.me-xl-5{margin-inline-end:20px!important}.me-xl-6{margin-inline-end:24px!important}.me-xl-7{margin-inline-end:28px!important}.me-xl-8{margin-inline-end:32px!important}.me-xl-9{margin-inline-end:36px!important}.me-xl-10{margin-inline-end:40px!important}.me-xl-11{margin-inline-end:44px!important}.me-xl-12{margin-inline-end:48px!important}.me-xl-13{margin-inline-end:52px!important}.me-xl-14{margin-inline-end:56px!important}.me-xl-15{margin-inline-end:60px!important}.me-xl-16{margin-inline-end:64px!important}.me-xl-auto{margin-inline-end:auto!important}.ma-xl-n1{margin:-4px!important}.ma-xl-n2{margin:-8px!important}.ma-xl-n3{margin:-12px!important}.ma-xl-n4{margin:-16px!important}.ma-xl-n5{margin:-20px!important}.ma-xl-n6{margin:-24px!important}.ma-xl-n7{margin:-28px!important}.ma-xl-n8{margin:-32px!important}.ma-xl-n9{margin:-36px!important}.ma-xl-n10{margin:-40px!important}.ma-xl-n11{margin:-44px!important}.ma-xl-n12{margin:-48px!important}.ma-xl-n13{margin:-52px!important}.ma-xl-n14{margin:-56px!important}.ma-xl-n15{margin:-60px!important}.ma-xl-n16{margin:-64px!important}.mx-xl-n1{margin-right:-4px!important;margin-left:-4px!important}.mx-xl-n2{margin-right:-8px!important;margin-left:-8px!important}.mx-xl-n3{margin-right:-12px!important;margin-left:-12px!important}.mx-xl-n4{margin-right:-16px!important;margin-left:-16px!important}.mx-xl-n5{margin-right:-20px!important;margin-left:-20px!important}.mx-xl-n6{margin-right:-24px!important;margin-left:-24px!important}.mx-xl-n7{margin-right:-28px!important;margin-left:-28px!important}.mx-xl-n8{margin-right:-32px!important;margin-left:-32px!important}.mx-xl-n9{margin-right:-36px!important;margin-left:-36px!important}.mx-xl-n10{margin-right:-40px!important;margin-left:-40px!important}.mx-xl-n11{margin-right:-44px!important;margin-left:-44px!important}.mx-xl-n12{margin-right:-48px!important;margin-left:-48px!important}.mx-xl-n13{margin-right:-52px!important;margin-left:-52px!important}.mx-xl-n14{margin-right:-56px!important;margin-left:-56px!important}.mx-xl-n15{margin-right:-60px!important;margin-left:-60px!important}.mx-xl-n16{margin-right:-64px!important;margin-left:-64px!important}.my-xl-n1{margin-top:-4px!important;margin-bottom:-4px!important}.my-xl-n2{margin-top:-8px!important;margin-bottom:-8px!important}.my-xl-n3{margin-top:-12px!important;margin-bottom:-12px!important}.my-xl-n4{margin-top:-16px!important;margin-bottom:-16px!important}.my-xl-n5{margin-top:-20px!important;margin-bottom:-20px!important}.my-xl-n6{margin-top:-24px!important;margin-bottom:-24px!important}.my-xl-n7{margin-top:-28px!important;margin-bottom:-28px!important}.my-xl-n8{margin-top:-32px!important;margin-bottom:-32px!important}.my-xl-n9{margin-top:-36px!important;margin-bottom:-36px!important}.my-xl-n10{margin-top:-40px!important;margin-bottom:-40px!important}.my-xl-n11{margin-top:-44px!important;margin-bottom:-44px!important}.my-xl-n12{margin-top:-48px!important;margin-bottom:-48px!important}.my-xl-n13{margin-top:-52px!important;margin-bottom:-52px!important}.my-xl-n14{margin-top:-56px!important;margin-bottom:-56px!important}.my-xl-n15{margin-top:-60px!important;margin-bottom:-60px!important}.my-xl-n16{margin-top:-64px!important;margin-bottom:-64px!important}.mt-xl-n1{margin-top:-4px!important}.mt-xl-n2{margin-top:-8px!important}.mt-xl-n3{margin-top:-12px!important}.mt-xl-n4{margin-top:-16px!important}.mt-xl-n5{margin-top:-20px!important}.mt-xl-n6{margin-top:-24px!important}.mt-xl-n7{margin-top:-28px!important}.mt-xl-n8{margin-top:-32px!important}.mt-xl-n9{margin-top:-36px!important}.mt-xl-n10{margin-top:-40px!important}.mt-xl-n11{margin-top:-44px!important}.mt-xl-n12{margin-top:-48px!important}.mt-xl-n13{margin-top:-52px!important}.mt-xl-n14{margin-top:-56px!important}.mt-xl-n15{margin-top:-60px!important}.mt-xl-n16{margin-top:-64px!important}.mr-xl-n1{margin-right:-4px!important}.mr-xl-n2{margin-right:-8px!important}.mr-xl-n3{margin-right:-12px!important}.mr-xl-n4{margin-right:-16px!important}.mr-xl-n5{margin-right:-20px!important}.mr-xl-n6{margin-right:-24px!important}.mr-xl-n7{margin-right:-28px!important}.mr-xl-n8{margin-right:-32px!important}.mr-xl-n9{margin-right:-36px!important}.mr-xl-n10{margin-right:-40px!important}.mr-xl-n11{margin-right:-44px!important}.mr-xl-n12{margin-right:-48px!important}.mr-xl-n13{margin-right:-52px!important}.mr-xl-n14{margin-right:-56px!important}.mr-xl-n15{margin-right:-60px!important}.mr-xl-n16{margin-right:-64px!important}.mb-xl-n1{margin-bottom:-4px!important}.mb-xl-n2{margin-bottom:-8px!important}.mb-xl-n3{margin-bottom:-12px!important}.mb-xl-n4{margin-bottom:-16px!important}.mb-xl-n5{margin-bottom:-20px!important}.mb-xl-n6{margin-bottom:-24px!important}.mb-xl-n7{margin-bottom:-28px!important}.mb-xl-n8{margin-bottom:-32px!important}.mb-xl-n9{margin-bottom:-36px!important}.mb-xl-n10{margin-bottom:-40px!important}.mb-xl-n11{margin-bottom:-44px!important}.mb-xl-n12{margin-bottom:-48px!important}.mb-xl-n13{margin-bottom:-52px!important}.mb-xl-n14{margin-bottom:-56px!important}.mb-xl-n15{margin-bottom:-60px!important}.mb-xl-n16{margin-bottom:-64px!important}.ml-xl-n1{margin-left:-4px!important}.ml-xl-n2{margin-left:-8px!important}.ml-xl-n3{margin-left:-12px!important}.ml-xl-n4{margin-left:-16px!important}.ml-xl-n5{margin-left:-20px!important}.ml-xl-n6{margin-left:-24px!important}.ml-xl-n7{margin-left:-28px!important}.ml-xl-n8{margin-left:-32px!important}.ml-xl-n9{margin-left:-36px!important}.ml-xl-n10{margin-left:-40px!important}.ml-xl-n11{margin-left:-44px!important}.ml-xl-n12{margin-left:-48px!important}.ml-xl-n13{margin-left:-52px!important}.ml-xl-n14{margin-left:-56px!important}.ml-xl-n15{margin-left:-60px!important}.ml-xl-n16{margin-left:-64px!important}.ms-xl-n1{margin-inline-start:-4px!important}.ms-xl-n2{margin-inline-start:-8px!important}.ms-xl-n3{margin-inline-start:-12px!important}.ms-xl-n4{margin-inline-start:-16px!important}.ms-xl-n5{margin-inline-start:-20px!important}.ms-xl-n6{margin-inline-start:-24px!important}.ms-xl-n7{margin-inline-start:-28px!important}.ms-xl-n8{margin-inline-start:-32px!important}.ms-xl-n9{margin-inline-start:-36px!important}.ms-xl-n10{margin-inline-start:-40px!important}.ms-xl-n11{margin-inline-start:-44px!important}.ms-xl-n12{margin-inline-start:-48px!important}.ms-xl-n13{margin-inline-start:-52px!important}.ms-xl-n14{margin-inline-start:-56px!important}.ms-xl-n15{margin-inline-start:-60px!important}.ms-xl-n16{margin-inline-start:-64px!important}.me-xl-n1{margin-inline-end:-4px!important}.me-xl-n2{margin-inline-end:-8px!important}.me-xl-n3{margin-inline-end:-12px!important}.me-xl-n4{margin-inline-end:-16px!important}.me-xl-n5{margin-inline-end:-20px!important}.me-xl-n6{margin-inline-end:-24px!important}.me-xl-n7{margin-inline-end:-28px!important}.me-xl-n8{margin-inline-end:-32px!important}.me-xl-n9{margin-inline-end:-36px!important}.me-xl-n10{margin-inline-end:-40px!important}.me-xl-n11{margin-inline-end:-44px!important}.me-xl-n12{margin-inline-end:-48px!important}.me-xl-n13{margin-inline-end:-52px!important}.me-xl-n14{margin-inline-end:-56px!important}.me-xl-n15{margin-inline-end:-60px!important}.me-xl-n16{margin-inline-end:-64px!important}.pa-xl-0{padding:0!important}.pa-xl-1{padding:4px!important}.pa-xl-2{padding:8px!important}.pa-xl-3{padding:12px!important}.pa-xl-4{padding:16px!important}.pa-xl-5{padding:20px!important}.pa-xl-6{padding:24px!important}.pa-xl-7{padding:28px!important}.pa-xl-8{padding:32px!important}.pa-xl-9{padding:36px!important}.pa-xl-10{padding:40px!important}.pa-xl-11{padding:44px!important}.pa-xl-12{padding:48px!important}.pa-xl-13{padding:52px!important}.pa-xl-14{padding:56px!important}.pa-xl-15{padding:60px!important}.pa-xl-16{padding:64px!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:4px!important;padding-left:4px!important}.px-xl-2{padding-right:8px!important;padding-left:8px!important}.px-xl-3{padding-right:12px!important;padding-left:12px!important}.px-xl-4{padding-right:16px!important;padding-left:16px!important}.px-xl-5{padding-right:20px!important;padding-left:20px!important}.px-xl-6{padding-right:24px!important;padding-left:24px!important}.px-xl-7{padding-right:28px!important;padding-left:28px!important}.px-xl-8{padding-right:32px!important;padding-left:32px!important}.px-xl-9{padding-right:36px!important;padding-left:36px!important}.px-xl-10{padding-right:40px!important;padding-left:40px!important}.px-xl-11{padding-right:44px!important;padding-left:44px!important}.px-xl-12{padding-right:48px!important;padding-left:48px!important}.px-xl-13{padding-right:52px!important;padding-left:52px!important}.px-xl-14{padding-right:56px!important;padding-left:56px!important}.px-xl-15{padding-right:60px!important;padding-left:60px!important}.px-xl-16{padding-right:64px!important;padding-left:64px!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:4px!important;padding-bottom:4px!important}.py-xl-2{padding-top:8px!important;padding-bottom:8px!important}.py-xl-3{padding-top:12px!important;padding-bottom:12px!important}.py-xl-4{padding-top:16px!important;padding-bottom:16px!important}.py-xl-5{padding-top:20px!important;padding-bottom:20px!important}.py-xl-6{padding-top:24px!important;padding-bottom:24px!important}.py-xl-7{padding-top:28px!important;padding-bottom:28px!important}.py-xl-8{padding-top:32px!important;padding-bottom:32px!important}.py-xl-9{padding-top:36px!important;padding-bottom:36px!important}.py-xl-10{padding-top:40px!important;padding-bottom:40px!important}.py-xl-11{padding-top:44px!important;padding-bottom:44px!important}.py-xl-12{padding-top:48px!important;padding-bottom:48px!important}.py-xl-13{padding-top:52px!important;padding-bottom:52px!important}.py-xl-14{padding-top:56px!important;padding-bottom:56px!important}.py-xl-15{padding-top:60px!important;padding-bottom:60px!important}.py-xl-16{padding-top:64px!important;padding-bottom:64px!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:4px!important}.pt-xl-2{padding-top:8px!important}.pt-xl-3{padding-top:12px!important}.pt-xl-4{padding-top:16px!important}.pt-xl-5{padding-top:20px!important}.pt-xl-6{padding-top:24px!important}.pt-xl-7{padding-top:28px!important}.pt-xl-8{padding-top:32px!important}.pt-xl-9{padding-top:36px!important}.pt-xl-10{padding-top:40px!important}.pt-xl-11{padding-top:44px!important}.pt-xl-12{padding-top:48px!important}.pt-xl-13{padding-top:52px!important}.pt-xl-14{padding-top:56px!important}.pt-xl-15{padding-top:60px!important}.pt-xl-16{padding-top:64px!important}.pr-xl-0{padding-right:0!important}.pr-xl-1{padding-right:4px!important}.pr-xl-2{padding-right:8px!important}.pr-xl-3{padding-right:12px!important}.pr-xl-4{padding-right:16px!important}.pr-xl-5{padding-right:20px!important}.pr-xl-6{padding-right:24px!important}.pr-xl-7{padding-right:28px!important}.pr-xl-8{padding-right:32px!important}.pr-xl-9{padding-right:36px!important}.pr-xl-10{padding-right:40px!important}.pr-xl-11{padding-right:44px!important}.pr-xl-12{padding-right:48px!important}.pr-xl-13{padding-right:52px!important}.pr-xl-14{padding-right:56px!important}.pr-xl-15{padding-right:60px!important}.pr-xl-16{padding-right:64px!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:4px!important}.pb-xl-2{padding-bottom:8px!important}.pb-xl-3{padding-bottom:12px!important}.pb-xl-4{padding-bottom:16px!important}.pb-xl-5{padding-bottom:20px!important}.pb-xl-6{padding-bottom:24px!important}.pb-xl-7{padding-bottom:28px!important}.pb-xl-8{padding-bottom:32px!important}.pb-xl-9{padding-bottom:36px!important}.pb-xl-10{padding-bottom:40px!important}.pb-xl-11{padding-bottom:44px!important}.pb-xl-12{padding-bottom:48px!important}.pb-xl-13{padding-bottom:52px!important}.pb-xl-14{padding-bottom:56px!important}.pb-xl-15{padding-bottom:60px!important}.pb-xl-16{padding-bottom:64px!important}.pl-xl-0{padding-left:0!important}.pl-xl-1{padding-left:4px!important}.pl-xl-2{padding-left:8px!important}.pl-xl-3{padding-left:12px!important}.pl-xl-4{padding-left:16px!important}.pl-xl-5{padding-left:20px!important}.pl-xl-6{padding-left:24px!important}.pl-xl-7{padding-left:28px!important}.pl-xl-8{padding-left:32px!important}.pl-xl-9{padding-left:36px!important}.pl-xl-10{padding-left:40px!important}.pl-xl-11{padding-left:44px!important}.pl-xl-12{padding-left:48px!important}.pl-xl-13{padding-left:52px!important}.pl-xl-14{padding-left:56px!important}.pl-xl-15{padding-left:60px!important}.pl-xl-16{padding-left:64px!important}.ps-xl-0{padding-inline-start:0px!important}.ps-xl-1{padding-inline-start:4px!important}.ps-xl-2{padding-inline-start:8px!important}.ps-xl-3{padding-inline-start:12px!important}.ps-xl-4{padding-inline-start:16px!important}.ps-xl-5{padding-inline-start:20px!important}.ps-xl-6{padding-inline-start:24px!important}.ps-xl-7{padding-inline-start:28px!important}.ps-xl-8{padding-inline-start:32px!important}.ps-xl-9{padding-inline-start:36px!important}.ps-xl-10{padding-inline-start:40px!important}.ps-xl-11{padding-inline-start:44px!important}.ps-xl-12{padding-inline-start:48px!important}.ps-xl-13{padding-inline-start:52px!important}.ps-xl-14{padding-inline-start:56px!important}.ps-xl-15{padding-inline-start:60px!important}.ps-xl-16{padding-inline-start:64px!important}.pe-xl-0{padding-inline-end:0px!important}.pe-xl-1{padding-inline-end:4px!important}.pe-xl-2{padding-inline-end:8px!important}.pe-xl-3{padding-inline-end:12px!important}.pe-xl-4{padding-inline-end:16px!important}.pe-xl-5{padding-inline-end:20px!important}.pe-xl-6{padding-inline-end:24px!important}.pe-xl-7{padding-inline-end:28px!important}.pe-xl-8{padding-inline-end:32px!important}.pe-xl-9{padding-inline-end:36px!important}.pe-xl-10{padding-inline-end:40px!important}.pe-xl-11{padding-inline-end:44px!important}.pe-xl-12{padding-inline-end:48px!important}.pe-xl-13{padding-inline-end:52px!important}.pe-xl-14{padding-inline-end:56px!important}.pe-xl-15{padding-inline-end:60px!important}.pe-xl-16{padding-inline-end:64px!important}.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}.text-xl-justify{text-align:justify!important}.text-xl-start{text-align:start!important}.text-xl-end{text-align:end!important}.text-xl-h1{font-size:6rem!important;font-weight:300;line-height:1;letter-spacing:-.015625em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xl-h2{font-size:3.75rem!important;font-weight:300;line-height:1;letter-spacing:-.0083333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xl-h3{font-size:3rem!important;font-weight:400;line-height:1.05;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xl-h4{font-size:2.125rem!important;font-weight:400;line-height:1.175;letter-spacing:.0073529412em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xl-h5{font-size:1.5rem!important;font-weight:400;line-height:1.333;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xl-h6{font-size:1.25rem!important;font-weight:500;line-height:1.6;letter-spacing:.0125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xl-subtitle-1{font-size:1rem!important;font-weight:400;line-height:1.75;letter-spacing:.009375em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xl-subtitle-2{font-size:.875rem!important;font-weight:500;line-height:1.6;letter-spacing:.0071428571em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xl-body-1{font-size:1rem!important;font-weight:400;line-height:1.5;letter-spacing:.03125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xl-body-2{font-size:.875rem!important;font-weight:400;line-height:1.425;letter-spacing:.0178571429em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xl-button{font-size:.875rem!important;font-weight:500;line-height:2.6;letter-spacing:.0892857143em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}.text-xl-caption{font-size:.75rem!important;font-weight:400;line-height:1.667;letter-spacing:.0333333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xl-overline{font-size:.75rem!important;font-weight:500;line-height:2.667;letter-spacing:.1666666667em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}.h-xl-auto{height:auto!important}.h-xl-screen{height:100vh!important}.h-xl-0{height:0!important}.h-xl-25{height:25%!important}.h-xl-50{height:50%!important}.h-xl-75{height:75%!important}.h-xl-100{height:100%!important}.w-xl-auto{width:auto!important}.w-xl-0{width:0!important}.w-xl-25{width:25%!important}.w-xl-33{width:33%!important}.w-xl-50{width:50%!important}.w-xl-66{width:66%!important}.w-xl-75{width:75%!important}.w-xl-100{width:100%!important}}@media (min-width: 2560px){.d-xxl-none{display:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.float-xxl-none{float:none!important}.float-xxl-left{float:left!important}.float-xxl-right{float:right!important}.v-locale--is-rtl .float-xxl-end{float:left!important}.v-locale--is-rtl .float-xxl-start,.v-locale--is-ltr .float-xxl-end{float:right!important}.v-locale--is-ltr .float-xxl-start{float:left!important}.flex-xxl-fill,.flex-xxl-1-1{flex:1 1 auto!important}.flex-xxl-1-0{flex:1 0 auto!important}.flex-xxl-0-1{flex:0 1 auto!important}.flex-xxl-0-0{flex:0 0 auto!important}.flex-xxl-1-1-100{flex:1 1 100%!important}.flex-xxl-1-0-100{flex:1 0 100%!important}.flex-xxl-0-1-100{flex:0 1 100%!important}.flex-xxl-0-0-100{flex:0 0 100%!important}.flex-xxl-1-1-0{flex:1 1 0!important}.flex-xxl-1-0-0{flex:1 0 0!important}.flex-xxl-0-1-0{flex:0 1 0!important}.flex-xxl-0-0-0{flex:0 0 0!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-xxl-start{justify-content:flex-start!important}.justify-xxl-end{justify-content:flex-end!important}.justify-xxl-center{justify-content:center!important}.justify-xxl-space-between{justify-content:space-between!important}.justify-xxl-space-around{justify-content:space-around!important}.justify-xxl-space-evenly{justify-content:space-evenly!important}.align-xxl-start{align-items:flex-start!important}.align-xxl-end{align-items:flex-end!important}.align-xxl-center{align-items:center!important}.align-xxl-baseline{align-items:baseline!important}.align-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-space-between{align-content:space-between!important}.align-content-xxl-space-around{align-content:space-around!important}.align-content-xxl-space-evenly{align-content:space-evenly!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-6{order:6!important}.order-xxl-7{order:7!important}.order-xxl-8{order:8!important}.order-xxl-9{order:9!important}.order-xxl-10{order:10!important}.order-xxl-11{order:11!important}.order-xxl-12{order:12!important}.order-xxl-last{order:13!important}.ga-xxl-0{gap:0px!important}.ga-xxl-1{gap:4px!important}.ga-xxl-2{gap:8px!important}.ga-xxl-3{gap:12px!important}.ga-xxl-4{gap:16px!important}.ga-xxl-5{gap:20px!important}.ga-xxl-6{gap:24px!important}.ga-xxl-7{gap:28px!important}.ga-xxl-8{gap:32px!important}.ga-xxl-9{gap:36px!important}.ga-xxl-10{gap:40px!important}.ga-xxl-11{gap:44px!important}.ga-xxl-12{gap:48px!important}.ga-xxl-13{gap:52px!important}.ga-xxl-14{gap:56px!important}.ga-xxl-15{gap:60px!important}.ga-xxl-16{gap:64px!important}.ga-xxl-auto{gap:auto!important}.gr-xxl-0{row-gap:0px!important}.gr-xxl-1{row-gap:4px!important}.gr-xxl-2{row-gap:8px!important}.gr-xxl-3{row-gap:12px!important}.gr-xxl-4{row-gap:16px!important}.gr-xxl-5{row-gap:20px!important}.gr-xxl-6{row-gap:24px!important}.gr-xxl-7{row-gap:28px!important}.gr-xxl-8{row-gap:32px!important}.gr-xxl-9{row-gap:36px!important}.gr-xxl-10{row-gap:40px!important}.gr-xxl-11{row-gap:44px!important}.gr-xxl-12{row-gap:48px!important}.gr-xxl-13{row-gap:52px!important}.gr-xxl-14{row-gap:56px!important}.gr-xxl-15{row-gap:60px!important}.gr-xxl-16{row-gap:64px!important}.gr-xxl-auto{row-gap:auto!important}.gc-xxl-0{-moz-column-gap:0px!important;column-gap:0px!important}.gc-xxl-1{-moz-column-gap:4px!important;column-gap:4px!important}.gc-xxl-2{-moz-column-gap:8px!important;column-gap:8px!important}.gc-xxl-3{-moz-column-gap:12px!important;column-gap:12px!important}.gc-xxl-4{-moz-column-gap:16px!important;column-gap:16px!important}.gc-xxl-5{-moz-column-gap:20px!important;column-gap:20px!important}.gc-xxl-6{-moz-column-gap:24px!important;column-gap:24px!important}.gc-xxl-7{-moz-column-gap:28px!important;column-gap:28px!important}.gc-xxl-8{-moz-column-gap:32px!important;column-gap:32px!important}.gc-xxl-9{-moz-column-gap:36px!important;column-gap:36px!important}.gc-xxl-10{-moz-column-gap:40px!important;column-gap:40px!important}.gc-xxl-11{-moz-column-gap:44px!important;column-gap:44px!important}.gc-xxl-12{-moz-column-gap:48px!important;column-gap:48px!important}.gc-xxl-13{-moz-column-gap:52px!important;column-gap:52px!important}.gc-xxl-14{-moz-column-gap:56px!important;column-gap:56px!important}.gc-xxl-15{-moz-column-gap:60px!important;column-gap:60px!important}.gc-xxl-16{-moz-column-gap:64px!important;column-gap:64px!important}.gc-xxl-auto{-moz-column-gap:auto!important;column-gap:auto!important}.ma-xxl-0{margin:0!important}.ma-xxl-1{margin:4px!important}.ma-xxl-2{margin:8px!important}.ma-xxl-3{margin:12px!important}.ma-xxl-4{margin:16px!important}.ma-xxl-5{margin:20px!important}.ma-xxl-6{margin:24px!important}.ma-xxl-7{margin:28px!important}.ma-xxl-8{margin:32px!important}.ma-xxl-9{margin:36px!important}.ma-xxl-10{margin:40px!important}.ma-xxl-11{margin:44px!important}.ma-xxl-12{margin:48px!important}.ma-xxl-13{margin:52px!important}.ma-xxl-14{margin:56px!important}.ma-xxl-15{margin:60px!important}.ma-xxl-16{margin:64px!important}.ma-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:4px!important;margin-left:4px!important}.mx-xxl-2{margin-right:8px!important;margin-left:8px!important}.mx-xxl-3{margin-right:12px!important;margin-left:12px!important}.mx-xxl-4{margin-right:16px!important;margin-left:16px!important}.mx-xxl-5{margin-right:20px!important;margin-left:20px!important}.mx-xxl-6{margin-right:24px!important;margin-left:24px!important}.mx-xxl-7{margin-right:28px!important;margin-left:28px!important}.mx-xxl-8{margin-right:32px!important;margin-left:32px!important}.mx-xxl-9{margin-right:36px!important;margin-left:36px!important}.mx-xxl-10{margin-right:40px!important;margin-left:40px!important}.mx-xxl-11{margin-right:44px!important;margin-left:44px!important}.mx-xxl-12{margin-right:48px!important;margin-left:48px!important}.mx-xxl-13{margin-right:52px!important;margin-left:52px!important}.mx-xxl-14{margin-right:56px!important;margin-left:56px!important}.mx-xxl-15{margin-right:60px!important;margin-left:60px!important}.mx-xxl-16{margin-right:64px!important;margin-left:64px!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:4px!important;margin-bottom:4px!important}.my-xxl-2{margin-top:8px!important;margin-bottom:8px!important}.my-xxl-3{margin-top:12px!important;margin-bottom:12px!important}.my-xxl-4{margin-top:16px!important;margin-bottom:16px!important}.my-xxl-5{margin-top:20px!important;margin-bottom:20px!important}.my-xxl-6{margin-top:24px!important;margin-bottom:24px!important}.my-xxl-7{margin-top:28px!important;margin-bottom:28px!important}.my-xxl-8{margin-top:32px!important;margin-bottom:32px!important}.my-xxl-9{margin-top:36px!important;margin-bottom:36px!important}.my-xxl-10{margin-top:40px!important;margin-bottom:40px!important}.my-xxl-11{margin-top:44px!important;margin-bottom:44px!important}.my-xxl-12{margin-top:48px!important;margin-bottom:48px!important}.my-xxl-13{margin-top:52px!important;margin-bottom:52px!important}.my-xxl-14{margin-top:56px!important;margin-bottom:56px!important}.my-xxl-15{margin-top:60px!important;margin-bottom:60px!important}.my-xxl-16{margin-top:64px!important;margin-bottom:64px!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:4px!important}.mt-xxl-2{margin-top:8px!important}.mt-xxl-3{margin-top:12px!important}.mt-xxl-4{margin-top:16px!important}.mt-xxl-5{margin-top:20px!important}.mt-xxl-6{margin-top:24px!important}.mt-xxl-7{margin-top:28px!important}.mt-xxl-8{margin-top:32px!important}.mt-xxl-9{margin-top:36px!important}.mt-xxl-10{margin-top:40px!important}.mt-xxl-11{margin-top:44px!important}.mt-xxl-12{margin-top:48px!important}.mt-xxl-13{margin-top:52px!important}.mt-xxl-14{margin-top:56px!important}.mt-xxl-15{margin-top:60px!important}.mt-xxl-16{margin-top:64px!important}.mt-xxl-auto{margin-top:auto!important}.mr-xxl-0{margin-right:0!important}.mr-xxl-1{margin-right:4px!important}.mr-xxl-2{margin-right:8px!important}.mr-xxl-3{margin-right:12px!important}.mr-xxl-4{margin-right:16px!important}.mr-xxl-5{margin-right:20px!important}.mr-xxl-6{margin-right:24px!important}.mr-xxl-7{margin-right:28px!important}.mr-xxl-8{margin-right:32px!important}.mr-xxl-9{margin-right:36px!important}.mr-xxl-10{margin-right:40px!important}.mr-xxl-11{margin-right:44px!important}.mr-xxl-12{margin-right:48px!important}.mr-xxl-13{margin-right:52px!important}.mr-xxl-14{margin-right:56px!important}.mr-xxl-15{margin-right:60px!important}.mr-xxl-16{margin-right:64px!important}.mr-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:4px!important}.mb-xxl-2{margin-bottom:8px!important}.mb-xxl-3{margin-bottom:12px!important}.mb-xxl-4{margin-bottom:16px!important}.mb-xxl-5{margin-bottom:20px!important}.mb-xxl-6{margin-bottom:24px!important}.mb-xxl-7{margin-bottom:28px!important}.mb-xxl-8{margin-bottom:32px!important}.mb-xxl-9{margin-bottom:36px!important}.mb-xxl-10{margin-bottom:40px!important}.mb-xxl-11{margin-bottom:44px!important}.mb-xxl-12{margin-bottom:48px!important}.mb-xxl-13{margin-bottom:52px!important}.mb-xxl-14{margin-bottom:56px!important}.mb-xxl-15{margin-bottom:60px!important}.mb-xxl-16{margin-bottom:64px!important}.mb-xxl-auto{margin-bottom:auto!important}.ml-xxl-0{margin-left:0!important}.ml-xxl-1{margin-left:4px!important}.ml-xxl-2{margin-left:8px!important}.ml-xxl-3{margin-left:12px!important}.ml-xxl-4{margin-left:16px!important}.ml-xxl-5{margin-left:20px!important}.ml-xxl-6{margin-left:24px!important}.ml-xxl-7{margin-left:28px!important}.ml-xxl-8{margin-left:32px!important}.ml-xxl-9{margin-left:36px!important}.ml-xxl-10{margin-left:40px!important}.ml-xxl-11{margin-left:44px!important}.ml-xxl-12{margin-left:48px!important}.ml-xxl-13{margin-left:52px!important}.ml-xxl-14{margin-left:56px!important}.ml-xxl-15{margin-left:60px!important}.ml-xxl-16{margin-left:64px!important}.ml-xxl-auto{margin-left:auto!important}.ms-xxl-0{margin-inline-start:0px!important}.ms-xxl-1{margin-inline-start:4px!important}.ms-xxl-2{margin-inline-start:8px!important}.ms-xxl-3{margin-inline-start:12px!important}.ms-xxl-4{margin-inline-start:16px!important}.ms-xxl-5{margin-inline-start:20px!important}.ms-xxl-6{margin-inline-start:24px!important}.ms-xxl-7{margin-inline-start:28px!important}.ms-xxl-8{margin-inline-start:32px!important}.ms-xxl-9{margin-inline-start:36px!important}.ms-xxl-10{margin-inline-start:40px!important}.ms-xxl-11{margin-inline-start:44px!important}.ms-xxl-12{margin-inline-start:48px!important}.ms-xxl-13{margin-inline-start:52px!important}.ms-xxl-14{margin-inline-start:56px!important}.ms-xxl-15{margin-inline-start:60px!important}.ms-xxl-16{margin-inline-start:64px!important}.ms-xxl-auto{margin-inline-start:auto!important}.me-xxl-0{margin-inline-end:0px!important}.me-xxl-1{margin-inline-end:4px!important}.me-xxl-2{margin-inline-end:8px!important}.me-xxl-3{margin-inline-end:12px!important}.me-xxl-4{margin-inline-end:16px!important}.me-xxl-5{margin-inline-end:20px!important}.me-xxl-6{margin-inline-end:24px!important}.me-xxl-7{margin-inline-end:28px!important}.me-xxl-8{margin-inline-end:32px!important}.me-xxl-9{margin-inline-end:36px!important}.me-xxl-10{margin-inline-end:40px!important}.me-xxl-11{margin-inline-end:44px!important}.me-xxl-12{margin-inline-end:48px!important}.me-xxl-13{margin-inline-end:52px!important}.me-xxl-14{margin-inline-end:56px!important}.me-xxl-15{margin-inline-end:60px!important}.me-xxl-16{margin-inline-end:64px!important}.me-xxl-auto{margin-inline-end:auto!important}.ma-xxl-n1{margin:-4px!important}.ma-xxl-n2{margin:-8px!important}.ma-xxl-n3{margin:-12px!important}.ma-xxl-n4{margin:-16px!important}.ma-xxl-n5{margin:-20px!important}.ma-xxl-n6{margin:-24px!important}.ma-xxl-n7{margin:-28px!important}.ma-xxl-n8{margin:-32px!important}.ma-xxl-n9{margin:-36px!important}.ma-xxl-n10{margin:-40px!important}.ma-xxl-n11{margin:-44px!important}.ma-xxl-n12{margin:-48px!important}.ma-xxl-n13{margin:-52px!important}.ma-xxl-n14{margin:-56px!important}.ma-xxl-n15{margin:-60px!important}.ma-xxl-n16{margin:-64px!important}.mx-xxl-n1{margin-right:-4px!important;margin-left:-4px!important}.mx-xxl-n2{margin-right:-8px!important;margin-left:-8px!important}.mx-xxl-n3{margin-right:-12px!important;margin-left:-12px!important}.mx-xxl-n4{margin-right:-16px!important;margin-left:-16px!important}.mx-xxl-n5{margin-right:-20px!important;margin-left:-20px!important}.mx-xxl-n6{margin-right:-24px!important;margin-left:-24px!important}.mx-xxl-n7{margin-right:-28px!important;margin-left:-28px!important}.mx-xxl-n8{margin-right:-32px!important;margin-left:-32px!important}.mx-xxl-n9{margin-right:-36px!important;margin-left:-36px!important}.mx-xxl-n10{margin-right:-40px!important;margin-left:-40px!important}.mx-xxl-n11{margin-right:-44px!important;margin-left:-44px!important}.mx-xxl-n12{margin-right:-48px!important;margin-left:-48px!important}.mx-xxl-n13{margin-right:-52px!important;margin-left:-52px!important}.mx-xxl-n14{margin-right:-56px!important;margin-left:-56px!important}.mx-xxl-n15{margin-right:-60px!important;margin-left:-60px!important}.mx-xxl-n16{margin-right:-64px!important;margin-left:-64px!important}.my-xxl-n1{margin-top:-4px!important;margin-bottom:-4px!important}.my-xxl-n2{margin-top:-8px!important;margin-bottom:-8px!important}.my-xxl-n3{margin-top:-12px!important;margin-bottom:-12px!important}.my-xxl-n4{margin-top:-16px!important;margin-bottom:-16px!important}.my-xxl-n5{margin-top:-20px!important;margin-bottom:-20px!important}.my-xxl-n6{margin-top:-24px!important;margin-bottom:-24px!important}.my-xxl-n7{margin-top:-28px!important;margin-bottom:-28px!important}.my-xxl-n8{margin-top:-32px!important;margin-bottom:-32px!important}.my-xxl-n9{margin-top:-36px!important;margin-bottom:-36px!important}.my-xxl-n10{margin-top:-40px!important;margin-bottom:-40px!important}.my-xxl-n11{margin-top:-44px!important;margin-bottom:-44px!important}.my-xxl-n12{margin-top:-48px!important;margin-bottom:-48px!important}.my-xxl-n13{margin-top:-52px!important;margin-bottom:-52px!important}.my-xxl-n14{margin-top:-56px!important;margin-bottom:-56px!important}.my-xxl-n15{margin-top:-60px!important;margin-bottom:-60px!important}.my-xxl-n16{margin-top:-64px!important;margin-bottom:-64px!important}.mt-xxl-n1{margin-top:-4px!important}.mt-xxl-n2{margin-top:-8px!important}.mt-xxl-n3{margin-top:-12px!important}.mt-xxl-n4{margin-top:-16px!important}.mt-xxl-n5{margin-top:-20px!important}.mt-xxl-n6{margin-top:-24px!important}.mt-xxl-n7{margin-top:-28px!important}.mt-xxl-n8{margin-top:-32px!important}.mt-xxl-n9{margin-top:-36px!important}.mt-xxl-n10{margin-top:-40px!important}.mt-xxl-n11{margin-top:-44px!important}.mt-xxl-n12{margin-top:-48px!important}.mt-xxl-n13{margin-top:-52px!important}.mt-xxl-n14{margin-top:-56px!important}.mt-xxl-n15{margin-top:-60px!important}.mt-xxl-n16{margin-top:-64px!important}.mr-xxl-n1{margin-right:-4px!important}.mr-xxl-n2{margin-right:-8px!important}.mr-xxl-n3{margin-right:-12px!important}.mr-xxl-n4{margin-right:-16px!important}.mr-xxl-n5{margin-right:-20px!important}.mr-xxl-n6{margin-right:-24px!important}.mr-xxl-n7{margin-right:-28px!important}.mr-xxl-n8{margin-right:-32px!important}.mr-xxl-n9{margin-right:-36px!important}.mr-xxl-n10{margin-right:-40px!important}.mr-xxl-n11{margin-right:-44px!important}.mr-xxl-n12{margin-right:-48px!important}.mr-xxl-n13{margin-right:-52px!important}.mr-xxl-n14{margin-right:-56px!important}.mr-xxl-n15{margin-right:-60px!important}.mr-xxl-n16{margin-right:-64px!important}.mb-xxl-n1{margin-bottom:-4px!important}.mb-xxl-n2{margin-bottom:-8px!important}.mb-xxl-n3{margin-bottom:-12px!important}.mb-xxl-n4{margin-bottom:-16px!important}.mb-xxl-n5{margin-bottom:-20px!important}.mb-xxl-n6{margin-bottom:-24px!important}.mb-xxl-n7{margin-bottom:-28px!important}.mb-xxl-n8{margin-bottom:-32px!important}.mb-xxl-n9{margin-bottom:-36px!important}.mb-xxl-n10{margin-bottom:-40px!important}.mb-xxl-n11{margin-bottom:-44px!important}.mb-xxl-n12{margin-bottom:-48px!important}.mb-xxl-n13{margin-bottom:-52px!important}.mb-xxl-n14{margin-bottom:-56px!important}.mb-xxl-n15{margin-bottom:-60px!important}.mb-xxl-n16{margin-bottom:-64px!important}.ml-xxl-n1{margin-left:-4px!important}.ml-xxl-n2{margin-left:-8px!important}.ml-xxl-n3{margin-left:-12px!important}.ml-xxl-n4{margin-left:-16px!important}.ml-xxl-n5{margin-left:-20px!important}.ml-xxl-n6{margin-left:-24px!important}.ml-xxl-n7{margin-left:-28px!important}.ml-xxl-n8{margin-left:-32px!important}.ml-xxl-n9{margin-left:-36px!important}.ml-xxl-n10{margin-left:-40px!important}.ml-xxl-n11{margin-left:-44px!important}.ml-xxl-n12{margin-left:-48px!important}.ml-xxl-n13{margin-left:-52px!important}.ml-xxl-n14{margin-left:-56px!important}.ml-xxl-n15{margin-left:-60px!important}.ml-xxl-n16{margin-left:-64px!important}.ms-xxl-n1{margin-inline-start:-4px!important}.ms-xxl-n2{margin-inline-start:-8px!important}.ms-xxl-n3{margin-inline-start:-12px!important}.ms-xxl-n4{margin-inline-start:-16px!important}.ms-xxl-n5{margin-inline-start:-20px!important}.ms-xxl-n6{margin-inline-start:-24px!important}.ms-xxl-n7{margin-inline-start:-28px!important}.ms-xxl-n8{margin-inline-start:-32px!important}.ms-xxl-n9{margin-inline-start:-36px!important}.ms-xxl-n10{margin-inline-start:-40px!important}.ms-xxl-n11{margin-inline-start:-44px!important}.ms-xxl-n12{margin-inline-start:-48px!important}.ms-xxl-n13{margin-inline-start:-52px!important}.ms-xxl-n14{margin-inline-start:-56px!important}.ms-xxl-n15{margin-inline-start:-60px!important}.ms-xxl-n16{margin-inline-start:-64px!important}.me-xxl-n1{margin-inline-end:-4px!important}.me-xxl-n2{margin-inline-end:-8px!important}.me-xxl-n3{margin-inline-end:-12px!important}.me-xxl-n4{margin-inline-end:-16px!important}.me-xxl-n5{margin-inline-end:-20px!important}.me-xxl-n6{margin-inline-end:-24px!important}.me-xxl-n7{margin-inline-end:-28px!important}.me-xxl-n8{margin-inline-end:-32px!important}.me-xxl-n9{margin-inline-end:-36px!important}.me-xxl-n10{margin-inline-end:-40px!important}.me-xxl-n11{margin-inline-end:-44px!important}.me-xxl-n12{margin-inline-end:-48px!important}.me-xxl-n13{margin-inline-end:-52px!important}.me-xxl-n14{margin-inline-end:-56px!important}.me-xxl-n15{margin-inline-end:-60px!important}.me-xxl-n16{margin-inline-end:-64px!important}.pa-xxl-0{padding:0!important}.pa-xxl-1{padding:4px!important}.pa-xxl-2{padding:8px!important}.pa-xxl-3{padding:12px!important}.pa-xxl-4{padding:16px!important}.pa-xxl-5{padding:20px!important}.pa-xxl-6{padding:24px!important}.pa-xxl-7{padding:28px!important}.pa-xxl-8{padding:32px!important}.pa-xxl-9{padding:36px!important}.pa-xxl-10{padding:40px!important}.pa-xxl-11{padding:44px!important}.pa-xxl-12{padding:48px!important}.pa-xxl-13{padding:52px!important}.pa-xxl-14{padding:56px!important}.pa-xxl-15{padding:60px!important}.pa-xxl-16{padding:64px!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:4px!important;padding-left:4px!important}.px-xxl-2{padding-right:8px!important;padding-left:8px!important}.px-xxl-3{padding-right:12px!important;padding-left:12px!important}.px-xxl-4{padding-right:16px!important;padding-left:16px!important}.px-xxl-5{padding-right:20px!important;padding-left:20px!important}.px-xxl-6{padding-right:24px!important;padding-left:24px!important}.px-xxl-7{padding-right:28px!important;padding-left:28px!important}.px-xxl-8{padding-right:32px!important;padding-left:32px!important}.px-xxl-9{padding-right:36px!important;padding-left:36px!important}.px-xxl-10{padding-right:40px!important;padding-left:40px!important}.px-xxl-11{padding-right:44px!important;padding-left:44px!important}.px-xxl-12{padding-right:48px!important;padding-left:48px!important}.px-xxl-13{padding-right:52px!important;padding-left:52px!important}.px-xxl-14{padding-right:56px!important;padding-left:56px!important}.px-xxl-15{padding-right:60px!important;padding-left:60px!important}.px-xxl-16{padding-right:64px!important;padding-left:64px!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:4px!important;padding-bottom:4px!important}.py-xxl-2{padding-top:8px!important;padding-bottom:8px!important}.py-xxl-3{padding-top:12px!important;padding-bottom:12px!important}.py-xxl-4{padding-top:16px!important;padding-bottom:16px!important}.py-xxl-5{padding-top:20px!important;padding-bottom:20px!important}.py-xxl-6{padding-top:24px!important;padding-bottom:24px!important}.py-xxl-7{padding-top:28px!important;padding-bottom:28px!important}.py-xxl-8{padding-top:32px!important;padding-bottom:32px!important}.py-xxl-9{padding-top:36px!important;padding-bottom:36px!important}.py-xxl-10{padding-top:40px!important;padding-bottom:40px!important}.py-xxl-11{padding-top:44px!important;padding-bottom:44px!important}.py-xxl-12{padding-top:48px!important;padding-bottom:48px!important}.py-xxl-13{padding-top:52px!important;padding-bottom:52px!important}.py-xxl-14{padding-top:56px!important;padding-bottom:56px!important}.py-xxl-15{padding-top:60px!important;padding-bottom:60px!important}.py-xxl-16{padding-top:64px!important;padding-bottom:64px!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:4px!important}.pt-xxl-2{padding-top:8px!important}.pt-xxl-3{padding-top:12px!important}.pt-xxl-4{padding-top:16px!important}.pt-xxl-5{padding-top:20px!important}.pt-xxl-6{padding-top:24px!important}.pt-xxl-7{padding-top:28px!important}.pt-xxl-8{padding-top:32px!important}.pt-xxl-9{padding-top:36px!important}.pt-xxl-10{padding-top:40px!important}.pt-xxl-11{padding-top:44px!important}.pt-xxl-12{padding-top:48px!important}.pt-xxl-13{padding-top:52px!important}.pt-xxl-14{padding-top:56px!important}.pt-xxl-15{padding-top:60px!important}.pt-xxl-16{padding-top:64px!important}.pr-xxl-0{padding-right:0!important}.pr-xxl-1{padding-right:4px!important}.pr-xxl-2{padding-right:8px!important}.pr-xxl-3{padding-right:12px!important}.pr-xxl-4{padding-right:16px!important}.pr-xxl-5{padding-right:20px!important}.pr-xxl-6{padding-right:24px!important}.pr-xxl-7{padding-right:28px!important}.pr-xxl-8{padding-right:32px!important}.pr-xxl-9{padding-right:36px!important}.pr-xxl-10{padding-right:40px!important}.pr-xxl-11{padding-right:44px!important}.pr-xxl-12{padding-right:48px!important}.pr-xxl-13{padding-right:52px!important}.pr-xxl-14{padding-right:56px!important}.pr-xxl-15{padding-right:60px!important}.pr-xxl-16{padding-right:64px!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:4px!important}.pb-xxl-2{padding-bottom:8px!important}.pb-xxl-3{padding-bottom:12px!important}.pb-xxl-4{padding-bottom:16px!important}.pb-xxl-5{padding-bottom:20px!important}.pb-xxl-6{padding-bottom:24px!important}.pb-xxl-7{padding-bottom:28px!important}.pb-xxl-8{padding-bottom:32px!important}.pb-xxl-9{padding-bottom:36px!important}.pb-xxl-10{padding-bottom:40px!important}.pb-xxl-11{padding-bottom:44px!important}.pb-xxl-12{padding-bottom:48px!important}.pb-xxl-13{padding-bottom:52px!important}.pb-xxl-14{padding-bottom:56px!important}.pb-xxl-15{padding-bottom:60px!important}.pb-xxl-16{padding-bottom:64px!important}.pl-xxl-0{padding-left:0!important}.pl-xxl-1{padding-left:4px!important}.pl-xxl-2{padding-left:8px!important}.pl-xxl-3{padding-left:12px!important}.pl-xxl-4{padding-left:16px!important}.pl-xxl-5{padding-left:20px!important}.pl-xxl-6{padding-left:24px!important}.pl-xxl-7{padding-left:28px!important}.pl-xxl-8{padding-left:32px!important}.pl-xxl-9{padding-left:36px!important}.pl-xxl-10{padding-left:40px!important}.pl-xxl-11{padding-left:44px!important}.pl-xxl-12{padding-left:48px!important}.pl-xxl-13{padding-left:52px!important}.pl-xxl-14{padding-left:56px!important}.pl-xxl-15{padding-left:60px!important}.pl-xxl-16{padding-left:64px!important}.ps-xxl-0{padding-inline-start:0px!important}.ps-xxl-1{padding-inline-start:4px!important}.ps-xxl-2{padding-inline-start:8px!important}.ps-xxl-3{padding-inline-start:12px!important}.ps-xxl-4{padding-inline-start:16px!important}.ps-xxl-5{padding-inline-start:20px!important}.ps-xxl-6{padding-inline-start:24px!important}.ps-xxl-7{padding-inline-start:28px!important}.ps-xxl-8{padding-inline-start:32px!important}.ps-xxl-9{padding-inline-start:36px!important}.ps-xxl-10{padding-inline-start:40px!important}.ps-xxl-11{padding-inline-start:44px!important}.ps-xxl-12{padding-inline-start:48px!important}.ps-xxl-13{padding-inline-start:52px!important}.ps-xxl-14{padding-inline-start:56px!important}.ps-xxl-15{padding-inline-start:60px!important}.ps-xxl-16{padding-inline-start:64px!important}.pe-xxl-0{padding-inline-end:0px!important}.pe-xxl-1{padding-inline-end:4px!important}.pe-xxl-2{padding-inline-end:8px!important}.pe-xxl-3{padding-inline-end:12px!important}.pe-xxl-4{padding-inline-end:16px!important}.pe-xxl-5{padding-inline-end:20px!important}.pe-xxl-6{padding-inline-end:24px!important}.pe-xxl-7{padding-inline-end:28px!important}.pe-xxl-8{padding-inline-end:32px!important}.pe-xxl-9{padding-inline-end:36px!important}.pe-xxl-10{padding-inline-end:40px!important}.pe-xxl-11{padding-inline-end:44px!important}.pe-xxl-12{padding-inline-end:48px!important}.pe-xxl-13{padding-inline-end:52px!important}.pe-xxl-14{padding-inline-end:56px!important}.pe-xxl-15{padding-inline-end:60px!important}.pe-xxl-16{padding-inline-end:64px!important}.text-xxl-left{text-align:left!important}.text-xxl-right{text-align:right!important}.text-xxl-center{text-align:center!important}.text-xxl-justify{text-align:justify!important}.text-xxl-start{text-align:start!important}.text-xxl-end{text-align:end!important}.text-xxl-h1{font-size:6rem!important;font-weight:300;line-height:1;letter-spacing:-.015625em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xxl-h2{font-size:3.75rem!important;font-weight:300;line-height:1;letter-spacing:-.0083333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xxl-h3{font-size:3rem!important;font-weight:400;line-height:1.05;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xxl-h4{font-size:2.125rem!important;font-weight:400;line-height:1.175;letter-spacing:.0073529412em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xxl-h5{font-size:1.5rem!important;font-weight:400;line-height:1.333;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xxl-h6{font-size:1.25rem!important;font-weight:500;line-height:1.6;letter-spacing:.0125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xxl-subtitle-1{font-size:1rem!important;font-weight:400;line-height:1.75;letter-spacing:.009375em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xxl-subtitle-2{font-size:.875rem!important;font-weight:500;line-height:1.6;letter-spacing:.0071428571em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xxl-body-1{font-size:1rem!important;font-weight:400;line-height:1.5;letter-spacing:.03125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xxl-body-2{font-size:.875rem!important;font-weight:400;line-height:1.425;letter-spacing:.0178571429em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xxl-button{font-size:.875rem!important;font-weight:500;line-height:2.6;letter-spacing:.0892857143em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}.text-xxl-caption{font-size:.75rem!important;font-weight:400;line-height:1.667;letter-spacing:.0333333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xxl-overline{font-size:.75rem!important;font-weight:500;line-height:2.667;letter-spacing:.1666666667em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}.h-xxl-auto{height:auto!important}.h-xxl-screen{height:100vh!important}.h-xxl-0{height:0!important}.h-xxl-25{height:25%!important}.h-xxl-50{height:50%!important}.h-xxl-75{height:75%!important}.h-xxl-100{height:100%!important}.w-xxl-auto{width:auto!important}.w-xxl-0{width:0!important}.w-xxl-25{width:25%!important}.w-xxl-33{width:33%!important}.w-xxl-50{width:50%!important}.w-xxl-66{width:66%!important}.w-xxl-75{width:75%!important}.w-xxl-100{width:100%!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.float-print-none{float:none!important}.float-print-left{float:left!important}.float-print-right{float:right!important}.v-locale--is-rtl .float-print-end{float:left!important}.v-locale--is-rtl .float-print-start,.v-locale--is-ltr .float-print-end{float:right!important}.v-locale--is-ltr .float-print-start{float:left!important}}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,ui-sans-serif,system-ui,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:JetBrains Mono,ui-monospace,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}[type=text],input:where(:not([type])),[type=email],[type=url],[type=password],[type=number],[type=date],[type=datetime-local],[type=month],[type=search],[type=tel],[type=time],[type=week],[multiple],textarea,select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem;--tw-shadow: 0 0 #0000}[type=text]:focus,input:where(:not([type])):focus,[type=email]:focus,[type=url]:focus,[type=password]:focus,[type=number]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=month]:focus,[type=search]:focus,[type=tel]:focus,[type=time]:focus,[type=week]:focus,[multiple]:focus,textarea:focus,select:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-color:#2563eb}input::-moz-placeholder,textarea::-moz-placeholder{color:#6b7280;opacity:1}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{padding-top:0;padding-bottom:0}select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}[multiple],[size]:where(select:not([size="1"])){background-image:initial;background-position:initial;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#2563eb;background-color:#fff;border-color:#6b7280;border-width:1px;--tw-shadow: 0 0 #0000}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 2px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}[type=checkbox]:checked,[type=radio]:checked{border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}[type=checkbox]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e")}@media (forced-colors: active){[type=checkbox]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=radio]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e")}@media (forced-colors: active){[type=radio]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:checked:hover,[type=checkbox]:checked:focus,[type=radio]:checked:hover,[type=radio]:checked:focus{border-color:transparent;background-color:currentColor}[type=checkbox]:indeterminate{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}@media (forced-colors: active){[type=checkbox]:indeterminate{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:indeterminate:hover,[type=checkbox]:indeterminate:focus{border-color:transparent;background-color:currentColor}[type=file]{background:unset;border-color:inherit;border-width:0;border-radius:0;padding:0;font-size:unset;line-height:inherit}[type=file]:focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}html{font-family:Inter,ui-sans-serif,system-ui,sans-serif}body{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}::-webkit-scrollbar-thumb{border-radius:9999px;--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity, 1))}::-webkit-scrollbar-thumb:hover{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.form-input,.form-textarea,.form-select,.form-multiselect{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem;--tw-shadow: 0 0 #0000}.form-input:focus,.form-textarea:focus,.form-select:focus,.form-multiselect:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-color:#2563eb}.form-input::-moz-placeholder,.form-textarea::-moz-placeholder{color:#6b7280;opacity:1}.form-input::placeholder,.form-textarea::placeholder{color:#6b7280;opacity:1}.form-input::-webkit-datetime-edit-fields-wrapper{padding:0}.form-input::-webkit-date-and-time-value{min-height:1.5em;text-align:inherit}.form-input::-webkit-datetime-edit{display:inline-flex}.form-input::-webkit-datetime-edit,.form-input::-webkit-datetime-edit-year-field,.form-input::-webkit-datetime-edit-month-field,.form-input::-webkit-datetime-edit-day-field,.form-input::-webkit-datetime-edit-hour-field,.form-input::-webkit-datetime-edit-minute-field,.form-input::-webkit-datetime-edit-second-field,.form-input::-webkit-datetime-edit-millisecond-field,.form-input::-webkit-datetime-edit-meridiem-field{padding-top:0;padding-bottom:0}.form-select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}.form-select:where([size]:not([size="1"])){background-image:initial;background-position:initial;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}.form-checkbox,.form-radio{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#2563eb;background-color:#fff;border-color:#6b7280;border-width:1px;--tw-shadow: 0 0 #0000}.form-checkbox{border-radius:0}.form-checkbox:focus,.form-radio:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 2px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.form-checkbox:checked,.form-radio:checked{border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}.form-checkbox:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e")}@media (forced-colors: active){.form-checkbox:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}.form-checkbox:checked:hover,.form-checkbox:checked:focus,.form-radio:checked:hover,.form-radio:checked:focus{border-color:transparent;background-color:currentColor}.form-checkbox:indeterminate{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}@media (forced-colors: active){.form-checkbox:indeterminate{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}.form-checkbox:indeterminate:hover,.form-checkbox:indeterminate:focus{border-color:transparent;background-color:currentColor}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows) / 10%),0 3px rgb(var(--tw-prose-kbd-shadows) / 10%);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body: #374151;--tw-prose-headings: #111827;--tw-prose-lead: #4b5563;--tw-prose-links: #111827;--tw-prose-bold: #111827;--tw-prose-counters: #6b7280;--tw-prose-bullets: #d1d5db;--tw-prose-hr: #e5e7eb;--tw-prose-quotes: #111827;--tw-prose-quote-borders: #e5e7eb;--tw-prose-captions: #6b7280;--tw-prose-kbd: #111827;--tw-prose-kbd-shadows: 17 24 39;--tw-prose-code: #111827;--tw-prose-pre-code: #e5e7eb;--tw-prose-pre-bg: #1f2937;--tw-prose-th-borders: #d1d5db;--tw-prose-td-borders: #e5e7eb;--tw-prose-invert-body: #d1d5db;--tw-prose-invert-headings: #fff;--tw-prose-invert-lead: #9ca3af;--tw-prose-invert-links: #fff;--tw-prose-invert-bold: #fff;--tw-prose-invert-counters: #9ca3af;--tw-prose-invert-bullets: #4b5563;--tw-prose-invert-hr: #374151;--tw-prose-invert-quotes: #f3f4f6;--tw-prose-invert-quote-borders: #374151;--tw-prose-invert-captions: #9ca3af;--tw-prose-invert-kbd: #fff;--tw-prose-invert-kbd-shadows: 255 255 255;--tw-prose-invert-code: #fff;--tw-prose-invert-pre-code: #d1d5db;--tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);--tw-prose-invert-th-borders: #4b5563;--tw-prose-invert-td-borders: #374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-sm{font-size:.875rem;line-height:1.7142857}.prose-sm :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em;margin-bottom:1.1428571em}.prose-sm :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2857143em;line-height:1.5555556;margin-top:.8888889em;margin-bottom:.8888889em}.prose-sm :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em;margin-bottom:1.3333333em;padding-inline-start:1.1111111em}.prose-sm :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.1428571em;margin-top:0;margin-bottom:.8em;line-height:1.2}.prose-sm :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.4285714em;margin-top:1.6em;margin-bottom:.8em;line-height:1.4}.prose-sm :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2857143em;margin-top:1.5555556em;margin-bottom:.4444444em;line-height:1.5555556}.prose-sm :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.4285714em;margin-bottom:.5714286em;line-height:1.4285714}.prose-sm :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.7142857em;margin-bottom:1.7142857em}.prose-sm :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.7142857em;margin-bottom:1.7142857em}.prose-sm :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose-sm :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.7142857em;margin-bottom:1.7142857em}.prose-sm :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;border-radius:.3125rem;padding-top:.1428571em;padding-inline-end:.3571429em;padding-bottom:.1428571em;padding-inline-start:.3571429em}.prose-sm :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em}.prose-sm :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-sm :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em}.prose-sm :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;line-height:1.6666667;margin-top:1.6666667em;margin-bottom:1.6666667em;border-radius:.25rem;padding-top:.6666667em;padding-inline-end:1em;padding-bottom:.6666667em;padding-inline-start:1em}.prose-sm :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em;margin-bottom:1.1428571em;padding-inline-start:1.5714286em}.prose-sm :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em;margin-bottom:1.1428571em;padding-inline-start:1.5714286em}.prose-sm :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.2857143em;margin-bottom:.2857143em}.prose-sm :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.4285714em}.prose-sm :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.4285714em}.prose-sm :where(.prose-sm>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5714286em;margin-bottom:.5714286em}.prose-sm :where(.prose-sm>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(.prose-sm>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em}.prose-sm :where(.prose-sm>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(.prose-sm>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em}.prose-sm :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5714286em;margin-bottom:.5714286em}.prose-sm :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em;margin-bottom:1.1428571em}.prose-sm :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.2857143em;padding-inline-start:1.5714286em}.prose-sm :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2.8571429em;margin-bottom:2.8571429em}.prose-sm :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;line-height:1.5}.prose-sm :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:1em;padding-bottom:.6666667em;padding-inline-start:1em}.prose-sm :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-sm :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-sm :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.6666667em;padding-inline-end:1em;padding-bottom:.6666667em;padding-inline-start:1em}.prose-sm :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-sm :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-sm :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.7142857em;margin-bottom:1.7142857em}.prose-sm :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose-sm :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;line-height:1.3333333;margin-top:.6666667em}.prose-sm :where(.prose-sm>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(.prose-sm>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.atlas-card{border-radius:.25rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding:1.5rem;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.invisible{visibility:hidden}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.inset-4{top:1rem;right:1rem;bottom:1rem;left:1rem}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.-left-\[42px\]{left:-42px}.-right-1{right:-.25rem}.-right-2{right:-.5rem}.-top-1{top:-.25rem}.bottom-0{bottom:0}.bottom-0\.5{bottom:.125rem}.bottom-2{bottom:.5rem}.bottom-4{bottom:1rem}.bottom-6{bottom:1.5rem}.bottom-\[4px\]{bottom:4px}.left-0{left:0}.left-1{left:.25rem}.left-1\/2{left:50%}.left-6{left:1.5rem}.left-\[45\%\]{left:45%}.left-full{left:100%}.right-0{right:0}.right-1{right:.25rem}.right-2{right:.5rem}.top-0{top:0}.top-1{top:.25rem}.top-1\/2{top:50%}.top-10{top:2.5rem}.top-20{top:5rem}.top-4{top:1rem}.top-8{top:2rem}.\!z-20{z-index:20!important}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.z-\[100\]{z-index:100}.z-\[2147483647\]{z-index:2147483647}.z-\[50\]{z-index:50}.col-span-1{grid-column:span 1 / span 1}.col-span-2{grid-column:span 2 / span 2}.col-span-5{grid-column:span 5 / span 5}.col-span-full{grid-column:1 / -1}.m-0{margin:0}.m-2{margin:.5rem}.m-4{margin:1rem}.-mx-1\.5{margin-left:-.375rem;margin-right:-.375rem}.-my-1\.5{margin-top:-.375rem;margin-bottom:-.375rem}.mx-0\.5{margin-left:.125rem;margin-right:.125rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.my-8{margin-top:2rem;margin-bottom:2rem}.-mb-\[\.1rem\]{margin-bottom:-.1rem}.-mb-\[\.2rem\]{margin-bottom:-.2rem}.-mb-px{margin-bottom:-1px}.-ml-1{margin-left:-.25rem}.-mr-\[\.1rem\]{margin-right:-.1rem}.-mr-\[\.2rem\]{margin-right:-.2rem}.-mt-1{margin-top:-.25rem}.-mt-5{margin-top:-1.25rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-2\.5{margin-bottom:.625rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.me-2{margin-inline-end:.5rem}.ml-0{margin-left:0}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-6{margin-left:1.5rem}.ml-\[3px\]{margin-left:3px}.ml-auto{margin-left:auto}.mr-0{margin-right:0}.mr-0\.5{margin-right:.125rem}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mr-\[11px\]{margin-right:11px}.mr-auto{margin-right:auto}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-\[1px\]{margin-top:1px}.mt-auto{margin-top:auto}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.aspect-square{aspect-ratio:1 / 1}.size-4{width:1rem;height:1rem}.size-5{width:1.25rem;height:1.25rem}.size-6{width:1.5rem;height:1.5rem}.size-7{width:1.75rem;height:1.75rem}.h-0\.5{height:.125rem}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-20{height:5rem}.h-24{height:6rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-64{height:16rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-\[13\.5px\]{height:13.5px}.h-\[150px\]{height:150px}.h-\[15px\]{height:15px}.h-\[250px\]{height:250px}.h-\[2px\]{height:2px}.h-\[50px\]{height:50px}.h-\[5px\]{height:5px}.h-\[72px\]{height:72px}.h-\[80\%\]{height:80%}.h-\[8px\]{height:8px}.h-\[90\%\]{height:90%}.h-\[9px\]{height:9px}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-0{max-height:0px}.max-h-4{max-height:1rem}.max-h-6{max-height:1.5rem}.max-h-60{max-height:15rem}.max-h-64{max-height:16rem}.max-h-80{max-height:20rem}.max-h-96{max-height:24rem}.max-h-\[140px\]{max-height:140px}.max-h-\[15rem\]{max-height:15rem}.max-h-\[200px\]{max-height:200px}.max-h-\[300px\]{max-height:300px}.max-h-\[50vh\]{max-height:50vh}.max-h-screen{max-height:100vh}.min-h-4{min-height:1rem}.min-h-96{min-height:24rem}.min-h-\[120px\]{min-height:120px}.min-h-\[200px\]{min-height:200px}.min-h-\[300px\]{min-height:300px}.min-h-\[400px\]{min-height:400px}.min-h-\[4rem\]{min-height:4rem}.min-h-\[500px\]{min-height:500px}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.\!w-full{width:100%!important}.w-0{width:0px}.w-0\.5{width:.125rem}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-20{width:5rem}.w-24{width:6rem}.w-28{width:7rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:1rem}.w-40{width:10rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-60{width:15rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-80{width:20rem}.w-\[100\%\]{width:100%}.w-\[13\.5px\]{width:13.5px}.w-\[14rem\]{width:14rem}.w-\[15px\]{width:15px}.w-\[20\%\]{width:20%}.w-\[26px\]{width:26px}.w-\[2px\]{width:2px}.w-\[5px\]{width:5px}.w-\[90\%\]{width:90%}.w-\[9px\]{width:9px}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.w-px{width:1px}.\!min-w-\[140px\]{min-width:140px!important}.min-w-0{min-width:0px}.min-w-40{min-width:10rem}.min-w-48{min-width:12rem}.min-w-72{min-width:18rem}.min-w-\[--reka-combobox-trigger-width\]{min-width:var(--reka-combobox-trigger-width)}.min-w-\[1rem\]{min-width:1rem}.min-w-\[280px\]{min-width:280px}.min-w-\[300px\]{min-width:300px}.min-w-\[400px\]{min-width:400px}.min-w-\[596px\]{min-width:596px}.min-w-\[600px\]{min-width:600px}.min-w-\[6rem\]{min-width:6rem}.min-w-full{min-width:100%}.max-w-2xl{max-width:42rem}.max-w-32{max-width:8rem}.max-w-3xl{max-width:48rem}.max-w-40{max-width:10rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-6xl{max-width:72rem}.max-w-7xl{max-width:80rem}.max-w-\[400px\]{max-width:400px}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-screen-xl{max-width:1280px}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-auto{flex:1 1 auto}.flex-shrink-0,.shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.origin-top{transform-origin:top}.origin-top-left{transform-origin:top left}.origin-top-right{transform-origin:top right}.-translate-x-1\/2,.-translate-x-2\/4{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2,.-translate-y-2\/4{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-2\.5{--tw-translate-x: .625rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-3{--tw-translate-x: .75rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-1{--tw-translate-y: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rotate-90{--tw-rotate: -90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-90{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes ping{75%,to{transform:scale(2);opacity:0}}.animate-ping{animation:ping 1s cubic-bezier(0,0,.2,1) infinite}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-col-resize{cursor:col-resize}.cursor-crosshair{cursor:crosshair}.cursor-default{cursor:default}.cursor-help{cursor:help}.cursor-move{cursor:move}.cursor-not-allowed{cursor:not-allowed}.cursor-nw-resize{cursor:nw-resize}.cursor-pointer{cursor:pointer}.cursor-row-resize{cursor:row-resize}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-none{resize:none}.resize{resize:both}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.grid-rows-5{grid-template-rows:repeat(5,minmax(0,1fr))}.grid-rows-6{grid-template-rows:repeat(6,minmax(0,1fr))}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-\[10px\]{gap:10px}.gap-px{gap:1px}.gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-6{row-gap:1.5rem}.-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(-.5rem * var(--tw-space-x-reverse));margin-left:calc(-.5rem * calc(1 - var(--tw-space-x-reverse)))}.-space-x-px>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(-1px * var(--tw-space-x-reverse));margin-left:calc(-1px * calc(1 - var(--tw-space-x-reverse)))}.space-x-0\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.125rem * var(--tw-space-x-reverse));margin-left:calc(.125rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-1\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.375rem * var(--tw-space-x-reverse));margin-left:calc(.375rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-2\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.625rem * var(--tw-space-x-reverse));margin-left:calc(.625rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.75rem * var(--tw-space-x-reverse));margin-left:calc(.75rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-3\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.875rem * var(--tw-space-x-reverse));margin-left:calc(.875rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1.5rem * var(--tw-space-x-reverse));margin-left:calc(1.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(2rem * var(--tw-space-x-reverse));margin-left:calc(2rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.space-y-\[10px\]>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(10px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(10px * var(--tw-space-y-reverse))}.divide-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse: 0;border-right-width:calc(1px * var(--tw-divide-x-reverse));border-left-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(229 231 235 / var(--tw-divide-opacity, 1))}.divide-gray-300>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(209 213 219 / var(--tw-divide-opacity, 1))}.self-end{align-self:flex-end}.self-center{align-self:center}.self-stretch{align-self:stretch}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-scroll{overflow:scroll}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.overflow-y-scroll{overflow-y:scroll}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-\[10px\]{border-radius:10px}.rounded-\[2px\]{border-radius:2px}.rounded-\[4px\]{border-radius:4px}.rounded-\[5px\]{border-radius:5px}.rounded-\[6px\]{border-radius:6px}.rounded-\[8px\]{border-radius:8px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-none{border-radius:0}.rounded-sm{border-radius:.125rem}.rounded-xl{border-radius:.75rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-b-\[2px\]{border-bottom-right-radius:2px;border-bottom-left-radius:2px}.rounded-b-lg{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-l-md{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-r-md{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}.rounded-r-none{border-top-right-radius:0;border-bottom-right-radius:0}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.rounded-bl-lg{border-bottom-left-radius:.5rem}.rounded-br-lg{border-bottom-right-radius:.5rem}.rounded-tl-lg{border-top-left-radius:.5rem}.rounded-tr-lg{border-top-right-radius:.5rem}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-\[0\.5px\]{border-width:.5px}.border-\[1px\]{border-width:1px}.border-\[3px\]{border-width:3px}.border-b{border-bottom-width:1px}.border-b-0{border-bottom-width:0px}.border-b-2{border-bottom-width:2px}.border-b-4{border-bottom-width:4px}.border-b-\[1px\]{border-bottom-width:1px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-l-4{border-left-width:4px}.border-l-\[1px\]{border-left-width:1px}.border-r{border-right-width:1px}.border-r-0{border-right-width:0px}.border-r-4{border-right-width:4px}.border-r-\[1px\]{border-right-width:1px}.border-t{border-top-width:1px}.border-t-0{border-top-width:0px}.border-t-4{border-top-width:4px}.border-t-\[0\.5px\]{border-top-width:.5px}.border-t-\[1px\]{border-top-width:1px}.border-dashed{border-style:dashed}.border-none{border-style:none}.border-\[--surface-gray-2\]{border-color:var(--surface-gray-2)}.border-amber-200{--tw-border-opacity: 1;border-color:rgb(253 230 138 / var(--tw-border-opacity, 1))}.border-amber-600{--tw-border-opacity: 1;border-color:rgb(217 119 6 / var(--tw-border-opacity, 1))}.border-blue-200{--tw-border-opacity: 1;border-color:rgb(191 219 254 / var(--tw-border-opacity, 1))}.border-blue-300{--tw-border-opacity: 1;border-color:rgb(147 197 253 / var(--tw-border-opacity, 1))}.border-blue-400{--tw-border-opacity: 1;border-color:rgb(96 165 250 / var(--tw-border-opacity, 1))}.border-blue-500{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.border-blue-600{--tw-border-opacity: 1;border-color:rgb(37 99 235 / var(--tw-border-opacity, 1))}.border-cyan-600{--tw-border-opacity: 1;border-color:rgb(8 145 178 / var(--tw-border-opacity, 1))}.border-error-200{--tw-border-opacity: 1;border-color:rgb(239 154 154 / var(--tw-border-opacity, 1))}.border-error-300{--tw-border-opacity: 1;border-color:rgb(229 115 115 / var(--tw-border-opacity, 1))}.border-error-500{--tw-border-opacity: 1;border-color:rgb(244 67 54 / var(--tw-border-opacity, 1))}.border-gray-100{--tw-border-opacity: 1;border-color:rgb(243 244 246 / var(--tw-border-opacity, 1))}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.border-gray-400{--tw-border-opacity: 1;border-color:rgb(156 163 175 / var(--tw-border-opacity, 1))}.border-gray-800{--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity, 1))}.border-green-200{--tw-border-opacity: 1;border-color:rgb(187 247 208 / var(--tw-border-opacity, 1))}.border-green-300{--tw-border-opacity: 1;border-color:rgb(134 239 172 / var(--tw-border-opacity, 1))}.border-green-400{--tw-border-opacity: 1;border-color:rgb(74 222 128 / var(--tw-border-opacity, 1))}.border-green-600{--tw-border-opacity: 1;border-color:rgb(22 163 74 / var(--tw-border-opacity, 1))}.border-indigo-200{--tw-border-opacity: 1;border-color:rgb(199 210 254 / var(--tw-border-opacity, 1))}.border-info-200{--tw-border-opacity: 1;border-color:rgb(129 212 250 / var(--tw-border-opacity, 1))}.border-orange-200{--tw-border-opacity: 1;border-color:rgb(254 215 170 / var(--tw-border-opacity, 1))}.border-orange-600{--tw-border-opacity: 1;border-color:rgb(234 88 12 / var(--tw-border-opacity, 1))}.border-pink-600{--tw-border-opacity: 1;border-color:rgb(219 39 119 / var(--tw-border-opacity, 1))}.border-primary-200{--tw-border-opacity: 1;border-color:rgb(153 246 228 / var(--tw-border-opacity, 1))}.border-primary-300{--tw-border-opacity: 1;border-color:rgb(94 234 212 / var(--tw-border-opacity, 1))}.border-primary-500{--tw-border-opacity: 1;border-color:rgb(20 184 166 / var(--tw-border-opacity, 1))}.border-primary-600{--tw-border-opacity: 1;border-color:rgb(13 148 136 / var(--tw-border-opacity, 1))}.border-purple-200{--tw-border-opacity: 1;border-color:rgb(233 213 255 / var(--tw-border-opacity, 1))}.border-purple-600{--tw-border-opacity: 1;border-color:rgb(147 51 234 / var(--tw-border-opacity, 1))}.border-red-100{--tw-border-opacity: 1;border-color:rgb(254 226 226 / var(--tw-border-opacity, 1))}.border-red-200{--tw-border-opacity: 1;border-color:rgb(254 202 202 / var(--tw-border-opacity, 1))}.border-red-300{--tw-border-opacity: 1;border-color:rgb(252 165 165 / var(--tw-border-opacity, 1))}.border-red-400{--tw-border-opacity: 1;border-color:rgb(248 113 113 / var(--tw-border-opacity, 1))}.border-red-600{--tw-border-opacity: 1;border-color:rgb(220 38 38 / var(--tw-border-opacity, 1))}.border-success-200{--tw-border-opacity: 1;border-color:rgb(165 214 167 / var(--tw-border-opacity, 1))}.border-teal-600{--tw-border-opacity: 1;border-color:rgb(13 148 136 / var(--tw-border-opacity, 1))}.border-transparent{border-color:transparent}.border-violet-600{--tw-border-opacity: 1;border-color:rgb(124 58 237 / var(--tw-border-opacity, 1))}.border-warning-200{--tw-border-opacity: 1;border-color:rgb(255 245 157 / var(--tw-border-opacity, 1))}.border-white{--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity, 1))}.border-yellow-200{--tw-border-opacity: 1;border-color:rgb(254 240 138 / var(--tw-border-opacity, 1))}.border-yellow-300{--tw-border-opacity: 1;border-color:rgb(253 224 71 / var(--tw-border-opacity, 1))}.border-yellow-400{--tw-border-opacity: 1;border-color:rgb(250 204 21 / var(--tw-border-opacity, 1))}.border-yellow-500{--tw-border-opacity: 1;border-color:rgb(234 179 8 / var(--tw-border-opacity, 1))}.border-yellow-600{--tw-border-opacity: 1;border-color:rgb(202 138 4 / var(--tw-border-opacity, 1))}.border-t-\[--surface-gray-2\]{border-top-color:var(--surface-gray-2)}.bg-amber-100{--tw-bg-opacity: 1;background-color:rgb(254 243 199 / var(--tw-bg-opacity, 1))}.bg-amber-50{--tw-bg-opacity: 1;background-color:rgb(255 251 235 / var(--tw-bg-opacity, 1))}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.bg-black\/65{background-color:#000000a6}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-blue-300{--tw-bg-opacity: 1;background-color:rgb(147 197 253 / var(--tw-bg-opacity, 1))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.bg-current{background-color:currentColor}.bg-cyan-100{--tw-bg-opacity: 1;background-color:rgb(207 250 254 / var(--tw-bg-opacity, 1))}.bg-error-100{--tw-bg-opacity: 1;background-color:rgb(255 205 210 / var(--tw-bg-opacity, 1))}.bg-error-300{--tw-bg-opacity: 1;background-color:rgb(229 115 115 / var(--tw-bg-opacity, 1))}.bg-error-50{--tw-bg-opacity: 1;background-color:rgb(255 235 238 / var(--tw-bg-opacity, 1))}.bg-error-500{--tw-bg-opacity: 1;background-color:rgb(244 67 54 / var(--tw-bg-opacity, 1))}.bg-error-600{--tw-bg-opacity: 1;background-color:rgb(229 57 53 / var(--tw-bg-opacity, 1))}.bg-error-700{--tw-bg-opacity: 1;background-color:rgb(211 47 47 / var(--tw-bg-opacity, 1))}.bg-error-900{--tw-bg-opacity: 1;background-color:rgb(183 28 28 / var(--tw-bg-opacity, 1))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.bg-gray-300{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity, 1))}.bg-gray-400{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.bg-gray-500{--tw-bg-opacity: 1;background-color:rgb(107 114 128 / var(--tw-bg-opacity, 1))}.bg-gray-600{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.bg-gray-800{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.bg-gray-900{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.bg-gray-900\/60{background-color:#11182799}.bg-gray-900\/80{background-color:#111827cc}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.bg-green-200{--tw-bg-opacity: 1;background-color:rgb(187 247 208 / var(--tw-bg-opacity, 1))}.bg-green-400{--tw-bg-opacity: 1;background-color:rgb(74 222 128 / var(--tw-bg-opacity, 1))}.bg-green-50{--tw-bg-opacity: 1;background-color:rgb(240 253 244 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.bg-indigo-100{--tw-bg-opacity: 1;background-color:rgb(224 231 255 / var(--tw-bg-opacity, 1))}.bg-indigo-50{--tw-bg-opacity: 1;background-color:rgb(238 242 255 / var(--tw-bg-opacity, 1))}.bg-info-50{--tw-bg-opacity: 1;background-color:rgb(225 245 254 / var(--tw-bg-opacity, 1))}.bg-orange-100{--tw-bg-opacity: 1;background-color:rgb(255 237 213 / var(--tw-bg-opacity, 1))}.bg-orange-50{--tw-bg-opacity: 1;background-color:rgb(255 247 237 / var(--tw-bg-opacity, 1))}.bg-orange-500{--tw-bg-opacity: 1;background-color:rgb(249 115 22 / var(--tw-bg-opacity, 1))}.bg-pink-100{--tw-bg-opacity: 1;background-color:rgb(252 231 243 / var(--tw-bg-opacity, 1))}.bg-primary-100{--tw-bg-opacity: 1;background-color:rgb(204 251 241 / var(--tw-bg-opacity, 1))}.bg-primary-300{--tw-bg-opacity: 1;background-color:rgb(94 234 212 / var(--tw-bg-opacity, 1))}.bg-primary-50{--tw-bg-opacity: 1;background-color:rgb(240 253 250 / var(--tw-bg-opacity, 1))}.bg-primary-500{--tw-bg-opacity: 1;background-color:rgb(20 184 166 / var(--tw-bg-opacity, 1))}.bg-primary-600{--tw-bg-opacity: 1;background-color:rgb(13 148 136 / var(--tw-bg-opacity, 1))}.bg-primary-700{--tw-bg-opacity: 1;background-color:rgb(15 118 110 / var(--tw-bg-opacity, 1))}.bg-primary-900{--tw-bg-opacity: 1;background-color:rgb(19 78 74 / var(--tw-bg-opacity, 1))}.bg-purple-100{--tw-bg-opacity: 1;background-color:rgb(243 232 255 / var(--tw-bg-opacity, 1))}.bg-purple-50{--tw-bg-opacity: 1;background-color:rgb(250 245 255 / var(--tw-bg-opacity, 1))}.bg-purple-500{--tw-bg-opacity: 1;background-color:rgb(168 85 247 / var(--tw-bg-opacity, 1))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-red-200{--tw-bg-opacity: 1;background-color:rgb(254 202 202 / var(--tw-bg-opacity, 1))}.bg-red-400{--tw-bg-opacity: 1;background-color:rgb(248 113 113 / var(--tw-bg-opacity, 1))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-success-100{--tw-bg-opacity: 1;background-color:rgb(200 230 201 / var(--tw-bg-opacity, 1))}.bg-success-300{--tw-bg-opacity: 1;background-color:rgb(129 199 132 / var(--tw-bg-opacity, 1))}.bg-success-50{--tw-bg-opacity: 1;background-color:rgb(232 245 232 / var(--tw-bg-opacity, 1))}.bg-success-500{--tw-bg-opacity: 1;background-color:rgb(76 175 80 / var(--tw-bg-opacity, 1))}.bg-success-700{--tw-bg-opacity: 1;background-color:rgb(56 142 60 / var(--tw-bg-opacity, 1))}.bg-success-900{--tw-bg-opacity: 1;background-color:rgb(27 94 32 / var(--tw-bg-opacity, 1))}.bg-teal-100{--tw-bg-opacity: 1;background-color:rgb(204 251 241 / var(--tw-bg-opacity, 1))}.bg-transparent{background-color:transparent}.bg-violet-100{--tw-bg-opacity: 1;background-color:rgb(237 233 254 / var(--tw-bg-opacity, 1))}.bg-warning-50{--tw-bg-opacity: 1;background-color:rgb(255 253 231 / var(--tw-bg-opacity, 1))}.bg-warning-500{--tw-bg-opacity: 1;background-color:rgb(255 235 59 / var(--tw-bg-opacity, 1))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-white\/80{background-color:#fffc}.bg-white\/90{background-color:#ffffffe6}.bg-yellow-100{--tw-bg-opacity: 1;background-color:rgb(254 249 195 / var(--tw-bg-opacity, 1))}.bg-yellow-400{--tw-bg-opacity: 1;background-color:rgb(250 204 21 / var(--tw-bg-opacity, 1))}.bg-yellow-50{--tw-bg-opacity: 1;background-color:rgb(254 252 232 / var(--tw-bg-opacity, 1))}.bg-yellow-500{--tw-bg-opacity: 1;background-color:rgb(234 179 8 / var(--tw-bg-opacity, 1))}.bg-opacity-25{--tw-bg-opacity: .25}.bg-opacity-50{--tw-bg-opacity: .5}.bg-opacity-75{--tw-bg-opacity: .75}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-t{background-image:linear-gradient(to top,var(--tw-gradient-stops))}.from-black\/60{--tw-gradient-from: rgb(0 0 0 / .6) var(--tw-gradient-from-position);--tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-primary-600{--tw-gradient-from: #0D9488 var(--tw-gradient-from-position);--tw-gradient-to: rgb(13 148 136 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.to-primary-800{--tw-gradient-to: #115E59 var(--tw-gradient-to-position)}.to-transparent{--tw-gradient-to: transparent var(--tw-gradient-to-position)}.\!fill-yellow-200{fill:#fef08a!important}.\!fill-yellow-500{fill:#eab308!important}.fill-gray-300{fill:#d1d5db}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-\[2px\]{padding:2px}.p-px{padding:1px}.px-0{padding-left:0;padding-right:0}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-\[1px\]{padding-left:1px;padding-right:1px}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-3\.5{padding-top:.875rem;padding-bottom:.875rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-1\.5{padding-bottom:.375rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pb-7{padding-bottom:1.75rem}.pl-10{padding-left:2.5rem}.pl-2{padding-left:.5rem}.pl-2\.5{padding-left:.625rem}.pl-3{padding-left:.75rem}.pl-3\.5{padding-left:.875rem}.pl-8{padding-left:2rem}.pl-9{padding-left:2.25rem}.pr-10{padding-right:2.5rem}.pr-2{padding-right:.5rem}.pr-2\.5{padding-right:.625rem}.pr-3{padding-right:.75rem}.pr-5{padding-right:1.25rem}.pr-6{padding-right:1.5rem}.pr-8{padding-right:2rem}.pr-9{padding-right:2.25rem}.pt-0{padding-top:0}.pt-1\.5{padding-top:.375rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.pt-6{padding-top:1.5rem}.pt-\[1px\]{padding-top:1px}.pt-\[20vh\]{padding-top:20vh}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-start{text-align:start}.text-end{text-align:end}.align-middle{vertical-align:middle}.font-mono{font-family:JetBrains Mono,ui-monospace,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-\[24px\]{font-size:24px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-10{line-height:2.5rem}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-none{line-height:1}.leading-normal{line-height:1.5}.leading-relaxed{line-height:1.625}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-amber-500{--tw-text-opacity: 1;color:rgb(245 158 11 / var(--tw-text-opacity, 1))}.text-amber-600{--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity, 1))}.text-amber-700{--tw-text-opacity: 1;color:rgb(180 83 9 / var(--tw-text-opacity, 1))}.text-amber-900{--tw-text-opacity: 1;color:rgb(120 53 15 / var(--tw-text-opacity, 1))}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity, 1))}.text-blue-400{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-blue-800{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity, 1))}.text-blue-900{--tw-text-opacity: 1;color:rgb(30 58 138 / var(--tw-text-opacity, 1))}.text-cyan-600{--tw-text-opacity: 1;color:rgb(8 145 178 / var(--tw-text-opacity, 1))}.text-error-500{--tw-text-opacity: 1;color:rgb(244 67 54 / var(--tw-text-opacity, 1))}.text-error-600{--tw-text-opacity: 1;color:rgb(229 57 53 / var(--tw-text-opacity, 1))}.text-error-700{--tw-text-opacity: 1;color:rgb(211 47 47 / var(--tw-text-opacity, 1))}.text-error-800{--tw-text-opacity: 1;color:rgb(198 40 40 / var(--tw-text-opacity, 1))}.text-error-900{--tw-text-opacity: 1;color:rgb(183 28 28 / var(--tw-text-opacity, 1))}.text-gray-100{--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.text-gray-200{--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity, 1))}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.text-green-300{--tw-text-opacity: 1;color:rgb(134 239 172 / var(--tw-text-opacity, 1))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-green-800{--tw-text-opacity: 1;color:rgb(22 101 52 / var(--tw-text-opacity, 1))}.text-green-900{--tw-text-opacity: 1;color:rgb(20 83 45 / var(--tw-text-opacity, 1))}.text-indigo-500{--tw-text-opacity: 1;color:rgb(99 102 241 / var(--tw-text-opacity, 1))}.text-indigo-600{--tw-text-opacity: 1;color:rgb(79 70 229 / var(--tw-text-opacity, 1))}.text-indigo-900{--tw-text-opacity: 1;color:rgb(49 46 129 / var(--tw-text-opacity, 1))}.text-info-800{--tw-text-opacity: 1;color:rgb(2 119 189 / var(--tw-text-opacity, 1))}.text-info-900{--tw-text-opacity: 1;color:rgb(1 87 155 / var(--tw-text-opacity, 1))}.text-orange-500{--tw-text-opacity: 1;color:rgb(249 115 22 / var(--tw-text-opacity, 1))}.text-orange-600{--tw-text-opacity: 1;color:rgb(234 88 12 / var(--tw-text-opacity, 1))}.text-orange-700{--tw-text-opacity: 1;color:rgb(194 65 12 / var(--tw-text-opacity, 1))}.text-orange-800{--tw-text-opacity: 1;color:rgb(154 52 18 / var(--tw-text-opacity, 1))}.text-orange-900{--tw-text-opacity: 1;color:rgb(124 45 18 / var(--tw-text-opacity, 1))}.text-pink-600{--tw-text-opacity: 1;color:rgb(219 39 119 / var(--tw-text-opacity, 1))}.text-primary-100{--tw-text-opacity: 1;color:rgb(204 251 241 / var(--tw-text-opacity, 1))}.text-primary-500{--tw-text-opacity: 1;color:rgb(20 184 166 / var(--tw-text-opacity, 1))}.text-primary-600{--tw-text-opacity: 1;color:rgb(13 148 136 / var(--tw-text-opacity, 1))}.text-primary-700{--tw-text-opacity: 1;color:rgb(15 118 110 / var(--tw-text-opacity, 1))}.text-primary-800{--tw-text-opacity: 1;color:rgb(17 94 89 / var(--tw-text-opacity, 1))}.text-primary-900{--tw-text-opacity: 1;color:rgb(19 78 74 / var(--tw-text-opacity, 1))}.text-purple-500{--tw-text-opacity: 1;color:rgb(168 85 247 / var(--tw-text-opacity, 1))}.text-purple-600{--tw-text-opacity: 1;color:rgb(147 51 234 / var(--tw-text-opacity, 1))}.text-purple-900{--tw-text-opacity: 1;color:rgb(88 28 135 / var(--tw-text-opacity, 1))}.text-red-300{--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-red-800{--tw-text-opacity: 1;color:rgb(153 27 27 / var(--tw-text-opacity, 1))}.text-red-900{--tw-text-opacity: 1;color:rgb(127 29 29 / var(--tw-text-opacity, 1))}.text-success-800{--tw-text-opacity: 1;color:rgb(46 125 50 / var(--tw-text-opacity, 1))}.text-success-900{--tw-text-opacity: 1;color:rgb(27 94 32 / var(--tw-text-opacity, 1))}.text-teal-600{--tw-text-opacity: 1;color:rgb(13 148 136 / var(--tw-text-opacity, 1))}.text-transparent{color:transparent}.text-warning-800{--tw-text-opacity: 1;color:rgb(249 168 37 / var(--tw-text-opacity, 1))}.text-warning-900{--tw-text-opacity: 1;color:rgb(245 127 23 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-yellow-400{--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.text-yellow-500{--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.text-yellow-600{--tw-text-opacity: 1;color:rgb(202 138 4 / var(--tw-text-opacity, 1))}.text-yellow-700{--tw-text-opacity: 1;color:rgb(161 98 7 / var(--tw-text-opacity, 1))}.text-yellow-800{--tw-text-opacity: 1;color:rgb(133 77 14 / var(--tw-text-opacity, 1))}.text-yellow-900{--tw-text-opacity: 1;color:rgb(113 63 18 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.line-through{text-decoration-line:line-through}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.placeholder-gray-500::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(107 114 128 / var(--tw-placeholder-opacity, 1))}.placeholder-gray-500::placeholder{--tw-placeholder-opacity: 1;color:rgb(107 114 128 / var(--tw-placeholder-opacity, 1))}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-25{opacity:.25}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-inner{--tw-shadow: inset 0 2px 4px 0 rgb(0 0 0 / .05);--tw-shadow-colored: inset 0 2px 4px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-0{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-black{--tw-ring-opacity: 1;--tw-ring-color: rgb(0 0 0 / var(--tw-ring-opacity, 1))}.ring-primary-400{--tw-ring-opacity: 1;--tw-ring-color: rgb(45 212 191 / var(--tw-ring-opacity, 1))}.ring-primary-500{--tw-ring-opacity: 1;--tw-ring-color: rgb(20 184 166 / var(--tw-ring-opacity, 1))}.ring-white{--tw-ring-opacity: 1;--tw-ring-color: rgb(255 255 255 / var(--tw-ring-opacity, 1))}.ring-opacity-5{--tw-ring-opacity: .05}.ring-offset-2{--tw-ring-offset-width: 2px}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow-xl{--tw-drop-shadow: drop-shadow(0 20px 13px rgb(0 0 0 / .03)) drop-shadow(0 8px 5px rgb(0 0 0 / .08));filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.grayscale{--tw-grayscale: grayscale(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.\!filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-\[12px\]{--tw-backdrop-blur: blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-100{transition-duration:.1s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-75{transition-duration:75ms}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.atlas-container{width:100%}@media (min-width: 640px){.atlas-container{max-width:640px}}@media (min-width: 768px){.atlas-container{max-width:768px}}@media (min-width: 1024px){.atlas-container{max-width:1024px}}@media (min-width: 1280px){.atlas-container{max-width:1280px}}@media (min-width: 1536px){.atlas-container{max-width:1536px}}.atlas-container{margin-left:auto;margin-right:auto;padding-left:1rem;padding-right:1rem}@media (min-width: 640px){.atlas-container{padding-left:1.5rem;padding-right:1.5rem}}@media (min-width: 1024px){.atlas-container{padding-left:2rem;padding-right:2rem}}.\[all\:unset\]{all:unset}.first\:mt-3:first-child{margin-top:.75rem}.last\:border-b-0:last-child{border-bottom-width:0px}.focus-within\:ring-2:focus-within{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.hover\:scale-105:hover{--tw-scale-x: 1.05;--tw-scale-y: 1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:cursor-pointer:hover{cursor:pointer}.hover\:border-blue-400:hover{--tw-border-opacity: 1;border-color:rgb(96 165 250 / var(--tw-border-opacity, 1))}.hover\:border-gray-300:hover{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.hover\:border-gray-400:hover{--tw-border-opacity: 1;border-color:rgb(156 163 175 / var(--tw-border-opacity, 1))}.hover\:border-gray-600:hover{--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity, 1))}.hover\:border-green-500:hover{--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity, 1))}.hover\:border-primary-300:hover{--tw-border-opacity: 1;border-color:rgb(94 234 212 / var(--tw-border-opacity, 1))}.hover\:border-primary-400:hover{--tw-border-opacity: 1;border-color:rgb(45 212 191 / var(--tw-border-opacity, 1))}.hover\:bg-blue-100:hover{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.hover\:bg-blue-200:hover{--tw-bg-opacity: 1;background-color:rgb(191 219 254 / var(--tw-bg-opacity, 1))}.hover\:bg-blue-700:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.hover\:bg-error-700:hover{--tw-bg-opacity: 1;background-color:rgb(211 47 47 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-200:hover{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-50:hover{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-900:hover{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.hover\:bg-green-200:hover{--tw-bg-opacity: 1;background-color:rgb(187 247 208 / var(--tw-bg-opacity, 1))}.hover\:bg-green-700:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.hover\:bg-primary-50:hover{--tw-bg-opacity: 1;background-color:rgb(240 253 250 / var(--tw-bg-opacity, 1))}.hover\:bg-primary-700:hover{--tw-bg-opacity: 1;background-color:rgb(15 118 110 / var(--tw-bg-opacity, 1))}.hover\:bg-red-100:hover{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.hover\:bg-red-50:hover{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.hover\:bg-red-700:hover{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))}.hover\:bg-white:hover{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.hover\:bg-yellow-100:hover{--tw-bg-opacity: 1;background-color:rgb(254 249 195 / var(--tw-bg-opacity, 1))}.hover\:bg-yellow-600:hover{--tw-bg-opacity: 1;background-color:rgb(202 138 4 / var(--tw-bg-opacity, 1))}.hover\:text-blue-600:hover{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.hover\:text-blue-700:hover{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.hover\:text-blue-800:hover{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity, 1))}.hover\:text-gray-500:hover{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.hover\:text-gray-600:hover{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.hover\:text-gray-700:hover{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.hover\:text-gray-900:hover{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.hover\:text-green-600:hover{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.hover\:text-green-700:hover{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.hover\:text-orange-700:hover{--tw-text-opacity: 1;color:rgb(194 65 12 / var(--tw-text-opacity, 1))}.hover\:text-primary-600:hover{--tw-text-opacity: 1;color:rgb(13 148 136 / var(--tw-text-opacity, 1))}.hover\:text-primary-700:hover{--tw-text-opacity: 1;color:rgb(15 118 110 / var(--tw-text-opacity, 1))}.hover\:text-purple-600:hover{--tw-text-opacity: 1;color:rgb(147 51 234 / var(--tw-text-opacity, 1))}.hover\:text-purple-700:hover{--tw-text-opacity: 1;color:rgb(126 34 206 / var(--tw-text-opacity, 1))}.hover\:text-red-600:hover{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.hover\:text-red-700:hover{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.hover\:text-red-800:hover{--tw-text-opacity: 1;color:rgb(153 27 27 / var(--tw-text-opacity, 1))}.hover\:text-yellow-600:hover{--tw-text-opacity: 1;color:rgb(202 138 4 / var(--tw-text-opacity, 1))}.hover\:text-yellow-700:hover{--tw-text-opacity: 1;color:rgb(161 98 7 / var(--tw-text-opacity, 1))}.hover\:opacity-100:hover{opacity:1}.hover\:opacity-80:hover{opacity:.8}.hover\:shadow-md:hover{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-sm:hover{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:\[all\:unset\]:hover{all:unset}.focus\:border-0:focus{border-width:0px}.focus\:border-error-500:focus{--tw-border-opacity: 1;border-color:rgb(244 67 54 / var(--tw-border-opacity, 1))}.focus\:border-gray-900:focus{--tw-border-opacity: 1;border-color:rgb(17 24 39 / var(--tw-border-opacity, 1))}.focus\:border-indigo-500:focus{--tw-border-opacity: 1;border-color:rgb(99 102 241 / var(--tw-border-opacity, 1))}.focus\:border-primary-300:focus{--tw-border-opacity: 1;border-color:rgb(94 234 212 / var(--tw-border-opacity, 1))}.focus\:border-primary-500:focus{--tw-border-opacity: 1;border-color:rgb(20 184 166 / var(--tw-border-opacity, 1))}.focus\:border-primary-600:focus{--tw-border-opacity: 1;border-color:rgb(13 148 136 / var(--tw-border-opacity, 1))}.focus\:bg-gray-50:focus{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.focus\:opacity-100:focus{opacity:1}.focus\:shadow-sm:focus{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:outline-0:focus{outline-width:0px}.focus\:ring:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-0:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-blue-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1))}.focus\:ring-blue-600:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(37 99 235 / var(--tw-ring-opacity, 1))}.focus\:ring-error-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(244 67 54 / var(--tw-ring-opacity, 1))}.focus\:ring-indigo-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(99 102 241 / var(--tw-ring-opacity, 1))}.focus\:ring-primary-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(153 246 228 / var(--tw-ring-opacity, 1))}.focus\:ring-primary-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(20 184 166 / var(--tw-ring-opacity, 1))}.focus\:ring-opacity-50:focus{--tw-ring-opacity: .5}.focus\:ring-offset-0:focus{--tw-ring-offset-width: 0px}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.focus\:ring-offset-blue-50:focus{--tw-ring-offset-color: #eff6ff}.focus\:transition-none:focus{transition-property:none}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-blue-400:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(96 165 250 / var(--tw-ring-opacity, 1))}.active\:border-blue-400:active{--tw-border-opacity: 1;border-color:rgb(96 165 250 / var(--tw-border-opacity, 1))}.active\:border-gray-700:active{--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity, 1))}.active\:border-green-500:active{--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity, 1))}.active\:bg-blue-300:active{--tw-bg-opacity: 1;background-color:rgb(147 197 253 / var(--tw-bg-opacity, 1))}.active\:bg-blue-700:active{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.active\:bg-gray-500:active{--tw-bg-opacity: 1;background-color:rgb(107 114 128 / var(--tw-bg-opacity, 1))}.active\:bg-green-300:active{--tw-bg-opacity: 1;background-color:rgb(134 239 172 / var(--tw-bg-opacity, 1))}.active\:bg-green-800:active{--tw-bg-opacity: 1;background-color:rgb(22 101 52 / var(--tw-bg-opacity, 1))}.enabled\:hover\:bg-gray-400:hover:enabled{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:border-gray-300:disabled{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.disabled\:bg-error-300:disabled{--tw-bg-opacity: 1;background-color:rgb(229 115 115 / var(--tw-bg-opacity, 1))}.disabled\:bg-gray-100:disabled{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.disabled\:bg-primary-300:disabled{--tw-bg-opacity: 1;background-color:rgb(94 234 212 / var(--tw-bg-opacity, 1))}.disabled\:text-gray-400:disabled{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.disabled\:opacity-50:disabled{opacity:.5}.group:hover .group-hover\:visible{visibility:visible}.group:hover .group-hover\:bg-gray-400{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.group:hover .group-hover\:text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.group:hover .group-hover\:opacity-100{opacity:1}.group:hover .group-hover\:enabled\:bg-gray-400:enabled{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[highlighted\]\:outline-none[data-highlighted]{outline:2px solid transparent;outline-offset:2px}.prose-table\:table-fixed :is(:where(table):not(:where([class~=not-prose],[class~=not-prose] *))){table-layout:fixed}.prose-th\:relative :is(:where(th):not(:where([class~=not-prose],[class~=not-prose] *))){position:relative}.prose-th\:border :is(:where(th):not(:where([class~=not-prose],[class~=not-prose] *))){border-width:1px}.prose-th\:p-2 :is(:where(th):not(:where([class~=not-prose],[class~=not-prose] *))){padding:.5rem}.prose-td\:relative :is(:where(td):not(:where([class~=not-prose],[class~=not-prose] *))){position:relative}.prose-td\:border :is(:where(td):not(:where([class~=not-prose],[class~=not-prose] *))){border-width:1px}.prose-td\:p-2 :is(:where(td):not(:where([class~=not-prose],[class~=not-prose] *))){padding:.5rem}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.dark\:text-gray-200:is(.dark *){--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity, 1))}.dark\:text-gray-300:is(.dark *){--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.dark\:text-white:is(.dark *){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.dark\:\[color-scheme\:dark\]:is(.dark *){color-scheme:dark}@media (min-width: 640px){.sm\:col-span-2{grid-column:span 2 / span 2}.sm\:mt-0{margin-top:0}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:hidden{display:none}.sm\:flex-1{flex:1 1 0%}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:bg-black\/90{background-color:#000000e6}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width: 768px){.md\:col-span-2{grid-column:span 2 / span 2}.md\:ml-2{margin-left:.5rem}.md\:ml-auto{margin-left:auto}.md\:mt-0{margin-top:0}.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-80{height:20rem}.md\:min-w-\[400px\]{min-width:400px}.md\:flex-shrink-0{flex-shrink:0}.md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-baseline{align-items:baseline}.md\:px-5{padding-left:1.25rem;padding-right:1.25rem}}@media (min-width: 1024px){.lg\:col-span-2{grid-column:span 2 / span 2}.lg\:block{display:block}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (min-width: 1280px){.xl\:col-span-2{grid-column:span 2 / span 2}.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}.rtl\:-translate-x-2\.5:where([dir=rtl],[dir=rtl] *){--tw-translate-x: -.625rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:-translate-x-3:where([dir=rtl],[dir=rtl] *){--tw-translate-x: -.75rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>div\:first-child\]\:w-full>div:first-child{width:100%}.atlas-card-header[data-v-c3f51894]{border-top-left-radius:.25rem;border-top-right-radius:.25rem;border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));padding:1rem 1.5rem}.atlas-card-footer[data-v-c3f51894]{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem;border-top-width:1px;--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));padding:1rem 1.5rem}.atlas-card-content[data-v-c3f51894]:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.atlas-card-content[data-v-c3f51894]:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}select[data-v-dfd92765]::-ms-expand{display:none}.animate-spin[data-v-7a4d805f]{animation:spin-7a4d805f 1s linear infinite}@keyframes spin-7a4d805f{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.modal-enter-active[data-v-583bdfc3],.modal-leave-active[data-v-583bdfc3]{transition:opacity .3s ease}.modal-enter-active .relative[data-v-583bdfc3]{transition:transform .3s ease}.modal-enter-from[data-v-583bdfc3],.modal-leave-to[data-v-583bdfc3]{opacity:0}.modal-enter-from .relative[data-v-583bdfc3],.modal-leave-to .relative[data-v-583bdfc3]{transform:scale(.95) translateY(-10px)}.fp-avatar[data-v-bee50a95]{background-color:transparent}.fp-file-upload[data-v-3b4b2a2a]{width:100%}.upload-area[data-v-3b4b2a2a],.dropdown-enter-active[data-v-cbc322b7],.dropdown-leave-active[data-v-cbc322b7]{transition:all .2s ease}.dropdown-enter-from[data-v-cbc322b7],.dropdown-leave-to[data-v-cbc322b7]{opacity:0;transform:translateY(-8px)}.mobile-sidebar-enter-active[data-v-cbc322b7],.mobile-sidebar-leave-active[data-v-cbc322b7]{transition:all .3s ease}.mobile-sidebar-enter-from[data-v-cbc322b7],.mobile-sidebar-leave-to[data-v-cbc322b7]{opacity:0;transform:translate(-100%)}.notifications-container[data-v-9b99d032]{position:fixed;top:0;right:0;z-index:9999;pointer-events:none}.notifications-container[data-v-9b99d032] .v-snack{pointer-events:all;position:relative!important;margin-bottom:8px}.v-btn{align-items:center;border-radius:4px;display:inline-grid;grid-template-areas:"prepend content append";grid-template-columns:max-content auto max-content;font-weight:500;justify-content:center;letter-spacing:.0892857143em;line-height:normal;max-width:100%;outline:none;position:relative;text-decoration:none;text-indent:.0892857143em;text-transform:uppercase;transition-property:box-shadow,transform,opacity,background;transition-duration:.28s;transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;flex-shrink:0}.v-locale--is-rtl .v-btn{text-indent:-.0892857143em}.v-btn--size-x-small{--v-btn-size: .625rem;--v-btn-height: 20px;font-size:var(--v-btn-size);min-width:36px;padding:0 8px}.v-btn--size-small{--v-btn-size: .75rem;--v-btn-height: 28px;font-size:var(--v-btn-size);min-width:50px;padding:0 12px}.v-btn--size-default{--v-btn-size: .875rem;--v-btn-height: 36px;font-size:var(--v-btn-size);min-width:64px;padding:0 16px}.v-btn--size-large{--v-btn-size: 1rem;--v-btn-height: 44px;font-size:var(--v-btn-size);min-width:78px;padding:0 20px}.v-btn--size-x-large{--v-btn-size: 1.125rem;--v-btn-height: 52px;font-size:var(--v-btn-size);min-width:92px;padding:0 24px}.v-btn.v-btn--density-default{height:calc(var(--v-btn-height) + 0px)}.v-btn.v-btn--density-comfortable{height:calc(var(--v-btn-height) + -8px)}.v-btn.v-btn--density-compact{height:calc(var(--v-btn-height) + -12px)}.v-btn{border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:0}.v-btn--border{border-width:thin;box-shadow:none}.v-btn--absolute{position:absolute}.v-btn--fixed{position:fixed}.v-btn:hover>.v-btn__overlay{opacity:calc(var(--v-hover-opacity) * var(--v-theme-overlay-multiplier))}.v-btn:focus-visible>.v-btn__overlay{opacity:calc(var(--v-focus-opacity) * var(--v-theme-overlay-multiplier))}@supports not selector(:focus-visible){.v-btn:focus>.v-btn__overlay{opacity:calc(var(--v-focus-opacity) * var(--v-theme-overlay-multiplier))}}.v-btn--active>.v-btn__overlay,.v-btn[aria-haspopup=menu][aria-expanded=true]>.v-btn__overlay{opacity:calc(var(--v-activated-opacity) * var(--v-theme-overlay-multiplier))}.v-btn--active:hover>.v-btn__overlay,.v-btn[aria-haspopup=menu][aria-expanded=true]:hover>.v-btn__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-hover-opacity)) * var(--v-theme-overlay-multiplier))}.v-btn--active:focus-visible>.v-btn__overlay,.v-btn[aria-haspopup=menu][aria-expanded=true]:focus-visible>.v-btn__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier))}@supports not selector(:focus-visible){.v-btn--active:focus>.v-btn__overlay,.v-btn[aria-haspopup=menu][aria-expanded=true]:focus>.v-btn__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier))}}.v-btn--variant-plain,.v-btn--variant-outlined,.v-btn--variant-text,.v-btn--variant-tonal{background:transparent;color:inherit}.v-btn--variant-plain{opacity:.62}.v-btn--variant-plain:focus,.v-btn--variant-plain:hover{opacity:1}.v-btn--variant-plain .v-btn__overlay{display:none}.v-btn--variant-elevated,.v-btn--variant-flat{background:rgb(var(--v-theme-surface));color:rgba(var(--v-theme-on-surface),var(--v-high-emphasis-opacity))}.v-btn--variant-elevated{box-shadow:0 3px 1px -2px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 2px 2px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 5px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-btn--variant-flat{box-shadow:0 0 0 0 var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 0 0 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 0 0 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-btn--variant-outlined{border:thin solid currentColor}.v-btn--variant-text .v-btn__overlay{background:currentColor}.v-btn--variant-tonal .v-btn__underlay{background:currentColor;opacity:var(--v-activated-opacity);border-radius:inherit;top:0;right:0;bottom:0;left:0;pointer-events:none}.v-btn .v-btn__underlay{position:absolute}@supports selector(:focus-visible){.v-btn:after{pointer-events:none;border:2px solid currentColor;border-radius:inherit;opacity:0;transition:opacity .2s ease-in-out;content:"";position:absolute;top:0;left:0;width:100%;height:100%}.v-btn:focus-visible:after{opacity:calc(.25 * var(--v-theme-overlay-multiplier))}}.v-btn--icon{border-radius:50%;min-width:0;padding:0}.v-btn--icon.v-btn--size-default{--v-btn-size: 1rem}.v-btn--icon.v-btn--density-default{width:calc(var(--v-btn-height) + 12px);height:calc(var(--v-btn-height) + 12px)}.v-btn--icon.v-btn--density-comfortable{width:calc(var(--v-btn-height) + 0px);height:calc(var(--v-btn-height) + 0px)}.v-btn--icon.v-btn--density-compact{width:calc(var(--v-btn-height) + -8px);height:calc(var(--v-btn-height) + -8px)}.v-btn--elevated:hover,.v-btn--elevated:focus{box-shadow:0 2px 4px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 4px 5px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 10px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-btn--elevated:active{box-shadow:0 5px 5px -3px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 8px 10px 1px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 3px 14px 2px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-btn--flat{box-shadow:none}.v-btn--block{display:flex;flex:1 0 auto;min-width:100%}.v-btn--disabled{pointer-events:none;opacity:.26}.v-btn--disabled:hover{opacity:.26}.v-btn--disabled.v-btn--variant-elevated,.v-btn--disabled.v-btn--variant-flat{box-shadow:none;opacity:1;color:rgba(var(--v-theme-on-surface),.26);background:rgb(var(--v-theme-surface))}.v-btn--disabled.v-btn--variant-elevated .v-btn__overlay,.v-btn--disabled.v-btn--variant-flat .v-btn__overlay{opacity:.4615384615}.v-btn--loading{pointer-events:none}.v-btn--loading .v-btn__content,.v-btn--loading .v-btn__prepend,.v-btn--loading .v-btn__append{opacity:0}.v-btn--stacked{grid-template-areas:"prepend" "content" "append";grid-template-columns:auto;grid-template-rows:max-content max-content max-content;justify-items:center;align-content:center}.v-btn--stacked .v-btn__content{flex-direction:column;line-height:1.25}.v-btn--stacked .v-btn__prepend,.v-btn--stacked .v-btn__append,.v-btn--stacked .v-btn__content>.v-icon--start,.v-btn--stacked .v-btn__content>.v-icon--end{margin-inline:0}.v-btn--stacked .v-btn__prepend,.v-btn--stacked .v-btn__content>.v-icon--start{margin-bottom:4px}.v-btn--stacked .v-btn__append,.v-btn--stacked .v-btn__content>.v-icon--end{margin-top:4px}.v-btn--stacked.v-btn--size-x-small{--v-btn-size: .625rem;--v-btn-height: 56px;font-size:var(--v-btn-size);min-width:56px;padding:0 12px}.v-btn--stacked.v-btn--size-small{--v-btn-size: .75rem;--v-btn-height: 64px;font-size:var(--v-btn-size);min-width:64px;padding:0 14px}.v-btn--stacked.v-btn--size-default{--v-btn-size: .875rem;--v-btn-height: 72px;font-size:var(--v-btn-size);min-width:72px;padding:0 16px}.v-btn--stacked.v-btn--size-large{--v-btn-size: 1rem;--v-btn-height: 80px;font-size:var(--v-btn-size);min-width:80px;padding:0 18px}.v-btn--stacked.v-btn--size-x-large{--v-btn-size: 1.125rem;--v-btn-height: 88px;font-size:var(--v-btn-size);min-width:88px;padding:0 20px}.v-btn--stacked.v-btn--density-default{height:calc(var(--v-btn-height) + 0px)}.v-btn--stacked.v-btn--density-comfortable{height:calc(var(--v-btn-height) + -16px)}.v-btn--stacked.v-btn--density-compact{height:calc(var(--v-btn-height) + -24px)}.v-btn--slim{padding:0 8px}.v-btn--readonly{pointer-events:none}.v-btn--rounded{border-radius:24px}.v-btn--rounded.v-btn--icon{border-radius:4px}.v-btn .v-icon{--v-icon-size-multiplier: .8571428571}.v-btn--icon .v-icon{--v-icon-size-multiplier: 1}.v-btn--stacked .v-icon{--v-icon-size-multiplier: 1.1428571429}.v-btn--stacked.v-btn--block{min-width:100%}.v-btn__loader{align-items:center;display:flex;height:100%;justify-content:center;left:0;position:absolute;top:0;width:100%}.v-btn__loader>.v-progress-circular{width:1.5em;height:1.5em}.v-btn__content,.v-btn__prepend,.v-btn__append{align-items:center;display:flex;transition:transform,opacity .2s cubic-bezier(.4,0,.2,1)}.v-btn__prepend{grid-area:prepend;margin-inline:calc(var(--v-btn-height) / -9) calc(var(--v-btn-height) / 4.5)}.v-btn--slim .v-btn__prepend{margin-inline-start:0}.v-btn__append{grid-area:append;margin-inline:calc(var(--v-btn-height) / 4.5) calc(var(--v-btn-height) / -9)}.v-btn--slim .v-btn__append{margin-inline-end:0}.v-btn__content{grid-area:content;justify-content:center;white-space:nowrap}.v-btn__content>.v-icon--start{margin-inline:calc(var(--v-btn-height) / -9) calc(var(--v-btn-height) / 4.5)}.v-btn__content>.v-icon--end{margin-inline:calc(var(--v-btn-height) / 4.5) calc(var(--v-btn-height) / -9)}.v-btn--stacked .v-btn__content{white-space:normal}.v-btn__overlay{background-color:currentColor;border-radius:inherit;opacity:0;transition:opacity .2s ease-in-out}.v-btn__overlay,.v-btn__underlay{pointer-events:none;position:absolute;top:0;left:0;width:100%;height:100%}.v-pagination .v-btn{width:auto;padding-inline:5px}.v-pagination .v-btn.v-btn--density-default{min-width:calc(var(--v-btn-height) + 12px)}.v-pagination .v-btn.v-btn--density-comfortable{min-width:calc(var(--v-btn-height) + 0px)}.v-pagination .v-btn.v-btn--density-compact{min-width:calc(var(--v-btn-height) + -8px)}.v-pagination .v-btn{border-radius:4px}.v-pagination .v-btn--rounded{border-radius:50%}.v-pagination .v-btn__overlay{transition:none}.v-pagination__prev .v-btn,.v-pagination__next .v-btn{padding-inline:0}.v-pagination__prev .v-btn.v-btn--density-default,.v-pagination__next .v-btn.v-btn--density-default{width:calc(var(--v-btn-height) + 12px)}.v-pagination__prev .v-btn.v-btn--density-comfortable,.v-pagination__next .v-btn.v-btn--density-comfortable{width:calc(var(--v-btn-height) + 0px)}.v-pagination__prev .v-btn.v-btn--density-compact,.v-pagination__next .v-btn.v-btn--density-compact{width:calc(var(--v-btn-height) + -8px)}.v-pagination .v-pagination__item--is-active .v-btn__overlay{opacity:var(--v-border-opacity)}.v-btn-toggle>.v-btn.v-btn--active:not(.v-btn--disabled)>.v-btn__overlay{opacity:calc(var(--v-activated-opacity) * var(--v-theme-overlay-multiplier))}.v-btn-toggle>.v-btn.v-btn--active:not(.v-btn--disabled):hover>.v-btn__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-hover-opacity)) * var(--v-theme-overlay-multiplier))}.v-btn-toggle>.v-btn.v-btn--active:not(.v-btn--disabled):focus-visible>.v-btn__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier))}@supports not selector(:focus-visible){.v-btn-toggle>.v-btn.v-btn--active:not(.v-btn--disabled):focus>.v-btn__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier))}}.v-btn-toggle>.v-btn.v-btn--active:not(.v-btn--disabled).v-btn--variant-plain{opacity:1}.v-btn-group{display:inline-flex;flex-wrap:nowrap;max-width:100%;min-width:0;overflow-y:hidden;overflow-x:auto;vertical-align:middle;border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:0}.v-btn-group--border{border-width:thin;box-shadow:none}.v-btn-group{box-shadow:0 0 0 0 var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 0 0 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 0 0 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12));border-radius:4px;background:transparent;color:rgba(var(--v-theme-on-surface),var(--v-high-emphasis-opacity))}.v-btn-group--density-default.v-btn-group{height:48px}.v-btn-group--density-comfortable.v-btn-group{height:40px}.v-btn-group--density-compact.v-btn-group{height:36px}.v-btn-group .v-btn{border-radius:0;border-color:inherit}.v-btn-group--tile{border-radius:0}.v-btn-group--horizontal .v-btn:not(:last-child){border-inline-end:none}.v-btn-group--horizontal .v-btn:not(:first-child){border-inline-start:none}.v-btn-group--horizontal .v-btn:first-child{border-start-start-radius:inherit;border-end-start-radius:inherit}.v-btn-group--horizontal .v-btn:last-child{border-start-end-radius:inherit;border-end-end-radius:inherit}.v-btn-group--horizontal.v-btn-group--divided .v-btn:not(:last-child){border-inline-end-width:thin;border-inline-end-style:solid;border-inline-end-color:rgba(var(--v-border-color),var(--v-border-opacity))}.v-btn-group--vertical{flex-direction:column;height:auto!important}.v-btn-group--vertical .v-btn:not(:last-child){border-block-end:none}.v-btn-group--vertical .v-btn:not(:first-child){border-block-start:none}.v-btn-group--vertical .v-btn:first-child{border-start-start-radius:inherit;border-start-end-radius:inherit}.v-btn-group--vertical .v-btn:last-child{border-end-start-radius:inherit;border-end-end-radius:inherit}.v-btn-group--vertical.v-btn-group--divided .v-btn:not(:last-child){border-block-end-width:thin;border-block-end-style:solid;border-block-end-color:rgba(var(--v-border-color),var(--v-border-opacity))}.v-icon{--v-icon-size-multiplier: 1;align-items:center;display:inline-flex;font-feature-settings:"liga";height:1em;justify-content:center;letter-spacing:normal;line-height:1;position:relative;opacity:var(--v-icon-opacity, 1);text-indent:0;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;width:1em;min-width:1em}.v-icon--clickable{cursor:pointer}.v-icon--disabled{pointer-events:none;opacity:.38}.v-icon--size-x-small{font-size:calc(var(--v-icon-size-multiplier) * 1em)}.v-icon--size-small{font-size:calc(var(--v-icon-size-multiplier) * 1.25em)}.v-icon--size-default{font-size:calc(var(--v-icon-size-multiplier) * 1.5em)}.v-icon--size-large{font-size:calc(var(--v-icon-size-multiplier) * 1.75em)}.v-icon--size-x-large{font-size:calc(var(--v-icon-size-multiplier) * 2em)}.v-icon__svg{fill:currentColor;width:100%;height:100%}.v-icon--start{margin-inline-end:8px}.v-icon--end{margin-inline-start:8px}.v-progress-circular{align-items:center;display:inline-flex;justify-content:center;position:relative;vertical-align:middle}.v-progress-circular>svg{width:100%;height:100%;margin:auto;position:absolute;top:0;bottom:0;left:0;right:0;z-index:0}.v-progress-circular__content{align-items:center;display:flex;justify-content:center}.v-progress-circular__underlay{color:rgba(var(--v-border-color),var(--v-border-opacity));stroke:currentColor;z-index:1}.v-progress-circular__overlay{stroke:currentColor;transition:all .2s ease-in-out,stroke-width 0s;z-index:2}.v-progress-circular--size-x-small{height:16px;width:16px}.v-progress-circular--size-small{height:24px;width:24px}.v-progress-circular--size-default{height:32px;width:32px}.v-progress-circular--size-large{height:48px;width:48px}.v-progress-circular--size-x-large{height:64px;width:64px}.v-progress-circular--indeterminate>svg{animation:progress-circular-rotate 1.4s linear infinite;transform-origin:center center;transition:all .2s ease-in-out}.v-progress-circular--indeterminate .v-progress-circular__overlay{animation:progress-circular-dash 1.4s ease-in-out infinite,progress-circular-rotate 1.4s linear infinite;stroke-dasharray:25,200;stroke-dashoffset:0;stroke-linecap:round;transform-origin:center center;transform:rotate(-90deg)}.v-progress-circular--disable-shrink>svg{animation-duration:.7s}.v-progress-circular--disable-shrink .v-progress-circular__overlay{animation:none}.v-progress-circular--indeterminate:not(.v-progress-circular--visible)>svg,.v-progress-circular--indeterminate:not(.v-progress-circular--visible) .v-progress-circular__overlay{animation-play-state:paused!important}@keyframes progress-circular-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0px}50%{stroke-dasharray:100,200;stroke-dashoffset:-15px}to{stroke-dasharray:100,200;stroke-dashoffset:-124px}}@keyframes progress-circular-rotate{to{transform:rotate(270deg)}}.v-progress-linear{background:transparent;overflow:hidden;position:relative;transition:.2s cubic-bezier(.4,0,.2,1);width:100%}@media (forced-colors: active){.v-progress-linear{border:thin solid buttontext}}.v-progress-linear__background,.v-progress-linear__buffer{background:currentColor;bottom:0;left:0;opacity:var(--v-border-opacity);position:absolute;top:0;width:100%;transition-property:width,left,right;transition:inherit}@media (forced-colors: active){.v-progress-linear__buffer{background-color:highlight;opacity:.3}}.v-progress-linear__content{align-items:center;display:flex;height:100%;justify-content:center;left:0;position:absolute;top:0;width:100%}.v-progress-linear--clickable .v-progress-linear__content{pointer-events:none}.v-progress-linear__determinate,.v-progress-linear__indeterminate{background:currentColor}@media (forced-colors: active){.v-progress-linear__determinate,.v-progress-linear__indeterminate{background-color:highlight}}.v-progress-linear__determinate{height:inherit;left:0;position:absolute;transition:inherit;transition-property:width,left,right}.v-progress-linear__indeterminate .long,.v-progress-linear__indeterminate .short{animation-play-state:paused;animation-duration:2.2s;animation-iteration-count:infinite;bottom:0;height:inherit;left:0;position:absolute;right:auto;top:0;width:auto}.v-progress-linear__indeterminate .long{animation-name:indeterminate-ltr}.v-progress-linear__indeterminate .short{animation-name:indeterminate-short-ltr}.v-progress-linear__stream{animation:stream .25s infinite linear;animation-play-state:paused;bottom:0;left:auto;opacity:.3;pointer-events:none;position:absolute;transition:inherit;transition-property:width,left,right}.v-progress-linear--reverse .v-progress-linear__background,.v-progress-linear--reverse .v-progress-linear__determinate,.v-progress-linear--reverse .v-progress-linear__content,.v-progress-linear--reverse .v-progress-linear__indeterminate .long,.v-progress-linear--reverse .v-progress-linear__indeterminate .short{left:auto;right:0}.v-progress-linear--reverse .v-progress-linear__indeterminate .long{animation-name:indeterminate-rtl}.v-progress-linear--reverse .v-progress-linear__indeterminate .short{animation-name:indeterminate-short-rtl}.v-progress-linear--reverse .v-progress-linear__stream{right:auto}.v-progress-linear--absolute,.v-progress-linear--fixed{left:0;z-index:1}.v-progress-linear--absolute{position:absolute}.v-progress-linear--fixed{position:fixed}.v-progress-linear--rounded{border-radius:9999px}.v-progress-linear--rounded.v-progress-linear--rounded-bar .v-progress-linear__determinate,.v-progress-linear--rounded.v-progress-linear--rounded-bar .v-progress-linear__indeterminate{border-radius:inherit}.v-progress-linear--striped .v-progress-linear__determinate{animation:progress-linear-stripes 1s infinite linear;background-image:linear-gradient(135deg,hsla(0,0%,100%,.25) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.25) 0,hsla(0,0%,100%,.25) 75%,transparent 0,transparent);background-repeat:repeat;background-size:var(--v-progress-linear-height)}.v-progress-linear--active .v-progress-linear__indeterminate .long,.v-progress-linear--active .v-progress-linear__indeterminate .short,.v-progress-linear--active .v-progress-linear__stream{animation-play-state:running}.v-progress-linear--rounded-bar .v-progress-linear__determinate,.v-progress-linear--rounded-bar .v-progress-linear__indeterminate,.v-progress-linear--rounded-bar .v-progress-linear__stream+.v-progress-linear__background{border-radius:9999px}.v-progress-linear--rounded-bar .v-progress-linear__determinate{border-start-start-radius:0;border-end-start-radius:0}@keyframes indeterminate-ltr{0%{left:-90%;right:100%}60%{left:-90%;right:100%}to{left:100%;right:-35%}}@keyframes indeterminate-rtl{0%{left:100%;right:-90%}60%{left:100%;right:-90%}to{left:-35%;right:100%}}@keyframes indeterminate-short-ltr{0%{left:-200%;right:100%}60%{left:107%;right:-8%}to{left:107%;right:-8%}}@keyframes indeterminate-short-rtl{0%{left:100%;right:-200%}60%{left:-8%;right:107%}to{left:-8%;right:107%}}@keyframes stream{to{transform:translate(var(--v-progress-linear-stream-to))}}@keyframes progress-linear-stripes{0%{background-position-x:var(--v-progress-linear-height)}}.v-ripple__container{color:inherit;border-radius:inherit;position:absolute;width:100%;height:100%;left:0;top:0;overflow:hidden;z-index:0;pointer-events:none;contain:strict}.v-ripple__animation{color:inherit;position:absolute;top:0;left:0;border-radius:50%;background:currentColor;opacity:0;pointer-events:none;overflow:hidden;will-change:transform,opacity}.v-ripple__animation--enter{transition:none;opacity:0}.v-ripple__animation--in{transition:transform .25s cubic-bezier(0,0,.2,1),opacity .1s cubic-bezier(0,0,.2,1);opacity:calc(.25 * var(--v-theme-overlay-multiplier))}.v-ripple__animation--out{transition:opacity .3s cubic-bezier(0,0,.2,1);opacity:0}.v-snackbar{justify-content:center;z-index:10000;margin:8px;margin-inline-end:calc(8px + var(--v-scrollbar-offset));padding:var(--v-layout-top) var(--v-layout-right) var(--v-layout-bottom) var(--v-layout-left)}.v-snackbar:not(.v-snackbar--center):not(.v-snackbar--top){align-items:flex-end}.v-snackbar__wrapper{align-items:center;display:flex;max-width:672px;min-height:48px;min-width:344px;overflow:hidden;padding:0;border-radius:4px}.v-snackbar--variant-plain,.v-snackbar--variant-outlined,.v-snackbar--variant-text,.v-snackbar--variant-tonal{background:transparent;color:inherit}.v-snackbar--variant-plain{opacity:.62}.v-snackbar--variant-plain:focus,.v-snackbar--variant-plain:hover{opacity:1}.v-snackbar--variant-plain .v-snackbar__overlay{display:none}.v-snackbar--variant-elevated,.v-snackbar--variant-flat{background:rgb(var(--v-theme-surface-variant));color:rgb(var(--v-theme-on-surface-variant))}.v-snackbar--variant-elevated{box-shadow:0 3px 5px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 6px 10px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 18px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-snackbar--variant-flat{box-shadow:0 0 0 0 var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 0 0 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 0 0 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-snackbar--variant-outlined{border:thin solid currentColor}.v-snackbar--variant-text .v-snackbar__overlay{background:currentColor}.v-snackbar--variant-tonal .v-snackbar__underlay{background:currentColor;opacity:var(--v-activated-opacity);border-radius:inherit;top:0;right:0;bottom:0;left:0;pointer-events:none}.v-snackbar .v-snackbar__underlay{position:absolute}.v-snackbar__content{flex-grow:1;font-size:.875rem;font-weight:400;letter-spacing:.0178571429em;line-height:1.425;margin-right:auto;padding:14px 16px;text-align:initial}.v-snackbar__actions{align-items:center;align-self:center;display:flex;margin-inline-end:8px}.v-snackbar__actions>.v-btn{padding:0 8px;min-width:auto}.v-snackbar__timer{width:100%;position:absolute;top:0}.v-snackbar__timer .v-progress-linear{transition:.2s linear}.v-snackbar--absolute{position:absolute;z-index:1}.v-snackbar--multi-line .v-snackbar__wrapper{min-height:68px}.v-snackbar--vertical .v-snackbar__wrapper{flex-direction:column}.v-snackbar--vertical .v-snackbar__wrapper .v-snackbar__actions{align-self:flex-end;margin-bottom:8px}.v-snackbar--center{align-items:center;justify-content:center}.v-snackbar--top{align-items:flex-start}.v-snackbar--bottom{align-items:flex-end}.v-snackbar--left,.v-snackbar--start{justify-content:flex-start}.v-snackbar--right,.v-snackbar--end{justify-content:flex-end}.v-snackbar-transition-enter-active,.v-snackbar-transition-leave-active{transition-duration:.15s;transition-timing-function:cubic-bezier(0,0,.2,1)}.v-snackbar-transition-enter-active{transition-property:opacity,transform}.v-snackbar-transition-enter-from{opacity:0;transform:scale(.8)}.v-snackbar-transition-leave-active{transition-property:opacity}.v-snackbar-transition-leave-to{opacity:0}.v-overlay-container{contain:layout;left:0;pointer-events:none;position:absolute;top:0;display:contents}.v-overlay-scroll-blocked{padding-inline-end:var(--v-scrollbar-offset)}.v-overlay-scroll-blocked:not(html){overflow-y:hidden!important}html.v-overlay-scroll-blocked{position:fixed;top:var(--v-body-scroll-y);left:var(--v-body-scroll-x);width:100%;height:100%}.v-overlay{--v-overlay-opacity: .32;border-radius:inherit;display:flex;left:0;pointer-events:none;position:fixed;top:0;bottom:0;right:0}.v-overlay__content{outline:none;position:absolute;pointer-events:auto;contain:layout}.v-overlay__scrim{pointer-events:auto;background:#000;border-radius:inherit;bottom:0;left:0;opacity:var(--v-overlay-opacity);position:fixed;right:0;top:0}.v-overlay--absolute,.v-overlay--contained .v-overlay__scrim{position:absolute}.v-overlay--scroll-blocked{padding-inline-end:var(--v-scrollbar-offset)}.v-main[data-v-a961ccf3]{min-height:100vh}.v-application{display:flex;background:rgb(var(--v-theme-background));color:rgba(var(--v-theme-on-background),var(--v-high-emphasis-opacity))}.v-application__wrap{backface-visibility:hidden;display:flex;flex-direction:column;flex:1 1 auto;max-width:100%;min-height:100vh;min-height:100dvh;position:relative}.v-main{flex:1 0 auto;max-width:100%;transition:.2s cubic-bezier(.4,0,.2,1);padding-left:var(--v-layout-left);padding-right:var(--v-layout-right);padding-top:var(--v-layout-top);padding-bottom:var(--v-layout-bottom)}.v-main__scroller{max-width:100%;position:relative}.v-main--scrollable{display:flex;position:absolute;top:0;left:0;width:100%;height:100%}.v-main--scrollable>.v-main__scroller{flex:1 1 auto;overflow-y:auto;--v-layout-left: 0px;--v-layout-right: 0px;--v-layout-top: 0px;--v-layout-bottom: 0px} + */html{box-sizing:border-box;overflow-y:scroll;-webkit-text-size-adjust:100%;word-break:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4}*,:before,:after{background-repeat:no-repeat;box-sizing:inherit}:before,:after{text-decoration:inherit;vertical-align:inherit}*{padding:0;margin:0}hr{overflow:visible;height:0}details,main{display:block}[hidden]{display:none}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}a{background-color:transparent}a:active,a:hover{outline-width:0}code,kbd,pre,samp{font-family:monospace,monospace}pre{font-size:1em}input{border-radius:0}[disabled]{cursor:default}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}textarea{overflow:auto;resize:vertical}button,input,optgroup,select,textarea{font:inherit}optgroup{font-weight:700}button{overflow:visible}button,[type=button],[type=reset],[type=submit],[role=button]{cursor:pointer;color:inherit}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{outline:1px dotted ButtonText}button,html [type=button],[type=reset],[type=submit]{-webkit-appearance:button}button,input,select,textarea{background-color:transparent;border-style:none}select{-moz-appearance:none;-webkit-appearance:none}select::-ms-expand{display:none}select::-ms-value{color:currentColor}legend{border:0;color:inherit;display:table;white-space:normal;max-width:100%}::-webkit-file-upload-button{-webkit-appearance:button;color:inherit;font:inherit}::-ms-clear,::-ms-reveal{display:none}img{border-style:none}@media screen{[hidden~=screen]{display:inherit}[hidden~=screen]:not(:active):not(:focus):not(:target){position:absolute!important;clip:rect(0 0 0 0)!important}}[aria-busy=true]{cursor:progress}[aria-controls]{cursor:pointer}[aria-disabled=true]{cursor:default}.dialog-transition-enter-active,.dialog-bottom-transition-enter-active,.dialog-top-transition-enter-active{transition-duration:225ms!important;transition-timing-function:cubic-bezier(0,0,.2,1)!important}.dialog-transition-leave-active,.dialog-bottom-transition-leave-active,.dialog-top-transition-leave-active{transition-duration:125ms!important;transition-timing-function:cubic-bezier(.4,0,1,1)!important}.dialog-transition-enter-active,.dialog-transition-leave-active,.dialog-bottom-transition-enter-active,.dialog-bottom-transition-leave-active,.dialog-top-transition-enter-active,.dialog-top-transition-leave-active{transition-property:transform,opacity!important;pointer-events:none}.dialog-transition-enter-from,.dialog-transition-leave-to{transform:scale(.9);opacity:0}.dialog-transition-enter-to,.dialog-transition-leave-from{opacity:1}.dialog-bottom-transition-enter-from,.dialog-bottom-transition-leave-to{transform:translateY(calc(50vh + 50%))}.dialog-top-transition-enter-from,.dialog-top-transition-leave-to{transform:translateY(calc(-50vh - 50%))}.picker-transition-enter-active,.picker-reverse-transition-enter-active,.picker-transition-leave-active,.picker-reverse-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.picker-transition-move,.picker-reverse-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.picker-transition-enter-from,.picker-transition-leave-to,.picker-reverse-transition-enter-from,.picker-reverse-transition-leave-to{opacity:0}.picker-transition-leave-from,.picker-transition-leave-active,.picker-transition-leave-to,.picker-reverse-transition-leave-from,.picker-reverse-transition-leave-active,.picker-reverse-transition-leave-to{position:absolute!important}.picker-transition-enter-active,.picker-transition-leave-active,.picker-reverse-transition-enter-active,.picker-reverse-transition-leave-active{transition-property:transform,opacity!important}.picker-transition-enter-active,.picker-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.picker-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.picker-transition-enter-from{transform:translate(100%)}.picker-transition-leave-to{transform:translate(-100%)}.picker-reverse-transition-enter-active,.picker-reverse-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.picker-reverse-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.picker-reverse-transition-enter-from{transform:translate(-100%)}.picker-reverse-transition-leave-to{transform:translate(100%)}.expand-transition-enter-active,.expand-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.expand-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.expand-transition-enter-active,.expand-transition-leave-active{transition-property:height!important}.expand-x-transition-enter-active,.expand-x-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.expand-x-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.expand-x-transition-enter-active,.expand-x-transition-leave-active{transition-property:width!important}.scale-transition-enter-active,.scale-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scale-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scale-transition-leave-to{opacity:0}.scale-transition-leave-active{transition-duration:.1s!important}.scale-transition-enter-from{opacity:0;transform:scale(0)}.scale-transition-enter-active,.scale-transition-leave-active{transition-property:transform,opacity!important}.scale-rotate-transition-enter-active,.scale-rotate-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scale-rotate-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scale-rotate-transition-leave-to{opacity:0}.scale-rotate-transition-leave-active{transition-duration:.1s!important}.scale-rotate-transition-enter-from{opacity:0;transform:scale(0) rotate(-45deg)}.scale-rotate-transition-enter-active,.scale-rotate-transition-leave-active{transition-property:transform,opacity!important}.scale-rotate-reverse-transition-enter-active,.scale-rotate-reverse-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scale-rotate-reverse-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scale-rotate-reverse-transition-leave-to{opacity:0}.scale-rotate-reverse-transition-leave-active{transition-duration:.1s!important}.scale-rotate-reverse-transition-enter-from{opacity:0;transform:scale(0) rotate(45deg)}.scale-rotate-reverse-transition-enter-active,.scale-rotate-reverse-transition-leave-active{transition-property:transform,opacity!important}.message-transition-enter-active,.message-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.message-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.message-transition-enter-from,.message-transition-leave-to{opacity:0;transform:translateY(-15px)}.message-transition-leave-from,.message-transition-leave-active{position:absolute}.message-transition-enter-active,.message-transition-leave-active{transition-property:transform,opacity!important}.slide-y-transition-enter-active,.slide-y-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.slide-y-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.slide-y-transition-enter-from,.slide-y-transition-leave-to{opacity:0;transform:translateY(-15px)}.slide-y-transition-enter-active,.slide-y-transition-leave-active{transition-property:transform,opacity!important}.slide-y-reverse-transition-enter-active,.slide-y-reverse-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.slide-y-reverse-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.slide-y-reverse-transition-enter-from,.slide-y-reverse-transition-leave-to{opacity:0;transform:translateY(15px)}.slide-y-reverse-transition-enter-active,.slide-y-reverse-transition-leave-active{transition-property:transform,opacity!important}.scroll-y-transition-enter-active,.scroll-y-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scroll-y-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scroll-y-transition-enter-from,.scroll-y-transition-leave-to{opacity:0}.scroll-y-transition-enter-from{transform:translateY(-15px)}.scroll-y-transition-leave-to{transform:translateY(15px)}.scroll-y-transition-enter-active,.scroll-y-transition-leave-active{transition-property:transform,opacity!important}.scroll-y-reverse-transition-enter-active,.scroll-y-reverse-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scroll-y-reverse-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scroll-y-reverse-transition-enter-from,.scroll-y-reverse-transition-leave-to{opacity:0}.scroll-y-reverse-transition-enter-from{transform:translateY(15px)}.scroll-y-reverse-transition-leave-to{transform:translateY(-15px)}.scroll-y-reverse-transition-enter-active,.scroll-y-reverse-transition-leave-active{transition-property:transform,opacity!important}.scroll-x-transition-enter-active,.scroll-x-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scroll-x-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scroll-x-transition-enter-from,.scroll-x-transition-leave-to{opacity:0}.scroll-x-transition-enter-from{transform:translate(-15px)}.scroll-x-transition-leave-to{transform:translate(15px)}.scroll-x-transition-enter-active,.scroll-x-transition-leave-active{transition-property:transform,opacity!important}.scroll-x-reverse-transition-enter-active,.scroll-x-reverse-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scroll-x-reverse-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scroll-x-reverse-transition-enter-from,.scroll-x-reverse-transition-leave-to{opacity:0}.scroll-x-reverse-transition-enter-from{transform:translate(15px)}.scroll-x-reverse-transition-leave-to{transform:translate(-15px)}.scroll-x-reverse-transition-enter-active,.scroll-x-reverse-transition-leave-active{transition-property:transform,opacity!important}.slide-x-transition-enter-active,.slide-x-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.slide-x-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.slide-x-transition-enter-from,.slide-x-transition-leave-to{opacity:0;transform:translate(-15px)}.slide-x-transition-enter-active,.slide-x-transition-leave-active{transition-property:transform,opacity!important}.slide-x-reverse-transition-enter-active,.slide-x-reverse-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.slide-x-reverse-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.slide-x-reverse-transition-enter-from,.slide-x-reverse-transition-leave-to{opacity:0;transform:translate(15px)}.slide-x-reverse-transition-enter-active,.slide-x-reverse-transition-leave-active{transition-property:transform,opacity!important}.fade-transition-enter-active,.fade-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.fade-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.fade-transition-enter-from,.fade-transition-leave-to{opacity:0!important}.fade-transition-enter-active,.fade-transition-leave-active{transition-property:opacity!important}.fab-transition-enter-active,.fab-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.fab-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.fab-transition-enter-from,.fab-transition-leave-to{transform:scale(0) rotate(-45deg)}.fab-transition-enter-active,.fab-transition-leave-active{transition-property:transform!important}.v-locale--is-rtl{direction:rtl}.v-locale--is-ltr{direction:ltr}.blockquote{padding:16px 0 16px 24px;font-size:18px;font-weight:300}html{font-family:Roboto,sans-serif;line-height:1.5;font-size:1rem;overflow-x:hidden;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:rgba(0,0,0,0)}html.overflow-y-hidden{overflow-y:hidden!important}:root{--v-theme-overlay-multiplier: 1;--v-scrollbar-offset: 0px}@supports (-webkit-touch-callout: none){body{cursor:pointer}}@media only print{.hidden-print-only{display:none!important}}@media only screen{.hidden-screen-only{display:none!important}}@media (max-width: 599.98px){.hidden-xs{display:none!important}}@media (min-width: 600px) and (max-width: 959.98px){.hidden-sm{display:none!important}}@media (min-width: 960px) and (max-width: 1279.98px){.hidden-md{display:none!important}}@media (min-width: 1280px) and (max-width: 1919.98px){.hidden-lg{display:none!important}}@media (min-width: 1920px) and (max-width: 2559.98px){.hidden-xl{display:none!important}}@media (min-width: 2560px){.hidden-xxl{display:none!important}}@media (min-width: 600px){.hidden-sm-and-up{display:none!important}}@media (min-width: 960px){.hidden-md-and-up{display:none!important}}@media (min-width: 1280px){.hidden-lg-and-up{display:none!important}}@media (min-width: 1920px){.hidden-xl-and-up{display:none!important}}@media (max-width: 959.98px){.hidden-sm-and-down{display:none!important}}@media (max-width: 1279.98px){.hidden-md-and-down{display:none!important}}@media (max-width: 1919.98px){.hidden-lg-and-down{display:none!important}}@media (max-width: 2559.98px){.hidden-xl-and-down{display:none!important}}.elevation-24{box-shadow:0 11px 15px -7px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 24px 38px 3px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 9px 46px 8px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-23{box-shadow:0 11px 14px -7px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 23px 36px 3px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 9px 44px 8px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-22{box-shadow:0 10px 14px -6px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 22px 35px 3px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 8px 42px 7px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-21{box-shadow:0 10px 13px -6px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 21px 33px 3px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 8px 40px 7px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-20{box-shadow:0 10px 13px -6px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 20px 31px 3px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 8px 38px 7px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-19{box-shadow:0 9px 12px -6px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 19px 29px 2px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 7px 36px 6px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-18{box-shadow:0 9px 11px -5px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 18px 28px 2px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 7px 34px 6px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-17{box-shadow:0 8px 11px -5px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 17px 26px 2px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 6px 32px 5px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-16{box-shadow:0 8px 10px -5px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 16px 24px 2px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 6px 30px 5px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-15{box-shadow:0 8px 9px -5px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 15px 22px 2px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 6px 28px 5px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-14{box-shadow:0 7px 9px -4px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 14px 21px 2px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 5px 26px 4px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-13{box-shadow:0 7px 8px -4px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 13px 19px 2px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 5px 24px 4px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-12{box-shadow:0 7px 8px -4px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 12px 17px 2px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 5px 22px 4px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-11{box-shadow:0 6px 7px -4px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 11px 15px 1px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 4px 20px 3px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-10{box-shadow:0 6px 6px -3px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 10px 14px 1px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 4px 18px 3px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-9{box-shadow:0 5px 6px -3px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 9px 12px 1px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 3px 16px 2px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-8{box-shadow:0 5px 5px -3px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 8px 10px 1px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 3px 14px 2px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-7{box-shadow:0 4px 5px -2px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 7px 10px 1px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 2px 16px 1px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-6{box-shadow:0 3px 5px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 6px 10px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 18px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-5{box-shadow:0 3px 5px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 5px 8px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 14px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-4{box-shadow:0 2px 4px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 4px 5px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 10px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-3{box-shadow:0 3px 3px -2px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 3px 4px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 8px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-2{box-shadow:0 3px 1px -2px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 2px 2px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 5px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-1{box-shadow:0 2px 1px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 1px 1px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 3px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-0{box-shadow:0 0 0 0 var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 0 0 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 0 0 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.pointer-events-none{pointer-events:none!important}.pointer-events-auto{pointer-events:auto!important}.pointer-pass-through{pointer-events:none!important}.pointer-pass-through>*{pointer-events:auto!important}.d-sr-only,.d-sr-only-focusable:not(:focus){border:0!important;clip:rect(0,0,0,0)!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:1px!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.overflow-x-auto{overflow-x:auto!important}.overflow-x-hidden{overflow-x:hidden!important}.overflow-x-scroll{overflow-x:scroll!important}.overflow-y-auto{overflow-y:auto!important}.overflow-y-hidden{overflow-y:hidden!important}.overflow-y-scroll{overflow-y:scroll!important}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.float-none{float:none!important}.float-left{float:left!important}.float-right{float:right!important}.v-locale--is-rtl .float-end{float:left!important}.v-locale--is-rtl .float-start,.v-locale--is-ltr .float-end{float:right!important}.v-locale--is-ltr .float-start{float:left!important}.flex-fill,.flex-1-1{flex:1 1 auto!important}.flex-1-0{flex:1 0 auto!important}.flex-0-1{flex:0 1 auto!important}.flex-0-0{flex:0 0 auto!important}.flex-1-1-100{flex:1 1 100%!important}.flex-1-0-100{flex:1 0 100%!important}.flex-0-1-100{flex:0 1 100%!important}.flex-0-0-100{flex:0 0 100%!important}.flex-1-1-0{flex:1 1 0!important}.flex-1-0-0{flex:1 0 0!important}.flex-0-1-0{flex:0 1 0!important}.flex-0-0-0{flex:0 0 0!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-start{justify-content:flex-start!important}.justify-end{justify-content:flex-end!important}.justify-center{justify-content:center!important}.justify-space-between{justify-content:space-between!important}.justify-space-around{justify-content:space-around!important}.justify-space-evenly{justify-content:space-evenly!important}.align-start{align-items:flex-start!important}.align-end{align-items:flex-end!important}.align-center{align-items:center!important}.align-baseline{align-items:baseline!important}.align-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-space-between{align-content:space-between!important}.align-content-space-around{align-content:space-around!important}.align-content-space-evenly{align-content:space-evenly!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-6{order:6!important}.order-7{order:7!important}.order-8{order:8!important}.order-9{order:9!important}.order-10{order:10!important}.order-11{order:11!important}.order-12{order:12!important}.order-last{order:13!important}.ga-0{gap:0px!important}.ga-1{gap:4px!important}.ga-2{gap:8px!important}.ga-3{gap:12px!important}.ga-4{gap:16px!important}.ga-5{gap:20px!important}.ga-6{gap:24px!important}.ga-7{gap:28px!important}.ga-8{gap:32px!important}.ga-9{gap:36px!important}.ga-10{gap:40px!important}.ga-11{gap:44px!important}.ga-12{gap:48px!important}.ga-13{gap:52px!important}.ga-14{gap:56px!important}.ga-15{gap:60px!important}.ga-16{gap:64px!important}.ga-auto{gap:auto!important}.gr-0{row-gap:0px!important}.gr-1{row-gap:4px!important}.gr-2{row-gap:8px!important}.gr-3{row-gap:12px!important}.gr-4{row-gap:16px!important}.gr-5{row-gap:20px!important}.gr-6{row-gap:24px!important}.gr-7{row-gap:28px!important}.gr-8{row-gap:32px!important}.gr-9{row-gap:36px!important}.gr-10{row-gap:40px!important}.gr-11{row-gap:44px!important}.gr-12{row-gap:48px!important}.gr-13{row-gap:52px!important}.gr-14{row-gap:56px!important}.gr-15{row-gap:60px!important}.gr-16{row-gap:64px!important}.gr-auto{row-gap:auto!important}.gc-0{-moz-column-gap:0px!important;column-gap:0px!important}.gc-1{-moz-column-gap:4px!important;column-gap:4px!important}.gc-2{-moz-column-gap:8px!important;column-gap:8px!important}.gc-3{-moz-column-gap:12px!important;column-gap:12px!important}.gc-4{-moz-column-gap:16px!important;column-gap:16px!important}.gc-5{-moz-column-gap:20px!important;column-gap:20px!important}.gc-6{-moz-column-gap:24px!important;column-gap:24px!important}.gc-7{-moz-column-gap:28px!important;column-gap:28px!important}.gc-8{-moz-column-gap:32px!important;column-gap:32px!important}.gc-9{-moz-column-gap:36px!important;column-gap:36px!important}.gc-10{-moz-column-gap:40px!important;column-gap:40px!important}.gc-11{-moz-column-gap:44px!important;column-gap:44px!important}.gc-12{-moz-column-gap:48px!important;column-gap:48px!important}.gc-13{-moz-column-gap:52px!important;column-gap:52px!important}.gc-14{-moz-column-gap:56px!important;column-gap:56px!important}.gc-15{-moz-column-gap:60px!important;column-gap:60px!important}.gc-16{-moz-column-gap:64px!important;column-gap:64px!important}.gc-auto{-moz-column-gap:auto!important;column-gap:auto!important}.ma-0{margin:0!important}.ma-1{margin:4px!important}.ma-2{margin:8px!important}.ma-3{margin:12px!important}.ma-4{margin:16px!important}.ma-5{margin:20px!important}.ma-6{margin:24px!important}.ma-7{margin:28px!important}.ma-8{margin:32px!important}.ma-9{margin:36px!important}.ma-10{margin:40px!important}.ma-11{margin:44px!important}.ma-12{margin:48px!important}.ma-13{margin:52px!important}.ma-14{margin:56px!important}.ma-15{margin:60px!important}.ma-16{margin:64px!important}.ma-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:4px!important;margin-left:4px!important}.mx-2{margin-right:8px!important;margin-left:8px!important}.mx-3{margin-right:12px!important;margin-left:12px!important}.mx-4{margin-right:16px!important;margin-left:16px!important}.mx-5{margin-right:20px!important;margin-left:20px!important}.mx-6{margin-right:24px!important;margin-left:24px!important}.mx-7{margin-right:28px!important;margin-left:28px!important}.mx-8{margin-right:32px!important;margin-left:32px!important}.mx-9{margin-right:36px!important;margin-left:36px!important}.mx-10{margin-right:40px!important;margin-left:40px!important}.mx-11{margin-right:44px!important;margin-left:44px!important}.mx-12{margin-right:48px!important;margin-left:48px!important}.mx-13{margin-right:52px!important;margin-left:52px!important}.mx-14{margin-right:56px!important;margin-left:56px!important}.mx-15{margin-right:60px!important;margin-left:60px!important}.mx-16{margin-right:64px!important;margin-left:64px!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:4px!important;margin-bottom:4px!important}.my-2{margin-top:8px!important;margin-bottom:8px!important}.my-3{margin-top:12px!important;margin-bottom:12px!important}.my-4{margin-top:16px!important;margin-bottom:16px!important}.my-5{margin-top:20px!important;margin-bottom:20px!important}.my-6{margin-top:24px!important;margin-bottom:24px!important}.my-7{margin-top:28px!important;margin-bottom:28px!important}.my-8{margin-top:32px!important;margin-bottom:32px!important}.my-9{margin-top:36px!important;margin-bottom:36px!important}.my-10{margin-top:40px!important;margin-bottom:40px!important}.my-11{margin-top:44px!important;margin-bottom:44px!important}.my-12{margin-top:48px!important;margin-bottom:48px!important}.my-13{margin-top:52px!important;margin-bottom:52px!important}.my-14{margin-top:56px!important;margin-bottom:56px!important}.my-15{margin-top:60px!important;margin-bottom:60px!important}.my-16{margin-top:64px!important;margin-bottom:64px!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:4px!important}.mt-2{margin-top:8px!important}.mt-3{margin-top:12px!important}.mt-4{margin-top:16px!important}.mt-5{margin-top:20px!important}.mt-6{margin-top:24px!important}.mt-7{margin-top:28px!important}.mt-8{margin-top:32px!important}.mt-9{margin-top:36px!important}.mt-10{margin-top:40px!important}.mt-11{margin-top:44px!important}.mt-12{margin-top:48px!important}.mt-13{margin-top:52px!important}.mt-14{margin-top:56px!important}.mt-15{margin-top:60px!important}.mt-16{margin-top:64px!important}.mt-auto{margin-top:auto!important}.mr-0{margin-right:0!important}.mr-1{margin-right:4px!important}.mr-2{margin-right:8px!important}.mr-3{margin-right:12px!important}.mr-4{margin-right:16px!important}.mr-5{margin-right:20px!important}.mr-6{margin-right:24px!important}.mr-7{margin-right:28px!important}.mr-8{margin-right:32px!important}.mr-9{margin-right:36px!important}.mr-10{margin-right:40px!important}.mr-11{margin-right:44px!important}.mr-12{margin-right:48px!important}.mr-13{margin-right:52px!important}.mr-14{margin-right:56px!important}.mr-15{margin-right:60px!important}.mr-16{margin-right:64px!important}.mr-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:4px!important}.mb-2{margin-bottom:8px!important}.mb-3{margin-bottom:12px!important}.mb-4{margin-bottom:16px!important}.mb-5{margin-bottom:20px!important}.mb-6{margin-bottom:24px!important}.mb-7{margin-bottom:28px!important}.mb-8{margin-bottom:32px!important}.mb-9{margin-bottom:36px!important}.mb-10{margin-bottom:40px!important}.mb-11{margin-bottom:44px!important}.mb-12{margin-bottom:48px!important}.mb-13{margin-bottom:52px!important}.mb-14{margin-bottom:56px!important}.mb-15{margin-bottom:60px!important}.mb-16{margin-bottom:64px!important}.mb-auto{margin-bottom:auto!important}.ml-0{margin-left:0!important}.ml-1{margin-left:4px!important}.ml-2{margin-left:8px!important}.ml-3{margin-left:12px!important}.ml-4{margin-left:16px!important}.ml-5{margin-left:20px!important}.ml-6{margin-left:24px!important}.ml-7{margin-left:28px!important}.ml-8{margin-left:32px!important}.ml-9{margin-left:36px!important}.ml-10{margin-left:40px!important}.ml-11{margin-left:44px!important}.ml-12{margin-left:48px!important}.ml-13{margin-left:52px!important}.ml-14{margin-left:56px!important}.ml-15{margin-left:60px!important}.ml-16{margin-left:64px!important}.ml-auto{margin-left:auto!important}.ms-0{margin-inline-start:0px!important}.ms-1{margin-inline-start:4px!important}.ms-2{margin-inline-start:8px!important}.ms-3{margin-inline-start:12px!important}.ms-4{margin-inline-start:16px!important}.ms-5{margin-inline-start:20px!important}.ms-6{margin-inline-start:24px!important}.ms-7{margin-inline-start:28px!important}.ms-8{margin-inline-start:32px!important}.ms-9{margin-inline-start:36px!important}.ms-10{margin-inline-start:40px!important}.ms-11{margin-inline-start:44px!important}.ms-12{margin-inline-start:48px!important}.ms-13{margin-inline-start:52px!important}.ms-14{margin-inline-start:56px!important}.ms-15{margin-inline-start:60px!important}.ms-16{margin-inline-start:64px!important}.ms-auto{margin-inline-start:auto!important}.me-0{margin-inline-end:0px!important}.me-1{margin-inline-end:4px!important}.me-2{margin-inline-end:8px!important}.me-3{margin-inline-end:12px!important}.me-4{margin-inline-end:16px!important}.me-5{margin-inline-end:20px!important}.me-6{margin-inline-end:24px!important}.me-7{margin-inline-end:28px!important}.me-8{margin-inline-end:32px!important}.me-9{margin-inline-end:36px!important}.me-10{margin-inline-end:40px!important}.me-11{margin-inline-end:44px!important}.me-12{margin-inline-end:48px!important}.me-13{margin-inline-end:52px!important}.me-14{margin-inline-end:56px!important}.me-15{margin-inline-end:60px!important}.me-16{margin-inline-end:64px!important}.me-auto{margin-inline-end:auto!important}.ma-n1{margin:-4px!important}.ma-n2{margin:-8px!important}.ma-n3{margin:-12px!important}.ma-n4{margin:-16px!important}.ma-n5{margin:-20px!important}.ma-n6{margin:-24px!important}.ma-n7{margin:-28px!important}.ma-n8{margin:-32px!important}.ma-n9{margin:-36px!important}.ma-n10{margin:-40px!important}.ma-n11{margin:-44px!important}.ma-n12{margin:-48px!important}.ma-n13{margin:-52px!important}.ma-n14{margin:-56px!important}.ma-n15{margin:-60px!important}.ma-n16{margin:-64px!important}.mx-n1{margin-right:-4px!important;margin-left:-4px!important}.mx-n2{margin-right:-8px!important;margin-left:-8px!important}.mx-n3{margin-right:-12px!important;margin-left:-12px!important}.mx-n4{margin-right:-16px!important;margin-left:-16px!important}.mx-n5{margin-right:-20px!important;margin-left:-20px!important}.mx-n6{margin-right:-24px!important;margin-left:-24px!important}.mx-n7{margin-right:-28px!important;margin-left:-28px!important}.mx-n8{margin-right:-32px!important;margin-left:-32px!important}.mx-n9{margin-right:-36px!important;margin-left:-36px!important}.mx-n10{margin-right:-40px!important;margin-left:-40px!important}.mx-n11{margin-right:-44px!important;margin-left:-44px!important}.mx-n12{margin-right:-48px!important;margin-left:-48px!important}.mx-n13{margin-right:-52px!important;margin-left:-52px!important}.mx-n14{margin-right:-56px!important;margin-left:-56px!important}.mx-n15{margin-right:-60px!important;margin-left:-60px!important}.mx-n16{margin-right:-64px!important;margin-left:-64px!important}.my-n1{margin-top:-4px!important;margin-bottom:-4px!important}.my-n2{margin-top:-8px!important;margin-bottom:-8px!important}.my-n3{margin-top:-12px!important;margin-bottom:-12px!important}.my-n4{margin-top:-16px!important;margin-bottom:-16px!important}.my-n5{margin-top:-20px!important;margin-bottom:-20px!important}.my-n6{margin-top:-24px!important;margin-bottom:-24px!important}.my-n7{margin-top:-28px!important;margin-bottom:-28px!important}.my-n8{margin-top:-32px!important;margin-bottom:-32px!important}.my-n9{margin-top:-36px!important;margin-bottom:-36px!important}.my-n10{margin-top:-40px!important;margin-bottom:-40px!important}.my-n11{margin-top:-44px!important;margin-bottom:-44px!important}.my-n12{margin-top:-48px!important;margin-bottom:-48px!important}.my-n13{margin-top:-52px!important;margin-bottom:-52px!important}.my-n14{margin-top:-56px!important;margin-bottom:-56px!important}.my-n15{margin-top:-60px!important;margin-bottom:-60px!important}.my-n16{margin-top:-64px!important;margin-bottom:-64px!important}.mt-n1{margin-top:-4px!important}.mt-n2{margin-top:-8px!important}.mt-n3{margin-top:-12px!important}.mt-n4{margin-top:-16px!important}.mt-n5{margin-top:-20px!important}.mt-n6{margin-top:-24px!important}.mt-n7{margin-top:-28px!important}.mt-n8{margin-top:-32px!important}.mt-n9{margin-top:-36px!important}.mt-n10{margin-top:-40px!important}.mt-n11{margin-top:-44px!important}.mt-n12{margin-top:-48px!important}.mt-n13{margin-top:-52px!important}.mt-n14{margin-top:-56px!important}.mt-n15{margin-top:-60px!important}.mt-n16{margin-top:-64px!important}.mr-n1{margin-right:-4px!important}.mr-n2{margin-right:-8px!important}.mr-n3{margin-right:-12px!important}.mr-n4{margin-right:-16px!important}.mr-n5{margin-right:-20px!important}.mr-n6{margin-right:-24px!important}.mr-n7{margin-right:-28px!important}.mr-n8{margin-right:-32px!important}.mr-n9{margin-right:-36px!important}.mr-n10{margin-right:-40px!important}.mr-n11{margin-right:-44px!important}.mr-n12{margin-right:-48px!important}.mr-n13{margin-right:-52px!important}.mr-n14{margin-right:-56px!important}.mr-n15{margin-right:-60px!important}.mr-n16{margin-right:-64px!important}.mb-n1{margin-bottom:-4px!important}.mb-n2{margin-bottom:-8px!important}.mb-n3{margin-bottom:-12px!important}.mb-n4{margin-bottom:-16px!important}.mb-n5{margin-bottom:-20px!important}.mb-n6{margin-bottom:-24px!important}.mb-n7{margin-bottom:-28px!important}.mb-n8{margin-bottom:-32px!important}.mb-n9{margin-bottom:-36px!important}.mb-n10{margin-bottom:-40px!important}.mb-n11{margin-bottom:-44px!important}.mb-n12{margin-bottom:-48px!important}.mb-n13{margin-bottom:-52px!important}.mb-n14{margin-bottom:-56px!important}.mb-n15{margin-bottom:-60px!important}.mb-n16{margin-bottom:-64px!important}.ml-n1{margin-left:-4px!important}.ml-n2{margin-left:-8px!important}.ml-n3{margin-left:-12px!important}.ml-n4{margin-left:-16px!important}.ml-n5{margin-left:-20px!important}.ml-n6{margin-left:-24px!important}.ml-n7{margin-left:-28px!important}.ml-n8{margin-left:-32px!important}.ml-n9{margin-left:-36px!important}.ml-n10{margin-left:-40px!important}.ml-n11{margin-left:-44px!important}.ml-n12{margin-left:-48px!important}.ml-n13{margin-left:-52px!important}.ml-n14{margin-left:-56px!important}.ml-n15{margin-left:-60px!important}.ml-n16{margin-left:-64px!important}.ms-n1{margin-inline-start:-4px!important}.ms-n2{margin-inline-start:-8px!important}.ms-n3{margin-inline-start:-12px!important}.ms-n4{margin-inline-start:-16px!important}.ms-n5{margin-inline-start:-20px!important}.ms-n6{margin-inline-start:-24px!important}.ms-n7{margin-inline-start:-28px!important}.ms-n8{margin-inline-start:-32px!important}.ms-n9{margin-inline-start:-36px!important}.ms-n10{margin-inline-start:-40px!important}.ms-n11{margin-inline-start:-44px!important}.ms-n12{margin-inline-start:-48px!important}.ms-n13{margin-inline-start:-52px!important}.ms-n14{margin-inline-start:-56px!important}.ms-n15{margin-inline-start:-60px!important}.ms-n16{margin-inline-start:-64px!important}.me-n1{margin-inline-end:-4px!important}.me-n2{margin-inline-end:-8px!important}.me-n3{margin-inline-end:-12px!important}.me-n4{margin-inline-end:-16px!important}.me-n5{margin-inline-end:-20px!important}.me-n6{margin-inline-end:-24px!important}.me-n7{margin-inline-end:-28px!important}.me-n8{margin-inline-end:-32px!important}.me-n9{margin-inline-end:-36px!important}.me-n10{margin-inline-end:-40px!important}.me-n11{margin-inline-end:-44px!important}.me-n12{margin-inline-end:-48px!important}.me-n13{margin-inline-end:-52px!important}.me-n14{margin-inline-end:-56px!important}.me-n15{margin-inline-end:-60px!important}.me-n16{margin-inline-end:-64px!important}.pa-0{padding:0!important}.pa-1{padding:4px!important}.pa-2{padding:8px!important}.pa-3{padding:12px!important}.pa-4{padding:16px!important}.pa-5{padding:20px!important}.pa-6{padding:24px!important}.pa-7{padding:28px!important}.pa-8{padding:32px!important}.pa-9{padding:36px!important}.pa-10{padding:40px!important}.pa-11{padding:44px!important}.pa-12{padding:48px!important}.pa-13{padding:52px!important}.pa-14{padding:56px!important}.pa-15{padding:60px!important}.pa-16{padding:64px!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:4px!important;padding-left:4px!important}.px-2{padding-right:8px!important;padding-left:8px!important}.px-3{padding-right:12px!important;padding-left:12px!important}.px-4{padding-right:16px!important;padding-left:16px!important}.px-5{padding-right:20px!important;padding-left:20px!important}.px-6{padding-right:24px!important;padding-left:24px!important}.px-7{padding-right:28px!important;padding-left:28px!important}.px-8{padding-right:32px!important;padding-left:32px!important}.px-9{padding-right:36px!important;padding-left:36px!important}.px-10{padding-right:40px!important;padding-left:40px!important}.px-11{padding-right:44px!important;padding-left:44px!important}.px-12{padding-right:48px!important;padding-left:48px!important}.px-13{padding-right:52px!important;padding-left:52px!important}.px-14{padding-right:56px!important;padding-left:56px!important}.px-15{padding-right:60px!important;padding-left:60px!important}.px-16{padding-right:64px!important;padding-left:64px!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:4px!important;padding-bottom:4px!important}.py-2{padding-top:8px!important;padding-bottom:8px!important}.py-3{padding-top:12px!important;padding-bottom:12px!important}.py-4{padding-top:16px!important;padding-bottom:16px!important}.py-5{padding-top:20px!important;padding-bottom:20px!important}.py-6{padding-top:24px!important;padding-bottom:24px!important}.py-7{padding-top:28px!important;padding-bottom:28px!important}.py-8{padding-top:32px!important;padding-bottom:32px!important}.py-9{padding-top:36px!important;padding-bottom:36px!important}.py-10{padding-top:40px!important;padding-bottom:40px!important}.py-11{padding-top:44px!important;padding-bottom:44px!important}.py-12{padding-top:48px!important;padding-bottom:48px!important}.py-13{padding-top:52px!important;padding-bottom:52px!important}.py-14{padding-top:56px!important;padding-bottom:56px!important}.py-15{padding-top:60px!important;padding-bottom:60px!important}.py-16{padding-top:64px!important;padding-bottom:64px!important}.pt-0{padding-top:0!important}.pt-1{padding-top:4px!important}.pt-2{padding-top:8px!important}.pt-3{padding-top:12px!important}.pt-4{padding-top:16px!important}.pt-5{padding-top:20px!important}.pt-6{padding-top:24px!important}.pt-7{padding-top:28px!important}.pt-8{padding-top:32px!important}.pt-9{padding-top:36px!important}.pt-10{padding-top:40px!important}.pt-11{padding-top:44px!important}.pt-12{padding-top:48px!important}.pt-13{padding-top:52px!important}.pt-14{padding-top:56px!important}.pt-15{padding-top:60px!important}.pt-16{padding-top:64px!important}.pr-0{padding-right:0!important}.pr-1{padding-right:4px!important}.pr-2{padding-right:8px!important}.pr-3{padding-right:12px!important}.pr-4{padding-right:16px!important}.pr-5{padding-right:20px!important}.pr-6{padding-right:24px!important}.pr-7{padding-right:28px!important}.pr-8{padding-right:32px!important}.pr-9{padding-right:36px!important}.pr-10{padding-right:40px!important}.pr-11{padding-right:44px!important}.pr-12{padding-right:48px!important}.pr-13{padding-right:52px!important}.pr-14{padding-right:56px!important}.pr-15{padding-right:60px!important}.pr-16{padding-right:64px!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:4px!important}.pb-2{padding-bottom:8px!important}.pb-3{padding-bottom:12px!important}.pb-4{padding-bottom:16px!important}.pb-5{padding-bottom:20px!important}.pb-6{padding-bottom:24px!important}.pb-7{padding-bottom:28px!important}.pb-8{padding-bottom:32px!important}.pb-9{padding-bottom:36px!important}.pb-10{padding-bottom:40px!important}.pb-11{padding-bottom:44px!important}.pb-12{padding-bottom:48px!important}.pb-13{padding-bottom:52px!important}.pb-14{padding-bottom:56px!important}.pb-15{padding-bottom:60px!important}.pb-16{padding-bottom:64px!important}.pl-0{padding-left:0!important}.pl-1{padding-left:4px!important}.pl-2{padding-left:8px!important}.pl-3{padding-left:12px!important}.pl-4{padding-left:16px!important}.pl-5{padding-left:20px!important}.pl-6{padding-left:24px!important}.pl-7{padding-left:28px!important}.pl-8{padding-left:32px!important}.pl-9{padding-left:36px!important}.pl-10{padding-left:40px!important}.pl-11{padding-left:44px!important}.pl-12{padding-left:48px!important}.pl-13{padding-left:52px!important}.pl-14{padding-left:56px!important}.pl-15{padding-left:60px!important}.pl-16{padding-left:64px!important}.ps-0{padding-inline-start:0px!important}.ps-1{padding-inline-start:4px!important}.ps-2{padding-inline-start:8px!important}.ps-3{padding-inline-start:12px!important}.ps-4{padding-inline-start:16px!important}.ps-5{padding-inline-start:20px!important}.ps-6{padding-inline-start:24px!important}.ps-7{padding-inline-start:28px!important}.ps-8{padding-inline-start:32px!important}.ps-9{padding-inline-start:36px!important}.ps-10{padding-inline-start:40px!important}.ps-11{padding-inline-start:44px!important}.ps-12{padding-inline-start:48px!important}.ps-13{padding-inline-start:52px!important}.ps-14{padding-inline-start:56px!important}.ps-15{padding-inline-start:60px!important}.ps-16{padding-inline-start:64px!important}.pe-0{padding-inline-end:0px!important}.pe-1{padding-inline-end:4px!important}.pe-2{padding-inline-end:8px!important}.pe-3{padding-inline-end:12px!important}.pe-4{padding-inline-end:16px!important}.pe-5{padding-inline-end:20px!important}.pe-6{padding-inline-end:24px!important}.pe-7{padding-inline-end:28px!important}.pe-8{padding-inline-end:32px!important}.pe-9{padding-inline-end:36px!important}.pe-10{padding-inline-end:40px!important}.pe-11{padding-inline-end:44px!important}.pe-12{padding-inline-end:48px!important}.pe-13{padding-inline-end:52px!important}.pe-14{padding-inline-end:56px!important}.pe-15{padding-inline-end:60px!important}.pe-16{padding-inline-end:64px!important}.rounded-0{border-radius:0!important}.rounded-sm{border-radius:2px!important}.rounded{border-radius:4px!important}.rounded-lg{border-radius:8px!important}.rounded-xl{border-radius:24px!important}.rounded-pill{border-radius:9999px!important}.rounded-circle{border-radius:50%!important}.rounded-shaped{border-radius:24px 0!important}.rounded-t-0{border-top-left-radius:0!important;border-top-right-radius:0!important}.rounded-t-sm{border-top-left-radius:2px!important;border-top-right-radius:2px!important}.rounded-t{border-top-left-radius:4px!important;border-top-right-radius:4px!important}.rounded-t-lg{border-top-left-radius:8px!important;border-top-right-radius:8px!important}.rounded-t-xl{border-top-left-radius:24px!important;border-top-right-radius:24px!important}.rounded-t-pill{border-top-left-radius:9999px!important;border-top-right-radius:9999px!important}.rounded-t-circle{border-top-left-radius:50%!important;border-top-right-radius:50%!important}.rounded-t-shaped{border-top-left-radius:24px!important;border-top-right-radius:0!important}.v-locale--is-ltr .rounded-e-0{border-top-right-radius:0!important;border-bottom-right-radius:0!important}.v-locale--is-rtl .rounded-e-0{border-top-left-radius:0!important;border-bottom-left-radius:0!important}.v-locale--is-ltr .rounded-e-sm{border-top-right-radius:2px!important;border-bottom-right-radius:2px!important}.v-locale--is-rtl .rounded-e-sm{border-top-left-radius:2px!important;border-bottom-left-radius:2px!important}.v-locale--is-ltr .rounded-e{border-top-right-radius:4px!important;border-bottom-right-radius:4px!important}.v-locale--is-rtl .rounded-e{border-top-left-radius:4px!important;border-bottom-left-radius:4px!important}.v-locale--is-ltr .rounded-e-lg{border-top-right-radius:8px!important;border-bottom-right-radius:8px!important}.v-locale--is-rtl .rounded-e-lg{border-top-left-radius:8px!important;border-bottom-left-radius:8px!important}.v-locale--is-ltr .rounded-e-xl{border-top-right-radius:24px!important;border-bottom-right-radius:24px!important}.v-locale--is-rtl .rounded-e-xl{border-top-left-radius:24px!important;border-bottom-left-radius:24px!important}.v-locale--is-ltr .rounded-e-pill{border-top-right-radius:9999px!important;border-bottom-right-radius:9999px!important}.v-locale--is-rtl .rounded-e-pill{border-top-left-radius:9999px!important;border-bottom-left-radius:9999px!important}.v-locale--is-ltr .rounded-e-circle{border-top-right-radius:50%!important;border-bottom-right-radius:50%!important}.v-locale--is-rtl .rounded-e-circle{border-top-left-radius:50%!important;border-bottom-left-radius:50%!important}.v-locale--is-ltr .rounded-e-shaped{border-top-right-radius:24px!important;border-bottom-right-radius:0!important}.v-locale--is-rtl .rounded-e-shaped{border-top-left-radius:24px!important;border-bottom-left-radius:0!important}.rounded-b-0{border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.rounded-b-sm{border-bottom-left-radius:2px!important;border-bottom-right-radius:2px!important}.rounded-b{border-bottom-left-radius:4px!important;border-bottom-right-radius:4px!important}.rounded-b-lg{border-bottom-left-radius:8px!important;border-bottom-right-radius:8px!important}.rounded-b-xl{border-bottom-left-radius:24px!important;border-bottom-right-radius:24px!important}.rounded-b-pill{border-bottom-left-radius:9999px!important;border-bottom-right-radius:9999px!important}.rounded-b-circle{border-bottom-left-radius:50%!important;border-bottom-right-radius:50%!important}.rounded-b-shaped{border-bottom-left-radius:24px!important;border-bottom-right-radius:0!important}.v-locale--is-ltr .rounded-s-0{border-top-left-radius:0!important;border-bottom-left-radius:0!important}.v-locale--is-rtl .rounded-s-0{border-top-right-radius:0!important;border-bottom-right-radius:0!important}.v-locale--is-ltr .rounded-s-sm{border-top-left-radius:2px!important;border-bottom-left-radius:2px!important}.v-locale--is-rtl .rounded-s-sm{border-top-right-radius:2px!important;border-bottom-right-radius:2px!important}.v-locale--is-ltr .rounded-s{border-top-left-radius:4px!important;border-bottom-left-radius:4px!important}.v-locale--is-rtl .rounded-s{border-top-right-radius:4px!important;border-bottom-right-radius:4px!important}.v-locale--is-ltr .rounded-s-lg{border-top-left-radius:8px!important;border-bottom-left-radius:8px!important}.v-locale--is-rtl .rounded-s-lg{border-top-right-radius:8px!important;border-bottom-right-radius:8px!important}.v-locale--is-ltr .rounded-s-xl{border-top-left-radius:24px!important;border-bottom-left-radius:24px!important}.v-locale--is-rtl .rounded-s-xl{border-top-right-radius:24px!important;border-bottom-right-radius:24px!important}.v-locale--is-ltr .rounded-s-pill{border-top-left-radius:9999px!important;border-bottom-left-radius:9999px!important}.v-locale--is-rtl .rounded-s-pill{border-top-right-radius:9999px!important;border-bottom-right-radius:9999px!important}.v-locale--is-ltr .rounded-s-circle{border-top-left-radius:50%!important;border-bottom-left-radius:50%!important}.v-locale--is-rtl .rounded-s-circle{border-top-right-radius:50%!important;border-bottom-right-radius:50%!important}.v-locale--is-ltr .rounded-s-shaped{border-top-left-radius:24px!important;border-bottom-left-radius:0!important}.v-locale--is-rtl .rounded-s-shaped{border-top-right-radius:24px!important;border-bottom-right-radius:0!important}.v-locale--is-ltr .rounded-ts-0{border-top-left-radius:0!important}.v-locale--is-rtl .rounded-ts-0{border-top-right-radius:0!important}.v-locale--is-ltr .rounded-ts-sm{border-top-left-radius:2px!important}.v-locale--is-rtl .rounded-ts-sm{border-top-right-radius:2px!important}.v-locale--is-ltr .rounded-ts{border-top-left-radius:4px!important}.v-locale--is-rtl .rounded-ts{border-top-right-radius:4px!important}.v-locale--is-ltr .rounded-ts-lg{border-top-left-radius:8px!important}.v-locale--is-rtl .rounded-ts-lg{border-top-right-radius:8px!important}.v-locale--is-ltr .rounded-ts-xl{border-top-left-radius:24px!important}.v-locale--is-rtl .rounded-ts-xl{border-top-right-radius:24px!important}.v-locale--is-ltr .rounded-ts-pill{border-top-left-radius:9999px!important}.v-locale--is-rtl .rounded-ts-pill{border-top-right-radius:9999px!important}.v-locale--is-ltr .rounded-ts-circle{border-top-left-radius:50%!important}.v-locale--is-rtl .rounded-ts-circle{border-top-right-radius:50%!important}.v-locale--is-ltr .rounded-ts-shaped{border-top-left-radius:24px 0!important}.v-locale--is-rtl .rounded-ts-shaped{border-top-right-radius:24px 0!important}.v-locale--is-ltr .rounded-te-0{border-top-right-radius:0!important}.v-locale--is-rtl .rounded-te-0{border-top-left-radius:0!important}.v-locale--is-ltr .rounded-te-sm{border-top-right-radius:2px!important}.v-locale--is-rtl .rounded-te-sm{border-top-left-radius:2px!important}.v-locale--is-ltr .rounded-te{border-top-right-radius:4px!important}.v-locale--is-rtl .rounded-te{border-top-left-radius:4px!important}.v-locale--is-ltr .rounded-te-lg{border-top-right-radius:8px!important}.v-locale--is-rtl .rounded-te-lg{border-top-left-radius:8px!important}.v-locale--is-ltr .rounded-te-xl{border-top-right-radius:24px!important}.v-locale--is-rtl .rounded-te-xl{border-top-left-radius:24px!important}.v-locale--is-ltr .rounded-te-pill{border-top-right-radius:9999px!important}.v-locale--is-rtl .rounded-te-pill{border-top-left-radius:9999px!important}.v-locale--is-ltr .rounded-te-circle{border-top-right-radius:50%!important}.v-locale--is-rtl .rounded-te-circle{border-top-left-radius:50%!important}.v-locale--is-ltr .rounded-te-shaped{border-top-right-radius:24px 0!important}.v-locale--is-rtl .rounded-te-shaped{border-top-left-radius:24px 0!important}.v-locale--is-ltr .rounded-be-0{border-bottom-right-radius:0!important}.v-locale--is-rtl .rounded-be-0{border-bottom-left-radius:0!important}.v-locale--is-ltr .rounded-be-sm{border-bottom-right-radius:2px!important}.v-locale--is-rtl .rounded-be-sm{border-bottom-left-radius:2px!important}.v-locale--is-ltr .rounded-be{border-bottom-right-radius:4px!important}.v-locale--is-rtl .rounded-be{border-bottom-left-radius:4px!important}.v-locale--is-ltr .rounded-be-lg{border-bottom-right-radius:8px!important}.v-locale--is-rtl .rounded-be-lg{border-bottom-left-radius:8px!important}.v-locale--is-ltr .rounded-be-xl{border-bottom-right-radius:24px!important}.v-locale--is-rtl .rounded-be-xl{border-bottom-left-radius:24px!important}.v-locale--is-ltr .rounded-be-pill{border-bottom-right-radius:9999px!important}.v-locale--is-rtl .rounded-be-pill{border-bottom-left-radius:9999px!important}.v-locale--is-ltr .rounded-be-circle{border-bottom-right-radius:50%!important}.v-locale--is-rtl .rounded-be-circle{border-bottom-left-radius:50%!important}.v-locale--is-ltr .rounded-be-shaped{border-bottom-right-radius:24px 0!important}.v-locale--is-rtl .rounded-be-shaped{border-bottom-left-radius:24px 0!important}.v-locale--is-ltr .rounded-bs-0{border-bottom-left-radius:0!important}.v-locale--is-rtl .rounded-bs-0{border-bottom-right-radius:0!important}.v-locale--is-ltr .rounded-bs-sm{border-bottom-left-radius:2px!important}.v-locale--is-rtl .rounded-bs-sm{border-bottom-right-radius:2px!important}.v-locale--is-ltr .rounded-bs{border-bottom-left-radius:4px!important}.v-locale--is-rtl .rounded-bs{border-bottom-right-radius:4px!important}.v-locale--is-ltr .rounded-bs-lg{border-bottom-left-radius:8px!important}.v-locale--is-rtl .rounded-bs-lg{border-bottom-right-radius:8px!important}.v-locale--is-ltr .rounded-bs-xl{border-bottom-left-radius:24px!important}.v-locale--is-rtl .rounded-bs-xl{border-bottom-right-radius:24px!important}.v-locale--is-ltr .rounded-bs-pill{border-bottom-left-radius:9999px!important}.v-locale--is-rtl .rounded-bs-pill{border-bottom-right-radius:9999px!important}.v-locale--is-ltr .rounded-bs-circle{border-bottom-left-radius:50%!important}.v-locale--is-rtl .rounded-bs-circle{border-bottom-right-radius:50%!important}.v-locale--is-ltr .rounded-bs-shaped{border-bottom-left-radius:24px 0!important}.v-locale--is-rtl .rounded-bs-shaped{border-bottom-right-radius:24px 0!important}.border-0{border-width:0!important;border-style:solid!important;border-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border,.border-thin{border-width:thin!important;border-style:solid!important;border-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-sm{border-width:1px!important;border-style:solid!important;border-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-md{border-width:2px!important;border-style:solid!important;border-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-lg{border-width:4px!important;border-style:solid!important;border-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-xl{border-width:8px!important;border-style:solid!important;border-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-current{border-color:currentColor!important}.border-opacity-0{--v-border-opacity: 0 !important}.border-opacity{--v-border-opacity: .12 !important}.border-opacity-25{--v-border-opacity: .25 !important}.border-opacity-50{--v-border-opacity: .5 !important}.border-opacity-75{--v-border-opacity: .75 !important}.border-opacity-100{--v-border-opacity: 1 !important}.border-t-0{border-block-start-width:0!important;border-block-start-style:solid!important;border-block-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-t,.border-t-thin{border-block-start-width:thin!important;border-block-start-style:solid!important;border-block-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-t-sm{border-block-start-width:1px!important;border-block-start-style:solid!important;border-block-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-t-md{border-block-start-width:2px!important;border-block-start-style:solid!important;border-block-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-t-lg{border-block-start-width:4px!important;border-block-start-style:solid!important;border-block-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-t-xl{border-block-start-width:8px!important;border-block-start-style:solid!important;border-block-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-e-0{border-inline-end-width:0!important;border-inline-end-style:solid!important;border-inline-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-e,.border-e-thin{border-inline-end-width:thin!important;border-inline-end-style:solid!important;border-inline-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-e-sm{border-inline-end-width:1px!important;border-inline-end-style:solid!important;border-inline-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-e-md{border-inline-end-width:2px!important;border-inline-end-style:solid!important;border-inline-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-e-lg{border-inline-end-width:4px!important;border-inline-end-style:solid!important;border-inline-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-e-xl{border-inline-end-width:8px!important;border-inline-end-style:solid!important;border-inline-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-b-0{border-block-end-width:0!important;border-block-end-style:solid!important;border-block-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-b,.border-b-thin{border-block-end-width:thin!important;border-block-end-style:solid!important;border-block-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-b-sm{border-block-end-width:1px!important;border-block-end-style:solid!important;border-block-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-b-md{border-block-end-width:2px!important;border-block-end-style:solid!important;border-block-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-b-lg{border-block-end-width:4px!important;border-block-end-style:solid!important;border-block-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-b-xl{border-block-end-width:8px!important;border-block-end-style:solid!important;border-block-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-s-0{border-inline-start-width:0!important;border-inline-start-style:solid!important;border-inline-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-s,.border-s-thin{border-inline-start-width:thin!important;border-inline-start-style:solid!important;border-inline-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-s-sm{border-inline-start-width:1px!important;border-inline-start-style:solid!important;border-inline-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-s-md{border-inline-start-width:2px!important;border-inline-start-style:solid!important;border-inline-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-s-lg{border-inline-start-width:4px!important;border-inline-start-style:solid!important;border-inline-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-s-xl{border-inline-start-width:8px!important;border-inline-start-style:solid!important;border-inline-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-solid{border-style:solid!important}.border-dashed{border-style:dashed!important}.border-dotted{border-style:dotted!important}.border-double{border-style:double!important}.border-none{border-style:none!important}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}.text-justify{text-align:justify!important}.text-start{text-align:start!important}.text-end{text-align:end!important}.text-decoration-line-through{text-decoration:line-through!important}.text-decoration-none{text-decoration:none!important}.text-decoration-overline{text-decoration:overline!important}.text-decoration-underline{text-decoration:underline!important}.text-wrap{white-space:normal!important}.text-no-wrap{white-space:nowrap!important}.text-pre{white-space:pre!important}.text-pre-line{white-space:pre-line!important}.text-pre-wrap{white-space:pre-wrap!important}.text-break{overflow-wrap:break-word!important;word-break:break-word!important}.opacity-hover{opacity:var(--v-hover-opacity)!important}.opacity-focus{opacity:var(--v-focus-opacity)!important}.opacity-selected{opacity:var(--v-selected-opacity)!important}.opacity-activated{opacity:var(--v-activated-opacity)!important}.opacity-pressed{opacity:var(--v-pressed-opacity)!important}.opacity-dragged{opacity:var(--v-dragged-opacity)!important}.opacity-0{opacity:0!important}.opacity-10{opacity:.1!important}.opacity-20{opacity:.2!important}.opacity-30{opacity:.3!important}.opacity-40{opacity:.4!important}.opacity-50{opacity:.5!important}.opacity-60{opacity:.6!important}.opacity-70{opacity:.7!important}.opacity-80{opacity:.8!important}.opacity-90{opacity:.9!important}.opacity-100{opacity:1!important}.text-high-emphasis{color:rgba(var(--v-theme-on-background),var(--v-high-emphasis-opacity))!important}.text-medium-emphasis{color:rgba(var(--v-theme-on-background),var(--v-medium-emphasis-opacity))!important}.text-disabled{color:rgba(var(--v-theme-on-background),var(--v-disabled-opacity))!important}.text-truncate{white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}.text-h1{font-size:6rem!important;font-weight:300;line-height:1;letter-spacing:-.015625em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-h2{font-size:3.75rem!important;font-weight:300;line-height:1;letter-spacing:-.0083333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-h3{font-size:3rem!important;font-weight:400;line-height:1.05;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-h4{font-size:2.125rem!important;font-weight:400;line-height:1.175;letter-spacing:.0073529412em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-h5{font-size:1.5rem!important;font-weight:400;line-height:1.333;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-h6{font-size:1.25rem!important;font-weight:500;line-height:1.6;letter-spacing:.0125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-subtitle-1{font-size:1rem!important;font-weight:400;line-height:1.75;letter-spacing:.009375em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-subtitle-2{font-size:.875rem!important;font-weight:500;line-height:1.6;letter-spacing:.0071428571em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-body-1{font-size:1rem!important;font-weight:400;line-height:1.5;letter-spacing:.03125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-body-2{font-size:.875rem!important;font-weight:400;line-height:1.425;letter-spacing:.0178571429em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-button{font-size:.875rem!important;font-weight:500;line-height:2.6;letter-spacing:.0892857143em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}.text-caption{font-size:.75rem!important;font-weight:400;line-height:1.667;letter-spacing:.0333333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-overline{font-size:.75rem!important;font-weight:500;line-height:2.667;letter-spacing:.1666666667em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}.text-none{text-transform:none!important}.text-capitalize{text-transform:capitalize!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.font-weight-thin{font-weight:100!important}.font-weight-light{font-weight:300!important}.font-weight-regular{font-weight:400!important}.font-weight-medium{font-weight:500!important}.font-weight-bold{font-weight:700!important}.font-weight-black{font-weight:900!important}.font-italic{font-style:italic!important}.text-mono{font-family:monospace!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-fixed{position:fixed!important}.position-absolute{position:absolute!important}.position-sticky{position:sticky!important}.top-0{top:0!important}.right-0{right:0!important}.bottom-0{bottom:0!important}.left-0{left:0!important}.cursor-auto{cursor:auto!important}.cursor-default{cursor:default!important}.cursor-pointer{cursor:pointer!important}.cursor-wait{cursor:wait!important}.cursor-text{cursor:text!important}.cursor-move{cursor:move!important}.cursor-help{cursor:help!important}.cursor-not-allowed{cursor:not-allowed!important}.cursor-progress{cursor:progress!important}.cursor-grab{cursor:grab!important}.cursor-grabbing{cursor:grabbing!important}.cursor-none{cursor:none!important}.fill-height{height:100%!important}.h-auto{height:auto!important}.h-screen{height:100vh!important}.h-0{height:0!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-screen{height:100dvh!important}.w-auto{width:auto!important}.w-0{width:0!important}.w-25{width:25%!important}.w-33{width:33%!important}.w-50{width:50%!important}.w-66{width:66%!important}.w-75{width:75%!important}.w-100{width:100%!important}@media (min-width: 600px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.float-sm-none{float:none!important}.float-sm-left{float:left!important}.float-sm-right{float:right!important}.v-locale--is-rtl .float-sm-end{float:left!important}.v-locale--is-rtl .float-sm-start,.v-locale--is-ltr .float-sm-end{float:right!important}.v-locale--is-ltr .float-sm-start{float:left!important}.flex-sm-fill,.flex-sm-1-1{flex:1 1 auto!important}.flex-sm-1-0{flex:1 0 auto!important}.flex-sm-0-1{flex:0 1 auto!important}.flex-sm-0-0{flex:0 0 auto!important}.flex-sm-1-1-100{flex:1 1 100%!important}.flex-sm-1-0-100{flex:1 0 100%!important}.flex-sm-0-1-100{flex:0 1 100%!important}.flex-sm-0-0-100{flex:0 0 100%!important}.flex-sm-1-1-0{flex:1 1 0!important}.flex-sm-1-0-0{flex:1 0 0!important}.flex-sm-0-1-0{flex:0 1 0!important}.flex-sm-0-0-0{flex:0 0 0!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-sm-start{justify-content:flex-start!important}.justify-sm-end{justify-content:flex-end!important}.justify-sm-center{justify-content:center!important}.justify-sm-space-between{justify-content:space-between!important}.justify-sm-space-around{justify-content:space-around!important}.justify-sm-space-evenly{justify-content:space-evenly!important}.align-sm-start{align-items:flex-start!important}.align-sm-end{align-items:flex-end!important}.align-sm-center{align-items:center!important}.align-sm-baseline{align-items:baseline!important}.align-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-space-between{align-content:space-between!important}.align-content-sm-space-around{align-content:space-around!important}.align-content-sm-space-evenly{align-content:space-evenly!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-6{order:6!important}.order-sm-7{order:7!important}.order-sm-8{order:8!important}.order-sm-9{order:9!important}.order-sm-10{order:10!important}.order-sm-11{order:11!important}.order-sm-12{order:12!important}.order-sm-last{order:13!important}.ga-sm-0{gap:0px!important}.ga-sm-1{gap:4px!important}.ga-sm-2{gap:8px!important}.ga-sm-3{gap:12px!important}.ga-sm-4{gap:16px!important}.ga-sm-5{gap:20px!important}.ga-sm-6{gap:24px!important}.ga-sm-7{gap:28px!important}.ga-sm-8{gap:32px!important}.ga-sm-9{gap:36px!important}.ga-sm-10{gap:40px!important}.ga-sm-11{gap:44px!important}.ga-sm-12{gap:48px!important}.ga-sm-13{gap:52px!important}.ga-sm-14{gap:56px!important}.ga-sm-15{gap:60px!important}.ga-sm-16{gap:64px!important}.ga-sm-auto{gap:auto!important}.gr-sm-0{row-gap:0px!important}.gr-sm-1{row-gap:4px!important}.gr-sm-2{row-gap:8px!important}.gr-sm-3{row-gap:12px!important}.gr-sm-4{row-gap:16px!important}.gr-sm-5{row-gap:20px!important}.gr-sm-6{row-gap:24px!important}.gr-sm-7{row-gap:28px!important}.gr-sm-8{row-gap:32px!important}.gr-sm-9{row-gap:36px!important}.gr-sm-10{row-gap:40px!important}.gr-sm-11{row-gap:44px!important}.gr-sm-12{row-gap:48px!important}.gr-sm-13{row-gap:52px!important}.gr-sm-14{row-gap:56px!important}.gr-sm-15{row-gap:60px!important}.gr-sm-16{row-gap:64px!important}.gr-sm-auto{row-gap:auto!important}.gc-sm-0{-moz-column-gap:0px!important;column-gap:0px!important}.gc-sm-1{-moz-column-gap:4px!important;column-gap:4px!important}.gc-sm-2{-moz-column-gap:8px!important;column-gap:8px!important}.gc-sm-3{-moz-column-gap:12px!important;column-gap:12px!important}.gc-sm-4{-moz-column-gap:16px!important;column-gap:16px!important}.gc-sm-5{-moz-column-gap:20px!important;column-gap:20px!important}.gc-sm-6{-moz-column-gap:24px!important;column-gap:24px!important}.gc-sm-7{-moz-column-gap:28px!important;column-gap:28px!important}.gc-sm-8{-moz-column-gap:32px!important;column-gap:32px!important}.gc-sm-9{-moz-column-gap:36px!important;column-gap:36px!important}.gc-sm-10{-moz-column-gap:40px!important;column-gap:40px!important}.gc-sm-11{-moz-column-gap:44px!important;column-gap:44px!important}.gc-sm-12{-moz-column-gap:48px!important;column-gap:48px!important}.gc-sm-13{-moz-column-gap:52px!important;column-gap:52px!important}.gc-sm-14{-moz-column-gap:56px!important;column-gap:56px!important}.gc-sm-15{-moz-column-gap:60px!important;column-gap:60px!important}.gc-sm-16{-moz-column-gap:64px!important;column-gap:64px!important}.gc-sm-auto{-moz-column-gap:auto!important;column-gap:auto!important}.ma-sm-0{margin:0!important}.ma-sm-1{margin:4px!important}.ma-sm-2{margin:8px!important}.ma-sm-3{margin:12px!important}.ma-sm-4{margin:16px!important}.ma-sm-5{margin:20px!important}.ma-sm-6{margin:24px!important}.ma-sm-7{margin:28px!important}.ma-sm-8{margin:32px!important}.ma-sm-9{margin:36px!important}.ma-sm-10{margin:40px!important}.ma-sm-11{margin:44px!important}.ma-sm-12{margin:48px!important}.ma-sm-13{margin:52px!important}.ma-sm-14{margin:56px!important}.ma-sm-15{margin:60px!important}.ma-sm-16{margin:64px!important}.ma-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:4px!important;margin-left:4px!important}.mx-sm-2{margin-right:8px!important;margin-left:8px!important}.mx-sm-3{margin-right:12px!important;margin-left:12px!important}.mx-sm-4{margin-right:16px!important;margin-left:16px!important}.mx-sm-5{margin-right:20px!important;margin-left:20px!important}.mx-sm-6{margin-right:24px!important;margin-left:24px!important}.mx-sm-7{margin-right:28px!important;margin-left:28px!important}.mx-sm-8{margin-right:32px!important;margin-left:32px!important}.mx-sm-9{margin-right:36px!important;margin-left:36px!important}.mx-sm-10{margin-right:40px!important;margin-left:40px!important}.mx-sm-11{margin-right:44px!important;margin-left:44px!important}.mx-sm-12{margin-right:48px!important;margin-left:48px!important}.mx-sm-13{margin-right:52px!important;margin-left:52px!important}.mx-sm-14{margin-right:56px!important;margin-left:56px!important}.mx-sm-15{margin-right:60px!important;margin-left:60px!important}.mx-sm-16{margin-right:64px!important;margin-left:64px!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:4px!important;margin-bottom:4px!important}.my-sm-2{margin-top:8px!important;margin-bottom:8px!important}.my-sm-3{margin-top:12px!important;margin-bottom:12px!important}.my-sm-4{margin-top:16px!important;margin-bottom:16px!important}.my-sm-5{margin-top:20px!important;margin-bottom:20px!important}.my-sm-6{margin-top:24px!important;margin-bottom:24px!important}.my-sm-7{margin-top:28px!important;margin-bottom:28px!important}.my-sm-8{margin-top:32px!important;margin-bottom:32px!important}.my-sm-9{margin-top:36px!important;margin-bottom:36px!important}.my-sm-10{margin-top:40px!important;margin-bottom:40px!important}.my-sm-11{margin-top:44px!important;margin-bottom:44px!important}.my-sm-12{margin-top:48px!important;margin-bottom:48px!important}.my-sm-13{margin-top:52px!important;margin-bottom:52px!important}.my-sm-14{margin-top:56px!important;margin-bottom:56px!important}.my-sm-15{margin-top:60px!important;margin-bottom:60px!important}.my-sm-16{margin-top:64px!important;margin-bottom:64px!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:4px!important}.mt-sm-2{margin-top:8px!important}.mt-sm-3{margin-top:12px!important}.mt-sm-4{margin-top:16px!important}.mt-sm-5{margin-top:20px!important}.mt-sm-6{margin-top:24px!important}.mt-sm-7{margin-top:28px!important}.mt-sm-8{margin-top:32px!important}.mt-sm-9{margin-top:36px!important}.mt-sm-10{margin-top:40px!important}.mt-sm-11{margin-top:44px!important}.mt-sm-12{margin-top:48px!important}.mt-sm-13{margin-top:52px!important}.mt-sm-14{margin-top:56px!important}.mt-sm-15{margin-top:60px!important}.mt-sm-16{margin-top:64px!important}.mt-sm-auto{margin-top:auto!important}.mr-sm-0{margin-right:0!important}.mr-sm-1{margin-right:4px!important}.mr-sm-2{margin-right:8px!important}.mr-sm-3{margin-right:12px!important}.mr-sm-4{margin-right:16px!important}.mr-sm-5{margin-right:20px!important}.mr-sm-6{margin-right:24px!important}.mr-sm-7{margin-right:28px!important}.mr-sm-8{margin-right:32px!important}.mr-sm-9{margin-right:36px!important}.mr-sm-10{margin-right:40px!important}.mr-sm-11{margin-right:44px!important}.mr-sm-12{margin-right:48px!important}.mr-sm-13{margin-right:52px!important}.mr-sm-14{margin-right:56px!important}.mr-sm-15{margin-right:60px!important}.mr-sm-16{margin-right:64px!important}.mr-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:4px!important}.mb-sm-2{margin-bottom:8px!important}.mb-sm-3{margin-bottom:12px!important}.mb-sm-4{margin-bottom:16px!important}.mb-sm-5{margin-bottom:20px!important}.mb-sm-6{margin-bottom:24px!important}.mb-sm-7{margin-bottom:28px!important}.mb-sm-8{margin-bottom:32px!important}.mb-sm-9{margin-bottom:36px!important}.mb-sm-10{margin-bottom:40px!important}.mb-sm-11{margin-bottom:44px!important}.mb-sm-12{margin-bottom:48px!important}.mb-sm-13{margin-bottom:52px!important}.mb-sm-14{margin-bottom:56px!important}.mb-sm-15{margin-bottom:60px!important}.mb-sm-16{margin-bottom:64px!important}.mb-sm-auto{margin-bottom:auto!important}.ml-sm-0{margin-left:0!important}.ml-sm-1{margin-left:4px!important}.ml-sm-2{margin-left:8px!important}.ml-sm-3{margin-left:12px!important}.ml-sm-4{margin-left:16px!important}.ml-sm-5{margin-left:20px!important}.ml-sm-6{margin-left:24px!important}.ml-sm-7{margin-left:28px!important}.ml-sm-8{margin-left:32px!important}.ml-sm-9{margin-left:36px!important}.ml-sm-10{margin-left:40px!important}.ml-sm-11{margin-left:44px!important}.ml-sm-12{margin-left:48px!important}.ml-sm-13{margin-left:52px!important}.ml-sm-14{margin-left:56px!important}.ml-sm-15{margin-left:60px!important}.ml-sm-16{margin-left:64px!important}.ml-sm-auto{margin-left:auto!important}.ms-sm-0{margin-inline-start:0px!important}.ms-sm-1{margin-inline-start:4px!important}.ms-sm-2{margin-inline-start:8px!important}.ms-sm-3{margin-inline-start:12px!important}.ms-sm-4{margin-inline-start:16px!important}.ms-sm-5{margin-inline-start:20px!important}.ms-sm-6{margin-inline-start:24px!important}.ms-sm-7{margin-inline-start:28px!important}.ms-sm-8{margin-inline-start:32px!important}.ms-sm-9{margin-inline-start:36px!important}.ms-sm-10{margin-inline-start:40px!important}.ms-sm-11{margin-inline-start:44px!important}.ms-sm-12{margin-inline-start:48px!important}.ms-sm-13{margin-inline-start:52px!important}.ms-sm-14{margin-inline-start:56px!important}.ms-sm-15{margin-inline-start:60px!important}.ms-sm-16{margin-inline-start:64px!important}.ms-sm-auto{margin-inline-start:auto!important}.me-sm-0{margin-inline-end:0px!important}.me-sm-1{margin-inline-end:4px!important}.me-sm-2{margin-inline-end:8px!important}.me-sm-3{margin-inline-end:12px!important}.me-sm-4{margin-inline-end:16px!important}.me-sm-5{margin-inline-end:20px!important}.me-sm-6{margin-inline-end:24px!important}.me-sm-7{margin-inline-end:28px!important}.me-sm-8{margin-inline-end:32px!important}.me-sm-9{margin-inline-end:36px!important}.me-sm-10{margin-inline-end:40px!important}.me-sm-11{margin-inline-end:44px!important}.me-sm-12{margin-inline-end:48px!important}.me-sm-13{margin-inline-end:52px!important}.me-sm-14{margin-inline-end:56px!important}.me-sm-15{margin-inline-end:60px!important}.me-sm-16{margin-inline-end:64px!important}.me-sm-auto{margin-inline-end:auto!important}.ma-sm-n1{margin:-4px!important}.ma-sm-n2{margin:-8px!important}.ma-sm-n3{margin:-12px!important}.ma-sm-n4{margin:-16px!important}.ma-sm-n5{margin:-20px!important}.ma-sm-n6{margin:-24px!important}.ma-sm-n7{margin:-28px!important}.ma-sm-n8{margin:-32px!important}.ma-sm-n9{margin:-36px!important}.ma-sm-n10{margin:-40px!important}.ma-sm-n11{margin:-44px!important}.ma-sm-n12{margin:-48px!important}.ma-sm-n13{margin:-52px!important}.ma-sm-n14{margin:-56px!important}.ma-sm-n15{margin:-60px!important}.ma-sm-n16{margin:-64px!important}.mx-sm-n1{margin-right:-4px!important;margin-left:-4px!important}.mx-sm-n2{margin-right:-8px!important;margin-left:-8px!important}.mx-sm-n3{margin-right:-12px!important;margin-left:-12px!important}.mx-sm-n4{margin-right:-16px!important;margin-left:-16px!important}.mx-sm-n5{margin-right:-20px!important;margin-left:-20px!important}.mx-sm-n6{margin-right:-24px!important;margin-left:-24px!important}.mx-sm-n7{margin-right:-28px!important;margin-left:-28px!important}.mx-sm-n8{margin-right:-32px!important;margin-left:-32px!important}.mx-sm-n9{margin-right:-36px!important;margin-left:-36px!important}.mx-sm-n10{margin-right:-40px!important;margin-left:-40px!important}.mx-sm-n11{margin-right:-44px!important;margin-left:-44px!important}.mx-sm-n12{margin-right:-48px!important;margin-left:-48px!important}.mx-sm-n13{margin-right:-52px!important;margin-left:-52px!important}.mx-sm-n14{margin-right:-56px!important;margin-left:-56px!important}.mx-sm-n15{margin-right:-60px!important;margin-left:-60px!important}.mx-sm-n16{margin-right:-64px!important;margin-left:-64px!important}.my-sm-n1{margin-top:-4px!important;margin-bottom:-4px!important}.my-sm-n2{margin-top:-8px!important;margin-bottom:-8px!important}.my-sm-n3{margin-top:-12px!important;margin-bottom:-12px!important}.my-sm-n4{margin-top:-16px!important;margin-bottom:-16px!important}.my-sm-n5{margin-top:-20px!important;margin-bottom:-20px!important}.my-sm-n6{margin-top:-24px!important;margin-bottom:-24px!important}.my-sm-n7{margin-top:-28px!important;margin-bottom:-28px!important}.my-sm-n8{margin-top:-32px!important;margin-bottom:-32px!important}.my-sm-n9{margin-top:-36px!important;margin-bottom:-36px!important}.my-sm-n10{margin-top:-40px!important;margin-bottom:-40px!important}.my-sm-n11{margin-top:-44px!important;margin-bottom:-44px!important}.my-sm-n12{margin-top:-48px!important;margin-bottom:-48px!important}.my-sm-n13{margin-top:-52px!important;margin-bottom:-52px!important}.my-sm-n14{margin-top:-56px!important;margin-bottom:-56px!important}.my-sm-n15{margin-top:-60px!important;margin-bottom:-60px!important}.my-sm-n16{margin-top:-64px!important;margin-bottom:-64px!important}.mt-sm-n1{margin-top:-4px!important}.mt-sm-n2{margin-top:-8px!important}.mt-sm-n3{margin-top:-12px!important}.mt-sm-n4{margin-top:-16px!important}.mt-sm-n5{margin-top:-20px!important}.mt-sm-n6{margin-top:-24px!important}.mt-sm-n7{margin-top:-28px!important}.mt-sm-n8{margin-top:-32px!important}.mt-sm-n9{margin-top:-36px!important}.mt-sm-n10{margin-top:-40px!important}.mt-sm-n11{margin-top:-44px!important}.mt-sm-n12{margin-top:-48px!important}.mt-sm-n13{margin-top:-52px!important}.mt-sm-n14{margin-top:-56px!important}.mt-sm-n15{margin-top:-60px!important}.mt-sm-n16{margin-top:-64px!important}.mr-sm-n1{margin-right:-4px!important}.mr-sm-n2{margin-right:-8px!important}.mr-sm-n3{margin-right:-12px!important}.mr-sm-n4{margin-right:-16px!important}.mr-sm-n5{margin-right:-20px!important}.mr-sm-n6{margin-right:-24px!important}.mr-sm-n7{margin-right:-28px!important}.mr-sm-n8{margin-right:-32px!important}.mr-sm-n9{margin-right:-36px!important}.mr-sm-n10{margin-right:-40px!important}.mr-sm-n11{margin-right:-44px!important}.mr-sm-n12{margin-right:-48px!important}.mr-sm-n13{margin-right:-52px!important}.mr-sm-n14{margin-right:-56px!important}.mr-sm-n15{margin-right:-60px!important}.mr-sm-n16{margin-right:-64px!important}.mb-sm-n1{margin-bottom:-4px!important}.mb-sm-n2{margin-bottom:-8px!important}.mb-sm-n3{margin-bottom:-12px!important}.mb-sm-n4{margin-bottom:-16px!important}.mb-sm-n5{margin-bottom:-20px!important}.mb-sm-n6{margin-bottom:-24px!important}.mb-sm-n7{margin-bottom:-28px!important}.mb-sm-n8{margin-bottom:-32px!important}.mb-sm-n9{margin-bottom:-36px!important}.mb-sm-n10{margin-bottom:-40px!important}.mb-sm-n11{margin-bottom:-44px!important}.mb-sm-n12{margin-bottom:-48px!important}.mb-sm-n13{margin-bottom:-52px!important}.mb-sm-n14{margin-bottom:-56px!important}.mb-sm-n15{margin-bottom:-60px!important}.mb-sm-n16{margin-bottom:-64px!important}.ml-sm-n1{margin-left:-4px!important}.ml-sm-n2{margin-left:-8px!important}.ml-sm-n3{margin-left:-12px!important}.ml-sm-n4{margin-left:-16px!important}.ml-sm-n5{margin-left:-20px!important}.ml-sm-n6{margin-left:-24px!important}.ml-sm-n7{margin-left:-28px!important}.ml-sm-n8{margin-left:-32px!important}.ml-sm-n9{margin-left:-36px!important}.ml-sm-n10{margin-left:-40px!important}.ml-sm-n11{margin-left:-44px!important}.ml-sm-n12{margin-left:-48px!important}.ml-sm-n13{margin-left:-52px!important}.ml-sm-n14{margin-left:-56px!important}.ml-sm-n15{margin-left:-60px!important}.ml-sm-n16{margin-left:-64px!important}.ms-sm-n1{margin-inline-start:-4px!important}.ms-sm-n2{margin-inline-start:-8px!important}.ms-sm-n3{margin-inline-start:-12px!important}.ms-sm-n4{margin-inline-start:-16px!important}.ms-sm-n5{margin-inline-start:-20px!important}.ms-sm-n6{margin-inline-start:-24px!important}.ms-sm-n7{margin-inline-start:-28px!important}.ms-sm-n8{margin-inline-start:-32px!important}.ms-sm-n9{margin-inline-start:-36px!important}.ms-sm-n10{margin-inline-start:-40px!important}.ms-sm-n11{margin-inline-start:-44px!important}.ms-sm-n12{margin-inline-start:-48px!important}.ms-sm-n13{margin-inline-start:-52px!important}.ms-sm-n14{margin-inline-start:-56px!important}.ms-sm-n15{margin-inline-start:-60px!important}.ms-sm-n16{margin-inline-start:-64px!important}.me-sm-n1{margin-inline-end:-4px!important}.me-sm-n2{margin-inline-end:-8px!important}.me-sm-n3{margin-inline-end:-12px!important}.me-sm-n4{margin-inline-end:-16px!important}.me-sm-n5{margin-inline-end:-20px!important}.me-sm-n6{margin-inline-end:-24px!important}.me-sm-n7{margin-inline-end:-28px!important}.me-sm-n8{margin-inline-end:-32px!important}.me-sm-n9{margin-inline-end:-36px!important}.me-sm-n10{margin-inline-end:-40px!important}.me-sm-n11{margin-inline-end:-44px!important}.me-sm-n12{margin-inline-end:-48px!important}.me-sm-n13{margin-inline-end:-52px!important}.me-sm-n14{margin-inline-end:-56px!important}.me-sm-n15{margin-inline-end:-60px!important}.me-sm-n16{margin-inline-end:-64px!important}.pa-sm-0{padding:0!important}.pa-sm-1{padding:4px!important}.pa-sm-2{padding:8px!important}.pa-sm-3{padding:12px!important}.pa-sm-4{padding:16px!important}.pa-sm-5{padding:20px!important}.pa-sm-6{padding:24px!important}.pa-sm-7{padding:28px!important}.pa-sm-8{padding:32px!important}.pa-sm-9{padding:36px!important}.pa-sm-10{padding:40px!important}.pa-sm-11{padding:44px!important}.pa-sm-12{padding:48px!important}.pa-sm-13{padding:52px!important}.pa-sm-14{padding:56px!important}.pa-sm-15{padding:60px!important}.pa-sm-16{padding:64px!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:4px!important;padding-left:4px!important}.px-sm-2{padding-right:8px!important;padding-left:8px!important}.px-sm-3{padding-right:12px!important;padding-left:12px!important}.px-sm-4{padding-right:16px!important;padding-left:16px!important}.px-sm-5{padding-right:20px!important;padding-left:20px!important}.px-sm-6{padding-right:24px!important;padding-left:24px!important}.px-sm-7{padding-right:28px!important;padding-left:28px!important}.px-sm-8{padding-right:32px!important;padding-left:32px!important}.px-sm-9{padding-right:36px!important;padding-left:36px!important}.px-sm-10{padding-right:40px!important;padding-left:40px!important}.px-sm-11{padding-right:44px!important;padding-left:44px!important}.px-sm-12{padding-right:48px!important;padding-left:48px!important}.px-sm-13{padding-right:52px!important;padding-left:52px!important}.px-sm-14{padding-right:56px!important;padding-left:56px!important}.px-sm-15{padding-right:60px!important;padding-left:60px!important}.px-sm-16{padding-right:64px!important;padding-left:64px!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:4px!important;padding-bottom:4px!important}.py-sm-2{padding-top:8px!important;padding-bottom:8px!important}.py-sm-3{padding-top:12px!important;padding-bottom:12px!important}.py-sm-4{padding-top:16px!important;padding-bottom:16px!important}.py-sm-5{padding-top:20px!important;padding-bottom:20px!important}.py-sm-6{padding-top:24px!important;padding-bottom:24px!important}.py-sm-7{padding-top:28px!important;padding-bottom:28px!important}.py-sm-8{padding-top:32px!important;padding-bottom:32px!important}.py-sm-9{padding-top:36px!important;padding-bottom:36px!important}.py-sm-10{padding-top:40px!important;padding-bottom:40px!important}.py-sm-11{padding-top:44px!important;padding-bottom:44px!important}.py-sm-12{padding-top:48px!important;padding-bottom:48px!important}.py-sm-13{padding-top:52px!important;padding-bottom:52px!important}.py-sm-14{padding-top:56px!important;padding-bottom:56px!important}.py-sm-15{padding-top:60px!important;padding-bottom:60px!important}.py-sm-16{padding-top:64px!important;padding-bottom:64px!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:4px!important}.pt-sm-2{padding-top:8px!important}.pt-sm-3{padding-top:12px!important}.pt-sm-4{padding-top:16px!important}.pt-sm-5{padding-top:20px!important}.pt-sm-6{padding-top:24px!important}.pt-sm-7{padding-top:28px!important}.pt-sm-8{padding-top:32px!important}.pt-sm-9{padding-top:36px!important}.pt-sm-10{padding-top:40px!important}.pt-sm-11{padding-top:44px!important}.pt-sm-12{padding-top:48px!important}.pt-sm-13{padding-top:52px!important}.pt-sm-14{padding-top:56px!important}.pt-sm-15{padding-top:60px!important}.pt-sm-16{padding-top:64px!important}.pr-sm-0{padding-right:0!important}.pr-sm-1{padding-right:4px!important}.pr-sm-2{padding-right:8px!important}.pr-sm-3{padding-right:12px!important}.pr-sm-4{padding-right:16px!important}.pr-sm-5{padding-right:20px!important}.pr-sm-6{padding-right:24px!important}.pr-sm-7{padding-right:28px!important}.pr-sm-8{padding-right:32px!important}.pr-sm-9{padding-right:36px!important}.pr-sm-10{padding-right:40px!important}.pr-sm-11{padding-right:44px!important}.pr-sm-12{padding-right:48px!important}.pr-sm-13{padding-right:52px!important}.pr-sm-14{padding-right:56px!important}.pr-sm-15{padding-right:60px!important}.pr-sm-16{padding-right:64px!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:4px!important}.pb-sm-2{padding-bottom:8px!important}.pb-sm-3{padding-bottom:12px!important}.pb-sm-4{padding-bottom:16px!important}.pb-sm-5{padding-bottom:20px!important}.pb-sm-6{padding-bottom:24px!important}.pb-sm-7{padding-bottom:28px!important}.pb-sm-8{padding-bottom:32px!important}.pb-sm-9{padding-bottom:36px!important}.pb-sm-10{padding-bottom:40px!important}.pb-sm-11{padding-bottom:44px!important}.pb-sm-12{padding-bottom:48px!important}.pb-sm-13{padding-bottom:52px!important}.pb-sm-14{padding-bottom:56px!important}.pb-sm-15{padding-bottom:60px!important}.pb-sm-16{padding-bottom:64px!important}.pl-sm-0{padding-left:0!important}.pl-sm-1{padding-left:4px!important}.pl-sm-2{padding-left:8px!important}.pl-sm-3{padding-left:12px!important}.pl-sm-4{padding-left:16px!important}.pl-sm-5{padding-left:20px!important}.pl-sm-6{padding-left:24px!important}.pl-sm-7{padding-left:28px!important}.pl-sm-8{padding-left:32px!important}.pl-sm-9{padding-left:36px!important}.pl-sm-10{padding-left:40px!important}.pl-sm-11{padding-left:44px!important}.pl-sm-12{padding-left:48px!important}.pl-sm-13{padding-left:52px!important}.pl-sm-14{padding-left:56px!important}.pl-sm-15{padding-left:60px!important}.pl-sm-16{padding-left:64px!important}.ps-sm-0{padding-inline-start:0px!important}.ps-sm-1{padding-inline-start:4px!important}.ps-sm-2{padding-inline-start:8px!important}.ps-sm-3{padding-inline-start:12px!important}.ps-sm-4{padding-inline-start:16px!important}.ps-sm-5{padding-inline-start:20px!important}.ps-sm-6{padding-inline-start:24px!important}.ps-sm-7{padding-inline-start:28px!important}.ps-sm-8{padding-inline-start:32px!important}.ps-sm-9{padding-inline-start:36px!important}.ps-sm-10{padding-inline-start:40px!important}.ps-sm-11{padding-inline-start:44px!important}.ps-sm-12{padding-inline-start:48px!important}.ps-sm-13{padding-inline-start:52px!important}.ps-sm-14{padding-inline-start:56px!important}.ps-sm-15{padding-inline-start:60px!important}.ps-sm-16{padding-inline-start:64px!important}.pe-sm-0{padding-inline-end:0px!important}.pe-sm-1{padding-inline-end:4px!important}.pe-sm-2{padding-inline-end:8px!important}.pe-sm-3{padding-inline-end:12px!important}.pe-sm-4{padding-inline-end:16px!important}.pe-sm-5{padding-inline-end:20px!important}.pe-sm-6{padding-inline-end:24px!important}.pe-sm-7{padding-inline-end:28px!important}.pe-sm-8{padding-inline-end:32px!important}.pe-sm-9{padding-inline-end:36px!important}.pe-sm-10{padding-inline-end:40px!important}.pe-sm-11{padding-inline-end:44px!important}.pe-sm-12{padding-inline-end:48px!important}.pe-sm-13{padding-inline-end:52px!important}.pe-sm-14{padding-inline-end:56px!important}.pe-sm-15{padding-inline-end:60px!important}.pe-sm-16{padding-inline-end:64px!important}.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}.text-sm-justify{text-align:justify!important}.text-sm-start{text-align:start!important}.text-sm-end{text-align:end!important}.text-sm-h1{font-size:6rem!important;font-weight:300;line-height:1;letter-spacing:-.015625em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-sm-h2{font-size:3.75rem!important;font-weight:300;line-height:1;letter-spacing:-.0083333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-sm-h3{font-size:3rem!important;font-weight:400;line-height:1.05;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-sm-h4{font-size:2.125rem!important;font-weight:400;line-height:1.175;letter-spacing:.0073529412em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-sm-h5{font-size:1.5rem!important;font-weight:400;line-height:1.333;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-sm-h6{font-size:1.25rem!important;font-weight:500;line-height:1.6;letter-spacing:.0125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-sm-subtitle-1{font-size:1rem!important;font-weight:400;line-height:1.75;letter-spacing:.009375em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-sm-subtitle-2{font-size:.875rem!important;font-weight:500;line-height:1.6;letter-spacing:.0071428571em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-sm-body-1{font-size:1rem!important;font-weight:400;line-height:1.5;letter-spacing:.03125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-sm-body-2{font-size:.875rem!important;font-weight:400;line-height:1.425;letter-spacing:.0178571429em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-sm-button{font-size:.875rem!important;font-weight:500;line-height:2.6;letter-spacing:.0892857143em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}.text-sm-caption{font-size:.75rem!important;font-weight:400;line-height:1.667;letter-spacing:.0333333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-sm-overline{font-size:.75rem!important;font-weight:500;line-height:2.667;letter-spacing:.1666666667em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}.h-sm-auto{height:auto!important}.h-sm-screen{height:100vh!important}.h-sm-0{height:0!important}.h-sm-25{height:25%!important}.h-sm-50{height:50%!important}.h-sm-75{height:75%!important}.h-sm-100{height:100%!important}.w-sm-auto{width:auto!important}.w-sm-0{width:0!important}.w-sm-25{width:25%!important}.w-sm-33{width:33%!important}.w-sm-50{width:50%!important}.w-sm-66{width:66%!important}.w-sm-75{width:75%!important}.w-sm-100{width:100%!important}}@media (min-width: 960px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.float-md-none{float:none!important}.float-md-left{float:left!important}.float-md-right{float:right!important}.v-locale--is-rtl .float-md-end{float:left!important}.v-locale--is-rtl .float-md-start,.v-locale--is-ltr .float-md-end{float:right!important}.v-locale--is-ltr .float-md-start{float:left!important}.flex-md-fill,.flex-md-1-1{flex:1 1 auto!important}.flex-md-1-0{flex:1 0 auto!important}.flex-md-0-1{flex:0 1 auto!important}.flex-md-0-0{flex:0 0 auto!important}.flex-md-1-1-100{flex:1 1 100%!important}.flex-md-1-0-100{flex:1 0 100%!important}.flex-md-0-1-100{flex:0 1 100%!important}.flex-md-0-0-100{flex:0 0 100%!important}.flex-md-1-1-0{flex:1 1 0!important}.flex-md-1-0-0{flex:1 0 0!important}.flex-md-0-1-0{flex:0 1 0!important}.flex-md-0-0-0{flex:0 0 0!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-md-start{justify-content:flex-start!important}.justify-md-end{justify-content:flex-end!important}.justify-md-center{justify-content:center!important}.justify-md-space-between{justify-content:space-between!important}.justify-md-space-around{justify-content:space-around!important}.justify-md-space-evenly{justify-content:space-evenly!important}.align-md-start{align-items:flex-start!important}.align-md-end{align-items:flex-end!important}.align-md-center{align-items:center!important}.align-md-baseline{align-items:baseline!important}.align-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-space-between{align-content:space-between!important}.align-content-md-space-around{align-content:space-around!important}.align-content-md-space-evenly{align-content:space-evenly!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-6{order:6!important}.order-md-7{order:7!important}.order-md-8{order:8!important}.order-md-9{order:9!important}.order-md-10{order:10!important}.order-md-11{order:11!important}.order-md-12{order:12!important}.order-md-last{order:13!important}.ga-md-0{gap:0px!important}.ga-md-1{gap:4px!important}.ga-md-2{gap:8px!important}.ga-md-3{gap:12px!important}.ga-md-4{gap:16px!important}.ga-md-5{gap:20px!important}.ga-md-6{gap:24px!important}.ga-md-7{gap:28px!important}.ga-md-8{gap:32px!important}.ga-md-9{gap:36px!important}.ga-md-10{gap:40px!important}.ga-md-11{gap:44px!important}.ga-md-12{gap:48px!important}.ga-md-13{gap:52px!important}.ga-md-14{gap:56px!important}.ga-md-15{gap:60px!important}.ga-md-16{gap:64px!important}.ga-md-auto{gap:auto!important}.gr-md-0{row-gap:0px!important}.gr-md-1{row-gap:4px!important}.gr-md-2{row-gap:8px!important}.gr-md-3{row-gap:12px!important}.gr-md-4{row-gap:16px!important}.gr-md-5{row-gap:20px!important}.gr-md-6{row-gap:24px!important}.gr-md-7{row-gap:28px!important}.gr-md-8{row-gap:32px!important}.gr-md-9{row-gap:36px!important}.gr-md-10{row-gap:40px!important}.gr-md-11{row-gap:44px!important}.gr-md-12{row-gap:48px!important}.gr-md-13{row-gap:52px!important}.gr-md-14{row-gap:56px!important}.gr-md-15{row-gap:60px!important}.gr-md-16{row-gap:64px!important}.gr-md-auto{row-gap:auto!important}.gc-md-0{-moz-column-gap:0px!important;column-gap:0px!important}.gc-md-1{-moz-column-gap:4px!important;column-gap:4px!important}.gc-md-2{-moz-column-gap:8px!important;column-gap:8px!important}.gc-md-3{-moz-column-gap:12px!important;column-gap:12px!important}.gc-md-4{-moz-column-gap:16px!important;column-gap:16px!important}.gc-md-5{-moz-column-gap:20px!important;column-gap:20px!important}.gc-md-6{-moz-column-gap:24px!important;column-gap:24px!important}.gc-md-7{-moz-column-gap:28px!important;column-gap:28px!important}.gc-md-8{-moz-column-gap:32px!important;column-gap:32px!important}.gc-md-9{-moz-column-gap:36px!important;column-gap:36px!important}.gc-md-10{-moz-column-gap:40px!important;column-gap:40px!important}.gc-md-11{-moz-column-gap:44px!important;column-gap:44px!important}.gc-md-12{-moz-column-gap:48px!important;column-gap:48px!important}.gc-md-13{-moz-column-gap:52px!important;column-gap:52px!important}.gc-md-14{-moz-column-gap:56px!important;column-gap:56px!important}.gc-md-15{-moz-column-gap:60px!important;column-gap:60px!important}.gc-md-16{-moz-column-gap:64px!important;column-gap:64px!important}.gc-md-auto{-moz-column-gap:auto!important;column-gap:auto!important}.ma-md-0{margin:0!important}.ma-md-1{margin:4px!important}.ma-md-2{margin:8px!important}.ma-md-3{margin:12px!important}.ma-md-4{margin:16px!important}.ma-md-5{margin:20px!important}.ma-md-6{margin:24px!important}.ma-md-7{margin:28px!important}.ma-md-8{margin:32px!important}.ma-md-9{margin:36px!important}.ma-md-10{margin:40px!important}.ma-md-11{margin:44px!important}.ma-md-12{margin:48px!important}.ma-md-13{margin:52px!important}.ma-md-14{margin:56px!important}.ma-md-15{margin:60px!important}.ma-md-16{margin:64px!important}.ma-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:4px!important;margin-left:4px!important}.mx-md-2{margin-right:8px!important;margin-left:8px!important}.mx-md-3{margin-right:12px!important;margin-left:12px!important}.mx-md-4{margin-right:16px!important;margin-left:16px!important}.mx-md-5{margin-right:20px!important;margin-left:20px!important}.mx-md-6{margin-right:24px!important;margin-left:24px!important}.mx-md-7{margin-right:28px!important;margin-left:28px!important}.mx-md-8{margin-right:32px!important;margin-left:32px!important}.mx-md-9{margin-right:36px!important;margin-left:36px!important}.mx-md-10{margin-right:40px!important;margin-left:40px!important}.mx-md-11{margin-right:44px!important;margin-left:44px!important}.mx-md-12{margin-right:48px!important;margin-left:48px!important}.mx-md-13{margin-right:52px!important;margin-left:52px!important}.mx-md-14{margin-right:56px!important;margin-left:56px!important}.mx-md-15{margin-right:60px!important;margin-left:60px!important}.mx-md-16{margin-right:64px!important;margin-left:64px!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:4px!important;margin-bottom:4px!important}.my-md-2{margin-top:8px!important;margin-bottom:8px!important}.my-md-3{margin-top:12px!important;margin-bottom:12px!important}.my-md-4{margin-top:16px!important;margin-bottom:16px!important}.my-md-5{margin-top:20px!important;margin-bottom:20px!important}.my-md-6{margin-top:24px!important;margin-bottom:24px!important}.my-md-7{margin-top:28px!important;margin-bottom:28px!important}.my-md-8{margin-top:32px!important;margin-bottom:32px!important}.my-md-9{margin-top:36px!important;margin-bottom:36px!important}.my-md-10{margin-top:40px!important;margin-bottom:40px!important}.my-md-11{margin-top:44px!important;margin-bottom:44px!important}.my-md-12{margin-top:48px!important;margin-bottom:48px!important}.my-md-13{margin-top:52px!important;margin-bottom:52px!important}.my-md-14{margin-top:56px!important;margin-bottom:56px!important}.my-md-15{margin-top:60px!important;margin-bottom:60px!important}.my-md-16{margin-top:64px!important;margin-bottom:64px!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:4px!important}.mt-md-2{margin-top:8px!important}.mt-md-3{margin-top:12px!important}.mt-md-4{margin-top:16px!important}.mt-md-5{margin-top:20px!important}.mt-md-6{margin-top:24px!important}.mt-md-7{margin-top:28px!important}.mt-md-8{margin-top:32px!important}.mt-md-9{margin-top:36px!important}.mt-md-10{margin-top:40px!important}.mt-md-11{margin-top:44px!important}.mt-md-12{margin-top:48px!important}.mt-md-13{margin-top:52px!important}.mt-md-14{margin-top:56px!important}.mt-md-15{margin-top:60px!important}.mt-md-16{margin-top:64px!important}.mt-md-auto{margin-top:auto!important}.mr-md-0{margin-right:0!important}.mr-md-1{margin-right:4px!important}.mr-md-2{margin-right:8px!important}.mr-md-3{margin-right:12px!important}.mr-md-4{margin-right:16px!important}.mr-md-5{margin-right:20px!important}.mr-md-6{margin-right:24px!important}.mr-md-7{margin-right:28px!important}.mr-md-8{margin-right:32px!important}.mr-md-9{margin-right:36px!important}.mr-md-10{margin-right:40px!important}.mr-md-11{margin-right:44px!important}.mr-md-12{margin-right:48px!important}.mr-md-13{margin-right:52px!important}.mr-md-14{margin-right:56px!important}.mr-md-15{margin-right:60px!important}.mr-md-16{margin-right:64px!important}.mr-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:4px!important}.mb-md-2{margin-bottom:8px!important}.mb-md-3{margin-bottom:12px!important}.mb-md-4{margin-bottom:16px!important}.mb-md-5{margin-bottom:20px!important}.mb-md-6{margin-bottom:24px!important}.mb-md-7{margin-bottom:28px!important}.mb-md-8{margin-bottom:32px!important}.mb-md-9{margin-bottom:36px!important}.mb-md-10{margin-bottom:40px!important}.mb-md-11{margin-bottom:44px!important}.mb-md-12{margin-bottom:48px!important}.mb-md-13{margin-bottom:52px!important}.mb-md-14{margin-bottom:56px!important}.mb-md-15{margin-bottom:60px!important}.mb-md-16{margin-bottom:64px!important}.mb-md-auto{margin-bottom:auto!important}.ml-md-0{margin-left:0!important}.ml-md-1{margin-left:4px!important}.ml-md-2{margin-left:8px!important}.ml-md-3{margin-left:12px!important}.ml-md-4{margin-left:16px!important}.ml-md-5{margin-left:20px!important}.ml-md-6{margin-left:24px!important}.ml-md-7{margin-left:28px!important}.ml-md-8{margin-left:32px!important}.ml-md-9{margin-left:36px!important}.ml-md-10{margin-left:40px!important}.ml-md-11{margin-left:44px!important}.ml-md-12{margin-left:48px!important}.ml-md-13{margin-left:52px!important}.ml-md-14{margin-left:56px!important}.ml-md-15{margin-left:60px!important}.ml-md-16{margin-left:64px!important}.ml-md-auto{margin-left:auto!important}.ms-md-0{margin-inline-start:0px!important}.ms-md-1{margin-inline-start:4px!important}.ms-md-2{margin-inline-start:8px!important}.ms-md-3{margin-inline-start:12px!important}.ms-md-4{margin-inline-start:16px!important}.ms-md-5{margin-inline-start:20px!important}.ms-md-6{margin-inline-start:24px!important}.ms-md-7{margin-inline-start:28px!important}.ms-md-8{margin-inline-start:32px!important}.ms-md-9{margin-inline-start:36px!important}.ms-md-10{margin-inline-start:40px!important}.ms-md-11{margin-inline-start:44px!important}.ms-md-12{margin-inline-start:48px!important}.ms-md-13{margin-inline-start:52px!important}.ms-md-14{margin-inline-start:56px!important}.ms-md-15{margin-inline-start:60px!important}.ms-md-16{margin-inline-start:64px!important}.ms-md-auto{margin-inline-start:auto!important}.me-md-0{margin-inline-end:0px!important}.me-md-1{margin-inline-end:4px!important}.me-md-2{margin-inline-end:8px!important}.me-md-3{margin-inline-end:12px!important}.me-md-4{margin-inline-end:16px!important}.me-md-5{margin-inline-end:20px!important}.me-md-6{margin-inline-end:24px!important}.me-md-7{margin-inline-end:28px!important}.me-md-8{margin-inline-end:32px!important}.me-md-9{margin-inline-end:36px!important}.me-md-10{margin-inline-end:40px!important}.me-md-11{margin-inline-end:44px!important}.me-md-12{margin-inline-end:48px!important}.me-md-13{margin-inline-end:52px!important}.me-md-14{margin-inline-end:56px!important}.me-md-15{margin-inline-end:60px!important}.me-md-16{margin-inline-end:64px!important}.me-md-auto{margin-inline-end:auto!important}.ma-md-n1{margin:-4px!important}.ma-md-n2{margin:-8px!important}.ma-md-n3{margin:-12px!important}.ma-md-n4{margin:-16px!important}.ma-md-n5{margin:-20px!important}.ma-md-n6{margin:-24px!important}.ma-md-n7{margin:-28px!important}.ma-md-n8{margin:-32px!important}.ma-md-n9{margin:-36px!important}.ma-md-n10{margin:-40px!important}.ma-md-n11{margin:-44px!important}.ma-md-n12{margin:-48px!important}.ma-md-n13{margin:-52px!important}.ma-md-n14{margin:-56px!important}.ma-md-n15{margin:-60px!important}.ma-md-n16{margin:-64px!important}.mx-md-n1{margin-right:-4px!important;margin-left:-4px!important}.mx-md-n2{margin-right:-8px!important;margin-left:-8px!important}.mx-md-n3{margin-right:-12px!important;margin-left:-12px!important}.mx-md-n4{margin-right:-16px!important;margin-left:-16px!important}.mx-md-n5{margin-right:-20px!important;margin-left:-20px!important}.mx-md-n6{margin-right:-24px!important;margin-left:-24px!important}.mx-md-n7{margin-right:-28px!important;margin-left:-28px!important}.mx-md-n8{margin-right:-32px!important;margin-left:-32px!important}.mx-md-n9{margin-right:-36px!important;margin-left:-36px!important}.mx-md-n10{margin-right:-40px!important;margin-left:-40px!important}.mx-md-n11{margin-right:-44px!important;margin-left:-44px!important}.mx-md-n12{margin-right:-48px!important;margin-left:-48px!important}.mx-md-n13{margin-right:-52px!important;margin-left:-52px!important}.mx-md-n14{margin-right:-56px!important;margin-left:-56px!important}.mx-md-n15{margin-right:-60px!important;margin-left:-60px!important}.mx-md-n16{margin-right:-64px!important;margin-left:-64px!important}.my-md-n1{margin-top:-4px!important;margin-bottom:-4px!important}.my-md-n2{margin-top:-8px!important;margin-bottom:-8px!important}.my-md-n3{margin-top:-12px!important;margin-bottom:-12px!important}.my-md-n4{margin-top:-16px!important;margin-bottom:-16px!important}.my-md-n5{margin-top:-20px!important;margin-bottom:-20px!important}.my-md-n6{margin-top:-24px!important;margin-bottom:-24px!important}.my-md-n7{margin-top:-28px!important;margin-bottom:-28px!important}.my-md-n8{margin-top:-32px!important;margin-bottom:-32px!important}.my-md-n9{margin-top:-36px!important;margin-bottom:-36px!important}.my-md-n10{margin-top:-40px!important;margin-bottom:-40px!important}.my-md-n11{margin-top:-44px!important;margin-bottom:-44px!important}.my-md-n12{margin-top:-48px!important;margin-bottom:-48px!important}.my-md-n13{margin-top:-52px!important;margin-bottom:-52px!important}.my-md-n14{margin-top:-56px!important;margin-bottom:-56px!important}.my-md-n15{margin-top:-60px!important;margin-bottom:-60px!important}.my-md-n16{margin-top:-64px!important;margin-bottom:-64px!important}.mt-md-n1{margin-top:-4px!important}.mt-md-n2{margin-top:-8px!important}.mt-md-n3{margin-top:-12px!important}.mt-md-n4{margin-top:-16px!important}.mt-md-n5{margin-top:-20px!important}.mt-md-n6{margin-top:-24px!important}.mt-md-n7{margin-top:-28px!important}.mt-md-n8{margin-top:-32px!important}.mt-md-n9{margin-top:-36px!important}.mt-md-n10{margin-top:-40px!important}.mt-md-n11{margin-top:-44px!important}.mt-md-n12{margin-top:-48px!important}.mt-md-n13{margin-top:-52px!important}.mt-md-n14{margin-top:-56px!important}.mt-md-n15{margin-top:-60px!important}.mt-md-n16{margin-top:-64px!important}.mr-md-n1{margin-right:-4px!important}.mr-md-n2{margin-right:-8px!important}.mr-md-n3{margin-right:-12px!important}.mr-md-n4{margin-right:-16px!important}.mr-md-n5{margin-right:-20px!important}.mr-md-n6{margin-right:-24px!important}.mr-md-n7{margin-right:-28px!important}.mr-md-n8{margin-right:-32px!important}.mr-md-n9{margin-right:-36px!important}.mr-md-n10{margin-right:-40px!important}.mr-md-n11{margin-right:-44px!important}.mr-md-n12{margin-right:-48px!important}.mr-md-n13{margin-right:-52px!important}.mr-md-n14{margin-right:-56px!important}.mr-md-n15{margin-right:-60px!important}.mr-md-n16{margin-right:-64px!important}.mb-md-n1{margin-bottom:-4px!important}.mb-md-n2{margin-bottom:-8px!important}.mb-md-n3{margin-bottom:-12px!important}.mb-md-n4{margin-bottom:-16px!important}.mb-md-n5{margin-bottom:-20px!important}.mb-md-n6{margin-bottom:-24px!important}.mb-md-n7{margin-bottom:-28px!important}.mb-md-n8{margin-bottom:-32px!important}.mb-md-n9{margin-bottom:-36px!important}.mb-md-n10{margin-bottom:-40px!important}.mb-md-n11{margin-bottom:-44px!important}.mb-md-n12{margin-bottom:-48px!important}.mb-md-n13{margin-bottom:-52px!important}.mb-md-n14{margin-bottom:-56px!important}.mb-md-n15{margin-bottom:-60px!important}.mb-md-n16{margin-bottom:-64px!important}.ml-md-n1{margin-left:-4px!important}.ml-md-n2{margin-left:-8px!important}.ml-md-n3{margin-left:-12px!important}.ml-md-n4{margin-left:-16px!important}.ml-md-n5{margin-left:-20px!important}.ml-md-n6{margin-left:-24px!important}.ml-md-n7{margin-left:-28px!important}.ml-md-n8{margin-left:-32px!important}.ml-md-n9{margin-left:-36px!important}.ml-md-n10{margin-left:-40px!important}.ml-md-n11{margin-left:-44px!important}.ml-md-n12{margin-left:-48px!important}.ml-md-n13{margin-left:-52px!important}.ml-md-n14{margin-left:-56px!important}.ml-md-n15{margin-left:-60px!important}.ml-md-n16{margin-left:-64px!important}.ms-md-n1{margin-inline-start:-4px!important}.ms-md-n2{margin-inline-start:-8px!important}.ms-md-n3{margin-inline-start:-12px!important}.ms-md-n4{margin-inline-start:-16px!important}.ms-md-n5{margin-inline-start:-20px!important}.ms-md-n6{margin-inline-start:-24px!important}.ms-md-n7{margin-inline-start:-28px!important}.ms-md-n8{margin-inline-start:-32px!important}.ms-md-n9{margin-inline-start:-36px!important}.ms-md-n10{margin-inline-start:-40px!important}.ms-md-n11{margin-inline-start:-44px!important}.ms-md-n12{margin-inline-start:-48px!important}.ms-md-n13{margin-inline-start:-52px!important}.ms-md-n14{margin-inline-start:-56px!important}.ms-md-n15{margin-inline-start:-60px!important}.ms-md-n16{margin-inline-start:-64px!important}.me-md-n1{margin-inline-end:-4px!important}.me-md-n2{margin-inline-end:-8px!important}.me-md-n3{margin-inline-end:-12px!important}.me-md-n4{margin-inline-end:-16px!important}.me-md-n5{margin-inline-end:-20px!important}.me-md-n6{margin-inline-end:-24px!important}.me-md-n7{margin-inline-end:-28px!important}.me-md-n8{margin-inline-end:-32px!important}.me-md-n9{margin-inline-end:-36px!important}.me-md-n10{margin-inline-end:-40px!important}.me-md-n11{margin-inline-end:-44px!important}.me-md-n12{margin-inline-end:-48px!important}.me-md-n13{margin-inline-end:-52px!important}.me-md-n14{margin-inline-end:-56px!important}.me-md-n15{margin-inline-end:-60px!important}.me-md-n16{margin-inline-end:-64px!important}.pa-md-0{padding:0!important}.pa-md-1{padding:4px!important}.pa-md-2{padding:8px!important}.pa-md-3{padding:12px!important}.pa-md-4{padding:16px!important}.pa-md-5{padding:20px!important}.pa-md-6{padding:24px!important}.pa-md-7{padding:28px!important}.pa-md-8{padding:32px!important}.pa-md-9{padding:36px!important}.pa-md-10{padding:40px!important}.pa-md-11{padding:44px!important}.pa-md-12{padding:48px!important}.pa-md-13{padding:52px!important}.pa-md-14{padding:56px!important}.pa-md-15{padding:60px!important}.pa-md-16{padding:64px!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:4px!important;padding-left:4px!important}.px-md-2{padding-right:8px!important;padding-left:8px!important}.px-md-3{padding-right:12px!important;padding-left:12px!important}.px-md-4{padding-right:16px!important;padding-left:16px!important}.px-md-5{padding-right:20px!important;padding-left:20px!important}.px-md-6{padding-right:24px!important;padding-left:24px!important}.px-md-7{padding-right:28px!important;padding-left:28px!important}.px-md-8{padding-right:32px!important;padding-left:32px!important}.px-md-9{padding-right:36px!important;padding-left:36px!important}.px-md-10{padding-right:40px!important;padding-left:40px!important}.px-md-11{padding-right:44px!important;padding-left:44px!important}.px-md-12{padding-right:48px!important;padding-left:48px!important}.px-md-13{padding-right:52px!important;padding-left:52px!important}.px-md-14{padding-right:56px!important;padding-left:56px!important}.px-md-15{padding-right:60px!important;padding-left:60px!important}.px-md-16{padding-right:64px!important;padding-left:64px!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:4px!important;padding-bottom:4px!important}.py-md-2{padding-top:8px!important;padding-bottom:8px!important}.py-md-3{padding-top:12px!important;padding-bottom:12px!important}.py-md-4{padding-top:16px!important;padding-bottom:16px!important}.py-md-5{padding-top:20px!important;padding-bottom:20px!important}.py-md-6{padding-top:24px!important;padding-bottom:24px!important}.py-md-7{padding-top:28px!important;padding-bottom:28px!important}.py-md-8{padding-top:32px!important;padding-bottom:32px!important}.py-md-9{padding-top:36px!important;padding-bottom:36px!important}.py-md-10{padding-top:40px!important;padding-bottom:40px!important}.py-md-11{padding-top:44px!important;padding-bottom:44px!important}.py-md-12{padding-top:48px!important;padding-bottom:48px!important}.py-md-13{padding-top:52px!important;padding-bottom:52px!important}.py-md-14{padding-top:56px!important;padding-bottom:56px!important}.py-md-15{padding-top:60px!important;padding-bottom:60px!important}.py-md-16{padding-top:64px!important;padding-bottom:64px!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:4px!important}.pt-md-2{padding-top:8px!important}.pt-md-3{padding-top:12px!important}.pt-md-4{padding-top:16px!important}.pt-md-5{padding-top:20px!important}.pt-md-6{padding-top:24px!important}.pt-md-7{padding-top:28px!important}.pt-md-8{padding-top:32px!important}.pt-md-9{padding-top:36px!important}.pt-md-10{padding-top:40px!important}.pt-md-11{padding-top:44px!important}.pt-md-12{padding-top:48px!important}.pt-md-13{padding-top:52px!important}.pt-md-14{padding-top:56px!important}.pt-md-15{padding-top:60px!important}.pt-md-16{padding-top:64px!important}.pr-md-0{padding-right:0!important}.pr-md-1{padding-right:4px!important}.pr-md-2{padding-right:8px!important}.pr-md-3{padding-right:12px!important}.pr-md-4{padding-right:16px!important}.pr-md-5{padding-right:20px!important}.pr-md-6{padding-right:24px!important}.pr-md-7{padding-right:28px!important}.pr-md-8{padding-right:32px!important}.pr-md-9{padding-right:36px!important}.pr-md-10{padding-right:40px!important}.pr-md-11{padding-right:44px!important}.pr-md-12{padding-right:48px!important}.pr-md-13{padding-right:52px!important}.pr-md-14{padding-right:56px!important}.pr-md-15{padding-right:60px!important}.pr-md-16{padding-right:64px!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:4px!important}.pb-md-2{padding-bottom:8px!important}.pb-md-3{padding-bottom:12px!important}.pb-md-4{padding-bottom:16px!important}.pb-md-5{padding-bottom:20px!important}.pb-md-6{padding-bottom:24px!important}.pb-md-7{padding-bottom:28px!important}.pb-md-8{padding-bottom:32px!important}.pb-md-9{padding-bottom:36px!important}.pb-md-10{padding-bottom:40px!important}.pb-md-11{padding-bottom:44px!important}.pb-md-12{padding-bottom:48px!important}.pb-md-13{padding-bottom:52px!important}.pb-md-14{padding-bottom:56px!important}.pb-md-15{padding-bottom:60px!important}.pb-md-16{padding-bottom:64px!important}.pl-md-0{padding-left:0!important}.pl-md-1{padding-left:4px!important}.pl-md-2{padding-left:8px!important}.pl-md-3{padding-left:12px!important}.pl-md-4{padding-left:16px!important}.pl-md-5{padding-left:20px!important}.pl-md-6{padding-left:24px!important}.pl-md-7{padding-left:28px!important}.pl-md-8{padding-left:32px!important}.pl-md-9{padding-left:36px!important}.pl-md-10{padding-left:40px!important}.pl-md-11{padding-left:44px!important}.pl-md-12{padding-left:48px!important}.pl-md-13{padding-left:52px!important}.pl-md-14{padding-left:56px!important}.pl-md-15{padding-left:60px!important}.pl-md-16{padding-left:64px!important}.ps-md-0{padding-inline-start:0px!important}.ps-md-1{padding-inline-start:4px!important}.ps-md-2{padding-inline-start:8px!important}.ps-md-3{padding-inline-start:12px!important}.ps-md-4{padding-inline-start:16px!important}.ps-md-5{padding-inline-start:20px!important}.ps-md-6{padding-inline-start:24px!important}.ps-md-7{padding-inline-start:28px!important}.ps-md-8{padding-inline-start:32px!important}.ps-md-9{padding-inline-start:36px!important}.ps-md-10{padding-inline-start:40px!important}.ps-md-11{padding-inline-start:44px!important}.ps-md-12{padding-inline-start:48px!important}.ps-md-13{padding-inline-start:52px!important}.ps-md-14{padding-inline-start:56px!important}.ps-md-15{padding-inline-start:60px!important}.ps-md-16{padding-inline-start:64px!important}.pe-md-0{padding-inline-end:0px!important}.pe-md-1{padding-inline-end:4px!important}.pe-md-2{padding-inline-end:8px!important}.pe-md-3{padding-inline-end:12px!important}.pe-md-4{padding-inline-end:16px!important}.pe-md-5{padding-inline-end:20px!important}.pe-md-6{padding-inline-end:24px!important}.pe-md-7{padding-inline-end:28px!important}.pe-md-8{padding-inline-end:32px!important}.pe-md-9{padding-inline-end:36px!important}.pe-md-10{padding-inline-end:40px!important}.pe-md-11{padding-inline-end:44px!important}.pe-md-12{padding-inline-end:48px!important}.pe-md-13{padding-inline-end:52px!important}.pe-md-14{padding-inline-end:56px!important}.pe-md-15{padding-inline-end:60px!important}.pe-md-16{padding-inline-end:64px!important}.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}.text-md-justify{text-align:justify!important}.text-md-start{text-align:start!important}.text-md-end{text-align:end!important}.text-md-h1{font-size:6rem!important;font-weight:300;line-height:1;letter-spacing:-.015625em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-md-h2{font-size:3.75rem!important;font-weight:300;line-height:1;letter-spacing:-.0083333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-md-h3{font-size:3rem!important;font-weight:400;line-height:1.05;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-md-h4{font-size:2.125rem!important;font-weight:400;line-height:1.175;letter-spacing:.0073529412em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-md-h5{font-size:1.5rem!important;font-weight:400;line-height:1.333;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-md-h6{font-size:1.25rem!important;font-weight:500;line-height:1.6;letter-spacing:.0125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-md-subtitle-1{font-size:1rem!important;font-weight:400;line-height:1.75;letter-spacing:.009375em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-md-subtitle-2{font-size:.875rem!important;font-weight:500;line-height:1.6;letter-spacing:.0071428571em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-md-body-1{font-size:1rem!important;font-weight:400;line-height:1.5;letter-spacing:.03125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-md-body-2{font-size:.875rem!important;font-weight:400;line-height:1.425;letter-spacing:.0178571429em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-md-button{font-size:.875rem!important;font-weight:500;line-height:2.6;letter-spacing:.0892857143em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}.text-md-caption{font-size:.75rem!important;font-weight:400;line-height:1.667;letter-spacing:.0333333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-md-overline{font-size:.75rem!important;font-weight:500;line-height:2.667;letter-spacing:.1666666667em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}.h-md-auto{height:auto!important}.h-md-screen{height:100vh!important}.h-md-0{height:0!important}.h-md-25{height:25%!important}.h-md-50{height:50%!important}.h-md-75{height:75%!important}.h-md-100{height:100%!important}.w-md-auto{width:auto!important}.w-md-0{width:0!important}.w-md-25{width:25%!important}.w-md-33{width:33%!important}.w-md-50{width:50%!important}.w-md-66{width:66%!important}.w-md-75{width:75%!important}.w-md-100{width:100%!important}}@media (min-width: 1280px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.float-lg-none{float:none!important}.float-lg-left{float:left!important}.float-lg-right{float:right!important}.v-locale--is-rtl .float-lg-end{float:left!important}.v-locale--is-rtl .float-lg-start,.v-locale--is-ltr .float-lg-end{float:right!important}.v-locale--is-ltr .float-lg-start{float:left!important}.flex-lg-fill,.flex-lg-1-1{flex:1 1 auto!important}.flex-lg-1-0{flex:1 0 auto!important}.flex-lg-0-1{flex:0 1 auto!important}.flex-lg-0-0{flex:0 0 auto!important}.flex-lg-1-1-100{flex:1 1 100%!important}.flex-lg-1-0-100{flex:1 0 100%!important}.flex-lg-0-1-100{flex:0 1 100%!important}.flex-lg-0-0-100{flex:0 0 100%!important}.flex-lg-1-1-0{flex:1 1 0!important}.flex-lg-1-0-0{flex:1 0 0!important}.flex-lg-0-1-0{flex:0 1 0!important}.flex-lg-0-0-0{flex:0 0 0!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-lg-start{justify-content:flex-start!important}.justify-lg-end{justify-content:flex-end!important}.justify-lg-center{justify-content:center!important}.justify-lg-space-between{justify-content:space-between!important}.justify-lg-space-around{justify-content:space-around!important}.justify-lg-space-evenly{justify-content:space-evenly!important}.align-lg-start{align-items:flex-start!important}.align-lg-end{align-items:flex-end!important}.align-lg-center{align-items:center!important}.align-lg-baseline{align-items:baseline!important}.align-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-space-between{align-content:space-between!important}.align-content-lg-space-around{align-content:space-around!important}.align-content-lg-space-evenly{align-content:space-evenly!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-6{order:6!important}.order-lg-7{order:7!important}.order-lg-8{order:8!important}.order-lg-9{order:9!important}.order-lg-10{order:10!important}.order-lg-11{order:11!important}.order-lg-12{order:12!important}.order-lg-last{order:13!important}.ga-lg-0{gap:0px!important}.ga-lg-1{gap:4px!important}.ga-lg-2{gap:8px!important}.ga-lg-3{gap:12px!important}.ga-lg-4{gap:16px!important}.ga-lg-5{gap:20px!important}.ga-lg-6{gap:24px!important}.ga-lg-7{gap:28px!important}.ga-lg-8{gap:32px!important}.ga-lg-9{gap:36px!important}.ga-lg-10{gap:40px!important}.ga-lg-11{gap:44px!important}.ga-lg-12{gap:48px!important}.ga-lg-13{gap:52px!important}.ga-lg-14{gap:56px!important}.ga-lg-15{gap:60px!important}.ga-lg-16{gap:64px!important}.ga-lg-auto{gap:auto!important}.gr-lg-0{row-gap:0px!important}.gr-lg-1{row-gap:4px!important}.gr-lg-2{row-gap:8px!important}.gr-lg-3{row-gap:12px!important}.gr-lg-4{row-gap:16px!important}.gr-lg-5{row-gap:20px!important}.gr-lg-6{row-gap:24px!important}.gr-lg-7{row-gap:28px!important}.gr-lg-8{row-gap:32px!important}.gr-lg-9{row-gap:36px!important}.gr-lg-10{row-gap:40px!important}.gr-lg-11{row-gap:44px!important}.gr-lg-12{row-gap:48px!important}.gr-lg-13{row-gap:52px!important}.gr-lg-14{row-gap:56px!important}.gr-lg-15{row-gap:60px!important}.gr-lg-16{row-gap:64px!important}.gr-lg-auto{row-gap:auto!important}.gc-lg-0{-moz-column-gap:0px!important;column-gap:0px!important}.gc-lg-1{-moz-column-gap:4px!important;column-gap:4px!important}.gc-lg-2{-moz-column-gap:8px!important;column-gap:8px!important}.gc-lg-3{-moz-column-gap:12px!important;column-gap:12px!important}.gc-lg-4{-moz-column-gap:16px!important;column-gap:16px!important}.gc-lg-5{-moz-column-gap:20px!important;column-gap:20px!important}.gc-lg-6{-moz-column-gap:24px!important;column-gap:24px!important}.gc-lg-7{-moz-column-gap:28px!important;column-gap:28px!important}.gc-lg-8{-moz-column-gap:32px!important;column-gap:32px!important}.gc-lg-9{-moz-column-gap:36px!important;column-gap:36px!important}.gc-lg-10{-moz-column-gap:40px!important;column-gap:40px!important}.gc-lg-11{-moz-column-gap:44px!important;column-gap:44px!important}.gc-lg-12{-moz-column-gap:48px!important;column-gap:48px!important}.gc-lg-13{-moz-column-gap:52px!important;column-gap:52px!important}.gc-lg-14{-moz-column-gap:56px!important;column-gap:56px!important}.gc-lg-15{-moz-column-gap:60px!important;column-gap:60px!important}.gc-lg-16{-moz-column-gap:64px!important;column-gap:64px!important}.gc-lg-auto{-moz-column-gap:auto!important;column-gap:auto!important}.ma-lg-0{margin:0!important}.ma-lg-1{margin:4px!important}.ma-lg-2{margin:8px!important}.ma-lg-3{margin:12px!important}.ma-lg-4{margin:16px!important}.ma-lg-5{margin:20px!important}.ma-lg-6{margin:24px!important}.ma-lg-7{margin:28px!important}.ma-lg-8{margin:32px!important}.ma-lg-9{margin:36px!important}.ma-lg-10{margin:40px!important}.ma-lg-11{margin:44px!important}.ma-lg-12{margin:48px!important}.ma-lg-13{margin:52px!important}.ma-lg-14{margin:56px!important}.ma-lg-15{margin:60px!important}.ma-lg-16{margin:64px!important}.ma-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:4px!important;margin-left:4px!important}.mx-lg-2{margin-right:8px!important;margin-left:8px!important}.mx-lg-3{margin-right:12px!important;margin-left:12px!important}.mx-lg-4{margin-right:16px!important;margin-left:16px!important}.mx-lg-5{margin-right:20px!important;margin-left:20px!important}.mx-lg-6{margin-right:24px!important;margin-left:24px!important}.mx-lg-7{margin-right:28px!important;margin-left:28px!important}.mx-lg-8{margin-right:32px!important;margin-left:32px!important}.mx-lg-9{margin-right:36px!important;margin-left:36px!important}.mx-lg-10{margin-right:40px!important;margin-left:40px!important}.mx-lg-11{margin-right:44px!important;margin-left:44px!important}.mx-lg-12{margin-right:48px!important;margin-left:48px!important}.mx-lg-13{margin-right:52px!important;margin-left:52px!important}.mx-lg-14{margin-right:56px!important;margin-left:56px!important}.mx-lg-15{margin-right:60px!important;margin-left:60px!important}.mx-lg-16{margin-right:64px!important;margin-left:64px!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:4px!important;margin-bottom:4px!important}.my-lg-2{margin-top:8px!important;margin-bottom:8px!important}.my-lg-3{margin-top:12px!important;margin-bottom:12px!important}.my-lg-4{margin-top:16px!important;margin-bottom:16px!important}.my-lg-5{margin-top:20px!important;margin-bottom:20px!important}.my-lg-6{margin-top:24px!important;margin-bottom:24px!important}.my-lg-7{margin-top:28px!important;margin-bottom:28px!important}.my-lg-8{margin-top:32px!important;margin-bottom:32px!important}.my-lg-9{margin-top:36px!important;margin-bottom:36px!important}.my-lg-10{margin-top:40px!important;margin-bottom:40px!important}.my-lg-11{margin-top:44px!important;margin-bottom:44px!important}.my-lg-12{margin-top:48px!important;margin-bottom:48px!important}.my-lg-13{margin-top:52px!important;margin-bottom:52px!important}.my-lg-14{margin-top:56px!important;margin-bottom:56px!important}.my-lg-15{margin-top:60px!important;margin-bottom:60px!important}.my-lg-16{margin-top:64px!important;margin-bottom:64px!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:4px!important}.mt-lg-2{margin-top:8px!important}.mt-lg-3{margin-top:12px!important}.mt-lg-4{margin-top:16px!important}.mt-lg-5{margin-top:20px!important}.mt-lg-6{margin-top:24px!important}.mt-lg-7{margin-top:28px!important}.mt-lg-8{margin-top:32px!important}.mt-lg-9{margin-top:36px!important}.mt-lg-10{margin-top:40px!important}.mt-lg-11{margin-top:44px!important}.mt-lg-12{margin-top:48px!important}.mt-lg-13{margin-top:52px!important}.mt-lg-14{margin-top:56px!important}.mt-lg-15{margin-top:60px!important}.mt-lg-16{margin-top:64px!important}.mt-lg-auto{margin-top:auto!important}.mr-lg-0{margin-right:0!important}.mr-lg-1{margin-right:4px!important}.mr-lg-2{margin-right:8px!important}.mr-lg-3{margin-right:12px!important}.mr-lg-4{margin-right:16px!important}.mr-lg-5{margin-right:20px!important}.mr-lg-6{margin-right:24px!important}.mr-lg-7{margin-right:28px!important}.mr-lg-8{margin-right:32px!important}.mr-lg-9{margin-right:36px!important}.mr-lg-10{margin-right:40px!important}.mr-lg-11{margin-right:44px!important}.mr-lg-12{margin-right:48px!important}.mr-lg-13{margin-right:52px!important}.mr-lg-14{margin-right:56px!important}.mr-lg-15{margin-right:60px!important}.mr-lg-16{margin-right:64px!important}.mr-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:4px!important}.mb-lg-2{margin-bottom:8px!important}.mb-lg-3{margin-bottom:12px!important}.mb-lg-4{margin-bottom:16px!important}.mb-lg-5{margin-bottom:20px!important}.mb-lg-6{margin-bottom:24px!important}.mb-lg-7{margin-bottom:28px!important}.mb-lg-8{margin-bottom:32px!important}.mb-lg-9{margin-bottom:36px!important}.mb-lg-10{margin-bottom:40px!important}.mb-lg-11{margin-bottom:44px!important}.mb-lg-12{margin-bottom:48px!important}.mb-lg-13{margin-bottom:52px!important}.mb-lg-14{margin-bottom:56px!important}.mb-lg-15{margin-bottom:60px!important}.mb-lg-16{margin-bottom:64px!important}.mb-lg-auto{margin-bottom:auto!important}.ml-lg-0{margin-left:0!important}.ml-lg-1{margin-left:4px!important}.ml-lg-2{margin-left:8px!important}.ml-lg-3{margin-left:12px!important}.ml-lg-4{margin-left:16px!important}.ml-lg-5{margin-left:20px!important}.ml-lg-6{margin-left:24px!important}.ml-lg-7{margin-left:28px!important}.ml-lg-8{margin-left:32px!important}.ml-lg-9{margin-left:36px!important}.ml-lg-10{margin-left:40px!important}.ml-lg-11{margin-left:44px!important}.ml-lg-12{margin-left:48px!important}.ml-lg-13{margin-left:52px!important}.ml-lg-14{margin-left:56px!important}.ml-lg-15{margin-left:60px!important}.ml-lg-16{margin-left:64px!important}.ml-lg-auto{margin-left:auto!important}.ms-lg-0{margin-inline-start:0px!important}.ms-lg-1{margin-inline-start:4px!important}.ms-lg-2{margin-inline-start:8px!important}.ms-lg-3{margin-inline-start:12px!important}.ms-lg-4{margin-inline-start:16px!important}.ms-lg-5{margin-inline-start:20px!important}.ms-lg-6{margin-inline-start:24px!important}.ms-lg-7{margin-inline-start:28px!important}.ms-lg-8{margin-inline-start:32px!important}.ms-lg-9{margin-inline-start:36px!important}.ms-lg-10{margin-inline-start:40px!important}.ms-lg-11{margin-inline-start:44px!important}.ms-lg-12{margin-inline-start:48px!important}.ms-lg-13{margin-inline-start:52px!important}.ms-lg-14{margin-inline-start:56px!important}.ms-lg-15{margin-inline-start:60px!important}.ms-lg-16{margin-inline-start:64px!important}.ms-lg-auto{margin-inline-start:auto!important}.me-lg-0{margin-inline-end:0px!important}.me-lg-1{margin-inline-end:4px!important}.me-lg-2{margin-inline-end:8px!important}.me-lg-3{margin-inline-end:12px!important}.me-lg-4{margin-inline-end:16px!important}.me-lg-5{margin-inline-end:20px!important}.me-lg-6{margin-inline-end:24px!important}.me-lg-7{margin-inline-end:28px!important}.me-lg-8{margin-inline-end:32px!important}.me-lg-9{margin-inline-end:36px!important}.me-lg-10{margin-inline-end:40px!important}.me-lg-11{margin-inline-end:44px!important}.me-lg-12{margin-inline-end:48px!important}.me-lg-13{margin-inline-end:52px!important}.me-lg-14{margin-inline-end:56px!important}.me-lg-15{margin-inline-end:60px!important}.me-lg-16{margin-inline-end:64px!important}.me-lg-auto{margin-inline-end:auto!important}.ma-lg-n1{margin:-4px!important}.ma-lg-n2{margin:-8px!important}.ma-lg-n3{margin:-12px!important}.ma-lg-n4{margin:-16px!important}.ma-lg-n5{margin:-20px!important}.ma-lg-n6{margin:-24px!important}.ma-lg-n7{margin:-28px!important}.ma-lg-n8{margin:-32px!important}.ma-lg-n9{margin:-36px!important}.ma-lg-n10{margin:-40px!important}.ma-lg-n11{margin:-44px!important}.ma-lg-n12{margin:-48px!important}.ma-lg-n13{margin:-52px!important}.ma-lg-n14{margin:-56px!important}.ma-lg-n15{margin:-60px!important}.ma-lg-n16{margin:-64px!important}.mx-lg-n1{margin-right:-4px!important;margin-left:-4px!important}.mx-lg-n2{margin-right:-8px!important;margin-left:-8px!important}.mx-lg-n3{margin-right:-12px!important;margin-left:-12px!important}.mx-lg-n4{margin-right:-16px!important;margin-left:-16px!important}.mx-lg-n5{margin-right:-20px!important;margin-left:-20px!important}.mx-lg-n6{margin-right:-24px!important;margin-left:-24px!important}.mx-lg-n7{margin-right:-28px!important;margin-left:-28px!important}.mx-lg-n8{margin-right:-32px!important;margin-left:-32px!important}.mx-lg-n9{margin-right:-36px!important;margin-left:-36px!important}.mx-lg-n10{margin-right:-40px!important;margin-left:-40px!important}.mx-lg-n11{margin-right:-44px!important;margin-left:-44px!important}.mx-lg-n12{margin-right:-48px!important;margin-left:-48px!important}.mx-lg-n13{margin-right:-52px!important;margin-left:-52px!important}.mx-lg-n14{margin-right:-56px!important;margin-left:-56px!important}.mx-lg-n15{margin-right:-60px!important;margin-left:-60px!important}.mx-lg-n16{margin-right:-64px!important;margin-left:-64px!important}.my-lg-n1{margin-top:-4px!important;margin-bottom:-4px!important}.my-lg-n2{margin-top:-8px!important;margin-bottom:-8px!important}.my-lg-n3{margin-top:-12px!important;margin-bottom:-12px!important}.my-lg-n4{margin-top:-16px!important;margin-bottom:-16px!important}.my-lg-n5{margin-top:-20px!important;margin-bottom:-20px!important}.my-lg-n6{margin-top:-24px!important;margin-bottom:-24px!important}.my-lg-n7{margin-top:-28px!important;margin-bottom:-28px!important}.my-lg-n8{margin-top:-32px!important;margin-bottom:-32px!important}.my-lg-n9{margin-top:-36px!important;margin-bottom:-36px!important}.my-lg-n10{margin-top:-40px!important;margin-bottom:-40px!important}.my-lg-n11{margin-top:-44px!important;margin-bottom:-44px!important}.my-lg-n12{margin-top:-48px!important;margin-bottom:-48px!important}.my-lg-n13{margin-top:-52px!important;margin-bottom:-52px!important}.my-lg-n14{margin-top:-56px!important;margin-bottom:-56px!important}.my-lg-n15{margin-top:-60px!important;margin-bottom:-60px!important}.my-lg-n16{margin-top:-64px!important;margin-bottom:-64px!important}.mt-lg-n1{margin-top:-4px!important}.mt-lg-n2{margin-top:-8px!important}.mt-lg-n3{margin-top:-12px!important}.mt-lg-n4{margin-top:-16px!important}.mt-lg-n5{margin-top:-20px!important}.mt-lg-n6{margin-top:-24px!important}.mt-lg-n7{margin-top:-28px!important}.mt-lg-n8{margin-top:-32px!important}.mt-lg-n9{margin-top:-36px!important}.mt-lg-n10{margin-top:-40px!important}.mt-lg-n11{margin-top:-44px!important}.mt-lg-n12{margin-top:-48px!important}.mt-lg-n13{margin-top:-52px!important}.mt-lg-n14{margin-top:-56px!important}.mt-lg-n15{margin-top:-60px!important}.mt-lg-n16{margin-top:-64px!important}.mr-lg-n1{margin-right:-4px!important}.mr-lg-n2{margin-right:-8px!important}.mr-lg-n3{margin-right:-12px!important}.mr-lg-n4{margin-right:-16px!important}.mr-lg-n5{margin-right:-20px!important}.mr-lg-n6{margin-right:-24px!important}.mr-lg-n7{margin-right:-28px!important}.mr-lg-n8{margin-right:-32px!important}.mr-lg-n9{margin-right:-36px!important}.mr-lg-n10{margin-right:-40px!important}.mr-lg-n11{margin-right:-44px!important}.mr-lg-n12{margin-right:-48px!important}.mr-lg-n13{margin-right:-52px!important}.mr-lg-n14{margin-right:-56px!important}.mr-lg-n15{margin-right:-60px!important}.mr-lg-n16{margin-right:-64px!important}.mb-lg-n1{margin-bottom:-4px!important}.mb-lg-n2{margin-bottom:-8px!important}.mb-lg-n3{margin-bottom:-12px!important}.mb-lg-n4{margin-bottom:-16px!important}.mb-lg-n5{margin-bottom:-20px!important}.mb-lg-n6{margin-bottom:-24px!important}.mb-lg-n7{margin-bottom:-28px!important}.mb-lg-n8{margin-bottom:-32px!important}.mb-lg-n9{margin-bottom:-36px!important}.mb-lg-n10{margin-bottom:-40px!important}.mb-lg-n11{margin-bottom:-44px!important}.mb-lg-n12{margin-bottom:-48px!important}.mb-lg-n13{margin-bottom:-52px!important}.mb-lg-n14{margin-bottom:-56px!important}.mb-lg-n15{margin-bottom:-60px!important}.mb-lg-n16{margin-bottom:-64px!important}.ml-lg-n1{margin-left:-4px!important}.ml-lg-n2{margin-left:-8px!important}.ml-lg-n3{margin-left:-12px!important}.ml-lg-n4{margin-left:-16px!important}.ml-lg-n5{margin-left:-20px!important}.ml-lg-n6{margin-left:-24px!important}.ml-lg-n7{margin-left:-28px!important}.ml-lg-n8{margin-left:-32px!important}.ml-lg-n9{margin-left:-36px!important}.ml-lg-n10{margin-left:-40px!important}.ml-lg-n11{margin-left:-44px!important}.ml-lg-n12{margin-left:-48px!important}.ml-lg-n13{margin-left:-52px!important}.ml-lg-n14{margin-left:-56px!important}.ml-lg-n15{margin-left:-60px!important}.ml-lg-n16{margin-left:-64px!important}.ms-lg-n1{margin-inline-start:-4px!important}.ms-lg-n2{margin-inline-start:-8px!important}.ms-lg-n3{margin-inline-start:-12px!important}.ms-lg-n4{margin-inline-start:-16px!important}.ms-lg-n5{margin-inline-start:-20px!important}.ms-lg-n6{margin-inline-start:-24px!important}.ms-lg-n7{margin-inline-start:-28px!important}.ms-lg-n8{margin-inline-start:-32px!important}.ms-lg-n9{margin-inline-start:-36px!important}.ms-lg-n10{margin-inline-start:-40px!important}.ms-lg-n11{margin-inline-start:-44px!important}.ms-lg-n12{margin-inline-start:-48px!important}.ms-lg-n13{margin-inline-start:-52px!important}.ms-lg-n14{margin-inline-start:-56px!important}.ms-lg-n15{margin-inline-start:-60px!important}.ms-lg-n16{margin-inline-start:-64px!important}.me-lg-n1{margin-inline-end:-4px!important}.me-lg-n2{margin-inline-end:-8px!important}.me-lg-n3{margin-inline-end:-12px!important}.me-lg-n4{margin-inline-end:-16px!important}.me-lg-n5{margin-inline-end:-20px!important}.me-lg-n6{margin-inline-end:-24px!important}.me-lg-n7{margin-inline-end:-28px!important}.me-lg-n8{margin-inline-end:-32px!important}.me-lg-n9{margin-inline-end:-36px!important}.me-lg-n10{margin-inline-end:-40px!important}.me-lg-n11{margin-inline-end:-44px!important}.me-lg-n12{margin-inline-end:-48px!important}.me-lg-n13{margin-inline-end:-52px!important}.me-lg-n14{margin-inline-end:-56px!important}.me-lg-n15{margin-inline-end:-60px!important}.me-lg-n16{margin-inline-end:-64px!important}.pa-lg-0{padding:0!important}.pa-lg-1{padding:4px!important}.pa-lg-2{padding:8px!important}.pa-lg-3{padding:12px!important}.pa-lg-4{padding:16px!important}.pa-lg-5{padding:20px!important}.pa-lg-6{padding:24px!important}.pa-lg-7{padding:28px!important}.pa-lg-8{padding:32px!important}.pa-lg-9{padding:36px!important}.pa-lg-10{padding:40px!important}.pa-lg-11{padding:44px!important}.pa-lg-12{padding:48px!important}.pa-lg-13{padding:52px!important}.pa-lg-14{padding:56px!important}.pa-lg-15{padding:60px!important}.pa-lg-16{padding:64px!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:4px!important;padding-left:4px!important}.px-lg-2{padding-right:8px!important;padding-left:8px!important}.px-lg-3{padding-right:12px!important;padding-left:12px!important}.px-lg-4{padding-right:16px!important;padding-left:16px!important}.px-lg-5{padding-right:20px!important;padding-left:20px!important}.px-lg-6{padding-right:24px!important;padding-left:24px!important}.px-lg-7{padding-right:28px!important;padding-left:28px!important}.px-lg-8{padding-right:32px!important;padding-left:32px!important}.px-lg-9{padding-right:36px!important;padding-left:36px!important}.px-lg-10{padding-right:40px!important;padding-left:40px!important}.px-lg-11{padding-right:44px!important;padding-left:44px!important}.px-lg-12{padding-right:48px!important;padding-left:48px!important}.px-lg-13{padding-right:52px!important;padding-left:52px!important}.px-lg-14{padding-right:56px!important;padding-left:56px!important}.px-lg-15{padding-right:60px!important;padding-left:60px!important}.px-lg-16{padding-right:64px!important;padding-left:64px!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:4px!important;padding-bottom:4px!important}.py-lg-2{padding-top:8px!important;padding-bottom:8px!important}.py-lg-3{padding-top:12px!important;padding-bottom:12px!important}.py-lg-4{padding-top:16px!important;padding-bottom:16px!important}.py-lg-5{padding-top:20px!important;padding-bottom:20px!important}.py-lg-6{padding-top:24px!important;padding-bottom:24px!important}.py-lg-7{padding-top:28px!important;padding-bottom:28px!important}.py-lg-8{padding-top:32px!important;padding-bottom:32px!important}.py-lg-9{padding-top:36px!important;padding-bottom:36px!important}.py-lg-10{padding-top:40px!important;padding-bottom:40px!important}.py-lg-11{padding-top:44px!important;padding-bottom:44px!important}.py-lg-12{padding-top:48px!important;padding-bottom:48px!important}.py-lg-13{padding-top:52px!important;padding-bottom:52px!important}.py-lg-14{padding-top:56px!important;padding-bottom:56px!important}.py-lg-15{padding-top:60px!important;padding-bottom:60px!important}.py-lg-16{padding-top:64px!important;padding-bottom:64px!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:4px!important}.pt-lg-2{padding-top:8px!important}.pt-lg-3{padding-top:12px!important}.pt-lg-4{padding-top:16px!important}.pt-lg-5{padding-top:20px!important}.pt-lg-6{padding-top:24px!important}.pt-lg-7{padding-top:28px!important}.pt-lg-8{padding-top:32px!important}.pt-lg-9{padding-top:36px!important}.pt-lg-10{padding-top:40px!important}.pt-lg-11{padding-top:44px!important}.pt-lg-12{padding-top:48px!important}.pt-lg-13{padding-top:52px!important}.pt-lg-14{padding-top:56px!important}.pt-lg-15{padding-top:60px!important}.pt-lg-16{padding-top:64px!important}.pr-lg-0{padding-right:0!important}.pr-lg-1{padding-right:4px!important}.pr-lg-2{padding-right:8px!important}.pr-lg-3{padding-right:12px!important}.pr-lg-4{padding-right:16px!important}.pr-lg-5{padding-right:20px!important}.pr-lg-6{padding-right:24px!important}.pr-lg-7{padding-right:28px!important}.pr-lg-8{padding-right:32px!important}.pr-lg-9{padding-right:36px!important}.pr-lg-10{padding-right:40px!important}.pr-lg-11{padding-right:44px!important}.pr-lg-12{padding-right:48px!important}.pr-lg-13{padding-right:52px!important}.pr-lg-14{padding-right:56px!important}.pr-lg-15{padding-right:60px!important}.pr-lg-16{padding-right:64px!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:4px!important}.pb-lg-2{padding-bottom:8px!important}.pb-lg-3{padding-bottom:12px!important}.pb-lg-4{padding-bottom:16px!important}.pb-lg-5{padding-bottom:20px!important}.pb-lg-6{padding-bottom:24px!important}.pb-lg-7{padding-bottom:28px!important}.pb-lg-8{padding-bottom:32px!important}.pb-lg-9{padding-bottom:36px!important}.pb-lg-10{padding-bottom:40px!important}.pb-lg-11{padding-bottom:44px!important}.pb-lg-12{padding-bottom:48px!important}.pb-lg-13{padding-bottom:52px!important}.pb-lg-14{padding-bottom:56px!important}.pb-lg-15{padding-bottom:60px!important}.pb-lg-16{padding-bottom:64px!important}.pl-lg-0{padding-left:0!important}.pl-lg-1{padding-left:4px!important}.pl-lg-2{padding-left:8px!important}.pl-lg-3{padding-left:12px!important}.pl-lg-4{padding-left:16px!important}.pl-lg-5{padding-left:20px!important}.pl-lg-6{padding-left:24px!important}.pl-lg-7{padding-left:28px!important}.pl-lg-8{padding-left:32px!important}.pl-lg-9{padding-left:36px!important}.pl-lg-10{padding-left:40px!important}.pl-lg-11{padding-left:44px!important}.pl-lg-12{padding-left:48px!important}.pl-lg-13{padding-left:52px!important}.pl-lg-14{padding-left:56px!important}.pl-lg-15{padding-left:60px!important}.pl-lg-16{padding-left:64px!important}.ps-lg-0{padding-inline-start:0px!important}.ps-lg-1{padding-inline-start:4px!important}.ps-lg-2{padding-inline-start:8px!important}.ps-lg-3{padding-inline-start:12px!important}.ps-lg-4{padding-inline-start:16px!important}.ps-lg-5{padding-inline-start:20px!important}.ps-lg-6{padding-inline-start:24px!important}.ps-lg-7{padding-inline-start:28px!important}.ps-lg-8{padding-inline-start:32px!important}.ps-lg-9{padding-inline-start:36px!important}.ps-lg-10{padding-inline-start:40px!important}.ps-lg-11{padding-inline-start:44px!important}.ps-lg-12{padding-inline-start:48px!important}.ps-lg-13{padding-inline-start:52px!important}.ps-lg-14{padding-inline-start:56px!important}.ps-lg-15{padding-inline-start:60px!important}.ps-lg-16{padding-inline-start:64px!important}.pe-lg-0{padding-inline-end:0px!important}.pe-lg-1{padding-inline-end:4px!important}.pe-lg-2{padding-inline-end:8px!important}.pe-lg-3{padding-inline-end:12px!important}.pe-lg-4{padding-inline-end:16px!important}.pe-lg-5{padding-inline-end:20px!important}.pe-lg-6{padding-inline-end:24px!important}.pe-lg-7{padding-inline-end:28px!important}.pe-lg-8{padding-inline-end:32px!important}.pe-lg-9{padding-inline-end:36px!important}.pe-lg-10{padding-inline-end:40px!important}.pe-lg-11{padding-inline-end:44px!important}.pe-lg-12{padding-inline-end:48px!important}.pe-lg-13{padding-inline-end:52px!important}.pe-lg-14{padding-inline-end:56px!important}.pe-lg-15{padding-inline-end:60px!important}.pe-lg-16{padding-inline-end:64px!important}.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}.text-lg-justify{text-align:justify!important}.text-lg-start{text-align:start!important}.text-lg-end{text-align:end!important}.text-lg-h1{font-size:6rem!important;font-weight:300;line-height:1;letter-spacing:-.015625em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-lg-h2{font-size:3.75rem!important;font-weight:300;line-height:1;letter-spacing:-.0083333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-lg-h3{font-size:3rem!important;font-weight:400;line-height:1.05;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-lg-h4{font-size:2.125rem!important;font-weight:400;line-height:1.175;letter-spacing:.0073529412em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-lg-h5{font-size:1.5rem!important;font-weight:400;line-height:1.333;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-lg-h6{font-size:1.25rem!important;font-weight:500;line-height:1.6;letter-spacing:.0125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-lg-subtitle-1{font-size:1rem!important;font-weight:400;line-height:1.75;letter-spacing:.009375em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-lg-subtitle-2{font-size:.875rem!important;font-weight:500;line-height:1.6;letter-spacing:.0071428571em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-lg-body-1{font-size:1rem!important;font-weight:400;line-height:1.5;letter-spacing:.03125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-lg-body-2{font-size:.875rem!important;font-weight:400;line-height:1.425;letter-spacing:.0178571429em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-lg-button{font-size:.875rem!important;font-weight:500;line-height:2.6;letter-spacing:.0892857143em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}.text-lg-caption{font-size:.75rem!important;font-weight:400;line-height:1.667;letter-spacing:.0333333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-lg-overline{font-size:.75rem!important;font-weight:500;line-height:2.667;letter-spacing:.1666666667em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}.h-lg-auto{height:auto!important}.h-lg-screen{height:100vh!important}.h-lg-0{height:0!important}.h-lg-25{height:25%!important}.h-lg-50{height:50%!important}.h-lg-75{height:75%!important}.h-lg-100{height:100%!important}.w-lg-auto{width:auto!important}.w-lg-0{width:0!important}.w-lg-25{width:25%!important}.w-lg-33{width:33%!important}.w-lg-50{width:50%!important}.w-lg-66{width:66%!important}.w-lg-75{width:75%!important}.w-lg-100{width:100%!important}}@media (min-width: 1920px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.float-xl-none{float:none!important}.float-xl-left{float:left!important}.float-xl-right{float:right!important}.v-locale--is-rtl .float-xl-end{float:left!important}.v-locale--is-rtl .float-xl-start,.v-locale--is-ltr .float-xl-end{float:right!important}.v-locale--is-ltr .float-xl-start{float:left!important}.flex-xl-fill,.flex-xl-1-1{flex:1 1 auto!important}.flex-xl-1-0{flex:1 0 auto!important}.flex-xl-0-1{flex:0 1 auto!important}.flex-xl-0-0{flex:0 0 auto!important}.flex-xl-1-1-100{flex:1 1 100%!important}.flex-xl-1-0-100{flex:1 0 100%!important}.flex-xl-0-1-100{flex:0 1 100%!important}.flex-xl-0-0-100{flex:0 0 100%!important}.flex-xl-1-1-0{flex:1 1 0!important}.flex-xl-1-0-0{flex:1 0 0!important}.flex-xl-0-1-0{flex:0 1 0!important}.flex-xl-0-0-0{flex:0 0 0!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-xl-start{justify-content:flex-start!important}.justify-xl-end{justify-content:flex-end!important}.justify-xl-center{justify-content:center!important}.justify-xl-space-between{justify-content:space-between!important}.justify-xl-space-around{justify-content:space-around!important}.justify-xl-space-evenly{justify-content:space-evenly!important}.align-xl-start{align-items:flex-start!important}.align-xl-end{align-items:flex-end!important}.align-xl-center{align-items:center!important}.align-xl-baseline{align-items:baseline!important}.align-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-space-between{align-content:space-between!important}.align-content-xl-space-around{align-content:space-around!important}.align-content-xl-space-evenly{align-content:space-evenly!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-6{order:6!important}.order-xl-7{order:7!important}.order-xl-8{order:8!important}.order-xl-9{order:9!important}.order-xl-10{order:10!important}.order-xl-11{order:11!important}.order-xl-12{order:12!important}.order-xl-last{order:13!important}.ga-xl-0{gap:0px!important}.ga-xl-1{gap:4px!important}.ga-xl-2{gap:8px!important}.ga-xl-3{gap:12px!important}.ga-xl-4{gap:16px!important}.ga-xl-5{gap:20px!important}.ga-xl-6{gap:24px!important}.ga-xl-7{gap:28px!important}.ga-xl-8{gap:32px!important}.ga-xl-9{gap:36px!important}.ga-xl-10{gap:40px!important}.ga-xl-11{gap:44px!important}.ga-xl-12{gap:48px!important}.ga-xl-13{gap:52px!important}.ga-xl-14{gap:56px!important}.ga-xl-15{gap:60px!important}.ga-xl-16{gap:64px!important}.ga-xl-auto{gap:auto!important}.gr-xl-0{row-gap:0px!important}.gr-xl-1{row-gap:4px!important}.gr-xl-2{row-gap:8px!important}.gr-xl-3{row-gap:12px!important}.gr-xl-4{row-gap:16px!important}.gr-xl-5{row-gap:20px!important}.gr-xl-6{row-gap:24px!important}.gr-xl-7{row-gap:28px!important}.gr-xl-8{row-gap:32px!important}.gr-xl-9{row-gap:36px!important}.gr-xl-10{row-gap:40px!important}.gr-xl-11{row-gap:44px!important}.gr-xl-12{row-gap:48px!important}.gr-xl-13{row-gap:52px!important}.gr-xl-14{row-gap:56px!important}.gr-xl-15{row-gap:60px!important}.gr-xl-16{row-gap:64px!important}.gr-xl-auto{row-gap:auto!important}.gc-xl-0{-moz-column-gap:0px!important;column-gap:0px!important}.gc-xl-1{-moz-column-gap:4px!important;column-gap:4px!important}.gc-xl-2{-moz-column-gap:8px!important;column-gap:8px!important}.gc-xl-3{-moz-column-gap:12px!important;column-gap:12px!important}.gc-xl-4{-moz-column-gap:16px!important;column-gap:16px!important}.gc-xl-5{-moz-column-gap:20px!important;column-gap:20px!important}.gc-xl-6{-moz-column-gap:24px!important;column-gap:24px!important}.gc-xl-7{-moz-column-gap:28px!important;column-gap:28px!important}.gc-xl-8{-moz-column-gap:32px!important;column-gap:32px!important}.gc-xl-9{-moz-column-gap:36px!important;column-gap:36px!important}.gc-xl-10{-moz-column-gap:40px!important;column-gap:40px!important}.gc-xl-11{-moz-column-gap:44px!important;column-gap:44px!important}.gc-xl-12{-moz-column-gap:48px!important;column-gap:48px!important}.gc-xl-13{-moz-column-gap:52px!important;column-gap:52px!important}.gc-xl-14{-moz-column-gap:56px!important;column-gap:56px!important}.gc-xl-15{-moz-column-gap:60px!important;column-gap:60px!important}.gc-xl-16{-moz-column-gap:64px!important;column-gap:64px!important}.gc-xl-auto{-moz-column-gap:auto!important;column-gap:auto!important}.ma-xl-0{margin:0!important}.ma-xl-1{margin:4px!important}.ma-xl-2{margin:8px!important}.ma-xl-3{margin:12px!important}.ma-xl-4{margin:16px!important}.ma-xl-5{margin:20px!important}.ma-xl-6{margin:24px!important}.ma-xl-7{margin:28px!important}.ma-xl-8{margin:32px!important}.ma-xl-9{margin:36px!important}.ma-xl-10{margin:40px!important}.ma-xl-11{margin:44px!important}.ma-xl-12{margin:48px!important}.ma-xl-13{margin:52px!important}.ma-xl-14{margin:56px!important}.ma-xl-15{margin:60px!important}.ma-xl-16{margin:64px!important}.ma-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:4px!important;margin-left:4px!important}.mx-xl-2{margin-right:8px!important;margin-left:8px!important}.mx-xl-3{margin-right:12px!important;margin-left:12px!important}.mx-xl-4{margin-right:16px!important;margin-left:16px!important}.mx-xl-5{margin-right:20px!important;margin-left:20px!important}.mx-xl-6{margin-right:24px!important;margin-left:24px!important}.mx-xl-7{margin-right:28px!important;margin-left:28px!important}.mx-xl-8{margin-right:32px!important;margin-left:32px!important}.mx-xl-9{margin-right:36px!important;margin-left:36px!important}.mx-xl-10{margin-right:40px!important;margin-left:40px!important}.mx-xl-11{margin-right:44px!important;margin-left:44px!important}.mx-xl-12{margin-right:48px!important;margin-left:48px!important}.mx-xl-13{margin-right:52px!important;margin-left:52px!important}.mx-xl-14{margin-right:56px!important;margin-left:56px!important}.mx-xl-15{margin-right:60px!important;margin-left:60px!important}.mx-xl-16{margin-right:64px!important;margin-left:64px!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:4px!important;margin-bottom:4px!important}.my-xl-2{margin-top:8px!important;margin-bottom:8px!important}.my-xl-3{margin-top:12px!important;margin-bottom:12px!important}.my-xl-4{margin-top:16px!important;margin-bottom:16px!important}.my-xl-5{margin-top:20px!important;margin-bottom:20px!important}.my-xl-6{margin-top:24px!important;margin-bottom:24px!important}.my-xl-7{margin-top:28px!important;margin-bottom:28px!important}.my-xl-8{margin-top:32px!important;margin-bottom:32px!important}.my-xl-9{margin-top:36px!important;margin-bottom:36px!important}.my-xl-10{margin-top:40px!important;margin-bottom:40px!important}.my-xl-11{margin-top:44px!important;margin-bottom:44px!important}.my-xl-12{margin-top:48px!important;margin-bottom:48px!important}.my-xl-13{margin-top:52px!important;margin-bottom:52px!important}.my-xl-14{margin-top:56px!important;margin-bottom:56px!important}.my-xl-15{margin-top:60px!important;margin-bottom:60px!important}.my-xl-16{margin-top:64px!important;margin-bottom:64px!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:4px!important}.mt-xl-2{margin-top:8px!important}.mt-xl-3{margin-top:12px!important}.mt-xl-4{margin-top:16px!important}.mt-xl-5{margin-top:20px!important}.mt-xl-6{margin-top:24px!important}.mt-xl-7{margin-top:28px!important}.mt-xl-8{margin-top:32px!important}.mt-xl-9{margin-top:36px!important}.mt-xl-10{margin-top:40px!important}.mt-xl-11{margin-top:44px!important}.mt-xl-12{margin-top:48px!important}.mt-xl-13{margin-top:52px!important}.mt-xl-14{margin-top:56px!important}.mt-xl-15{margin-top:60px!important}.mt-xl-16{margin-top:64px!important}.mt-xl-auto{margin-top:auto!important}.mr-xl-0{margin-right:0!important}.mr-xl-1{margin-right:4px!important}.mr-xl-2{margin-right:8px!important}.mr-xl-3{margin-right:12px!important}.mr-xl-4{margin-right:16px!important}.mr-xl-5{margin-right:20px!important}.mr-xl-6{margin-right:24px!important}.mr-xl-7{margin-right:28px!important}.mr-xl-8{margin-right:32px!important}.mr-xl-9{margin-right:36px!important}.mr-xl-10{margin-right:40px!important}.mr-xl-11{margin-right:44px!important}.mr-xl-12{margin-right:48px!important}.mr-xl-13{margin-right:52px!important}.mr-xl-14{margin-right:56px!important}.mr-xl-15{margin-right:60px!important}.mr-xl-16{margin-right:64px!important}.mr-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:4px!important}.mb-xl-2{margin-bottom:8px!important}.mb-xl-3{margin-bottom:12px!important}.mb-xl-4{margin-bottom:16px!important}.mb-xl-5{margin-bottom:20px!important}.mb-xl-6{margin-bottom:24px!important}.mb-xl-7{margin-bottom:28px!important}.mb-xl-8{margin-bottom:32px!important}.mb-xl-9{margin-bottom:36px!important}.mb-xl-10{margin-bottom:40px!important}.mb-xl-11{margin-bottom:44px!important}.mb-xl-12{margin-bottom:48px!important}.mb-xl-13{margin-bottom:52px!important}.mb-xl-14{margin-bottom:56px!important}.mb-xl-15{margin-bottom:60px!important}.mb-xl-16{margin-bottom:64px!important}.mb-xl-auto{margin-bottom:auto!important}.ml-xl-0{margin-left:0!important}.ml-xl-1{margin-left:4px!important}.ml-xl-2{margin-left:8px!important}.ml-xl-3{margin-left:12px!important}.ml-xl-4{margin-left:16px!important}.ml-xl-5{margin-left:20px!important}.ml-xl-6{margin-left:24px!important}.ml-xl-7{margin-left:28px!important}.ml-xl-8{margin-left:32px!important}.ml-xl-9{margin-left:36px!important}.ml-xl-10{margin-left:40px!important}.ml-xl-11{margin-left:44px!important}.ml-xl-12{margin-left:48px!important}.ml-xl-13{margin-left:52px!important}.ml-xl-14{margin-left:56px!important}.ml-xl-15{margin-left:60px!important}.ml-xl-16{margin-left:64px!important}.ml-xl-auto{margin-left:auto!important}.ms-xl-0{margin-inline-start:0px!important}.ms-xl-1{margin-inline-start:4px!important}.ms-xl-2{margin-inline-start:8px!important}.ms-xl-3{margin-inline-start:12px!important}.ms-xl-4{margin-inline-start:16px!important}.ms-xl-5{margin-inline-start:20px!important}.ms-xl-6{margin-inline-start:24px!important}.ms-xl-7{margin-inline-start:28px!important}.ms-xl-8{margin-inline-start:32px!important}.ms-xl-9{margin-inline-start:36px!important}.ms-xl-10{margin-inline-start:40px!important}.ms-xl-11{margin-inline-start:44px!important}.ms-xl-12{margin-inline-start:48px!important}.ms-xl-13{margin-inline-start:52px!important}.ms-xl-14{margin-inline-start:56px!important}.ms-xl-15{margin-inline-start:60px!important}.ms-xl-16{margin-inline-start:64px!important}.ms-xl-auto{margin-inline-start:auto!important}.me-xl-0{margin-inline-end:0px!important}.me-xl-1{margin-inline-end:4px!important}.me-xl-2{margin-inline-end:8px!important}.me-xl-3{margin-inline-end:12px!important}.me-xl-4{margin-inline-end:16px!important}.me-xl-5{margin-inline-end:20px!important}.me-xl-6{margin-inline-end:24px!important}.me-xl-7{margin-inline-end:28px!important}.me-xl-8{margin-inline-end:32px!important}.me-xl-9{margin-inline-end:36px!important}.me-xl-10{margin-inline-end:40px!important}.me-xl-11{margin-inline-end:44px!important}.me-xl-12{margin-inline-end:48px!important}.me-xl-13{margin-inline-end:52px!important}.me-xl-14{margin-inline-end:56px!important}.me-xl-15{margin-inline-end:60px!important}.me-xl-16{margin-inline-end:64px!important}.me-xl-auto{margin-inline-end:auto!important}.ma-xl-n1{margin:-4px!important}.ma-xl-n2{margin:-8px!important}.ma-xl-n3{margin:-12px!important}.ma-xl-n4{margin:-16px!important}.ma-xl-n5{margin:-20px!important}.ma-xl-n6{margin:-24px!important}.ma-xl-n7{margin:-28px!important}.ma-xl-n8{margin:-32px!important}.ma-xl-n9{margin:-36px!important}.ma-xl-n10{margin:-40px!important}.ma-xl-n11{margin:-44px!important}.ma-xl-n12{margin:-48px!important}.ma-xl-n13{margin:-52px!important}.ma-xl-n14{margin:-56px!important}.ma-xl-n15{margin:-60px!important}.ma-xl-n16{margin:-64px!important}.mx-xl-n1{margin-right:-4px!important;margin-left:-4px!important}.mx-xl-n2{margin-right:-8px!important;margin-left:-8px!important}.mx-xl-n3{margin-right:-12px!important;margin-left:-12px!important}.mx-xl-n4{margin-right:-16px!important;margin-left:-16px!important}.mx-xl-n5{margin-right:-20px!important;margin-left:-20px!important}.mx-xl-n6{margin-right:-24px!important;margin-left:-24px!important}.mx-xl-n7{margin-right:-28px!important;margin-left:-28px!important}.mx-xl-n8{margin-right:-32px!important;margin-left:-32px!important}.mx-xl-n9{margin-right:-36px!important;margin-left:-36px!important}.mx-xl-n10{margin-right:-40px!important;margin-left:-40px!important}.mx-xl-n11{margin-right:-44px!important;margin-left:-44px!important}.mx-xl-n12{margin-right:-48px!important;margin-left:-48px!important}.mx-xl-n13{margin-right:-52px!important;margin-left:-52px!important}.mx-xl-n14{margin-right:-56px!important;margin-left:-56px!important}.mx-xl-n15{margin-right:-60px!important;margin-left:-60px!important}.mx-xl-n16{margin-right:-64px!important;margin-left:-64px!important}.my-xl-n1{margin-top:-4px!important;margin-bottom:-4px!important}.my-xl-n2{margin-top:-8px!important;margin-bottom:-8px!important}.my-xl-n3{margin-top:-12px!important;margin-bottom:-12px!important}.my-xl-n4{margin-top:-16px!important;margin-bottom:-16px!important}.my-xl-n5{margin-top:-20px!important;margin-bottom:-20px!important}.my-xl-n6{margin-top:-24px!important;margin-bottom:-24px!important}.my-xl-n7{margin-top:-28px!important;margin-bottom:-28px!important}.my-xl-n8{margin-top:-32px!important;margin-bottom:-32px!important}.my-xl-n9{margin-top:-36px!important;margin-bottom:-36px!important}.my-xl-n10{margin-top:-40px!important;margin-bottom:-40px!important}.my-xl-n11{margin-top:-44px!important;margin-bottom:-44px!important}.my-xl-n12{margin-top:-48px!important;margin-bottom:-48px!important}.my-xl-n13{margin-top:-52px!important;margin-bottom:-52px!important}.my-xl-n14{margin-top:-56px!important;margin-bottom:-56px!important}.my-xl-n15{margin-top:-60px!important;margin-bottom:-60px!important}.my-xl-n16{margin-top:-64px!important;margin-bottom:-64px!important}.mt-xl-n1{margin-top:-4px!important}.mt-xl-n2{margin-top:-8px!important}.mt-xl-n3{margin-top:-12px!important}.mt-xl-n4{margin-top:-16px!important}.mt-xl-n5{margin-top:-20px!important}.mt-xl-n6{margin-top:-24px!important}.mt-xl-n7{margin-top:-28px!important}.mt-xl-n8{margin-top:-32px!important}.mt-xl-n9{margin-top:-36px!important}.mt-xl-n10{margin-top:-40px!important}.mt-xl-n11{margin-top:-44px!important}.mt-xl-n12{margin-top:-48px!important}.mt-xl-n13{margin-top:-52px!important}.mt-xl-n14{margin-top:-56px!important}.mt-xl-n15{margin-top:-60px!important}.mt-xl-n16{margin-top:-64px!important}.mr-xl-n1{margin-right:-4px!important}.mr-xl-n2{margin-right:-8px!important}.mr-xl-n3{margin-right:-12px!important}.mr-xl-n4{margin-right:-16px!important}.mr-xl-n5{margin-right:-20px!important}.mr-xl-n6{margin-right:-24px!important}.mr-xl-n7{margin-right:-28px!important}.mr-xl-n8{margin-right:-32px!important}.mr-xl-n9{margin-right:-36px!important}.mr-xl-n10{margin-right:-40px!important}.mr-xl-n11{margin-right:-44px!important}.mr-xl-n12{margin-right:-48px!important}.mr-xl-n13{margin-right:-52px!important}.mr-xl-n14{margin-right:-56px!important}.mr-xl-n15{margin-right:-60px!important}.mr-xl-n16{margin-right:-64px!important}.mb-xl-n1{margin-bottom:-4px!important}.mb-xl-n2{margin-bottom:-8px!important}.mb-xl-n3{margin-bottom:-12px!important}.mb-xl-n4{margin-bottom:-16px!important}.mb-xl-n5{margin-bottom:-20px!important}.mb-xl-n6{margin-bottom:-24px!important}.mb-xl-n7{margin-bottom:-28px!important}.mb-xl-n8{margin-bottom:-32px!important}.mb-xl-n9{margin-bottom:-36px!important}.mb-xl-n10{margin-bottom:-40px!important}.mb-xl-n11{margin-bottom:-44px!important}.mb-xl-n12{margin-bottom:-48px!important}.mb-xl-n13{margin-bottom:-52px!important}.mb-xl-n14{margin-bottom:-56px!important}.mb-xl-n15{margin-bottom:-60px!important}.mb-xl-n16{margin-bottom:-64px!important}.ml-xl-n1{margin-left:-4px!important}.ml-xl-n2{margin-left:-8px!important}.ml-xl-n3{margin-left:-12px!important}.ml-xl-n4{margin-left:-16px!important}.ml-xl-n5{margin-left:-20px!important}.ml-xl-n6{margin-left:-24px!important}.ml-xl-n7{margin-left:-28px!important}.ml-xl-n8{margin-left:-32px!important}.ml-xl-n9{margin-left:-36px!important}.ml-xl-n10{margin-left:-40px!important}.ml-xl-n11{margin-left:-44px!important}.ml-xl-n12{margin-left:-48px!important}.ml-xl-n13{margin-left:-52px!important}.ml-xl-n14{margin-left:-56px!important}.ml-xl-n15{margin-left:-60px!important}.ml-xl-n16{margin-left:-64px!important}.ms-xl-n1{margin-inline-start:-4px!important}.ms-xl-n2{margin-inline-start:-8px!important}.ms-xl-n3{margin-inline-start:-12px!important}.ms-xl-n4{margin-inline-start:-16px!important}.ms-xl-n5{margin-inline-start:-20px!important}.ms-xl-n6{margin-inline-start:-24px!important}.ms-xl-n7{margin-inline-start:-28px!important}.ms-xl-n8{margin-inline-start:-32px!important}.ms-xl-n9{margin-inline-start:-36px!important}.ms-xl-n10{margin-inline-start:-40px!important}.ms-xl-n11{margin-inline-start:-44px!important}.ms-xl-n12{margin-inline-start:-48px!important}.ms-xl-n13{margin-inline-start:-52px!important}.ms-xl-n14{margin-inline-start:-56px!important}.ms-xl-n15{margin-inline-start:-60px!important}.ms-xl-n16{margin-inline-start:-64px!important}.me-xl-n1{margin-inline-end:-4px!important}.me-xl-n2{margin-inline-end:-8px!important}.me-xl-n3{margin-inline-end:-12px!important}.me-xl-n4{margin-inline-end:-16px!important}.me-xl-n5{margin-inline-end:-20px!important}.me-xl-n6{margin-inline-end:-24px!important}.me-xl-n7{margin-inline-end:-28px!important}.me-xl-n8{margin-inline-end:-32px!important}.me-xl-n9{margin-inline-end:-36px!important}.me-xl-n10{margin-inline-end:-40px!important}.me-xl-n11{margin-inline-end:-44px!important}.me-xl-n12{margin-inline-end:-48px!important}.me-xl-n13{margin-inline-end:-52px!important}.me-xl-n14{margin-inline-end:-56px!important}.me-xl-n15{margin-inline-end:-60px!important}.me-xl-n16{margin-inline-end:-64px!important}.pa-xl-0{padding:0!important}.pa-xl-1{padding:4px!important}.pa-xl-2{padding:8px!important}.pa-xl-3{padding:12px!important}.pa-xl-4{padding:16px!important}.pa-xl-5{padding:20px!important}.pa-xl-6{padding:24px!important}.pa-xl-7{padding:28px!important}.pa-xl-8{padding:32px!important}.pa-xl-9{padding:36px!important}.pa-xl-10{padding:40px!important}.pa-xl-11{padding:44px!important}.pa-xl-12{padding:48px!important}.pa-xl-13{padding:52px!important}.pa-xl-14{padding:56px!important}.pa-xl-15{padding:60px!important}.pa-xl-16{padding:64px!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:4px!important;padding-left:4px!important}.px-xl-2{padding-right:8px!important;padding-left:8px!important}.px-xl-3{padding-right:12px!important;padding-left:12px!important}.px-xl-4{padding-right:16px!important;padding-left:16px!important}.px-xl-5{padding-right:20px!important;padding-left:20px!important}.px-xl-6{padding-right:24px!important;padding-left:24px!important}.px-xl-7{padding-right:28px!important;padding-left:28px!important}.px-xl-8{padding-right:32px!important;padding-left:32px!important}.px-xl-9{padding-right:36px!important;padding-left:36px!important}.px-xl-10{padding-right:40px!important;padding-left:40px!important}.px-xl-11{padding-right:44px!important;padding-left:44px!important}.px-xl-12{padding-right:48px!important;padding-left:48px!important}.px-xl-13{padding-right:52px!important;padding-left:52px!important}.px-xl-14{padding-right:56px!important;padding-left:56px!important}.px-xl-15{padding-right:60px!important;padding-left:60px!important}.px-xl-16{padding-right:64px!important;padding-left:64px!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:4px!important;padding-bottom:4px!important}.py-xl-2{padding-top:8px!important;padding-bottom:8px!important}.py-xl-3{padding-top:12px!important;padding-bottom:12px!important}.py-xl-4{padding-top:16px!important;padding-bottom:16px!important}.py-xl-5{padding-top:20px!important;padding-bottom:20px!important}.py-xl-6{padding-top:24px!important;padding-bottom:24px!important}.py-xl-7{padding-top:28px!important;padding-bottom:28px!important}.py-xl-8{padding-top:32px!important;padding-bottom:32px!important}.py-xl-9{padding-top:36px!important;padding-bottom:36px!important}.py-xl-10{padding-top:40px!important;padding-bottom:40px!important}.py-xl-11{padding-top:44px!important;padding-bottom:44px!important}.py-xl-12{padding-top:48px!important;padding-bottom:48px!important}.py-xl-13{padding-top:52px!important;padding-bottom:52px!important}.py-xl-14{padding-top:56px!important;padding-bottom:56px!important}.py-xl-15{padding-top:60px!important;padding-bottom:60px!important}.py-xl-16{padding-top:64px!important;padding-bottom:64px!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:4px!important}.pt-xl-2{padding-top:8px!important}.pt-xl-3{padding-top:12px!important}.pt-xl-4{padding-top:16px!important}.pt-xl-5{padding-top:20px!important}.pt-xl-6{padding-top:24px!important}.pt-xl-7{padding-top:28px!important}.pt-xl-8{padding-top:32px!important}.pt-xl-9{padding-top:36px!important}.pt-xl-10{padding-top:40px!important}.pt-xl-11{padding-top:44px!important}.pt-xl-12{padding-top:48px!important}.pt-xl-13{padding-top:52px!important}.pt-xl-14{padding-top:56px!important}.pt-xl-15{padding-top:60px!important}.pt-xl-16{padding-top:64px!important}.pr-xl-0{padding-right:0!important}.pr-xl-1{padding-right:4px!important}.pr-xl-2{padding-right:8px!important}.pr-xl-3{padding-right:12px!important}.pr-xl-4{padding-right:16px!important}.pr-xl-5{padding-right:20px!important}.pr-xl-6{padding-right:24px!important}.pr-xl-7{padding-right:28px!important}.pr-xl-8{padding-right:32px!important}.pr-xl-9{padding-right:36px!important}.pr-xl-10{padding-right:40px!important}.pr-xl-11{padding-right:44px!important}.pr-xl-12{padding-right:48px!important}.pr-xl-13{padding-right:52px!important}.pr-xl-14{padding-right:56px!important}.pr-xl-15{padding-right:60px!important}.pr-xl-16{padding-right:64px!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:4px!important}.pb-xl-2{padding-bottom:8px!important}.pb-xl-3{padding-bottom:12px!important}.pb-xl-4{padding-bottom:16px!important}.pb-xl-5{padding-bottom:20px!important}.pb-xl-6{padding-bottom:24px!important}.pb-xl-7{padding-bottom:28px!important}.pb-xl-8{padding-bottom:32px!important}.pb-xl-9{padding-bottom:36px!important}.pb-xl-10{padding-bottom:40px!important}.pb-xl-11{padding-bottom:44px!important}.pb-xl-12{padding-bottom:48px!important}.pb-xl-13{padding-bottom:52px!important}.pb-xl-14{padding-bottom:56px!important}.pb-xl-15{padding-bottom:60px!important}.pb-xl-16{padding-bottom:64px!important}.pl-xl-0{padding-left:0!important}.pl-xl-1{padding-left:4px!important}.pl-xl-2{padding-left:8px!important}.pl-xl-3{padding-left:12px!important}.pl-xl-4{padding-left:16px!important}.pl-xl-5{padding-left:20px!important}.pl-xl-6{padding-left:24px!important}.pl-xl-7{padding-left:28px!important}.pl-xl-8{padding-left:32px!important}.pl-xl-9{padding-left:36px!important}.pl-xl-10{padding-left:40px!important}.pl-xl-11{padding-left:44px!important}.pl-xl-12{padding-left:48px!important}.pl-xl-13{padding-left:52px!important}.pl-xl-14{padding-left:56px!important}.pl-xl-15{padding-left:60px!important}.pl-xl-16{padding-left:64px!important}.ps-xl-0{padding-inline-start:0px!important}.ps-xl-1{padding-inline-start:4px!important}.ps-xl-2{padding-inline-start:8px!important}.ps-xl-3{padding-inline-start:12px!important}.ps-xl-4{padding-inline-start:16px!important}.ps-xl-5{padding-inline-start:20px!important}.ps-xl-6{padding-inline-start:24px!important}.ps-xl-7{padding-inline-start:28px!important}.ps-xl-8{padding-inline-start:32px!important}.ps-xl-9{padding-inline-start:36px!important}.ps-xl-10{padding-inline-start:40px!important}.ps-xl-11{padding-inline-start:44px!important}.ps-xl-12{padding-inline-start:48px!important}.ps-xl-13{padding-inline-start:52px!important}.ps-xl-14{padding-inline-start:56px!important}.ps-xl-15{padding-inline-start:60px!important}.ps-xl-16{padding-inline-start:64px!important}.pe-xl-0{padding-inline-end:0px!important}.pe-xl-1{padding-inline-end:4px!important}.pe-xl-2{padding-inline-end:8px!important}.pe-xl-3{padding-inline-end:12px!important}.pe-xl-4{padding-inline-end:16px!important}.pe-xl-5{padding-inline-end:20px!important}.pe-xl-6{padding-inline-end:24px!important}.pe-xl-7{padding-inline-end:28px!important}.pe-xl-8{padding-inline-end:32px!important}.pe-xl-9{padding-inline-end:36px!important}.pe-xl-10{padding-inline-end:40px!important}.pe-xl-11{padding-inline-end:44px!important}.pe-xl-12{padding-inline-end:48px!important}.pe-xl-13{padding-inline-end:52px!important}.pe-xl-14{padding-inline-end:56px!important}.pe-xl-15{padding-inline-end:60px!important}.pe-xl-16{padding-inline-end:64px!important}.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}.text-xl-justify{text-align:justify!important}.text-xl-start{text-align:start!important}.text-xl-end{text-align:end!important}.text-xl-h1{font-size:6rem!important;font-weight:300;line-height:1;letter-spacing:-.015625em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xl-h2{font-size:3.75rem!important;font-weight:300;line-height:1;letter-spacing:-.0083333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xl-h3{font-size:3rem!important;font-weight:400;line-height:1.05;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xl-h4{font-size:2.125rem!important;font-weight:400;line-height:1.175;letter-spacing:.0073529412em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xl-h5{font-size:1.5rem!important;font-weight:400;line-height:1.333;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xl-h6{font-size:1.25rem!important;font-weight:500;line-height:1.6;letter-spacing:.0125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xl-subtitle-1{font-size:1rem!important;font-weight:400;line-height:1.75;letter-spacing:.009375em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xl-subtitle-2{font-size:.875rem!important;font-weight:500;line-height:1.6;letter-spacing:.0071428571em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xl-body-1{font-size:1rem!important;font-weight:400;line-height:1.5;letter-spacing:.03125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xl-body-2{font-size:.875rem!important;font-weight:400;line-height:1.425;letter-spacing:.0178571429em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xl-button{font-size:.875rem!important;font-weight:500;line-height:2.6;letter-spacing:.0892857143em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}.text-xl-caption{font-size:.75rem!important;font-weight:400;line-height:1.667;letter-spacing:.0333333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xl-overline{font-size:.75rem!important;font-weight:500;line-height:2.667;letter-spacing:.1666666667em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}.h-xl-auto{height:auto!important}.h-xl-screen{height:100vh!important}.h-xl-0{height:0!important}.h-xl-25{height:25%!important}.h-xl-50{height:50%!important}.h-xl-75{height:75%!important}.h-xl-100{height:100%!important}.w-xl-auto{width:auto!important}.w-xl-0{width:0!important}.w-xl-25{width:25%!important}.w-xl-33{width:33%!important}.w-xl-50{width:50%!important}.w-xl-66{width:66%!important}.w-xl-75{width:75%!important}.w-xl-100{width:100%!important}}@media (min-width: 2560px){.d-xxl-none{display:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.float-xxl-none{float:none!important}.float-xxl-left{float:left!important}.float-xxl-right{float:right!important}.v-locale--is-rtl .float-xxl-end{float:left!important}.v-locale--is-rtl .float-xxl-start,.v-locale--is-ltr .float-xxl-end{float:right!important}.v-locale--is-ltr .float-xxl-start{float:left!important}.flex-xxl-fill,.flex-xxl-1-1{flex:1 1 auto!important}.flex-xxl-1-0{flex:1 0 auto!important}.flex-xxl-0-1{flex:0 1 auto!important}.flex-xxl-0-0{flex:0 0 auto!important}.flex-xxl-1-1-100{flex:1 1 100%!important}.flex-xxl-1-0-100{flex:1 0 100%!important}.flex-xxl-0-1-100{flex:0 1 100%!important}.flex-xxl-0-0-100{flex:0 0 100%!important}.flex-xxl-1-1-0{flex:1 1 0!important}.flex-xxl-1-0-0{flex:1 0 0!important}.flex-xxl-0-1-0{flex:0 1 0!important}.flex-xxl-0-0-0{flex:0 0 0!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-xxl-start{justify-content:flex-start!important}.justify-xxl-end{justify-content:flex-end!important}.justify-xxl-center{justify-content:center!important}.justify-xxl-space-between{justify-content:space-between!important}.justify-xxl-space-around{justify-content:space-around!important}.justify-xxl-space-evenly{justify-content:space-evenly!important}.align-xxl-start{align-items:flex-start!important}.align-xxl-end{align-items:flex-end!important}.align-xxl-center{align-items:center!important}.align-xxl-baseline{align-items:baseline!important}.align-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-space-between{align-content:space-between!important}.align-content-xxl-space-around{align-content:space-around!important}.align-content-xxl-space-evenly{align-content:space-evenly!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-6{order:6!important}.order-xxl-7{order:7!important}.order-xxl-8{order:8!important}.order-xxl-9{order:9!important}.order-xxl-10{order:10!important}.order-xxl-11{order:11!important}.order-xxl-12{order:12!important}.order-xxl-last{order:13!important}.ga-xxl-0{gap:0px!important}.ga-xxl-1{gap:4px!important}.ga-xxl-2{gap:8px!important}.ga-xxl-3{gap:12px!important}.ga-xxl-4{gap:16px!important}.ga-xxl-5{gap:20px!important}.ga-xxl-6{gap:24px!important}.ga-xxl-7{gap:28px!important}.ga-xxl-8{gap:32px!important}.ga-xxl-9{gap:36px!important}.ga-xxl-10{gap:40px!important}.ga-xxl-11{gap:44px!important}.ga-xxl-12{gap:48px!important}.ga-xxl-13{gap:52px!important}.ga-xxl-14{gap:56px!important}.ga-xxl-15{gap:60px!important}.ga-xxl-16{gap:64px!important}.ga-xxl-auto{gap:auto!important}.gr-xxl-0{row-gap:0px!important}.gr-xxl-1{row-gap:4px!important}.gr-xxl-2{row-gap:8px!important}.gr-xxl-3{row-gap:12px!important}.gr-xxl-4{row-gap:16px!important}.gr-xxl-5{row-gap:20px!important}.gr-xxl-6{row-gap:24px!important}.gr-xxl-7{row-gap:28px!important}.gr-xxl-8{row-gap:32px!important}.gr-xxl-9{row-gap:36px!important}.gr-xxl-10{row-gap:40px!important}.gr-xxl-11{row-gap:44px!important}.gr-xxl-12{row-gap:48px!important}.gr-xxl-13{row-gap:52px!important}.gr-xxl-14{row-gap:56px!important}.gr-xxl-15{row-gap:60px!important}.gr-xxl-16{row-gap:64px!important}.gr-xxl-auto{row-gap:auto!important}.gc-xxl-0{-moz-column-gap:0px!important;column-gap:0px!important}.gc-xxl-1{-moz-column-gap:4px!important;column-gap:4px!important}.gc-xxl-2{-moz-column-gap:8px!important;column-gap:8px!important}.gc-xxl-3{-moz-column-gap:12px!important;column-gap:12px!important}.gc-xxl-4{-moz-column-gap:16px!important;column-gap:16px!important}.gc-xxl-5{-moz-column-gap:20px!important;column-gap:20px!important}.gc-xxl-6{-moz-column-gap:24px!important;column-gap:24px!important}.gc-xxl-7{-moz-column-gap:28px!important;column-gap:28px!important}.gc-xxl-8{-moz-column-gap:32px!important;column-gap:32px!important}.gc-xxl-9{-moz-column-gap:36px!important;column-gap:36px!important}.gc-xxl-10{-moz-column-gap:40px!important;column-gap:40px!important}.gc-xxl-11{-moz-column-gap:44px!important;column-gap:44px!important}.gc-xxl-12{-moz-column-gap:48px!important;column-gap:48px!important}.gc-xxl-13{-moz-column-gap:52px!important;column-gap:52px!important}.gc-xxl-14{-moz-column-gap:56px!important;column-gap:56px!important}.gc-xxl-15{-moz-column-gap:60px!important;column-gap:60px!important}.gc-xxl-16{-moz-column-gap:64px!important;column-gap:64px!important}.gc-xxl-auto{-moz-column-gap:auto!important;column-gap:auto!important}.ma-xxl-0{margin:0!important}.ma-xxl-1{margin:4px!important}.ma-xxl-2{margin:8px!important}.ma-xxl-3{margin:12px!important}.ma-xxl-4{margin:16px!important}.ma-xxl-5{margin:20px!important}.ma-xxl-6{margin:24px!important}.ma-xxl-7{margin:28px!important}.ma-xxl-8{margin:32px!important}.ma-xxl-9{margin:36px!important}.ma-xxl-10{margin:40px!important}.ma-xxl-11{margin:44px!important}.ma-xxl-12{margin:48px!important}.ma-xxl-13{margin:52px!important}.ma-xxl-14{margin:56px!important}.ma-xxl-15{margin:60px!important}.ma-xxl-16{margin:64px!important}.ma-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:4px!important;margin-left:4px!important}.mx-xxl-2{margin-right:8px!important;margin-left:8px!important}.mx-xxl-3{margin-right:12px!important;margin-left:12px!important}.mx-xxl-4{margin-right:16px!important;margin-left:16px!important}.mx-xxl-5{margin-right:20px!important;margin-left:20px!important}.mx-xxl-6{margin-right:24px!important;margin-left:24px!important}.mx-xxl-7{margin-right:28px!important;margin-left:28px!important}.mx-xxl-8{margin-right:32px!important;margin-left:32px!important}.mx-xxl-9{margin-right:36px!important;margin-left:36px!important}.mx-xxl-10{margin-right:40px!important;margin-left:40px!important}.mx-xxl-11{margin-right:44px!important;margin-left:44px!important}.mx-xxl-12{margin-right:48px!important;margin-left:48px!important}.mx-xxl-13{margin-right:52px!important;margin-left:52px!important}.mx-xxl-14{margin-right:56px!important;margin-left:56px!important}.mx-xxl-15{margin-right:60px!important;margin-left:60px!important}.mx-xxl-16{margin-right:64px!important;margin-left:64px!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:4px!important;margin-bottom:4px!important}.my-xxl-2{margin-top:8px!important;margin-bottom:8px!important}.my-xxl-3{margin-top:12px!important;margin-bottom:12px!important}.my-xxl-4{margin-top:16px!important;margin-bottom:16px!important}.my-xxl-5{margin-top:20px!important;margin-bottom:20px!important}.my-xxl-6{margin-top:24px!important;margin-bottom:24px!important}.my-xxl-7{margin-top:28px!important;margin-bottom:28px!important}.my-xxl-8{margin-top:32px!important;margin-bottom:32px!important}.my-xxl-9{margin-top:36px!important;margin-bottom:36px!important}.my-xxl-10{margin-top:40px!important;margin-bottom:40px!important}.my-xxl-11{margin-top:44px!important;margin-bottom:44px!important}.my-xxl-12{margin-top:48px!important;margin-bottom:48px!important}.my-xxl-13{margin-top:52px!important;margin-bottom:52px!important}.my-xxl-14{margin-top:56px!important;margin-bottom:56px!important}.my-xxl-15{margin-top:60px!important;margin-bottom:60px!important}.my-xxl-16{margin-top:64px!important;margin-bottom:64px!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:4px!important}.mt-xxl-2{margin-top:8px!important}.mt-xxl-3{margin-top:12px!important}.mt-xxl-4{margin-top:16px!important}.mt-xxl-5{margin-top:20px!important}.mt-xxl-6{margin-top:24px!important}.mt-xxl-7{margin-top:28px!important}.mt-xxl-8{margin-top:32px!important}.mt-xxl-9{margin-top:36px!important}.mt-xxl-10{margin-top:40px!important}.mt-xxl-11{margin-top:44px!important}.mt-xxl-12{margin-top:48px!important}.mt-xxl-13{margin-top:52px!important}.mt-xxl-14{margin-top:56px!important}.mt-xxl-15{margin-top:60px!important}.mt-xxl-16{margin-top:64px!important}.mt-xxl-auto{margin-top:auto!important}.mr-xxl-0{margin-right:0!important}.mr-xxl-1{margin-right:4px!important}.mr-xxl-2{margin-right:8px!important}.mr-xxl-3{margin-right:12px!important}.mr-xxl-4{margin-right:16px!important}.mr-xxl-5{margin-right:20px!important}.mr-xxl-6{margin-right:24px!important}.mr-xxl-7{margin-right:28px!important}.mr-xxl-8{margin-right:32px!important}.mr-xxl-9{margin-right:36px!important}.mr-xxl-10{margin-right:40px!important}.mr-xxl-11{margin-right:44px!important}.mr-xxl-12{margin-right:48px!important}.mr-xxl-13{margin-right:52px!important}.mr-xxl-14{margin-right:56px!important}.mr-xxl-15{margin-right:60px!important}.mr-xxl-16{margin-right:64px!important}.mr-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:4px!important}.mb-xxl-2{margin-bottom:8px!important}.mb-xxl-3{margin-bottom:12px!important}.mb-xxl-4{margin-bottom:16px!important}.mb-xxl-5{margin-bottom:20px!important}.mb-xxl-6{margin-bottom:24px!important}.mb-xxl-7{margin-bottom:28px!important}.mb-xxl-8{margin-bottom:32px!important}.mb-xxl-9{margin-bottom:36px!important}.mb-xxl-10{margin-bottom:40px!important}.mb-xxl-11{margin-bottom:44px!important}.mb-xxl-12{margin-bottom:48px!important}.mb-xxl-13{margin-bottom:52px!important}.mb-xxl-14{margin-bottom:56px!important}.mb-xxl-15{margin-bottom:60px!important}.mb-xxl-16{margin-bottom:64px!important}.mb-xxl-auto{margin-bottom:auto!important}.ml-xxl-0{margin-left:0!important}.ml-xxl-1{margin-left:4px!important}.ml-xxl-2{margin-left:8px!important}.ml-xxl-3{margin-left:12px!important}.ml-xxl-4{margin-left:16px!important}.ml-xxl-5{margin-left:20px!important}.ml-xxl-6{margin-left:24px!important}.ml-xxl-7{margin-left:28px!important}.ml-xxl-8{margin-left:32px!important}.ml-xxl-9{margin-left:36px!important}.ml-xxl-10{margin-left:40px!important}.ml-xxl-11{margin-left:44px!important}.ml-xxl-12{margin-left:48px!important}.ml-xxl-13{margin-left:52px!important}.ml-xxl-14{margin-left:56px!important}.ml-xxl-15{margin-left:60px!important}.ml-xxl-16{margin-left:64px!important}.ml-xxl-auto{margin-left:auto!important}.ms-xxl-0{margin-inline-start:0px!important}.ms-xxl-1{margin-inline-start:4px!important}.ms-xxl-2{margin-inline-start:8px!important}.ms-xxl-3{margin-inline-start:12px!important}.ms-xxl-4{margin-inline-start:16px!important}.ms-xxl-5{margin-inline-start:20px!important}.ms-xxl-6{margin-inline-start:24px!important}.ms-xxl-7{margin-inline-start:28px!important}.ms-xxl-8{margin-inline-start:32px!important}.ms-xxl-9{margin-inline-start:36px!important}.ms-xxl-10{margin-inline-start:40px!important}.ms-xxl-11{margin-inline-start:44px!important}.ms-xxl-12{margin-inline-start:48px!important}.ms-xxl-13{margin-inline-start:52px!important}.ms-xxl-14{margin-inline-start:56px!important}.ms-xxl-15{margin-inline-start:60px!important}.ms-xxl-16{margin-inline-start:64px!important}.ms-xxl-auto{margin-inline-start:auto!important}.me-xxl-0{margin-inline-end:0px!important}.me-xxl-1{margin-inline-end:4px!important}.me-xxl-2{margin-inline-end:8px!important}.me-xxl-3{margin-inline-end:12px!important}.me-xxl-4{margin-inline-end:16px!important}.me-xxl-5{margin-inline-end:20px!important}.me-xxl-6{margin-inline-end:24px!important}.me-xxl-7{margin-inline-end:28px!important}.me-xxl-8{margin-inline-end:32px!important}.me-xxl-9{margin-inline-end:36px!important}.me-xxl-10{margin-inline-end:40px!important}.me-xxl-11{margin-inline-end:44px!important}.me-xxl-12{margin-inline-end:48px!important}.me-xxl-13{margin-inline-end:52px!important}.me-xxl-14{margin-inline-end:56px!important}.me-xxl-15{margin-inline-end:60px!important}.me-xxl-16{margin-inline-end:64px!important}.me-xxl-auto{margin-inline-end:auto!important}.ma-xxl-n1{margin:-4px!important}.ma-xxl-n2{margin:-8px!important}.ma-xxl-n3{margin:-12px!important}.ma-xxl-n4{margin:-16px!important}.ma-xxl-n5{margin:-20px!important}.ma-xxl-n6{margin:-24px!important}.ma-xxl-n7{margin:-28px!important}.ma-xxl-n8{margin:-32px!important}.ma-xxl-n9{margin:-36px!important}.ma-xxl-n10{margin:-40px!important}.ma-xxl-n11{margin:-44px!important}.ma-xxl-n12{margin:-48px!important}.ma-xxl-n13{margin:-52px!important}.ma-xxl-n14{margin:-56px!important}.ma-xxl-n15{margin:-60px!important}.ma-xxl-n16{margin:-64px!important}.mx-xxl-n1{margin-right:-4px!important;margin-left:-4px!important}.mx-xxl-n2{margin-right:-8px!important;margin-left:-8px!important}.mx-xxl-n3{margin-right:-12px!important;margin-left:-12px!important}.mx-xxl-n4{margin-right:-16px!important;margin-left:-16px!important}.mx-xxl-n5{margin-right:-20px!important;margin-left:-20px!important}.mx-xxl-n6{margin-right:-24px!important;margin-left:-24px!important}.mx-xxl-n7{margin-right:-28px!important;margin-left:-28px!important}.mx-xxl-n8{margin-right:-32px!important;margin-left:-32px!important}.mx-xxl-n9{margin-right:-36px!important;margin-left:-36px!important}.mx-xxl-n10{margin-right:-40px!important;margin-left:-40px!important}.mx-xxl-n11{margin-right:-44px!important;margin-left:-44px!important}.mx-xxl-n12{margin-right:-48px!important;margin-left:-48px!important}.mx-xxl-n13{margin-right:-52px!important;margin-left:-52px!important}.mx-xxl-n14{margin-right:-56px!important;margin-left:-56px!important}.mx-xxl-n15{margin-right:-60px!important;margin-left:-60px!important}.mx-xxl-n16{margin-right:-64px!important;margin-left:-64px!important}.my-xxl-n1{margin-top:-4px!important;margin-bottom:-4px!important}.my-xxl-n2{margin-top:-8px!important;margin-bottom:-8px!important}.my-xxl-n3{margin-top:-12px!important;margin-bottom:-12px!important}.my-xxl-n4{margin-top:-16px!important;margin-bottom:-16px!important}.my-xxl-n5{margin-top:-20px!important;margin-bottom:-20px!important}.my-xxl-n6{margin-top:-24px!important;margin-bottom:-24px!important}.my-xxl-n7{margin-top:-28px!important;margin-bottom:-28px!important}.my-xxl-n8{margin-top:-32px!important;margin-bottom:-32px!important}.my-xxl-n9{margin-top:-36px!important;margin-bottom:-36px!important}.my-xxl-n10{margin-top:-40px!important;margin-bottom:-40px!important}.my-xxl-n11{margin-top:-44px!important;margin-bottom:-44px!important}.my-xxl-n12{margin-top:-48px!important;margin-bottom:-48px!important}.my-xxl-n13{margin-top:-52px!important;margin-bottom:-52px!important}.my-xxl-n14{margin-top:-56px!important;margin-bottom:-56px!important}.my-xxl-n15{margin-top:-60px!important;margin-bottom:-60px!important}.my-xxl-n16{margin-top:-64px!important;margin-bottom:-64px!important}.mt-xxl-n1{margin-top:-4px!important}.mt-xxl-n2{margin-top:-8px!important}.mt-xxl-n3{margin-top:-12px!important}.mt-xxl-n4{margin-top:-16px!important}.mt-xxl-n5{margin-top:-20px!important}.mt-xxl-n6{margin-top:-24px!important}.mt-xxl-n7{margin-top:-28px!important}.mt-xxl-n8{margin-top:-32px!important}.mt-xxl-n9{margin-top:-36px!important}.mt-xxl-n10{margin-top:-40px!important}.mt-xxl-n11{margin-top:-44px!important}.mt-xxl-n12{margin-top:-48px!important}.mt-xxl-n13{margin-top:-52px!important}.mt-xxl-n14{margin-top:-56px!important}.mt-xxl-n15{margin-top:-60px!important}.mt-xxl-n16{margin-top:-64px!important}.mr-xxl-n1{margin-right:-4px!important}.mr-xxl-n2{margin-right:-8px!important}.mr-xxl-n3{margin-right:-12px!important}.mr-xxl-n4{margin-right:-16px!important}.mr-xxl-n5{margin-right:-20px!important}.mr-xxl-n6{margin-right:-24px!important}.mr-xxl-n7{margin-right:-28px!important}.mr-xxl-n8{margin-right:-32px!important}.mr-xxl-n9{margin-right:-36px!important}.mr-xxl-n10{margin-right:-40px!important}.mr-xxl-n11{margin-right:-44px!important}.mr-xxl-n12{margin-right:-48px!important}.mr-xxl-n13{margin-right:-52px!important}.mr-xxl-n14{margin-right:-56px!important}.mr-xxl-n15{margin-right:-60px!important}.mr-xxl-n16{margin-right:-64px!important}.mb-xxl-n1{margin-bottom:-4px!important}.mb-xxl-n2{margin-bottom:-8px!important}.mb-xxl-n3{margin-bottom:-12px!important}.mb-xxl-n4{margin-bottom:-16px!important}.mb-xxl-n5{margin-bottom:-20px!important}.mb-xxl-n6{margin-bottom:-24px!important}.mb-xxl-n7{margin-bottom:-28px!important}.mb-xxl-n8{margin-bottom:-32px!important}.mb-xxl-n9{margin-bottom:-36px!important}.mb-xxl-n10{margin-bottom:-40px!important}.mb-xxl-n11{margin-bottom:-44px!important}.mb-xxl-n12{margin-bottom:-48px!important}.mb-xxl-n13{margin-bottom:-52px!important}.mb-xxl-n14{margin-bottom:-56px!important}.mb-xxl-n15{margin-bottom:-60px!important}.mb-xxl-n16{margin-bottom:-64px!important}.ml-xxl-n1{margin-left:-4px!important}.ml-xxl-n2{margin-left:-8px!important}.ml-xxl-n3{margin-left:-12px!important}.ml-xxl-n4{margin-left:-16px!important}.ml-xxl-n5{margin-left:-20px!important}.ml-xxl-n6{margin-left:-24px!important}.ml-xxl-n7{margin-left:-28px!important}.ml-xxl-n8{margin-left:-32px!important}.ml-xxl-n9{margin-left:-36px!important}.ml-xxl-n10{margin-left:-40px!important}.ml-xxl-n11{margin-left:-44px!important}.ml-xxl-n12{margin-left:-48px!important}.ml-xxl-n13{margin-left:-52px!important}.ml-xxl-n14{margin-left:-56px!important}.ml-xxl-n15{margin-left:-60px!important}.ml-xxl-n16{margin-left:-64px!important}.ms-xxl-n1{margin-inline-start:-4px!important}.ms-xxl-n2{margin-inline-start:-8px!important}.ms-xxl-n3{margin-inline-start:-12px!important}.ms-xxl-n4{margin-inline-start:-16px!important}.ms-xxl-n5{margin-inline-start:-20px!important}.ms-xxl-n6{margin-inline-start:-24px!important}.ms-xxl-n7{margin-inline-start:-28px!important}.ms-xxl-n8{margin-inline-start:-32px!important}.ms-xxl-n9{margin-inline-start:-36px!important}.ms-xxl-n10{margin-inline-start:-40px!important}.ms-xxl-n11{margin-inline-start:-44px!important}.ms-xxl-n12{margin-inline-start:-48px!important}.ms-xxl-n13{margin-inline-start:-52px!important}.ms-xxl-n14{margin-inline-start:-56px!important}.ms-xxl-n15{margin-inline-start:-60px!important}.ms-xxl-n16{margin-inline-start:-64px!important}.me-xxl-n1{margin-inline-end:-4px!important}.me-xxl-n2{margin-inline-end:-8px!important}.me-xxl-n3{margin-inline-end:-12px!important}.me-xxl-n4{margin-inline-end:-16px!important}.me-xxl-n5{margin-inline-end:-20px!important}.me-xxl-n6{margin-inline-end:-24px!important}.me-xxl-n7{margin-inline-end:-28px!important}.me-xxl-n8{margin-inline-end:-32px!important}.me-xxl-n9{margin-inline-end:-36px!important}.me-xxl-n10{margin-inline-end:-40px!important}.me-xxl-n11{margin-inline-end:-44px!important}.me-xxl-n12{margin-inline-end:-48px!important}.me-xxl-n13{margin-inline-end:-52px!important}.me-xxl-n14{margin-inline-end:-56px!important}.me-xxl-n15{margin-inline-end:-60px!important}.me-xxl-n16{margin-inline-end:-64px!important}.pa-xxl-0{padding:0!important}.pa-xxl-1{padding:4px!important}.pa-xxl-2{padding:8px!important}.pa-xxl-3{padding:12px!important}.pa-xxl-4{padding:16px!important}.pa-xxl-5{padding:20px!important}.pa-xxl-6{padding:24px!important}.pa-xxl-7{padding:28px!important}.pa-xxl-8{padding:32px!important}.pa-xxl-9{padding:36px!important}.pa-xxl-10{padding:40px!important}.pa-xxl-11{padding:44px!important}.pa-xxl-12{padding:48px!important}.pa-xxl-13{padding:52px!important}.pa-xxl-14{padding:56px!important}.pa-xxl-15{padding:60px!important}.pa-xxl-16{padding:64px!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:4px!important;padding-left:4px!important}.px-xxl-2{padding-right:8px!important;padding-left:8px!important}.px-xxl-3{padding-right:12px!important;padding-left:12px!important}.px-xxl-4{padding-right:16px!important;padding-left:16px!important}.px-xxl-5{padding-right:20px!important;padding-left:20px!important}.px-xxl-6{padding-right:24px!important;padding-left:24px!important}.px-xxl-7{padding-right:28px!important;padding-left:28px!important}.px-xxl-8{padding-right:32px!important;padding-left:32px!important}.px-xxl-9{padding-right:36px!important;padding-left:36px!important}.px-xxl-10{padding-right:40px!important;padding-left:40px!important}.px-xxl-11{padding-right:44px!important;padding-left:44px!important}.px-xxl-12{padding-right:48px!important;padding-left:48px!important}.px-xxl-13{padding-right:52px!important;padding-left:52px!important}.px-xxl-14{padding-right:56px!important;padding-left:56px!important}.px-xxl-15{padding-right:60px!important;padding-left:60px!important}.px-xxl-16{padding-right:64px!important;padding-left:64px!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:4px!important;padding-bottom:4px!important}.py-xxl-2{padding-top:8px!important;padding-bottom:8px!important}.py-xxl-3{padding-top:12px!important;padding-bottom:12px!important}.py-xxl-4{padding-top:16px!important;padding-bottom:16px!important}.py-xxl-5{padding-top:20px!important;padding-bottom:20px!important}.py-xxl-6{padding-top:24px!important;padding-bottom:24px!important}.py-xxl-7{padding-top:28px!important;padding-bottom:28px!important}.py-xxl-8{padding-top:32px!important;padding-bottom:32px!important}.py-xxl-9{padding-top:36px!important;padding-bottom:36px!important}.py-xxl-10{padding-top:40px!important;padding-bottom:40px!important}.py-xxl-11{padding-top:44px!important;padding-bottom:44px!important}.py-xxl-12{padding-top:48px!important;padding-bottom:48px!important}.py-xxl-13{padding-top:52px!important;padding-bottom:52px!important}.py-xxl-14{padding-top:56px!important;padding-bottom:56px!important}.py-xxl-15{padding-top:60px!important;padding-bottom:60px!important}.py-xxl-16{padding-top:64px!important;padding-bottom:64px!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:4px!important}.pt-xxl-2{padding-top:8px!important}.pt-xxl-3{padding-top:12px!important}.pt-xxl-4{padding-top:16px!important}.pt-xxl-5{padding-top:20px!important}.pt-xxl-6{padding-top:24px!important}.pt-xxl-7{padding-top:28px!important}.pt-xxl-8{padding-top:32px!important}.pt-xxl-9{padding-top:36px!important}.pt-xxl-10{padding-top:40px!important}.pt-xxl-11{padding-top:44px!important}.pt-xxl-12{padding-top:48px!important}.pt-xxl-13{padding-top:52px!important}.pt-xxl-14{padding-top:56px!important}.pt-xxl-15{padding-top:60px!important}.pt-xxl-16{padding-top:64px!important}.pr-xxl-0{padding-right:0!important}.pr-xxl-1{padding-right:4px!important}.pr-xxl-2{padding-right:8px!important}.pr-xxl-3{padding-right:12px!important}.pr-xxl-4{padding-right:16px!important}.pr-xxl-5{padding-right:20px!important}.pr-xxl-6{padding-right:24px!important}.pr-xxl-7{padding-right:28px!important}.pr-xxl-8{padding-right:32px!important}.pr-xxl-9{padding-right:36px!important}.pr-xxl-10{padding-right:40px!important}.pr-xxl-11{padding-right:44px!important}.pr-xxl-12{padding-right:48px!important}.pr-xxl-13{padding-right:52px!important}.pr-xxl-14{padding-right:56px!important}.pr-xxl-15{padding-right:60px!important}.pr-xxl-16{padding-right:64px!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:4px!important}.pb-xxl-2{padding-bottom:8px!important}.pb-xxl-3{padding-bottom:12px!important}.pb-xxl-4{padding-bottom:16px!important}.pb-xxl-5{padding-bottom:20px!important}.pb-xxl-6{padding-bottom:24px!important}.pb-xxl-7{padding-bottom:28px!important}.pb-xxl-8{padding-bottom:32px!important}.pb-xxl-9{padding-bottom:36px!important}.pb-xxl-10{padding-bottom:40px!important}.pb-xxl-11{padding-bottom:44px!important}.pb-xxl-12{padding-bottom:48px!important}.pb-xxl-13{padding-bottom:52px!important}.pb-xxl-14{padding-bottom:56px!important}.pb-xxl-15{padding-bottom:60px!important}.pb-xxl-16{padding-bottom:64px!important}.pl-xxl-0{padding-left:0!important}.pl-xxl-1{padding-left:4px!important}.pl-xxl-2{padding-left:8px!important}.pl-xxl-3{padding-left:12px!important}.pl-xxl-4{padding-left:16px!important}.pl-xxl-5{padding-left:20px!important}.pl-xxl-6{padding-left:24px!important}.pl-xxl-7{padding-left:28px!important}.pl-xxl-8{padding-left:32px!important}.pl-xxl-9{padding-left:36px!important}.pl-xxl-10{padding-left:40px!important}.pl-xxl-11{padding-left:44px!important}.pl-xxl-12{padding-left:48px!important}.pl-xxl-13{padding-left:52px!important}.pl-xxl-14{padding-left:56px!important}.pl-xxl-15{padding-left:60px!important}.pl-xxl-16{padding-left:64px!important}.ps-xxl-0{padding-inline-start:0px!important}.ps-xxl-1{padding-inline-start:4px!important}.ps-xxl-2{padding-inline-start:8px!important}.ps-xxl-3{padding-inline-start:12px!important}.ps-xxl-4{padding-inline-start:16px!important}.ps-xxl-5{padding-inline-start:20px!important}.ps-xxl-6{padding-inline-start:24px!important}.ps-xxl-7{padding-inline-start:28px!important}.ps-xxl-8{padding-inline-start:32px!important}.ps-xxl-9{padding-inline-start:36px!important}.ps-xxl-10{padding-inline-start:40px!important}.ps-xxl-11{padding-inline-start:44px!important}.ps-xxl-12{padding-inline-start:48px!important}.ps-xxl-13{padding-inline-start:52px!important}.ps-xxl-14{padding-inline-start:56px!important}.ps-xxl-15{padding-inline-start:60px!important}.ps-xxl-16{padding-inline-start:64px!important}.pe-xxl-0{padding-inline-end:0px!important}.pe-xxl-1{padding-inline-end:4px!important}.pe-xxl-2{padding-inline-end:8px!important}.pe-xxl-3{padding-inline-end:12px!important}.pe-xxl-4{padding-inline-end:16px!important}.pe-xxl-5{padding-inline-end:20px!important}.pe-xxl-6{padding-inline-end:24px!important}.pe-xxl-7{padding-inline-end:28px!important}.pe-xxl-8{padding-inline-end:32px!important}.pe-xxl-9{padding-inline-end:36px!important}.pe-xxl-10{padding-inline-end:40px!important}.pe-xxl-11{padding-inline-end:44px!important}.pe-xxl-12{padding-inline-end:48px!important}.pe-xxl-13{padding-inline-end:52px!important}.pe-xxl-14{padding-inline-end:56px!important}.pe-xxl-15{padding-inline-end:60px!important}.pe-xxl-16{padding-inline-end:64px!important}.text-xxl-left{text-align:left!important}.text-xxl-right{text-align:right!important}.text-xxl-center{text-align:center!important}.text-xxl-justify{text-align:justify!important}.text-xxl-start{text-align:start!important}.text-xxl-end{text-align:end!important}.text-xxl-h1{font-size:6rem!important;font-weight:300;line-height:1;letter-spacing:-.015625em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xxl-h2{font-size:3.75rem!important;font-weight:300;line-height:1;letter-spacing:-.0083333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xxl-h3{font-size:3rem!important;font-weight:400;line-height:1.05;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xxl-h4{font-size:2.125rem!important;font-weight:400;line-height:1.175;letter-spacing:.0073529412em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xxl-h5{font-size:1.5rem!important;font-weight:400;line-height:1.333;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xxl-h6{font-size:1.25rem!important;font-weight:500;line-height:1.6;letter-spacing:.0125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xxl-subtitle-1{font-size:1rem!important;font-weight:400;line-height:1.75;letter-spacing:.009375em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xxl-subtitle-2{font-size:.875rem!important;font-weight:500;line-height:1.6;letter-spacing:.0071428571em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xxl-body-1{font-size:1rem!important;font-weight:400;line-height:1.5;letter-spacing:.03125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xxl-body-2{font-size:.875rem!important;font-weight:400;line-height:1.425;letter-spacing:.0178571429em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xxl-button{font-size:.875rem!important;font-weight:500;line-height:2.6;letter-spacing:.0892857143em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}.text-xxl-caption{font-size:.75rem!important;font-weight:400;line-height:1.667;letter-spacing:.0333333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xxl-overline{font-size:.75rem!important;font-weight:500;line-height:2.667;letter-spacing:.1666666667em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}.h-xxl-auto{height:auto!important}.h-xxl-screen{height:100vh!important}.h-xxl-0{height:0!important}.h-xxl-25{height:25%!important}.h-xxl-50{height:50%!important}.h-xxl-75{height:75%!important}.h-xxl-100{height:100%!important}.w-xxl-auto{width:auto!important}.w-xxl-0{width:0!important}.w-xxl-25{width:25%!important}.w-xxl-33{width:33%!important}.w-xxl-50{width:50%!important}.w-xxl-66{width:66%!important}.w-xxl-75{width:75%!important}.w-xxl-100{width:100%!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.float-print-none{float:none!important}.float-print-left{float:left!important}.float-print-right{float:right!important}.v-locale--is-rtl .float-print-end{float:left!important}.v-locale--is-rtl .float-print-start,.v-locale--is-ltr .float-print-end{float:right!important}.v-locale--is-ltr .float-print-start{float:left!important}}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,ui-sans-serif,system-ui,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:JetBrains Mono,ui-monospace,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}[type=text],input:where(:not([type])),[type=email],[type=url],[type=password],[type=number],[type=date],[type=datetime-local],[type=month],[type=search],[type=tel],[type=time],[type=week],[multiple],textarea,select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem;--tw-shadow: 0 0 #0000}[type=text]:focus,input:where(:not([type])):focus,[type=email]:focus,[type=url]:focus,[type=password]:focus,[type=number]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=month]:focus,[type=search]:focus,[type=tel]:focus,[type=time]:focus,[type=week]:focus,[multiple]:focus,textarea:focus,select:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-color:#2563eb}input::-moz-placeholder,textarea::-moz-placeholder{color:#6b7280;opacity:1}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{padding-top:0;padding-bottom:0}select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}[multiple],[size]:where(select:not([size="1"])){background-image:initial;background-position:initial;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#2563eb;background-color:#fff;border-color:#6b7280;border-width:1px;--tw-shadow: 0 0 #0000}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 2px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}[type=checkbox]:checked,[type=radio]:checked{border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}[type=checkbox]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e")}@media (forced-colors: active){[type=checkbox]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=radio]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e")}@media (forced-colors: active){[type=radio]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:checked:hover,[type=checkbox]:checked:focus,[type=radio]:checked:hover,[type=radio]:checked:focus{border-color:transparent;background-color:currentColor}[type=checkbox]:indeterminate{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}@media (forced-colors: active){[type=checkbox]:indeterminate{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:indeterminate:hover,[type=checkbox]:indeterminate:focus{border-color:transparent;background-color:currentColor}[type=file]{background:unset;border-color:inherit;border-width:0;border-radius:0;padding:0;font-size:unset;line-height:inherit}[type=file]:focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}html{font-family:Inter,ui-sans-serif,system-ui,sans-serif}body{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}::-webkit-scrollbar-thumb{border-radius:9999px;--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity, 1))}::-webkit-scrollbar-thumb:hover{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.form-input,.form-textarea,.form-select,.form-multiselect{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem;--tw-shadow: 0 0 #0000}.form-input:focus,.form-textarea:focus,.form-select:focus,.form-multiselect:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-color:#2563eb}.form-input::-moz-placeholder,.form-textarea::-moz-placeholder{color:#6b7280;opacity:1}.form-input::placeholder,.form-textarea::placeholder{color:#6b7280;opacity:1}.form-input::-webkit-datetime-edit-fields-wrapper{padding:0}.form-input::-webkit-date-and-time-value{min-height:1.5em;text-align:inherit}.form-input::-webkit-datetime-edit{display:inline-flex}.form-input::-webkit-datetime-edit,.form-input::-webkit-datetime-edit-year-field,.form-input::-webkit-datetime-edit-month-field,.form-input::-webkit-datetime-edit-day-field,.form-input::-webkit-datetime-edit-hour-field,.form-input::-webkit-datetime-edit-minute-field,.form-input::-webkit-datetime-edit-second-field,.form-input::-webkit-datetime-edit-millisecond-field,.form-input::-webkit-datetime-edit-meridiem-field{padding-top:0;padding-bottom:0}.form-select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}.form-select:where([size]:not([size="1"])){background-image:initial;background-position:initial;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}.form-checkbox,.form-radio{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#2563eb;background-color:#fff;border-color:#6b7280;border-width:1px;--tw-shadow: 0 0 #0000}.form-checkbox{border-radius:0}.form-checkbox:focus,.form-radio:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 2px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.form-checkbox:checked,.form-radio:checked{border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}.form-checkbox:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e")}@media (forced-colors: active){.form-checkbox:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}.form-checkbox:checked:hover,.form-checkbox:checked:focus,.form-radio:checked:hover,.form-radio:checked:focus{border-color:transparent;background-color:currentColor}.form-checkbox:indeterminate{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}@media (forced-colors: active){.form-checkbox:indeterminate{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}.form-checkbox:indeterminate:hover,.form-checkbox:indeterminate:focus{border-color:transparent;background-color:currentColor}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows) / 10%),0 3px rgb(var(--tw-prose-kbd-shadows) / 10%);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body: #374151;--tw-prose-headings: #111827;--tw-prose-lead: #4b5563;--tw-prose-links: #111827;--tw-prose-bold: #111827;--tw-prose-counters: #6b7280;--tw-prose-bullets: #d1d5db;--tw-prose-hr: #e5e7eb;--tw-prose-quotes: #111827;--tw-prose-quote-borders: #e5e7eb;--tw-prose-captions: #6b7280;--tw-prose-kbd: #111827;--tw-prose-kbd-shadows: 17 24 39;--tw-prose-code: #111827;--tw-prose-pre-code: #e5e7eb;--tw-prose-pre-bg: #1f2937;--tw-prose-th-borders: #d1d5db;--tw-prose-td-borders: #e5e7eb;--tw-prose-invert-body: #d1d5db;--tw-prose-invert-headings: #fff;--tw-prose-invert-lead: #9ca3af;--tw-prose-invert-links: #fff;--tw-prose-invert-bold: #fff;--tw-prose-invert-counters: #9ca3af;--tw-prose-invert-bullets: #4b5563;--tw-prose-invert-hr: #374151;--tw-prose-invert-quotes: #f3f4f6;--tw-prose-invert-quote-borders: #374151;--tw-prose-invert-captions: #9ca3af;--tw-prose-invert-kbd: #fff;--tw-prose-invert-kbd-shadows: 255 255 255;--tw-prose-invert-code: #fff;--tw-prose-invert-pre-code: #d1d5db;--tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);--tw-prose-invert-th-borders: #4b5563;--tw-prose-invert-td-borders: #374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-sm{font-size:.875rem;line-height:1.7142857}.prose-sm :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em;margin-bottom:1.1428571em}.prose-sm :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2857143em;line-height:1.5555556;margin-top:.8888889em;margin-bottom:.8888889em}.prose-sm :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em;margin-bottom:1.3333333em;padding-inline-start:1.1111111em}.prose-sm :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.1428571em;margin-top:0;margin-bottom:.8em;line-height:1.2}.prose-sm :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.4285714em;margin-top:1.6em;margin-bottom:.8em;line-height:1.4}.prose-sm :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2857143em;margin-top:1.5555556em;margin-bottom:.4444444em;line-height:1.5555556}.prose-sm :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.4285714em;margin-bottom:.5714286em;line-height:1.4285714}.prose-sm :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.7142857em;margin-bottom:1.7142857em}.prose-sm :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.7142857em;margin-bottom:1.7142857em}.prose-sm :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose-sm :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.7142857em;margin-bottom:1.7142857em}.prose-sm :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;border-radius:.3125rem;padding-top:.1428571em;padding-inline-end:.3571429em;padding-bottom:.1428571em;padding-inline-start:.3571429em}.prose-sm :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em}.prose-sm :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-sm :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em}.prose-sm :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;line-height:1.6666667;margin-top:1.6666667em;margin-bottom:1.6666667em;border-radius:.25rem;padding-top:.6666667em;padding-inline-end:1em;padding-bottom:.6666667em;padding-inline-start:1em}.prose-sm :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em;margin-bottom:1.1428571em;padding-inline-start:1.5714286em}.prose-sm :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em;margin-bottom:1.1428571em;padding-inline-start:1.5714286em}.prose-sm :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.2857143em;margin-bottom:.2857143em}.prose-sm :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.4285714em}.prose-sm :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.4285714em}.prose-sm :where(.prose-sm>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5714286em;margin-bottom:.5714286em}.prose-sm :where(.prose-sm>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(.prose-sm>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em}.prose-sm :where(.prose-sm>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(.prose-sm>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em}.prose-sm :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5714286em;margin-bottom:.5714286em}.prose-sm :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em;margin-bottom:1.1428571em}.prose-sm :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.2857143em;padding-inline-start:1.5714286em}.prose-sm :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2.8571429em;margin-bottom:2.8571429em}.prose-sm :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;line-height:1.5}.prose-sm :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:1em;padding-bottom:.6666667em;padding-inline-start:1em}.prose-sm :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-sm :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-sm :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.6666667em;padding-inline-end:1em;padding-bottom:.6666667em;padding-inline-start:1em}.prose-sm :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-sm :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-sm :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.7142857em;margin-bottom:1.7142857em}.prose-sm :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose-sm :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;line-height:1.3333333;margin-top:.6666667em}.prose-sm :where(.prose-sm>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(.prose-sm>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.atlas-card{border-radius:.25rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding:1.5rem;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.invisible{visibility:hidden}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.inset-4{top:1rem;right:1rem;bottom:1rem;left:1rem}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.-left-\[42px\]{left:-42px}.-right-1{right:-.25rem}.-right-2{right:-.5rem}.-top-1{top:-.25rem}.bottom-0{bottom:0}.bottom-0\.5{bottom:.125rem}.bottom-2{bottom:.5rem}.bottom-4{bottom:1rem}.bottom-6{bottom:1.5rem}.bottom-\[4px\]{bottom:4px}.left-0{left:0}.left-1{left:.25rem}.left-1\/2{left:50%}.left-6{left:1.5rem}.left-\[45\%\]{left:45%}.left-full{left:100%}.right-0{right:0}.right-1{right:.25rem}.right-2{right:.5rem}.top-0{top:0}.top-1{top:.25rem}.top-1\/2{top:50%}.top-10{top:2.5rem}.top-20{top:5rem}.top-4{top:1rem}.top-8{top:2rem}.\!z-20{z-index:20!important}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.z-\[100\]{z-index:100}.z-\[2147483647\]{z-index:2147483647}.z-\[50\]{z-index:50}.col-span-1{grid-column:span 1 / span 1}.col-span-2{grid-column:span 2 / span 2}.col-span-5{grid-column:span 5 / span 5}.col-span-full{grid-column:1 / -1}.m-0{margin:0}.m-2{margin:.5rem}.m-4{margin:1rem}.-mx-1\.5{margin-left:-.375rem;margin-right:-.375rem}.-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.-my-1\.5{margin-top:-.375rem;margin-bottom:-.375rem}.mx-0\.5{margin-left:.125rem;margin-right:.125rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.my-8{margin-top:2rem;margin-bottom:2rem}.-mb-6{margin-bottom:-1.5rem}.-mb-\[\.1rem\]{margin-bottom:-.1rem}.-mb-\[\.2rem\]{margin-bottom:-.2rem}.-mb-px{margin-bottom:-1px}.-ml-1{margin-left:-.25rem}.-mr-\[\.1rem\]{margin-right:-.1rem}.-mr-\[\.2rem\]{margin-right:-.2rem}.-mt-1{margin-top:-.25rem}.-mt-5{margin-top:-1.25rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-2\.5{margin-bottom:.625rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.me-2{margin-inline-end:.5rem}.ml-0{margin-left:0}.ml-1{margin-left:.25rem}.ml-1\.5{margin-left:.375rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-6{margin-left:1.5rem}.ml-\[3px\]{margin-left:3px}.ml-auto{margin-left:auto}.mr-0{margin-right:0}.mr-0\.5{margin-right:.125rem}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mr-\[11px\]{margin-right:11px}.mr-auto{margin-right:auto}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-\[1px\]{margin-top:1px}.mt-auto{margin-top:auto}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.aspect-square{aspect-ratio:1 / 1}.size-4{width:1rem;height:1rem}.size-5{width:1.25rem;height:1.25rem}.size-6{width:1.5rem;height:1.5rem}.size-7{width:1.75rem;height:1.75rem}.h-0\.5{height:.125rem}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-20{height:5rem}.h-24{height:6rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-64{height:16rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-\[13\.5px\]{height:13.5px}.h-\[150px\]{height:150px}.h-\[15px\]{height:15px}.h-\[250px\]{height:250px}.h-\[2px\]{height:2px}.h-\[50px\]{height:50px}.h-\[5px\]{height:5px}.h-\[72px\]{height:72px}.h-\[80\%\]{height:80%}.h-\[8px\]{height:8px}.h-\[90\%\]{height:90%}.h-\[9px\]{height:9px}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-0{max-height:0px}.max-h-4{max-height:1rem}.max-h-6{max-height:1.5rem}.max-h-60{max-height:15rem}.max-h-64{max-height:16rem}.max-h-80{max-height:20rem}.max-h-96{max-height:24rem}.max-h-\[140px\]{max-height:140px}.max-h-\[15rem\]{max-height:15rem}.max-h-\[200px\]{max-height:200px}.max-h-\[300px\]{max-height:300px}.max-h-\[50vh\]{max-height:50vh}.max-h-screen{max-height:100vh}.min-h-4{min-height:1rem}.min-h-96{min-height:24rem}.min-h-\[120px\]{min-height:120px}.min-h-\[200px\]{min-height:200px}.min-h-\[300px\]{min-height:300px}.min-h-\[400px\]{min-height:400px}.min-h-\[4rem\]{min-height:4rem}.min-h-\[500px\]{min-height:500px}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.\!w-full{width:100%!important}.w-0{width:0px}.w-0\.5{width:.125rem}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-20{width:5rem}.w-24{width:6rem}.w-28{width:7rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:1rem}.w-40{width:10rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-60{width:15rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-80{width:20rem}.w-\[100\%\]{width:100%}.w-\[13\.5px\]{width:13.5px}.w-\[14rem\]{width:14rem}.w-\[15px\]{width:15px}.w-\[20\%\]{width:20%}.w-\[26px\]{width:26px}.w-\[2px\]{width:2px}.w-\[5px\]{width:5px}.w-\[90\%\]{width:90%}.w-\[9px\]{width:9px}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.w-px{width:1px}.\!min-w-\[140px\]{min-width:140px!important}.min-w-0{min-width:0px}.min-w-40{min-width:10rem}.min-w-48{min-width:12rem}.min-w-72{min-width:18rem}.min-w-\[--reka-combobox-trigger-width\]{min-width:var(--reka-combobox-trigger-width)}.min-w-\[1rem\]{min-width:1rem}.min-w-\[280px\]{min-width:280px}.min-w-\[300px\]{min-width:300px}.min-w-\[400px\]{min-width:400px}.min-w-\[596px\]{min-width:596px}.min-w-\[600px\]{min-width:600px}.min-w-\[6rem\]{min-width:6rem}.min-w-full{min-width:100%}.max-w-2xl{max-width:42rem}.max-w-32{max-width:8rem}.max-w-3xl{max-width:48rem}.max-w-40{max-width:10rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-6xl{max-width:72rem}.max-w-7xl{max-width:80rem}.max-w-\[400px\]{max-width:400px}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-screen-xl{max-width:1280px}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-auto{flex:1 1 auto}.flex-shrink-0,.shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.origin-top{transform-origin:top}.origin-top-left{transform-origin:top left}.origin-top-right{transform-origin:top right}.-translate-x-1\/2,.-translate-x-2\/4{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2,.-translate-y-2\/4{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-2\.5{--tw-translate-x: .625rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-3{--tw-translate-x: .75rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-1{--tw-translate-y: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rotate-90{--tw-rotate: -90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-90{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes ping{75%,to{transform:scale(2);opacity:0}}.animate-ping{animation:ping 1s cubic-bezier(0,0,.2,1) infinite}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-col-resize{cursor:col-resize}.cursor-crosshair{cursor:crosshair}.cursor-default{cursor:default}.cursor-help{cursor:help}.cursor-move{cursor:move}.cursor-not-allowed{cursor:not-allowed}.cursor-nw-resize{cursor:nw-resize}.cursor-pointer{cursor:pointer}.cursor-row-resize{cursor:row-resize}.touch-none{touch-action:none}.touch-manipulation{touch-action:manipulation}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-none{resize:none}.resize{resize:both}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.grid-rows-5{grid-template-rows:repeat(5,minmax(0,1fr))}.grid-rows-6{grid-template-rows:repeat(6,minmax(0,1fr))}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-\[10px\]{gap:10px}.gap-px{gap:1px}.gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-6{row-gap:1.5rem}.-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(-.5rem * var(--tw-space-x-reverse));margin-left:calc(-.5rem * calc(1 - var(--tw-space-x-reverse)))}.-space-x-px>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(-1px * var(--tw-space-x-reverse));margin-left:calc(-1px * calc(1 - var(--tw-space-x-reverse)))}.space-x-0\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.125rem * var(--tw-space-x-reverse));margin-left:calc(.125rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-1\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.375rem * var(--tw-space-x-reverse));margin-left:calc(.375rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-2\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.625rem * var(--tw-space-x-reverse));margin-left:calc(.625rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.75rem * var(--tw-space-x-reverse));margin-left:calc(.75rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-3\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.875rem * var(--tw-space-x-reverse));margin-left:calc(.875rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1.5rem * var(--tw-space-x-reverse));margin-left:calc(1.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(2rem * var(--tw-space-x-reverse));margin-left:calc(2rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.space-y-\[10px\]>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(10px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(10px * var(--tw-space-y-reverse))}.divide-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse: 0;border-right-width:calc(1px * var(--tw-divide-x-reverse));border-left-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(229 231 235 / var(--tw-divide-opacity, 1))}.divide-gray-300>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(209 213 219 / var(--tw-divide-opacity, 1))}.self-end{align-self:flex-end}.self-center{align-self:center}.self-stretch{align-self:stretch}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-scroll{overflow:scroll}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.overflow-y-scroll{overflow-y:scroll}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-\[10px\]{border-radius:10px}.rounded-\[2px\]{border-radius:2px}.rounded-\[4px\]{border-radius:4px}.rounded-\[5px\]{border-radius:5px}.rounded-\[6px\]{border-radius:6px}.rounded-\[8px\]{border-radius:8px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-none{border-radius:0}.rounded-sm{border-radius:.125rem}.rounded-xl{border-radius:.75rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-b-\[2px\]{border-bottom-right-radius:2px;border-bottom-left-radius:2px}.rounded-b-lg{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-l-md{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-r-md{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}.rounded-r-none{border-top-right-radius:0;border-bottom-right-radius:0}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.rounded-bl-lg{border-bottom-left-radius:.5rem}.rounded-br-lg{border-bottom-right-radius:.5rem}.rounded-tl-lg{border-top-left-radius:.5rem}.rounded-tr-lg{border-top-right-radius:.5rem}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-\[0\.5px\]{border-width:.5px}.border-\[1px\]{border-width:1px}.border-\[3px\]{border-width:3px}.border-b{border-bottom-width:1px}.border-b-0{border-bottom-width:0px}.border-b-2{border-bottom-width:2px}.border-b-4{border-bottom-width:4px}.border-b-\[1px\]{border-bottom-width:1px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-l-4{border-left-width:4px}.border-l-\[1px\]{border-left-width:1px}.border-r{border-right-width:1px}.border-r-0{border-right-width:0px}.border-r-4{border-right-width:4px}.border-r-\[1px\]{border-right-width:1px}.border-t{border-top-width:1px}.border-t-0{border-top-width:0px}.border-t-4{border-top-width:4px}.border-t-\[0\.5px\]{border-top-width:.5px}.border-t-\[1px\]{border-top-width:1px}.border-dashed{border-style:dashed}.border-none{border-style:none}.border-\[--surface-gray-2\]{border-color:var(--surface-gray-2)}.border-amber-200{--tw-border-opacity: 1;border-color:rgb(253 230 138 / var(--tw-border-opacity, 1))}.border-amber-600{--tw-border-opacity: 1;border-color:rgb(217 119 6 / var(--tw-border-opacity, 1))}.border-blue-200{--tw-border-opacity: 1;border-color:rgb(191 219 254 / var(--tw-border-opacity, 1))}.border-blue-300{--tw-border-opacity: 1;border-color:rgb(147 197 253 / var(--tw-border-opacity, 1))}.border-blue-400{--tw-border-opacity: 1;border-color:rgb(96 165 250 / var(--tw-border-opacity, 1))}.border-blue-500{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.border-blue-600{--tw-border-opacity: 1;border-color:rgb(37 99 235 / var(--tw-border-opacity, 1))}.border-cyan-600{--tw-border-opacity: 1;border-color:rgb(8 145 178 / var(--tw-border-opacity, 1))}.border-error-200{--tw-border-opacity: 1;border-color:rgb(239 154 154 / var(--tw-border-opacity, 1))}.border-error-300{--tw-border-opacity: 1;border-color:rgb(229 115 115 / var(--tw-border-opacity, 1))}.border-error-500{--tw-border-opacity: 1;border-color:rgb(244 67 54 / var(--tw-border-opacity, 1))}.border-gray-100{--tw-border-opacity: 1;border-color:rgb(243 244 246 / var(--tw-border-opacity, 1))}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.border-gray-400{--tw-border-opacity: 1;border-color:rgb(156 163 175 / var(--tw-border-opacity, 1))}.border-gray-800{--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity, 1))}.border-green-200{--tw-border-opacity: 1;border-color:rgb(187 247 208 / var(--tw-border-opacity, 1))}.border-green-300{--tw-border-opacity: 1;border-color:rgb(134 239 172 / var(--tw-border-opacity, 1))}.border-green-400{--tw-border-opacity: 1;border-color:rgb(74 222 128 / var(--tw-border-opacity, 1))}.border-green-600{--tw-border-opacity: 1;border-color:rgb(22 163 74 / var(--tw-border-opacity, 1))}.border-indigo-200{--tw-border-opacity: 1;border-color:rgb(199 210 254 / var(--tw-border-opacity, 1))}.border-indigo-500{--tw-border-opacity: 1;border-color:rgb(99 102 241 / var(--tw-border-opacity, 1))}.border-indigo-600{--tw-border-opacity: 1;border-color:rgb(79 70 229 / var(--tw-border-opacity, 1))}.border-info-200{--tw-border-opacity: 1;border-color:rgb(129 212 250 / var(--tw-border-opacity, 1))}.border-orange-200{--tw-border-opacity: 1;border-color:rgb(254 215 170 / var(--tw-border-opacity, 1))}.border-orange-600{--tw-border-opacity: 1;border-color:rgb(234 88 12 / var(--tw-border-opacity, 1))}.border-pink-600{--tw-border-opacity: 1;border-color:rgb(219 39 119 / var(--tw-border-opacity, 1))}.border-primary-200{--tw-border-opacity: 1;border-color:rgb(153 246 228 / var(--tw-border-opacity, 1))}.border-primary-300{--tw-border-opacity: 1;border-color:rgb(94 234 212 / var(--tw-border-opacity, 1))}.border-primary-500{--tw-border-opacity: 1;border-color:rgb(20 184 166 / var(--tw-border-opacity, 1))}.border-primary-600{--tw-border-opacity: 1;border-color:rgb(13 148 136 / var(--tw-border-opacity, 1))}.border-purple-200{--tw-border-opacity: 1;border-color:rgb(233 213 255 / var(--tw-border-opacity, 1))}.border-purple-600{--tw-border-opacity: 1;border-color:rgb(147 51 234 / var(--tw-border-opacity, 1))}.border-red-100{--tw-border-opacity: 1;border-color:rgb(254 226 226 / var(--tw-border-opacity, 1))}.border-red-200{--tw-border-opacity: 1;border-color:rgb(254 202 202 / var(--tw-border-opacity, 1))}.border-red-300{--tw-border-opacity: 1;border-color:rgb(252 165 165 / var(--tw-border-opacity, 1))}.border-red-400{--tw-border-opacity: 1;border-color:rgb(248 113 113 / var(--tw-border-opacity, 1))}.border-red-600{--tw-border-opacity: 1;border-color:rgb(220 38 38 / var(--tw-border-opacity, 1))}.border-success-200{--tw-border-opacity: 1;border-color:rgb(165 214 167 / var(--tw-border-opacity, 1))}.border-teal-600{--tw-border-opacity: 1;border-color:rgb(13 148 136 / var(--tw-border-opacity, 1))}.border-transparent{border-color:transparent}.border-violet-600{--tw-border-opacity: 1;border-color:rgb(124 58 237 / var(--tw-border-opacity, 1))}.border-warning-200{--tw-border-opacity: 1;border-color:rgb(255 245 157 / var(--tw-border-opacity, 1))}.border-white{--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity, 1))}.border-yellow-200{--tw-border-opacity: 1;border-color:rgb(254 240 138 / var(--tw-border-opacity, 1))}.border-yellow-300{--tw-border-opacity: 1;border-color:rgb(253 224 71 / var(--tw-border-opacity, 1))}.border-yellow-400{--tw-border-opacity: 1;border-color:rgb(250 204 21 / var(--tw-border-opacity, 1))}.border-yellow-500{--tw-border-opacity: 1;border-color:rgb(234 179 8 / var(--tw-border-opacity, 1))}.border-yellow-600{--tw-border-opacity: 1;border-color:rgb(202 138 4 / var(--tw-border-opacity, 1))}.border-t-\[--surface-gray-2\]{border-top-color:var(--surface-gray-2)}.bg-amber-100{--tw-bg-opacity: 1;background-color:rgb(254 243 199 / var(--tw-bg-opacity, 1))}.bg-amber-50{--tw-bg-opacity: 1;background-color:rgb(255 251 235 / var(--tw-bg-opacity, 1))}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.bg-black\/65{background-color:#000000a6}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-blue-300{--tw-bg-opacity: 1;background-color:rgb(147 197 253 / var(--tw-bg-opacity, 1))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.bg-current{background-color:currentColor}.bg-cyan-100{--tw-bg-opacity: 1;background-color:rgb(207 250 254 / var(--tw-bg-opacity, 1))}.bg-error-100{--tw-bg-opacity: 1;background-color:rgb(255 205 210 / var(--tw-bg-opacity, 1))}.bg-error-300{--tw-bg-opacity: 1;background-color:rgb(229 115 115 / var(--tw-bg-opacity, 1))}.bg-error-50{--tw-bg-opacity: 1;background-color:rgb(255 235 238 / var(--tw-bg-opacity, 1))}.bg-error-500{--tw-bg-opacity: 1;background-color:rgb(244 67 54 / var(--tw-bg-opacity, 1))}.bg-error-600{--tw-bg-opacity: 1;background-color:rgb(229 57 53 / var(--tw-bg-opacity, 1))}.bg-error-700{--tw-bg-opacity: 1;background-color:rgb(211 47 47 / var(--tw-bg-opacity, 1))}.bg-error-900{--tw-bg-opacity: 1;background-color:rgb(183 28 28 / var(--tw-bg-opacity, 1))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.bg-gray-300{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity, 1))}.bg-gray-400{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.bg-gray-500{--tw-bg-opacity: 1;background-color:rgb(107 114 128 / var(--tw-bg-opacity, 1))}.bg-gray-600{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.bg-gray-800{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.bg-gray-900{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.bg-gray-900\/60{background-color:#11182799}.bg-gray-900\/80{background-color:#111827cc}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.bg-green-200{--tw-bg-opacity: 1;background-color:rgb(187 247 208 / var(--tw-bg-opacity, 1))}.bg-green-400{--tw-bg-opacity: 1;background-color:rgb(74 222 128 / var(--tw-bg-opacity, 1))}.bg-green-50{--tw-bg-opacity: 1;background-color:rgb(240 253 244 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.bg-indigo-100{--tw-bg-opacity: 1;background-color:rgb(224 231 255 / var(--tw-bg-opacity, 1))}.bg-indigo-50{--tw-bg-opacity: 1;background-color:rgb(238 242 255 / var(--tw-bg-opacity, 1))}.bg-info-50{--tw-bg-opacity: 1;background-color:rgb(225 245 254 / var(--tw-bg-opacity, 1))}.bg-orange-100{--tw-bg-opacity: 1;background-color:rgb(255 237 213 / var(--tw-bg-opacity, 1))}.bg-orange-50{--tw-bg-opacity: 1;background-color:rgb(255 247 237 / var(--tw-bg-opacity, 1))}.bg-orange-500{--tw-bg-opacity: 1;background-color:rgb(249 115 22 / var(--tw-bg-opacity, 1))}.bg-pink-100{--tw-bg-opacity: 1;background-color:rgb(252 231 243 / var(--tw-bg-opacity, 1))}.bg-primary-100{--tw-bg-opacity: 1;background-color:rgb(204 251 241 / var(--tw-bg-opacity, 1))}.bg-primary-300{--tw-bg-opacity: 1;background-color:rgb(94 234 212 / var(--tw-bg-opacity, 1))}.bg-primary-50{--tw-bg-opacity: 1;background-color:rgb(240 253 250 / var(--tw-bg-opacity, 1))}.bg-primary-500{--tw-bg-opacity: 1;background-color:rgb(20 184 166 / var(--tw-bg-opacity, 1))}.bg-primary-600{--tw-bg-opacity: 1;background-color:rgb(13 148 136 / var(--tw-bg-opacity, 1))}.bg-primary-700{--tw-bg-opacity: 1;background-color:rgb(15 118 110 / var(--tw-bg-opacity, 1))}.bg-primary-900{--tw-bg-opacity: 1;background-color:rgb(19 78 74 / var(--tw-bg-opacity, 1))}.bg-purple-100{--tw-bg-opacity: 1;background-color:rgb(243 232 255 / var(--tw-bg-opacity, 1))}.bg-purple-50{--tw-bg-opacity: 1;background-color:rgb(250 245 255 / var(--tw-bg-opacity, 1))}.bg-purple-500{--tw-bg-opacity: 1;background-color:rgb(168 85 247 / var(--tw-bg-opacity, 1))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-red-200{--tw-bg-opacity: 1;background-color:rgb(254 202 202 / var(--tw-bg-opacity, 1))}.bg-red-400{--tw-bg-opacity: 1;background-color:rgb(248 113 113 / var(--tw-bg-opacity, 1))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-success-100{--tw-bg-opacity: 1;background-color:rgb(200 230 201 / var(--tw-bg-opacity, 1))}.bg-success-300{--tw-bg-opacity: 1;background-color:rgb(129 199 132 / var(--tw-bg-opacity, 1))}.bg-success-50{--tw-bg-opacity: 1;background-color:rgb(232 245 232 / var(--tw-bg-opacity, 1))}.bg-success-500{--tw-bg-opacity: 1;background-color:rgb(76 175 80 / var(--tw-bg-opacity, 1))}.bg-success-700{--tw-bg-opacity: 1;background-color:rgb(56 142 60 / var(--tw-bg-opacity, 1))}.bg-success-900{--tw-bg-opacity: 1;background-color:rgb(27 94 32 / var(--tw-bg-opacity, 1))}.bg-teal-100{--tw-bg-opacity: 1;background-color:rgb(204 251 241 / var(--tw-bg-opacity, 1))}.bg-transparent{background-color:transparent}.bg-violet-100{--tw-bg-opacity: 1;background-color:rgb(237 233 254 / var(--tw-bg-opacity, 1))}.bg-warning-50{--tw-bg-opacity: 1;background-color:rgb(255 253 231 / var(--tw-bg-opacity, 1))}.bg-warning-500{--tw-bg-opacity: 1;background-color:rgb(255 235 59 / var(--tw-bg-opacity, 1))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-white\/80{background-color:#fffc}.bg-white\/90{background-color:#ffffffe6}.bg-yellow-100{--tw-bg-opacity: 1;background-color:rgb(254 249 195 / var(--tw-bg-opacity, 1))}.bg-yellow-400{--tw-bg-opacity: 1;background-color:rgb(250 204 21 / var(--tw-bg-opacity, 1))}.bg-yellow-50{--tw-bg-opacity: 1;background-color:rgb(254 252 232 / var(--tw-bg-opacity, 1))}.bg-yellow-500{--tw-bg-opacity: 1;background-color:rgb(234 179 8 / var(--tw-bg-opacity, 1))}.bg-opacity-25{--tw-bg-opacity: .25}.bg-opacity-50{--tw-bg-opacity: .5}.bg-opacity-75{--tw-bg-opacity: .75}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-t{background-image:linear-gradient(to top,var(--tw-gradient-stops))}.from-black\/60{--tw-gradient-from: rgb(0 0 0 / .6) var(--tw-gradient-from-position);--tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-primary-600{--tw-gradient-from: #0D9488 var(--tw-gradient-from-position);--tw-gradient-to: rgb(13 148 136 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.to-primary-800{--tw-gradient-to: #115E59 var(--tw-gradient-to-position)}.to-transparent{--tw-gradient-to: transparent var(--tw-gradient-to-position)}.\!fill-yellow-200{fill:#fef08a!important}.\!fill-yellow-500{fill:#eab308!important}.fill-gray-300{fill:#d1d5db}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-\[2px\]{padding:2px}.p-px{padding:1px}.px-0{padding-left:0;padding-right:0}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-\[1px\]{padding-left:1px;padding-right:1px}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-3\.5{padding-top:.875rem;padding-bottom:.875rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-1\.5{padding-bottom:.375rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pb-7{padding-bottom:1.75rem}.pl-10{padding-left:2.5rem}.pl-2{padding-left:.5rem}.pl-2\.5{padding-left:.625rem}.pl-3{padding-left:.75rem}.pl-3\.5{padding-left:.875rem}.pl-8{padding-left:2rem}.pl-9{padding-left:2.25rem}.pr-10{padding-right:2.5rem}.pr-2{padding-right:.5rem}.pr-2\.5{padding-right:.625rem}.pr-3{padding-right:.75rem}.pr-5{padding-right:1.25rem}.pr-6{padding-right:1.5rem}.pr-8{padding-right:2rem}.pr-9{padding-right:2.25rem}.pt-0{padding-top:0}.pt-1\.5{padding-top:.375rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.pt-6{padding-top:1.5rem}.pt-\[1px\]{padding-top:1px}.pt-\[20vh\]{padding-top:20vh}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-start{text-align:start}.text-end{text-align:end}.align-middle{vertical-align:middle}.font-mono{font-family:JetBrains Mono,ui-monospace,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-\[24px\]{font-size:24px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-10{line-height:2.5rem}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-none{line-height:1}.leading-normal{line-height:1.5}.leading-relaxed{line-height:1.625}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-amber-500{--tw-text-opacity: 1;color:rgb(245 158 11 / var(--tw-text-opacity, 1))}.text-amber-600{--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity, 1))}.text-amber-700{--tw-text-opacity: 1;color:rgb(180 83 9 / var(--tw-text-opacity, 1))}.text-amber-900{--tw-text-opacity: 1;color:rgb(120 53 15 / var(--tw-text-opacity, 1))}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity, 1))}.text-blue-400{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-blue-800{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity, 1))}.text-blue-900{--tw-text-opacity: 1;color:rgb(30 58 138 / var(--tw-text-opacity, 1))}.text-cyan-600{--tw-text-opacity: 1;color:rgb(8 145 178 / var(--tw-text-opacity, 1))}.text-error-500{--tw-text-opacity: 1;color:rgb(244 67 54 / var(--tw-text-opacity, 1))}.text-error-600{--tw-text-opacity: 1;color:rgb(229 57 53 / var(--tw-text-opacity, 1))}.text-error-700{--tw-text-opacity: 1;color:rgb(211 47 47 / var(--tw-text-opacity, 1))}.text-error-800{--tw-text-opacity: 1;color:rgb(198 40 40 / var(--tw-text-opacity, 1))}.text-error-900{--tw-text-opacity: 1;color:rgb(183 28 28 / var(--tw-text-opacity, 1))}.text-gray-100{--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.text-gray-200{--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity, 1))}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.text-green-300{--tw-text-opacity: 1;color:rgb(134 239 172 / var(--tw-text-opacity, 1))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-green-800{--tw-text-opacity: 1;color:rgb(22 101 52 / var(--tw-text-opacity, 1))}.text-green-900{--tw-text-opacity: 1;color:rgb(20 83 45 / var(--tw-text-opacity, 1))}.text-indigo-500{--tw-text-opacity: 1;color:rgb(99 102 241 / var(--tw-text-opacity, 1))}.text-indigo-600{--tw-text-opacity: 1;color:rgb(79 70 229 / var(--tw-text-opacity, 1))}.text-indigo-900{--tw-text-opacity: 1;color:rgb(49 46 129 / var(--tw-text-opacity, 1))}.text-info-800{--tw-text-opacity: 1;color:rgb(2 119 189 / var(--tw-text-opacity, 1))}.text-info-900{--tw-text-opacity: 1;color:rgb(1 87 155 / var(--tw-text-opacity, 1))}.text-orange-500{--tw-text-opacity: 1;color:rgb(249 115 22 / var(--tw-text-opacity, 1))}.text-orange-600{--tw-text-opacity: 1;color:rgb(234 88 12 / var(--tw-text-opacity, 1))}.text-orange-700{--tw-text-opacity: 1;color:rgb(194 65 12 / var(--tw-text-opacity, 1))}.text-orange-800{--tw-text-opacity: 1;color:rgb(154 52 18 / var(--tw-text-opacity, 1))}.text-orange-900{--tw-text-opacity: 1;color:rgb(124 45 18 / var(--tw-text-opacity, 1))}.text-pink-600{--tw-text-opacity: 1;color:rgb(219 39 119 / var(--tw-text-opacity, 1))}.text-primary-100{--tw-text-opacity: 1;color:rgb(204 251 241 / var(--tw-text-opacity, 1))}.text-primary-500{--tw-text-opacity: 1;color:rgb(20 184 166 / var(--tw-text-opacity, 1))}.text-primary-600{--tw-text-opacity: 1;color:rgb(13 148 136 / var(--tw-text-opacity, 1))}.text-primary-700{--tw-text-opacity: 1;color:rgb(15 118 110 / var(--tw-text-opacity, 1))}.text-primary-800{--tw-text-opacity: 1;color:rgb(17 94 89 / var(--tw-text-opacity, 1))}.text-primary-900{--tw-text-opacity: 1;color:rgb(19 78 74 / var(--tw-text-opacity, 1))}.text-purple-500{--tw-text-opacity: 1;color:rgb(168 85 247 / var(--tw-text-opacity, 1))}.text-purple-600{--tw-text-opacity: 1;color:rgb(147 51 234 / var(--tw-text-opacity, 1))}.text-purple-900{--tw-text-opacity: 1;color:rgb(88 28 135 / var(--tw-text-opacity, 1))}.text-red-300{--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-red-800{--tw-text-opacity: 1;color:rgb(153 27 27 / var(--tw-text-opacity, 1))}.text-red-900{--tw-text-opacity: 1;color:rgb(127 29 29 / var(--tw-text-opacity, 1))}.text-success-800{--tw-text-opacity: 1;color:rgb(46 125 50 / var(--tw-text-opacity, 1))}.text-success-900{--tw-text-opacity: 1;color:rgb(27 94 32 / var(--tw-text-opacity, 1))}.text-teal-600{--tw-text-opacity: 1;color:rgb(13 148 136 / var(--tw-text-opacity, 1))}.text-transparent{color:transparent}.text-warning-800{--tw-text-opacity: 1;color:rgb(249 168 37 / var(--tw-text-opacity, 1))}.text-warning-900{--tw-text-opacity: 1;color:rgb(245 127 23 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-yellow-400{--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.text-yellow-500{--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.text-yellow-600{--tw-text-opacity: 1;color:rgb(202 138 4 / var(--tw-text-opacity, 1))}.text-yellow-700{--tw-text-opacity: 1;color:rgb(161 98 7 / var(--tw-text-opacity, 1))}.text-yellow-800{--tw-text-opacity: 1;color:rgb(133 77 14 / var(--tw-text-opacity, 1))}.text-yellow-900{--tw-text-opacity: 1;color:rgb(113 63 18 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.line-through{text-decoration-line:line-through}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.placeholder-gray-500::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(107 114 128 / var(--tw-placeholder-opacity, 1))}.placeholder-gray-500::placeholder{--tw-placeholder-opacity: 1;color:rgb(107 114 128 / var(--tw-placeholder-opacity, 1))}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-25{opacity:.25}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-inner{--tw-shadow: inset 0 2px 4px 0 rgb(0 0 0 / .05);--tw-shadow-colored: inset 0 2px 4px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-0{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-black{--tw-ring-opacity: 1;--tw-ring-color: rgb(0 0 0 / var(--tw-ring-opacity, 1))}.ring-primary-400{--tw-ring-opacity: 1;--tw-ring-color: rgb(45 212 191 / var(--tw-ring-opacity, 1))}.ring-primary-500{--tw-ring-opacity: 1;--tw-ring-color: rgb(20 184 166 / var(--tw-ring-opacity, 1))}.ring-red-500{--tw-ring-opacity: 1;--tw-ring-color: rgb(239 68 68 / var(--tw-ring-opacity, 1))}.ring-white{--tw-ring-opacity: 1;--tw-ring-color: rgb(255 255 255 / var(--tw-ring-opacity, 1))}.ring-opacity-5{--tw-ring-opacity: .05}.ring-offset-2{--tw-ring-offset-width: 2px}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow-xl{--tw-drop-shadow: drop-shadow(0 20px 13px rgb(0 0 0 / .03)) drop-shadow(0 8px 5px rgb(0 0 0 / .08));filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.grayscale{--tw-grayscale: grayscale(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.\!filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-\[12px\]{--tw-backdrop-blur: blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-100{transition-duration:.1s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-75{transition-duration:75ms}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.atlas-container{width:100%}@media (min-width: 640px){.atlas-container{max-width:640px}}@media (min-width: 768px){.atlas-container{max-width:768px}}@media (min-width: 1024px){.atlas-container{max-width:1024px}}@media (min-width: 1280px){.atlas-container{max-width:1280px}}@media (min-width: 1536px){.atlas-container{max-width:1536px}}.atlas-container{margin-left:auto;margin-right:auto;padding-left:1rem;padding-right:1rem}@media (min-width: 640px){.atlas-container{padding-left:1.5rem;padding-right:1.5rem}}@media (min-width: 1024px){.atlas-container{padding-left:2rem;padding-right:2rem}}.\[all\:unset\]{all:unset}.first\:mt-3:first-child{margin-top:.75rem}.last\:border-b-0:last-child{border-bottom-width:0px}.focus-within\:ring-2:focus-within{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.hover\:scale-105:hover{--tw-scale-x: 1.05;--tw-scale-y: 1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:cursor-pointer:hover{cursor:pointer}.hover\:border-blue-400:hover{--tw-border-opacity: 1;border-color:rgb(96 165 250 / var(--tw-border-opacity, 1))}.hover\:border-gray-300:hover{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.hover\:border-gray-400:hover{--tw-border-opacity: 1;border-color:rgb(156 163 175 / var(--tw-border-opacity, 1))}.hover\:border-gray-600:hover{--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity, 1))}.hover\:border-green-500:hover{--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity, 1))}.hover\:border-indigo-300:hover{--tw-border-opacity: 1;border-color:rgb(165 180 252 / var(--tw-border-opacity, 1))}.hover\:border-primary-300:hover{--tw-border-opacity: 1;border-color:rgb(94 234 212 / var(--tw-border-opacity, 1))}.hover\:border-primary-400:hover{--tw-border-opacity: 1;border-color:rgb(45 212 191 / var(--tw-border-opacity, 1))}.hover\:bg-blue-100:hover{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.hover\:bg-blue-200:hover{--tw-bg-opacity: 1;background-color:rgb(191 219 254 / var(--tw-bg-opacity, 1))}.hover\:bg-blue-700:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.hover\:bg-error-700:hover{--tw-bg-opacity: 1;background-color:rgb(211 47 47 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-200:hover{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-50:hover{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-900:hover{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.hover\:bg-green-200:hover{--tw-bg-opacity: 1;background-color:rgb(187 247 208 / var(--tw-bg-opacity, 1))}.hover\:bg-green-700:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.hover\:bg-primary-50:hover{--tw-bg-opacity: 1;background-color:rgb(240 253 250 / var(--tw-bg-opacity, 1))}.hover\:bg-primary-700:hover{--tw-bg-opacity: 1;background-color:rgb(15 118 110 / var(--tw-bg-opacity, 1))}.hover\:bg-red-100:hover{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.hover\:bg-red-50:hover{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.hover\:bg-red-700:hover{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))}.hover\:bg-white:hover{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.hover\:bg-yellow-100:hover{--tw-bg-opacity: 1;background-color:rgb(254 249 195 / var(--tw-bg-opacity, 1))}.hover\:bg-yellow-600:hover{--tw-bg-opacity: 1;background-color:rgb(202 138 4 / var(--tw-bg-opacity, 1))}.hover\:text-blue-600:hover{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.hover\:text-blue-700:hover{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.hover\:text-blue-800:hover{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity, 1))}.hover\:text-gray-500:hover{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.hover\:text-gray-600:hover{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.hover\:text-gray-700:hover{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.hover\:text-gray-900:hover{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.hover\:text-green-600:hover{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.hover\:text-green-700:hover{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.hover\:text-orange-700:hover{--tw-text-opacity: 1;color:rgb(194 65 12 / var(--tw-text-opacity, 1))}.hover\:text-primary-600:hover{--tw-text-opacity: 1;color:rgb(13 148 136 / var(--tw-text-opacity, 1))}.hover\:text-primary-700:hover{--tw-text-opacity: 1;color:rgb(15 118 110 / var(--tw-text-opacity, 1))}.hover\:text-purple-600:hover{--tw-text-opacity: 1;color:rgb(147 51 234 / var(--tw-text-opacity, 1))}.hover\:text-purple-700:hover{--tw-text-opacity: 1;color:rgb(126 34 206 / var(--tw-text-opacity, 1))}.hover\:text-red-600:hover{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.hover\:text-red-700:hover{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.hover\:text-red-800:hover{--tw-text-opacity: 1;color:rgb(153 27 27 / var(--tw-text-opacity, 1))}.hover\:text-yellow-600:hover{--tw-text-opacity: 1;color:rgb(202 138 4 / var(--tw-text-opacity, 1))}.hover\:text-yellow-700:hover{--tw-text-opacity: 1;color:rgb(161 98 7 / var(--tw-text-opacity, 1))}.hover\:opacity-100:hover{opacity:1}.hover\:opacity-80:hover{opacity:.8}.hover\:shadow-md:hover{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-sm:hover{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:\[all\:unset\]:hover{all:unset}.focus\:border-0:focus{border-width:0px}.focus\:border-error-500:focus{--tw-border-opacity: 1;border-color:rgb(244 67 54 / var(--tw-border-opacity, 1))}.focus\:border-gray-900:focus{--tw-border-opacity: 1;border-color:rgb(17 24 39 / var(--tw-border-opacity, 1))}.focus\:border-indigo-500:focus{--tw-border-opacity: 1;border-color:rgb(99 102 241 / var(--tw-border-opacity, 1))}.focus\:border-primary-300:focus{--tw-border-opacity: 1;border-color:rgb(94 234 212 / var(--tw-border-opacity, 1))}.focus\:border-primary-500:focus{--tw-border-opacity: 1;border-color:rgb(20 184 166 / var(--tw-border-opacity, 1))}.focus\:border-primary-600:focus{--tw-border-opacity: 1;border-color:rgb(13 148 136 / var(--tw-border-opacity, 1))}.focus\:border-red-500:focus{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity, 1))}.focus\:bg-gray-50:focus{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.focus\:opacity-100:focus{opacity:1}.focus\:shadow-sm:focus{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:outline-0:focus{outline-width:0px}.focus\:ring:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-0:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-blue-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1))}.focus\:ring-blue-600:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(37 99 235 / var(--tw-ring-opacity, 1))}.focus\:ring-error-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(244 67 54 / var(--tw-ring-opacity, 1))}.focus\:ring-indigo-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(99 102 241 / var(--tw-ring-opacity, 1))}.focus\:ring-primary-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(153 246 228 / var(--tw-ring-opacity, 1))}.focus\:ring-primary-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(20 184 166 / var(--tw-ring-opacity, 1))}.focus\:ring-red-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(239 68 68 / var(--tw-ring-opacity, 1))}.focus\:ring-opacity-50:focus{--tw-ring-opacity: .5}.focus\:ring-offset-0:focus{--tw-ring-offset-width: 0px}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.focus\:ring-offset-blue-50:focus{--tw-ring-offset-color: #eff6ff}.focus\:transition-none:focus{transition-property:none}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-blue-400:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(96 165 250 / var(--tw-ring-opacity, 1))}.active\:border-blue-400:active{--tw-border-opacity: 1;border-color:rgb(96 165 250 / var(--tw-border-opacity, 1))}.active\:border-gray-700:active{--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity, 1))}.active\:border-green-500:active{--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity, 1))}.active\:bg-blue-300:active{--tw-bg-opacity: 1;background-color:rgb(147 197 253 / var(--tw-bg-opacity, 1))}.active\:bg-blue-700:active{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.active\:bg-gray-500:active{--tw-bg-opacity: 1;background-color:rgb(107 114 128 / var(--tw-bg-opacity, 1))}.active\:bg-green-300:active{--tw-bg-opacity: 1;background-color:rgb(134 239 172 / var(--tw-bg-opacity, 1))}.active\:bg-green-800:active{--tw-bg-opacity: 1;background-color:rgb(22 101 52 / var(--tw-bg-opacity, 1))}.enabled\:hover\:bg-gray-400:hover:enabled{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:border-gray-300:disabled{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.disabled\:bg-error-300:disabled{--tw-bg-opacity: 1;background-color:rgb(229 115 115 / var(--tw-bg-opacity, 1))}.disabled\:bg-gray-100:disabled{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.disabled\:bg-primary-300:disabled{--tw-bg-opacity: 1;background-color:rgb(94 234 212 / var(--tw-bg-opacity, 1))}.disabled\:text-gray-400:disabled{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.disabled\:opacity-50:disabled{opacity:.5}.group:hover .group-hover\:visible{visibility:visible}.group:hover .group-hover\:bg-gray-400{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.group:hover .group-hover\:text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.group:hover .group-hover\:opacity-100{opacity:1}.group:hover .group-hover\:enabled\:bg-gray-400:enabled{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[highlighted\]\:outline-none[data-highlighted]{outline:2px solid transparent;outline-offset:2px}.prose-table\:table-fixed :is(:where(table):not(:where([class~=not-prose],[class~=not-prose] *))){table-layout:fixed}.prose-th\:relative :is(:where(th):not(:where([class~=not-prose],[class~=not-prose] *))){position:relative}.prose-th\:border :is(:where(th):not(:where([class~=not-prose],[class~=not-prose] *))){border-width:1px}.prose-th\:p-2 :is(:where(th):not(:where([class~=not-prose],[class~=not-prose] *))){padding:.5rem}.prose-td\:relative :is(:where(td):not(:where([class~=not-prose],[class~=not-prose] *))){position:relative}.prose-td\:border :is(:where(td):not(:where([class~=not-prose],[class~=not-prose] *))){border-width:1px}.prose-td\:p-2 :is(:where(td):not(:where([class~=not-prose],[class~=not-prose] *))){padding:.5rem}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.dark\:text-gray-200:is(.dark *){--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity, 1))}.dark\:text-gray-300:is(.dark *){--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.dark\:text-white:is(.dark *){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.dark\:\[color-scheme\:dark\]:is(.dark *){color-scheme:dark}@media (min-width: 640px){.sm\:col-span-2{grid-column:span 2 / span 2}.sm\:mt-0{margin-top:0}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:hidden{display:none}.sm\:flex-1{flex:1 1 0%}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:bg-black\/90{background-color:#000000e6}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width: 768px){.md\:col-span-2{grid-column:span 2 / span 2}.md\:ml-2{margin-left:.5rem}.md\:ml-auto{margin-left:auto}.md\:mt-0{margin-top:0}.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-80{height:20rem}.md\:min-w-\[400px\]{min-width:400px}.md\:flex-shrink-0{flex-shrink:0}.md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-baseline{align-items:baseline}.md\:px-5{padding-left:1.25rem;padding-right:1.25rem}}@media (min-width: 1024px){.lg\:col-span-2{grid-column:span 2 / span 2}.lg\:block{display:block}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (min-width: 1280px){.xl\:col-span-2{grid-column:span 2 / span 2}.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}.rtl\:-translate-x-2\.5:where([dir=rtl],[dir=rtl] *){--tw-translate-x: -.625rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:-translate-x-3:where([dir=rtl],[dir=rtl] *){--tw-translate-x: -.75rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>div\:first-child\]\:w-full>div:first-child{width:100%}.atlas-card-header[data-v-c3f51894]{border-top-left-radius:.25rem;border-top-right-radius:.25rem;border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));padding:1rem 1.5rem}.atlas-card-footer[data-v-c3f51894]{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem;border-top-width:1px;--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));padding:1rem 1.5rem}.atlas-card-content[data-v-c3f51894]:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.atlas-card-content[data-v-c3f51894]:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}select[data-v-dfd92765]::-ms-expand{display:none}.animate-spin[data-v-7a4d805f]{animation:spin-7a4d805f 1s linear infinite}@keyframes spin-7a4d805f{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.modal-enter-active[data-v-583bdfc3],.modal-leave-active[data-v-583bdfc3]{transition:opacity .3s ease}.modal-enter-active .relative[data-v-583bdfc3]{transition:transform .3s ease}.modal-enter-from[data-v-583bdfc3],.modal-leave-to[data-v-583bdfc3]{opacity:0}.modal-enter-from .relative[data-v-583bdfc3],.modal-leave-to .relative[data-v-583bdfc3]{transform:scale(.95) translateY(-10px)}.fp-avatar[data-v-bee50a95]{background-color:transparent}.fp-file-upload[data-v-3b4b2a2a]{width:100%}.upload-area[data-v-3b4b2a2a],.dropdown-enter-active[data-v-342f9714],.dropdown-leave-active[data-v-342f9714]{transition:all .2s ease}.dropdown-enter-from[data-v-342f9714],.dropdown-leave-to[data-v-342f9714]{opacity:0;transform:translateY(-8px)}.mobile-sidebar-enter-active[data-v-342f9714],.mobile-sidebar-leave-active[data-v-342f9714]{transition:all .3s ease}.mobile-sidebar-enter-from[data-v-342f9714],.mobile-sidebar-leave-to[data-v-342f9714]{opacity:0;transform:translate(-100%)}.notifications-container[data-v-9b99d032]{position:fixed;top:0;right:0;z-index:9999;pointer-events:none}.notifications-container[data-v-9b99d032] .v-snack{pointer-events:all;position:relative!important;margin-bottom:8px}.v-btn{align-items:center;border-radius:4px;display:inline-grid;grid-template-areas:"prepend content append";grid-template-columns:max-content auto max-content;font-weight:500;justify-content:center;letter-spacing:.0892857143em;line-height:normal;max-width:100%;outline:none;position:relative;text-decoration:none;text-indent:.0892857143em;text-transform:uppercase;transition-property:box-shadow,transform,opacity,background;transition-duration:.28s;transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;flex-shrink:0}.v-locale--is-rtl .v-btn{text-indent:-.0892857143em}.v-btn--size-x-small{--v-btn-size: .625rem;--v-btn-height: 20px;font-size:var(--v-btn-size);min-width:36px;padding:0 8px}.v-btn--size-small{--v-btn-size: .75rem;--v-btn-height: 28px;font-size:var(--v-btn-size);min-width:50px;padding:0 12px}.v-btn--size-default{--v-btn-size: .875rem;--v-btn-height: 36px;font-size:var(--v-btn-size);min-width:64px;padding:0 16px}.v-btn--size-large{--v-btn-size: 1rem;--v-btn-height: 44px;font-size:var(--v-btn-size);min-width:78px;padding:0 20px}.v-btn--size-x-large{--v-btn-size: 1.125rem;--v-btn-height: 52px;font-size:var(--v-btn-size);min-width:92px;padding:0 24px}.v-btn.v-btn--density-default{height:calc(var(--v-btn-height) + 0px)}.v-btn.v-btn--density-comfortable{height:calc(var(--v-btn-height) + -8px)}.v-btn.v-btn--density-compact{height:calc(var(--v-btn-height) + -12px)}.v-btn{border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:0}.v-btn--border{border-width:thin;box-shadow:none}.v-btn--absolute{position:absolute}.v-btn--fixed{position:fixed}.v-btn:hover>.v-btn__overlay{opacity:calc(var(--v-hover-opacity) * var(--v-theme-overlay-multiplier))}.v-btn:focus-visible>.v-btn__overlay{opacity:calc(var(--v-focus-opacity) * var(--v-theme-overlay-multiplier))}@supports not selector(:focus-visible){.v-btn:focus>.v-btn__overlay{opacity:calc(var(--v-focus-opacity) * var(--v-theme-overlay-multiplier))}}.v-btn--active>.v-btn__overlay,.v-btn[aria-haspopup=menu][aria-expanded=true]>.v-btn__overlay{opacity:calc(var(--v-activated-opacity) * var(--v-theme-overlay-multiplier))}.v-btn--active:hover>.v-btn__overlay,.v-btn[aria-haspopup=menu][aria-expanded=true]:hover>.v-btn__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-hover-opacity)) * var(--v-theme-overlay-multiplier))}.v-btn--active:focus-visible>.v-btn__overlay,.v-btn[aria-haspopup=menu][aria-expanded=true]:focus-visible>.v-btn__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier))}@supports not selector(:focus-visible){.v-btn--active:focus>.v-btn__overlay,.v-btn[aria-haspopup=menu][aria-expanded=true]:focus>.v-btn__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier))}}.v-btn--variant-plain,.v-btn--variant-outlined,.v-btn--variant-text,.v-btn--variant-tonal{background:transparent;color:inherit}.v-btn--variant-plain{opacity:.62}.v-btn--variant-plain:focus,.v-btn--variant-plain:hover{opacity:1}.v-btn--variant-plain .v-btn__overlay{display:none}.v-btn--variant-elevated,.v-btn--variant-flat{background:rgb(var(--v-theme-surface));color:rgba(var(--v-theme-on-surface),var(--v-high-emphasis-opacity))}.v-btn--variant-elevated{box-shadow:0 3px 1px -2px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 2px 2px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 5px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-btn--variant-flat{box-shadow:0 0 0 0 var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 0 0 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 0 0 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-btn--variant-outlined{border:thin solid currentColor}.v-btn--variant-text .v-btn__overlay{background:currentColor}.v-btn--variant-tonal .v-btn__underlay{background:currentColor;opacity:var(--v-activated-opacity);border-radius:inherit;top:0;right:0;bottom:0;left:0;pointer-events:none}.v-btn .v-btn__underlay{position:absolute}@supports selector(:focus-visible){.v-btn:after{pointer-events:none;border:2px solid currentColor;border-radius:inherit;opacity:0;transition:opacity .2s ease-in-out;content:"";position:absolute;top:0;left:0;width:100%;height:100%}.v-btn:focus-visible:after{opacity:calc(.25 * var(--v-theme-overlay-multiplier))}}.v-btn--icon{border-radius:50%;min-width:0;padding:0}.v-btn--icon.v-btn--size-default{--v-btn-size: 1rem}.v-btn--icon.v-btn--density-default{width:calc(var(--v-btn-height) + 12px);height:calc(var(--v-btn-height) + 12px)}.v-btn--icon.v-btn--density-comfortable{width:calc(var(--v-btn-height) + 0px);height:calc(var(--v-btn-height) + 0px)}.v-btn--icon.v-btn--density-compact{width:calc(var(--v-btn-height) + -8px);height:calc(var(--v-btn-height) + -8px)}.v-btn--elevated:hover,.v-btn--elevated:focus{box-shadow:0 2px 4px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 4px 5px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 10px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-btn--elevated:active{box-shadow:0 5px 5px -3px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 8px 10px 1px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 3px 14px 2px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-btn--flat{box-shadow:none}.v-btn--block{display:flex;flex:1 0 auto;min-width:100%}.v-btn--disabled{pointer-events:none;opacity:.26}.v-btn--disabled:hover{opacity:.26}.v-btn--disabled.v-btn--variant-elevated,.v-btn--disabled.v-btn--variant-flat{box-shadow:none;opacity:1;color:rgba(var(--v-theme-on-surface),.26);background:rgb(var(--v-theme-surface))}.v-btn--disabled.v-btn--variant-elevated .v-btn__overlay,.v-btn--disabled.v-btn--variant-flat .v-btn__overlay{opacity:.4615384615}.v-btn--loading{pointer-events:none}.v-btn--loading .v-btn__content,.v-btn--loading .v-btn__prepend,.v-btn--loading .v-btn__append{opacity:0}.v-btn--stacked{grid-template-areas:"prepend" "content" "append";grid-template-columns:auto;grid-template-rows:max-content max-content max-content;justify-items:center;align-content:center}.v-btn--stacked .v-btn__content{flex-direction:column;line-height:1.25}.v-btn--stacked .v-btn__prepend,.v-btn--stacked .v-btn__append,.v-btn--stacked .v-btn__content>.v-icon--start,.v-btn--stacked .v-btn__content>.v-icon--end{margin-inline:0}.v-btn--stacked .v-btn__prepend,.v-btn--stacked .v-btn__content>.v-icon--start{margin-bottom:4px}.v-btn--stacked .v-btn__append,.v-btn--stacked .v-btn__content>.v-icon--end{margin-top:4px}.v-btn--stacked.v-btn--size-x-small{--v-btn-size: .625rem;--v-btn-height: 56px;font-size:var(--v-btn-size);min-width:56px;padding:0 12px}.v-btn--stacked.v-btn--size-small{--v-btn-size: .75rem;--v-btn-height: 64px;font-size:var(--v-btn-size);min-width:64px;padding:0 14px}.v-btn--stacked.v-btn--size-default{--v-btn-size: .875rem;--v-btn-height: 72px;font-size:var(--v-btn-size);min-width:72px;padding:0 16px}.v-btn--stacked.v-btn--size-large{--v-btn-size: 1rem;--v-btn-height: 80px;font-size:var(--v-btn-size);min-width:80px;padding:0 18px}.v-btn--stacked.v-btn--size-x-large{--v-btn-size: 1.125rem;--v-btn-height: 88px;font-size:var(--v-btn-size);min-width:88px;padding:0 20px}.v-btn--stacked.v-btn--density-default{height:calc(var(--v-btn-height) + 0px)}.v-btn--stacked.v-btn--density-comfortable{height:calc(var(--v-btn-height) + -16px)}.v-btn--stacked.v-btn--density-compact{height:calc(var(--v-btn-height) + -24px)}.v-btn--slim{padding:0 8px}.v-btn--readonly{pointer-events:none}.v-btn--rounded{border-radius:24px}.v-btn--rounded.v-btn--icon{border-radius:4px}.v-btn .v-icon{--v-icon-size-multiplier: .8571428571}.v-btn--icon .v-icon{--v-icon-size-multiplier: 1}.v-btn--stacked .v-icon{--v-icon-size-multiplier: 1.1428571429}.v-btn--stacked.v-btn--block{min-width:100%}.v-btn__loader{align-items:center;display:flex;height:100%;justify-content:center;left:0;position:absolute;top:0;width:100%}.v-btn__loader>.v-progress-circular{width:1.5em;height:1.5em}.v-btn__content,.v-btn__prepend,.v-btn__append{align-items:center;display:flex;transition:transform,opacity .2s cubic-bezier(.4,0,.2,1)}.v-btn__prepend{grid-area:prepend;margin-inline:calc(var(--v-btn-height) / -9) calc(var(--v-btn-height) / 4.5)}.v-btn--slim .v-btn__prepend{margin-inline-start:0}.v-btn__append{grid-area:append;margin-inline:calc(var(--v-btn-height) / 4.5) calc(var(--v-btn-height) / -9)}.v-btn--slim .v-btn__append{margin-inline-end:0}.v-btn__content{grid-area:content;justify-content:center;white-space:nowrap}.v-btn__content>.v-icon--start{margin-inline:calc(var(--v-btn-height) / -9) calc(var(--v-btn-height) / 4.5)}.v-btn__content>.v-icon--end{margin-inline:calc(var(--v-btn-height) / 4.5) calc(var(--v-btn-height) / -9)}.v-btn--stacked .v-btn__content{white-space:normal}.v-btn__overlay{background-color:currentColor;border-radius:inherit;opacity:0;transition:opacity .2s ease-in-out}.v-btn__overlay,.v-btn__underlay{pointer-events:none;position:absolute;top:0;left:0;width:100%;height:100%}.v-pagination .v-btn{width:auto;padding-inline:5px}.v-pagination .v-btn.v-btn--density-default{min-width:calc(var(--v-btn-height) + 12px)}.v-pagination .v-btn.v-btn--density-comfortable{min-width:calc(var(--v-btn-height) + 0px)}.v-pagination .v-btn.v-btn--density-compact{min-width:calc(var(--v-btn-height) + -8px)}.v-pagination .v-btn{border-radius:4px}.v-pagination .v-btn--rounded{border-radius:50%}.v-pagination .v-btn__overlay{transition:none}.v-pagination__prev .v-btn,.v-pagination__next .v-btn{padding-inline:0}.v-pagination__prev .v-btn.v-btn--density-default,.v-pagination__next .v-btn.v-btn--density-default{width:calc(var(--v-btn-height) + 12px)}.v-pagination__prev .v-btn.v-btn--density-comfortable,.v-pagination__next .v-btn.v-btn--density-comfortable{width:calc(var(--v-btn-height) + 0px)}.v-pagination__prev .v-btn.v-btn--density-compact,.v-pagination__next .v-btn.v-btn--density-compact{width:calc(var(--v-btn-height) + -8px)}.v-pagination .v-pagination__item--is-active .v-btn__overlay{opacity:var(--v-border-opacity)}.v-btn-toggle>.v-btn.v-btn--active:not(.v-btn--disabled)>.v-btn__overlay{opacity:calc(var(--v-activated-opacity) * var(--v-theme-overlay-multiplier))}.v-btn-toggle>.v-btn.v-btn--active:not(.v-btn--disabled):hover>.v-btn__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-hover-opacity)) * var(--v-theme-overlay-multiplier))}.v-btn-toggle>.v-btn.v-btn--active:not(.v-btn--disabled):focus-visible>.v-btn__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier))}@supports not selector(:focus-visible){.v-btn-toggle>.v-btn.v-btn--active:not(.v-btn--disabled):focus>.v-btn__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier))}}.v-btn-toggle>.v-btn.v-btn--active:not(.v-btn--disabled).v-btn--variant-plain{opacity:1}.v-btn-group{display:inline-flex;flex-wrap:nowrap;max-width:100%;min-width:0;overflow-y:hidden;overflow-x:auto;vertical-align:middle;border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:0}.v-btn-group--border{border-width:thin;box-shadow:none}.v-btn-group{box-shadow:0 0 0 0 var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 0 0 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 0 0 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12));border-radius:4px;background:transparent;color:rgba(var(--v-theme-on-surface),var(--v-high-emphasis-opacity))}.v-btn-group--density-default.v-btn-group{height:48px}.v-btn-group--density-comfortable.v-btn-group{height:40px}.v-btn-group--density-compact.v-btn-group{height:36px}.v-btn-group .v-btn{border-radius:0;border-color:inherit}.v-btn-group--tile{border-radius:0}.v-btn-group--horizontal .v-btn:not(:last-child){border-inline-end:none}.v-btn-group--horizontal .v-btn:not(:first-child){border-inline-start:none}.v-btn-group--horizontal .v-btn:first-child{border-start-start-radius:inherit;border-end-start-radius:inherit}.v-btn-group--horizontal .v-btn:last-child{border-start-end-radius:inherit;border-end-end-radius:inherit}.v-btn-group--horizontal.v-btn-group--divided .v-btn:not(:last-child){border-inline-end-width:thin;border-inline-end-style:solid;border-inline-end-color:rgba(var(--v-border-color),var(--v-border-opacity))}.v-btn-group--vertical{flex-direction:column;height:auto!important}.v-btn-group--vertical .v-btn:not(:last-child){border-block-end:none}.v-btn-group--vertical .v-btn:not(:first-child){border-block-start:none}.v-btn-group--vertical .v-btn:first-child{border-start-start-radius:inherit;border-start-end-radius:inherit}.v-btn-group--vertical .v-btn:last-child{border-end-start-radius:inherit;border-end-end-radius:inherit}.v-btn-group--vertical.v-btn-group--divided .v-btn:not(:last-child){border-block-end-width:thin;border-block-end-style:solid;border-block-end-color:rgba(var(--v-border-color),var(--v-border-opacity))}.v-icon{--v-icon-size-multiplier: 1;align-items:center;display:inline-flex;font-feature-settings:"liga";height:1em;justify-content:center;letter-spacing:normal;line-height:1;position:relative;opacity:var(--v-icon-opacity, 1);text-indent:0;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;width:1em;min-width:1em}.v-icon--clickable{cursor:pointer}.v-icon--disabled{pointer-events:none;opacity:.38}.v-icon--size-x-small{font-size:calc(var(--v-icon-size-multiplier) * 1em)}.v-icon--size-small{font-size:calc(var(--v-icon-size-multiplier) * 1.25em)}.v-icon--size-default{font-size:calc(var(--v-icon-size-multiplier) * 1.5em)}.v-icon--size-large{font-size:calc(var(--v-icon-size-multiplier) * 1.75em)}.v-icon--size-x-large{font-size:calc(var(--v-icon-size-multiplier) * 2em)}.v-icon__svg{fill:currentColor;width:100%;height:100%}.v-icon--start{margin-inline-end:8px}.v-icon--end{margin-inline-start:8px}.v-progress-circular{align-items:center;display:inline-flex;justify-content:center;position:relative;vertical-align:middle}.v-progress-circular>svg{width:100%;height:100%;margin:auto;position:absolute;top:0;bottom:0;left:0;right:0;z-index:0}.v-progress-circular__content{align-items:center;display:flex;justify-content:center}.v-progress-circular__underlay{color:rgba(var(--v-border-color),var(--v-border-opacity));stroke:currentColor;z-index:1}.v-progress-circular__overlay{stroke:currentColor;transition:all .2s ease-in-out,stroke-width 0s;z-index:2}.v-progress-circular--size-x-small{height:16px;width:16px}.v-progress-circular--size-small{height:24px;width:24px}.v-progress-circular--size-default{height:32px;width:32px}.v-progress-circular--size-large{height:48px;width:48px}.v-progress-circular--size-x-large{height:64px;width:64px}.v-progress-circular--indeterminate>svg{animation:progress-circular-rotate 1.4s linear infinite;transform-origin:center center;transition:all .2s ease-in-out}.v-progress-circular--indeterminate .v-progress-circular__overlay{animation:progress-circular-dash 1.4s ease-in-out infinite,progress-circular-rotate 1.4s linear infinite;stroke-dasharray:25,200;stroke-dashoffset:0;stroke-linecap:round;transform-origin:center center;transform:rotate(-90deg)}.v-progress-circular--disable-shrink>svg{animation-duration:.7s}.v-progress-circular--disable-shrink .v-progress-circular__overlay{animation:none}.v-progress-circular--indeterminate:not(.v-progress-circular--visible)>svg,.v-progress-circular--indeterminate:not(.v-progress-circular--visible) .v-progress-circular__overlay{animation-play-state:paused!important}@keyframes progress-circular-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0px}50%{stroke-dasharray:100,200;stroke-dashoffset:-15px}to{stroke-dasharray:100,200;stroke-dashoffset:-124px}}@keyframes progress-circular-rotate{to{transform:rotate(270deg)}}.v-progress-linear{background:transparent;overflow:hidden;position:relative;transition:.2s cubic-bezier(.4,0,.2,1);width:100%}@media (forced-colors: active){.v-progress-linear{border:thin solid buttontext}}.v-progress-linear__background,.v-progress-linear__buffer{background:currentColor;bottom:0;left:0;opacity:var(--v-border-opacity);position:absolute;top:0;width:100%;transition-property:width,left,right;transition:inherit}@media (forced-colors: active){.v-progress-linear__buffer{background-color:highlight;opacity:.3}}.v-progress-linear__content{align-items:center;display:flex;height:100%;justify-content:center;left:0;position:absolute;top:0;width:100%}.v-progress-linear--clickable .v-progress-linear__content{pointer-events:none}.v-progress-linear__determinate,.v-progress-linear__indeterminate{background:currentColor}@media (forced-colors: active){.v-progress-linear__determinate,.v-progress-linear__indeterminate{background-color:highlight}}.v-progress-linear__determinate{height:inherit;left:0;position:absolute;transition:inherit;transition-property:width,left,right}.v-progress-linear__indeterminate .long,.v-progress-linear__indeterminate .short{animation-play-state:paused;animation-duration:2.2s;animation-iteration-count:infinite;bottom:0;height:inherit;left:0;position:absolute;right:auto;top:0;width:auto}.v-progress-linear__indeterminate .long{animation-name:indeterminate-ltr}.v-progress-linear__indeterminate .short{animation-name:indeterminate-short-ltr}.v-progress-linear__stream{animation:stream .25s infinite linear;animation-play-state:paused;bottom:0;left:auto;opacity:.3;pointer-events:none;position:absolute;transition:inherit;transition-property:width,left,right}.v-progress-linear--reverse .v-progress-linear__background,.v-progress-linear--reverse .v-progress-linear__determinate,.v-progress-linear--reverse .v-progress-linear__content,.v-progress-linear--reverse .v-progress-linear__indeterminate .long,.v-progress-linear--reverse .v-progress-linear__indeterminate .short{left:auto;right:0}.v-progress-linear--reverse .v-progress-linear__indeterminate .long{animation-name:indeterminate-rtl}.v-progress-linear--reverse .v-progress-linear__indeterminate .short{animation-name:indeterminate-short-rtl}.v-progress-linear--reverse .v-progress-linear__stream{right:auto}.v-progress-linear--absolute,.v-progress-linear--fixed{left:0;z-index:1}.v-progress-linear--absolute{position:absolute}.v-progress-linear--fixed{position:fixed}.v-progress-linear--rounded{border-radius:9999px}.v-progress-linear--rounded.v-progress-linear--rounded-bar .v-progress-linear__determinate,.v-progress-linear--rounded.v-progress-linear--rounded-bar .v-progress-linear__indeterminate{border-radius:inherit}.v-progress-linear--striped .v-progress-linear__determinate{animation:progress-linear-stripes 1s infinite linear;background-image:linear-gradient(135deg,hsla(0,0%,100%,.25) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.25) 0,hsla(0,0%,100%,.25) 75%,transparent 0,transparent);background-repeat:repeat;background-size:var(--v-progress-linear-height)}.v-progress-linear--active .v-progress-linear__indeterminate .long,.v-progress-linear--active .v-progress-linear__indeterminate .short,.v-progress-linear--active .v-progress-linear__stream{animation-play-state:running}.v-progress-linear--rounded-bar .v-progress-linear__determinate,.v-progress-linear--rounded-bar .v-progress-linear__indeterminate,.v-progress-linear--rounded-bar .v-progress-linear__stream+.v-progress-linear__background{border-radius:9999px}.v-progress-linear--rounded-bar .v-progress-linear__determinate{border-start-start-radius:0;border-end-start-radius:0}@keyframes indeterminate-ltr{0%{left:-90%;right:100%}60%{left:-90%;right:100%}to{left:100%;right:-35%}}@keyframes indeterminate-rtl{0%{left:100%;right:-90%}60%{left:100%;right:-90%}to{left:-35%;right:100%}}@keyframes indeterminate-short-ltr{0%{left:-200%;right:100%}60%{left:107%;right:-8%}to{left:107%;right:-8%}}@keyframes indeterminate-short-rtl{0%{left:100%;right:-200%}60%{left:-8%;right:107%}to{left:-8%;right:107%}}@keyframes stream{to{transform:translate(var(--v-progress-linear-stream-to))}}@keyframes progress-linear-stripes{0%{background-position-x:var(--v-progress-linear-height)}}.v-ripple__container{color:inherit;border-radius:inherit;position:absolute;width:100%;height:100%;left:0;top:0;overflow:hidden;z-index:0;pointer-events:none;contain:strict}.v-ripple__animation{color:inherit;position:absolute;top:0;left:0;border-radius:50%;background:currentColor;opacity:0;pointer-events:none;overflow:hidden;will-change:transform,opacity}.v-ripple__animation--enter{transition:none;opacity:0}.v-ripple__animation--in{transition:transform .25s cubic-bezier(0,0,.2,1),opacity .1s cubic-bezier(0,0,.2,1);opacity:calc(.25 * var(--v-theme-overlay-multiplier))}.v-ripple__animation--out{transition:opacity .3s cubic-bezier(0,0,.2,1);opacity:0}.v-snackbar{justify-content:center;z-index:10000;margin:8px;margin-inline-end:calc(8px + var(--v-scrollbar-offset));padding:var(--v-layout-top) var(--v-layout-right) var(--v-layout-bottom) var(--v-layout-left)}.v-snackbar:not(.v-snackbar--center):not(.v-snackbar--top){align-items:flex-end}.v-snackbar__wrapper{align-items:center;display:flex;max-width:672px;min-height:48px;min-width:344px;overflow:hidden;padding:0;border-radius:4px}.v-snackbar--variant-plain,.v-snackbar--variant-outlined,.v-snackbar--variant-text,.v-snackbar--variant-tonal{background:transparent;color:inherit}.v-snackbar--variant-plain{opacity:.62}.v-snackbar--variant-plain:focus,.v-snackbar--variant-plain:hover{opacity:1}.v-snackbar--variant-plain .v-snackbar__overlay{display:none}.v-snackbar--variant-elevated,.v-snackbar--variant-flat{background:rgb(var(--v-theme-surface-variant));color:rgb(var(--v-theme-on-surface-variant))}.v-snackbar--variant-elevated{box-shadow:0 3px 5px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 6px 10px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 18px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-snackbar--variant-flat{box-shadow:0 0 0 0 var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 0 0 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 0 0 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-snackbar--variant-outlined{border:thin solid currentColor}.v-snackbar--variant-text .v-snackbar__overlay{background:currentColor}.v-snackbar--variant-tonal .v-snackbar__underlay{background:currentColor;opacity:var(--v-activated-opacity);border-radius:inherit;top:0;right:0;bottom:0;left:0;pointer-events:none}.v-snackbar .v-snackbar__underlay{position:absolute}.v-snackbar__content{flex-grow:1;font-size:.875rem;font-weight:400;letter-spacing:.0178571429em;line-height:1.425;margin-right:auto;padding:14px 16px;text-align:initial}.v-snackbar__actions{align-items:center;align-self:center;display:flex;margin-inline-end:8px}.v-snackbar__actions>.v-btn{padding:0 8px;min-width:auto}.v-snackbar__timer{width:100%;position:absolute;top:0}.v-snackbar__timer .v-progress-linear{transition:.2s linear}.v-snackbar--absolute{position:absolute;z-index:1}.v-snackbar--multi-line .v-snackbar__wrapper{min-height:68px}.v-snackbar--vertical .v-snackbar__wrapper{flex-direction:column}.v-snackbar--vertical .v-snackbar__wrapper .v-snackbar__actions{align-self:flex-end;margin-bottom:8px}.v-snackbar--center{align-items:center;justify-content:center}.v-snackbar--top{align-items:flex-start}.v-snackbar--bottom{align-items:flex-end}.v-snackbar--left,.v-snackbar--start{justify-content:flex-start}.v-snackbar--right,.v-snackbar--end{justify-content:flex-end}.v-snackbar-transition-enter-active,.v-snackbar-transition-leave-active{transition-duration:.15s;transition-timing-function:cubic-bezier(0,0,.2,1)}.v-snackbar-transition-enter-active{transition-property:opacity,transform}.v-snackbar-transition-enter-from{opacity:0;transform:scale(.8)}.v-snackbar-transition-leave-active{transition-property:opacity}.v-snackbar-transition-leave-to{opacity:0}.v-overlay-container{contain:layout;left:0;pointer-events:none;position:absolute;top:0;display:contents}.v-overlay-scroll-blocked{padding-inline-end:var(--v-scrollbar-offset)}.v-overlay-scroll-blocked:not(html){overflow-y:hidden!important}html.v-overlay-scroll-blocked{position:fixed;top:var(--v-body-scroll-y);left:var(--v-body-scroll-x);width:100%;height:100%}.v-overlay{--v-overlay-opacity: .32;border-radius:inherit;display:flex;left:0;pointer-events:none;position:fixed;top:0;bottom:0;right:0}.v-overlay__content{outline:none;position:absolute;pointer-events:auto;contain:layout}.v-overlay__scrim{pointer-events:auto;background:#000;border-radius:inherit;bottom:0;left:0;opacity:var(--v-overlay-opacity);position:fixed;right:0;top:0}.v-overlay--absolute,.v-overlay--contained .v-overlay__scrim{position:absolute}.v-overlay--scroll-blocked{padding-inline-end:var(--v-scrollbar-offset)}.v-main[data-v-a961ccf3]{min-height:100vh}.v-application{display:flex;background:rgb(var(--v-theme-background));color:rgba(var(--v-theme-on-background),var(--v-high-emphasis-opacity))}.v-application__wrap{backface-visibility:hidden;display:flex;flex-direction:column;flex:1 1 auto;max-width:100%;min-height:100vh;min-height:100dvh;position:relative}.v-main{flex:1 0 auto;max-width:100%;transition:.2s cubic-bezier(.4,0,.2,1);padding-left:var(--v-layout-left);padding-right:var(--v-layout-right);padding-top:var(--v-layout-top);padding-bottom:var(--v-layout-bottom)}.v-main__scroller{max-width:100%;position:relative}.v-main--scrollable{display:flex;position:absolute;top:0;left:0;width:100%;height:100%}.v-main--scrollable>.v-main__scroller{flex:1 1 auto;overflow-y:auto;--v-layout-left: 0px;--v-layout-right: 0px;--v-layout-top: 0px;--v-layout-bottom: 0px} diff --git a/frontend/dist/assets/locations-IQR_pcEX.js b/frontend/dist/assets/locations-ElrWcwNd.js similarity index 84% rename from frontend/dist/assets/locations-IQR_pcEX.js rename to frontend/dist/assets/locations-ElrWcwNd.js index 1e1c8197..d5b2d9e7 100644 --- a/frontend/dist/assets/locations-IQR_pcEX.js +++ b/frontend/dist/assets/locations-ElrWcwNd.js @@ -1 +1 @@ -import{bj as oe,r as d,c as i,aO as se}from"./index-BUdRbiwj.js";const y=new oe;function ce(){const l=d({content:[],totalElements:0,totalPages:0,currentPage:0,pageSize:10}),f=d(null),c=d(!1),o=d(null),u=d({page:0,size:10,direction:"ASC",sortBy:"name",searchValue:"",searchFields:["name","description","address"]}),S=d([]),g=i(()=>l.value.content.length>0),P=i(()=>l.value.totalElements),m=i(()=>l.value.currentPage),z=i(()=>l.value.totalPages),L=async(a={})=>{c.value=!0,o.value=null;try{const n={...u.value,...a},r=await y.searchLocations(n);return l.value=r,r}catch(n){throw o.value=n.message,n}finally{c.value=!1}};return{locations:l,selectedLocation:f,loading:c,error:o,searchCriteria:u,miniLocations:S,hasLocations:g,totalLocations:P,currentPage:m,totalPages:z,searchLocations:L,refreshLocations:async()=>await L(),loadMiniLocations:async()=>{c.value=!0,o.value=null;try{const a=await y.getLocationsMini();return S.value=a,a}catch(a){throw o.value=a.message,a}finally{c.value=!1}},getLocationById:async a=>{c.value=!0,o.value=null;try{const n=await y.getById(a);return f.value=n,n}catch(n){throw o.value=n.message,n}finally{c.value=!1}},createLocation:async a=>{c.value=!0,o.value=null;try{return await y.create(a)}catch(n){throw o.value=n.message,n}finally{c.value=!1}},updateLocation:async(a,n)=>{c.value=!0,o.value=null;try{return await y.update(a,n)}catch(r){throw o.value=r.message,r}finally{c.value=!1}},deleteLocation:async a=>{c.value=!0,o.value=null;try{return await y.delete(a)}catch(n){throw o.value=n.message,n}finally{c.value=!1}},getChildLocations:async a=>{c.value=!0,o.value=null;try{return await y.getChildren(a)}catch(n){throw o.value=n.message,n}finally{c.value=!1}},selectLocation:a=>{f.value=a},clearSelectedLocation:()=>{f.value=null},updateSearchTerm:async a=>(u.value.searchValue=a,u.value.page=0,await L()),changePage:async a=>(u.value.page=a,await L()),changePageSize:async a=>(u.value.size=a,u.value.page=0,await L()),changeSorting:async(a,n)=>(u.value.sortBy=a,u.value.direction=n,u.value.page=0,await L()),validateLocation:a=>(o.value=null,!a.name||a.name.trim().length===0?(o.value="Location name is required",!1):!0),formatLocationName:a=>{if(!a)return"";const n=a.name||"",r=a.address&&a.address.trim()?a.address:"";return r?`${n} (${r})`:n},getLocationDisplayName:a=>{if(!a)return"";const n=[];let r=a;for(;r;)n.unshift(r.name),r=r.parentLocation;return n.join(" > ")},clearError:()=>{o.value=null}}}const re=se("locations",()=>{const{locations:l,selectedLocation:f,loading:c,error:o,searchCriteria:u,miniLocations:S,searchLocations:g,loadMiniLocations:P,refreshLocations:m,updateSearchTerm:z,changePage:L,changePageSize:I,changeSorting:j,getLocationById:E,createLocation:B,updateLocation:F,deleteLocation:N,getChildLocations:R,selectLocation:C,clearSelectedLocation:w,validateLocation:H,formatLocationName:V,getLocationDisplayName:D,clearError:x}=ce(),h=d([]),v=d({type:"",status:"all",searchTerm:""}),p=d(!1),M=d("create"),a=d({}),n=i(()=>l.value.content.filter(e=>e.status!=="inactive")),r=i(()=>l.value.content.filter(e=>e.status==="inactive")),b=i(()=>{const e={};return l.value.content.forEach(t=>{const s=t.type||"General";e[s]||(e[s]=[]),e[s].push(t)}),e}),W=i(()=>{let e=l.value.content;if(v.value.type&&(e=e.filter(t=>t.type===v.value.type)),v.value.status==="active"?e=e.filter(t=>t.status!=="inactive"):v.value.status==="inactive"&&(e=e.filter(t=>t.status==="inactive")),v.value.searchTerm){const t=v.value.searchTerm.toLowerCase();e=e.filter(s=>{var T,G,K;return((T=s.name)==null?void 0:T.toLowerCase().includes(t))||((G=s.description)==null?void 0:G.toLowerCase().includes(t))||((K=s.address)==null?void 0:K.toLowerCase().includes(t))})}return e}),J=i(()=>({total:l.value.totalElements,active:n.value.length,inactive:r.value.length,byType:Object.keys(b.value).reduce((e,t)=>(e[t]=b.value[t].length,e),{})})),O=async()=>{try{await Promise.all([g(),P()])}catch(e){console.error("Failed to initialize locations:",e)}},$=async(e={})=>{const t={...e,searchValue:v.value.searchTerm};return await g(t)},Q=async e=>(v.value={...v.value,...e},await $()),U=async e=>{const t=await B(e);return await m(),t},X=async(e,t)=>{const s=await F(e,t);return await A(s),s},Y=async e=>{const t=await N(e);return await m(),t},Z=(e=null,t="create")=>{e?(C(e),M.value=t):(w(),M.value="create"),p.value=!0},_=()=>{p.value=!1,w()},A=e=>{if(!e)return;const t=h.value.findIndex(s=>s.id===e.id);t!==-1&&h.value.splice(t,1),h.value.unshift(e),h.value.length>10&&(h.value=h.value.slice(0,10))},ee=async e=>{const t=l.value.content.find(T=>T.id===e);if(t)return C(t),t;const s=await E(e);return await A(s),s},k=async e=>{const t=await R(e);a.value[e]=t;for(const s of t)s.hasChildren&&await k(s.id);return t},q=()=>{v.value={type:"",status:"all",searchTerm:""}},ae=()=>{q(),w(),x(),p.value=!1,h.value=[],a.value={}},te=async()=>await O(),ne=i(()=>l.value.totalElements||0);return{locations:l,selectedLocation:f,loading:c,error:o,searchCriteria:u,miniLocations:S,recentLocations:i(()=>h.value),locationFilters:i(()=>v.value),showLocationModal:i(()=>p.value),locationModalMode:i(()=>M.value),locationHierarchy:i(()=>a.value),activeLocations:n,inactiveLocations:r,locationsByType:b,filteredLocations:W,locationStats:J,initializeLocations:O,searchWithFilters:$,updateFilters:Q,createLocationAndRefresh:U,updateLocationAndRefresh:X,deleteLocationAndRefresh:Y,openLocationModal:Z,closeLocationModal:_,addToRecentLocations:A,getLocation:ee,buildLocationHierarchy:k,clearFilters:q,resetStore:ae,searchLocations:g,loadMiniLocations:P,refreshLocations:m,updateSearchTerm:z,changePage:L,changePageSize:I,changeSorting:j,getLocationById:E,createLocation:B,updateLocation:F,deleteLocation:N,getChildLocations:R,selectLocation:C,clearSelectedLocation:w,validateLocation:H,formatLocationName:V,getLocationDisplayName:D,clearError:x,loadLocations:te,locationCount:ne}}),ie=re;export{re as a,ie as u}; +import{bj as oe,r as d,c as i,aP as se}from"./index-QAlcqU00.js";const y=new oe;function ce(){const l=d({content:[],totalElements:0,totalPages:0,currentPage:0,pageSize:10}),f=d(null),c=d(!1),o=d(null),u=d({page:0,size:10,direction:"ASC",sortBy:"name",searchValue:"",searchFields:["name","description","address"]}),S=d([]),g=i(()=>l.value.content.length>0),P=i(()=>l.value.totalElements),m=i(()=>l.value.currentPage),z=i(()=>l.value.totalPages),L=async(a={})=>{c.value=!0,o.value=null;try{const n={...u.value,...a},r=await y.searchLocations(n);return l.value=r,r}catch(n){throw o.value=n.message,n}finally{c.value=!1}};return{locations:l,selectedLocation:f,loading:c,error:o,searchCriteria:u,miniLocations:S,hasLocations:g,totalLocations:P,currentPage:m,totalPages:z,searchLocations:L,refreshLocations:async()=>await L(),loadMiniLocations:async()=>{c.value=!0,o.value=null;try{const a=await y.getLocationsMini();return S.value=a,a}catch(a){throw o.value=a.message,a}finally{c.value=!1}},getLocationById:async a=>{c.value=!0,o.value=null;try{const n=await y.getById(a);return f.value=n,n}catch(n){throw o.value=n.message,n}finally{c.value=!1}},createLocation:async a=>{c.value=!0,o.value=null;try{return await y.create(a)}catch(n){throw o.value=n.message,n}finally{c.value=!1}},updateLocation:async(a,n)=>{c.value=!0,o.value=null;try{return await y.update(a,n)}catch(r){throw o.value=r.message,r}finally{c.value=!1}},deleteLocation:async a=>{c.value=!0,o.value=null;try{return await y.delete(a)}catch(n){throw o.value=n.message,n}finally{c.value=!1}},getChildLocations:async a=>{c.value=!0,o.value=null;try{return await y.getChildren(a)}catch(n){throw o.value=n.message,n}finally{c.value=!1}},selectLocation:a=>{f.value=a},clearSelectedLocation:()=>{f.value=null},updateSearchTerm:async a=>(u.value.searchValue=a,u.value.page=0,await L()),changePage:async a=>(u.value.page=a,await L()),changePageSize:async a=>(u.value.size=a,u.value.page=0,await L()),changeSorting:async(a,n)=>(u.value.sortBy=a,u.value.direction=n,u.value.page=0,await L()),validateLocation:a=>(o.value=null,!a.name||a.name.trim().length===0?(o.value="Location name is required",!1):!0),formatLocationName:a=>{if(!a)return"";const n=a.name||"",r=a.address&&a.address.trim()?a.address:"";return r?`${n} (${r})`:n},getLocationDisplayName:a=>{if(!a)return"";const n=[];let r=a;for(;r;)n.unshift(r.name),r=r.parentLocation;return n.join(" > ")},clearError:()=>{o.value=null}}}const re=se("locations",()=>{const{locations:l,selectedLocation:f,loading:c,error:o,searchCriteria:u,miniLocations:S,searchLocations:g,loadMiniLocations:P,refreshLocations:m,updateSearchTerm:z,changePage:L,changePageSize:I,changeSorting:j,getLocationById:E,createLocation:B,updateLocation:F,deleteLocation:N,getChildLocations:R,selectLocation:C,clearSelectedLocation:w,validateLocation:H,formatLocationName:V,getLocationDisplayName:D,clearError:x}=ce(),h=d([]),v=d({type:"",status:"all",searchTerm:""}),p=d(!1),M=d("create"),a=d({}),n=i(()=>l.value.content.filter(e=>e.status!=="inactive")),r=i(()=>l.value.content.filter(e=>e.status==="inactive")),b=i(()=>{const e={};return l.value.content.forEach(t=>{const s=t.type||"General";e[s]||(e[s]=[]),e[s].push(t)}),e}),W=i(()=>{let e=l.value.content;if(v.value.type&&(e=e.filter(t=>t.type===v.value.type)),v.value.status==="active"?e=e.filter(t=>t.status!=="inactive"):v.value.status==="inactive"&&(e=e.filter(t=>t.status==="inactive")),v.value.searchTerm){const t=v.value.searchTerm.toLowerCase();e=e.filter(s=>{var T,K,O;return((T=s.name)==null?void 0:T.toLowerCase().includes(t))||((K=s.description)==null?void 0:K.toLowerCase().includes(t))||((O=s.address)==null?void 0:O.toLowerCase().includes(t))})}return e}),J=i(()=>({total:l.value.totalElements,active:n.value.length,inactive:r.value.length,byType:Object.keys(b.value).reduce((e,t)=>(e[t]=b.value[t].length,e),{})})),$=async()=>{try{await Promise.all([g(),P()])}catch(e){console.error("Failed to initialize locations:",e)}},k=async(e={})=>{const t={...e,searchValue:v.value.searchTerm};return await g(t)},Q=async e=>(v.value={...v.value,...e},await k()),U=async e=>{const t=await B(e);return await m(),t},X=async(e,t)=>{const s=await F(e,t);return await A(s),s},Y=async e=>{const t=await N(e);return await m(),t},Z=(e=null,t="create")=>{e?(C(e),M.value=t):(w(),M.value="create"),p.value=!0},_=()=>{p.value=!1,w()},A=e=>{if(!e)return;const t=h.value.findIndex(s=>s.id===e.id);t!==-1&&h.value.splice(t,1),h.value.unshift(e),h.value.length>10&&(h.value=h.value.slice(0,10))},ee=async e=>{const t=l.value.content.find(T=>T.id===e);if(t)return C(t),t;const s=await E(e);return await A(s),s},q=async e=>{const t=await R(e);a.value[e]=t;for(const s of t)s.hasChildren&&await q(s.id);return t},G=()=>{v.value={type:"",status:"all",searchTerm:""}},ae=()=>{G(),w(),x(),p.value=!1,h.value=[],a.value={}},te=async()=>await $(),ne=i(()=>l.value.totalElements||0);return{locations:l,selectedLocation:f,loading:c,error:o,searchCriteria:u,miniLocations:S,recentLocations:i(()=>h.value),locationFilters:i(()=>v.value),showLocationModal:i(()=>p.value),locationModalMode:i(()=>M.value),locationHierarchy:i(()=>a.value),activeLocations:n,inactiveLocations:r,locationsByType:b,filteredLocations:W,locationStats:J,initializeLocations:$,searchWithFilters:k,updateFilters:Q,createLocationAndRefresh:U,updateLocationAndRefresh:X,deleteLocationAndRefresh:Y,openLocationModal:Z,closeLocationModal:_,addToRecentLocations:A,getLocation:ee,buildLocationHierarchy:q,clearFilters:G,resetStore:ae,searchLocations:g,loadMiniLocations:P,refreshLocations:m,updateSearchTerm:z,changePage:L,changePageSize:I,changeSorting:j,getLocationById:E,createLocation:B,updateLocation:F,deleteLocation:N,getChildLocations:R,selectLocation:C,clearSelectedLocation:w,validateLocation:H,formatLocationName:V,getLocationDisplayName:D,clearError:x,loadLocations:te,locationCount:ne}}),ie=re;export{re as a,ie as u}; diff --git a/frontend/dist/assets/parts-B3aeW8xP.js b/frontend/dist/assets/parts-imZSnlsl.js similarity index 99% rename from frontend/dist/assets/parts-B3aeW8xP.js rename to frontend/dist/assets/parts-imZSnlsl.js index 53f11d7e..1865c4b5 100644 --- a/frontend/dist/assets/parts-B3aeW8xP.js +++ b/frontend/dist/assets/parts-imZSnlsl.js @@ -1 +1 @@ -import{bc as h,aO as u,be as y}from"./index-BUdRbiwj.js";class g extends h{constructor(){super("/inventory")}async getStockAlerts(t={}){return this.get("/alerts",{params:t})}async createStockAlert(t){return this.post("/alerts",t)}async acknowledgeAlert(t,r){return this.post(`/alerts/${t}/acknowledge`,r)}async resolveAlert(t,r){return this.post(`/alerts/${t}/resolve`,r)}async getAlertStatistics(t={}){return this.get("/alerts/statistics",{params:t})}async getStockAdjustments(t={}){return this.get("/adjustments",{params:t})}async createStockAdjustment(t){return this.post("/adjustments",t)}async approveStockAdjustment(t,r){return this.post(`/adjustments/${t}/approve`,r)}async getAdjustmentHistory(t,r={}){return this.get(`/adjustments/part/${t}/history`,{params:r})}async getInventoryTransfers(t={}){return this.get("/transfers",{params:t})}async getTransferById(t){return this.get(`/transfers/${t}`)}async createInventoryTransfer(t){return this.post("/transfers",t)}async updateTransfer(t,r){return this.put(`/transfers/${t}`,r)}async approveTransfer(t,r){return this.post(`/transfers/${t}/approve`,r)}async cancelTransfer(t,r){return this.post(`/transfers/${t}/cancel`,{reason:r})}async shipTransfer(t,r){return this.post(`/transfers/${t}/ship`,r)}async receiveTransfer(t,r){return this.post(`/transfers/${t}/receive`,r)}async getReorderPointConfigs(t={}){return this.get("/reorder-points",{params:t})}async createReorderPointConfig(t){return this.post("/reorder-points",t)}async updateReorderPointConfig(t,r){return this.put(`/reorder-points/${t}`,r)}async deleteReorderPointConfig(t){return this.delete(`/reorder-points/${t}`)}async calculateReorderPoints(t){return this.post("/reorder-points/calculate",t)}async getStockLevelsByLocation(t,r={}){return this.get(`/stock-levels/location/${t}`,{params:r})}async getStockLevelsByPart(t,r={}){return this.get(`/stock-levels/part/${t}`,{params:r})}async updateStockLevel(t,r,s){return this.put(`/stock-levels/part/${t}/location/${r}`,s)}async getStockMovementHistory(t,r={}){return this.get(`/stock-levels/part/${t}/movements`,{params:r})}async getInventoryValuation(t={}){return this.get("/valuation",{params:t})}async updatePartCosting(t,r){return this.put(`/valuation/part/${t}/costing`,r)}async recalculateInventoryCosts(t){return this.post("/valuation/recalculate",t)}async getStockReconciliations(t={}){return this.get("/reconciliation",{params:t})}async getReconciliationById(t){return this.get(`/reconciliation/${t}`)}async createStockReconciliation(t){return this.post("/reconciliation",t)}async startReconciliation(t){return this.post(`/reconciliation/${t}/start`,{})}async completeReconciliation(t,r){return this.post(`/reconciliation/${t}/complete`,r)}async recordReconciliationDiscrepancy(t,r){return this.post(`/reconciliation/${t}/discrepancies`,r)}async getInventoryAnalytics(t={}){return this.get("/analytics",{params:t})}async getABCAnalysis(t={}){return this.get("/analytics/abc",{params:t})}async getUsageForecast(t,r={}){return this.get(`/analytics/forecast/part/${t}`,{params:r})}async getInventoryTurnover(t={}){return this.get("/analytics/turnover",{params:t})}async generateInventoryReport(t,r={}){return this.post(`/reports/${t}`,r)}async exportInventoryData(t){return this.request("/export","POST",t,{responseType:"blob"})}}let i=new y,a=new g;const f=u("parts",{state:()=>({parts:[],currentPart:null,loading:!1,error:null,initialized:!1,totalElements:0,totalPages:0,searchCriteria:{page:0,size:10,sortBy:"name",direction:"ASC",search:"",filters:{}},stockAlerts:[],stockAdjustments:[],inventoryTransfers:[],reorderPointConfigs:[],inventoryAnalytics:{}}),getters:{getPartById:e=>t=>e.parts.find(r=>r.id===t),filteredParts:e=>{let t=[...e.parts];if(e.searchCriteria.search){const r=e.searchCriteria.search.toLowerCase();t=t.filter(s=>{var n,o,l,c;return((n=s.name)==null?void 0:n.toLowerCase().includes(r))||((o=s.partNumber)==null?void 0:o.toLowerCase().includes(r))||((l=s.manufacturer)==null?void 0:l.toLowerCase().includes(r))||((c=s.description)==null?void 0:c.toLowerCase().includes(r))})}return t},inventoryStats:e=>{const t={totalParts:e.parts.length,totalValue:0,lowStock:0,categories:{}};return e.parts.forEach(r=>{const s=(r.currentStock||0)*(r.unitCost||0);t.totalValue+=s,(r.currentStock||0)<(r.minStock||0)&&t.lowStock++;const n=r.category||"UNKNOWN";t.categories[n]=(t.categories[n]||0)+1}),t},lowStockParts:e=>e.parts.filter(t=>(t.currentStock||0)<(t.minStock||0)),getPartsByCategory:e=>t=>e.parts.filter(r=>r.category===t),getPartsByLocation:e=>t=>e.parts.filter(r=>r.location===t),unresolvedAlerts:e=>e.stockAlerts.filter(t=>!t.resolved),criticalAlerts:e=>e.stockAlerts.filter(t=>t.severity==="critical"),getAdjustmentsByReason:e=>t=>e.stockAdjustments.filter(r=>r.reason===t),totalStockValue:e=>e.parts.reduce((t,r)=>t+(r.currentStock||0)*(r.unitCost||0),0),partsNeedingReorder:e=>e.parts.filter(t=>t.currentStock<=(t.reorderPoint||0)&&t.reorderPoint>0),pendingTransfers:e=>e.inventoryTransfers.filter(t=>t.status==="pending"),transferStats:e=>{const t=e.inventoryTransfers;return{total:t.length,pending:t.filter(r=>r.status==="pending").length,approved:t.filter(r=>r.status==="approved").length,completed:t.filter(r=>r.status==="completed").length,cancelled:t.filter(r=>r.status==="cancelled").length}}},actions:{async createPart(e){this.loading=!0,this.error=null;try{const t=await i.create(e);return this.parts.push(t),this.currentPart=t,t}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async updatePart(e,t){var r;this.loading=!0,this.error=null;try{const s=await i.update(e,t),n=this.parts.findIndex(o=>o.id===e);return n!==-1&&(this.parts[n]=s),((r=this.currentPart)==null?void 0:r.id)===e&&(this.currentPart=s),s}catch(s){throw this.error=s.message,s}finally{this.loading=!1}},async deletePart(e){var t;this.loading=!0,this.error=null;try{await i.delete(e);const r=this.parts.findIndex(s=>s.id===e);r!==-1&&this.parts.splice(r,1),((t=this.currentPart)==null?void 0:t.id)===e&&(this.currentPart=null)}catch(r){throw this.error=r.message,r}finally{this.loading=!1}},async fetchPartById(e){this.loading=!0,this.error=null;try{const t=await i.getById(e);return this.currentPart=t,t}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async fetchParts(e=null){this.loading=!0,this.error=null;try{const t=e||this.searchCriteria,r=await i.search(t);this.parts=r.content||r,this.totalElements=r.totalElements||this.parts.length,this.totalPages=r.totalPages||1}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async updateSearchTerm(e){this.searchCriteria.search=e,this.searchCriteria.page=0,await this.fetchParts()},async updateFilters(e){this.searchCriteria.filters={...this.searchCriteria.filters,...e},this.searchCriteria.page=0,await this.fetchParts()},async changePage(e){this.searchCriteria.page=e,await this.fetchParts()},async changeSorting(e,t){this.searchCriteria.sortBy=e,this.searchCriteria.direction=t,this.searchCriteria.page=0,await this.fetchParts()},async refreshParts(){await this.fetchParts()},async initializeParts(){this.initialized||(await this.fetchParts(),this.initialized=!0)},async updateStock(e,t,r){this.loading=!0,this.error=null;try{const s=await i.updateInventory(e,t,r),n=this.parts.findIndex(o=>o.id===e);n!==-1&&(this.parts[n]={...this.parts[n],...s})}catch(s){throw this.error=s.message,s}finally{this.loading=!1}},async reserveParts(e,t){this.loading=!0,this.error=null;try{await i.reserveParts(e,t),await this.refreshParts()}catch(r){throw this.error=r.message,r}finally{this.loading=!1}},async releaseParts(e){this.loading=!0,this.error=null;try{await i.releaseParts(e),await this.refreshParts()}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async getLowStockParts(e=10){this.loading=!0,this.error=null;try{return await i.getLowStock(e)}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async exportParts(e={}){this.loading=!0,this.error=null;try{return console.log("Exporting parts with filters:",e),"export-data"}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},clearCurrentPart(){this.currentPart=null},clearError(){this.error=null},setRepository(e){i=e},setInventoryRepository(e){a=e},async fetchStockAlerts(e={}){this.loading=!0,this.error=null;try{const t=await a.getStockAlerts(e);return this.stockAlerts=Array.isArray(t)?t:[],this.stockAlerts}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async createStockAlert(e){this.loading=!0,this.error=null;try{const t=await a.createStockAlert(e);return this.stockAlerts.push(t),t}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async acknowledgeAlert(e,t){this.loading=!0,this.error=null;try{await a.acknowledgeAlert(e,t);const r=this.stockAlerts.find(s=>s.id===e);r&&(r.acknowledged=!0,r.acknowledgedBy=t.acknowledgedBy,r.acknowledgedAt=new Date().toISOString())}catch(r){throw this.error=r.message,r}finally{this.loading=!1}},async resolveAlert(e,t){this.loading=!0,this.error=null;try{await a.resolveAlert(e,t);const r=this.stockAlerts.find(s=>s.id===e);r&&(r.resolved=!0,r.resolvedBy=t.resolvedBy,r.resolvedAt=new Date().toISOString())}catch(r){throw this.error=r.message,r}finally{this.loading=!1}},async getAlertStatistics(e={}){this.loading=!0,this.error=null;try{return await a.getStockAlerts(e)}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async fetchStockAdjustments(e={}){this.loading=!0,this.error=null;try{const t=await a.getStockAdjustments(e);return this.stockAdjustments=Array.isArray(t)?t:[],this.stockAdjustments}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async createStockAdjustment(e){this.loading=!0,this.error=null;try{const t=await a.createStockAdjustment(e);this.stockAdjustments.push(t);const r=this.parts.find(s=>s.id===e.partId);return r&&(r.currentStock=e.adjustedQuantity),t}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async getAdjustmentHistory(e){this.loading=!0,this.error=null;try{return await a.getStockAdjustments({partId:e})}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async fetchInventoryTransfers(e={}){this.loading=!0,this.error=null;try{const t=await a.getInventoryTransfers(e);return this.inventoryTransfers=Array.isArray(t)?t:[],this.inventoryTransfers}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async createInventoryTransfer(e){this.loading=!0,this.error=null;try{const t=await a.createInventoryTransfer(e);return this.inventoryTransfers.push(t),t}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async approveTransfer(e,t){this.loading=!0,this.error=null;try{await a.approveTransfer(e,t);const r=this.inventoryTransfers.find(s=>s.id===e);r&&(r.status="approved",r.approvedBy=t.approvedBy,r.approvedAt=new Date().toISOString())}catch(r){throw this.error=r.message,r}finally{this.loading=!1}},async fetchReorderPointConfigs(e={}){this.loading=!0,this.error=null;try{const t=await a.getReorderPointConfigs(e);return this.reorderPointConfigs=Array.isArray(t)?t:[],this.reorderPointConfigs}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async createReorderPointConfig(e){this.loading=!0,this.error=null;try{const t=await a.createReorderPointConfig(e);return this.reorderPointConfigs.push(t),t}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async updateReorderPointConfig(e,t){this.loading=!0,this.error=null;try{await a.updateReorderPointConfig(e,t);const r=this.reorderPointConfigs.find(s=>s.id===e);r&&Object.assign(r,t)}catch(r){throw this.error=r.message,r}finally{this.loading=!1}},async getStockLevelsByLocation(e){this.loading=!0,this.error=null;try{return await a.getStockLevelsByLocation(e)}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async updateStockLevel(e,t,r){this.loading=!0,this.error=null;try{await a.updateStockLevel(e,t,r);const s=this.parts.find(n=>n.id===e);s&&Object.assign(s,r)}catch(s){throw this.error=s.message,s}finally{this.loading=!1}},async getInventoryValuation(e={}){this.loading=!0,this.error=null;try{return await a.getInventoryValuation(e)}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async getTotalInventoryValue(e={}){try{return(await this.getInventoryValuation(e)).reduce((r,s)=>r+(s.totalCost||0),0)}catch(t){throw this.error=t.message,t}},async getInventoryAnalytics(e={}){this.loading=!0,this.error=null;try{const t=await a.getInventoryAnalytics(e);return this.inventoryAnalytics=t,t}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async getABCAnalysis(e={}){this.loading=!0,this.error=null;try{return await a.getABCAnalysis(e)}catch(t){throw this.error=t.message,t}finally{this.loading=!1}}}});export{f as u}; +import{bc as h,aP as u,be as y}from"./index-QAlcqU00.js";class g extends h{constructor(){super("/inventory")}async getStockAlerts(t={}){return this.get("/alerts",{params:t})}async createStockAlert(t){return this.post("/alerts",t)}async acknowledgeAlert(t,r){return this.post(`/alerts/${t}/acknowledge`,r)}async resolveAlert(t,r){return this.post(`/alerts/${t}/resolve`,r)}async getAlertStatistics(t={}){return this.get("/alerts/statistics",{params:t})}async getStockAdjustments(t={}){return this.get("/adjustments",{params:t})}async createStockAdjustment(t){return this.post("/adjustments",t)}async approveStockAdjustment(t,r){return this.post(`/adjustments/${t}/approve`,r)}async getAdjustmentHistory(t,r={}){return this.get(`/adjustments/part/${t}/history`,{params:r})}async getInventoryTransfers(t={}){return this.get("/transfers",{params:t})}async getTransferById(t){return this.get(`/transfers/${t}`)}async createInventoryTransfer(t){return this.post("/transfers",t)}async updateTransfer(t,r){return this.put(`/transfers/${t}`,r)}async approveTransfer(t,r){return this.post(`/transfers/${t}/approve`,r)}async cancelTransfer(t,r){return this.post(`/transfers/${t}/cancel`,{reason:r})}async shipTransfer(t,r){return this.post(`/transfers/${t}/ship`,r)}async receiveTransfer(t,r){return this.post(`/transfers/${t}/receive`,r)}async getReorderPointConfigs(t={}){return this.get("/reorder-points",{params:t})}async createReorderPointConfig(t){return this.post("/reorder-points",t)}async updateReorderPointConfig(t,r){return this.put(`/reorder-points/${t}`,r)}async deleteReorderPointConfig(t){return this.delete(`/reorder-points/${t}`)}async calculateReorderPoints(t){return this.post("/reorder-points/calculate",t)}async getStockLevelsByLocation(t,r={}){return this.get(`/stock-levels/location/${t}`,{params:r})}async getStockLevelsByPart(t,r={}){return this.get(`/stock-levels/part/${t}`,{params:r})}async updateStockLevel(t,r,s){return this.put(`/stock-levels/part/${t}/location/${r}`,s)}async getStockMovementHistory(t,r={}){return this.get(`/stock-levels/part/${t}/movements`,{params:r})}async getInventoryValuation(t={}){return this.get("/valuation",{params:t})}async updatePartCosting(t,r){return this.put(`/valuation/part/${t}/costing`,r)}async recalculateInventoryCosts(t){return this.post("/valuation/recalculate",t)}async getStockReconciliations(t={}){return this.get("/reconciliation",{params:t})}async getReconciliationById(t){return this.get(`/reconciliation/${t}`)}async createStockReconciliation(t){return this.post("/reconciliation",t)}async startReconciliation(t){return this.post(`/reconciliation/${t}/start`,{})}async completeReconciliation(t,r){return this.post(`/reconciliation/${t}/complete`,r)}async recordReconciliationDiscrepancy(t,r){return this.post(`/reconciliation/${t}/discrepancies`,r)}async getInventoryAnalytics(t={}){return this.get("/analytics",{params:t})}async getABCAnalysis(t={}){return this.get("/analytics/abc",{params:t})}async getUsageForecast(t,r={}){return this.get(`/analytics/forecast/part/${t}`,{params:r})}async getInventoryTurnover(t={}){return this.get("/analytics/turnover",{params:t})}async generateInventoryReport(t,r={}){return this.post(`/reports/${t}`,r)}async exportInventoryData(t){return this.request("/export","POST",t,{responseType:"blob"})}}let i=new y,a=new g;const f=u("parts",{state:()=>({parts:[],currentPart:null,loading:!1,error:null,initialized:!1,totalElements:0,totalPages:0,searchCriteria:{page:0,size:10,sortBy:"name",direction:"ASC",search:"",filters:{}},stockAlerts:[],stockAdjustments:[],inventoryTransfers:[],reorderPointConfigs:[],inventoryAnalytics:{}}),getters:{getPartById:e=>t=>e.parts.find(r=>r.id===t),filteredParts:e=>{let t=[...e.parts];if(e.searchCriteria.search){const r=e.searchCriteria.search.toLowerCase();t=t.filter(s=>{var n,o,l,c;return((n=s.name)==null?void 0:n.toLowerCase().includes(r))||((o=s.partNumber)==null?void 0:o.toLowerCase().includes(r))||((l=s.manufacturer)==null?void 0:l.toLowerCase().includes(r))||((c=s.description)==null?void 0:c.toLowerCase().includes(r))})}return t},inventoryStats:e=>{const t={totalParts:e.parts.length,totalValue:0,lowStock:0,categories:{}};return e.parts.forEach(r=>{const s=(r.currentStock||0)*(r.unitCost||0);t.totalValue+=s,(r.currentStock||0)<(r.minStock||0)&&t.lowStock++;const n=r.category||"UNKNOWN";t.categories[n]=(t.categories[n]||0)+1}),t},lowStockParts:e=>e.parts.filter(t=>(t.currentStock||0)<(t.minStock||0)),getPartsByCategory:e=>t=>e.parts.filter(r=>r.category===t),getPartsByLocation:e=>t=>e.parts.filter(r=>r.location===t),unresolvedAlerts:e=>e.stockAlerts.filter(t=>!t.resolved),criticalAlerts:e=>e.stockAlerts.filter(t=>t.severity==="critical"),getAdjustmentsByReason:e=>t=>e.stockAdjustments.filter(r=>r.reason===t),totalStockValue:e=>e.parts.reduce((t,r)=>t+(r.currentStock||0)*(r.unitCost||0),0),partsNeedingReorder:e=>e.parts.filter(t=>t.currentStock<=(t.reorderPoint||0)&&t.reorderPoint>0),pendingTransfers:e=>e.inventoryTransfers.filter(t=>t.status==="pending"),transferStats:e=>{const t=e.inventoryTransfers;return{total:t.length,pending:t.filter(r=>r.status==="pending").length,approved:t.filter(r=>r.status==="approved").length,completed:t.filter(r=>r.status==="completed").length,cancelled:t.filter(r=>r.status==="cancelled").length}}},actions:{async createPart(e){this.loading=!0,this.error=null;try{const t=await i.create(e);return this.parts.push(t),this.currentPart=t,t}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async updatePart(e,t){var r;this.loading=!0,this.error=null;try{const s=await i.update(e,t),n=this.parts.findIndex(o=>o.id===e);return n!==-1&&(this.parts[n]=s),((r=this.currentPart)==null?void 0:r.id)===e&&(this.currentPart=s),s}catch(s){throw this.error=s.message,s}finally{this.loading=!1}},async deletePart(e){var t;this.loading=!0,this.error=null;try{await i.delete(e);const r=this.parts.findIndex(s=>s.id===e);r!==-1&&this.parts.splice(r,1),((t=this.currentPart)==null?void 0:t.id)===e&&(this.currentPart=null)}catch(r){throw this.error=r.message,r}finally{this.loading=!1}},async fetchPartById(e){this.loading=!0,this.error=null;try{const t=await i.getById(e);return this.currentPart=t,t}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async fetchParts(e=null){this.loading=!0,this.error=null;try{const t=e||this.searchCriteria,r=await i.search(t);this.parts=r.content||r,this.totalElements=r.totalElements||this.parts.length,this.totalPages=r.totalPages||1}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async updateSearchTerm(e){this.searchCriteria.search=e,this.searchCriteria.page=0,await this.fetchParts()},async updateFilters(e){this.searchCriteria.filters={...this.searchCriteria.filters,...e},this.searchCriteria.page=0,await this.fetchParts()},async changePage(e){this.searchCriteria.page=e,await this.fetchParts()},async changeSorting(e,t){this.searchCriteria.sortBy=e,this.searchCriteria.direction=t,this.searchCriteria.page=0,await this.fetchParts()},async refreshParts(){await this.fetchParts()},async initializeParts(){this.initialized||(await this.fetchParts(),this.initialized=!0)},async updateStock(e,t,r){this.loading=!0,this.error=null;try{const s=await i.updateInventory(e,t,r),n=this.parts.findIndex(o=>o.id===e);n!==-1&&(this.parts[n]={...this.parts[n],...s})}catch(s){throw this.error=s.message,s}finally{this.loading=!1}},async reserveParts(e,t){this.loading=!0,this.error=null;try{await i.reserveParts(e,t),await this.refreshParts()}catch(r){throw this.error=r.message,r}finally{this.loading=!1}},async releaseParts(e){this.loading=!0,this.error=null;try{await i.releaseParts(e),await this.refreshParts()}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async getLowStockParts(e=10){this.loading=!0,this.error=null;try{return await i.getLowStock(e)}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async exportParts(e={}){this.loading=!0,this.error=null;try{return console.log("Exporting parts with filters:",e),"export-data"}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},clearCurrentPart(){this.currentPart=null},clearError(){this.error=null},setRepository(e){i=e},setInventoryRepository(e){a=e},async fetchStockAlerts(e={}){this.loading=!0,this.error=null;try{const t=await a.getStockAlerts(e);return this.stockAlerts=Array.isArray(t)?t:[],this.stockAlerts}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async createStockAlert(e){this.loading=!0,this.error=null;try{const t=await a.createStockAlert(e);return this.stockAlerts.push(t),t}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async acknowledgeAlert(e,t){this.loading=!0,this.error=null;try{await a.acknowledgeAlert(e,t);const r=this.stockAlerts.find(s=>s.id===e);r&&(r.acknowledged=!0,r.acknowledgedBy=t.acknowledgedBy,r.acknowledgedAt=new Date().toISOString())}catch(r){throw this.error=r.message,r}finally{this.loading=!1}},async resolveAlert(e,t){this.loading=!0,this.error=null;try{await a.resolveAlert(e,t);const r=this.stockAlerts.find(s=>s.id===e);r&&(r.resolved=!0,r.resolvedBy=t.resolvedBy,r.resolvedAt=new Date().toISOString())}catch(r){throw this.error=r.message,r}finally{this.loading=!1}},async getAlertStatistics(e={}){this.loading=!0,this.error=null;try{return await a.getStockAlerts(e)}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async fetchStockAdjustments(e={}){this.loading=!0,this.error=null;try{const t=await a.getStockAdjustments(e);return this.stockAdjustments=Array.isArray(t)?t:[],this.stockAdjustments}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async createStockAdjustment(e){this.loading=!0,this.error=null;try{const t=await a.createStockAdjustment(e);this.stockAdjustments.push(t);const r=this.parts.find(s=>s.id===e.partId);return r&&(r.currentStock=e.adjustedQuantity),t}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async getAdjustmentHistory(e){this.loading=!0,this.error=null;try{return await a.getStockAdjustments({partId:e})}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async fetchInventoryTransfers(e={}){this.loading=!0,this.error=null;try{const t=await a.getInventoryTransfers(e);return this.inventoryTransfers=Array.isArray(t)?t:[],this.inventoryTransfers}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async createInventoryTransfer(e){this.loading=!0,this.error=null;try{const t=await a.createInventoryTransfer(e);return this.inventoryTransfers.push(t),t}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async approveTransfer(e,t){this.loading=!0,this.error=null;try{await a.approveTransfer(e,t);const r=this.inventoryTransfers.find(s=>s.id===e);r&&(r.status="approved",r.approvedBy=t.approvedBy,r.approvedAt=new Date().toISOString())}catch(r){throw this.error=r.message,r}finally{this.loading=!1}},async fetchReorderPointConfigs(e={}){this.loading=!0,this.error=null;try{const t=await a.getReorderPointConfigs(e);return this.reorderPointConfigs=Array.isArray(t)?t:[],this.reorderPointConfigs}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async createReorderPointConfig(e){this.loading=!0,this.error=null;try{const t=await a.createReorderPointConfig(e);return this.reorderPointConfigs.push(t),t}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async updateReorderPointConfig(e,t){this.loading=!0,this.error=null;try{await a.updateReorderPointConfig(e,t);const r=this.reorderPointConfigs.find(s=>s.id===e);r&&Object.assign(r,t)}catch(r){throw this.error=r.message,r}finally{this.loading=!1}},async getStockLevelsByLocation(e){this.loading=!0,this.error=null;try{return await a.getStockLevelsByLocation(e)}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async updateStockLevel(e,t,r){this.loading=!0,this.error=null;try{await a.updateStockLevel(e,t,r);const s=this.parts.find(n=>n.id===e);s&&Object.assign(s,r)}catch(s){throw this.error=s.message,s}finally{this.loading=!1}},async getInventoryValuation(e={}){this.loading=!0,this.error=null;try{return await a.getInventoryValuation(e)}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async getTotalInventoryValue(e={}){try{return(await this.getInventoryValuation(e)).reduce((r,s)=>r+(s.totalCost||0),0)}catch(t){throw this.error=t.message,t}},async getInventoryAnalytics(e={}){this.loading=!0,this.error=null;try{const t=await a.getInventoryAnalytics(e);return this.inventoryAnalytics=t,t}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async getABCAnalysis(e={}){this.loading=!0,this.error=null;try{return await a.getABCAnalysis(e)}catch(t){throw this.error=t.message,t}finally{this.loading=!1}}}});export{f as u}; diff --git a/frontend/dist/assets/roles-f1XEGBFr.js b/frontend/dist/assets/roles-BzkoUpaM.js similarity index 89% rename from frontend/dist/assets/roles-f1XEGBFr.js rename to frontend/dist/assets/roles-BzkoUpaM.js index 9eecd477..736c165c 100644 --- a/frontend/dist/assets/roles-f1XEGBFr.js +++ b/frontend/dist/assets/roles-BzkoUpaM.js @@ -1 +1 @@ -import{bb as ge,r as f,c as a,aO as he,bc as Se,bd as Ee}from"./index-BUdRbiwj.js";const B=new ge;function Ie(){const i=f({content:[],totalElements:0,totalPages:0,currentPage:0,pageSize:10}),e=f(null),r=f(!1),E=f(null),l=f({page:0,size:10,direction:"ASC",sortBy:"name",searchValue:"",searchFields:["name","description"]}),T=f([]),d=a(()=>i.value.content.length>0),h=a(()=>i.value.totalElements),K=a(()=>i.value.currentPage),$=a(()=>i.value.totalPages),C=async(t={})=>{try{r.value=!0,E.value=null;const o={...l.value,...t},u=await B.search(o);return i.value=u,l.value={...o},u}catch(o){throw E.value=o.message||"Failed to search teams",console.error("Error searching teams:",o),o}finally{r.value=!1}},U=async()=>{try{r.value=!0,E.value=null;const t=await B.getMini();return T.value=t,t}catch(t){throw E.value=t.message||"Failed to load teams",console.error("Error loading mini teams:",t),t}finally{r.value=!1}},H=async()=>await C(l.value),J=async t=>await C({...l.value,searchValue:t,page:0}),D=async t=>await C({...l.value,page:t}),x=async t=>await C({...l.value,size:t,page:0}),I=async(t,o="ASC")=>await C({...l.value,sortBy:t,direction:o,page:0}),g=async t=>{try{r.value=!0,E.value=null;const o=await B.getById(t);return e.value=o,o}catch(o){throw E.value=o.message||"Failed to get team details",console.error("Error getting team:",o),o}finally{r.value=!1}},V=async t=>{try{if(r.value=!0,E.value=null,!p(t))throw new Error("Invalid team data");const o=await B.create(t);return i.value.currentPage===0&&(i.value.content.unshift(o),i.value.totalElements+=1),o}catch(o){throw E.value=o.message||"Failed to create team",console.error("Error creating team:",o),o}finally{r.value=!1}},X=async(t,o)=>{try{if(r.value=!0,E.value=null,!p(o))throw new Error("Invalid team data");const u=await B.update(t,o);e.value&&e.value.id===t&&(e.value=u);const R=i.value.content.findIndex(w=>w.id===t);return R!==-1&&(i.value.content[R]=u),u}catch(u){throw E.value=u.message||"Failed to update team",console.error("Error updating team:",u),u}finally{r.value=!1}},b=async t=>{try{r.value=!0,E.value=null;const o=await B.delete(t);e.value&&e.value.id===t&&(e.value=null);const u=i.value.content.findIndex(R=>R.id===t);return u!==-1&&(i.value.content.splice(u,1),i.value.totalElements-=1),o}catch(o){throw E.value=o.message||"Failed to delete team",console.error("Error deleting team:",o),o}finally{r.value=!1}},F=t=>{e.value=t},A=()=>{e.value=null},O=async(t,o)=>{try{r.value=!0,E.value=null;const u=await B.addUserToTeam(t,o);e.value&&e.value.id===t&&(e.value=u);const R=i.value.content.findIndex(w=>w.id===t);return R!==-1&&(i.value.content[R]=u),u}catch(u){throw E.value=u.message||"Failed to add user to team",console.error("Error adding user to team:",u),u}finally{r.value=!1}},W=async(t,o)=>{try{r.value=!0,E.value=null;const u=await B.removeUserFromTeam(t,o);e.value&&e.value.id===t&&(e.value=u);const R=i.value.content.findIndex(w=>w.id===t);return R!==-1&&(i.value.content[R]=u),u}catch(u){throw E.value=u.message||"Failed to remove user from team",console.error("Error removing user from team:",u),u}finally{r.value=!1}},k=async(t,o)=>{try{if(r.value=!0,E.value=null,!N(o))throw new Error("Invalid user IDs provided");const u=await B.updateTeamMembership(t,o);e.value&&e.value.id===t&&(e.value=u);const R=i.value.content.findIndex(w=>w.id===t);return R!==-1&&(i.value.content[R]=u),u}catch(u){throw E.value=u.message||"Failed to update team membership",console.error("Error updating team membership:",u),u}finally{r.value=!1}},p=t=>!(!t||!t.name||t.name.trim()===""),N=t=>Array.isArray(t)?t.length===0?!0:t.every(o=>typeof o=="number"||typeof o=="string"&&!isNaN(parseInt(o))):!1,L=t=>t===0?"0 members":t===1?"1 member":`${t} members`,P=t=>!t||!t.users||!Array.isArray(t.users)?[]:t.users.map(o=>{const u=o.firstName||"",R=o.lastName||"";return`${u} ${R}`.trim()}).filter(o=>o.length>0),G=t=>{if(!t)return"";const o=t.users?t.users.length:0,u=L(o);return t.description?`${t.description} • ${u}`:u},z=()=>{E.value=null},Y=()=>r.value;return{teams:a(()=>i.value),selectedTeam:a(()=>e.value),loading:a(()=>r.value),error:a(()=>E.value),searchCriteria:a(()=>l.value),miniTeams:a(()=>T.value),hasTeams:d,totalTeams:h,currentPage:K,totalPages:$,searchTeams:C,loadMiniTeams:U,refreshTeams:H,updateSearchTerm:J,changePage:D,changePageSize:x,changeSorting:I,getTeamById:g,createTeam:V,updateTeam:X,deleteTeam:b,selectTeam:F,clearSelectedTeam:A,addUserToTeam:O,removeUserFromTeam:W,updateTeamMembership:k,validateTeamData:p,validateUserIds:N,formatMemberCount:L,getTeamMemberNames:P,getTeamSummary:G,clearError:z,isLoading:Y}}const ye=he("teams",()=>{const{teams:i,selectedTeam:e,loading:r,error:E,searchCriteria:l,miniTeams:T,searchTeams:d,loadMiniTeams:h,getTeamById:K,createTeam:$,updateTeam:C,deleteTeam:U,addUserToTeam:H,removeUserFromTeam:J,updateTeamMembership:D,refreshTeams:x,selectTeam:I,clearSelectedTeam:g,clearError:V,formatMemberCount:X,getTeamMemberNames:b,getTeamSummary:F}=Ie(),A=f([]),O=f({searchTerm:"",memberCount:"all"}),W=f(!1),k=f("create"),p=f(!1),N=f(null),L=a(()=>i.value.content.filter(s=>!s.users||s.users.length===0)),P=a(()=>i.value.content.filter(s=>s.users&&s.users.length>0)),G=a(()=>({empty:L.value.length,small:i.value.content.filter(s=>s.users&&s.users.length>0&&s.users.length<=3).length,medium:i.value.content.filter(s=>s.users&&s.users.length>3&&s.users.length<=10).length,large:i.value.content.filter(s=>s.users&&s.users.length>10).length})),z=a(()=>{let s=i.value.content;if(O.value.searchTerm){const m=O.value.searchTerm.toLowerCase();s=s.filter(v=>{var _,de;return((_=v.name)==null?void 0:_.toLowerCase().includes(m))||((de=v.description)==null?void 0:de.toLowerCase().includes(m))})}if(O.value.memberCount!=="all")switch(O.value.memberCount){case"empty":s=s.filter(m=>!m.users||m.users.length===0);break;case"small":s=s.filter(m=>m.users&&m.users.length>0&&m.users.length<=3);break;case"large":s=s.filter(m=>m.users&&m.users.length>10);break}return s}),Y=a(()=>({total:i.value.totalElements,withMembers:P.value.length,empty:L.value.length,bySize:G.value,totalMembers:i.value.content.reduce((s,m)=>s+(m.users?m.users.length:0),0),averageSize:i.value.content.length>0?Math.round(i.value.content.reduce((s,m)=>s+(m.users?m.users.length:0),0)/i.value.content.length):0})),t=async()=>{try{await Promise.all([d(),h()])}catch(s){console.error("Failed to initialize teams:",s)}},o=async(s={})=>{const m={...s,searchValue:O.value.searchTerm};return await d(m)},u=async s=>(O.value={...O.value,...s},await o()),R=async s=>{const m=await $(s);return await M(m),m},w=async(s,m)=>{const v=await C(s,m);return await M(v),v},se=async s=>{const m=await U(s),v=A.value.findIndex(_=>_.id===s);return v!==-1&&A.value.splice(v,1),m},Z=async(s,m)=>{const v=await H(s,m);return await M(v),v},re=async(s,m)=>{const v=await J(s,m);return await M(v),v},ae=async(s,m)=>{const v=await D(s,m);return await M(v),v},ne=(s=null,m="create")=>{s?(I(s),k.value=m):(g(),k.value="create"),W.value=!0},oe=()=>{W.value=!1,g()},le=s=>{N.value=s,p.value=!0},ie=()=>{p.value=!1,N.value=null},M=s=>{if(!s)return;const m=A.value.findIndex(v=>v.id===s.id);m!==-1&&A.value.splice(m,1),A.value.unshift(s),A.value.length>10&&(A.value=A.value.slice(0,10))},Q=async s=>{const m=i.value.content.find(_=>_.id===s);if(m)return I(m),m;const v=await K(s);return await M(v),v},ce=s=>i.value.content.filter(m=>m.users&&m.users.some(v=>v.id===s)),ue=(s,m)=>{const v=i.value.content.find(_=>_.id===s);return!v||!v.users?!1:v.users.some(_=>_.id===m)},n=()=>{O.value={searchTerm:"",memberCount:"all"}},S=()=>{n(),g(),V(),W.value=!1,p.value=!1,N.value=null,A.value=[]};return{teams:i,selectedTeam:e,loading:r,error:E,searchCriteria:l,miniTeams:T,recentTeams:a(()=>A.value),teamFilters:a(()=>O.value),showTeamModal:a(()=>W.value),teamModalMode:a(()=>k.value),showMemberModal:a(()=>p.value),teamForMemberEdit:a(()=>N.value),emptyTeams:L,teamsWithMembers:P,teamsBySize:G,filteredTeams:z,teamStats:Y,initializeTeams:t,searchWithFilters:o,updateFilters:u,createNewTeam:R,updateExistingTeam:w,deleteExistingTeam:se,addMemberToTeam:Z,removeMemberFromTeam:re,updateMembership:ae,openTeamModal:ne,closeTeamModal:oe,openMemberModal:le,closeMemberModal:ie,addToRecentTeams:M,getTeam:Q,getTeamsByUser:ce,isUserInTeam:ue,clearFilters:n,resetStore:S,searchTeams:d,loadMiniTeams:h,refreshTeams:x,selectTeam:I,clearSelectedTeam:g,clearError:V,formatMemberCount:X,getTeamMemberNames:b,getTeamSummary:F}});class Ae extends Se{constructor(){super("/roles")}async getAllRoles(){try{return(await Ee.get(this.endpoint)).data}catch(e){throw this.handleError(e)}}async getRoleById(e){try{return(await Ee.get(`${this.endpoint}/${e}`)).data}catch(r){throw this.handleError(r)}}async createRole(e){try{return(await Ee.post(this.endpoint,{name:e.name,description:e.description,createPermissions:e.createPermissions||[],viewPermissions:e.viewPermissions||[],viewOtherPermissions:e.viewOtherPermissions||[],editOtherPermissions:e.editOtherPermissions||[],deleteOtherPermissions:e.deleteOtherPermissions||[]})).data}catch(r){throw this.handleError(r)}}async updateRole(e,r){try{return(await Ee.patch(`${this.endpoint}/${e}`,{name:r.name,description:r.description,createPermissions:r.createPermissions,viewPermissions:r.viewPermissions,viewOtherPermissions:r.viewOtherPermissions,editOtherPermissions:r.editOtherPermissions,deleteOtherPermissions:r.deleteOtherPermissions})).data}catch(E){throw this.handleError(E)}}async deleteRole(e){try{return(await Ee.delete(`${this.endpoint}/${e}`)).data}catch(r){throw this.handleError(r)}}getPermissionEntities(){return["PEOPLE_AND_TEAMS","CATEGORIES","WORK_ORDERS","PREVENTIVE_MAINTENANCES","ASSETS","PARTS_AND_MULTIPARTS","PURCHASE_ORDERS","METERS","VENDORS_AND_CUSTOMERS","FILES","LOCATIONS","SETTINGS","REQUESTS","ANALYTICS"]}getPermissionTypes(){return["CREATE","VIEW","VIEW_OTHER","EDIT_OTHER","DELETE_OTHER"]}hasPermission(e,r,E){if(!e||!r||!E)return!1;const T={CREATE:"createPermissions",VIEW:"viewPermissions",VIEW_OTHER:"viewOtherPermissions",EDIT_OTHER:"editOtherPermissions",DELETE_OTHER:"deleteOtherPermissions"}[E];return!T||!e[T]?!1:e[T].includes(r)}getDefaultRoles(){return["ADMIN","LIMITED_ADMIN","TECHNICIAN","LIMITED_TECHNICIAN","VIEW_ONLY","REQUESTER"]}isCustomRole(e){return e.roleType==="USER_CREATED"}isPaidRole(e){return e.paid===!0}getRoleDisplayName(e,r=null){return e?r&&!this.isCustomRole(e)&&r(`roles.${e.code}`)||e.name:""}getRoleDescription(e,r=null){return e?r&&!this.isCustomRole(e)?r(`roles.${e.code}_description`)||e.description:e.description||"":""}async getRoleStats(e){var r,E,l,T,d;try{const h=await this.getRoleById(e);return{roleId:h.id,roleName:h.name,userCount:h.users||0,isCustomRole:this.isCustomRole(h),isPaidRole:this.isPaidRole(h),permissionCount:{create:((r=h.createPermissions)==null?void 0:r.length)||0,view:((E=h.viewPermissions)==null?void 0:E.length)||0,viewOther:((l=h.viewOtherPermissions)==null?void 0:l.length)||0,editOther:((T=h.editOtherPermissions)==null?void 0:T.length)||0,deleteOther:((d=h.deleteOtherPermissions)==null?void 0:d.length)||0}}}catch(h){throw this.handleError(h)}}getPermissionMatrix(e){if(!e)return{};const r=this.getPermissionEntities(),E=this.getPermissionTypes(),l={};return r.forEach(T=>{l[T]={},E.forEach(d=>{l[T][d]=this.hasPermission(e,T,d)})}),l}}const q=new Ae;function Oe(){const i=f([]),e=f(null),r=f(!1),E=f(null),l={PEOPLE_AND_TEAMS:"PEOPLE_AND_TEAMS",CATEGORIES:"CATEGORIES",WORK_ORDERS:"WORK_ORDERS",PREVENTIVE_MAINTENANCES:"PREVENTIVE_MAINTENANCES",ASSETS:"ASSETS",PARTS_AND_MULTIPARTS:"PARTS_AND_MULTIPARTS",PURCHASE_ORDERS:"PURCHASE_ORDERS",METERS:"METERS",VENDORS_AND_CUSTOMERS:"VENDORS_AND_CUSTOMERS",FILES:"FILES",LOCATIONS:"LOCATIONS",SETTINGS:"SETTINGS",REQUESTS:"REQUESTS",ANALYTICS:"ANALYTICS"},T={CREATE:"CREATE",VIEW:"VIEW",VIEW_OTHER:"VIEW_OTHER",EDIT_OTHER:"EDIT_OTHER",DELETE_OTHER:"DELETE_OTHER"},d={ADMIN:"ADMIN",LIMITED_ADMIN:"LIMITED_ADMIN",TECHNICIAN:"TECHNICIAN",LIMITED_TECHNICIAN:"LIMITED_TECHNICIAN",VIEW_ONLY:"VIEW_ONLY",REQUESTER:"REQUESTER"},h=a(()=>i.value.length>0),K=a(()=>{var n;return((n=e.value)==null?void 0:n.code)===d.ADMIN}),$=a(()=>{var n;return((n=e.value)==null?void 0:n.code)===d.LIMITED_ADMIN}),C=a(()=>{var n,S;return((n=e.value)==null?void 0:n.code)===d.TECHNICIAN||((S=e.value)==null?void 0:S.code)===d.LIMITED_TECHNICIAN}),U=a(()=>{var n;return((n=e.value)==null?void 0:n.code)===d.VIEW_ONLY}),H=a(()=>{var n;return((n=e.value)==null?void 0:n.code)===d.REQUESTER}),J=async()=>{try{r.value=!0,E.value=null;const n=await q.getAllRoles();return i.value=n,n}catch(n){throw E.value=n.message||"Failed to load roles",console.error("Error loading roles:",n),n}finally{r.value=!1}},D=async n=>{try{return r.value=!0,E.value=null,await q.getRoleById(n)}catch(S){throw E.value=S.message||"Failed to get role details",console.error("Error getting role:",S),S}finally{r.value=!1}},x=n=>{e.value=n},I=(n,S)=>!e.value||!n||!S?!1:q.hasPermission(e.value,n,S),g=n=>I(n,T.VIEW),V=n=>I(n,T.CREATE),X=n=>I(n,T.VIEW_OTHER),b=n=>I(n,T.EDIT_OTHER),F=n=>I(n,T.DELETE_OTHER),A=a(()=>g(l.PEOPLE_AND_TEAMS)),O=a(()=>V(l.PEOPLE_AND_TEAMS)),W=a(()=>b(l.PEOPLE_AND_TEAMS)),k=a(()=>F(l.PEOPLE_AND_TEAMS)),p=a(()=>g(l.ASSETS)),N=a(()=>V(l.ASSETS)),L=a(()=>b(l.ASSETS)),P=a(()=>F(l.ASSETS)),G=a(()=>g(l.WORK_ORDERS)),z=a(()=>V(l.WORK_ORDERS)),Y=a(()=>b(l.WORK_ORDERS)),t=a(()=>F(l.WORK_ORDERS)),o=a(()=>g(l.SETTINGS)),u=a(()=>b(l.SETTINGS)),R=a(()=>g(l.ANALYTICS)),w=()=>Object.values(l),se=()=>Object.values(T),Z=n=>q.isCustomRole(n),re=n=>q.isPaidRole(n),ae=(n,S=null)=>q.getRoleDisplayName(n,S),ne=(n,S=null)=>q.getRoleDescription(n,S),oe=n=>q.getPermissionMatrix(n),le=()=>i.value.filter(n=>!Z(n)),ie=()=>i.value.filter(n=>Z(n)),M=()=>K.value?i.value:$.value?i.value.filter(n=>n.code!==d.ADMIN):[],Q=n=>M().some(s=>s.id===n.id),ce=()=>{E.value=null},ue=()=>r.value;return{availableRoles:a(()=>i.value),currentUserRole:a(()=>e.value),loading:a(()=>r.value),error:a(()=>E.value),PERMISSION_ENTITIES:l,PERMISSION_OPERATIONS:T,DEFAULT_ROLES:d,hasRoles:h,isAdmin:K,isLimitedAdmin:$,isTechnician:C,isViewOnly:U,isRequester:H,loadRoles:J,getRoleById:D,setCurrentUserRole:x,hasPermission:I,canView:g,canCreate:V,canViewOther:X,canEditOther:b,canDeleteOther:F,canViewUsers:A,canCreateUsers:O,canEditUsers:W,canDeleteUsers:k,canViewAssets:p,canCreateAssets:N,canEditAssets:L,canDeleteAssets:P,canViewWorkOrders:G,canCreateWorkOrders:z,canEditWorkOrders:Y,canDeleteWorkOrders:t,canViewSettings:o,canEditSettings:u,canViewAnalytics:R,getPermissionEntities:w,getPermissionOperations:se,isCustomRole:Z,isPaidRole:re,getRoleDisplayName:ae,getRoleDescription:ne,getPermissionMatrix:oe,getDefaultRoles:le,getCustomRoles:ie,getAssignableRoles:M,canAssignRole:Q,clearError:ce,isLoading:ue}}const Pe=he("roles",()=>{const{availableRoles:i,currentUserRole:e,loading:r,error:E,PERMISSION_ENTITIES:l,PERMISSION_OPERATIONS:T,DEFAULT_ROLES:d,loadRoles:h,getRoleById:K,setCurrentUserRole:$,hasPermission:C,canView:U,canCreate:H,canViewOther:J,canEditOther:D,canDeleteOther:x,isCustomRole:I,isPaidRole:g,getRoleDisplayName:V,getRoleDescription:X,getPermissionMatrix:b,getDefaultRoles:F,getCustomRoles:A,getAssignableRoles:O,canAssignRole:W,clearError:k}=Oe(),p=f(null),N=f(!1),L=f("view"),P=f({type:"all",paid:"all"}),G=a(()=>i.value.length>0),z=a(()=>F()),Y=a(()=>A()),t=a(()=>O()),o=a(()=>i.value.filter(c=>g(c))),u=a(()=>i.value.filter(c=>!g(c))),R=a(()=>{let c=i.value;return P.value.type==="default"?c=c.filter(y=>!I(y)):P.value.type==="custom"&&(c=c.filter(y=>I(y))),P.value.paid==="paid"?c=c.filter(y=>g(y)):P.value.paid==="free"&&(c=c.filter(y=>!g(y))),c}),w=a(()=>({total:i.value.length,default:z.value.length,custom:Y.value.length,paid:o.value.length,free:u.value.length,assignable:t.value.length})),se=a(()=>({canViewUsers:U(l.PEOPLE_AND_TEAMS),canCreateUsers:H(l.PEOPLE_AND_TEAMS),canEditUsers:D(l.PEOPLE_AND_TEAMS),canDeleteUsers:x(l.PEOPLE_AND_TEAMS)})),Z=a(()=>({canViewAssets:U(l.ASSETS),canCreateAssets:H(l.ASSETS),canEditAssets:D(l.ASSETS),canDeleteAssets:x(l.ASSETS)})),re=a(()=>({canViewWorkOrders:U(l.WORK_ORDERS),canCreateWorkOrders:H(l.WORK_ORDERS),canEditWorkOrders:D(l.WORK_ORDERS),canDeleteWorkOrders:x(l.WORK_ORDERS)})),ae=a(()=>({canViewSettings:U(l.SETTINGS),canEditSettings:D(l.SETTINGS)})),ne=async()=>{try{await h()}catch(c){console.error("Failed to initialize roles:",c)}},oe=c=>{c&&c.role&&$(c.role)},le=c=>{P.value={...P.value,...c}},ie=async c=>{const y=i.value.find(me=>me.id===c);if(y)return p.value=y,y;const ee=await K(c);return p.value=ee,ee},M=c=>{p.value=c},Q=()=>{p.value=null},ce=(c=null,y="view")=>{c?(M(c),L.value=y):(Q(),L.value="create"),N.value=!0},ue=()=>{N.value=!1,Q()},n=c=>{if(!c)return{};const y=b(c),ee=Object.keys(l),me=Object.keys(T),j={totalPermissions:0,byOperation:{},byEntity:{},hasFullAccess:!1};me.forEach(te=>{j.byOperation[te]=0}),ee.forEach(te=>{j.byEntity[te]=0}),ee.forEach(te=>{me.forEach(ve=>{const Te=l[te],fe=T[ve];y[Te]&&y[Te][fe]&&(j.totalPermissions++,j.byOperation[ve]++,j.byEntity[te]++)})});const Re=ee.length*me.length;return j.hasFullAccess=j.totalPermissions===Re,j},S=()=>i.value.filter(c=>W(c)),s=()=>D(l.SETTINGS),m=c=>c?c.code===d.ADMIN||c.code===d.LIMITED_ADMIN?"red":c.code===d.TECHNICIAN||c.code===d.LIMITED_TECHNICIAN?"blue":c.code===d.VIEW_ONLY?"gray":c.code===d.REQUESTER?"green":I(c)?"purple":"blue":"gray",v=c=>c?c.code===d.ADMIN||c.code===d.LIMITED_ADMIN?"shield-check":c.code===d.TECHNICIAN||c.code===d.LIMITED_TECHNICIAN?"wrench":c.code===d.VIEW_ONLY?"eye":c.code===d.REQUESTER?"clipboard-list":I(c)?"cog":"user":"user",_=()=>{P.value={type:"all",paid:"all"}},de=()=>{_(),Q(),k(),N.value=!1};return{availableRoles:i,currentUserRole:e,loading:r,error:E,PERMISSION_ENTITIES:l,PERMISSION_OPERATIONS:T,DEFAULT_ROLES:d,selectedRole:a(()=>p.value),showRoleModal:a(()=>N.value),roleModalMode:a(()=>L.value),roleFilters:a(()=>P.value),hasRoles:G,defaultRoles:z,customRoles:Y,assignableRoles:t,paidRoles:o,freeRoles:u,filteredRoles:R,roleStats:w,userPermissions:se,assetPermissions:Z,workOrderPermissions:re,settingsPermissions:ae,initializeRoles:ne,setCurrentUser:oe,updateFilters:le,getRole:ie,selectRole:M,clearSelectedRole:Q,openRoleModal:ce,closeRoleModal:ue,getPermissionSummary:n,getInvitableRoles:S,canManageRoles:s,getRoleColor:m,getRoleIcon:v,clearFilters:_,resetStore:de,loadRoles:h,getRoleById:K,setCurrentUserRole:$,hasPermission:C,canView:U,canCreate:H,canViewOther:J,canEditOther:D,canDeleteOther:x,isCustomRole:I,isPaidRole:g,getRoleDisplayName:V,getRoleDescription:X,getPermissionMatrix:b,getDefaultRoles:F,getCustomRoles:A,getAssignableRoles:O,canAssignRole:W,clearError:k}});export{Pe as a,ye as u}; +import{bb as ge,r as f,c as a,aP as he,bc as Se,bd as Ee}from"./index-QAlcqU00.js";const B=new ge;function Ie(){const i=f({content:[],totalElements:0,totalPages:0,currentPage:0,pageSize:10}),e=f(null),r=f(!1),E=f(null),l=f({page:0,size:10,direction:"ASC",sortBy:"name",searchValue:"",searchFields:["name","description"]}),T=f([]),d=a(()=>i.value.content.length>0),h=a(()=>i.value.totalElements),K=a(()=>i.value.currentPage),$=a(()=>i.value.totalPages),C=async(t={})=>{try{r.value=!0,E.value=null;const o={...l.value,...t},u=await B.search(o);return i.value=u,l.value={...o},u}catch(o){throw E.value=o.message||"Failed to search teams",console.error("Error searching teams:",o),o}finally{r.value=!1}},U=async()=>{try{r.value=!0,E.value=null;const t=await B.getMini();return T.value=t,t}catch(t){throw E.value=t.message||"Failed to load teams",console.error("Error loading mini teams:",t),t}finally{r.value=!1}},H=async()=>await C(l.value),J=async t=>await C({...l.value,searchValue:t,page:0}),D=async t=>await C({...l.value,page:t}),x=async t=>await C({...l.value,size:t,page:0}),I=async(t,o="ASC")=>await C({...l.value,sortBy:t,direction:o,page:0}),g=async t=>{try{r.value=!0,E.value=null;const o=await B.getById(t);return e.value=o,o}catch(o){throw E.value=o.message||"Failed to get team details",console.error("Error getting team:",o),o}finally{r.value=!1}},V=async t=>{try{if(r.value=!0,E.value=null,!O(t))throw new Error("Invalid team data");const o=await B.create(t);return i.value.currentPage===0&&(i.value.content.unshift(o),i.value.totalElements+=1),o}catch(o){throw E.value=o.message||"Failed to create team",console.error("Error creating team:",o),o}finally{r.value=!1}},X=async(t,o)=>{try{if(r.value=!0,E.value=null,!O(o))throw new Error("Invalid team data");const u=await B.update(t,o);e.value&&e.value.id===t&&(e.value=u);const R=i.value.content.findIndex(w=>w.id===t);return R!==-1&&(i.value.content[R]=u),u}catch(u){throw E.value=u.message||"Failed to update team",console.error("Error updating team:",u),u}finally{r.value=!1}},b=async t=>{try{r.value=!0,E.value=null;const o=await B.delete(t);e.value&&e.value.id===t&&(e.value=null);const u=i.value.content.findIndex(R=>R.id===t);return u!==-1&&(i.value.content.splice(u,1),i.value.totalElements-=1),o}catch(o){throw E.value=o.message||"Failed to delete team",console.error("Error deleting team:",o),o}finally{r.value=!1}},F=t=>{e.value=t},A=()=>{e.value=null},p=async(t,o)=>{try{r.value=!0,E.value=null;const u=await B.addUserToTeam(t,o);e.value&&e.value.id===t&&(e.value=u);const R=i.value.content.findIndex(w=>w.id===t);return R!==-1&&(i.value.content[R]=u),u}catch(u){throw E.value=u.message||"Failed to add user to team",console.error("Error adding user to team:",u),u}finally{r.value=!1}},W=async(t,o)=>{try{r.value=!0,E.value=null;const u=await B.removeUserFromTeam(t,o);e.value&&e.value.id===t&&(e.value=u);const R=i.value.content.findIndex(w=>w.id===t);return R!==-1&&(i.value.content[R]=u),u}catch(u){throw E.value=u.message||"Failed to remove user from team",console.error("Error removing user from team:",u),u}finally{r.value=!1}},k=async(t,o)=>{try{if(r.value=!0,E.value=null,!N(o))throw new Error("Invalid user IDs provided");const u=await B.updateTeamMembership(t,o);e.value&&e.value.id===t&&(e.value=u);const R=i.value.content.findIndex(w=>w.id===t);return R!==-1&&(i.value.content[R]=u),u}catch(u){throw E.value=u.message||"Failed to update team membership",console.error("Error updating team membership:",u),u}finally{r.value=!1}},O=t=>!(!t||!t.name||t.name.trim()===""),N=t=>Array.isArray(t)?t.length===0?!0:t.every(o=>typeof o=="number"||typeof o=="string"&&!isNaN(parseInt(o))):!1,L=t=>t===0?"0 members":t===1?"1 member":`${t} members`,P=t=>!t||!t.users||!Array.isArray(t.users)?[]:t.users.map(o=>{const u=o.firstName||"",R=o.lastName||"";return`${u} ${R}`.trim()}).filter(o=>o.length>0),G=t=>{if(!t)return"";const o=t.users?t.users.length:0,u=L(o);return t.description?`${t.description} • ${u}`:u},z=()=>{E.value=null},Y=()=>r.value;return{teams:a(()=>i.value),selectedTeam:a(()=>e.value),loading:a(()=>r.value),error:a(()=>E.value),searchCriteria:a(()=>l.value),miniTeams:a(()=>T.value),hasTeams:d,totalTeams:h,currentPage:K,totalPages:$,searchTeams:C,loadMiniTeams:U,refreshTeams:H,updateSearchTerm:J,changePage:D,changePageSize:x,changeSorting:I,getTeamById:g,createTeam:V,updateTeam:X,deleteTeam:b,selectTeam:F,clearSelectedTeam:A,addUserToTeam:p,removeUserFromTeam:W,updateTeamMembership:k,validateTeamData:O,validateUserIds:N,formatMemberCount:L,getTeamMemberNames:P,getTeamSummary:G,clearError:z,isLoading:Y}}const ye=he("teams",()=>{const{teams:i,selectedTeam:e,loading:r,error:E,searchCriteria:l,miniTeams:T,searchTeams:d,loadMiniTeams:h,getTeamById:K,createTeam:$,updateTeam:C,deleteTeam:U,addUserToTeam:H,removeUserFromTeam:J,updateTeamMembership:D,refreshTeams:x,selectTeam:I,clearSelectedTeam:g,clearError:V,formatMemberCount:X,getTeamMemberNames:b,getTeamSummary:F}=Ie(),A=f([]),p=f({searchTerm:"",memberCount:"all"}),W=f(!1),k=f("create"),O=f(!1),N=f(null),L=a(()=>i.value.content.filter(s=>!s.users||s.users.length===0)),P=a(()=>i.value.content.filter(s=>s.users&&s.users.length>0)),G=a(()=>({empty:L.value.length,small:i.value.content.filter(s=>s.users&&s.users.length>0&&s.users.length<=3).length,medium:i.value.content.filter(s=>s.users&&s.users.length>3&&s.users.length<=10).length,large:i.value.content.filter(s=>s.users&&s.users.length>10).length})),z=a(()=>{let s=i.value.content;if(p.value.searchTerm){const m=p.value.searchTerm.toLowerCase();s=s.filter(v=>{var _,de;return((_=v.name)==null?void 0:_.toLowerCase().includes(m))||((de=v.description)==null?void 0:de.toLowerCase().includes(m))})}if(p.value.memberCount!=="all")switch(p.value.memberCount){case"empty":s=s.filter(m=>!m.users||m.users.length===0);break;case"small":s=s.filter(m=>m.users&&m.users.length>0&&m.users.length<=3);break;case"large":s=s.filter(m=>m.users&&m.users.length>10);break}return s}),Y=a(()=>({total:i.value.totalElements,withMembers:P.value.length,empty:L.value.length,bySize:G.value,totalMembers:i.value.content.reduce((s,m)=>s+(m.users?m.users.length:0),0),averageSize:i.value.content.length>0?Math.round(i.value.content.reduce((s,m)=>s+(m.users?m.users.length:0),0)/i.value.content.length):0})),t=async()=>{try{await Promise.all([d(),h()])}catch(s){console.error("Failed to initialize teams:",s)}},o=async(s={})=>{const m={...s,searchValue:p.value.searchTerm};return await d(m)},u=async s=>(p.value={...p.value,...s},await o()),R=async s=>{const m=await $(s);return await M(m),m},w=async(s,m)=>{const v=await C(s,m);return await M(v),v},se=async s=>{const m=await U(s),v=A.value.findIndex(_=>_.id===s);return v!==-1&&A.value.splice(v,1),m},Z=async(s,m)=>{const v=await H(s,m);return await M(v),v},re=async(s,m)=>{const v=await J(s,m);return await M(v),v},ae=async(s,m)=>{const v=await D(s,m);return await M(v),v},ne=(s=null,m="create")=>{s?(I(s),k.value=m):(g(),k.value="create"),W.value=!0},oe=()=>{W.value=!1,g()},le=s=>{N.value=s,O.value=!0},ie=()=>{O.value=!1,N.value=null},M=s=>{if(!s)return;const m=A.value.findIndex(v=>v.id===s.id);m!==-1&&A.value.splice(m,1),A.value.unshift(s),A.value.length>10&&(A.value=A.value.slice(0,10))},Q=async s=>{const m=i.value.content.find(_=>_.id===s);if(m)return I(m),m;const v=await K(s);return await M(v),v},ce=s=>i.value.content.filter(m=>m.users&&m.users.some(v=>v.id===s)),ue=(s,m)=>{const v=i.value.content.find(_=>_.id===s);return!v||!v.users?!1:v.users.some(_=>_.id===m)},n=()=>{p.value={searchTerm:"",memberCount:"all"}},S=()=>{n(),g(),V(),W.value=!1,O.value=!1,N.value=null,A.value=[]};return{teams:i,selectedTeam:e,loading:r,error:E,searchCriteria:l,miniTeams:T,recentTeams:a(()=>A.value),teamFilters:a(()=>p.value),showTeamModal:a(()=>W.value),teamModalMode:a(()=>k.value),showMemberModal:a(()=>O.value),teamForMemberEdit:a(()=>N.value),emptyTeams:L,teamsWithMembers:P,teamsBySize:G,filteredTeams:z,teamStats:Y,initializeTeams:t,searchWithFilters:o,updateFilters:u,createNewTeam:R,updateExistingTeam:w,deleteExistingTeam:se,addMemberToTeam:Z,removeMemberFromTeam:re,updateMembership:ae,openTeamModal:ne,closeTeamModal:oe,openMemberModal:le,closeMemberModal:ie,addToRecentTeams:M,getTeam:Q,getTeamsByUser:ce,isUserInTeam:ue,clearFilters:n,resetStore:S,searchTeams:d,loadMiniTeams:h,refreshTeams:x,selectTeam:I,clearSelectedTeam:g,clearError:V,formatMemberCount:X,getTeamMemberNames:b,getTeamSummary:F}});class Ae extends Se{constructor(){super("/roles")}async getAllRoles(){try{return(await Ee.get(this.endpoint)).data}catch(e){throw this.handleError(e)}}async getRoleById(e){try{return(await Ee.get(`${this.endpoint}/${e}`)).data}catch(r){throw this.handleError(r)}}async createRole(e){try{return(await Ee.post(this.endpoint,{name:e.name,description:e.description,createPermissions:e.createPermissions||[],viewPermissions:e.viewPermissions||[],viewOtherPermissions:e.viewOtherPermissions||[],editOtherPermissions:e.editOtherPermissions||[],deleteOtherPermissions:e.deleteOtherPermissions||[]})).data}catch(r){throw this.handleError(r)}}async updateRole(e,r){try{return(await Ee.patch(`${this.endpoint}/${e}`,{name:r.name,description:r.description,createPermissions:r.createPermissions,viewPermissions:r.viewPermissions,viewOtherPermissions:r.viewOtherPermissions,editOtherPermissions:r.editOtherPermissions,deleteOtherPermissions:r.deleteOtherPermissions})).data}catch(E){throw this.handleError(E)}}async deleteRole(e){try{return(await Ee.delete(`${this.endpoint}/${e}`)).data}catch(r){throw this.handleError(r)}}getPermissionEntities(){return["PEOPLE_AND_TEAMS","CATEGORIES","WORK_ORDERS","PREVENTIVE_MAINTENANCES","ASSETS","PARTS_AND_MULTIPARTS","PURCHASE_ORDERS","METERS","VENDORS_AND_CUSTOMERS","FILES","LOCATIONS","SETTINGS","REQUESTS","ANALYTICS"]}getPermissionTypes(){return["CREATE","VIEW","VIEW_OTHER","EDIT_OTHER","DELETE_OTHER"]}hasPermission(e,r,E){if(!e||!r||!E)return!1;const T={CREATE:"createPermissions",VIEW:"viewPermissions",VIEW_OTHER:"viewOtherPermissions",EDIT_OTHER:"editOtherPermissions",DELETE_OTHER:"deleteOtherPermissions"}[E];return!T||!e[T]?!1:e[T].includes(r)}getDefaultRoles(){return["ADMIN","LIMITED_ADMIN","TECHNICIAN","LIMITED_TECHNICIAN","VIEW_ONLY","REQUESTER"]}isCustomRole(e){return e.roleType==="USER_CREATED"}isPaidRole(e){return e.paid===!0}getRoleDisplayName(e,r=null){return e?r&&!this.isCustomRole(e)&&r(`roles.${e.code}`)||e.name:""}getRoleDescription(e,r=null){return e?r&&!this.isCustomRole(e)?r(`roles.${e.code}_description`)||e.description:e.description||"":""}async getRoleStats(e){var r,E,l,T,d;try{const h=await this.getRoleById(e);return{roleId:h.id,roleName:h.name,userCount:h.users||0,isCustomRole:this.isCustomRole(h),isPaidRole:this.isPaidRole(h),permissionCount:{create:((r=h.createPermissions)==null?void 0:r.length)||0,view:((E=h.viewPermissions)==null?void 0:E.length)||0,viewOther:((l=h.viewOtherPermissions)==null?void 0:l.length)||0,editOther:((T=h.editOtherPermissions)==null?void 0:T.length)||0,deleteOther:((d=h.deleteOtherPermissions)==null?void 0:d.length)||0}}}catch(h){throw this.handleError(h)}}getPermissionMatrix(e){if(!e)return{};const r=this.getPermissionEntities(),E=this.getPermissionTypes(),l={};return r.forEach(T=>{l[T]={},E.forEach(d=>{l[T][d]=this.hasPermission(e,T,d)})}),l}}const q=new Ae;function pe(){const i=f([]),e=f(null),r=f(!1),E=f(null),l={PEOPLE_AND_TEAMS:"PEOPLE_AND_TEAMS",CATEGORIES:"CATEGORIES",WORK_ORDERS:"WORK_ORDERS",PREVENTIVE_MAINTENANCES:"PREVENTIVE_MAINTENANCES",ASSETS:"ASSETS",PARTS_AND_MULTIPARTS:"PARTS_AND_MULTIPARTS",PURCHASE_ORDERS:"PURCHASE_ORDERS",METERS:"METERS",VENDORS_AND_CUSTOMERS:"VENDORS_AND_CUSTOMERS",FILES:"FILES",LOCATIONS:"LOCATIONS",SETTINGS:"SETTINGS",REQUESTS:"REQUESTS",ANALYTICS:"ANALYTICS"},T={CREATE:"CREATE",VIEW:"VIEW",VIEW_OTHER:"VIEW_OTHER",EDIT_OTHER:"EDIT_OTHER",DELETE_OTHER:"DELETE_OTHER"},d={ADMIN:"ADMIN",LIMITED_ADMIN:"LIMITED_ADMIN",TECHNICIAN:"TECHNICIAN",LIMITED_TECHNICIAN:"LIMITED_TECHNICIAN",VIEW_ONLY:"VIEW_ONLY",REQUESTER:"REQUESTER"},h=a(()=>i.value.length>0),K=a(()=>{var n;return((n=e.value)==null?void 0:n.code)===d.ADMIN}),$=a(()=>{var n;return((n=e.value)==null?void 0:n.code)===d.LIMITED_ADMIN}),C=a(()=>{var n,S;return((n=e.value)==null?void 0:n.code)===d.TECHNICIAN||((S=e.value)==null?void 0:S.code)===d.LIMITED_TECHNICIAN}),U=a(()=>{var n;return((n=e.value)==null?void 0:n.code)===d.VIEW_ONLY}),H=a(()=>{var n;return((n=e.value)==null?void 0:n.code)===d.REQUESTER}),J=async()=>{try{r.value=!0,E.value=null;const n=await q.getAllRoles();return i.value=n,n}catch(n){throw E.value=n.message||"Failed to load roles",console.error("Error loading roles:",n),n}finally{r.value=!1}},D=async n=>{try{return r.value=!0,E.value=null,await q.getRoleById(n)}catch(S){throw E.value=S.message||"Failed to get role details",console.error("Error getting role:",S),S}finally{r.value=!1}},x=n=>{e.value=n},I=(n,S)=>!e.value||!n||!S?!1:q.hasPermission(e.value,n,S),g=n=>I(n,T.VIEW),V=n=>I(n,T.CREATE),X=n=>I(n,T.VIEW_OTHER),b=n=>I(n,T.EDIT_OTHER),F=n=>I(n,T.DELETE_OTHER),A=a(()=>g(l.PEOPLE_AND_TEAMS)),p=a(()=>V(l.PEOPLE_AND_TEAMS)),W=a(()=>b(l.PEOPLE_AND_TEAMS)),k=a(()=>F(l.PEOPLE_AND_TEAMS)),O=a(()=>g(l.ASSETS)),N=a(()=>V(l.ASSETS)),L=a(()=>b(l.ASSETS)),P=a(()=>F(l.ASSETS)),G=a(()=>g(l.WORK_ORDERS)),z=a(()=>V(l.WORK_ORDERS)),Y=a(()=>b(l.WORK_ORDERS)),t=a(()=>F(l.WORK_ORDERS)),o=a(()=>g(l.SETTINGS)),u=a(()=>b(l.SETTINGS)),R=a(()=>g(l.ANALYTICS)),w=()=>Object.values(l),se=()=>Object.values(T),Z=n=>q.isCustomRole(n),re=n=>q.isPaidRole(n),ae=(n,S=null)=>q.getRoleDisplayName(n,S),ne=(n,S=null)=>q.getRoleDescription(n,S),oe=n=>q.getPermissionMatrix(n),le=()=>i.value.filter(n=>!Z(n)),ie=()=>i.value.filter(n=>Z(n)),M=()=>K.value?i.value:$.value?i.value.filter(n=>n.code!==d.ADMIN):[],Q=n=>M().some(s=>s.id===n.id),ce=()=>{E.value=null},ue=()=>r.value;return{availableRoles:a(()=>i.value),currentUserRole:a(()=>e.value),loading:a(()=>r.value),error:a(()=>E.value),PERMISSION_ENTITIES:l,PERMISSION_OPERATIONS:T,DEFAULT_ROLES:d,hasRoles:h,isAdmin:K,isLimitedAdmin:$,isTechnician:C,isViewOnly:U,isRequester:H,loadRoles:J,getRoleById:D,setCurrentUserRole:x,hasPermission:I,canView:g,canCreate:V,canViewOther:X,canEditOther:b,canDeleteOther:F,canViewUsers:A,canCreateUsers:p,canEditUsers:W,canDeleteUsers:k,canViewAssets:O,canCreateAssets:N,canEditAssets:L,canDeleteAssets:P,canViewWorkOrders:G,canCreateWorkOrders:z,canEditWorkOrders:Y,canDeleteWorkOrders:t,canViewSettings:o,canEditSettings:u,canViewAnalytics:R,getPermissionEntities:w,getPermissionOperations:se,isCustomRole:Z,isPaidRole:re,getRoleDisplayName:ae,getRoleDescription:ne,getPermissionMatrix:oe,getDefaultRoles:le,getCustomRoles:ie,getAssignableRoles:M,canAssignRole:Q,clearError:ce,isLoading:ue}}const Pe=he("roles",()=>{const{availableRoles:i,currentUserRole:e,loading:r,error:E,PERMISSION_ENTITIES:l,PERMISSION_OPERATIONS:T,DEFAULT_ROLES:d,loadRoles:h,getRoleById:K,setCurrentUserRole:$,hasPermission:C,canView:U,canCreate:H,canViewOther:J,canEditOther:D,canDeleteOther:x,isCustomRole:I,isPaidRole:g,getRoleDisplayName:V,getRoleDescription:X,getPermissionMatrix:b,getDefaultRoles:F,getCustomRoles:A,getAssignableRoles:p,canAssignRole:W,clearError:k}=pe(),O=f(null),N=f(!1),L=f("view"),P=f({type:"all",paid:"all"}),G=a(()=>i.value.length>0),z=a(()=>F()),Y=a(()=>A()),t=a(()=>p()),o=a(()=>i.value.filter(c=>g(c))),u=a(()=>i.value.filter(c=>!g(c))),R=a(()=>{let c=i.value;return P.value.type==="default"?c=c.filter(y=>!I(y)):P.value.type==="custom"&&(c=c.filter(y=>I(y))),P.value.paid==="paid"?c=c.filter(y=>g(y)):P.value.paid==="free"&&(c=c.filter(y=>!g(y))),c}),w=a(()=>({total:i.value.length,default:z.value.length,custom:Y.value.length,paid:o.value.length,free:u.value.length,assignable:t.value.length})),se=a(()=>({canViewUsers:U(l.PEOPLE_AND_TEAMS),canCreateUsers:H(l.PEOPLE_AND_TEAMS),canEditUsers:D(l.PEOPLE_AND_TEAMS),canDeleteUsers:x(l.PEOPLE_AND_TEAMS)})),Z=a(()=>({canViewAssets:U(l.ASSETS),canCreateAssets:H(l.ASSETS),canEditAssets:D(l.ASSETS),canDeleteAssets:x(l.ASSETS)})),re=a(()=>({canViewWorkOrders:U(l.WORK_ORDERS),canCreateWorkOrders:H(l.WORK_ORDERS),canEditWorkOrders:D(l.WORK_ORDERS),canDeleteWorkOrders:x(l.WORK_ORDERS)})),ae=a(()=>({canViewSettings:U(l.SETTINGS),canEditSettings:D(l.SETTINGS)})),ne=async()=>{try{await h()}catch(c){console.error("Failed to initialize roles:",c)}},oe=c=>{c&&c.role&&$(c.role)},le=c=>{P.value={...P.value,...c}},ie=async c=>{const y=i.value.find(me=>me.id===c);if(y)return O.value=y,y;const ee=await K(c);return O.value=ee,ee},M=c=>{O.value=c},Q=()=>{O.value=null},ce=(c=null,y="view")=>{c?(M(c),L.value=y):(Q(),L.value="create"),N.value=!0},ue=()=>{N.value=!1,Q()},n=c=>{if(!c)return{};const y=b(c),ee=Object.keys(l),me=Object.keys(T),j={totalPermissions:0,byOperation:{},byEntity:{},hasFullAccess:!1};me.forEach(te=>{j.byOperation[te]=0}),ee.forEach(te=>{j.byEntity[te]=0}),ee.forEach(te=>{me.forEach(ve=>{const Te=l[te],fe=T[ve];y[Te]&&y[Te][fe]&&(j.totalPermissions++,j.byOperation[ve]++,j.byEntity[te]++)})});const Re=ee.length*me.length;return j.hasFullAccess=j.totalPermissions===Re,j},S=()=>i.value.filter(c=>W(c)),s=()=>D(l.SETTINGS),m=c=>c?c.code===d.ADMIN||c.code===d.LIMITED_ADMIN?"red":c.code===d.TECHNICIAN||c.code===d.LIMITED_TECHNICIAN?"blue":c.code===d.VIEW_ONLY?"gray":c.code===d.REQUESTER?"green":I(c)?"purple":"blue":"gray",v=c=>c?c.code===d.ADMIN||c.code===d.LIMITED_ADMIN?"shield-check":c.code===d.TECHNICIAN||c.code===d.LIMITED_TECHNICIAN?"wrench":c.code===d.VIEW_ONLY?"eye":c.code===d.REQUESTER?"clipboard-list":I(c)?"cog":"user":"user",_=()=>{P.value={type:"all",paid:"all"}},de=()=>{_(),Q(),k(),N.value=!1};return{availableRoles:i,currentUserRole:e,loading:r,error:E,PERMISSION_ENTITIES:l,PERMISSION_OPERATIONS:T,DEFAULT_ROLES:d,selectedRole:a(()=>O.value),showRoleModal:a(()=>N.value),roleModalMode:a(()=>L.value),roleFilters:a(()=>P.value),hasRoles:G,defaultRoles:z,customRoles:Y,assignableRoles:t,paidRoles:o,freeRoles:u,filteredRoles:R,roleStats:w,userPermissions:se,assetPermissions:Z,workOrderPermissions:re,settingsPermissions:ae,initializeRoles:ne,setCurrentUser:oe,updateFilters:le,getRole:ie,selectRole:M,clearSelectedRole:Q,openRoleModal:ce,closeRoleModal:ue,getPermissionSummary:n,getInvitableRoles:S,canManageRoles:s,getRoleColor:m,getRoleIcon:v,clearFilters:_,resetStore:de,loadRoles:h,getRoleById:K,setCurrentUserRole:$,hasPermission:C,canView:U,canCreate:H,canViewOther:J,canEditOther:D,canDeleteOther:x,isCustomRole:I,isPaidRole:g,getRoleDisplayName:V,getRoleDescription:X,getPermissionMatrix:b,getDefaultRoles:F,getCustomRoles:A,getAssignableRoles:p,canAssignRole:W,clearError:k}});export{Pe as a,ye as u}; diff --git a/frontend/dist/assets/useCategoryDisplay-DheH2kkf.js b/frontend/dist/assets/useCategoryDisplay-DtoUGbrc.js similarity index 96% rename from frontend/dist/assets/useCategoryDisplay-DheH2kkf.js rename to frontend/dist/assets/useCategoryDisplay-DtoUGbrc.js index 05fd6da2..f16fa505 100644 --- a/frontend/dist/assets/useCategoryDisplay-DheH2kkf.js +++ b/frontend/dist/assets/useCategoryDisplay-DtoUGbrc.js @@ -1 +1 @@ -import{aO as M,r as w,c as f,bm as x,bn as L,bo as N,bp as Y,bq as G,b0 as z}from"./index-BUdRbiwj.js";const n={ASSET:"asset-categories",WORK_ORDER:"work-order-categories",PART:"part-categories",COST:"cost-categories",METER:"meter-categories",PURCHASE_ORDER:"purchase-order-categories"},V={[n.ASSET]:"Asset Categories",[n.WORK_ORDER]:"Work Order Categories",[n.PART]:"Parts Categories",[n.COST]:"Cost Categories",[n.METER]:"Meter Categories",[n.PURCHASE_ORDER]:"Purchase Order Categories"},Z={[n.ASSET]:"Organize assets by type, location, or function",[n.WORK_ORDER]:"Classify work orders by maintenance type or urgency",[n.PART]:"Group spare parts and inventory items",[n.COST]:"Track and analyze maintenance costs by category",[n.METER]:"Organize different meter types and readings",[n.PURCHASE_ORDER]:"Classify purchase orders by vendor or department"},W={id:null,name:"",description:"",type:"",color:"#6B7280",icon:"folder",isActive:!0,sortOrder:0,createdAt:null,updatedAt:null,createdBy:null,updatedBy:null},j={name:{minLength:2,maxLength:100,pattern:/^[a-zA-Z0-9\s\-_()]+$/},description:{maxLength:500},color:{pattern:/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/},sortOrder:{min:0,max:9999}},J=["#EF4444","#F97316","#F59E0B","#EAB308","#84CC16","#22C55E","#10B981","#06B6D4","#0EA5E9","#3B82F6","#6366F1","#8B5CF6","#A855F7","#D946EF","#EC4899","#F43F5E","#6B7280","#374151"],Q=["folder","folder-open","tag","bookmark","star","heart","home","building","cog","wrench","hammer","truck","clipboard","document","chart","calculator","package","shopping-cart","dollar-sign","credit-card","users","user","calendar","clock","bell","shield","lock","key","mail","phone","map-pin","globe","server","database","cpu","hard-drive","wifi","bluetooth"],U={ACTIVE:"active",INACTIVE:"inactive"},P={[U.ACTIVE]:"Active",[U.INACTIVE]:"Inactive"},H=[{label:"Name (A-Z)",value:"name_asc"},{label:"Name (Z-A)",value:"name_desc"},{label:"Created Date (Newest)",value:"created_desc"},{label:"Created Date (Oldest)",value:"created_asc"},{label:"Sort Order",value:"sort_order_asc"},{label:"Most Used",value:"usage_desc"}],K={[n.ASSET]:[{name:"HVAC Systems",color:"#3B82F6",icon:"wind"},{name:"Electrical",color:"#F59E0B",icon:"zap"},{name:"Plumbing",color:"#06B6D4",icon:"droplet"},{name:"Mechanical",color:"#6B7280",icon:"cog"},{name:"Safety Equipment",color:"#EF4444",icon:"shield"}],[n.WORK_ORDER]:[{name:"Preventive Maintenance",color:"#22C55E",icon:"calendar"},{name:"Corrective Maintenance",color:"#F97316",icon:"wrench"},{name:"Emergency Repair",color:"#EF4444",icon:"alert-triangle"},{name:"Inspection",color:"#8B5CF6",icon:"search"},{name:"Installation",color:"#10B981",icon:"plus-circle"}],[n.PART]:[{name:"Electrical Components",color:"#F59E0B",icon:"zap"},{name:"Mechanical Parts",color:"#6B7280",icon:"cog"},{name:"Filters",color:"#06B6D4",icon:"filter"},{name:"Fasteners",color:"#84CC16",icon:"link"},{name:"Consumables",color:"#A855F7",icon:"package"}],[n.COST]:[{name:"Labor",color:"#3B82F6",icon:"users"},{name:"Materials",color:"#22C55E",icon:"package"},{name:"Equipment",color:"#F97316",icon:"truck"},{name:"Contractors",color:"#8B5CF6",icon:"briefcase"},{name:"Utilities",color:"#06B6D4",icon:"zap"}]},X=M("categories",()=>{const s=w(new Map),l=w(!1),c=w(null),h=w(new Map),C=e=>{switch(e){case n.WORK_ORDER:return z;case n.ASSET:return G;case n.PART:return Y;case n.COST:return N;case n.METER:return L;case n.PURCHASE_ORDER:return x;default:throw new Error(`Unknown category type: ${e}`)}},A=f(()=>e=>s.value.get(e)||[]),F=f(()=>e=>(s.value.get(e)||[]).filter(a=>a.isActive)),D=f(()=>(e,r)=>(s.value.get(e)||[]).find(o=>o.id===r)),k=f(()=>e=>F.value(e).sort((a,o)=>a.sortOrder-o.sortOrder||a.name.localeCompare(o.name)).map(a=>({label:a.name,value:a.id,color:a.color,icon:a.icon}))),_=f(()=>e=>{const r=s.value.get(e)||[];return{total:r.length,active:r.filter(a=>a.isActive).length,inactive:r.filter(a=>!a.isActive).length}}),B=f(()=>e=>l.value),T=f(()=>e=>s.value.has(e)&&s.value.get(e).length>0),b=async(e,r=!1)=>{const a=e,o=Date.now(),u=h.value.get(a),y=5*60*1e3;if(!(!r&&u&&o-u{l.value=!0,c.value=null;try{const o=await C(e).create(r),u=s.value.get(e)||[];return s.value.set(e,[...u,o]),o}catch(a){throw c.value=a.message,console.error(`Failed to create ${e} category:`,a),a}finally{l.value=!1}},t=async(e,r,a)=>{l.value=!0,c.value=null;try{const u=await C(e).update(r,a),y=s.value.get(e)||[],g=y.findIndex(E=>E.id===r);return g!==-1&&(y[g]=u,s.value.set(e,[...y])),u}catch(o){throw c.value=o.message,console.error(`Failed to update ${e} category:`,o),o}finally{l.value=!1}},i=async(e,r)=>{l.value=!0,c.value=null;try{await C(e).delete(r);const o=s.value.get(e)||[];s.value.set(e,o.filter(u=>u.id!==r))}catch(a){throw c.value=a.message,console.error(`Failed to delete ${e} category:`,a),a}finally{l.value=!1}},m=async(e,r={})=>{l.value=!0,c.value=null;try{const o=await C(e).getByFilters(r);return s.value.set(e,o),o}catch(a){throw c.value=a.message,console.error(`Failed to search ${e} categories:`,a),a}finally{l.value=!1}},v=async(e,r)=>{l.value=!0,c.value=null;try{const o=await C(e).updateSortOrders(r);return s.value.set(e,o),o}catch(a){throw c.value=a.message,console.error(`Failed to bulk update ${e} category sort orders:`,a),a}finally{l.value=!1}},p=async e=>{l.value=!0,c.value=null;try{await b(e);const r=s.value.get(e)||[];if(r.length>0)return console.log(`Categories for ${e} already exist, skipping default initialization`),r;const a=K[e]||[],o=C(e),u=[];for(let y=0;yawait b(e,!0),R=e=>{e?(s.value.delete(e),h.value.delete(e)):(s.value.clear(),h.value.clear())},S=()=>{c.value=null},d=async(e=Object.values(n),r=!1)=>{const a=e.map(o=>b(o,r));await Promise.allSettled(a)};return{categories:f(()=>s.value),loading:f(()=>l.value),error:f(()=>c.value),getCategoriesByType:A,getActiveCategoriesByType:F,getCategoryById:D,getCategoryOptions:k,getCategoryStats:_,isLoading:B,hasCategories:T,fetchCategories:b,createCategory:I,updateCategory:t,deleteCategory:i,searchCategories:m,bulkUpdateSortOrder:v,initializeWithDefaults:p,refreshCategories:O,clearCache:R,clearError:S,fetchAllCategories:d}});function ee(){const s=t=>t?P.active:P.inactive,l=t=>t?"success":"secondary",c=t=>t===0?"secondary":t<=5?"warning":t<=20?"info":"success",h=t=>V[t]||t,C=t=>t?t.startsWith("#")?t:`#${t}`:"#6B7280",A=t=>{if(!t)return"#FFFFFF";const i=t.replace("#",""),m=parseInt(i.substr(0,2),16),v=parseInt(i.substr(2,2),16),p=parseInt(i.substr(4,2),16);return(.299*m+.587*v+.114*p)/255>.5?"#000000":"#FFFFFF"};return{formatCategoryStatus:s,formatCategoryType:h,formatCategoryColor:C,formatCategoryIcon:t=>t?t.toLowerCase().replace(/_/g,"-"):"folder",formatCategoryDate:t=>{if(!t)return"N/A";const i=new Date(t),v=(new Date-i)/(1e3*60*60);return v<24?"Today":v<48?"Yesterday":v<168?`${Math.floor(v/24)} days ago`:i.toLocaleDateString()},getCategoryStatusVariant:l,getCategoryUsageVariant:c,getContrastTextColor:A,getCategoryStyles:t=>{const i=C(t.color);return{backgroundColor:i,color:A(i),border:`1px solid ${i}`,borderRadius:"6px",padding:"4px 8px"}},getCategoryStats:t=>{if(!t||t.length===0)return{total:0,active:0,inactive:0,recentlyCreated:0,mostUsed:null,leastUsed:null};const i=t.length,m=t.filter(d=>d.isActive).length,v=i-m,p=new Date;p.setDate(p.getDate()-30);const O=t.filter(d=>d.createdAt&&new Date(d.createdAt)>=p).length;let R=null,S=null;if(t.some(d=>d.usageCount!==void 0)){const d=t.filter(e=>e.isActive);R=d.reduce((e,r)=>(r.usageCount||0)>(e.usageCount||0)?r:e,d[0]),S=d.reduce((e,r)=>(r.usageCount||0)<(e.usageCount||0)?r:e,d[0])}return{total:i,active:m,inactive:v,recentlyCreated:O,mostUsed:R,leastUsed:S}},formatCategoryStatsForDisplay:(t,i)=>[{label:"Total Categories",value:t.total,change:t.recentlyCreated>0?`+${t.recentlyCreated} this month`:null,trend:t.recentlyCreated>0?"up":"neutral",icon:"folder"},{label:"Active",value:t.active,sublabel:t.total>0?`${Math.round(t.active/t.total*100)}% of total`:"0%",trend:"neutral",icon:"check-circle"},{label:"Inactive",value:t.inactive,sublabel:t.total>0?`${Math.round(t.inactive/t.total*100)}% of total`:"0%",trend:"neutral",icon:"x-circle"},{label:"Most Used",value:t.mostUsed?t.mostUsed.name:"N/A",sublabel:t.mostUsed?`${t.mostUsed.usageCount||0} uses`:"No usage data",trend:"neutral",icon:"trending-up"}],getCategoryTableColumns:(t=!1)=>t?[{key:"name",label:"Category",sortable:!0,width:"60%"},{key:"status",label:"Status",sortable:!0,width:"25%"},{key:"actions",label:"Actions",sortable:!1,width:"15%"}]:[{key:"name",label:"Name",sortable:!0,width:"25%"},{key:"description",label:"Description",sortable:!1,width:"30%"},{key:"appearance",label:"Appearance",sortable:!1,width:"15%"},{key:"status",label:"Status",sortable:!0,width:"10%"},{key:"sortOrder",label:"Order",sortable:!0,width:"10%"},{key:"actions",label:"Actions",sortable:!1,width:"10%"}],getCategoryStatusTabs:t=>[{key:"all",label:"All Categories",count:t.total},{key:"active",label:"Active",count:t.active},{key:"inactive",label:"Inactive",count:t.inactive}],getCategorySortOptions:()=>H}}export{Z as C,V as a,n as b,ee as c,J as d,Q as e,W as f,j as g,X as u}; +import{aP as M,r as w,c as f,bm as x,bn as L,bo as N,bp as Y,bq as G,b1 as z}from"./index-QAlcqU00.js";const n={ASSET:"asset-categories",WORK_ORDER:"work-order-categories",PART:"part-categories",COST:"cost-categories",METER:"meter-categories",PURCHASE_ORDER:"purchase-order-categories"},V={[n.ASSET]:"Asset Categories",[n.WORK_ORDER]:"Work Order Categories",[n.PART]:"Parts Categories",[n.COST]:"Cost Categories",[n.METER]:"Meter Categories",[n.PURCHASE_ORDER]:"Purchase Order Categories"},Z={[n.ASSET]:"Organize assets by type, location, or function",[n.WORK_ORDER]:"Classify work orders by maintenance type or urgency",[n.PART]:"Group spare parts and inventory items",[n.COST]:"Track and analyze maintenance costs by category",[n.METER]:"Organize different meter types and readings",[n.PURCHASE_ORDER]:"Classify purchase orders by vendor or department"},W={id:null,name:"",description:"",type:"",color:"#6B7280",icon:"folder",isActive:!0,sortOrder:0,createdAt:null,updatedAt:null,createdBy:null,updatedBy:null},j={name:{minLength:2,maxLength:100,pattern:/^[a-zA-Z0-9\s\-_()]+$/},description:{maxLength:500},color:{pattern:/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/},sortOrder:{min:0,max:9999}},J=["#EF4444","#F97316","#F59E0B","#EAB308","#84CC16","#22C55E","#10B981","#06B6D4","#0EA5E9","#3B82F6","#6366F1","#8B5CF6","#A855F7","#D946EF","#EC4899","#F43F5E","#6B7280","#374151"],Q=["folder","folder-open","tag","bookmark","star","heart","home","building","cog","wrench","hammer","truck","clipboard","document","chart","calculator","package","shopping-cart","dollar-sign","credit-card","users","user","calendar","clock","bell","shield","lock","key","mail","phone","map-pin","globe","server","database","cpu","hard-drive","wifi","bluetooth"],P={ACTIVE:"active",INACTIVE:"inactive"},U={[P.ACTIVE]:"Active",[P.INACTIVE]:"Inactive"},H=[{label:"Name (A-Z)",value:"name_asc"},{label:"Name (Z-A)",value:"name_desc"},{label:"Created Date (Newest)",value:"created_desc"},{label:"Created Date (Oldest)",value:"created_asc"},{label:"Sort Order",value:"sort_order_asc"},{label:"Most Used",value:"usage_desc"}],K={[n.ASSET]:[{name:"HVAC Systems",color:"#3B82F6",icon:"wind"},{name:"Electrical",color:"#F59E0B",icon:"zap"},{name:"Plumbing",color:"#06B6D4",icon:"droplet"},{name:"Mechanical",color:"#6B7280",icon:"cog"},{name:"Safety Equipment",color:"#EF4444",icon:"shield"}],[n.WORK_ORDER]:[{name:"Preventive Maintenance",color:"#22C55E",icon:"calendar"},{name:"Corrective Maintenance",color:"#F97316",icon:"wrench"},{name:"Emergency Repair",color:"#EF4444",icon:"alert-triangle"},{name:"Inspection",color:"#8B5CF6",icon:"search"},{name:"Installation",color:"#10B981",icon:"plus-circle"}],[n.PART]:[{name:"Electrical Components",color:"#F59E0B",icon:"zap"},{name:"Mechanical Parts",color:"#6B7280",icon:"cog"},{name:"Filters",color:"#06B6D4",icon:"filter"},{name:"Fasteners",color:"#84CC16",icon:"link"},{name:"Consumables",color:"#A855F7",icon:"package"}],[n.COST]:[{name:"Labor",color:"#3B82F6",icon:"users"},{name:"Materials",color:"#22C55E",icon:"package"},{name:"Equipment",color:"#F97316",icon:"truck"},{name:"Contractors",color:"#8B5CF6",icon:"briefcase"},{name:"Utilities",color:"#06B6D4",icon:"zap"}]},X=M("categories",()=>{const s=w(new Map),l=w(!1),c=w(null),h=w(new Map),C=e=>{switch(e){case n.WORK_ORDER:return z;case n.ASSET:return G;case n.PART:return Y;case n.COST:return N;case n.METER:return L;case n.PURCHASE_ORDER:return x;default:throw new Error(`Unknown category type: ${e}`)}},A=f(()=>e=>s.value.get(e)||[]),F=f(()=>e=>(s.value.get(e)||[]).filter(a=>a.isActive)),D=f(()=>(e,r)=>(s.value.get(e)||[]).find(o=>o.id===r)),k=f(()=>e=>F.value(e).sort((a,o)=>a.sortOrder-o.sortOrder||a.name.localeCompare(o.name)).map(a=>({label:a.name,value:a.id,color:a.color,icon:a.icon}))),_=f(()=>e=>{const r=s.value.get(e)||[];return{total:r.length,active:r.filter(a=>a.isActive).length,inactive:r.filter(a=>!a.isActive).length}}),B=f(()=>e=>l.value),T=f(()=>e=>s.value.has(e)&&s.value.get(e).length>0),b=async(e,r=!1)=>{const a=e,o=Date.now(),u=h.value.get(a),y=5*60*1e3;if(!(!r&&u&&o-u{l.value=!0,c.value=null;try{const o=await C(e).create(r),u=s.value.get(e)||[];return s.value.set(e,[...u,o]),o}catch(a){throw c.value=a.message,console.error(`Failed to create ${e} category:`,a),a}finally{l.value=!1}},t=async(e,r,a)=>{l.value=!0,c.value=null;try{const u=await C(e).update(r,a),y=s.value.get(e)||[],g=y.findIndex(E=>E.id===r);return g!==-1&&(y[g]=u,s.value.set(e,[...y])),u}catch(o){throw c.value=o.message,console.error(`Failed to update ${e} category:`,o),o}finally{l.value=!1}},i=async(e,r)=>{l.value=!0,c.value=null;try{await C(e).delete(r);const o=s.value.get(e)||[];s.value.set(e,o.filter(u=>u.id!==r))}catch(a){throw c.value=a.message,console.error(`Failed to delete ${e} category:`,a),a}finally{l.value=!1}},m=async(e,r={})=>{l.value=!0,c.value=null;try{const o=await C(e).getByFilters(r);return s.value.set(e,o),o}catch(a){throw c.value=a.message,console.error(`Failed to search ${e} categories:`,a),a}finally{l.value=!1}},v=async(e,r)=>{l.value=!0,c.value=null;try{const o=await C(e).updateSortOrders(r);return s.value.set(e,o),o}catch(a){throw c.value=a.message,console.error(`Failed to bulk update ${e} category sort orders:`,a),a}finally{l.value=!1}},p=async e=>{l.value=!0,c.value=null;try{await b(e);const r=s.value.get(e)||[];if(r.length>0)return console.log(`Categories for ${e} already exist, skipping default initialization`),r;const a=K[e]||[],o=C(e),u=[];for(let y=0;yawait b(e,!0),R=e=>{e?(s.value.delete(e),h.value.delete(e)):(s.value.clear(),h.value.clear())},S=()=>{c.value=null},d=async(e=Object.values(n),r=!1)=>{const a=e.map(o=>b(o,r));await Promise.allSettled(a)};return{categories:f(()=>s.value),loading:f(()=>l.value),error:f(()=>c.value),getCategoriesByType:A,getActiveCategoriesByType:F,getCategoryById:D,getCategoryOptions:k,getCategoryStats:_,isLoading:B,hasCategories:T,fetchCategories:b,createCategory:I,updateCategory:t,deleteCategory:i,searchCategories:m,bulkUpdateSortOrder:v,initializeWithDefaults:p,refreshCategories:O,clearCache:R,clearError:S,fetchAllCategories:d}});function ee(){const s=t=>t?U.active:U.inactive,l=t=>t?"success":"secondary",c=t=>t===0?"secondary":t<=5?"warning":t<=20?"info":"success",h=t=>V[t]||t,C=t=>t?t.startsWith("#")?t:`#${t}`:"#6B7280",A=t=>{if(!t)return"#FFFFFF";const i=t.replace("#",""),m=parseInt(i.substr(0,2),16),v=parseInt(i.substr(2,2),16),p=parseInt(i.substr(4,2),16);return(.299*m+.587*v+.114*p)/255>.5?"#000000":"#FFFFFF"};return{formatCategoryStatus:s,formatCategoryType:h,formatCategoryColor:C,formatCategoryIcon:t=>t?t.toLowerCase().replace(/_/g,"-"):"folder",formatCategoryDate:t=>{if(!t)return"N/A";const i=new Date(t),v=(new Date-i)/(1e3*60*60);return v<24?"Today":v<48?"Yesterday":v<168?`${Math.floor(v/24)} days ago`:i.toLocaleDateString()},getCategoryStatusVariant:l,getCategoryUsageVariant:c,getContrastTextColor:A,getCategoryStyles:t=>{const i=C(t.color);return{backgroundColor:i,color:A(i),border:`1px solid ${i}`,borderRadius:"6px",padding:"4px 8px"}},getCategoryStats:t=>{if(!t||t.length===0)return{total:0,active:0,inactive:0,recentlyCreated:0,mostUsed:null,leastUsed:null};const i=t.length,m=t.filter(d=>d.isActive).length,v=i-m,p=new Date;p.setDate(p.getDate()-30);const O=t.filter(d=>d.createdAt&&new Date(d.createdAt)>=p).length;let R=null,S=null;if(t.some(d=>d.usageCount!==void 0)){const d=t.filter(e=>e.isActive);R=d.reduce((e,r)=>(r.usageCount||0)>(e.usageCount||0)?r:e,d[0]),S=d.reduce((e,r)=>(r.usageCount||0)<(e.usageCount||0)?r:e,d[0])}return{total:i,active:m,inactive:v,recentlyCreated:O,mostUsed:R,leastUsed:S}},formatCategoryStatsForDisplay:(t,i)=>[{label:"Total Categories",value:t.total,change:t.recentlyCreated>0?`+${t.recentlyCreated} this month`:null,trend:t.recentlyCreated>0?"up":"neutral",icon:"folder"},{label:"Active",value:t.active,sublabel:t.total>0?`${Math.round(t.active/t.total*100)}% of total`:"0%",trend:"neutral",icon:"check-circle"},{label:"Inactive",value:t.inactive,sublabel:t.total>0?`${Math.round(t.inactive/t.total*100)}% of total`:"0%",trend:"neutral",icon:"x-circle"},{label:"Most Used",value:t.mostUsed?t.mostUsed.name:"N/A",sublabel:t.mostUsed?`${t.mostUsed.usageCount||0} uses`:"No usage data",trend:"neutral",icon:"trending-up"}],getCategoryTableColumns:(t=!1)=>t?[{key:"name",label:"Category",sortable:!0,width:"60%"},{key:"status",label:"Status",sortable:!0,width:"25%"},{key:"actions",label:"Actions",sortable:!1,width:"15%"}]:[{key:"name",label:"Name",sortable:!0,width:"25%"},{key:"description",label:"Description",sortable:!1,width:"30%"},{key:"appearance",label:"Appearance",sortable:!1,width:"15%"},{key:"status",label:"Status",sortable:!0,width:"10%"},{key:"sortOrder",label:"Order",sortable:!0,width:"10%"},{key:"actions",label:"Actions",sortable:!1,width:"10%"}],getCategoryStatusTabs:t=>[{key:"all",label:"All Categories",count:t.total},{key:"active",label:"Active",count:t.active},{key:"inactive",label:"Inactive",count:t.inactive}],getCategorySortOptions:()=>H}}export{Z as C,V as a,n as b,ee as c,J as d,Q as e,W as f,j as g,X as u}; diff --git a/frontend/dist/assets/useContractManagement-OiJwK-RO.js b/frontend/dist/assets/useContractManagement-OiJwK-RO.js new file mode 100644 index 00000000..71774d71 --- /dev/null +++ b/frontend/dist/assets/useContractManagement-OiJwK-RO.js @@ -0,0 +1 @@ +import{bc as B,aP as W,r as H,c as p}from"./index-QAlcqU00.js";class k extends B{constructor(){super("/contracts")}async search(t={}){const r=new URLSearchParams;t.page!==void 0&&r.append("page",t.page.toString()),t.size!==void 0&&r.append("size",t.size.toString()),t.search&&r.append("search",t.search),t.status&&r.append("status",t.status),t.contractType&&r.append("contractType",t.contractType),t.vendorId&&r.append("vendorId",t.vendorId.toString()),t.sortBy&&r.append("sortBy",t.sortBy),t.direction&&r.append("direction",t.direction);const n=r.toString(),o=n?`/contracts?${n}`:"/contracts";return this.get(o)}async getById(t){return this.get(`/contracts/${t}`)}async create(t){return this.post("/contracts",t)}async update(t,r){return this.put(`/contracts/${t}`,r)}async delete(t){return this.deleteRequest(`/contracts/${t}`)}async getExpiringContracts(t=30){const r=new URLSearchParams;return r.append("days",t.toString()),this.get(`/contracts/expiring?${r.toString()}`)}async getByVendor(t,r={}){const n=new URLSearchParams;return n.append("vendorId",t.toString()),r.status&&n.append("status",r.status),this.get(`/contracts?${n.toString()}`)}async getDocuments(t){return this.get(`/contracts/${t}/documents`)}async uploadDocument(t,r,n){const o=new FormData;return o.append("file",r),Object.entries(n).forEach(([c,y])=>{y!=null&&o.append(c,y.toString())}),this.post(`/contracts/${t}/documents`,o,{headers:{}})}async deleteDocument(t,r){return this.deleteRequest(`/contracts/${t}/documents/${r}`)}async downloadDocument(t,r){const n=await this.request(`/contracts/${t}/documents/${r}/download`,{method:"GET"});if(!n.ok)throw new Error("Failed to download document");return n.blob()}async getSLAs(t){return this.get(`/contracts/${t}/slas`)}async createSLA(t,r){return this.post(`/contracts/${t}/slas`,r)}async updateSLA(t,r,n){return this.put(`/contracts/${t}/slas/${r}`,n)}async deleteSLA(t,r){return this.deleteRequest(`/contracts/${t}/slas/${r}`)}async getMilestones(t){return this.get(`/contracts/${t}/milestones`)}async createMilestone(t,r){return this.post(`/contracts/${t}/milestones`,r)}async updateMilestone(t,r,n){return this.put(`/contracts/${t}/milestones/${r}`,n)}async deleteMilestone(t,r){return this.deleteRequest(`/contracts/${t}/milestones/${r}`)}async completeMilestone(t,r,n){return this.post(`/contracts/${t}/milestones/${r}/complete`,n)}async renewContract(t,r){return this.post(`/contracts/${t}/renew`,r)}async terminateContract(t,r){return this.post(`/contracts/${t}/terminate`,r)}async getAlerts(t={}){const r=new URLSearchParams;t.type&&r.append("type",t.type),t.severity&&r.append("severity",t.severity),t.acknowledged!==void 0&&r.append("acknowledged",t.acknowledged.toString());const n=r.toString(),o=n?`/contracts/alerts?${n}`:"/contracts/alerts";return this.get(o)}async acknowledgeAlert(t,r){return this.post(`/contracts/alerts/${t}/acknowledge`,r)}async getAnalytics(t={}){const r=new URLSearchParams;t.period&&r.append("period",t.period),t.startDate&&r.append("startDate",t.startDate),t.endDate&&r.append("endDate",t.endDate);const n=r.toString(),o=n?`/contracts/analytics?${n}`:"/contracts/analytics";return this.get(o)}async export(t={}){const r=new URLSearchParams;t.format&&r.append("format",t.format),t.fields&&r.append("fields",t.fields.join(",")),t.filters&&Object.entries(t.filters).forEach(([o,c])=>{c!=null&&r.append(o,c.toString())});const n=await this.request(`/contracts/export?${r.toString()}`,{method:"GET"});if(!n.ok)throw new Error("Failed to export contracts");return n.blob()}}const f={SERVICE:"service",MAINTENANCE:"maintenance",WARRANTY:"warranty",LEASE:"lease",PURCHASE:"purchase",SOFTWARE_LICENSE:"software_license",INSURANCE:"insurance",CONSULTING:"consulting"},u={DRAFT:"draft",PENDING_APPROVAL:"pending_approval",ACTIVE:"active",EXPIRED:"expired",TERMINATED:"terminated",CANCELLED:"cancelled",RENEWED:"renewed"},d={LOW:"low",MEDIUM:"medium",HIGH:"high",CRITICAL:"critical"},G={AUTO_RENEW:"auto_renew",MANUAL_RENEW:"manual_renew",DO_NOT_RENEW:"do_not_renew",UNDER_REVIEW:"under_review"},Y={NET_15:"net_15",NET_30:"net_30",NET_45:"net_45",NET_60:"net_60",NET_90:"net_90",COD:"cod",PREPAID:"prepaid",MONTHLY:"monthly",QUARTERLY:"quarterly",ANNUALLY:"annually"},z={contractNumber:{required:!0,type:"string",minLength:3,maxLength:50,pattern:/^[A-Z0-9-]+$/},title:{required:!0,type:"string",minLength:3,maxLength:200},description:{required:!1,type:"string",maxLength:1e3},contractType:{required:!0,type:"string",enum:Object.values(f)},status:{required:!0,type:"string",enum:Object.values(u)},priority:{required:!0,type:"string",enum:Object.values(d)},vendorId:{required:!0,type:"number",min:1},startDate:{required:!0,type:"date"},endDate:{required:!0,type:"date"},contractValue:{required:!1,type:"number",min:0},currency:{required:!1,type:"string",default:"USD"},paymentTerms:{required:!1,type:"string",enum:Object.values(Y)},renewalStatus:{required:!1,type:"string",enum:Object.values(G)},autoRenew:{required:!1,type:"boolean",default:!1},renewalNotificationDays:{required:!1,type:"number",min:1,max:365,default:30}};function X(e,t=z){const r=[];for(const[n,o]of Object.entries(t)){const c=e[n];if(o.required&&(c==null||c==="")){r.push(`${n} is required`);continue}if(!(!o.required&&(c==null||c===""))){if(o.type&&!K(c,o.type)){r.push(`${n} must be of type ${o.type}`);continue}if(o.type==="string"&&typeof c=="string"&&(o.minLength&&c.lengtho.maxLength&&r.push(`${n} must be no more than ${o.maxLength} characters`),o.pattern&&!o.pattern.test(c)&&r.push(`${n} format is invalid`)),o.type==="number"&&typeof c=="number"&&(o.min!==void 0&&co.max&&r.push(`${n} must be no more than ${o.max}`)),o.enum&&!o.enum.includes(c)&&r.push(`${n} must be one of: ${o.enum.join(", ")}`),o.type==="date"&&c){const y=new Date(c);isNaN(y.getTime())&&r.push(`${n} must be a valid date`)}}}if(e.startDate&&e.endDate){const n=new Date(e.startDate);new Date(e.endDate)<=n&&r.push("End date must be after start date")}return{isValid:r.length===0,errors:r}}function K(e,t){switch(t){case"string":return typeof e=="string";case"number":return typeof e=="number"&&!isNaN(e);case"boolean":return typeof e=="boolean";case"date":return e instanceof Date||typeof e=="string"&&!isNaN(Date.parse(e));case"array":return Array.isArray(e);case"object":return typeof e=="object"&&e!==null&&!Array.isArray(e);default:return!0}}function J(e){const n=new Date(e)-new Date;return Math.ceil(n/(1e3*60*60*24))}function tt(e){const t={[u.DRAFT]:{label:"Draft",color:"gray",bgColor:"bg-gray-100",textColor:"text-gray-800"},[u.PENDING_APPROVAL]:{label:"Pending Approval",color:"yellow",bgColor:"bg-yellow-100",textColor:"text-yellow-800"},[u.ACTIVE]:{label:"Active",color:"green",bgColor:"bg-green-100",textColor:"text-green-800"},[u.EXPIRED]:{label:"Expired",color:"red",bgColor:"bg-red-100",textColor:"text-red-800"},[u.TERMINATED]:{label:"Terminated",color:"red",bgColor:"bg-red-100",textColor:"text-red-800"},[u.CANCELLED]:{label:"Cancelled",color:"gray",bgColor:"bg-gray-100",textColor:"text-gray-800"},[u.RENEWED]:{label:"Renewed",color:"blue",bgColor:"bg-blue-100",textColor:"text-blue-800"}};return t[e]||t[u.DRAFT]}function et(e){const t={[d.LOW]:{label:"Low",color:"green",bgColor:"bg-green-100",textColor:"text-green-800"},[d.MEDIUM]:{label:"Medium",color:"yellow",bgColor:"bg-yellow-100",textColor:"text-yellow-800"},[d.HIGH]:{label:"High",color:"orange",bgColor:"bg-orange-100",textColor:"text-orange-800"},[d.CRITICAL]:{label:"Critical",color:"red",bgColor:"bg-red-100",textColor:"text-red-800"}};return t[e]||t[d.MEDIUM]}function rt(e){return{[f.SERVICE]:"Service",[f.MAINTENANCE]:"Maintenance",[f.WARRANTY]:"Warranty",[f.LEASE]:"Lease",[f.PURCHASE]:"Purchase",[f.SOFTWARE_LICENSE]:"Software License",[f.INSURANCE]:"Insurance",[f.CONSULTING]:"Consulting"}[e]||e}function nt(e){return{[u.DRAFT]:"Draft",[u.PENDING_APPROVAL]:"Pending Approval",[u.ACTIVE]:"Active",[u.EXPIRED]:"Expired",[u.TERMINATED]:"Terminated",[u.RENEWED]:"Renewed"}[e]||e}function at(e){return{[d.LOW]:"Low",[d.MEDIUM]:"Medium",[d.HIGH]:"High",[d.CRITICAL]:"Critical"}[e]||e}let h=new k;const Q=W("contracts",{state:()=>({contracts:[],currentContract:null,loading:!1,error:null,initialized:!1,totalElements:0,totalPages:0,searchCriteria:{page:0,size:10,sortBy:"contractNumber",direction:"ASC",search:"",filters:{}},contractAlerts:[],contractDocuments:{},contractSLAs:{},contractMilestones:{},contractAnalytics:{}}),getters:{getContractById:e=>t=>e.contracts.find(r=>r.id===t),activeContracts:e=>e.contracts.filter(t=>t.status===u.ACTIVE),expiredContracts:e=>e.contracts.filter(t=>t.status===u.EXPIRED),pendingApprovalContracts:e=>e.contracts.filter(t=>t.status===u.PENDING_APPROVAL),getContractsByVendor:e=>t=>e.contracts.filter(r=>r.vendorId===t),getContractsByType:e=>t=>e.contracts.filter(r=>r.contractType===t),highPriorityContracts:e=>e.contracts.filter(t=>t.priority===d.HIGH||t.priority===d.CRITICAL),expiringSoonContracts:e=>{const t=new Date;return t.setDate(t.getDate()+30),e.contracts.filter(r=>{if(r.status!==u.ACTIVE)return!1;const n=new Date(r.endDate);return n<=t&&n>new Date})},filteredContracts:e=>{let t=[...e.contracts];if(e.searchCriteria.search){const r=e.searchCriteria.search.toLowerCase();t=t.filter(n=>{var o,c,y,m;return((o=n.contractNumber)==null?void 0:o.toLowerCase().includes(r))||((c=n.title)==null?void 0:c.toLowerCase().includes(r))||((y=n.vendorName)==null?void 0:y.toLowerCase().includes(r))||((m=n.description)==null?void 0:m.toLowerCase().includes(r))})}return e.searchCriteria.filters.status&&(t=t.filter(r=>r.status===e.searchCriteria.filters.status)),e.searchCriteria.filters.contractType&&(t=t.filter(r=>r.contractType===e.searchCriteria.filters.contractType)),e.searchCriteria.filters.vendorId&&(t=t.filter(r=>r.vendorId===e.searchCriteria.filters.vendorId)),t},contractStats:e=>{const t={total:e.contracts.length,active:0,expired:0,pendingApproval:0,terminated:0,totalValue:0,averageValue:0,byType:{},byPriority:{low:0,medium:0,high:0,critical:0}};return e.contracts.forEach(r=>{switch(r.status){case u.ACTIVE:t.active++;break;case u.EXPIRED:t.expired++;break;case u.PENDING_APPROVAL:t.pendingApproval++;break;case u.TERMINATED:t.terminated++;break}t.totalValue+=r.contractValue||0;const n=r.contractType||"UNKNOWN";t.byType[n]=(t.byType[n]||0)+1,t.byPriority[r.priority]!==void 0&&t.byPriority[r.priority]++}),t.averageValue=t.total>0?t.totalValue/t.total:0,t},contractsRequiringAttention:(e,t)=>[...t.expiringSoonContracts,...t.pendingApprovalContracts].filter((r,n,o)=>o.findIndex(c=>c.id===r.id)===n),contractDocumentsById:e=>t=>e.contractDocuments[t]||[],contractSLAsById:e=>t=>e.contractSLAs[t]||[],contractMilestonesById:e=>t=>e.contractMilestones[t]||[]},actions:{async fetchContracts(e=null){this.loading=!0,this.error=null;try{const t=e||this.searchCriteria,r=await h.search(t);this.contracts=r.content||r,this.totalElements=r.totalElements||this.contracts.length,this.totalPages=r.totalPages||1}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async fetchContractById(e){this.loading=!0,this.error=null;try{const t=await h.getById(e);return this.currentContract=t,t}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async createContract(e){this.loading=!0,this.error=null;try{const t=await h.create(e);return this.contracts.push(t),this.currentContract=t,t}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async updateContract(e,t){var r;this.loading=!0,this.error=null;try{const n=await h.update(e,t),o=this.contracts.findIndex(c=>c.id===e);return o!==-1&&(this.contracts[o]=n),((r=this.currentContract)==null?void 0:r.id)===e&&(this.currentContract=n),n}catch(n){throw this.error=n.message,n}finally{this.loading=!1}},async deleteContract(e){var t;this.loading=!0,this.error=null;try{await h.delete(e);const r=this.contracts.findIndex(n=>n.id===e);r!==-1&&this.contracts.splice(r,1),((t=this.currentContract)==null?void 0:t.id)===e&&(this.currentContract=null)}catch(r){throw this.error=r.message,r}finally{this.loading=!1}},async renewContract(e,t){this.loading=!0,this.error=null;try{const r=await h.renewContract(e,t);return this.contracts.push(r),r}catch(r){throw this.error=r.message,r}finally{this.loading=!1}},async terminateContract(e,t){var r;this.loading=!0,this.error=null;try{const n=await h.terminateContract(e,t),o=this.contracts.findIndex(c=>c.id===e);return o!==-1&&(this.contracts[o]=n),((r=this.currentContract)==null?void 0:r.id)===e&&(this.currentContract=n),n}catch(n){throw this.error=n.message,n}finally{this.loading=!1}},async getExpiringContracts(e=30){this.loading=!0,this.error=null;try{return await h.getExpiringContracts(e)}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async getVendorContracts(e,t={}){this.loading=!0,this.error=null;try{return await h.getByVendor(e,t)}catch(r){throw this.error=r.message,r}finally{this.loading=!1}},async updateSearchTerm(e){this.searchCriteria.search=e,this.searchCriteria.page=0,await this.fetchContracts()},async updateFilters(e){this.searchCriteria.filters={...this.searchCriteria.filters,...e},this.searchCriteria.page=0,await this.fetchContracts()},async changePage(e){this.searchCriteria.page=e,await this.fetchContracts()},async changeSorting(e,t){this.searchCriteria.sortBy=e,this.searchCriteria.direction=t,this.searchCriteria.page=0,await this.fetchContracts()},async refreshContracts(){await this.fetchContracts()},async initializeContracts(){this.initialized||(await this.fetchContracts(),this.initialized=!0)},async getContractDocuments(e){this.loading=!0,this.error=null;try{const t=await h.getDocuments(e);return this.contractDocuments[e]=t,t}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async uploadContractDocument(e,t,r){this.loading=!0,this.error=null;try{const n=await h.uploadDocument(e,t,r);return this.contractDocuments[e]||(this.contractDocuments[e]=[]),this.contractDocuments[e].push(n),n}catch(n){throw this.error=n.message,n}finally{this.loading=!1}},async deleteContractDocument(e,t){this.loading=!0,this.error=null;try{if(await h.deleteDocument(e,t),this.contractDocuments[e]){const r=this.contractDocuments[e].findIndex(n=>n.id===t);r!==-1&&this.contractDocuments[e].splice(r,1)}}catch(r){throw this.error=r.message,r}finally{this.loading=!1}},async getContractSLAs(e){this.loading=!0,this.error=null;try{const t=await h.getSLAs(e);return this.contractSLAs[e]=t,t}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async createContractSLA(e,t){this.loading=!0,this.error=null;try{const r=await h.createSLA(e,t);return this.contractSLAs[e]||(this.contractSLAs[e]=[]),this.contractSLAs[e].push(r),r}catch(r){throw this.error=r.message,r}finally{this.loading=!1}},async getContractMilestones(e){this.loading=!0,this.error=null;try{const t=await h.getMilestones(e);return this.contractMilestones[e]=t,t}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async createContractMilestone(e,t){this.loading=!0,this.error=null;try{const r=await h.createMilestone(e,t);return this.contractMilestones[e]||(this.contractMilestones[e]=[]),this.contractMilestones[e].push(r),r}catch(r){throw this.error=r.message,r}finally{this.loading=!1}},async completeContractMilestone(e,t,r){this.loading=!0,this.error=null;try{const n=await h.completeMilestone(e,t,r);if(this.contractMilestones[e]){const o=this.contractMilestones[e].findIndex(c=>c.id===t);o!==-1&&(this.contractMilestones[e][o]=n)}return n}catch(n){throw this.error=n.message,n}finally{this.loading=!1}},async getContractAlerts(e={}){this.loading=!0,this.error=null;try{const t=await h.getAlerts(e);return this.contractAlerts=t,t}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async acknowledgeContractAlert(e,t){this.loading=!0,this.error=null;try{const r=await h.acknowledgeAlert(e,t),n=this.contractAlerts.findIndex(o=>o.id===e);return n!==-1&&(this.contractAlerts[n]=r),r}catch(r){throw this.error=r.message,r}finally{this.loading=!1}},async getContractAnalytics(e={}){this.loading=!0,this.error=null;try{const t=await h.getAnalytics(e);return this.contractAnalytics=t,t}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async exportContracts(e={}){this.loading=!0,this.error=null;try{return await h.export(e)}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},clearCurrentContract(){this.currentContract=null},clearError(){this.error=null},setRepository(e){h=e}}});function st(){const e=Q(),t=H(null),r=p(()=>e.contracts),n=p(()=>e.currentContract),o=p(()=>e.loading),c=p(()=>e.error),y=p(()=>e.contractStats),m=a=>(t.value=null,X(a)),S=async(a=null)=>{try{await e.fetchContracts(a)}catch(s){throw console.error("Failed to load contracts:",s),s}},L=async a=>{try{return await e.fetchContractById(a)}catch(s){throw console.error(`Failed to load contract ${a}:`,s),s}},T=async(a,s=null)=>{const i=m(a);if(!i.isValid)return t.value=i.errors.join(", "),null;try{return s?await e.updateContract(s,a):await e.createContract(a)}catch(l){throw console.error("Failed to save contract:",l),l}},N=async a=>{try{await e.deleteContract(a)}catch(s){throw console.error(`Failed to remove contract ${a}:`,s),s}},C=a=>{const s=[];if(a.startDate||s.push("Start date is required"),a.endDate||s.push("End date is required"),a.startDate&&a.endDate){const i=new Date(a.startDate);new Date(a.endDate)<=i&&s.push("End date must be after start date")}return a.contractValue!==void 0&&a.contractValue<0&&s.push("Contract value must be positive"),{isValid:s.length===0,errors:s}},w=a=>{const s=[];if(!a.terminationDate)s.push("Termination date is required");else{const i=new Date(a.terminationDate),l=new Date;l.setHours(0,0,0,0),i{const i=C(s);if(!i.isValid)throw t.value=i.errors.join(", "),new Error(i.errors.join(", "));try{return await e.renewContract(a,s)}catch(l){throw console.error(`Failed to renew contract ${a}:`,l),l}},x=async(a,s)=>{const i=w(s);if(!i.isValid)throw t.value=i.errors.join(", "),new Error(i.errors.join(", "));try{return await e.terminateContract(a,s)}catch(l){throw console.error(`Failed to terminate contract ${a}:`,l),l}},M=async a=>{try{return await e.getContractDocuments(a)}catch(s){throw console.error(`Failed to load documents for contract ${a}:`,s),s}},A=a=>{const s=[];return(!a.name||a.name.trim().length===0)&&s.push("Document name is required"),(!a.type||a.type.trim().length===0)&&s.push("Document type is required"),{isValid:s.length===0,errors:s}},$=async(a,s,i)=>{const l=A(i);if(!l.isValid)throw t.value=l.errors.join(", "),new Error(l.errors.join(", "));try{return await e.uploadContractDocument(a,s,i)}catch(g){throw console.error(`Failed to upload document for contract ${a}:`,g),g}},v=async a=>{try{return await e.getContractSLAs(a)}catch(s){throw console.error(`Failed to load SLAs for contract ${a}:`,s),s}},E=a=>{const s=[];return(!a.metric||a.metric.trim().length===0)&&s.push("SLA metric is required"),(a.target===void 0||a.target===null||a.target<=0)&&s.push("SLA target must be positive"),(!a.unit||a.unit.trim().length===0)&&s.push("SLA unit is required"),{isValid:s.length===0,errors:s}},P=async(a,s)=>{const i=E(s);if(!i.isValid)throw t.value=i.errors.join(", "),new Error(i.errors.join(", "));try{return await e.createContractSLA(a,s)}catch(l){throw console.error(`Failed to create SLA for contract ${a}:`,l),l}},V=async a=>{try{return await e.getContractMilestones(a)}catch(s){throw console.error(`Failed to load milestones for contract ${a}:`,s),s}},D=a=>{const s=[];if((!a.title||a.title.trim().length===0)&&s.push("Milestone title is required"),!a.dueDate)s.push("Valid due date is required");else{const i=new Date(a.dueDate);isNaN(i.getTime())&&s.push("Valid due date is required")}return{isValid:s.length===0,errors:s}},q=async(a,s)=>{const i=D(s);if(!i.isValid)throw t.value=i.errors.join(", "),new Error(i.errors.join(", "));try{return await e.createContractMilestone(a,s)}catch(l){throw console.error(`Failed to create milestone for contract ${a}:`,l),l}},I=async(a,s,i)=>{try{return await e.completeContractMilestone(a,s,i)}catch(l){throw console.error(`Failed to complete milestone ${s} for contract ${a}:`,l),l}},_=a=>{if(!a.startDate||!a.endDate)return{days:0,months:0,years:0};const s=new Date(a.startDate),i=new Date(a.endDate),l=i.getTime()-s.getTime(),g=Math.ceil(l/(1e3*3600*24)),b=(i.getFullYear()-s.getFullYear())*12+(i.getMonth()-s.getMonth()),j=Math.floor(b/12);return{days:g,months:b,years:j}},O=(a,s=30)=>{if(!a.endDate)return!1;const i=new Date(a.endDate),l=new Date,g=new Date(l.getTime()+s*24*60*60*1e3);return i<=g&&i>=l},F=(a,s="USD")=>a==null?"N/A":new Intl.NumberFormat("en-US",{style:"currency",currency:s,minimumFractionDigits:2,maximumFractionDigits:2}).format(a),U=()=>{t.value=null,e.clearError()};return{contracts:r,currentContract:n,loading:o,error:p(()=>c.value||t.value),contractStats:y,loadContracts:S,loadContractById:L,saveContract:T,removeContract:N,validateContract:m,renewContract:R,terminateContract:x,validateRenewalData:C,validateTerminationData:w,loadContractDocuments:M,uploadContractDocument:$,validateDocumentData:A,loadContractSLAs:v,createContractSLA:P,validateSLAData:E,loadContractMilestones:V,createContractMilestone:q,completeContractMilestone:I,validateMilestoneData:D,calculateContractDuration:_,isContractExpiringSoon:O,formatContractValue:F,clearError:U}}export{u as C,f as a,nt as b,d as c,at as d,J as e,rt as f,tt as g,et as h,st as u}; diff --git a/frontend/dist/assets/useDocumentManagement-BJ6Z87hG.js b/frontend/dist/assets/useDocumentManagement-BJ6Z87hG.js new file mode 100644 index 00000000..e4f68172 --- /dev/null +++ b/frontend/dist/assets/useDocumentManagement-BJ6Z87hG.js @@ -0,0 +1 @@ +import{bc as W,aP as O,r as j,c as f}from"./index-QAlcqU00.js";class M extends W{constructor(){super("/documents")}async search(e={}){const t=new URLSearchParams;e.search&&t.append("search",e.search),e.type&&t.append("type",e.type),e.status&&t.append("status",e.status),e.accessLevel&&t.append("accessLevel",e.accessLevel),e.authorId&&t.append("authorId",e.authorId.toString()),e.departmentId&&t.append("departmentId",e.departmentId.toString()),e.page!==void 0&&t.append("page",e.page.toString()),e.size!==void 0&&t.append("size",e.size.toString()),e.sortBy&&t.append("sortBy",e.sortBy),e.direction&&t.append("direction",e.direction),e.startDate&&t.append("startDate",e.startDate),e.endDate&&t.append("endDate",e.endDate),e.expirationStart&&t.append("expirationStart",e.expirationStart),e.expirationEnd&&t.append("expirationEnd",e.expirationEnd);const s=t.toString(),o=s?`/documents?${s}`:"/documents";return this.get(o)}async getById(e){return this.get(`/documents/${e}`)}async create(e){return this.post("/documents",e)}async update(e,t){return this.put(`/documents/${e}`,t)}async deleteDocument(e){return this.delete(e)}async getVersions(e){return this.get(`/documents/${e}/versions`)}async createVersion(e,t){return this.post(`/documents/${e}/versions`,t)}async getVersion(e,t){return this.get(`/documents/${e}/versions/${t}`)}async setActiveVersion(e,t){return this.put(`/documents/${e}/versions/${t}/activate`)}async uploadFile(e,t){const s=new FormData;return s.append("file",t),this.post(`/documents/${e}/upload`,s)}async downloadFile(e){return this.get(`/documents/${e}/download`)}async getFileMetadata(e){return this.get(`/documents/${e}/file-info`)}async getApprovalWorkflow(e){return this.get(`/documents/${e}/approval-workflow`)}async createApprovalWorkflow(e,t){return this.post(`/documents/${e}/approval-workflow`,t)}async submitForApproval(e){return this.post(`/documents/${e}/submit-approval`)}async approveDocument(e,t){return this.post(`/documents/${e}/approve`,t)}async rejectDocument(e,t){return this.post(`/documents/${e}/reject`,t)}async getTemplates(){return this.get("/documents/templates")}async getTemplatesByType(e){return this.get(`/documents/templates?type=${e}`)}async createFromTemplate(e){return this.post("/documents/from-template",e)}async getPermissions(e,t){return this.get(`/documents/${e}/permissions?userId=${t}`)}async updatePermissions(e,t){return this.put(`/documents/${e}/permissions`,t)}async archiveDocument(e,t){return this.post(`/documents/${e}/archive`,t)}async getRetentionPolicy(e){return this.get(`/documents/${e}/retention-policy`)}async setRetentionPolicy(e,t){return this.put(`/documents/${e}/retention-policy`,t)}async fullTextSearch(e,t={}){const s={query:e,includeHighlights:t.includeHighlights??!0};return this.post("/documents/search",s)}async getSearchSuggestions(e){return this.get(`/documents/search/suggestions?q=${encodeURIComponent(e)}`)}async reindexDocument(e){return this.post(`/documents/${e}/reindex`)}async getDocumentPermissions(e){return this.get(`/documents/${e}/permissions`)}async updateDocumentPermissions(e,t){return this.put(`/documents/${e}/permissions`,t)}async checkUserAccess(e,t){return this.get(`/documents/${e}/access/${t}`)}async getUserAccessLevel(e,t){return this.get(`/documents/${e}/access/${t}/level`)}async shareDocument(e,t){return this.post(`/documents/${e}/share`,t)}async revokeAccess(e,t){return this.delete(`/documents/${e}/access/${t}`)}async getRetentionPolicies(){return this.get("/documents/retention/policies")}async createRetentionPolicy(e){return this.post("/documents/retention/policies",e)}async updateRetentionPolicy(e,t){return this.put(`/documents/retention/policies/${e}`,t)}async deleteRetentionPolicy(e){return this.delete(`/documents/retention/policies/${e}`)}async checkRetentionStatus(e){return this.get(`/documents/${e}/retention/status`)}async applyRetentionPolicy(e,t){return this.post(`/documents/${e}/retention/apply`,{policyId:t})}async executeRetentionActions(e={}){return this.post("/documents/retention/execute",e)}async getAnalytics(e){return this.get(`/documents/${e}/analytics`)}async trackView(e,t){return this.post(`/documents/${e}/track-view`,t)}}const p={POLICY:"policy",PROCEDURE:"procedure",MANUAL:"manual",REPORT:"report",CONTRACT:"contract",CERTIFICATE:"certificate",DRAWING:"drawing",SPECIFICATION:"specification",TEMPLATE:"template",OTHER:"other"},u={DRAFT:"draft",PENDING_REVIEW:"pending_review",UNDER_REVIEW:"under_review",APPROVED:"approved",PUBLISHED:"published",ARCHIVED:"archived",EXPIRED:"expired",REJECTED:"rejected"},m={PUBLIC:"public",INTERNAL:"internal",RESTRICTED:"restricted",CONFIDENTIAL:"confidential"},z={LOW:"low",MEDIUM:"medium",HIGH:"high",CRITICAL:"critical"},H={title:{type:"string",required:!0,minLength:3,maxLength:255},description:{type:"string",required:!1,maxLength:1e3},type:{type:"enum",required:!0,values:Object.values(p)},status:{type:"enum",required:!0,values:Object.values(u)},accessLevel:{type:"enum",required:!0,values:Object.values(m)},authorId:{type:"number",required:!0,min:1},departmentId:{type:"number",required:!1,min:1},tags:{type:"array",required:!1,itemType:"string"},expirationDate:{type:"date",required:!1},metadata:{type:"object",required:!1},priority:{type:"enum",required:!1,values:Object.values(z)}},_={documentId:{type:"number",required:!0,min:1},versionNumber:{type:"string",required:!0,pattern:/^\d+\.\d+(\.\d+)?$/},changeDescription:{type:"string",required:!0,minLength:1,maxLength:500},authorId:{type:"number",required:!0,min:1},filePath:{type:"string",required:!1},fileSize:{type:"number",required:!1,min:0},checksum:{type:"string",required:!1},uploadDate:{type:"date",required:!1}},G={documentId:{type:"number",required:!0,min:1},approvers:{type:"array",required:!0,minLength:1},requiredApprovals:{type:"number",required:!1,min:1},autoAdvance:{type:"boolean",required:!1},dueDateDays:{type:"number",required:!1,min:1,max:365}};function v(r,e=H){const t=[];return Object.keys(e).forEach(s=>{const o=e[s],a=r[s];if(o.required&&(a==null||a==="")){const y=s==="documentId"?"Document ID":s==="authorId"?"Author ID":s==="accessLevel"?"Access level":s==="type"?"Document type":s==="versionNumber"?"Version number":s==="changeDescription"?"Change description":s==="approvers"?"Approvers list":s.charAt(0).toUpperCase()+s.slice(1).replace(/([A-Z])/g," $1");t.push(`${y} is required`);return}if(a!=null)switch(o.type){case"string":typeof a!="string"?t.push(`${s} must be a string`):(o.minLength&&a.lengtho.maxLength&&t.push(`${s.charAt(0).toUpperCase()+s.slice(1)} must be less than ${o.maxLength} characters`),o.pattern&&!o.pattern.test(a)&&(s==="versionNumber"?t.push("Version number must follow semantic versioning (e.g., 1.0, 1.2.3)"):t.push(`${s} format is invalid`)));break;case"number":typeof a!="number"||isNaN(a)?t.push(`${s} must be a number`):(o.min!==void 0&&ao.max&&t.push(`${s} must be at most ${o.max}`));break;case"enum":o.values.includes(a)||(s==="type"?t.push("Invalid document type"):s==="status"?t.push("Invalid document status"):s==="accessLevel"?t.push("Invalid access level"):t.push(`Invalid ${s}`));break;case"array":Array.isArray(a)?(o.minLength&&a.lengthtypeof d!="string"||d.trim()==="")&&t.push("All tags must be non-empty strings")):t.push(`${s} must be an array`);break;case"date":if(a&&s==="expirationDate"){const y=new Date(a),d=new Date;d.setHours(0,0,0,0),y!o.userId||!o.role||!o.order)&&t.push("Each approver must have userId, role, and order"),r.requiredApprovals&&r.requiredApprovals>r.approvers.length&&t.push("Required approvals cannot exceed number of approvers")),{isValid:t.length===0,errors:t}}function Y(r){if(r===0)return"0 B";const e=["B","KB","MB","GB","TB"],t=Math.floor(Math.log(r)/Math.log(1024));return`${(r/Math.pow(1024,t)).toFixed(1)} ${e[t]}`}function te(r){return{[p.POLICY]:"Policy",[p.PROCEDURE]:"Procedure",[p.MANUAL]:"Manual",[p.REPORT]:"Report",[p.CONTRACT]:"Contract",[p.CERTIFICATE]:"Certificate",[p.DRAWING]:"Drawing",[p.SPECIFICATION]:"Specification",[p.TEMPLATE]:"Template",[p.OTHER]:"Other"}[r]||r}function re(r){const e={[u.DRAFT]:{label:"Draft",color:"gray",bgColor:"bg-gray-100",textColor:"text-gray-800"},[u.PENDING_REVIEW]:{label:"Pending Review",color:"yellow",bgColor:"bg-yellow-100",textColor:"text-yellow-800"},[u.UNDER_REVIEW]:{label:"Under Review",color:"blue",bgColor:"bg-blue-100",textColor:"text-blue-800"},[u.APPROVED]:{label:"Approved",color:"green",bgColor:"bg-green-100",textColor:"text-green-800"},[u.PUBLISHED]:{label:"Published",color:"green",bgColor:"bg-green-100",textColor:"text-green-800"},[u.ARCHIVED]:{label:"Archived",color:"gray",bgColor:"bg-gray-100",textColor:"text-gray-800"},[u.EXPIRED]:{label:"Expired",color:"red",bgColor:"bg-red-100",textColor:"text-red-800"},[u.REJECTED]:{label:"Rejected",color:"red",bgColor:"bg-red-100",textColor:"text-red-800"}};return e[r]||e[u.DRAFT]}function se(r){const e={[m.PUBLIC]:{label:"Public",color:"green",icon:"globe",description:"Accessible to everyone"},[m.INTERNAL]:{label:"Internal",color:"blue",icon:"building",description:"Accessible to organization members"},[m.RESTRICTED]:{label:"Restricted",color:"orange",icon:"shield",description:"Accessible to specific roles/departments"},[m.CONFIDENTIAL]:{label:"Confidential",color:"red",icon:"lock",description:"Accessible to authorized personnel only"}};return e[r]||e[m.INTERNAL]}function K(r){if(!r.expirationDate)return!1;const e=new Date(r.expirationDate),t=new Date;return t.setHours(0,0,0,0),e({documents:[],currentDocument:null,loading:!1,error:null,initialized:!1,totalElements:0,totalPages:0,searchCriteria:{page:0,size:10,sortBy:"title",direction:"ASC",search:"",filters:{}},documentVersions:{},documentTemplates:[],approvalWorkflows:{},documentPermissions:{},documentAnalytics:{},searchSuggestions:[]}),getters:{getDocumentById:r=>e=>r.documents.find(t=>t.id===e),publishedDocuments:r=>r.documents.filter(e=>e.status===u.PUBLISHED),draftDocuments:r=>r.documents.filter(e=>e.status===u.DRAFT),pendingReviewDocuments:r=>r.documents.filter(e=>e.status===u.PENDING_REVIEW||e.status===u.UNDER_REVIEW),expiredDocuments:r=>r.documents.filter(e=>e.status===u.EXPIRED),archivedDocuments:r=>r.documents.filter(e=>e.status===u.ARCHIVED),getDocumentsByType:r=>e=>r.documents.filter(t=>t.type===e),getDocumentsByAuthor:r=>e=>r.documents.filter(t=>t.authorId===e),getDocumentsByAccessLevel:r=>e=>r.documents.filter(t=>t.accessLevel===e),expiringSoonDocuments:r=>{const e=new Date;return e.setDate(e.getDate()+30),r.documents.filter(t=>{if(!t.expirationDate||t.status===u.EXPIRED)return!1;const s=new Date(t.expirationDate);return s<=e&&s>new Date})},filteredDocuments:r=>{let e=[...r.documents];if(r.searchCriteria.search){const t=r.searchCriteria.search.toLowerCase();e=e.filter(s=>{var o,a,y,d;return((o=s.title)==null?void 0:o.toLowerCase().includes(t))||((a=s.description)==null?void 0:a.toLowerCase().includes(t))||((y=s.tags)==null?void 0:y.some(D=>D.toLowerCase().includes(t)))||((d=s.authorName)==null?void 0:d.toLowerCase().includes(t))})}return r.searchCriteria.filters.status&&(e=e.filter(t=>t.status===r.searchCriteria.filters.status)),r.searchCriteria.filters.type&&(e=e.filter(t=>t.type===r.searchCriteria.filters.type)),r.searchCriteria.filters.accessLevel&&(e=e.filter(t=>t.accessLevel===r.searchCriteria.filters.accessLevel)),r.searchCriteria.filters.authorId&&(e=e.filter(t=>t.authorId===r.searchCriteria.filters.authorId)),r.searchCriteria.filters.departmentId&&(e=e.filter(t=>t.departmentId===r.searchCriteria.filters.departmentId)),e},documentStats:r=>{const e={total:r.documents.length,published:0,draft:0,pendingReview:0,underReview:0,approved:0,expired:0,archived:0,rejected:0,byType:{},byAccessLevel:{public:0,internal:0,restricted:0,confidential:0},expiringSoon:0},t=new Date;return t.setDate(t.getDate()+30),r.documents.forEach(s=>{switch(s.status){case u.PUBLISHED:e.published++;break;case u.DRAFT:e.draft++;break;case u.PENDING_REVIEW:e.pendingReview++;break;case u.UNDER_REVIEW:e.underReview++;break;case u.APPROVED:e.approved++;break;case u.EXPIRED:e.expired++;break;case u.ARCHIVED:e.archived++;break;case u.REJECTED:e.rejected++;break}const o=s.type||"UNKNOWN";if(e.byType[o]=(e.byType[o]||0)+1,e.byAccessLevel[s.accessLevel]!==void 0&&e.byAccessLevel[s.accessLevel]++,s.expirationDate&&s.status!==u.EXPIRED){const a=new Date(s.expirationDate);a<=t&&a>new Date&&e.expiringSoon++}}),e},documentsRequiringAttention:(r,e)=>[...e.expiringSoonDocuments,...e.pendingReviewDocuments].filter((t,s,o)=>o.findIndex(a=>a.id===t.id)===s),documentVersionsById:r=>e=>r.documentVersions[e]||[],approvalWorkflowById:r=>e=>r.approvalWorkflows[e]||null,documentPermissionsById:r=>e=>r.documentPermissions[e]||null,templatesByType:r=>e=>r.documentTemplates.filter(t=>t.type===e)},actions:{async fetchDocuments(r=null){this.loading=!0,this.error=null;try{const e=r||this.searchCriteria,t=await h.search(e);this.documents=t.content||t.data||t,this.totalElements=t.totalElements||this.documents.length,this.totalPages=t.totalPages||1}catch(e){throw this.error=e.message,e}finally{this.loading=!1}},async fetchDocumentById(r){this.loading=!0,this.error=null;try{const e=await h.getById(r);return this.currentDocument=e,e}catch(e){throw this.error=e.message,e}finally{this.loading=!1}},async createDocument(r){this.loading=!0,this.error=null;try{const e=await h.create(r);return this.documents.push(e),this.currentDocument=e,e}catch(e){throw this.error=e.message,e}finally{this.loading=!1}},async updateDocument(r,e){var t;this.loading=!0,this.error=null;try{const s=await h.update(r,e),o=this.documents.findIndex(a=>a.id===r);return o!==-1&&(this.documents[o]=s),((t=this.currentDocument)==null?void 0:t.id)===r&&(this.currentDocument=s),s}catch(s){throw this.error=s.message,s}finally{this.loading=!1}},async deleteDocument(r){var e;this.loading=!0,this.error=null;try{await h.deleteDocument(r);const t=this.documents.findIndex(s=>s.id===r);t!==-1&&this.documents.splice(t,1),((e=this.currentDocument)==null?void 0:e.id)===r&&(this.currentDocument=null)}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async getDocumentVersions(r){this.loading=!0,this.error=null;try{const e=await h.getVersions(r);return this.documentVersions[r]=e,e}catch(e){throw this.error=e.message,e}finally{this.loading=!1}},async createDocumentVersion(r,e){this.loading=!0,this.error=null;try{const t=await h.createVersion(r,e);return this.documentVersions[r]||(this.documentVersions[r]=[]),this.documentVersions[r].push(t),t}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async setActiveDocumentVersion(r,e){var t;this.loading=!0,this.error=null;try{const s=await h.setActiveVersion(r,e);return((t=this.currentDocument)==null?void 0:t.id)===r&&await this.fetchDocumentById(r),s}catch(s){throw this.error=s.message,s}finally{this.loading=!1}},async uploadDocumentFile(r,e){var t;this.loading=!0,this.error=null;try{const s=await h.uploadFile(r,e);return((t=this.currentDocument)==null?void 0:t.id)===r&&await this.fetchDocumentById(r),s}catch(s){throw this.error=s.message,s}finally{this.loading=!1}},async downloadDocumentFile(r){this.loading=!0,this.error=null;try{return await h.downloadFile(r)}catch(e){throw this.error=e.message,e}finally{this.loading=!1}},async getApprovalWorkflow(r){this.loading=!0,this.error=null;try{const e=await h.getApprovalWorkflow(r);return this.approvalWorkflows[r]=e,e}catch(e){throw this.error=e.message,e}finally{this.loading=!1}},async createApprovalWorkflow(r,e){this.loading=!0,this.error=null;try{const t=await h.createApprovalWorkflow(r,e);return this.approvalWorkflows[r]=t,t}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async submitDocumentForApproval(r){var e;this.loading=!0,this.error=null;try{const t=await h.submitForApproval(r),s=this.documents.find(o=>o.id===r);return s&&(s.status=u.PENDING_REVIEW),((e=this.currentDocument)==null?void 0:e.id)===r&&(this.currentDocument.status=u.PENDING_REVIEW),t}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async approveDocument(r,e){this.loading=!0,this.error=null;try{const t=await h.approveDocument(r,e);return await this.fetchDocumentById(r),t}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async rejectDocument(r,e){var t;this.loading=!0,this.error=null;try{const s=await h.rejectDocument(r,e),o=this.documents.find(a=>a.id===r);return o&&(o.status=u.REJECTED),((t=this.currentDocument)==null?void 0:t.id)===r&&(this.currentDocument.status=u.REJECTED),s}catch(s){throw this.error=s.message,s}finally{this.loading=!1}},async fetchDocumentTemplates(){this.loading=!0,this.error=null;try{const r=await h.getTemplates();return this.documentTemplates=r,r}catch(r){throw this.error=r.message,r}finally{this.loading=!1}},async createDocumentFromTemplate(r){this.loading=!0,this.error=null;try{const e=await h.createFromTemplate(r);return this.documents.push(e),this.currentDocument=e,e}catch(e){throw this.error=e.message,e}finally{this.loading=!1}},async getDocumentPermissions(r,e){this.loading=!0,this.error=null;try{const t=await h.getPermissions(r,e);return this.documentPermissions[r]=t,t}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async updateDocumentPermissions(r,e){this.loading=!0,this.error=null;try{const t=await h.updatePermissions(r,e);return this.documentPermissions[r]=e,t}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async performFullTextSearch(r,e={}){this.loading=!0,this.error=null;try{return await h.fullTextSearch(r,e)}catch(t){throw this.error=t.message,t}finally{this.loading=!1}},async getSearchSuggestions(r){try{const e=await h.getSearchSuggestions(r);return this.searchSuggestions=e,e}catch(e){return console.warn("Failed to get search suggestions:",e),[]}},async archiveDocument(r,e){var t;this.loading=!0,this.error=null;try{const s=await h.archiveDocument(r,e),o=this.documents.find(a=>a.id===r);return o&&(o.status=u.ARCHIVED),((t=this.currentDocument)==null?void 0:t.id)===r&&(this.currentDocument.status=u.ARCHIVED),s}catch(s){throw this.error=s.message,s}finally{this.loading=!1}},async getDocumentAnalytics(r){this.loading=!0,this.error=null;try{const e=await h.getAnalytics(r);return this.documentAnalytics[r]=e,e}catch(e){throw this.error=e.message,e}finally{this.loading=!1}},async trackDocumentView(r,e){try{return await h.trackView(r,e)}catch(t){console.warn("Failed to track document view:",t)}},async updateSearchTerm(r){this.searchCriteria.search=r,this.searchCriteria.page=0,await this.fetchDocuments()},async updateFilters(r){this.searchCriteria.filters={...this.searchCriteria.filters,...r},this.searchCriteria.page=0,await this.fetchDocuments()},async changePage(r){this.searchCriteria.page=r,await this.fetchDocuments()},async changeSorting(r,e){this.searchCriteria.sortBy=r,this.searchCriteria.direction=e,this.searchCriteria.page=0,await this.fetchDocuments()},async refreshDocuments(){await this.fetchDocuments()},async initializeDocuments(){this.initialized||(await this.fetchDocuments(),await this.fetchDocumentTemplates(),this.initialized=!0)},clearCurrentDocument(){this.currentDocument=null},clearError(){this.error=null},setRepository(r){h=r}}});function ne(){const r=Q(),e=j(null),t=f(()=>r.documents),s=f(()=>r.currentDocument),o=f(()=>r.loading),a=f(()=>r.error),y=f(()=>r.documentStats),d=n=>{e.value=null;const i=v(n),c=i.errors.map(l=>l.includes("Title is required")?"Document title is required":l.includes("Document type is required")?"Document type is required":l.includes("Status is required")?"Document status is required":l.includes("Access level is required")?"Access level is required":l.includes("Author ID is required")?"Author ID is required":l);return{isValid:i.isValid,errors:c}},D=async(n=null)=>{try{await r.fetchDocuments(n)}catch(i){throw console.error("Failed to load documents:",i),i}},C=async n=>{try{return await r.fetchDocumentById(n)}catch(i){throw console.error(`Failed to load document ${n}:`,i),i}},R=async(n,i=null)=>{const c=d(n);if(!c.isValid)return e.value=c.errors.join(", "),null;try{return i?await r.updateDocument(i,n):await r.createDocument(n)}catch(l){throw console.error("Failed to save document:",l),l}},I=async n=>{try{await r.deleteDocument(n)}catch(i){throw console.error(`Failed to remove document ${n}:`,i),i}},w=n=>{e.value=null;const i=X(n),c=i.errors.map(l=>l.includes("Document ID is required")?"Document ID is required":l.includes("Version number is required")?"Version number is required":l.includes("Change description is required")?"Change description is required":l.includes("Author ID is required")?"Author ID is required":l);return{isValid:i.isValid,errors:c}},T=async(n,i)=>{const c={...i,documentId:n},l=w(c);if(!l.isValid)return e.value=l.errors.join(", "),null;try{return await r.createDocumentVersion(n,i)}catch(g){throw console.error(`Failed to create version for document ${n}:`,g),g}},E=n=>{const i=[];if(!n)return i.push("File is required"),{isValid:!1,errors:i};const c=100*1024*1024;return n.size>c&&i.push("File size must be less than 100MB"),{isValid:i.length===0,errors:i}},x=async(n,i)=>{const c=E(i);if(!c.isValid)return e.value=c.errors.join(", "),null;try{return await r.uploadDocumentFile(n,i)}catch(l){throw console.error(`Failed to upload file for document ${n}:`,l),l}},b=n=>{e.value=null;const c=[...J(n).errors];return!n.approvers||!Array.isArray(n.approvers)||n.approvers.length===0?c.push("At least one approver is required"):n.approvers.some(g=>!g.userId||!g.role||!g.order)&&c.push("Each approver must have userId, role, and order"),{isValid:c.length===0,errors:c}},$=async(n,i)=>{const c={...i,documentId:n},l=b(c);if(!l.isValid)return e.value=l.errors.join(", "),null;try{return await r.createApprovalWorkflow(n,i)}catch(g){throw console.error(`Failed to create approval workflow for document ${n}:`,g),g}},P=async n=>{try{return await r.submitDocumentForApproval(n)}catch(i){throw console.error(`Failed to submit document ${n} for approval:`,i),i}},L=async(n,i)=>{try{return await r.approveDocument(n,i)}catch(c){throw console.error(`Failed to approve document ${n}:`,c),c}},V=async(n,i)=>{try{return await r.rejectDocument(n,i)}catch(c){throw console.error(`Failed to reject document ${n}:`,c),c}},S=async n=>{try{return await r.createDocumentFromTemplate(n)}catch(i){throw console.error("Failed to create document from template:",i),i}},A=n=>{const i=[];return(!n.reason||n.reason.trim().length===0)&&i.push("Archive reason is required"),{isValid:i.length===0,errors:i}},F=async(n,i)=>{const c=A(i);if(!c.isValid)return e.value=c.errors.join(", "),null;try{return await r.archiveDocument(n,i)}catch(l){throw console.error(`Failed to archive document ${n}:`,l),l}},q=n=>Y(n),N=(n,i)=>{if(!n||!i)return null;const c=new Date(n);return c.setDate(c.getDate()+i),c},k=n=>K(n),B=(n,i)=>Z(n,i),U=()=>{e.value=null,r.clearError()};return{documents:t,currentDocument:s,loading:o,error:f(()=>a.value||e.value),documentStats:y,loadDocuments:D,loadDocumentById:C,saveDocument:R,removeDocument:I,validateDocument:d,createDocumentVersion:T,validateVersionData:w,uploadDocumentFile:x,validateUploadData:E,validateApprovalWorkflow:b,createApprovalWorkflow:$,submitForApproval:P,approveDocument:L,rejectDocument:V,createFromTemplate:S,archiveDocument:F,validateArchiveData:A,formatFileSize:q,calculateDocumentExpiration:N,isDocumentExpired:k,checkUserAccess:B,clearError:U}}export{M as D,ne as a,p as b,u as c,re as d,m as e,se as f,te as g,Y as h,K as i,Q as u}; diff --git a/frontend/dist/assets/useFormAutoSave-Jaawgo91.js b/frontend/dist/assets/useFormAutoSave-BrW9Wl2Q.js similarity index 88% rename from frontend/dist/assets/useFormAutoSave-Jaawgo91.js rename to frontend/dist/assets/useFormAutoSave-BrW9Wl2Q.js index 50a03899..6071f5cb 100644 --- a/frontend/dist/assets/useFormAutoSave-Jaawgo91.js +++ b/frontend/dist/assets/useFormAutoSave-BrW9Wl2Q.js @@ -1 +1 @@ -import{r,m as j,b4 as h,o as R}from"./index-BUdRbiwj.js";function M(l,S={}){const{storageKey:f="form-auto-save",saveInterval:F=2e3,excludeFields:D=[],onRestore:p=null,onSave:b=null,enabled:B=!0}=S,s=r(!1),c=r(null),i=r(null),o=r(B),u=r(!1),d=r(!0),I=e=>{if(!e||typeof e!="object")return e;const a={...e};return D.forEach(t=>{delete a[t]}),Object.keys(a).forEach(t=>{const n=a[t];(typeof n=="function"||typeof n=="symbol"||n===void 0)&&delete a[t]}),a.image&&(a.image instanceof File||a.image instanceof Blob)?a.image={_isFile:!0,name:a.image.name||"image",size:a.image.size||0,type:a.image.type||"image/*",lastModified:a.image.lastModified||Date.now()}:a.image&&a.image._isFile&&(a.image=null),a.audioRecordings&&Array.isArray(a.audioRecordings)&&(a.audioRecordings=a.audioRecordings.map(t=>{const n={...t};return n.audioBlob instanceof Blob&&(n.audioBlob={_isBlob:!0,size:n.audioBlob.size||0,type:n.audioBlob.type||"audio/webm"}),n.audioUrl&&n.audioUrl.startsWith("blob:")&&(n.audioUrl=null,n._hadBlobUrl=!0),n})),a.files&&Array.isArray(a.files)&&(a.files=a.files.map(t=>t instanceof File||t instanceof Blob?{_isFile:!0,name:t.name||"file",size:t.size||0,type:t.type||"application/octet-stream",lastModified:t.lastModified||Date.now()}:t&&t._isFile?null:t).filter(t=>t!==null)),a},m=()=>{if(!(!o.value||!l||!u.value))try{const e=l.value||l,t={data:I(e),timestamp:Date.now(),url:window.location.pathname,userAgent:navigator.userAgent.substring(0,100)};localStorage.setItem(f,JSON.stringify(t)),c.value=new Date,s.value=!1,b&&b(t)}catch(e){console.error("Failed to auto-save form data:",e)}},v=()=>{if(!o.value)return null;try{const e=localStorage.getItem(f);if(!e)return null;const a=JSON.parse(e);if(a.url!==window.location.pathname)return null;const t=24*60*60*1e3;return Date.now()-a.timestamp>t?(w(),null):a}catch(e){return console.error("Failed to load auto-saved form data:",e),null}},T=()=>{const e=v();if(!e||!e.data)return!1;try{const a=o.value;return o.value=!1,l.value?Object.assign(l.value,e.data):Object.assign(l,e.data),c.value=new Date(e.timestamp),s.value=!1,setTimeout(()=>{o.value=a},100),p&&p(e),!0}catch(a){return console.warn("Failed to restore form data:",a),o.value=!0,!1}},w=()=>{try{localStorage.removeItem(f),s.value=!1,c.value=null,u.value=!1,d.value=!0}catch(e){console.warn("Failed to clear auto-saved data:",e)}},z=()=>{const e=v();return e&&e.data&&Object.keys(e.data).length>0},A=()=>{const e=v();return e?{timestamp:e.timestamp,date:new Date(e.timestamp),age:Date.now()-e.timestamp,hasData:e.data&&Object.keys(e.data).length>0}:null},U=()=>{i.value&&clearTimeout(i.value),i.value=setTimeout(()=>{m()},F)},g=()=>{i.value&&clearTimeout(i.value),m()},E=()=>{u.value=!0,d.value=!1},O=()=>{d.value=!1};if(o.value&&l){const e=j(l,(a,t)=>{o.value&&!d.value&&(u.value=!0,s.value=!0,U())},{deep:!0,immediate:!1});h(()=>{e()})}const y=e=>{s.value&&g()};return R(()=>{o.value&&window.addEventListener("beforeunload",y)}),h(()=>{i.value&&clearTimeout(i.value),o.value&&(window.removeEventListener("beforeunload",y),s.value&&g())}),{hasUnsavedChanges:s,lastSaveTime:c,userHasInteracted:u,saveNow:g,restoreFormData:T,clearSavedData:w,hasSavedData:z,getSavedDataInfo:A,markUserInteraction:E,finishInitialization:O,loadFromStorage:v,saveToStorage:m}}export{M as u}; +import{r,m as j,aO as h,o as R}from"./index-QAlcqU00.js";function M(l,S={}){const{storageKey:f="form-auto-save",saveInterval:F=2e3,excludeFields:D=[],onRestore:p=null,onSave:b=null,enabled:B=!0}=S,s=r(!1),c=r(null),i=r(null),o=r(B),u=r(!1),d=r(!0),I=e=>{if(!e||typeof e!="object")return e;const a={...e};return D.forEach(t=>{delete a[t]}),Object.keys(a).forEach(t=>{const n=a[t];(typeof n=="function"||typeof n=="symbol"||n===void 0)&&delete a[t]}),a.image&&(a.image instanceof File||a.image instanceof Blob)?a.image={_isFile:!0,name:a.image.name||"image",size:a.image.size||0,type:a.image.type||"image/*",lastModified:a.image.lastModified||Date.now()}:a.image&&a.image._isFile&&(a.image=null),a.audioRecordings&&Array.isArray(a.audioRecordings)&&(a.audioRecordings=a.audioRecordings.map(t=>{const n={...t};return n.audioBlob instanceof Blob&&(n.audioBlob={_isBlob:!0,size:n.audioBlob.size||0,type:n.audioBlob.type||"audio/webm"}),n.audioUrl&&n.audioUrl.startsWith("blob:")&&(n.audioUrl=null,n._hadBlobUrl=!0),n})),a.files&&Array.isArray(a.files)&&(a.files=a.files.map(t=>t instanceof File||t instanceof Blob?{_isFile:!0,name:t.name||"file",size:t.size||0,type:t.type||"application/octet-stream",lastModified:t.lastModified||Date.now()}:t&&t._isFile?null:t).filter(t=>t!==null)),a},m=()=>{if(!(!o.value||!l||!u.value))try{const e=l.value||l,t={data:I(e),timestamp:Date.now(),url:window.location.pathname,userAgent:navigator.userAgent.substring(0,100)};localStorage.setItem(f,JSON.stringify(t)),c.value=new Date,s.value=!1,b&&b(t)}catch(e){console.error("Failed to auto-save form data:",e)}},v=()=>{if(!o.value)return null;try{const e=localStorage.getItem(f);if(!e)return null;const a=JSON.parse(e);if(a.url!==window.location.pathname)return null;const t=24*60*60*1e3;return Date.now()-a.timestamp>t?(w(),null):a}catch(e){return console.error("Failed to load auto-saved form data:",e),null}},T=()=>{const e=v();if(!e||!e.data)return!1;try{const a=o.value;return o.value=!1,l.value?Object.assign(l.value,e.data):Object.assign(l,e.data),c.value=new Date(e.timestamp),s.value=!1,setTimeout(()=>{o.value=a},100),p&&p(e),!0}catch(a){return console.warn("Failed to restore form data:",a),o.value=!0,!1}},w=()=>{try{localStorage.removeItem(f),s.value=!1,c.value=null,u.value=!1,d.value=!0}catch(e){console.warn("Failed to clear auto-saved data:",e)}},z=()=>{const e=v();return e&&e.data&&Object.keys(e.data).length>0},A=()=>{const e=v();return e?{timestamp:e.timestamp,date:new Date(e.timestamp),age:Date.now()-e.timestamp,hasData:e.data&&Object.keys(e.data).length>0}:null},O=()=>{i.value&&clearTimeout(i.value),i.value=setTimeout(()=>{m()},F)},g=()=>{i.value&&clearTimeout(i.value),m()},U=()=>{u.value=!0,d.value=!1},E=()=>{d.value=!1};if(o.value&&l){const e=j(l,(a,t)=>{o.value&&!d.value&&(u.value=!0,s.value=!0,O())},{deep:!0,immediate:!1});h(()=>{e()})}const y=e=>{s.value&&g()};return R(()=>{o.value&&window.addEventListener("beforeunload",y)}),h(()=>{i.value&&clearTimeout(i.value),o.value&&(window.removeEventListener("beforeunload",y),s.value&&g())}),{hasUnsavedChanges:s,lastSaveTime:c,userHasInteracted:u,saveNow:g,restoreFormData:T,clearSavedData:w,hasSavedData:z,getSavedDataInfo:A,markUserInteraction:U,finishInitialization:E,loadFromStorage:v,saveToStorage:m}}export{M as u}; diff --git a/frontend/dist/assets/useMeterManagement-CqU4p7ia.js b/frontend/dist/assets/useMeterManagement-Ckbf_zVR.js similarity index 97% rename from frontend/dist/assets/useMeterManagement-CqU4p7ia.js rename to frontend/dist/assets/useMeterManagement-Ckbf_zVR.js index 18bc7b79..319dfb73 100644 --- a/frontend/dist/assets/useMeterManagement-CqU4p7ia.js +++ b/frontend/dist/assets/useMeterManagement-Ckbf_zVR.js @@ -1 +1 @@ -import{aO as D,r as M,c as E,bs as h}from"./index-BUdRbiwj.js";const B=D("meters",()=>{const r=M([]),n=M(null),y=M([]),F=M({}),d=M(!1),x=M(!1),o=M(null),w=M(0),v=M({status:null,type:null,asset:null,location:null,assignedUser:null,search:"",dueDateRange:null}),T=M({page:0,size:20,sort:"name_asc",sortDirection:"asc"}),C=E(()=>{let a=r.value;if(v.value.status&&(a=a.filter(t=>t.status===v.value.status)),v.value.type&&(a=a.filter(t=>t.type===v.value.type)),v.value.asset&&(a=a.filter(t=>t.assetId===v.value.asset)),v.value.location&&(a=a.filter(t=>t.locationId===v.value.location)),v.value.assignedUser&&(a=a.filter(t=>{var u;return((u=t.users)==null?void 0:u.some(i=>i.id===v.value.assignedUser))||t.primaryUserId===v.value.assignedUser})),v.value.search){const t=v.value.search.toLowerCase();a=a.filter(u=>{var i,R,b,V,U;return((i=u.name)==null?void 0:i.toLowerCase().includes(t))||((R=u.description)==null?void 0:R.toLowerCase().includes(t))||((b=u.assetName)==null?void 0:b.toLowerCase().includes(t))||((V=u.locationName)==null?void 0:V.toLowerCase().includes(t))||((U=u.id)==null?void 0:U.toString().includes(t))})}return a}),N=E(()=>r.value.reduce((a,t)=>(a[t.status]||(a[t.status]=[]),a[t.status].push(t),a),{})),S=E(()=>r.value.reduce((a,t)=>(a[t.type]||(a[t.type]=[]),a[t.type].push(t),a),{})),L=E(()=>r.value.filter(a=>a.status==="active")),I=E(()=>r.value.filter(a=>a.status==="inactive")),A=E(()=>{const a=new Date;return r.value.filter(t=>t.nextReadingDate&&new Date(t.nextReadingDate)<=a&&t.status==="active")}),e=E(()=>{const a=new Date;return r.value.filter(t=>t.nextReadingDate&&new Date(t.nextReadingDate){const a=new Date;return r.value.filter(t=>t.nextCalibrationDate&&new Date(t.nextCalibrationDate)<=a&&t.status==="active")}),s=E(()=>r.value.filter(a=>["out_of_service","maintenance","faulty"].includes(a.status))),c=async(a={})=>{try{x.value=!0,o.value=null;const t={...T.value,...a},u=await h.search(t);return r.value=u.content||u,w.value=u.totalElements||u.length,u}catch(t){throw o.value=t.message||"Failed to search meters",t}finally{x.value=!1}},p=async(a={})=>{try{d.value=!0,o.value=null;const t=await h.getAll(a);return r.value=t.content||t,w.value=t.totalElements||t.length,t}catch(t){throw o.value=t.message||"Failed to fetch meters",t}finally{d.value=!1}};return{meters:r,currentMeter:n,metersMini:y,metersByAsset:F,loading:d,loadingGet:x,error:o,totalCount:w,filters:v,pagination:T,filteredMeters:C,metersByStatus:N,metersByType:S,activeMeters:L,inactiveMeters:I,dueForReading:A,overdueReadings:e,dueForCalibration:l,outOfService:s,searchMeters:c,fetchMeters:p,fetchMetersMini:async()=>{try{const a=await h.getMini();return y.value=a,a}catch(a){throw o.value=a.message||"Failed to fetch meters mini",a}},fetchMeterById:async a=>{try{x.value=!0,o.value=null;const t=await h.getById(a);n.value=t;const u=r.value.findIndex(i=>i.id===a);return u!==-1&&(r.value[u]=t),t}catch(t){throw o.value=t.message||"Failed to fetch meter",t}finally{x.value=!1}},fetchMetersByAsset:async a=>{try{const t=await h.getByAsset(a);return F.value[a]=t,t}catch(t){throw o.value=t.message||"Failed to fetch meters by asset",t}},createMeter:async a=>{try{d.value=!0,o.value=null;const t=await h.create(a);return r.value.unshift(t),w.value+=1,t}catch(t){throw o.value=t.message||"Failed to create meter",t}finally{d.value=!1}},updateMeter:async(a,t)=>{var u;try{d.value=!0,o.value=null;const i=await h.update(a,t),R=r.value.findIndex(b=>b.id===a);return R!==-1&&(r.value[R]=i),((u=n.value)==null?void 0:u.id)===a&&(n.value=i),i}catch(i){throw o.value=i.message||"Failed to update meter",i}finally{d.value=!1}},deleteMeter:async a=>{var t;try{d.value=!0,o.value=null,await h.delete(a);const u=r.value.findIndex(i=>i.id===a);return u!==-1&&(r.value.splice(u,1),w.value-=1),((t=n.value)==null?void 0:t.id)===a&&(n.value=null),!0}catch(u){throw o.value=u.message||"Failed to delete meter",u}finally{d.value=!1}},updateMeterStatus:async(a,t)=>{var u;try{d.value=!0,o.value=null;const i=await h.updateStatus(a,t),R=r.value.findIndex(b=>b.id===a);return R!==-1&&(r.value[R]=i),((u=n.value)==null?void 0:u.id)===a&&(n.value=i),i}catch(i){throw o.value=i.message||"Failed to update meter status",i}finally{d.value=!1}},recordMeterReading:async(a,t)=>{var u;try{d.value=!0,o.value=null;const i=await h.recordReading(a,t),R=r.value.findIndex(b=>b.id===a);return R!==-1&&(r.value[R]={...r.value[R],currentReading:t.value,lastReadingDate:t.readingDate,nextReadingDate:i.nextReadingDate}),((u=n.value)==null?void 0:u.id)===a&&(n.value={...n.value,currentReading:t.value,lastReadingDate:t.readingDate,nextReadingDate:i.nextReadingDate}),i}catch(i){throw o.value=i.message||"Failed to record meter reading",i}finally{d.value=!1}},getMetersDueForReading:async(a={})=>{try{return await h.getDueForReading(a)}catch(t){throw o.value=t.message||"Failed to get meters due for reading",t}},getMetersDueForCalibration:async(a={})=>{try{return await h.getDueForCalibration(a)}catch(t){throw o.value=t.message||"Failed to get meters due for calibration",t}},getMeterStatistics:async(a={})=>{try{return await h.getStatistics(a)}catch(t){throw o.value=t.message||"Failed to get meter statistics",t}},bulkUpdateMeters:async a=>{try{d.value=!0,o.value=null;const t=await h.bulkUpdate(a);return await p(),t}catch(t){throw o.value=t.message||"Failed to perform bulk update",t}finally{d.value=!1}},clearCurrentMeter:()=>{n.value=null},clearMeters:()=>{r.value=[],n.value=null,y.value=[],F.value={},w.value=0,o.value=null},updateFilters:a=>{v.value={...v.value,...a}},updatePagination:a=>{T.value={...T.value,...a}}}}),m={COUNTER:"counter",GAUGE:"gauge",RUNTIME:"runtime",TEMPERATURE:"temperature",PRESSURE:"pressure",FLOW:"flow",LEVEL:"level",VIBRATION:"vibration",ELECTRICAL:"electrical",OTHER:"other"},q={[m.COUNTER]:"Counter",[m.GAUGE]:"Gauge",[m.RUNTIME]:"Runtime Hours",[m.TEMPERATURE]:"Temperature",[m.PRESSURE]:"Pressure",[m.FLOW]:"Flow Rate",[m.LEVEL]:"Level",[m.VIBRATION]:"Vibration",[m.ELECTRICAL]:"Electrical",[m.OTHER]:"Other"},f={ACTIVE:"active",INACTIVE:"inactive",OUT_OF_SERVICE:"out_of_service",MAINTENANCE:"maintenance",CALIBRATION_DUE:"calibration_due",FAULTY:"faulty"},P={[f.ACTIVE]:"Active",[f.INACTIVE]:"Inactive",[f.OUT_OF_SERVICE]:"Out of Service",[f.MAINTENANCE]:"Under Maintenance",[f.CALIBRATION_DUE]:"Calibration Due",[f.FAULTY]:"Faulty"},ne=[{label:"Daily",value:1},{label:"Every 2 Days",value:2},{label:"Every 3 Days",value:3},{label:"Weekly",value:7},{label:"Bi-weekly",value:14},{label:"Monthly",value:30},{label:"Quarterly",value:90},{label:"Semi-annually",value:180},{label:"Annually",value:365},{label:"As Needed",value:0}],le={id:null,name:"",description:"",type:m.COUNTER,status:f.ACTIVE,unit:"count",assetId:null,assetName:"",locationId:null,locationName:"",categoryId:null,categoryName:"",updateFrequency:30,isMonotonic:!0,allowNegativeReadings:!1,decimalPlaces:2,minValue:null,maxValue:null,warningThreshold:null,criticalThreshold:null,currentReading:null,previousReading:null,lastReadingDate:null,nextReadingDate:null,users:[],primaryUserId:null,image:null,attachments:[],lastCalibrationDate:null,nextCalibrationDate:null,calibrationInterval:365,isActive:!0,requiresComment:!1,autoCalculateDue:!0,createdAt:null,updatedAt:null,createdBy:null,updatedBy:null},re={id:null,meterId:null,value:null,readingDate:null,comment:"",readingMethod:"manual",imageAttachment:null,location:null,isEstimated:!1,isRollover:!1,previousValue:null,difference:null,recordedBy:null,verifiedBy:null,verifiedDate:null,createdAt:null,updatedAt:null},g={name:{minLength:2,maxLength:100,pattern:/^[a-zA-Z0-9\s\-_.,()&]+$/},type:{validValues:Object.values(m)},unit:{maxLength:10},updateFrequency:{min:0,max:365},decimalPlaces:{min:0,max:6}},O={comment:{maxLength:500}};Object.keys(f).map(r=>({label:P[f[r]],value:f[r]})),Object.keys(m).map(r=>({label:q[m[r]],value:m[r]}));function ue(){const r=B(),n=M(null),y=M(!1),F=e=>{if(n.value=null,!e.name||typeof e.name!="string")return n.value="Meter name is required",!1;const l=e.name.trim();if(l.lengthg.name.maxLength)return n.value=`Meter name must be less than ${g.name.maxLength} characters`,!1;if(!g.name.pattern.test(l))return n.value="Meter name contains invalid characters",!1;if(!e.type||!g.type.validValues.includes(e.type))return n.value="Valid meter type is required",!1;if(!e.unit||typeof e.unit!="string")return n.value="Meter unit is required",!1;if(e.unit.length>g.unit.maxLength)return n.value=`Meter unit must be less than ${g.unit.maxLength} characters`,!1;if(e.updateFrequency===null||e.updateFrequency===void 0)return n.value="Update frequency is required",!1;const s=parseInt(e.updateFrequency);if(isNaN(s)||sg.updateFrequency.max)return n.value=`Update frequency must be between ${g.updateFrequency.min} and ${g.updateFrequency.max} days`,!1;if(e.decimalPlaces!==null&&e.decimalPlaces!==void 0){const c=parseInt(e.decimalPlaces);if(isNaN(c)||cg.decimalPlaces.max)return n.value=`Decimal places must be between ${g.decimalPlaces.min} and ${g.decimalPlaces.max}`,!1}if(e.minValue!==null&&e.minValue!==void 0&&e.maxValue!==null&&e.maxValue!==void 0){const c=parseFloat(e.minValue),p=parseFloat(e.maxValue);if(!isNaN(c)&&!isNaN(p)&&c>=p)return n.value="Minimum value must be less than maximum value",!1}if(e.warningThreshold!==null&&e.warningThreshold!==void 0&&e.criticalThreshold!==null&&e.criticalThreshold!==void 0){const c=parseFloat(e.warningThreshold),p=parseFloat(e.criticalThreshold);if(!isNaN(c)&&!isNaN(p)&&c>=p)return n.value="Warning threshold must be less than critical threshold",!1}return!0},d=(e,l)=>{if(n.value=null,e.value===null||e.value===void 0||e.value==="")return n.value="Reading value is required",!1;const s=parseFloat(e.value);return isNaN(s)?(n.value="Reading value must be a valid number",!1):l.minValue!==null&&sl.maxValue?(n.value=`Reading value cannot be greater than maximum value (${l.maxValue})`,!1):l.isMonotonic&&l.currentReading!==null&&snew Date?(n.value="Reading date cannot be in the future",!1):l.requiresComment&&(!e.comment||!e.comment.trim())?(n.value="Comment is required for this meter",!1):e.comment&&e.comment.length>O.comment.maxLength?(n.value=`Comment must be less than ${O.comment.maxLength} characters`,!1):!0:(n.value="Reading date is required",!1)},x=e=>{var s,c,p;return{...e,name:(s=e.name)==null?void 0:s.trim(),description:((c=e.description)==null?void 0:c.trim())||"",unit:(p=e.unit)==null?void 0:p.trim(),updateFrequency:parseInt(e.updateFrequency)||30,decimalPlaces:parseInt(e.decimalPlaces)||2,minValue:e.minValue?parseFloat(e.minValue):null,maxValue:e.maxValue?parseFloat(e.maxValue):null,warningThreshold:e.warningThreshold?parseFloat(e.warningThreshold):null,criticalThreshold:e.criticalThreshold?parseFloat(e.criticalThreshold):null,calibrationInterval:parseInt(e.calibrationInterval)||365,isMonotonic:!!e.isMonotonic,allowNegativeReadings:!!e.allowNegativeReadings,requiresComment:!!e.requiresComment,autoCalculateDue:!!e.autoCalculateDue,isActive:e.isActive!==void 0?!!e.isActive:!0,createdAt:e.createdAt||new Date().toISOString(),updatedAt:new Date().toISOString()}},o=e=>{var l;return{...e,value:parseFloat(e.value),comment:((l=e.comment)==null?void 0:l.trim())||"",readingDate:e.readingDate||new Date().toISOString(),readingMethod:e.readingMethod||"manual",isEstimated:!!e.isEstimated,isRollover:!!e.isRollover,createdAt:new Date().toISOString()}},w=async e=>{try{if(y.value=!0,n.value=null,!F(e))throw new Error(n.value);const l=x(e);return await r.createMeter(l)}catch(l){throw n.value=l.message||"Failed to create meter",l}finally{y.value=!1}},v=async(e,l)=>{try{if(y.value=!0,n.value=null,!F(l))throw new Error(n.value);const s=x(l);return await r.updateMeter(e,s)}catch(s){throw n.value=s.message||"Failed to update meter",s}finally{y.value=!1}},T=async e=>{try{return y.value=!0,n.value=null,await r.deleteMeter(e),!0}catch(l){throw n.value=l.message||"Failed to delete meter",l}finally{y.value=!1}},C=async(e,l,s)=>{try{if(y.value=!0,n.value=null,!d(l,s))throw new Error(n.value);const c=o(l);return await r.recordMeterReading(e,c)}catch(c){throw n.value=c.message||"Failed to record meter reading",c}finally{y.value=!1}},N=(e,l)=>{if(!l||e.updateFrequency===0)return null;const s=new Date(l),c=new Date(s);return c.setDate(c.getDate()+e.updateFrequency),c.toISOString()},S=(e,l,s=!1)=>l==null?null:s?e:e-l,L=e=>({...e,formattedCurrentReading:e.currentReading!==null?e.currentReading.toFixed(e.decimalPlaces||2):"No reading",formattedLastReadingDate:e.lastReadingDate?new Date(e.lastReadingDate).toLocaleDateString():"Never",formattedNextReadingDate:e.nextReadingDate?new Date(e.nextReadingDate).toLocaleDateString():"Not scheduled",isReadingDue:e.nextReadingDate&&new Date(e.nextReadingDate)<=new Date,isReadingOverdue:e.nextReadingDate&&new Date(e.nextReadingDate)({[f.ACTIVE]:"text-green-600 bg-green-100",[f.INACTIVE]:"text-gray-600 bg-gray-100",[f.OUT_OF_SERVICE]:"text-red-600 bg-red-100",[f.MAINTENANCE]:"text-yellow-600 bg-yellow-100",[f.CALIBRATION_DUE]:"text-orange-600 bg-orange-100",[f.FAULTY]:"text-red-700 bg-red-200"})[e]||"text-gray-600 bg-gray-100",A=e=>{if(!e.nextReadingDate)return"text-gray-600 bg-gray-100";const l=new Date(e.nextReadingDate),s=new Date;return ln.value),processing:E(()=>y.value),validateMeter:F,validateMeterReading:d,processMeterData:x,processMeterReadingData:o,createMeter:w,updateMeter:v,deleteMeter:T,recordMeterReading:C,calculateNextReadingDate:N,calculateReadingDifference:S,formatMeterForDisplay:L,getStatusColor:I,getReadingStatusColor:A}}export{q as M,ne as U,ue as a,m as b,le as c,P as d,re as e,f,B as u}; +import{aP as O,r as M,c as E,bs as h}from"./index-QAlcqU00.js";const B=O("meters",()=>{const r=M([]),n=M(null),y=M([]),F=M({}),d=M(!1),x=M(!1),o=M(null),w=M(0),v=M({status:null,type:null,asset:null,location:null,assignedUser:null,search:"",dueDateRange:null}),T=M({page:0,size:20,sort:"name_asc",sortDirection:"asc"}),C=E(()=>{let a=r.value;if(v.value.status&&(a=a.filter(t=>t.status===v.value.status)),v.value.type&&(a=a.filter(t=>t.type===v.value.type)),v.value.asset&&(a=a.filter(t=>t.assetId===v.value.asset)),v.value.location&&(a=a.filter(t=>t.locationId===v.value.location)),v.value.assignedUser&&(a=a.filter(t=>{var u;return((u=t.users)==null?void 0:u.some(i=>i.id===v.value.assignedUser))||t.primaryUserId===v.value.assignedUser})),v.value.search){const t=v.value.search.toLowerCase();a=a.filter(u=>{var i,R,b,V,U;return((i=u.name)==null?void 0:i.toLowerCase().includes(t))||((R=u.description)==null?void 0:R.toLowerCase().includes(t))||((b=u.assetName)==null?void 0:b.toLowerCase().includes(t))||((V=u.locationName)==null?void 0:V.toLowerCase().includes(t))||((U=u.id)==null?void 0:U.toString().includes(t))})}return a}),N=E(()=>r.value.reduce((a,t)=>(a[t.status]||(a[t.status]=[]),a[t.status].push(t),a),{})),S=E(()=>r.value.reduce((a,t)=>(a[t.type]||(a[t.type]=[]),a[t.type].push(t),a),{})),L=E(()=>r.value.filter(a=>a.status==="active")),I=E(()=>r.value.filter(a=>a.status==="inactive")),A=E(()=>{const a=new Date;return r.value.filter(t=>t.nextReadingDate&&new Date(t.nextReadingDate)<=a&&t.status==="active")}),e=E(()=>{const a=new Date;return r.value.filter(t=>t.nextReadingDate&&new Date(t.nextReadingDate){const a=new Date;return r.value.filter(t=>t.nextCalibrationDate&&new Date(t.nextCalibrationDate)<=a&&t.status==="active")}),s=E(()=>r.value.filter(a=>["out_of_service","maintenance","faulty"].includes(a.status))),c=async(a={})=>{try{x.value=!0,o.value=null;const t={...T.value,...a},u=await h.search(t);return r.value=u.content||u,w.value=u.totalElements||u.length,u}catch(t){throw o.value=t.message||"Failed to search meters",t}finally{x.value=!1}},p=async(a={})=>{try{d.value=!0,o.value=null;const t=await h.getAll(a);return r.value=t.content||t,w.value=t.totalElements||t.length,t}catch(t){throw o.value=t.message||"Failed to fetch meters",t}finally{d.value=!1}};return{meters:r,currentMeter:n,metersMini:y,metersByAsset:F,loading:d,loadingGet:x,error:o,totalCount:w,filters:v,pagination:T,filteredMeters:C,metersByStatus:N,metersByType:S,activeMeters:L,inactiveMeters:I,dueForReading:A,overdueReadings:e,dueForCalibration:l,outOfService:s,searchMeters:c,fetchMeters:p,fetchMetersMini:async()=>{try{const a=await h.getMini();return y.value=a,a}catch(a){throw o.value=a.message||"Failed to fetch meters mini",a}},fetchMeterById:async a=>{try{x.value=!0,o.value=null;const t=await h.getById(a);n.value=t;const u=r.value.findIndex(i=>i.id===a);return u!==-1&&(r.value[u]=t),t}catch(t){throw o.value=t.message||"Failed to fetch meter",t}finally{x.value=!1}},fetchMetersByAsset:async a=>{try{const t=await h.getByAsset(a);return F.value[a]=t,t}catch(t){throw o.value=t.message||"Failed to fetch meters by asset",t}},createMeter:async a=>{try{d.value=!0,o.value=null;const t=await h.create(a);return r.value.unshift(t),w.value+=1,t}catch(t){throw o.value=t.message||"Failed to create meter",t}finally{d.value=!1}},updateMeter:async(a,t)=>{var u;try{d.value=!0,o.value=null;const i=await h.update(a,t),R=r.value.findIndex(b=>b.id===a);return R!==-1&&(r.value[R]=i),((u=n.value)==null?void 0:u.id)===a&&(n.value=i),i}catch(i){throw o.value=i.message||"Failed to update meter",i}finally{d.value=!1}},deleteMeter:async a=>{var t;try{d.value=!0,o.value=null,await h.delete(a);const u=r.value.findIndex(i=>i.id===a);return u!==-1&&(r.value.splice(u,1),w.value-=1),((t=n.value)==null?void 0:t.id)===a&&(n.value=null),!0}catch(u){throw o.value=u.message||"Failed to delete meter",u}finally{d.value=!1}},updateMeterStatus:async(a,t)=>{var u;try{d.value=!0,o.value=null;const i=await h.updateStatus(a,t),R=r.value.findIndex(b=>b.id===a);return R!==-1&&(r.value[R]=i),((u=n.value)==null?void 0:u.id)===a&&(n.value=i),i}catch(i){throw o.value=i.message||"Failed to update meter status",i}finally{d.value=!1}},recordMeterReading:async(a,t)=>{var u;try{d.value=!0,o.value=null;const i=await h.recordReading(a,t),R=r.value.findIndex(b=>b.id===a);return R!==-1&&(r.value[R]={...r.value[R],currentReading:t.value,lastReadingDate:t.readingDate,nextReadingDate:i.nextReadingDate}),((u=n.value)==null?void 0:u.id)===a&&(n.value={...n.value,currentReading:t.value,lastReadingDate:t.readingDate,nextReadingDate:i.nextReadingDate}),i}catch(i){throw o.value=i.message||"Failed to record meter reading",i}finally{d.value=!1}},getMetersDueForReading:async(a={})=>{try{return await h.getDueForReading(a)}catch(t){throw o.value=t.message||"Failed to get meters due for reading",t}},getMetersDueForCalibration:async(a={})=>{try{return await h.getDueForCalibration(a)}catch(t){throw o.value=t.message||"Failed to get meters due for calibration",t}},getMeterStatistics:async(a={})=>{try{return await h.getStatistics(a)}catch(t){throw o.value=t.message||"Failed to get meter statistics",t}},bulkUpdateMeters:async a=>{try{d.value=!0,o.value=null;const t=await h.bulkUpdate(a);return await p(),t}catch(t){throw o.value=t.message||"Failed to perform bulk update",t}finally{d.value=!1}},clearCurrentMeter:()=>{n.value=null},clearMeters:()=>{r.value=[],n.value=null,y.value=[],F.value={},w.value=0,o.value=null},updateFilters:a=>{v.value={...v.value,...a}},updatePagination:a=>{T.value={...T.value,...a}}}}),m={COUNTER:"counter",GAUGE:"gauge",RUNTIME:"runtime",TEMPERATURE:"temperature",PRESSURE:"pressure",FLOW:"flow",LEVEL:"level",VIBRATION:"vibration",ELECTRICAL:"electrical",OTHER:"other"},q={[m.COUNTER]:"Counter",[m.GAUGE]:"Gauge",[m.RUNTIME]:"Runtime Hours",[m.TEMPERATURE]:"Temperature",[m.PRESSURE]:"Pressure",[m.FLOW]:"Flow Rate",[m.LEVEL]:"Level",[m.VIBRATION]:"Vibration",[m.ELECTRICAL]:"Electrical",[m.OTHER]:"Other"},f={ACTIVE:"active",INACTIVE:"inactive",OUT_OF_SERVICE:"out_of_service",MAINTENANCE:"maintenance",CALIBRATION_DUE:"calibration_due",FAULTY:"faulty"},P={[f.ACTIVE]:"Active",[f.INACTIVE]:"Inactive",[f.OUT_OF_SERVICE]:"Out of Service",[f.MAINTENANCE]:"Under Maintenance",[f.CALIBRATION_DUE]:"Calibration Due",[f.FAULTY]:"Faulty"},ne=[{label:"Daily",value:1},{label:"Every 2 Days",value:2},{label:"Every 3 Days",value:3},{label:"Weekly",value:7},{label:"Bi-weekly",value:14},{label:"Monthly",value:30},{label:"Quarterly",value:90},{label:"Semi-annually",value:180},{label:"Annually",value:365},{label:"As Needed",value:0}],le={id:null,name:"",description:"",type:m.COUNTER,status:f.ACTIVE,unit:"count",assetId:null,assetName:"",locationId:null,locationName:"",categoryId:null,categoryName:"",updateFrequency:30,isMonotonic:!0,allowNegativeReadings:!1,decimalPlaces:2,minValue:null,maxValue:null,warningThreshold:null,criticalThreshold:null,currentReading:null,previousReading:null,lastReadingDate:null,nextReadingDate:null,users:[],primaryUserId:null,image:null,attachments:[],lastCalibrationDate:null,nextCalibrationDate:null,calibrationInterval:365,isActive:!0,requiresComment:!1,autoCalculateDue:!0,createdAt:null,updatedAt:null,createdBy:null,updatedBy:null},re={id:null,meterId:null,value:null,readingDate:null,comment:"",readingMethod:"manual",imageAttachment:null,location:null,isEstimated:!1,isRollover:!1,previousValue:null,difference:null,recordedBy:null,verifiedBy:null,verifiedDate:null,createdAt:null,updatedAt:null},g={name:{minLength:2,maxLength:100,pattern:/^[a-zA-Z0-9\s\-_.,()&]+$/},type:{validValues:Object.values(m)},unit:{maxLength:10},updateFrequency:{min:0,max:365},decimalPlaces:{min:0,max:6}},D={comment:{maxLength:500}};Object.keys(f).map(r=>({label:P[f[r]],value:f[r]})),Object.keys(m).map(r=>({label:q[m[r]],value:m[r]}));function ue(){const r=B(),n=M(null),y=M(!1),F=e=>{if(n.value=null,!e.name||typeof e.name!="string")return n.value="Meter name is required",!1;const l=e.name.trim();if(l.lengthg.name.maxLength)return n.value=`Meter name must be less than ${g.name.maxLength} characters`,!1;if(!g.name.pattern.test(l))return n.value="Meter name contains invalid characters",!1;if(!e.type||!g.type.validValues.includes(e.type))return n.value="Valid meter type is required",!1;if(!e.unit||typeof e.unit!="string")return n.value="Meter unit is required",!1;if(e.unit.length>g.unit.maxLength)return n.value=`Meter unit must be less than ${g.unit.maxLength} characters`,!1;if(e.updateFrequency===null||e.updateFrequency===void 0)return n.value="Update frequency is required",!1;const s=parseInt(e.updateFrequency);if(isNaN(s)||sg.updateFrequency.max)return n.value=`Update frequency must be between ${g.updateFrequency.min} and ${g.updateFrequency.max} days`,!1;if(e.decimalPlaces!==null&&e.decimalPlaces!==void 0){const c=parseInt(e.decimalPlaces);if(isNaN(c)||cg.decimalPlaces.max)return n.value=`Decimal places must be between ${g.decimalPlaces.min} and ${g.decimalPlaces.max}`,!1}if(e.minValue!==null&&e.minValue!==void 0&&e.maxValue!==null&&e.maxValue!==void 0){const c=parseFloat(e.minValue),p=parseFloat(e.maxValue);if(!isNaN(c)&&!isNaN(p)&&c>=p)return n.value="Minimum value must be less than maximum value",!1}if(e.warningThreshold!==null&&e.warningThreshold!==void 0&&e.criticalThreshold!==null&&e.criticalThreshold!==void 0){const c=parseFloat(e.warningThreshold),p=parseFloat(e.criticalThreshold);if(!isNaN(c)&&!isNaN(p)&&c>=p)return n.value="Warning threshold must be less than critical threshold",!1}return!0},d=(e,l)=>{if(n.value=null,e.value===null||e.value===void 0||e.value==="")return n.value="Reading value is required",!1;const s=parseFloat(e.value);return isNaN(s)?(n.value="Reading value must be a valid number",!1):l.minValue!==null&&sl.maxValue?(n.value=`Reading value cannot be greater than maximum value (${l.maxValue})`,!1):l.isMonotonic&&l.currentReading!==null&&snew Date?(n.value="Reading date cannot be in the future",!1):l.requiresComment&&(!e.comment||!e.comment.trim())?(n.value="Comment is required for this meter",!1):e.comment&&e.comment.length>D.comment.maxLength?(n.value=`Comment must be less than ${D.comment.maxLength} characters`,!1):!0:(n.value="Reading date is required",!1)},x=e=>{var s,c,p;return{...e,name:(s=e.name)==null?void 0:s.trim(),description:((c=e.description)==null?void 0:c.trim())||"",unit:(p=e.unit)==null?void 0:p.trim(),updateFrequency:parseInt(e.updateFrequency)||30,decimalPlaces:parseInt(e.decimalPlaces)||2,minValue:e.minValue?parseFloat(e.minValue):null,maxValue:e.maxValue?parseFloat(e.maxValue):null,warningThreshold:e.warningThreshold?parseFloat(e.warningThreshold):null,criticalThreshold:e.criticalThreshold?parseFloat(e.criticalThreshold):null,calibrationInterval:parseInt(e.calibrationInterval)||365,isMonotonic:!!e.isMonotonic,allowNegativeReadings:!!e.allowNegativeReadings,requiresComment:!!e.requiresComment,autoCalculateDue:!!e.autoCalculateDue,isActive:e.isActive!==void 0?!!e.isActive:!0,createdAt:e.createdAt||new Date().toISOString(),updatedAt:new Date().toISOString()}},o=e=>{var l;return{...e,value:parseFloat(e.value),comment:((l=e.comment)==null?void 0:l.trim())||"",readingDate:e.readingDate||new Date().toISOString(),readingMethod:e.readingMethod||"manual",isEstimated:!!e.isEstimated,isRollover:!!e.isRollover,createdAt:new Date().toISOString()}},w=async e=>{try{if(y.value=!0,n.value=null,!F(e))throw new Error(n.value);const l=x(e);return await r.createMeter(l)}catch(l){throw n.value=l.message||"Failed to create meter",l}finally{y.value=!1}},v=async(e,l)=>{try{if(y.value=!0,n.value=null,!F(l))throw new Error(n.value);const s=x(l);return await r.updateMeter(e,s)}catch(s){throw n.value=s.message||"Failed to update meter",s}finally{y.value=!1}},T=async e=>{try{return y.value=!0,n.value=null,await r.deleteMeter(e),!0}catch(l){throw n.value=l.message||"Failed to delete meter",l}finally{y.value=!1}},C=async(e,l,s)=>{try{if(y.value=!0,n.value=null,!d(l,s))throw new Error(n.value);const c=o(l);return await r.recordMeterReading(e,c)}catch(c){throw n.value=c.message||"Failed to record meter reading",c}finally{y.value=!1}},N=(e,l)=>{if(!l||e.updateFrequency===0)return null;const s=new Date(l),c=new Date(s);return c.setDate(c.getDate()+e.updateFrequency),c.toISOString()},S=(e,l,s=!1)=>l==null?null:s?e:e-l,L=e=>({...e,formattedCurrentReading:e.currentReading!==null?e.currentReading.toFixed(e.decimalPlaces||2):"No reading",formattedLastReadingDate:e.lastReadingDate?new Date(e.lastReadingDate).toLocaleDateString():"Never",formattedNextReadingDate:e.nextReadingDate?new Date(e.nextReadingDate).toLocaleDateString():"Not scheduled",isReadingDue:e.nextReadingDate&&new Date(e.nextReadingDate)<=new Date,isReadingOverdue:e.nextReadingDate&&new Date(e.nextReadingDate)({[f.ACTIVE]:"text-green-600 bg-green-100",[f.INACTIVE]:"text-gray-600 bg-gray-100",[f.OUT_OF_SERVICE]:"text-red-600 bg-red-100",[f.MAINTENANCE]:"text-yellow-600 bg-yellow-100",[f.CALIBRATION_DUE]:"text-orange-600 bg-orange-100",[f.FAULTY]:"text-red-700 bg-red-200"})[e]||"text-gray-600 bg-gray-100",A=e=>{if(!e.nextReadingDate)return"text-gray-600 bg-gray-100";const l=new Date(e.nextReadingDate),s=new Date;return ln.value),processing:E(()=>y.value),validateMeter:F,validateMeterReading:d,processMeterData:x,processMeterReadingData:o,createMeter:w,updateMeter:v,deleteMeter:T,recordMeterReading:C,calculateNextReadingDate:N,calculateReadingDifference:S,formatMeterForDisplay:L,getStatusColor:I,getReadingStatusColor:A}}export{q as M,ne as U,ue as a,m as b,le as c,P as d,re as e,f,B as u}; diff --git a/frontend/dist/assets/useMobileOptimization-Ds6Eb1bE.js b/frontend/dist/assets/useMobileOptimization-Ds6Eb1bE.js new file mode 100644 index 00000000..5d7967b0 --- /dev/null +++ b/frontend/dist/assets/useMobileOptimization-Ds6Eb1bE.js @@ -0,0 +1 @@ +import{r as s,c as l,o as ae,aO as re}from"./index-QAlcqU00.js";function ue(){const o=s(!1),M=s(!1),i=s({width:0,height:0}),T=s("portrait"),v=s("desktop"),f=s(!1),d=s(null),h=s(!1),w=l(()=>i.value.width<768),g=l(()=>i.value.width>=768&&i.value.width<1024),X=l(()=>i.value.width>=1024),Y=l(()=>w.value?"layout-mobile":g.value?"layout-tablet":"layout-desktop"),B=l(()=>w.value?"grid-cols-1":g.value?"grid-cols-2":"grid-cols-3"),O=l(()=>w.value?5:g.value?10:20),y={xs:320,sm:640,md:768,lg:1024,xl:1280,"2xl":1536},S=()=>{i.value={width:window.innerWidth,height:window.innerHeight},o.value=i.value.width=y.md&&i.value.widthi.value.height?"landscape":"portrait"},R=()=>{f.value="ontouchstart"in window||navigator.maxTouchPoints>0},x=()=>{S()},z=()=>{setTimeout(S,100)},b=e=>{e.preventDefault(),d.value=e},$=async()=>{if(!d.value)return!1;try{const e=await d.value.prompt();return console.log("Install prompt result:",e),e.outcome==="accepted"?(d.value=null,h.value=!0,!0):!1}catch(e){return console.error("Failed to install app:",e),!1}},G=()=>{h.value=window.matchMedia("(display-mode: standalone)").matches||window.navigator.standalone===!0},Q=(e,t={})=>{if(!f.value)return;let n=0,u=0,r=0;const L=a=>{const m=a.touches[0];n=m.clientX,u=m.clientY,r=Date.now()},P=a=>{var _,q,A,F,D,V;const m=a.changedTouches[0],ne=m.clientX,oe=m.clientY,ie=Date.now(),c=ne-n,p=oe-u,E=ie-r,C=50,I=300;Math.abs(c)>Math.abs(p)&&Math.abs(c)>C&&E0?(_=t.onSwipeRight)==null||_.call(t,a):(q=t.onSwipeLeft)==null||q.call(t,a):Math.abs(p)>C&&E0?(A=t.onSwipeDown)==null||A.call(t,a):(F=t.onSwipeUp)==null||F.call(t,a)),Math.abs(c)<10&&Math.abs(p)<10&&E<300&&((D=t.onTap)==null||D.call(t,a)),E>500&&Math.abs(c)<10&&Math.abs(p)<10&&((V=t.onLongPress)==null||V.call(t,a))};return e.addEventListener("touchstart",L,{passive:!0}),e.addEventListener("touchend",P,{passive:!0}),()=>{e.removeEventListener("touchstart",L),e.removeEventListener("touchend",P)}},U=e=>{if(!o.value)return e;const t=e.filter(n=>n.priority==="high"||n.essential);return t.length===0?e.slice(0,3):t},W=e=>({items:e,collapsed:!0,toggle(){this.collapsed=!this.collapsed},close(){this.collapsed=!0}}),H=()=>{o.value&&(document.documentElement.style.setProperty("--animation-duration","0.2s"),document.body.classList.add("mobile-optimized"),f.value&&document.body.classList.add("touch-device"))},j=(e,t="medium")=>{const u={small:o.value?"_mobile":"_small",medium:o.value?"_mobile":"_medium",large:o.value?"_tablet":"_large"}[t]||"_medium",[r,L]=e.split(".");return`${r}${u}.${L}`},J=(e="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no")=>{let t=document.querySelector("meta[name=viewport]");t||(t=document.createElement("meta"),t.name="viewport",document.head.appendChild(t)),t.content=e},K=()=>{const e=getComputedStyle(document.documentElement);return{top:e.getPropertyValue("--safe-area-inset-top")||"0px",right:e.getPropertyValue("--safe-area-inset-right")||"0px",bottom:e.getPropertyValue("--safe-area-inset-bottom")||"0px",left:e.getPropertyValue("--safe-area-inset-left")||"0px"}},N=(e=100)=>{"vibrate"in navigator&&navigator.vibrate(e)},Z=async()=>{if("wakeLock"in navigator)try{const e=await navigator.wakeLock.request("screen");return console.log("Screen wake lock acquired"),e}catch(e){console.error("Failed to acquire wake lock:",e)}return null},k=e=>{if(!o.value)return;e.querySelectorAll("input, select, textarea").forEach(n=>{(n.type==="text"||n.type==="email"||n.type==="password")&&(n.style.fontSize="16px"),n.name==="email"&&n.setAttribute("autocomplete","email"),n.type==="number"&&n.setAttribute("inputmode","numeric"),n.type==="tel"&&n.setAttribute("inputmode","tel")})},ee=()=>({cardSpacing:o.value?"space-y-3":"space-y-4",padding:o.value?"p-4":"p-6",margin:o.value?"m-2":"m-4",fontSize:o.value?"text-sm":"text-base",buttonSize:o.value?"sm":"md",modalSize:o.value?"full":"lg"}),te=()=>{var e,t;if("performance"in window){const n=performance.getEntriesByType("navigation")[0],u=performance.getEntriesByType("paint");return{loadTime:n.loadEventEnd-n.loadEventStart,domContentLoaded:n.domContentLoadedEventEnd-n.domContentLoadedEventStart,firstPaint:(e=u.find(r=>r.name==="first-paint"))==null?void 0:e.startTime,firstContentfulPaint:(t=u.find(r=>r.name==="first-contentful-paint"))==null?void 0:t.startTime}}return null};return ae(()=>{S(),R(),G(),H(),J(),window.addEventListener("resize",x),window.addEventListener("orientationchange",z),window.addEventListener("beforeinstallprompt",b),window.matchMedia("(display-mode: standalone)").addListener(t=>{h.value=t.matches})}),re(()=>{window.removeEventListener("resize",x),window.removeEventListener("orientationchange",z),window.removeEventListener("beforeinstallprompt",b)}),{isMobile:o,isTablet:M,screenSize:i,orientation:T,deviceType:v,touchSupport:f,installPrompt:d,isInstalled:h,isSmallScreen:w,isMediumScreen:g,isLargeScreen:X,layoutClass:Y,cardGridCols:B,tablePageSize:O,breakpoints:y,updateScreenInfo:S,installApp:$,setupTouchGestures:Q,optimizeTableForMobile:U,createMobileMenu:W,getResponsiveImageSrc:j,getSafeAreaInsets:K,vibrate:N,requestWakeLock:Z,optimizeFormForMobile:k,getMobileLayoutConfig:ee,measurePerformance:te}}export{ue as u}; diff --git a/frontend/dist/assets/usePartDisplay-D-mkc8An.js b/frontend/dist/assets/usePartDisplay-DgOw31kV.js similarity index 98% rename from frontend/dist/assets/usePartDisplay-D-mkc8An.js rename to frontend/dist/assets/usePartDisplay-DgOw31kV.js index e9bed30b..0870f621 100644 --- a/frontend/dist/assets/usePartDisplay-D-mkc8An.js +++ b/frontend/dist/assets/usePartDisplay-DgOw31kV.js @@ -1 +1 @@ -import{r as h,c as N}from"./index-BUdRbiwj.js";function I(){const a=h(null),S=t=>{if(a.value=null,!t.name||t.name.trim().length===0)return a.value="Part name is required",!1;if(!t.category)return a.value="Part category is required",!1;if(!t.location||t.location.trim().length===0)return a.value="Storage location is required",!1;const o=parseFloat(t.currentStock),n=parseFloat(t.minStock),l=parseFloat(t.unitCost);return isNaN(o)||o<0||isNaN(n)||n<0?(a.value="Stock quantities must be non-negative",!1):isNaN(l)||l<0?(a.value="Unit cost must be non-negative",!1):!0},d=(t,o=[])=>{const n={isValid:!0,errors:[],warnings:[]};t.partNumber&&o.find(e=>e.partNumber===t.partNumber&&e.category===t.category&&(!t.id||e.id!==t.id))&&(n.isValid=!1,n.errors.push(`Part number ${t.partNumber} already exists in ${t.category} category`));const l=parseFloat(t.currentStock),c=parseFloat(t.minStock);return l{var n,l,c,s,e,r;const o={...t,name:(n=t.name)==null?void 0:n.trim(),partNumber:(l=t.partNumber)==null?void 0:l.trim().toUpperCase(),manufacturer:(c=t.manufacturer)==null?void 0:c.trim(),description:(s=t.description)==null?void 0:s.trim(),supplier:(e=t.supplier)==null?void 0:e.trim(),location:(r=t.location)==null?void 0:r.trim(),currentStock:parseInt(t.currentStock)||0,minStock:parseInt(t.minStock)||0,unitCost:parseFloat(t.unitCost)||0,createdAt:t.createdAt||new Date().toISOString(),updatedAt:new Date().toISOString()};return Object.keys(o).forEach(i=>{o[i]===void 0&&delete o[i]}),o},u=t=>{const o=t.currentStock||0,n=t.minStock||0;return on*2?"over":"normal"},y=(t,o,n)=>{if(!t||!Array.isArray(t))return[];let l=t.filter(c=>c.category===n&&(!o||c.id!==o.id));if(o){const s=((e,r)=>{const i=new Set,p=v=>{r.forEach(m=>{var P;((P=m.parentPart)==null?void 0:P.id)===v&&!i.has(m.id)&&(i.add(m.id),p(m.id))})};return p(e),i})(o.id,t);l=l.filter(e=>!s.has(e.id))}return l.map(c=>({label:c.name,value:c.id}))},b=t=>t.reduce((o,n)=>o+(n.currentStock||0)*(n.unitCost||0),0),f=t=>t.filter(o=>u(o)==="low"),k=(t,o)=>t.filter(n=>n.category===o);return{error:N(()=>a.value),validatePart:S,validatePartBusinessRules:d,processPartData:g,calculateStockLevel:u,calculateTotalValue:b,getLowStockParts:f,getPartsByCategory:k,getValidParentParts:y}}function T(){const a=e=>({PARTS:"blue",TOOLS:"green",SUPPLIES:"yellow",EQUIPMENT:"purple",CONSUMABLES:"orange"})[e]||"gray",S=e=>({low:"red",normal:"green",over:"yellow"})[e]||"gray",d=e=>({PARTS:"Parts",TOOLS:"Tools",SUPPLIES:"Supplies",EQUIPMENT:"Equipment",CONSUMABLES:"Consumables"})[e]||"General",g=e=>({low:"Low Stock",normal:"Normal",over:"Overstocked"})[e]||"Unknown",u=e=>!e&&e!==0?"$0.00":new Intl.NumberFormat("en-US",{style:"currency",currency:"USD"}).format(e);return{getCategoryVariant:a,getStockLevelVariant:S,formatCategory:d,formatStockLevel:g,formatCurrency:u,formatPartNumber:e=>e||"No part number",formatSupplier:e=>e||"No supplier",formatLocation:e=>e||"No location",getCategoryIcon:e=>({PARTS:"cog",TOOLS:"wrench",SUPPLIES:"cube",EQUIPMENT:"desktop-computer",CONSUMABLES:"beaker"})[e]||"archive",getStockLevelIcon:e=>({low:"exclamation-triangle",normal:"check-circle",over:"information-circle"})[e]||"question-mark-circle",formatStockDisplay:e=>{const r=e.currentStock||0,i=e.minStock||0;return`${r} / ${i}`},calculatePartValue:e=>{const r=e.currentStock||0,i=e.unitCost||0;return r*i},formatInventoryStats:e=>{if(!e)return[];const r=e.totalValue||0,i=r>=1e3?`$${(r/1e3).toFixed(1)}K`:u(r);return[{label:"Total Parts",value:e.totalParts||0,variant:"blue",icon:"cube",subtitle:"All inventory items"},{label:"Total Value",value:i,variant:"green",icon:"currency-dollar",subtitle:"Inventory value"},{label:"Low Stock Items",value:e.lowStock||0,variant:"red",icon:"exclamation-triangle",subtitle:"Need restocking"},{label:"Categories",value:Object.keys(e.categories||{}).length,variant:"purple",icon:"collection",subtitle:"Part categories"}]},getCategoryTabs:e=>{const r=(e==null?void 0:e.categories)||{};return[{key:"all",label:"All Parts",count:(e==null?void 0:e.totalParts)||0},{key:"PARTS",label:"Parts",count:r.PARTS||0},{key:"TOOLS",label:"Tools",count:r.TOOLS||0},{key:"SUPPLIES",label:"Supplies",count:r.SUPPLIES||0},{key:"EQUIPMENT",label:"Equipment",count:r.EQUIPMENT||0}]},getPartTableColumns:(e=!1)=>{const r=[{key:"name",label:"Part",sortable:!0,width:"25%",essential:!0,priority:"high"},{key:"partNumber",label:"Part Number",sortable:!0,width:"15%",priority:"medium"},{key:"category",label:"Category",sortable:!0,width:"12%",priority:"medium"},{key:"stock",label:"Stock (Current/Min)",sortable:!0,width:"15%",essential:!0,priority:"high"},{key:"unitCost",label:"Unit Cost",sortable:!0,width:"10%",priority:"low"},{key:"totalValue",label:"Total Value",sortable:!0,width:"12%",priority:"low"},{key:"location",label:"Location",sortable:!0,width:"15%",priority:"medium"},{key:"actions",label:"Actions",sortable:!1,width:"12%",essential:!0,priority:"high"}];return e?r.filter(i=>i.essential||i.priority==="high"):r}}}export{T as a,I as u}; +import{r as h,c as N}from"./index-QAlcqU00.js";function I(){const a=h(null),S=t=>{if(a.value=null,!t.name||t.name.trim().length===0)return a.value="Part name is required",!1;if(!t.category)return a.value="Part category is required",!1;if(!t.location||t.location.trim().length===0)return a.value="Storage location is required",!1;const o=parseFloat(t.currentStock),n=parseFloat(t.minStock),l=parseFloat(t.unitCost);return isNaN(o)||o<0||isNaN(n)||n<0?(a.value="Stock quantities must be non-negative",!1):isNaN(l)||l<0?(a.value="Unit cost must be non-negative",!1):!0},d=(t,o=[])=>{const n={isValid:!0,errors:[],warnings:[]};t.partNumber&&o.find(e=>e.partNumber===t.partNumber&&e.category===t.category&&(!t.id||e.id!==t.id))&&(n.isValid=!1,n.errors.push(`Part number ${t.partNumber} already exists in ${t.category} category`));const l=parseFloat(t.currentStock),c=parseFloat(t.minStock);return l{var n,l,c,s,e,r;const o={...t,name:(n=t.name)==null?void 0:n.trim(),partNumber:(l=t.partNumber)==null?void 0:l.trim().toUpperCase(),manufacturer:(c=t.manufacturer)==null?void 0:c.trim(),description:(s=t.description)==null?void 0:s.trim(),supplier:(e=t.supplier)==null?void 0:e.trim(),location:(r=t.location)==null?void 0:r.trim(),currentStock:parseInt(t.currentStock)||0,minStock:parseInt(t.minStock)||0,unitCost:parseFloat(t.unitCost)||0,createdAt:t.createdAt||new Date().toISOString(),updatedAt:new Date().toISOString()};return Object.keys(o).forEach(i=>{o[i]===void 0&&delete o[i]}),o},u=t=>{const o=t.currentStock||0,n=t.minStock||0;return on*2?"over":"normal"},y=(t,o,n)=>{if(!t||!Array.isArray(t))return[];let l=t.filter(c=>c.category===n&&(!o||c.id!==o.id));if(o){const s=((e,r)=>{const i=new Set,p=v=>{r.forEach(m=>{var P;((P=m.parentPart)==null?void 0:P.id)===v&&!i.has(m.id)&&(i.add(m.id),p(m.id))})};return p(e),i})(o.id,t);l=l.filter(e=>!s.has(e.id))}return l.map(c=>({label:c.name,value:c.id}))},b=t=>t.reduce((o,n)=>o+(n.currentStock||0)*(n.unitCost||0),0),f=t=>t.filter(o=>u(o)==="low"),k=(t,o)=>t.filter(n=>n.category===o);return{error:N(()=>a.value),validatePart:S,validatePartBusinessRules:d,processPartData:g,calculateStockLevel:u,calculateTotalValue:b,getLowStockParts:f,getPartsByCategory:k,getValidParentParts:y}}function T(){const a=e=>({PARTS:"blue",TOOLS:"green",SUPPLIES:"yellow",EQUIPMENT:"purple",CONSUMABLES:"orange"})[e]||"gray",S=e=>({low:"red",normal:"green",over:"yellow"})[e]||"gray",d=e=>({PARTS:"Parts",TOOLS:"Tools",SUPPLIES:"Supplies",EQUIPMENT:"Equipment",CONSUMABLES:"Consumables"})[e]||"General",g=e=>({low:"Low Stock",normal:"Normal",over:"Overstocked"})[e]||"Unknown",u=e=>!e&&e!==0?"$0.00":new Intl.NumberFormat("en-US",{style:"currency",currency:"USD"}).format(e);return{getCategoryVariant:a,getStockLevelVariant:S,formatCategory:d,formatStockLevel:g,formatCurrency:u,formatPartNumber:e=>e||"No part number",formatSupplier:e=>e||"No supplier",formatLocation:e=>e||"No location",getCategoryIcon:e=>({PARTS:"cog",TOOLS:"wrench",SUPPLIES:"cube",EQUIPMENT:"desktop-computer",CONSUMABLES:"beaker"})[e]||"archive",getStockLevelIcon:e=>({low:"exclamation-triangle",normal:"check-circle",over:"information-circle"})[e]||"question-mark-circle",formatStockDisplay:e=>{const r=e.currentStock||0,i=e.minStock||0;return`${r} / ${i}`},calculatePartValue:e=>{const r=e.currentStock||0,i=e.unitCost||0;return r*i},formatInventoryStats:e=>{if(!e)return[];const r=e.totalValue||0,i=r>=1e3?`$${(r/1e3).toFixed(1)}K`:u(r);return[{label:"Total Parts",value:e.totalParts||0,variant:"blue",icon:"cube",subtitle:"All inventory items"},{label:"Total Value",value:i,variant:"green",icon:"currency-dollar",subtitle:"Inventory value"},{label:"Low Stock Items",value:e.lowStock||0,variant:"red",icon:"exclamation-triangle",subtitle:"Need restocking"},{label:"Categories",value:Object.keys(e.categories||{}).length,variant:"purple",icon:"collection",subtitle:"Part categories"}]},getCategoryTabs:e=>{const r=(e==null?void 0:e.categories)||{};return[{key:"all",label:"All Parts",count:(e==null?void 0:e.totalParts)||0},{key:"PARTS",label:"Parts",count:r.PARTS||0},{key:"TOOLS",label:"Tools",count:r.TOOLS||0},{key:"SUPPLIES",label:"Supplies",count:r.SUPPLIES||0},{key:"EQUIPMENT",label:"Equipment",count:r.EQUIPMENT||0}]},getPartTableColumns:(e=!1)=>{const r=[{key:"name",label:"Part",sortable:!0,width:"25%",essential:!0,priority:"high"},{key:"partNumber",label:"Part Number",sortable:!0,width:"15%",priority:"medium"},{key:"category",label:"Category",sortable:!0,width:"12%",priority:"medium"},{key:"stock",label:"Stock (Current/Min)",sortable:!0,width:"15%",essential:!0,priority:"high"},{key:"unitCost",label:"Unit Cost",sortable:!0,width:"10%",priority:"low"},{key:"totalValue",label:"Total Value",sortable:!0,width:"12%",priority:"low"},{key:"location",label:"Location",sortable:!0,width:"15%",priority:"medium"},{key:"actions",label:"Actions",sortable:!1,width:"12%",essential:!0,priority:"high"}];return e?r.filter(i=>i.essential||i.priority==="high"):r}}}export{T as a,I as u}; diff --git a/frontend/dist/assets/usePreventiveMaintenanceDisplay-Bhncwa9c.js b/frontend/dist/assets/usePreventiveMaintenanceDisplay-DE1jAbPb.js similarity index 99% rename from frontend/dist/assets/usePreventiveMaintenanceDisplay-Bhncwa9c.js rename to frontend/dist/assets/usePreventiveMaintenanceDisplay-DE1jAbPb.js index 0bce6eb2..f57146ae 100644 --- a/frontend/dist/assets/usePreventiveMaintenanceDisplay-Bhncwa9c.js +++ b/frontend/dist/assets/usePreventiveMaintenanceDisplay-DE1jAbPb.js @@ -1 +1 @@ -import{bc as y,aO as m}from"./index-BUdRbiwj.js";class S extends y{constructor(){super("/preventive-maintenance")}async search(e={}){return await this.request("/search","POST",{criteria:{page:0,size:10,sortBy:"nextDue",direction:"ASC",...e}})}async getUpcomingMaintenance(e,t=30){return await this.request("/upcoming","GET",null,{params:{assetId:e,days:t}})}async generateWorkOrders(e,t={}){return await this.request(`/${e}/work-orders`,"POST",t)}async getHistory(e){return await this.request(`/${e}/history`,"GET")}async pauseSchedule(e,t=""){return await this.request(`/${e}/status`,"PATCH",{status:"PAUSED",reason:t})}async resumeSchedule(e){return await this.request(`/${e}/status`,"PATCH",{status:"ACTIVE"})}async getByAsset(e){return await this.request(`/asset/${e}`,"GET")}async getOverdue(e){const t=e?{days:e}:{};return await this.request("/overdue","GET",null,{params:t})}async getByPriority(e){return await this.request(`/priority/${e}`,"GET")}async getByFrequency(e){return await this.request(`/frequency/${e}`,"GET")}async bulkUpdateStatus(e,t,a=""){return await this.request("/bulk/status","PATCH",{scheduleIds:e,status:t,reason:a})}async getCalendarEvents(e,t,a=[]){return await this.request("/calendar","GET",null,{params:{startDate:e.toISOString(),endDate:t.toISOString(),assetIds:a.join(",")}})}async reschedule(e,t,a=""){return await this.request(`/${e}/reschedule`,"PATCH",{newDate:t.toISOString(),reason:a})}async getStatistics(e={}){const t={};return e.assetId&&(t.assetId=e.assetId),e.startDate&&(t.startDate=e.startDate.toISOString()),e.endDate&&(t.endDate=e.endDate.toISOString()),await this.request("/statistics","GET",null,{params:t})}async duplicate(e,t={}){return await this.request(`/${e}/duplicate`,"POST",t)}async getTemplates(){return await this.request("/templates","GET")}async createFromTemplate(e,t){return await this.request("/templates/create","POST",{templateId:e,...t})}}let c=new S;const I=m("preventive-maintenance",{state:()=>({schedules:[],currentSchedule:null,loading:!1,error:null,initialized:!1,totalElements:0,totalPages:0,searchCriteria:{page:0,size:10,sortBy:"nextDue",direction:"ASC",search:"",filters:{}},upcomingMaintenance:[],overdueSchedules:[],calendarEvents:[],statistics:{totalSchedules:0,activeSchedules:0,pausedSchedules:0,overdueSchedules:0,dueSoon:0,dueThisWeek:0,completionRate:0,totalValue:0,avgDuration:0}}),getters:{getScheduleById:r=>e=>r.schedules.find(t=>t.id===e),filteredSchedules:r=>{let e=[...r.schedules];if(r.searchCriteria.search){const a=r.searchCriteria.search.toLowerCase();e=e.filter(n=>{var i,d,h;return((i=n.name)==null?void 0:i.toLowerCase().includes(a))||((d=n.assetName)==null?void 0:d.toLowerCase().includes(a))||((h=n.description)==null?void 0:h.toLowerCase().includes(a))})}const t=r.searchCriteria.filters||{};return t.status&&(e=e.filter(a=>a.status===t.status)),t.priority&&(e=e.filter(a=>a.priority===t.priority)),t.assetId&&(e=e.filter(a=>a.assetId===t.assetId)),t.frequency&&(e=e.filter(a=>a.frequency===t.frequency)),e},getSchedulesByStatus:r=>e=>r.schedules.filter(t=>t.status===e),getSchedulesByPriority:r=>e=>r.schedules.filter(t=>t.priority===e),getSchedulesForAsset:r=>e=>r.schedules.filter(t=>t.assetId===e),overdueSchedulesList:r=>{const e=new Date;return r.schedules.filter(t=>t.nextDue?new Date(t.nextDue){const e=new Date;e.setHours(0,0,0,0);const t=new Date(e);return t.setDate(t.getDate()+1),r.schedules.filter(a=>{if(!a.nextDue)return!1;const n=new Date(a.nextDue);return n>=e&&n{const e=new Date,t=new Date(e.getTime()+3*24*60*60*1e3);return r.schedules.filter(a=>{if(!a.nextDue)return!1;const n=new Date(a.nextDue);return n>e&&n<=t&&a.status==="ACTIVE"})},inventoryStats:r=>{const e=r.schedules.filter(n=>n.status==="ACTIVE"),t=r.schedules.filter(n=>n.nextDue?new Date(n.nextDue){if(!n.nextDue)return!1;const i=new Date(n.nextDue),d=new Date,h=new Date(d.getTime()+3*24*60*60*1e3);return i>d&&i<=h&&n.status==="ACTIVE"});return{totalSchedules:r.schedules.length,activeSchedules:e.length,pausedSchedules:r.schedules.filter(n=>n.status==="PAUSED").length,overdueSchedules:t.length,dueSoon:a.length,dueThisWeek:r.schedules.filter(n=>{if(!n.nextDue)return!1;const i=new Date(n.nextDue),d=new Date,h=new Date(d.getTime()+7*24*60*60*1e3);return i>d&&i<=h&&n.status==="ACTIVE"}).length,completionRate:r.statistics.completionRate||0,totalValue:r.schedules.reduce((n,i)=>n+(i.estimatedCost||0)*(i.completedCount||0),0),avgDuration:r.schedules.length>0?Math.round(r.schedules.reduce((n,i)=>n+(i.estimatedDuration||0),0)/r.schedules.length):0}}},actions:{async initializeSchedules(){if(!this.initialized)try{await this.fetchSchedules(),this.initialized=!0}catch(r){console.error("Failed to initialize schedules:",r),this.error=r.message}},async fetchSchedules(r={}){this.loading=!0,this.error=null;try{const e={...this.searchCriteria,...r},t=await c.search(e);return this.schedules=t.data||[],this.totalElements=t.totalElements||0,this.totalPages=t.totalPages||0,this.searchCriteria={...this.searchCriteria,...r},t}catch(e){throw console.error("Failed to fetch schedules:",e),this.error=e.message,e}finally{this.loading=!1}},async fetchScheduleById(r){try{const e=await c.getById(r),t=this.schedules.findIndex(a=>a.id===r);return t!==-1&&(this.schedules[t]=e),e}catch(e){throw console.error("Failed to fetch schedule:",e),e}},async createSchedule(r){this.loading=!0,this.error=null;try{const e=await c.create(r);return this.schedules.unshift(e),this.totalElements+=1,e}catch(e){throw console.error("Failed to create schedule:",e),this.error=e.message,e}finally{this.loading=!1}},async updateSchedule(r,e){this.loading=!0,this.error=null;try{const t=await c.update(r,e),a=this.schedules.findIndex(n=>n.id===r);return a!==-1&&(this.schedules[a]=t),t}catch(t){throw console.error("Failed to update schedule:",t),this.error=t.message,t}finally{this.loading=!1}},async deleteSchedule(r){this.loading=!0,this.error=null;try{await c.delete(r);const e=this.schedules.findIndex(t=>t.id===r);e!==-1&&(this.schedules.splice(e,1),this.totalElements-=1)}catch(e){throw console.error("Failed to delete schedule:",e),this.error=e.message,e}finally{this.loading=!1}},async generateWorkOrders(r,e={}){try{const t=await c.generateWorkOrders(r,e);return t&&t.length>0&&this.getScheduleById(r)&&await this.fetchScheduleById(r),t}catch(t){throw console.error("Failed to generate work orders:",t),t}},async pauseSchedule(r,e=""){try{const t=await c.pauseSchedule(r,e),a=this.schedules.findIndex(n=>n.id===r);return a!==-1&&(this.schedules[a]={...this.schedules[a],...t}),t}catch(t){throw console.error("Failed to pause schedule:",t),t}},async resumeSchedule(r){try{const e=await c.resumeSchedule(r),t=this.schedules.findIndex(a=>a.id===r);return t!==-1&&(this.schedules[t]={...this.schedules[t],...e}),e}catch(e){throw console.error("Failed to resume schedule:",e),e}},async fetchUpcomingMaintenance(r=null,e=30){try{const t=await c.getUpcomingMaintenance(r,e);return this.upcomingMaintenance=t.data||[],this.upcomingMaintenance}catch(t){throw console.error("Failed to fetch upcoming maintenance:",t),t}},async fetchOverdueSchedules(r=null){try{const e=await c.getOverdue(r);return this.overdueSchedules=e.data||[],this.overdueSchedules}catch(e){throw console.error("Failed to fetch overdue schedules:",e),e}},async fetchCalendarEvents(r,e,t=[]){try{const a=await c.getCalendarEvents(r,e,t);return this.calendarEvents=a.data||[],this.calendarEvents}catch(a){throw console.error("Failed to fetch calendar events:",a),a}},async rescheduleMaintenacne(r,e,t=""){try{const a=await c.reschedule(r,e,t),n=this.schedules.findIndex(i=>i.id===r);return n!==-1&&(this.schedules[n]={...this.schedules[n],...a}),a}catch(a){throw console.error("Failed to reschedule maintenance:",a),a}},async duplicateSchedule(r,e={}){try{const t=await c.duplicate(r,e);return this.schedules.unshift(t),this.totalElements+=1,t}catch(t){throw console.error("Failed to duplicate schedule:",t),t}},async exportSchedules(r={}){try{return await c.exportSchedules(r)}catch(e){throw console.error("Failed to export schedules:",e),e}},async createTemplate(r){try{return await c.createTemplate(r)}catch(e){throw console.error("Failed to create template:",e),e}},async fetchStatistics(r={}){try{const e=await c.getStatistics(r);return this.statistics={...this.statistics,...e.data},this.statistics}catch(e){throw console.error("Failed to fetch statistics:",e),e}},clearSchedules(){this.schedules=[],this.totalElements=0,this.totalPages=0,this.currentSchedule=null},setSearchCriteria(r){this.searchCriteria={...this.searchCriteria,...r}},clearError(){this.error=null},setCurrentSchedule(r){this.currentSchedule=r}}});function k(){return{formatFrequency:(s,o=1)=>({DAILY:o===1?"Daily":`Every ${o} days`,WEEKLY:o===1?"Weekly":`Every ${o} weeks`,MONTHLY:o===1?"Monthly":`Every ${o} months`,QUARTERLY:o===1?"Quarterly":`Every ${o} quarters`,YEARLY:o===1?"Yearly":`Every ${o} years`})[s==null?void 0:s.toUpperCase()]||"Unknown frequency",getStatusVariant:s=>({ACTIVE:"success",PAUSED:"warning",INACTIVE:"secondary",OVERDUE:"error",DUE_TODAY:"error",DUE_SOON:"warning",SCHEDULED:"info",COMPLETED:"success"})[s]||"secondary",getPriorityVariant:s=>({LOW:"success",MEDIUM:"info",HIGH:"warning",CRITICAL:"error"})[s]||"secondary",formatStatus:s=>({ACTIVE:"Active",PAUSED:"Paused",INACTIVE:"Inactive",OVERDUE:"Overdue",DUE_TODAY:"Due Today",DUE_SOON:"Due Soon",SCHEDULED:"Scheduled",COMPLETED:"Completed"})[s]||s,formatPriority:s=>({LOW:"Low",MEDIUM:"Medium",HIGH:"High",CRITICAL:"Critical"})[s]||s,formatDuration:s=>{if(!s)return"0 min";if(s<60)return`${s} min`;if(s<1440){const o=Math.floor(s/60),l=s%60;return l>0?`${o}h ${l}m`:`${o}h`}else{const o=Math.floor(s/1440),l=Math.floor(s%1440/60);return l>0?`${o}d ${l}h`:`${o}d`}},formatDate:s=>{if(!s)return"Not scheduled";const o=new Date(s);return isNaN(o.getTime())?"Invalid date":o.toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"})},formatDateTime:s=>{if(!s)return"Not scheduled";const o=new Date(s);return isNaN(o.getTime())?"Invalid date":o.toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"2-digit",hour12:!0})},formatRelativeTime:s=>{if(!s)return"Unknown";const o=new Date(s);if(isNaN(o.getTime()))return"Invalid date";const l=new Date,g=Math.floor((o.getTime()-l.getTime())/1e3),f=Math.abs(g);if(f<60)return"Just now";if(f<3600){const u=Math.floor(f/60);return g<0?`${u} min ago`:`in ${u} min`}else if(f<86400){const u=Math.floor(f/3600);return g<0?`${u} hour${u>1?"s":""} ago`:`in ${u} hour${u>1?"s":""}`}else{const u=Math.floor(f/86400);return g<0?`${u} day${u>1?"s":""} ago`:`in ${u} day${u>1?"s":""}`}},getOverdueIndicator:s=>{if(s<=0)return{text:"",variant:"success",show:!1};let o="warning";return(s>7||s>3)&&(o="error"),{text:`${s} day${s>1?"s":""} overdue`,variant:o,show:!0}},formatMaintenanceStats:s=>s?[{name:"Total Schedules",value:s.totalSchedules||0,subtitle:"Active schedules",icon:{template:''},iconBg:"bg-blue-100",iconColor:"text-blue-600",change:0},{name:"Overdue",value:s.overdueSchedules||0,subtitle:"Require attention",icon:{template:''},iconBg:"bg-red-100",iconColor:"text-red-600",change:0},{name:"Due This Week",value:s.dueThisWeek||0,subtitle:"Upcoming tasks",icon:{template:''},iconBg:"bg-yellow-100",iconColor:"text-yellow-600",change:0},{name:"Completion Rate",value:`${s.completionRate||0}%`,subtitle:"This month",icon:{template:''},iconBg:"bg-green-100",iconColor:"text-green-600",change:0}]:[],getScheduleTableColumns:(s=!1)=>{const o=[{key:"name",label:"Schedule Name",sortable:!0},{key:"asset",label:"Asset",sortable:!0},{key:"frequency",label:"Frequency",sortable:!0},{key:"priority",label:"Priority",sortable:!0},{key:"nextDue",label:"Next Due",sortable:!0},{key:"status",label:"Status",sortable:!0},{key:"actions",label:"Actions",sortable:!1}];return s?o.filter(l=>["name","nextDue","status","actions"].includes(l.key)):o},getScheduleTabs:s=>s?[{key:"all",label:"All Schedules",badge:s.totalSchedules||0},{key:"active",label:"Active",badge:s.activeSchedules||0},{key:"overdue",label:"Overdue",badge:s.overdueSchedules||0},{key:"due-soon",label:"Due Soon",badge:s.dueSoon||0},{key:"paused",label:"Paused",badge:s.pausedSchedules||0}]:[{key:"all",label:"All Schedules",badge:0}],formatAssetDisplay:s=>s?typeof s=="string"?s:s.name||s.assetNumber||`Asset ${s.id}`:"Unknown Asset",getCalendarEventStyling:s=>{const o={borderRadius:"4px",padding:"2px 8px",fontSize:"12px",fontWeight:"500"},l={LOW:{backgroundColor:"#10B981",borderColor:"#059669",color:"#FFFFFF"},MEDIUM:{backgroundColor:"#3B82F6",borderColor:"#2563EB",color:"#FFFFFF"},HIGH:{backgroundColor:"#F59E0B",borderColor:"#D97706",color:"#FFFFFF"},CRITICAL:{backgroundColor:"#EF4444",borderColor:"#DC2626",color:"#FFFFFF"}};return{...o,...l[s.priority]||l.MEDIUM}}}}export{k as a,I as u}; +import{bc as y,aP as m}from"./index-QAlcqU00.js";class S extends y{constructor(){super("/preventive-maintenance")}async search(e={}){return await this.request("/search","POST",{criteria:{page:0,size:10,sortBy:"nextDue",direction:"ASC",...e}})}async getUpcomingMaintenance(e,t=30){return await this.request("/upcoming","GET",null,{params:{assetId:e,days:t}})}async generateWorkOrders(e,t={}){return await this.request(`/${e}/work-orders`,"POST",t)}async getHistory(e){return await this.request(`/${e}/history`,"GET")}async pauseSchedule(e,t=""){return await this.request(`/${e}/status`,"PATCH",{status:"PAUSED",reason:t})}async resumeSchedule(e){return await this.request(`/${e}/status`,"PATCH",{status:"ACTIVE"})}async getByAsset(e){return await this.request(`/asset/${e}`,"GET")}async getOverdue(e){const t=e?{days:e}:{};return await this.request("/overdue","GET",null,{params:t})}async getByPriority(e){return await this.request(`/priority/${e}`,"GET")}async getByFrequency(e){return await this.request(`/frequency/${e}`,"GET")}async bulkUpdateStatus(e,t,a=""){return await this.request("/bulk/status","PATCH",{scheduleIds:e,status:t,reason:a})}async getCalendarEvents(e,t,a=[]){return await this.request("/calendar","GET",null,{params:{startDate:e.toISOString(),endDate:t.toISOString(),assetIds:a.join(",")}})}async reschedule(e,t,a=""){return await this.request(`/${e}/reschedule`,"PATCH",{newDate:t.toISOString(),reason:a})}async getStatistics(e={}){const t={};return e.assetId&&(t.assetId=e.assetId),e.startDate&&(t.startDate=e.startDate.toISOString()),e.endDate&&(t.endDate=e.endDate.toISOString()),await this.request("/statistics","GET",null,{params:t})}async duplicate(e,t={}){return await this.request(`/${e}/duplicate`,"POST",t)}async getTemplates(){return await this.request("/templates","GET")}async createFromTemplate(e,t){return await this.request("/templates/create","POST",{templateId:e,...t})}}let c=new S;const I=m("preventive-maintenance",{state:()=>({schedules:[],currentSchedule:null,loading:!1,error:null,initialized:!1,totalElements:0,totalPages:0,searchCriteria:{page:0,size:10,sortBy:"nextDue",direction:"ASC",search:"",filters:{}},upcomingMaintenance:[],overdueSchedules:[],calendarEvents:[],statistics:{totalSchedules:0,activeSchedules:0,pausedSchedules:0,overdueSchedules:0,dueSoon:0,dueThisWeek:0,completionRate:0,totalValue:0,avgDuration:0}}),getters:{getScheduleById:r=>e=>r.schedules.find(t=>t.id===e),filteredSchedules:r=>{let e=[...r.schedules];if(r.searchCriteria.search){const a=r.searchCriteria.search.toLowerCase();e=e.filter(n=>{var i,d,h;return((i=n.name)==null?void 0:i.toLowerCase().includes(a))||((d=n.assetName)==null?void 0:d.toLowerCase().includes(a))||((h=n.description)==null?void 0:h.toLowerCase().includes(a))})}const t=r.searchCriteria.filters||{};return t.status&&(e=e.filter(a=>a.status===t.status)),t.priority&&(e=e.filter(a=>a.priority===t.priority)),t.assetId&&(e=e.filter(a=>a.assetId===t.assetId)),t.frequency&&(e=e.filter(a=>a.frequency===t.frequency)),e},getSchedulesByStatus:r=>e=>r.schedules.filter(t=>t.status===e),getSchedulesByPriority:r=>e=>r.schedules.filter(t=>t.priority===e),getSchedulesForAsset:r=>e=>r.schedules.filter(t=>t.assetId===e),overdueSchedulesList:r=>{const e=new Date;return r.schedules.filter(t=>t.nextDue?new Date(t.nextDue){const e=new Date;e.setHours(0,0,0,0);const t=new Date(e);return t.setDate(t.getDate()+1),r.schedules.filter(a=>{if(!a.nextDue)return!1;const n=new Date(a.nextDue);return n>=e&&n{const e=new Date,t=new Date(e.getTime()+3*24*60*60*1e3);return r.schedules.filter(a=>{if(!a.nextDue)return!1;const n=new Date(a.nextDue);return n>e&&n<=t&&a.status==="ACTIVE"})},inventoryStats:r=>{const e=r.schedules.filter(n=>n.status==="ACTIVE"),t=r.schedules.filter(n=>n.nextDue?new Date(n.nextDue){if(!n.nextDue)return!1;const i=new Date(n.nextDue),d=new Date,h=new Date(d.getTime()+3*24*60*60*1e3);return i>d&&i<=h&&n.status==="ACTIVE"});return{totalSchedules:r.schedules.length,activeSchedules:e.length,pausedSchedules:r.schedules.filter(n=>n.status==="PAUSED").length,overdueSchedules:t.length,dueSoon:a.length,dueThisWeek:r.schedules.filter(n=>{if(!n.nextDue)return!1;const i=new Date(n.nextDue),d=new Date,h=new Date(d.getTime()+7*24*60*60*1e3);return i>d&&i<=h&&n.status==="ACTIVE"}).length,completionRate:r.statistics.completionRate||0,totalValue:r.schedules.reduce((n,i)=>n+(i.estimatedCost||0)*(i.completedCount||0),0),avgDuration:r.schedules.length>0?Math.round(r.schedules.reduce((n,i)=>n+(i.estimatedDuration||0),0)/r.schedules.length):0}}},actions:{async initializeSchedules(){if(!this.initialized)try{await this.fetchSchedules(),this.initialized=!0}catch(r){console.error("Failed to initialize schedules:",r),this.error=r.message}},async fetchSchedules(r={}){this.loading=!0,this.error=null;try{const e={...this.searchCriteria,...r},t=await c.search(e);return this.schedules=t.data||[],this.totalElements=t.totalElements||0,this.totalPages=t.totalPages||0,this.searchCriteria={...this.searchCriteria,...r},t}catch(e){throw console.error("Failed to fetch schedules:",e),this.error=e.message,e}finally{this.loading=!1}},async fetchScheduleById(r){try{const e=await c.getById(r),t=this.schedules.findIndex(a=>a.id===r);return t!==-1&&(this.schedules[t]=e),e}catch(e){throw console.error("Failed to fetch schedule:",e),e}},async createSchedule(r){this.loading=!0,this.error=null;try{const e=await c.create(r);return this.schedules.unshift(e),this.totalElements+=1,e}catch(e){throw console.error("Failed to create schedule:",e),this.error=e.message,e}finally{this.loading=!1}},async updateSchedule(r,e){this.loading=!0,this.error=null;try{const t=await c.update(r,e),a=this.schedules.findIndex(n=>n.id===r);return a!==-1&&(this.schedules[a]=t),t}catch(t){throw console.error("Failed to update schedule:",t),this.error=t.message,t}finally{this.loading=!1}},async deleteSchedule(r){this.loading=!0,this.error=null;try{await c.delete(r);const e=this.schedules.findIndex(t=>t.id===r);e!==-1&&(this.schedules.splice(e,1),this.totalElements-=1)}catch(e){throw console.error("Failed to delete schedule:",e),this.error=e.message,e}finally{this.loading=!1}},async generateWorkOrders(r,e={}){try{const t=await c.generateWorkOrders(r,e);return t&&t.length>0&&this.getScheduleById(r)&&await this.fetchScheduleById(r),t}catch(t){throw console.error("Failed to generate work orders:",t),t}},async pauseSchedule(r,e=""){try{const t=await c.pauseSchedule(r,e),a=this.schedules.findIndex(n=>n.id===r);return a!==-1&&(this.schedules[a]={...this.schedules[a],...t}),t}catch(t){throw console.error("Failed to pause schedule:",t),t}},async resumeSchedule(r){try{const e=await c.resumeSchedule(r),t=this.schedules.findIndex(a=>a.id===r);return t!==-1&&(this.schedules[t]={...this.schedules[t],...e}),e}catch(e){throw console.error("Failed to resume schedule:",e),e}},async fetchUpcomingMaintenance(r=null,e=30){try{const t=await c.getUpcomingMaintenance(r,e);return this.upcomingMaintenance=t.data||[],this.upcomingMaintenance}catch(t){throw console.error("Failed to fetch upcoming maintenance:",t),t}},async fetchOverdueSchedules(r=null){try{const e=await c.getOverdue(r);return this.overdueSchedules=e.data||[],this.overdueSchedules}catch(e){throw console.error("Failed to fetch overdue schedules:",e),e}},async fetchCalendarEvents(r,e,t=[]){try{const a=await c.getCalendarEvents(r,e,t);return this.calendarEvents=a.data||[],this.calendarEvents}catch(a){throw console.error("Failed to fetch calendar events:",a),a}},async rescheduleMaintenacne(r,e,t=""){try{const a=await c.reschedule(r,e,t),n=this.schedules.findIndex(i=>i.id===r);return n!==-1&&(this.schedules[n]={...this.schedules[n],...a}),a}catch(a){throw console.error("Failed to reschedule maintenance:",a),a}},async duplicateSchedule(r,e={}){try{const t=await c.duplicate(r,e);return this.schedules.unshift(t),this.totalElements+=1,t}catch(t){throw console.error("Failed to duplicate schedule:",t),t}},async exportSchedules(r={}){try{return await c.exportSchedules(r)}catch(e){throw console.error("Failed to export schedules:",e),e}},async createTemplate(r){try{return await c.createTemplate(r)}catch(e){throw console.error("Failed to create template:",e),e}},async fetchStatistics(r={}){try{const e=await c.getStatistics(r);return this.statistics={...this.statistics,...e.data},this.statistics}catch(e){throw console.error("Failed to fetch statistics:",e),e}},clearSchedules(){this.schedules=[],this.totalElements=0,this.totalPages=0,this.currentSchedule=null},setSearchCriteria(r){this.searchCriteria={...this.searchCriteria,...r}},clearError(){this.error=null},setCurrentSchedule(r){this.currentSchedule=r}}});function k(){return{formatFrequency:(s,o=1)=>({DAILY:o===1?"Daily":`Every ${o} days`,WEEKLY:o===1?"Weekly":`Every ${o} weeks`,MONTHLY:o===1?"Monthly":`Every ${o} months`,QUARTERLY:o===1?"Quarterly":`Every ${o} quarters`,YEARLY:o===1?"Yearly":`Every ${o} years`})[s==null?void 0:s.toUpperCase()]||"Unknown frequency",getStatusVariant:s=>({ACTIVE:"success",PAUSED:"warning",INACTIVE:"secondary",OVERDUE:"error",DUE_TODAY:"error",DUE_SOON:"warning",SCHEDULED:"info",COMPLETED:"success"})[s]||"secondary",getPriorityVariant:s=>({LOW:"success",MEDIUM:"info",HIGH:"warning",CRITICAL:"error"})[s]||"secondary",formatStatus:s=>({ACTIVE:"Active",PAUSED:"Paused",INACTIVE:"Inactive",OVERDUE:"Overdue",DUE_TODAY:"Due Today",DUE_SOON:"Due Soon",SCHEDULED:"Scheduled",COMPLETED:"Completed"})[s]||s,formatPriority:s=>({LOW:"Low",MEDIUM:"Medium",HIGH:"High",CRITICAL:"Critical"})[s]||s,formatDuration:s=>{if(!s)return"0 min";if(s<60)return`${s} min`;if(s<1440){const o=Math.floor(s/60),l=s%60;return l>0?`${o}h ${l}m`:`${o}h`}else{const o=Math.floor(s/1440),l=Math.floor(s%1440/60);return l>0?`${o}d ${l}h`:`${o}d`}},formatDate:s=>{if(!s)return"Not scheduled";const o=new Date(s);return isNaN(o.getTime())?"Invalid date":o.toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"})},formatDateTime:s=>{if(!s)return"Not scheduled";const o=new Date(s);return isNaN(o.getTime())?"Invalid date":o.toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"2-digit",hour12:!0})},formatRelativeTime:s=>{if(!s)return"Unknown";const o=new Date(s);if(isNaN(o.getTime()))return"Invalid date";const l=new Date,g=Math.floor((o.getTime()-l.getTime())/1e3),f=Math.abs(g);if(f<60)return"Just now";if(f<3600){const u=Math.floor(f/60);return g<0?`${u} min ago`:`in ${u} min`}else if(f<86400){const u=Math.floor(f/3600);return g<0?`${u} hour${u>1?"s":""} ago`:`in ${u} hour${u>1?"s":""}`}else{const u=Math.floor(f/86400);return g<0?`${u} day${u>1?"s":""} ago`:`in ${u} day${u>1?"s":""}`}},getOverdueIndicator:s=>{if(s<=0)return{text:"",variant:"success",show:!1};let o="warning";return(s>7||s>3)&&(o="error"),{text:`${s} day${s>1?"s":""} overdue`,variant:o,show:!0}},formatMaintenanceStats:s=>s?[{name:"Total Schedules",value:s.totalSchedules||0,subtitle:"Active schedules",icon:{template:''},iconBg:"bg-blue-100",iconColor:"text-blue-600",change:0},{name:"Overdue",value:s.overdueSchedules||0,subtitle:"Require attention",icon:{template:''},iconBg:"bg-red-100",iconColor:"text-red-600",change:0},{name:"Due This Week",value:s.dueThisWeek||0,subtitle:"Upcoming tasks",icon:{template:''},iconBg:"bg-yellow-100",iconColor:"text-yellow-600",change:0},{name:"Completion Rate",value:`${s.completionRate||0}%`,subtitle:"This month",icon:{template:''},iconBg:"bg-green-100",iconColor:"text-green-600",change:0}]:[],getScheduleTableColumns:(s=!1)=>{const o=[{key:"name",label:"Schedule Name",sortable:!0},{key:"asset",label:"Asset",sortable:!0},{key:"frequency",label:"Frequency",sortable:!0},{key:"priority",label:"Priority",sortable:!0},{key:"nextDue",label:"Next Due",sortable:!0},{key:"status",label:"Status",sortable:!0},{key:"actions",label:"Actions",sortable:!1}];return s?o.filter(l=>["name","nextDue","status","actions"].includes(l.key)):o},getScheduleTabs:s=>s?[{key:"all",label:"All Schedules",badge:s.totalSchedules||0},{key:"active",label:"Active",badge:s.activeSchedules||0},{key:"overdue",label:"Overdue",badge:s.overdueSchedules||0},{key:"due-soon",label:"Due Soon",badge:s.dueSoon||0},{key:"paused",label:"Paused",badge:s.pausedSchedules||0}]:[{key:"all",label:"All Schedules",badge:0}],formatAssetDisplay:s=>s?typeof s=="string"?s:s.name||s.assetNumber||`Asset ${s.id}`:"Unknown Asset",getCalendarEventStyling:s=>{const o={borderRadius:"4px",padding:"2px 8px",fontSize:"12px",fontWeight:"500"},l={LOW:{backgroundColor:"#10B981",borderColor:"#059669",color:"#FFFFFF"},MEDIUM:{backgroundColor:"#3B82F6",borderColor:"#2563EB",color:"#FFFFFF"},HIGH:{backgroundColor:"#F59E0B",borderColor:"#D97706",color:"#FFFFFF"},CRITICAL:{backgroundColor:"#EF4444",borderColor:"#DC2626",color:"#FFFFFF"}};return{...o,...l[s.priority]||l.MEDIUM}}}}export{k as a,I as u}; diff --git a/frontend/dist/assets/usePreventiveMaintenanceOperations-LTA5pnar.js b/frontend/dist/assets/usePreventiveMaintenanceOperations-Dd7Aro2G.js similarity index 99% rename from frontend/dist/assets/usePreventiveMaintenanceOperations-LTA5pnar.js rename to frontend/dist/assets/usePreventiveMaintenanceOperations-Dd7Aro2G.js index 0f5da570..5eb3c311 100644 --- a/frontend/dist/assets/usePreventiveMaintenanceOperations-LTA5pnar.js +++ b/frontend/dist/assets/usePreventiveMaintenanceOperations-Dd7Aro2G.js @@ -1 +1 @@ -import{r as F,c as L,l as U}from"./index-BUdRbiwj.js";function O(){const m=F(null),l=e=>{if(m.value=null,!e.name||e.name.trim().length===0)return m.value="Schedule name is required",!1;if(!e.assetId)return m.value="Asset selection is required",!1;if(!e.frequency)return m.value="Frequency is required",!1;if(e.frequencyValue!==void 0){if(e.frequencyValue<=0)return m.value="Frequency value must be greater than 0",!1;if(!E(e.frequency,e.frequencyValue))return m.value="Frequency value exceeds maximum allowed for this frequency type",!1}return e.priority&&!["LOW","MEDIUM","HIGH","CRITICAL"].includes(e.priority)?(m.value="Priority must be LOW, MEDIUM, HIGH, or CRITICAL",!1):e.estimatedDuration!==void 0&&e.estimatedDuration<0?(m.value="Estimated duration must be a positive number",!1):!0},d=(e,n,c=1)=>{if(!e||!n)return null;const t=new Date(e);switch(n.toUpperCase()){case"DAILY":t.setDate(t.getDate()+c);break;case"WEEKLY":t.setDate(t.getDate()+c*7);break;case"MONTHLY":t.setMonth(t.getMonth()+c);break;case"QUARTERLY":t.setMonth(t.getMonth()+c*3);break;case"YEARLY":t.setFullYear(t.getFullYear()+c);break;default:return null}return t},o=e=>{if(e.status==="PAUSED")return"PAUSED";if(e.status==="INACTIVE")return"INACTIVE";if(!e.nextDue)return"SCHEDULED";const n=new Date,t=new Date(e.nextDue).getTime()-n.getTime(),i=Math.ceil(t/(1e3*60*60*24));return i<0?"OVERDUE":i===0?"DUE_TODAY":i<=3?"DUE_SOON":"SCHEDULED"},w=e=>{var c,t,i;const n=new Date().toISOString();return{...e,name:(c=e.name)==null?void 0:c.trim(),instructions:(t=e.instructions)==null?void 0:t.trim(),notes:(i=e.notes)==null?void 0:i.trim(),frequencyValue:e.frequencyValue||1,priority:e.priority||"MEDIUM",estimatedDuration:e.estimatedDuration||30,status:e.status||"ACTIVE",createdAt:e.createdAt||n,updatedAt:n}},u=e=>{const n=e.estimatedDuration||30,c=e.priority||"MEDIUM",i={LOW:15,MEDIUM:20,HIGH:30,CRITICAL:45}[c]||20;return{minDuration:Math.floor(n*.75),maxDuration:Math.ceil(n*1.5),bufferTime:i,recommendedStartTime:8*60}},I=(e,n)=>{if(e.assetId!==n.assetId)return!1;const c=new Date(e.scheduledDate),t=new Date(c.getTime()+e.estimatedDuration*6e4),i=new Date(n.scheduledDate),p=new Date(i.getTime()+n.estimatedDuration*6e4);return c{if(n<=0)return!1;const t={DAILY:365,WEEKLY:52,MONTHLY:60,QUARTERLY:20,YEARLY:10}[e.toUpperCase()];return t?n<=t:!1},C=e=>{if(!e.nextDue)return 0;const n=new Date,c=new Date(e.nextDue),t=n.getTime()-c.getTime(),i=Math.floor(t/(1e3*60*60*24));return Math.max(0,i)},A=(e,n,c)=>{if(!e||e.length===0)return 0;const t=e.filter(y=>{const v=new Date(y.completedDate);return v>=n&&v<=c}),i=t.filter(y=>y.status==="COMPLETED").length,p=t.length;return p>0?Math.round(i/p*100):0},x=(e,n,c,t=12)=>{const i=[];let p=new Date(e);for(let y=0;ym.value),validateSchedule:l,calculateNextDueDate:d,calculateScheduleStatus:o,processScheduleData:w,calculateMaintenanceWindow:u,isScheduleConflict:I,validateFrequencySettings:E,calculateOverdueDays:C,calculateCompletionRate:A,generateRecurringDates:x}}function R(m=null){const l=m,{showSuccess:d,showError:o,showWarning:w}=U(),u=F(!1);return{isProcessing:u,submitSchedule:async s=>{const{validateForm:r,validateBusinessRules:a,getFormData:h,processScheduleData:D,isEditMode:g,scheduleId:S}=s;try{if(u.value=!0,!r())return o("Please fix validation errors"),{success:!1,error:"Form validation failed"};const f=h();if(!a(f))return o("Business rule validation failed"),{success:!1,error:"Business validation failed"};const M=D(f);let T;return g?(T=await l.updateSchedule(S,M),d("Schedule updated successfully")):(T=await l.createSchedule(M),d("Schedule created successfully")),{success:!0,data:T}}catch(f){return console.error("Schedule submission error:",f),o(`Failed to ${g?"update":"create"} schedule`),{success:!1,error:f.message}}finally{u.value=!1}},handleScheduleDeletion:async s=>{try{return u.value=!0,await l.deleteSchedule(s),d("Schedule deleted successfully"),{success:!0}}catch(r){return console.error("Schedule deletion error:",r),o("Failed to delete schedule"),{success:!1,error:r.message}}finally{u.value=!1}},handleScheduleRefresh:async(s={})=>{try{await l.fetchSchedules(s)}catch(r){console.error("Schedule refresh error:",r),o("Failed to refresh schedules")}},handleWorkOrderGeneration:async(s,r={})=>{try{u.value=!0;const a=await l.generateWorkOrders(s,r);return d(`Generated ${a.length} work order(s)`),{success:!0,workOrders:a}}catch(a){return console.error("Work order generation error:",a),o("Failed to generate work orders"),{success:!1,error:a.message}}finally{u.value=!1}},handleSchedulePause:async(s,r="")=>{try{u.value=!0;const a=await l.pauseSchedule(s,r);return d("Schedule paused successfully"),{success:!0,data:a}}catch(a){return console.error("Schedule pause error:",a),o("Failed to pause schedule"),{success:!1,error:a.message}}finally{u.value=!1}},handleScheduleResume:async s=>{try{u.value=!0;const r=await l.resumeSchedule(s);return d("Schedule resumed successfully"),{success:!0,data:r}}catch(r){return console.error("Schedule resume error:",r),o("Failed to resume schedule"),{success:!1,error:r.message}}finally{u.value=!1}},handleScheduleSearch:async(s,r={})=>{try{const a={search:s,...r};await l.fetchSchedules(a)}catch(a){console.error("Schedule search error:",a),o("Search failed")}},handleSchedulePagination:async s=>{try{await l.fetchSchedules({page:s-1})}catch(r){console.error("Schedule pagination error:",r),o("Failed to load page")}},handleScheduleSorting:async s=>{try{const{column:r,direction:a}=s;await l.fetchSchedules({sortBy:r,direction:a})}catch(r){console.error("Schedule sorting error:",r),o("Failed to apply sorting")}},handleScheduleExport:async(s={})=>{try{u.value=!0;const r=await l.exportSchedules(s);return d("Schedules exported successfully"),{success:!0,data:r}}catch(r){return console.error("Schedule export error:",r),o("Failed to export schedules"),{success:!1,error:r.message}}finally{u.value=!1}},handleBulkStatusUpdate:async(s,r,a="")=>{try{u.value=!0;const h=[];for(const S of s)try{let f;r==="PAUSED"?f=await l.pauseSchedule(S,a):r==="ACTIVE"?f=await l.resumeSchedule(S):f=await l.updateSchedule(S,{status:r,reason:a}),h.push({scheduleId:S,success:!0,result:f})}catch(f){h.push({scheduleId:S,success:!1,error:f.message})}const D=h.filter(S=>S.success).length,g=h.filter(S=>!S.success).length;return g===0?(d(`Successfully updated ${s.length} schedules`),{success:!0,results:h,successCount:D,failureCount:g}):D>0?(w(`Some operations failed. ${D} of ${s.length} schedules updated successfully`),{success:!0,results:h,successCount:D,failureCount:g}):(o("All bulk operations failed"),{success:!1,results:h,successCount:D,failureCount:g})}catch(h){return console.error("Bulk update error:",h),o("Bulk update failed"),{success:!1,error:h.message}}finally{u.value=!1}},handleScheduleLoad:async s=>{try{const r=await l.fetchScheduleById(s);if(!r)throw new Error("Schedule not found");return r}catch(r){throw console.error("Schedule load error:",r),o("Failed to load schedule"),r}},handleScheduleDuplication:async(s,r={})=>{try{u.value=!0;const a=await l.duplicateSchedule(s,r);return d("Schedule duplicated successfully"),{success:!0,data:a}}catch(a){return console.error("Schedule duplication error:",a),o("Failed to duplicate schedule"),{success:!1,error:a.message}}finally{u.value=!1}},handleTemplateCreation:async s=>{try{u.value=!0;const r=await l.createTemplate(s);return d("Template created successfully"),{success:!0,data:r}}catch(r){return console.error("Template creation error:",r),o("Failed to create template"),{success:!1,error:r.message}}finally{u.value=!1}}}}export{R as a,O as u}; +import{r as F,c as L,l as U}from"./index-QAlcqU00.js";function O(){const m=F(null),l=e=>{if(m.value=null,!e.name||e.name.trim().length===0)return m.value="Schedule name is required",!1;if(!e.assetId)return m.value="Asset selection is required",!1;if(!e.frequency)return m.value="Frequency is required",!1;if(e.frequencyValue!==void 0){if(e.frequencyValue<=0)return m.value="Frequency value must be greater than 0",!1;if(!E(e.frequency,e.frequencyValue))return m.value="Frequency value exceeds maximum allowed for this frequency type",!1}return e.priority&&!["LOW","MEDIUM","HIGH","CRITICAL"].includes(e.priority)?(m.value="Priority must be LOW, MEDIUM, HIGH, or CRITICAL",!1):e.estimatedDuration!==void 0&&e.estimatedDuration<0?(m.value="Estimated duration must be a positive number",!1):!0},d=(e,n,c=1)=>{if(!e||!n)return null;const t=new Date(e);switch(n.toUpperCase()){case"DAILY":t.setDate(t.getDate()+c);break;case"WEEKLY":t.setDate(t.getDate()+c*7);break;case"MONTHLY":t.setMonth(t.getMonth()+c);break;case"QUARTERLY":t.setMonth(t.getMonth()+c*3);break;case"YEARLY":t.setFullYear(t.getFullYear()+c);break;default:return null}return t},o=e=>{if(e.status==="PAUSED")return"PAUSED";if(e.status==="INACTIVE")return"INACTIVE";if(!e.nextDue)return"SCHEDULED";const n=new Date,t=new Date(e.nextDue).getTime()-n.getTime(),i=Math.ceil(t/(1e3*60*60*24));return i<0?"OVERDUE":i===0?"DUE_TODAY":i<=3?"DUE_SOON":"SCHEDULED"},w=e=>{var c,t,i;const n=new Date().toISOString();return{...e,name:(c=e.name)==null?void 0:c.trim(),instructions:(t=e.instructions)==null?void 0:t.trim(),notes:(i=e.notes)==null?void 0:i.trim(),frequencyValue:e.frequencyValue||1,priority:e.priority||"MEDIUM",estimatedDuration:e.estimatedDuration||30,status:e.status||"ACTIVE",createdAt:e.createdAt||n,updatedAt:n}},u=e=>{const n=e.estimatedDuration||30,c=e.priority||"MEDIUM",i={LOW:15,MEDIUM:20,HIGH:30,CRITICAL:45}[c]||20;return{minDuration:Math.floor(n*.75),maxDuration:Math.ceil(n*1.5),bufferTime:i,recommendedStartTime:8*60}},I=(e,n)=>{if(e.assetId!==n.assetId)return!1;const c=new Date(e.scheduledDate),t=new Date(c.getTime()+e.estimatedDuration*6e4),i=new Date(n.scheduledDate),p=new Date(i.getTime()+n.estimatedDuration*6e4);return c{if(n<=0)return!1;const t={DAILY:365,WEEKLY:52,MONTHLY:60,QUARTERLY:20,YEARLY:10}[e.toUpperCase()];return t?n<=t:!1},C=e=>{if(!e.nextDue)return 0;const n=new Date,c=new Date(e.nextDue),t=n.getTime()-c.getTime(),i=Math.floor(t/(1e3*60*60*24));return Math.max(0,i)},A=(e,n,c)=>{if(!e||e.length===0)return 0;const t=e.filter(y=>{const v=new Date(y.completedDate);return v>=n&&v<=c}),i=t.filter(y=>y.status==="COMPLETED").length,p=t.length;return p>0?Math.round(i/p*100):0},x=(e,n,c,t=12)=>{const i=[];let p=new Date(e);for(let y=0;ym.value),validateSchedule:l,calculateNextDueDate:d,calculateScheduleStatus:o,processScheduleData:w,calculateMaintenanceWindow:u,isScheduleConflict:I,validateFrequencySettings:E,calculateOverdueDays:C,calculateCompletionRate:A,generateRecurringDates:x}}function R(m=null){const l=m,{showSuccess:d,showError:o,showWarning:w}=U(),u=F(!1);return{isProcessing:u,submitSchedule:async s=>{const{validateForm:r,validateBusinessRules:a,getFormData:h,processScheduleData:D,isEditMode:g,scheduleId:S}=s;try{if(u.value=!0,!r())return o("Please fix validation errors"),{success:!1,error:"Form validation failed"};const f=h();if(!a(f))return o("Business rule validation failed"),{success:!1,error:"Business validation failed"};const M=D(f);let T;return g?(T=await l.updateSchedule(S,M),d("Schedule updated successfully")):(T=await l.createSchedule(M),d("Schedule created successfully")),{success:!0,data:T}}catch(f){return console.error("Schedule submission error:",f),o(`Failed to ${g?"update":"create"} schedule`),{success:!1,error:f.message}}finally{u.value=!1}},handleScheduleDeletion:async s=>{try{return u.value=!0,await l.deleteSchedule(s),d("Schedule deleted successfully"),{success:!0}}catch(r){return console.error("Schedule deletion error:",r),o("Failed to delete schedule"),{success:!1,error:r.message}}finally{u.value=!1}},handleScheduleRefresh:async(s={})=>{try{await l.fetchSchedules(s)}catch(r){console.error("Schedule refresh error:",r),o("Failed to refresh schedules")}},handleWorkOrderGeneration:async(s,r={})=>{try{u.value=!0;const a=await l.generateWorkOrders(s,r);return d(`Generated ${a.length} work order(s)`),{success:!0,workOrders:a}}catch(a){return console.error("Work order generation error:",a),o("Failed to generate work orders"),{success:!1,error:a.message}}finally{u.value=!1}},handleSchedulePause:async(s,r="")=>{try{u.value=!0;const a=await l.pauseSchedule(s,r);return d("Schedule paused successfully"),{success:!0,data:a}}catch(a){return console.error("Schedule pause error:",a),o("Failed to pause schedule"),{success:!1,error:a.message}}finally{u.value=!1}},handleScheduleResume:async s=>{try{u.value=!0;const r=await l.resumeSchedule(s);return d("Schedule resumed successfully"),{success:!0,data:r}}catch(r){return console.error("Schedule resume error:",r),o("Failed to resume schedule"),{success:!1,error:r.message}}finally{u.value=!1}},handleScheduleSearch:async(s,r={})=>{try{const a={search:s,...r};await l.fetchSchedules(a)}catch(a){console.error("Schedule search error:",a),o("Search failed")}},handleSchedulePagination:async s=>{try{await l.fetchSchedules({page:s-1})}catch(r){console.error("Schedule pagination error:",r),o("Failed to load page")}},handleScheduleSorting:async s=>{try{const{column:r,direction:a}=s;await l.fetchSchedules({sortBy:r,direction:a})}catch(r){console.error("Schedule sorting error:",r),o("Failed to apply sorting")}},handleScheduleExport:async(s={})=>{try{u.value=!0;const r=await l.exportSchedules(s);return d("Schedules exported successfully"),{success:!0,data:r}}catch(r){return console.error("Schedule export error:",r),o("Failed to export schedules"),{success:!1,error:r.message}}finally{u.value=!1}},handleBulkStatusUpdate:async(s,r,a="")=>{try{u.value=!0;const h=[];for(const S of s)try{let f;r==="PAUSED"?f=await l.pauseSchedule(S,a):r==="ACTIVE"?f=await l.resumeSchedule(S):f=await l.updateSchedule(S,{status:r,reason:a}),h.push({scheduleId:S,success:!0,result:f})}catch(f){h.push({scheduleId:S,success:!1,error:f.message})}const D=h.filter(S=>S.success).length,g=h.filter(S=>!S.success).length;return g===0?(d(`Successfully updated ${s.length} schedules`),{success:!0,results:h,successCount:D,failureCount:g}):D>0?(w(`Some operations failed. ${D} of ${s.length} schedules updated successfully`),{success:!0,results:h,successCount:D,failureCount:g}):(o("All bulk operations failed"),{success:!1,results:h,successCount:D,failureCount:g})}catch(h){return console.error("Bulk update error:",h),o("Bulk update failed"),{success:!1,error:h.message}}finally{u.value=!1}},handleScheduleLoad:async s=>{try{const r=await l.fetchScheduleById(s);if(!r)throw new Error("Schedule not found");return r}catch(r){throw console.error("Schedule load error:",r),o("Failed to load schedule"),r}},handleScheduleDuplication:async(s,r={})=>{try{u.value=!0;const a=await l.duplicateSchedule(s,r);return d("Schedule duplicated successfully"),{success:!0,data:a}}catch(a){return console.error("Schedule duplication error:",a),o("Failed to duplicate schedule"),{success:!1,error:a.message}}finally{u.value=!1}},handleTemplateCreation:async s=>{try{u.value=!0;const r=await l.createTemplate(s);return d("Template created successfully"),{success:!0,data:r}}catch(r){return console.error("Template creation error:",r),o("Failed to create template"),{success:!1,error:r.message}}finally{u.value=!1}}}}export{R as a,O as u}; diff --git a/frontend/dist/assets/useRequestManagement-aHkLwKaS.js b/frontend/dist/assets/useRequestManagement-BaHfQU2h.js similarity index 97% rename from frontend/dist/assets/useRequestManagement-aHkLwKaS.js rename to frontend/dist/assets/useRequestManagement-BaHfQU2h.js index 609f340b..2727bb3d 100644 --- a/frontend/dist/assets/useRequestManagement-aHkLwKaS.js +++ b/frontend/dist/assets/useRequestManagement-BaHfQU2h.js @@ -1 +1 @@ -import{aO as F,r as E,c as q,br as g}from"./index-BUdRbiwj.js";const M=F("requests",()=>{const r=E([]),a=E(null),u=E(!1),I=E(!1),c=E(null),w=E(0),L=E(0),v=E({status:null,priority:null,type:null,assignedTo:null,asset:null,location:null,search:"",dateRange:null}),C=E({page:0,size:20,sort:"created_desc",sortDirection:"desc"}),A=q(()=>{let t=r.value;if(v.value.status&&(t=t.filter(e=>e.status===v.value.status)),v.value.priority&&(t=t.filter(e=>e.priority===v.value.priority)),v.value.type&&(t=t.filter(e=>e.type===v.value.type)),v.value.assignedTo&&(t=t.filter(e=>{var l;return((l=e.assignedTo)==null?void 0:l.id)===v.value.assignedTo})),v.value.asset&&(t=t.filter(e=>e.assetId===v.value.asset)),v.value.location&&(t=t.filter(e=>e.locationId===v.value.location)),v.value.search){const e=v.value.search.toLowerCase();t=t.filter(l=>{var n,y,h,P;return((n=l.title)==null?void 0:n.toLowerCase().includes(e))||((y=l.description)==null?void 0:y.toLowerCase().includes(e))||((h=l.customId)==null?void 0:h.toLowerCase().includes(e))||((P=l.id)==null?void 0:P.toString().includes(e))})}return t}),x=q(()=>r.value.reduce((t,e)=>(t[e.status]||(t[e.status]=[]),t[e.status].push(e),t),{})),S=q(()=>r.value.reduce((t,e)=>(t[e.priority]||(t[e.priority]=[]),t[e.priority].push(e),t),{})),O=q(()=>r.value.reduce((t,e)=>(t[e.type]||(t[e.type]=[]),t[e.type].push(e),t),{})),T=q(()=>r.value.filter(t=>t.status==="pending")),b=q(()=>r.value.filter(t=>t.status==="approved")),s=q(()=>{const t=new Date;return r.value.filter(e=>e.requiredDate&&new Date(e.requiredDate)r.value.filter(t=>["high","critical","emergency"].includes(t.priority))),o=async(t={})=>{try{I.value=!0,c.value=null;const e={...C.value,...t},l=await g.search(e);return r.value=l.content||l,w.value=l.totalElements||l.length,l}catch(e){throw c.value=e.message||"Failed to search requests",e}finally{I.value=!1}},f=async(t={})=>{try{u.value=!0,c.value=null;const e=await g.getAll(t);return r.value=e.content||e,w.value=e.totalElements||e.length,e}catch(e){throw c.value=e.message||"Failed to fetch requests",e}finally{u.value=!1}};return{requests:r,currentRequest:a,loading:u,loadingGet:I,error:c,totalCount:w,pendingCount:L,filters:v,pagination:C,filteredRequests:A,requestsByStatus:x,requestsByPriority:S,requestsByType:O,pendingRequests:T,approvedRequests:b,overdueRequests:s,highPriorityRequests:i,searchRequests:o,fetchRequests:f,fetchRequestById:async t=>{try{I.value=!0,c.value=null;const e=await g.getById(t);a.value=e;const l=r.value.findIndex(n=>n.id===t);return l!==-1&&(r.value[l]=e),e}catch(e){throw c.value=e.message||"Failed to fetch request",e}finally{I.value=!1}},createRequest:async t=>{try{u.value=!0,c.value=null;const e=await g.create(t);return r.value.unshift(e),w.value+=1,e}catch(e){throw c.value=e.message||"Failed to create request",e}finally{u.value=!1}},updateRequest:async(t,e)=>{var l;try{u.value=!0,c.value=null;const n=await g.update(t,e),y=r.value.findIndex(h=>h.id===t);return y!==-1&&(r.value[y]=n),((l=a.value)==null?void 0:l.id)===t&&(a.value=n),n}catch(n){throw c.value=n.message||"Failed to update request",n}finally{u.value=!1}},deleteRequest:async t=>{var e;try{u.value=!0,c.value=null,await g.delete(t);const l=r.value.findIndex(n=>n.id===t);return l!==-1&&(r.value.splice(l,1),w.value-=1),((e=a.value)==null?void 0:e.id)===t&&(a.value=null),!0}catch(l){throw c.value=l.message||"Failed to delete request",l}finally{u.value=!1}},approveRequest:async(t,e)=>{var l;try{u.value=!0,c.value=null;const n=await g.approve(t,e),y=r.value.findIndex(h=>h.id===t);return y!==-1&&(r.value[y]={...r.value[y],status:"approved",workOrder:n.workOrder}),((l=a.value)==null?void 0:l.id)===t&&(a.value={...a.value,status:"approved",workOrder:n.workOrder}),n}catch(n){throw c.value=n.message||"Failed to approve request",n}finally{u.value=!1}},rejectRequest:async(t,e)=>{var l;try{u.value=!0,c.value=null;const n=await g.reject(t,e),y=r.value.findIndex(h=>h.id===t);return y!==-1&&(r.value[y]=n),((l=a.value)==null?void 0:l.id)===t&&(a.value=n),n}catch(n){throw c.value=n.message||"Failed to reject request",n}finally{u.value=!1}},cancelRequest:async(t,e)=>{var l;try{u.value=!0,c.value=null;const n=await g.cancel(t,e),y=r.value.findIndex(h=>h.id===t);return y!==-1&&(r.value[y]=n),((l=a.value)==null?void 0:l.id)===t&&(a.value=n),n}catch(n){throw c.value=n.message||"Failed to cancel request",n}finally{u.value=!1}},getPendingRequestsCount:async()=>{try{const t=await g.getPendingCount();return L.value=t.count||0,L.value}catch(t){throw c.value=t.message||"Failed to get pending count",t}},getRequestStatistics:async(t={})=>{try{return await g.getStatistics(t)}catch(e){throw c.value=e.message||"Failed to get request statistics",e}},bulkUpdateRequests:async t=>{try{u.value=!0,c.value=null;const e=await g.bulkUpdate(t);return await f(),e}catch(e){throw c.value=e.message||"Failed to perform bulk update",e}finally{u.value=!1}},clearCurrentRequest:()=>{a.value=null},clearRequests:()=>{r.value=[],a.value=null,w.value=0,c.value=null},updateFilters:t=>{v.value={...v.value,...t}},updatePagination:t=>{C.value={...C.value,...t}}}}),m={MAINTENANCE:"maintenance",REPAIR:"repair",INSPECTION:"inspection",INSTALLATION:"installation",MODIFICATION:"modification",CLEANING:"cleaning",OTHER:"other"},H={[m.MAINTENANCE]:"Maintenance Request",[m.REPAIR]:"Repair Request",[m.INSPECTION]:"Inspection Request",[m.INSTALLATION]:"Installation Request",[m.MODIFICATION]:"Modification Request",[m.CLEANING]:"Cleaning Request",[m.OTHER]:"Other Request"},R={PENDING:"pending",UNDER_REVIEW:"under_review",APPROVED:"approved",REJECTED:"rejected",IN_PROGRESS:"in_progress",COMPLETED:"completed",CANCELLED:"cancelled"},U={[R.PENDING]:"Pending",[R.UNDER_REVIEW]:"Under Review",[R.APPROVED]:"Approved",[R.REJECTED]:"Rejected",[R.IN_PROGRESS]:"In Progress",[R.COMPLETED]:"Completed",[R.CANCELLED]:"Cancelled"},d={LOW:"low",MEDIUM:"medium",HIGH:"high",CRITICAL:"critical",EMERGENCY:"emergency"},_={[d.LOW]:"Low",[d.MEDIUM]:"Medium",[d.HIGH]:"High",[d.CRITICAL]:"Critical",[d.EMERGENCY]:"Emergency"},X={id:null,customId:"",title:"",description:"",type:m.MAINTENANCE,status:R.PENDING,priority:d.MEDIUM,assetId:null,assetName:"",locationId:null,locationName:"",categoryId:null,categoryName:"",workOrderId:null,requestedBy:null,requestedDate:null,requiredDate:null,assignedTo:null,approvedBy:null,approvedDate:null,estimatedHours:null,estimatedCost:null,urgencyReason:"",businessJustification:"",cancelled:!1,cancellationReason:null,cancelledBy:null,cancelledDate:null,audioDescription:null,attachments:[],images:[],createdAt:null,updatedAt:null,createdBy:null,updatedBy:null},p={title:{minLength:3,maxLength:100,pattern:/^[a-zA-Z0-9\s\-_.,()&]+$/},description:{minLength:10,maxLength:2e3},type:{validValues:Object.values(m)},priority:{validValues:Object.values(d)},estimatedHours:{min:.25,max:1e3},estimatedCost:{min:0,max:1e6}};Object.keys(R).map(r=>({label:U[R[r]],value:R[r]})),Object.keys(d).map(r=>({label:_[d[r]],value:d[r]})),Object.keys(m).map(r=>({label:H[m[r]],value:m[r]}));function ee(){const r=M(),a=E(null),u=E(!1),I=s=>{if(a.value=null,!s.title||typeof s.title!="string")return a.value="Request title is required",!1;const i=s.title.trim();if(i.lengthp.title.maxLength)return a.value=`Request title must be less than ${p.title.maxLength} characters`,!1;if(!p.title.pattern.test(i))return a.value="Request title contains invalid characters",!1;if(!s.description||typeof s.description!="string")return a.value="Request description is required",!1;const o=s.description.trim();if(o.lengthp.description.maxLength)return a.value=`Request description must be less than ${p.description.maxLength} characters`,!1;if(!s.type||!p.type.validValues.includes(s.type))return a.value="Valid request type is required",!1;if(!s.priority||!p.priority.validValues.includes(s.priority))return a.value="Valid request priority is required",!1;if(s.requiredDate){const f=new Date(s.requiredDate),N=new Date;if(N.setHours(0,0,0,0),fp.estimatedHours.max)return a.value=`Estimated hours must be between ${p.estimatedHours.min} and ${p.estimatedHours.max}`,!1}if(s.estimatedCost!==null&&s.estimatedCost!==void 0){const f=parseFloat(s.estimatedCost);if(isNaN(f)||fp.estimatedCost.max)return a.value=`Estimated cost must be between ${p.estimatedCost.min} and ${p.estimatedCost.max}`,!1}return!0},c=s=>{var o,f,N,D;return{...s,title:(o=s.title)==null?void 0:o.trim(),description:(f=s.description)==null?void 0:f.trim(),urgencyReason:((N=s.urgencyReason)==null?void 0:N.trim())||"",businessJustification:((D=s.businessJustification)==null?void 0:D.trim())||"",estimatedHours:s.estimatedHours?parseFloat(s.estimatedHours):null,estimatedCost:s.estimatedCost?parseFloat(s.estimatedCost):null,createdAt:s.createdAt||new Date().toISOString(),updatedAt:new Date().toISOString()}},w=async s=>{try{if(u.value=!0,a.value=null,!I(s))throw new Error(a.value);const i=c(s);return await r.createRequest(i)}catch(i){throw a.value=i.message||"Failed to create request",i}finally{u.value=!1}},L=async(s,i)=>{try{if(u.value=!0,a.value=null,!I(i))throw new Error(a.value);const o=c(i);return await r.updateRequest(s,o)}catch(o){throw a.value=o.message||"Failed to update request",o}finally{u.value=!1}},v=async s=>{try{return u.value=!0,a.value=null,await r.deleteRequest(s),!0}catch(i){throw a.value=i.message||"Failed to delete request",i}finally{u.value=!1}},C=async(s,i={})=>{try{return u.value=!0,a.value=null,await r.approveRequest(s,i)}catch(o){throw a.value=o.message||"Failed to approve request",o}finally{u.value=!1}},A=async(s,i)=>{try{if(u.value=!0,a.value=null,!i.reason||!i.reason.trim())throw a.value="Rejection reason is required",new Error(a.value);return await r.rejectRequest(s,i)}catch(o){throw a.value=o.message||"Failed to reject request",o}finally{u.value=!1}},x=async(s,i)=>{try{if(u.value=!0,a.value=null,!i.reason||!i.reason.trim())throw a.value="Cancellation reason is required",new Error(a.value);return await r.cancelRequest(s,i)}catch(o){throw a.value=o.message||"Failed to cancel request",o}finally{u.value=!1}},S=s=>{let o={[d.EMERGENCY]:100,[d.CRITICAL]:80,[d.HIGH]:60,[d.MEDIUM]:40,[d.LOW]:20}[s.priority]||0;s.requiredDate&&new Date(s.requiredDate)({...s,formattedCreatedDate:new Date(s.createdAt).toLocaleDateString(),formattedRequiredDate:s.requiredDate?new Date(s.requiredDate).toLocaleDateString():"Not specified",isOverdue:s.requiredDate&&new Date(s.requiredDate)({[R.PENDING]:"text-yellow-600 bg-yellow-100",[R.UNDER_REVIEW]:"text-blue-600 bg-blue-100",[R.APPROVED]:"text-green-600 bg-green-100",[R.REJECTED]:"text-red-600 bg-red-100",[R.IN_PROGRESS]:"text-purple-600 bg-purple-100",[R.COMPLETED]:"text-green-700 bg-green-200",[R.CANCELLED]:"text-gray-600 bg-gray-100"})[s]||"text-gray-600 bg-gray-100",b=s=>({[d.EMERGENCY]:"text-red-700 bg-red-200",[d.CRITICAL]:"text-red-600 bg-red-100",[d.HIGH]:"text-orange-600 bg-orange-100",[d.MEDIUM]:"text-yellow-600 bg-yellow-100",[d.LOW]:"text-green-600 bg-green-100"})[s]||"text-gray-600 bg-gray-100";return{error:q(()=>a.value),processing:q(()=>u.value),validateRequest:I,processRequestData:c,createRequest:w,updateRequest:L,deleteRequest:v,approveRequest:C,rejectRequest:A,cancelRequest:x,calculatePriorityScore:S,formatRequestForDisplay:O,getStatusColor:T,getPriorityColor:b}}export{_ as R,ee as a,d as b,H as c,m as d,X as e,U as f,R as g,M as u}; +import{aP as F,r as E,c as q,br as g}from"./index-QAlcqU00.js";const M=F("requests",()=>{const r=E([]),a=E(null),u=E(!1),I=E(!1),c=E(null),w=E(0),L=E(0),v=E({status:null,priority:null,type:null,assignedTo:null,asset:null,location:null,search:"",dateRange:null}),C=E({page:0,size:20,sort:"created_desc",sortDirection:"desc"}),A=q(()=>{let t=r.value;if(v.value.status&&(t=t.filter(e=>e.status===v.value.status)),v.value.priority&&(t=t.filter(e=>e.priority===v.value.priority)),v.value.type&&(t=t.filter(e=>e.type===v.value.type)),v.value.assignedTo&&(t=t.filter(e=>{var l;return((l=e.assignedTo)==null?void 0:l.id)===v.value.assignedTo})),v.value.asset&&(t=t.filter(e=>e.assetId===v.value.asset)),v.value.location&&(t=t.filter(e=>e.locationId===v.value.location)),v.value.search){const e=v.value.search.toLowerCase();t=t.filter(l=>{var n,y,h,D;return((n=l.title)==null?void 0:n.toLowerCase().includes(e))||((y=l.description)==null?void 0:y.toLowerCase().includes(e))||((h=l.customId)==null?void 0:h.toLowerCase().includes(e))||((D=l.id)==null?void 0:D.toString().includes(e))})}return t}),x=q(()=>r.value.reduce((t,e)=>(t[e.status]||(t[e.status]=[]),t[e.status].push(e),t),{})),S=q(()=>r.value.reduce((t,e)=>(t[e.priority]||(t[e.priority]=[]),t[e.priority].push(e),t),{})),O=q(()=>r.value.reduce((t,e)=>(t[e.type]||(t[e.type]=[]),t[e.type].push(e),t),{})),T=q(()=>r.value.filter(t=>t.status==="pending")),b=q(()=>r.value.filter(t=>t.status==="approved")),s=q(()=>{const t=new Date;return r.value.filter(e=>e.requiredDate&&new Date(e.requiredDate)r.value.filter(t=>["high","critical","emergency"].includes(t.priority))),o=async(t={})=>{try{I.value=!0,c.value=null;const e={...C.value,...t},l=await g.search(e);return r.value=l.content||l,w.value=l.totalElements||l.length,l}catch(e){throw c.value=e.message||"Failed to search requests",e}finally{I.value=!1}},f=async(t={})=>{try{u.value=!0,c.value=null;const e=await g.getAll(t);return r.value=e.content||e,w.value=e.totalElements||e.length,e}catch(e){throw c.value=e.message||"Failed to fetch requests",e}finally{u.value=!1}};return{requests:r,currentRequest:a,loading:u,loadingGet:I,error:c,totalCount:w,pendingCount:L,filters:v,pagination:C,filteredRequests:A,requestsByStatus:x,requestsByPriority:S,requestsByType:O,pendingRequests:T,approvedRequests:b,overdueRequests:s,highPriorityRequests:i,searchRequests:o,fetchRequests:f,fetchRequestById:async t=>{try{I.value=!0,c.value=null;const e=await g.getById(t);a.value=e;const l=r.value.findIndex(n=>n.id===t);return l!==-1&&(r.value[l]=e),e}catch(e){throw c.value=e.message||"Failed to fetch request",e}finally{I.value=!1}},createRequest:async t=>{try{u.value=!0,c.value=null;const e=await g.create(t);return r.value.unshift(e),w.value+=1,e}catch(e){throw c.value=e.message||"Failed to create request",e}finally{u.value=!1}},updateRequest:async(t,e)=>{var l;try{u.value=!0,c.value=null;const n=await g.update(t,e),y=r.value.findIndex(h=>h.id===t);return y!==-1&&(r.value[y]=n),((l=a.value)==null?void 0:l.id)===t&&(a.value=n),n}catch(n){throw c.value=n.message||"Failed to update request",n}finally{u.value=!1}},deleteRequest:async t=>{var e;try{u.value=!0,c.value=null,await g.delete(t);const l=r.value.findIndex(n=>n.id===t);return l!==-1&&(r.value.splice(l,1),w.value-=1),((e=a.value)==null?void 0:e.id)===t&&(a.value=null),!0}catch(l){throw c.value=l.message||"Failed to delete request",l}finally{u.value=!1}},approveRequest:async(t,e)=>{var l;try{u.value=!0,c.value=null;const n=await g.approve(t,e),y=r.value.findIndex(h=>h.id===t);return y!==-1&&(r.value[y]={...r.value[y],status:"approved",workOrder:n.workOrder}),((l=a.value)==null?void 0:l.id)===t&&(a.value={...a.value,status:"approved",workOrder:n.workOrder}),n}catch(n){throw c.value=n.message||"Failed to approve request",n}finally{u.value=!1}},rejectRequest:async(t,e)=>{var l;try{u.value=!0,c.value=null;const n=await g.reject(t,e),y=r.value.findIndex(h=>h.id===t);return y!==-1&&(r.value[y]=n),((l=a.value)==null?void 0:l.id)===t&&(a.value=n),n}catch(n){throw c.value=n.message||"Failed to reject request",n}finally{u.value=!1}},cancelRequest:async(t,e)=>{var l;try{u.value=!0,c.value=null;const n=await g.cancel(t,e),y=r.value.findIndex(h=>h.id===t);return y!==-1&&(r.value[y]=n),((l=a.value)==null?void 0:l.id)===t&&(a.value=n),n}catch(n){throw c.value=n.message||"Failed to cancel request",n}finally{u.value=!1}},getPendingRequestsCount:async()=>{try{const t=await g.getPendingCount();return L.value=t.count||0,L.value}catch(t){throw c.value=t.message||"Failed to get pending count",t}},getRequestStatistics:async(t={})=>{try{return await g.getStatistics(t)}catch(e){throw c.value=e.message||"Failed to get request statistics",e}},bulkUpdateRequests:async t=>{try{u.value=!0,c.value=null;const e=await g.bulkUpdate(t);return await f(),e}catch(e){throw c.value=e.message||"Failed to perform bulk update",e}finally{u.value=!1}},clearCurrentRequest:()=>{a.value=null},clearRequests:()=>{r.value=[],a.value=null,w.value=0,c.value=null},updateFilters:t=>{v.value={...v.value,...t}},updatePagination:t=>{C.value={...C.value,...t}}}}),m={MAINTENANCE:"maintenance",REPAIR:"repair",INSPECTION:"inspection",INSTALLATION:"installation",MODIFICATION:"modification",CLEANING:"cleaning",OTHER:"other"},H={[m.MAINTENANCE]:"Maintenance Request",[m.REPAIR]:"Repair Request",[m.INSPECTION]:"Inspection Request",[m.INSTALLATION]:"Installation Request",[m.MODIFICATION]:"Modification Request",[m.CLEANING]:"Cleaning Request",[m.OTHER]:"Other Request"},R={PENDING:"pending",UNDER_REVIEW:"under_review",APPROVED:"approved",REJECTED:"rejected",IN_PROGRESS:"in_progress",COMPLETED:"completed",CANCELLED:"cancelled"},U={[R.PENDING]:"Pending",[R.UNDER_REVIEW]:"Under Review",[R.APPROVED]:"Approved",[R.REJECTED]:"Rejected",[R.IN_PROGRESS]:"In Progress",[R.COMPLETED]:"Completed",[R.CANCELLED]:"Cancelled"},d={LOW:"low",MEDIUM:"medium",HIGH:"high",CRITICAL:"critical",EMERGENCY:"emergency"},_={[d.LOW]:"Low",[d.MEDIUM]:"Medium",[d.HIGH]:"High",[d.CRITICAL]:"Critical",[d.EMERGENCY]:"Emergency"},X={id:null,customId:"",title:"",description:"",type:m.MAINTENANCE,status:R.PENDING,priority:d.MEDIUM,assetId:null,assetName:"",locationId:null,locationName:"",categoryId:null,categoryName:"",workOrderId:null,requestedBy:null,requestedDate:null,requiredDate:null,assignedTo:null,approvedBy:null,approvedDate:null,estimatedHours:null,estimatedCost:null,urgencyReason:"",businessJustification:"",cancelled:!1,cancellationReason:null,cancelledBy:null,cancelledDate:null,audioDescription:null,attachments:[],images:[],createdAt:null,updatedAt:null,createdBy:null,updatedBy:null},p={title:{minLength:3,maxLength:100,pattern:/^[a-zA-Z0-9\s\-_.,()&]+$/},description:{minLength:10,maxLength:2e3},type:{validValues:Object.values(m)},priority:{validValues:Object.values(d)},estimatedHours:{min:.25,max:1e3},estimatedCost:{min:0,max:1e6}};Object.keys(R).map(r=>({label:U[R[r]],value:R[r]})),Object.keys(d).map(r=>({label:_[d[r]],value:d[r]})),Object.keys(m).map(r=>({label:H[m[r]],value:m[r]}));function ee(){const r=M(),a=E(null),u=E(!1),I=s=>{if(a.value=null,!s.title||typeof s.title!="string")return a.value="Request title is required",!1;const i=s.title.trim();if(i.lengthp.title.maxLength)return a.value=`Request title must be less than ${p.title.maxLength} characters`,!1;if(!p.title.pattern.test(i))return a.value="Request title contains invalid characters",!1;if(!s.description||typeof s.description!="string")return a.value="Request description is required",!1;const o=s.description.trim();if(o.lengthp.description.maxLength)return a.value=`Request description must be less than ${p.description.maxLength} characters`,!1;if(!s.type||!p.type.validValues.includes(s.type))return a.value="Valid request type is required",!1;if(!s.priority||!p.priority.validValues.includes(s.priority))return a.value="Valid request priority is required",!1;if(s.requiredDate){const f=new Date(s.requiredDate),N=new Date;if(N.setHours(0,0,0,0),fp.estimatedHours.max)return a.value=`Estimated hours must be between ${p.estimatedHours.min} and ${p.estimatedHours.max}`,!1}if(s.estimatedCost!==null&&s.estimatedCost!==void 0){const f=parseFloat(s.estimatedCost);if(isNaN(f)||fp.estimatedCost.max)return a.value=`Estimated cost must be between ${p.estimatedCost.min} and ${p.estimatedCost.max}`,!1}return!0},c=s=>{var o,f,N,P;return{...s,title:(o=s.title)==null?void 0:o.trim(),description:(f=s.description)==null?void 0:f.trim(),urgencyReason:((N=s.urgencyReason)==null?void 0:N.trim())||"",businessJustification:((P=s.businessJustification)==null?void 0:P.trim())||"",estimatedHours:s.estimatedHours?parseFloat(s.estimatedHours):null,estimatedCost:s.estimatedCost?parseFloat(s.estimatedCost):null,createdAt:s.createdAt||new Date().toISOString(),updatedAt:new Date().toISOString()}},w=async s=>{try{if(u.value=!0,a.value=null,!I(s))throw new Error(a.value);const i=c(s);return await r.createRequest(i)}catch(i){throw a.value=i.message||"Failed to create request",i}finally{u.value=!1}},L=async(s,i)=>{try{if(u.value=!0,a.value=null,!I(i))throw new Error(a.value);const o=c(i);return await r.updateRequest(s,o)}catch(o){throw a.value=o.message||"Failed to update request",o}finally{u.value=!1}},v=async s=>{try{return u.value=!0,a.value=null,await r.deleteRequest(s),!0}catch(i){throw a.value=i.message||"Failed to delete request",i}finally{u.value=!1}},C=async(s,i={})=>{try{return u.value=!0,a.value=null,await r.approveRequest(s,i)}catch(o){throw a.value=o.message||"Failed to approve request",o}finally{u.value=!1}},A=async(s,i)=>{try{if(u.value=!0,a.value=null,!i.reason||!i.reason.trim())throw a.value="Rejection reason is required",new Error(a.value);return await r.rejectRequest(s,i)}catch(o){throw a.value=o.message||"Failed to reject request",o}finally{u.value=!1}},x=async(s,i)=>{try{if(u.value=!0,a.value=null,!i.reason||!i.reason.trim())throw a.value="Cancellation reason is required",new Error(a.value);return await r.cancelRequest(s,i)}catch(o){throw a.value=o.message||"Failed to cancel request",o}finally{u.value=!1}},S=s=>{let o={[d.EMERGENCY]:100,[d.CRITICAL]:80,[d.HIGH]:60,[d.MEDIUM]:40,[d.LOW]:20}[s.priority]||0;s.requiredDate&&new Date(s.requiredDate)({...s,formattedCreatedDate:new Date(s.createdAt).toLocaleDateString(),formattedRequiredDate:s.requiredDate?new Date(s.requiredDate).toLocaleDateString():"Not specified",isOverdue:s.requiredDate&&new Date(s.requiredDate)({[R.PENDING]:"text-yellow-600 bg-yellow-100",[R.UNDER_REVIEW]:"text-blue-600 bg-blue-100",[R.APPROVED]:"text-green-600 bg-green-100",[R.REJECTED]:"text-red-600 bg-red-100",[R.IN_PROGRESS]:"text-purple-600 bg-purple-100",[R.COMPLETED]:"text-green-700 bg-green-200",[R.CANCELLED]:"text-gray-600 bg-gray-100"})[s]||"text-gray-600 bg-gray-100",b=s=>({[d.EMERGENCY]:"text-red-700 bg-red-200",[d.CRITICAL]:"text-red-600 bg-red-100",[d.HIGH]:"text-orange-600 bg-orange-100",[d.MEDIUM]:"text-yellow-600 bg-yellow-100",[d.LOW]:"text-green-600 bg-green-100"})[s]||"text-gray-600 bg-gray-100";return{error:q(()=>a.value),processing:q(()=>u.value),validateRequest:I,processRequestData:c,createRequest:w,updateRequest:L,deleteRequest:v,approveRequest:C,rejectRequest:A,cancelRequest:x,calculatePriorityScore:S,formatRequestForDisplay:O,getStatusColor:T,getPriorityColor:b}}export{_ as R,ee as a,d as b,H as c,m as d,X as e,U as f,R as g,M as u}; diff --git a/frontend/dist/assets/useUniversalCalendar-2CJQgaXx.js b/frontend/dist/assets/useUniversalCalendar-C6fCeunY.js similarity index 96% rename from frontend/dist/assets/useUniversalCalendar-2CJQgaXx.js rename to frontend/dist/assets/useUniversalCalendar-C6fCeunY.js index f845e7a5..d688b8a8 100644 --- a/frontend/dist/assets/useUniversalCalendar-2CJQgaXx.js +++ b/frontend/dist/assets/useUniversalCalendar-C6fCeunY.js @@ -1,3 +1,3 @@ -import{u as $}from"./useWorkOrders-B61P5JA7.js";import{u as k,a as H}from"./usePreventiveMaintenanceDisplay-Bhncwa9c.js";import{r as a,c as s}from"./index-BUdRbiwj.js";function K(){const d=k(),{workOrders:R,searchWorkOrders:P}=$(),{formatFrequency:w}=H(),F=a(new Date),A=a("month"),u=a(null),D=a(!1),i=a(!1),O={WORK_ORDER:{label:"Work Order",color:"#3B82F6",icon:"work-order",borderColor:"#2563EB"},PREVENTIVE_MAINTENANCE:{label:"Preventive Maintenance",color:"#10B981",icon:"maintenance",borderColor:"#059669"},ASSET_INSPECTION:{label:"Asset Inspection",color:"#F59E0B",icon:"inspection",borderColor:"#D97706"},SCHEDULED_DOWNTIME:{label:"Scheduled Downtime",color:"#EF4444",icon:"downtime",borderColor:"#DC2626"}},E=(e=[])=>e.filter(t=>t.dueDate||t.scheduledDate).map(t=>{var n,o;return{id:`wo-${t.id}`,title:t.title||`Work Order #${t.workOrderId}`,start:new Date(t.dueDate||t.scheduledDate),end:t.estimatedDuration?new Date(new Date(t.dueDate||t.scheduledDate).getTime()+t.estimatedDuration*6e4):new Date(new Date(t.dueDate||t.scheduledDate).getTime()+60*6e4),backgroundColor:C(t),borderColor:x(t),textColor:"#FFFFFF",extendedProps:{type:"WORK_ORDER",originalData:t,status:t.status,priority:t.priority,assignedTo:t.assignedTo,description:t.description,location:(n=t.location)==null?void 0:n.name,asset:(o=t.asset)==null?void 0:o.name}}}),p=(e=[])=>e.filter(t=>t.nextDue&&t.status==="ACTIVE").map(t=>({id:`pm-${t.id}`,title:t.name,start:new Date(t.nextDue),end:t.estimatedDuration?new Date(new Date(t.nextDue).getTime()+t.estimatedDuration*6e4):new Date(new Date(t.nextDue).getTime()+60*6e4),backgroundColor:g(t),borderColor:h(t),textColor:"#FFFFFF",extendedProps:{type:"PREVENTIVE_MAINTENANCE",originalData:t,priority:t.priority,frequency:w(t.frequency,t.frequencyValue),description:t.description,instructions:t.instructions,assetName:t.assetName||t.asset,estimatedDuration:t.estimatedDuration}})),C=e=>e.priority==="CRITICAL"?"#DC2626":{OPEN:"#3B82F6",IN_PROGRESS:"#F59E0B",ON_HOLD:"#EF4444",COMPLETED:"#10B981",CANCELLED:"#6B7280"}[e.status]||"#3B82F6",x=e=>e.priority==="CRITICAL"?"#B91C1C":{OPEN:"#2563EB",IN_PROGRESS:"#D97706",ON_HOLD:"#DC2626",COMPLETED:"#059669",CANCELLED:"#4B5563"}[e.status]||"#2563EB",g=e=>({LOW:"#10B981",MEDIUM:"#3B82F6",HIGH:"#F59E0B",CRITICAL:"#EF4444"})[e.priority]||"#10B981",h=e=>({LOW:"#059669",MEDIUM:"#2563EB",HIGH:"#D97706",CRITICAL:"#DC2626"})[e.priority]||"#059669",r=s(()=>{const e=E(R.value),t=p(d.schedules);return[...e,...t].sort((n,o)=>new Date(n.start)-new Date(o.start))}),m=e=>{const t=new Date(e).toDateString();return r.value.filter(n=>new Date(n.start).toDateString()===t)},l=(e,t)=>{const n=new Date(e),o=new Date(t);return r.value.filter(c=>{const M=new Date(c.start);return M>=n&&M<=o})},v=s(()=>{const e=new Date,t=new Date(e.getTime()+7*24*60*60*1e3);return l(e,t).slice(0,10)}),I=s(()=>m(new Date)),y=s(()=>{const e=new Date;return r.value.filter(t=>new Date(t.start)e.extendedProps.type==="WORK_ORDER"?e.extendedProps.status==="COMPLETED":!1,L=(e="month")=>({headerToolbar:{left:"prev,next today",center:"title",right:"dayGridMonth,timeGridWeek,timeGridDay,listWeek"},initialView:b(e),height:"auto",eventDisplay:"block",dayMaxEvents:3,moreLinkClick:"popover",nowIndicator:!0,eventClick:T,dateClick:N,slotMinTime:"06:00:00",slotMaxTime:"22:00:00",businessHours:{daysOfWeek:[1,2,3,4,5],startTime:"08:00",endTime:"17:00"}}),b=e=>({month:"dayGridMonth",week:"timeGridWeek",day:"timeGridDay",list:"listWeek"})[e]||"dayGridMonth",T=e=>{u.value={...e.event.extendedProps,title:e.event.title,start:e.event.start,end:e.event.end,id:e.event.id},D.value=!0},N=e=>{console.log("Date clicked:",e.date)},S=async(e,t)=>{i.value=!0;try{await P({filterFields:[{field:"dueDate",operation:"BETWEEN",values:[e.toISOString(),t.toISOString()]}]}),await d.fetchSchedules({filters:{nextDue:{gte:e.toISOString(),lte:t.toISOString()}}})}catch(n){console.error("Failed to load calendar data:",n)}finally{i.value=!1}},W=async()=>{const e=new Date,t=new Date(e.getFullYear(),e.getMonth()-1,1),n=new Date(e.getFullYear(),e.getMonth()+2,0);await S(t,n)},V=s(()=>{const e=r.value;return{total:e.length,workOrders:e.filter(t=>t.extendedProps.type==="WORK_ORDER").length,preventiveMaintenance:e.filter(t=>t.extendedProps.type==="PREVENTIVE_MAINTENANCE").length,upcoming:v.value.length,overdue:y.value.length,today:I.value.length}}),G=(e="csv",t=null,n=null)=>{let o=r.value;switch(t&&n&&(o=l(t,n)),e){case"csv":return f(o);case"json":return JSON.stringify(o,null,2);case"ics":return _(o);default:return f(o)}},f=e=>{const t=["Title","Type","Start","End","Priority","Status","Description"],n=e.map(o=>[o.title,o.extendedProps.type,o.start.toISOString(),o.end.toISOString(),o.extendedProps.priority||"N/A",o.extendedProps.status||"N/A",o.extendedProps.description||""]);return[t,...n].map(o=>o.map(c=>`"${c}"`).join(",")).join(` +import{u as $}from"./useWorkOrders-CVmaGBfy.js";import{u as k,a as H}from"./usePreventiveMaintenanceDisplay-DE1jAbPb.js";import{r as a,c as s}from"./index-QAlcqU00.js";function K(){const d=k(),{workOrders:R,searchWorkOrders:P}=$(),{formatFrequency:w}=H(),F=a(new Date),A=a("month"),u=a(null),D=a(!1),i=a(!1),O={WORK_ORDER:{label:"Work Order",color:"#3B82F6",icon:"work-order",borderColor:"#2563EB"},PREVENTIVE_MAINTENANCE:{label:"Preventive Maintenance",color:"#10B981",icon:"maintenance",borderColor:"#059669"},ASSET_INSPECTION:{label:"Asset Inspection",color:"#F59E0B",icon:"inspection",borderColor:"#D97706"},SCHEDULED_DOWNTIME:{label:"Scheduled Downtime",color:"#EF4444",icon:"downtime",borderColor:"#DC2626"}},E=(e=[])=>e.filter(t=>t.dueDate||t.scheduledDate).map(t=>{var n,o;return{id:`wo-${t.id}`,title:t.title||`Work Order #${t.workOrderId}`,start:new Date(t.dueDate||t.scheduledDate),end:t.estimatedDuration?new Date(new Date(t.dueDate||t.scheduledDate).getTime()+t.estimatedDuration*6e4):new Date(new Date(t.dueDate||t.scheduledDate).getTime()+60*6e4),backgroundColor:C(t),borderColor:x(t),textColor:"#FFFFFF",extendedProps:{type:"WORK_ORDER",originalData:t,status:t.status,priority:t.priority,assignedTo:t.assignedTo,description:t.description,location:(n=t.location)==null?void 0:n.name,asset:(o=t.asset)==null?void 0:o.name}}}),p=(e=[])=>e.filter(t=>t.nextDue&&t.status==="ACTIVE").map(t=>({id:`pm-${t.id}`,title:t.name,start:new Date(t.nextDue),end:t.estimatedDuration?new Date(new Date(t.nextDue).getTime()+t.estimatedDuration*6e4):new Date(new Date(t.nextDue).getTime()+60*6e4),backgroundColor:g(t),borderColor:h(t),textColor:"#FFFFFF",extendedProps:{type:"PREVENTIVE_MAINTENANCE",originalData:t,priority:t.priority,frequency:w(t.frequency,t.frequencyValue),description:t.description,instructions:t.instructions,assetName:t.assetName||t.asset,estimatedDuration:t.estimatedDuration}})),C=e=>e.priority==="CRITICAL"?"#DC2626":{OPEN:"#3B82F6",IN_PROGRESS:"#F59E0B",ON_HOLD:"#EF4444",COMPLETED:"#10B981",CANCELLED:"#6B7280"}[e.status]||"#3B82F6",x=e=>e.priority==="CRITICAL"?"#B91C1C":{OPEN:"#2563EB",IN_PROGRESS:"#D97706",ON_HOLD:"#DC2626",COMPLETED:"#059669",CANCELLED:"#4B5563"}[e.status]||"#2563EB",g=e=>({LOW:"#10B981",MEDIUM:"#3B82F6",HIGH:"#F59E0B",CRITICAL:"#EF4444"})[e.priority]||"#10B981",h=e=>({LOW:"#059669",MEDIUM:"#2563EB",HIGH:"#D97706",CRITICAL:"#DC2626"})[e.priority]||"#059669",r=s(()=>{const e=E(R.value),t=p(d.schedules);return[...e,...t].sort((n,o)=>new Date(n.start)-new Date(o.start))}),m=e=>{const t=new Date(e).toDateString();return r.value.filter(n=>new Date(n.start).toDateString()===t)},l=(e,t)=>{const n=new Date(e),o=new Date(t);return r.value.filter(c=>{const M=new Date(c.start);return M>=n&&M<=o})},v=s(()=>{const e=new Date,t=new Date(e.getTime()+7*24*60*60*1e3);return l(e,t).slice(0,10)}),I=s(()=>m(new Date)),y=s(()=>{const e=new Date;return r.value.filter(t=>new Date(t.start)e.extendedProps.type==="WORK_ORDER"?e.extendedProps.status==="COMPLETED":!1,L=(e="month")=>({headerToolbar:{left:"prev,next today",center:"title",right:"dayGridMonth,timeGridWeek,timeGridDay,listWeek"},initialView:b(e),height:"auto",eventDisplay:"block",dayMaxEvents:3,moreLinkClick:"popover",nowIndicator:!0,eventClick:T,dateClick:N,slotMinTime:"06:00:00",slotMaxTime:"22:00:00",businessHours:{daysOfWeek:[1,2,3,4,5],startTime:"08:00",endTime:"17:00"}}),b=e=>({month:"dayGridMonth",week:"timeGridWeek",day:"timeGridDay",list:"listWeek"})[e]||"dayGridMonth",T=e=>{u.value={...e.event.extendedProps,title:e.event.title,start:e.event.start,end:e.event.end,id:e.event.id},D.value=!0},N=e=>{console.log("Date clicked:",e.date)},S=async(e,t)=>{i.value=!0;try{await P({filterFields:[{field:"dueDate",operation:"BETWEEN",values:[e.toISOString(),t.toISOString()]}]}),await d.fetchSchedules({filters:{nextDue:{gte:e.toISOString(),lte:t.toISOString()}}})}catch(n){console.error("Failed to load calendar data:",n)}finally{i.value=!1}},W=async()=>{const e=new Date,t=new Date(e.getFullYear(),e.getMonth()-1,1),n=new Date(e.getFullYear(),e.getMonth()+2,0);await S(t,n)},V=s(()=>{const e=r.value;return{total:e.length,workOrders:e.filter(t=>t.extendedProps.type==="WORK_ORDER").length,preventiveMaintenance:e.filter(t=>t.extendedProps.type==="PREVENTIVE_MAINTENANCE").length,upcoming:v.value.length,overdue:y.value.length,today:I.value.length}}),G=(e="csv",t=null,n=null)=>{let o=r.value;switch(t&&n&&(o=l(t,n)),e){case"csv":return f(o);case"json":return JSON.stringify(o,null,2);case"ics":return _(o);default:return f(o)}},f=e=>{const t=["Title","Type","Start","End","Priority","Status","Description"],n=e.map(o=>[o.title,o.extendedProps.type,o.start.toISOString(),o.end.toISOString(),o.extendedProps.priority||"N/A",o.extendedProps.status||"N/A",o.extendedProps.description||""]);return[t,...n].map(o=>o.map(c=>`"${c}"`).join(",")).join(` `)},_=e=>{const t=["BEGIN:VCALENDAR","VERSION:2.0","PRODID:-//CMMS//Calendar//EN","CALSCALE:GREGORIAN"];return e.forEach(n=>{t.push("BEGIN:VEVENT",`DTSTART:${n.start.toISOString().replace(/[:-]/g,"").split(".")[0]}Z`,`DTEND:${n.end.toISOString().replace(/[:-]/g,"").split(".")[0]}Z`,`SUMMARY:${n.title}`,`DESCRIPTION:${n.extendedProps.description||""}`,`UID:${n.id}@cmms.local`,"END:VEVENT")}),t.push("END:VCALENDAR"),t.join(`\r `)};return{currentDate:F,currentView:A,selectedEvent:u,showEventModal:D,loading:i,allCalendarEvents:r,upcomingEvents:v,todaysEvents:I,overdueEvents:y,eventStatistics:V,eventTypes:O,getEventsForDate:m,getEventsForDateRange:l,getCalendarConfig:L,loadCalendarData:S,refreshCalendarData:W,handleEventClick:T,handleDateClick:N,exportCalendarEvents:G,convertWorkOrdersToEvents:E,convertPMSchedulesToEvents:p,getWorkOrderColor:C,getPMColor:g}}export{K as u}; diff --git a/frontend/dist/assets/useWorkOrders-B61P5JA7.js b/frontend/dist/assets/useWorkOrders-CVmaGBfy.js similarity index 84% rename from frontend/dist/assets/useWorkOrders-B61P5JA7.js rename to frontend/dist/assets/useWorkOrders-CVmaGBfy.js index bc49fc4a..8026a27d 100644 --- a/frontend/dist/assets/useWorkOrders-B61P5JA7.js +++ b/frontend/dist/assets/useWorkOrders-CVmaGBfy.js @@ -1 +1 @@ -import{u as We}from"./useFormAutoSave-Jaawgo91.js";import{r as n,aX as M,c as v,aP as u,aY as N,aZ as L,a_ as K,a$ as Y,b0 as Pe,b1 as De}from"./index-BUdRbiwj.js";import{C as G,P as W,S as P,W as Ae,a as Ce}from"./workOrder-jNxj_kjQ.js";function je(){const l=n(!1),o=n(null),d=n([]),s=n(null),D=n({currentPage:0,pageSize:10,totalElements:0,totalPages:0}),w=M({...G}),{hasUnsavedChanges:V,lastSaveTime:X,saveNow:Z,restoreFormData:q,clearSavedData:H,hasSavedData:J,getSavedDataInfo:Q,markUserInteraction:ee,finishInitialization:te}=We(w,{storageKey:"work-order-form-auto-save",saveInterval:3e3,excludeFields:["id","createdAt","updatedAt","createdBy"],onRestore:e=>{console.log("Work order form data restored:",e.timestamp)},onSave:e=>{console.log("Work order form auto-saved")}}),p=M({filterFields:[],searchFields:["title","description"],searchValue:"",page:0,size:10,direction:"DESC",sortBy:"createdAt"}),f=n([]),h=n([]),O=n([]),F=n([]),k=n([]),b=n(!1),g=n(0),R=async(e={})=>{try{l.value=!0,o.value=null;const t={...p,...e},a=await u.search(t);return d.value=a.content||a,D.value={currentPage:a.currentPage||0,pageSize:a.pageSize||10,totalElements:a.totalElements||a.length||0,totalPages:a.totalPages||Math.ceil((a.totalElements||a.length||0)/(a.pageSize||10))},a}catch(t){throw o.value=t.message||"Failed to search work orders",t}finally{l.value=!1}},ae=async e=>{try{l.value=!0,o.value=null;const t=await u.getById(e);return s.value=t,t}catch(t){throw o.value=t.message||"Failed to get work order",t}finally{l.value=!1}},re=async(e=w)=>{try{l.value=!0,o.value=null;const t=await u.create(e);return d.value.unshift(t),A(),t}catch(t){throw o.value=t.message||"Failed to create work order",t}finally{l.value=!1}},oe=async(e,t)=>{var a;try{l.value=!0,o.value=null;const r=await u.update(e,t),c=d.value.findIndex(i=>i.id===e);return c!==-1&&(d.value[c]=r),((a=s.value)==null?void 0:a.id)===e&&(s.value=r),r}catch(r){throw o.value=r.message||"Failed to update work order",r}finally{l.value=!1}},le=async e=>{var t;try{return l.value=!0,o.value=null,await u.delete(e),d.value=d.value.filter(a=>a.id!==e),((t=s.value)==null?void 0:t.id)===e&&(s.value=null),!0}catch(a){throw o.value=a.message||"Failed to delete work order",a}finally{l.value=!1}},se=async(e,t,a="",r=null)=>{var c;try{l.value=!0,o.value=null;const i=await u.changeStatus(e,t,a,r),m=d.value.findIndex(y=>y.id===e);return m!==-1&&(d.value[m]=i),((c=s.value)==null?void 0:c.id)===e&&(s.value=i),i}catch(i){throw o.value=i.message||"Failed to change work order status",i}finally{l.value=!1}},ne=async(e,t)=>{var a;try{b.value=!0,g.value=0,o.value=null;const r=await De.upload(t,"work-orders");g.value=50;const c=await u.addFiles(e,r);return g.value=100,((a=s.value)==null?void 0:a.id)===e&&(s.value=c),r}catch(r){throw o.value=r.message||"Failed to upload files",r}finally{b.value=!1,g.value=0}},ie=async(e,t)=>{var a;try{l.value=!0,o.value=null;const r=await u.removeFile(e,t);return((a=s.value)==null?void 0:a.id)===e&&(s.value=r),r}catch(r){throw o.value=r.message||"Failed to remove file",r}finally{l.value=!1}},ue=async()=>{var e,t,a,r,c,i,m,y,I,T,U,z,B,E,_,j,x,$;try{const[S,ke,be,Re,Se]=await Promise.all([((t=(e=N).getMini)==null?void 0:t.call(e))||((r=(a=N).getAll)==null?void 0:r.call(a))||[],((i=(c=L).getMini)==null?void 0:i.call(c))||((y=(m=L).getAll)==null?void 0:y.call(m))||[],((T=(I=K).getMini)==null?void 0:T.call(I))||((z=(U=K).getAll)==null?void 0:z.call(U))||[],((E=(B=Y).getMini)==null?void 0:E.call(B))||((j=(_=Y).getAll)==null?void 0:j.call(_))||[],(($=(x=Pe).getAll)==null?void 0:$.call(x))||[]]);f.value=S,h.value=ke,O.value=be,F.value=Re,k.value=Se}catch(S){console.error("Failed to load dropdown options:",S)}},A=()=>{Object.assign(w,G)},ce=e=>(Object.assign(p,e),R()),de=()=>(p.filterFields=[],p.searchValue="",R()),ve=async()=>{try{return await u.getUrgentCount()}catch(e){return console.error("Failed to get urgent count:",e),0}},C=async(e,t={})=>{try{l.value=!0;const a=await u.generateReport(e,t),r=window.URL.createObjectURL(a);return{blob:a,url:r,size:a.size,type:a.type}}catch(a){throw o.value=a.message||"Failed to generate report",a}finally{l.value=!1}},pe=async(e,t={},a=null)=>{try{l.value=!0;const r=await u.downloadReport(e,t,a);return r&&console.log("Report downloaded successfully"),r}catch(r){throw o.value=r.message||"Failed to download report",r}finally{l.value=!1}},ge=async(e,t={})=>{try{const a=await C(e,t);if(!window.open(a.url,"_blank"))throw new Error("Popup blocked. Please allow popups for this site to preview reports.");return setTimeout(()=>{window.URL.revokeObjectURL(a.url)},3e4),a}catch(a){throw o.value=a.message||"Failed to preview report",a}},me=v(()=>Object.entries(W).map(([e,t])=>({value:e,title:t.label,badge:t.badge}))),we=v(()=>Object.entries(P).map(([e,t])=>({value:e,title:t.label,badge:t.badge}))),ye=v(()=>f.value.map(e=>{var t;return{value:e.id,title:`${e.name}${e.model?` (${e.model})`:""}`,subtitle:(t=e.location)==null?void 0:t.name}})),fe=v(()=>h.value.map(e=>({value:e.id,title:e.name,subtitle:e.address}))),he=v(()=>O.value.map(e=>({value:e.id,title:`${e.firstName} ${e.lastName}`,subtitle:e.jobTitle||e.email}))),Oe=v(()=>F.value.map(e=>({value:e.id,title:e.name,subtitle:e.description}))),Fe=v(()=>k.value.map(e=>({value:e.id,title:e.name,subtitle:e.description})));return{loading:l,error:o,workOrders:d,currentWorkOrder:s,pagination:D,workOrderForm:w,searchCriteria:p,uploadingFiles:b,uploadProgress:g,assets:f,locations:h,users:O,teams:F,categories:k,searchWorkOrders:R,getWorkOrder:ae,createWorkOrder:re,updateWorkOrder:oe,deleteWorkOrder:le,changeStatus:se,uploadFiles:ne,removeFile:ie,loadDropdownOptions:ue,resetForm:A,applyFilters:ce,clearFilters:de,getUrgentCount:ve,generateReport:C,downloadReport:pe,previewReport:ge,hasUnsavedChanges:V,lastSaveTime:X,saveNow:Z,restoreFormData:q,clearSavedData:H,hasSavedData:J,getSavedDataInfo:Q,markUserInteraction:ee,finishInitialization:te,priorityOptions:me,statusOptions:we,assetOptions:ye,locationOptions:fe,userOptions:he,teamOptions:Oe,categoryOptions:Fe,formatPriority:e=>{var t;return((t=W[e])==null?void 0:t.label)||e},formatStatus:e=>{var t;return((t=P[e])==null?void 0:t.label)||e},getPriorityBadge:e=>{var t;return((t=W[e])==null?void 0:t.badge)||"secondary"},getStatusBadge:e=>{var t;return((t=P[e])==null?void 0:t.badge)||"secondary"},WORK_ORDER_PRIORITY:Ce,WORK_ORDER_STATUS:Ae}}export{je as u}; +import{u as We}from"./useFormAutoSave-BrW9Wl2Q.js";import{r as n,aY as M,c as v,aQ as u,aZ as N,a_ as L,a$ as K,b0 as Y,b1 as Pe,b2 as De}from"./index-QAlcqU00.js";import{C as G,P as W,S as P,W as Ae,a as Ce}from"./workOrder-jNxj_kjQ.js";function je(){const l=n(!1),o=n(null),d=n([]),s=n(null),D=n({currentPage:0,pageSize:10,totalElements:0,totalPages:0}),w=M({...G}),{hasUnsavedChanges:V,lastSaveTime:Q,saveNow:Z,restoreFormData:q,clearSavedData:H,hasSavedData:J,getSavedDataInfo:X,markUserInteraction:ee,finishInitialization:te}=We(w,{storageKey:"work-order-form-auto-save",saveInterval:3e3,excludeFields:["id","createdAt","updatedAt","createdBy"],onRestore:e=>{console.log("Work order form data restored:",e.timestamp)},onSave:e=>{console.log("Work order form auto-saved")}}),p=M({filterFields:[],searchFields:["title","description"],searchValue:"",page:0,size:10,direction:"DESC",sortBy:"createdAt"}),f=n([]),h=n([]),O=n([]),F=n([]),b=n([]),k=n(!1),g=n(0),R=async(e={})=>{try{l.value=!0,o.value=null;const t={...p,...e},a=await u.search(t);return d.value=a.content||a,D.value={currentPage:a.currentPage||0,pageSize:a.pageSize||10,totalElements:a.totalElements||a.length||0,totalPages:a.totalPages||Math.ceil((a.totalElements||a.length||0)/(a.pageSize||10))},a}catch(t){throw o.value=t.message||"Failed to search work orders",t}finally{l.value=!1}},ae=async e=>{try{l.value=!0,o.value=null;const t=await u.getById(e);return s.value=t,t}catch(t){throw o.value=t.message||"Failed to get work order",t}finally{l.value=!1}},re=async(e=w)=>{try{l.value=!0,o.value=null;const t=await u.create(e);return d.value.unshift(t),A(),t}catch(t){throw o.value=t.message||"Failed to create work order",t}finally{l.value=!1}},oe=async(e,t)=>{var a;try{l.value=!0,o.value=null;const r=await u.update(e,t),c=d.value.findIndex(i=>i.id===e);return c!==-1&&(d.value[c]=r),((a=s.value)==null?void 0:a.id)===e&&(s.value=r),r}catch(r){throw o.value=r.message||"Failed to update work order",r}finally{l.value=!1}},le=async e=>{var t;try{return l.value=!0,o.value=null,await u.delete(e),d.value=d.value.filter(a=>a.id!==e),((t=s.value)==null?void 0:t.id)===e&&(s.value=null),!0}catch(a){throw o.value=a.message||"Failed to delete work order",a}finally{l.value=!1}},se=async(e,t,a="",r=null)=>{var c;try{l.value=!0,o.value=null;const i=await u.changeStatus(e,t,a,r),m=d.value.findIndex(y=>y.id===e);return m!==-1&&(d.value[m]=i),((c=s.value)==null?void 0:c.id)===e&&(s.value=i),i}catch(i){throw o.value=i.message||"Failed to change work order status",i}finally{l.value=!1}},ne=async(e,t)=>{var a;try{k.value=!0,g.value=0,o.value=null;const r=await De.upload(t,"work-orders");g.value=50;const c=await u.addFiles(e,r);return g.value=100,((a=s.value)==null?void 0:a.id)===e&&(s.value=c),r}catch(r){throw o.value=r.message||"Failed to upload files",r}finally{k.value=!1,g.value=0}},ie=async(e,t)=>{var a;try{l.value=!0,o.value=null;const r=await u.removeFile(e,t);return((a=s.value)==null?void 0:a.id)===e&&(s.value=r),r}catch(r){throw o.value=r.message||"Failed to remove file",r}finally{l.value=!1}},ue=async()=>{var e,t,a,r,c,i,m,y,I,T,U,z,B,E,_,j,x,$;try{const[S,be,ke,Re,Se]=await Promise.all([((t=(e=N).getMini)==null?void 0:t.call(e))||((r=(a=N).getAll)==null?void 0:r.call(a))||[],((i=(c=L).getMini)==null?void 0:i.call(c))||((y=(m=L).getAll)==null?void 0:y.call(m))||[],((T=(I=K).getMini)==null?void 0:T.call(I))||((z=(U=K).getAll)==null?void 0:z.call(U))||[],((E=(B=Y).getMini)==null?void 0:E.call(B))||((j=(_=Y).getAll)==null?void 0:j.call(_))||[],(($=(x=Pe).getAll)==null?void 0:$.call(x))||[]]);f.value=S,h.value=be,O.value=ke,F.value=Re,b.value=Se}catch(S){console.error("Failed to load dropdown options:",S)}},A=()=>{Object.assign(w,G)},ce=e=>(Object.assign(p,e),R()),de=()=>(p.filterFields=[],p.searchValue="",R()),ve=async()=>{try{return await u.getUrgentCount()}catch(e){return console.error("Failed to get urgent count:",e),0}},C=async(e,t={})=>{try{l.value=!0;const a=await u.generateReport(e,t),r=window.URL.createObjectURL(a);return{blob:a,url:r,size:a.size,type:a.type}}catch(a){throw o.value=a.message||"Failed to generate report",a}finally{l.value=!1}},pe=async(e,t={},a=null)=>{try{l.value=!0;const r=await u.downloadReport(e,t,a);return r&&console.log("Report downloaded successfully"),r}catch(r){throw o.value=r.message||"Failed to download report",r}finally{l.value=!1}},ge=async(e,t={})=>{try{const a=await C(e,t);if(!window.open(a.url,"_blank"))throw new Error("Popup blocked. Please allow popups for this site to preview reports.");return setTimeout(()=>{window.URL.revokeObjectURL(a.url)},3e4),a}catch(a){throw o.value=a.message||"Failed to preview report",a}},me=v(()=>Object.entries(W).map(([e,t])=>({value:e,title:t.label,badge:t.badge}))),we=v(()=>Object.entries(P).map(([e,t])=>({value:e,title:t.label,badge:t.badge}))),ye=v(()=>f.value.map(e=>{var t;return{value:e.id,title:`${e.name}${e.model?` (${e.model})`:""}`,subtitle:(t=e.location)==null?void 0:t.name}})),fe=v(()=>h.value.map(e=>({value:e.id,title:e.name,subtitle:e.address}))),he=v(()=>O.value.map(e=>({value:e.id,title:`${e.firstName} ${e.lastName}`,subtitle:e.jobTitle||e.email}))),Oe=v(()=>F.value.map(e=>({value:e.id,title:e.name,subtitle:e.description}))),Fe=v(()=>b.value.map(e=>({value:e.id,title:e.name,subtitle:e.description})));return{loading:l,error:o,workOrders:d,currentWorkOrder:s,pagination:D,workOrderForm:w,searchCriteria:p,uploadingFiles:k,uploadProgress:g,assets:f,locations:h,users:O,teams:F,categories:b,searchWorkOrders:R,getWorkOrder:ae,createWorkOrder:re,updateWorkOrder:oe,deleteWorkOrder:le,changeStatus:se,uploadFiles:ne,removeFile:ie,loadDropdownOptions:ue,resetForm:A,applyFilters:ce,clearFilters:de,getUrgentCount:ve,generateReport:C,downloadReport:pe,previewReport:ge,hasUnsavedChanges:V,lastSaveTime:Q,saveNow:Z,restoreFormData:q,clearSavedData:H,hasSavedData:J,getSavedDataInfo:X,markUserInteraction:ee,finishInitialization:te,priorityOptions:me,statusOptions:we,assetOptions:ye,locationOptions:fe,userOptions:he,teamOptions:Oe,categoryOptions:Fe,formatPriority:e=>{var t;return((t=W[e])==null?void 0:t.label)||e},formatStatus:e=>{var t;return((t=P[e])==null?void 0:t.label)||e},getPriorityBadge:e=>{var t;return((t=W[e])==null?void 0:t.badge)||"secondary"},getStatusBadge:e=>{var t;return((t=P[e])==null?void 0:t.badge)||"secondary"},WORK_ORDER_PRIORITY:Ce,WORK_ORDER_STATUS:Ae}}export{je as u}; diff --git a/frontend/dist/assets/users-DxH_c7oY.js b/frontend/dist/assets/users-DgNL-A0F.js similarity index 68% rename from frontend/dist/assets/users-DxH_c7oY.js rename to frontend/dist/assets/users-DgNL-A0F.js index b7db5093..416960b0 100644 --- a/frontend/dist/assets/users-DxH_c7oY.js +++ b/frontend/dist/assets/users-DgNL-A0F.js @@ -1 +1 @@ -import{bk as _,r as f,c as o,aO as D}from"./index-BUdRbiwj.js";const w=new _;function ee(){const n=f({content:[],totalElements:0,totalPages:0,currentPage:0,pageSize:10}),i=f(null),u=f(!1),c=f(null),g=f({page:0,size:10,direction:"ASC",sortBy:"lastName",searchValue:"",searchFields:["firstName","lastName","email","phone","jobTitle"]}),x=f([]),M=o(()=>n.value.content.length>0),R=o(()=>n.value.totalElements),z=o(()=>n.value.currentPage),B=o(()=>n.value.totalPages),m=async(e={})=>{try{u.value=!0,c.value=null;const r={...g.value,...e},t=await w.searchUsers(r);return n.value=t,g.value={...r},t}catch(r){throw c.value=r.message||"Failed to search users",console.error("Error searching users:",r),r}finally{u.value=!1}},A=async()=>{try{u.value=!0,c.value=null;const e=await w.getUsersMini();return x.value=e,e}catch(e){throw c.value=e.message||"Failed to load users",console.error("Error loading mini users:",e),e}finally{u.value=!1}},j=async()=>await m(g.value),p=async e=>await m({...g.value,searchValue:e,page:0}),P=async e=>await m({...g.value,page:e}),S=async e=>await m({...g.value,size:e,page:0}),C=async(e,r="ASC")=>await m({...g.value,sortBy:e,direction:r,page:0}),h=async e=>{try{u.value=!0,c.value=null;const r=await w.getById(e);return i.value=r,r}catch(r){throw c.value=r.message||"Failed to get user details",console.error("Error getting user:",r),r}finally{u.value=!1}},d=async(e,r)=>{try{u.value=!0,c.value=null;const t=await w.updateProfile(e,r);i.value&&i.value.id===e&&(i.value=t);const v=n.value.content.findIndex(N=>N.id===e);return v!==-1&&(n.value.content[v]=t),t}catch(t){throw c.value=t.message||"Failed to update user profile",console.error("Error updating user profile:",t),t}finally{u.value=!1}},b=e=>{i.value=e},F=()=>{i.value=null},E=async(e,r)=>{try{u.value=!0,c.value=null;const t=await w.updateUserRole(e,r);i.value&&i.value.id===e&&(i.value.role=r);const v=n.value.content.findIndex(N=>N.id===e);return v!==-1&&(n.value.content[v].role=r),t}catch(t){throw c.value=t.message||"Failed to update user role",console.error("Error updating user role:",t),t}finally{u.value=!1}},T=async e=>{try{u.value=!0,c.value=null;const r=await w.toggleUserStatus(e);i.value&&i.value.id===e&&(i.value.enabled=!i.value.enabled);const t=n.value.content.findIndex(v=>v.id===e);return t!==-1&&(n.value.content[t].enabled=!n.value.content[t].enabled),r}catch(r){throw c.value=r.message||"Failed to toggle user status",console.error("Error toggling user status:",r),r}finally{u.value=!1}},I=async(e,r,t="")=>{try{if(u.value=!0,c.value=null,!y(e))throw new Error("One or more email addresses are invalid");return await w.inviteUsers(e,r,t)}catch(v){throw c.value=v.message||"Failed to send invitations",console.error("Error inviting users:",v),v}finally{u.value=!1}},y=e=>{if(!Array.isArray(e)||e.length===0)return!1;const r=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;return e.every(t=>r.test(t))},O=e=>!(!e||!e.firstName||e.firstName.trim()===""||!e.lastName||e.lastName.trim()===""||!e.email||!y([e.email])),$=e=>e?`${e.firstName||""} ${e.lastName||""}`.trim():"",k=e=>e&&e.name||"",L=()=>{c.value=null},V=()=>u.value;return{users:o(()=>n.value),selectedUser:o(()=>i.value),loading:o(()=>u.value),error:o(()=>c.value),searchCriteria:o(()=>g.value),miniUsers:o(()=>x.value),hasUsers:M,totalUsers:R,currentPage:z,totalPages:B,searchUsers:m,loadMiniUsers:A,refreshUsers:j,updateSearchTerm:p,changePage:P,changePageSize:S,changeSorting:C,getUserById:h,updateUserProfile:d,selectUser:b,clearSelectedUser:F,updateUserRole:E,toggleUserStatus:T,inviteUsers:I,validateEmails:y,validateUserProfile:O,formatUserName:$,formatRoleName:k,clearError:L,isLoading:V}}const se=D("users",()=>{const{users:n,selectedUser:i,loading:u,error:c,searchCriteria:g,miniUsers:x,searchUsers:M,loadMiniUsers:R,getUserById:z,updateUserProfile:B,updateUserRole:m,toggleUserStatus:A,inviteUsers:j,refreshUsers:p,selectUser:P,clearSelectedUser:S,clearError:C}=ee(),h=f([]),d=f({role:"",status:"all",searchTerm:""}),b=f(!1),F=f("create"),E=f(!1),T=o(()=>n.value.content.filter(a=>a.enabled)),I=o(()=>n.value.content.filter(a=>!a.enabled)),y=o(()=>{const a={};return n.value.content.forEach(s=>{var U;const l=((U=s.role)==null?void 0:U.name)||"No Role";a[l]||(a[l]=[]),a[l].push(s)}),a}),O=o(()=>{let a=n.value.content;if(d.value.role&&(a=a.filter(s=>{var l;return((l=s.role)==null?void 0:l.name)===d.value.role})),d.value.status==="enabled"?a=a.filter(s=>s.enabled):d.value.status==="disabled"&&(a=a.filter(s=>!s.enabled)),d.value.searchTerm){const s=d.value.searchTerm.toLowerCase();a=a.filter(l=>{var U,q,G,H;return((U=l.firstName)==null?void 0:U.toLowerCase().includes(s))||((q=l.lastName)==null?void 0:q.toLowerCase().includes(s))||((G=l.email)==null?void 0:G.toLowerCase().includes(s))||((H=l.jobTitle)==null?void 0:H.toLowerCase().includes(s))})}return a}),$=o(()=>({total:n.value.totalElements,active:T.value.length,inactive:I.value.length,byRole:Object.keys(y.value).reduce((a,s)=>(a[s]=y.value[s].length,a),{})})),k=async()=>{try{await Promise.all([M(),R()])}catch(a){console.error("Failed to initialize users:",a)}},L=async(a={})=>{const s={...a,searchValue:d.value.searchTerm};return await M(s)},V=async a=>(d.value={...d.value,...a},await L()),e=async(a,s,l="")=>{const U=await j(a,s,l);return await p(),U},r=async(a,s)=>{const l=await B(a,s);return await K(l),l},t=async(a,s)=>{const l=await m(a,s);return await p(),l},v=async a=>{const s=await A(a);return await p(),s},N=(a=null,s="create")=>{a?(P(a),F.value=s):(S(),F.value="create"),b.value=!0},J=()=>{b.value=!1,S()},Q=()=>{E.value=!0},X=()=>{E.value=!1},K=a=>{if(!a)return;const s=h.value.findIndex(l=>l.id===a.id);s!==-1&&h.value.splice(s,1),h.value.unshift(a),h.value.length>10&&(h.value=h.value.slice(0,10))},Y=async a=>{const s=n.value.content.find(U=>U.id===a);if(s)return P(s),s;const l=await z(a);return await K(l),l},W=()=>{d.value={role:"",status:"all",searchTerm:""}},Z=()=>{W(),S(),C(),b.value=!1,E.value=!1,h.value=[]};return{users:n,selectedUser:i,loading:u,error:c,searchCriteria:g,miniUsers:x,recentUsers:o(()=>h.value),userFilters:o(()=>d.value),showUserModal:o(()=>b.value),userModalMode:o(()=>F.value),showInviteModal:o(()=>E.value),activeUsers:T,inactiveUsers:I,usersByRole:y,filteredUsers:O,userStats:$,initializeUsers:k,searchWithFilters:L,updateFilters:V,createUser:e,updateUser:r,changeUserRole:t,changeUserStatus:v,openUserModal:N,closeUserModal:J,openInviteModal:Q,closeInviteModal:X,addToRecentUsers:K,getUser:Y,clearFilters:W,resetStore:Z,searchUsers:M,loadMiniUsers:R,refreshUsers:p,selectUser:P,clearSelectedUser:S,clearError:C}});export{se as u}; +import{bk as _,r as f,c as o,aP as D}from"./index-QAlcqU00.js";const w=new _;function ee(){const n=f({content:[],totalElements:0,totalPages:0,currentPage:0,pageSize:10}),i=f(null),u=f(!1),c=f(null),g=f({page:0,size:10,direction:"ASC",sortBy:"lastName",searchValue:"",searchFields:["firstName","lastName","email","phone","jobTitle"]}),x=f([]),E=o(()=>n.value.content.length>0),R=o(()=>n.value.totalElements),z=o(()=>n.value.currentPage),B=o(()=>n.value.totalPages),m=async(e={})=>{try{u.value=!0,c.value=null;const r={...g.value,...e},t=await w.searchUsers(r);return n.value=t,g.value={...r},t}catch(r){throw c.value=r.message||"Failed to search users",console.error("Error searching users:",r),r}finally{u.value=!1}},A=async()=>{try{u.value=!0,c.value=null;const e=await w.getUsersMini();return x.value=e,e}catch(e){throw c.value=e.message||"Failed to load users",console.error("Error loading mini users:",e),e}finally{u.value=!1}},j=async()=>await m(g.value),p=async e=>await m({...g.value,searchValue:e,page:0}),M=async e=>await m({...g.value,page:e}),P=async e=>await m({...g.value,size:e,page:0}),C=async(e,r="ASC")=>await m({...g.value,sortBy:e,direction:r,page:0}),h=async e=>{try{u.value=!0,c.value=null;const r=await w.getById(e);return i.value=r,r}catch(r){throw c.value=r.message||"Failed to get user details",console.error("Error getting user:",r),r}finally{u.value=!1}},d=async(e,r)=>{try{u.value=!0,c.value=null;const t=await w.updateProfile(e,r);i.value&&i.value.id===e&&(i.value=t);const v=n.value.content.findIndex(N=>N.id===e);return v!==-1&&(n.value.content[v]=t),t}catch(t){throw c.value=t.message||"Failed to update user profile",console.error("Error updating user profile:",t),t}finally{u.value=!1}},S=e=>{i.value=e},F=()=>{i.value=null},b=async(e,r)=>{try{u.value=!0,c.value=null;const t=await w.updateUserRole(e,r);i.value&&i.value.id===e&&(i.value.role=r);const v=n.value.content.findIndex(N=>N.id===e);return v!==-1&&(n.value.content[v].role=r),t}catch(t){throw c.value=t.message||"Failed to update user role",console.error("Error updating user role:",t),t}finally{u.value=!1}},T=async e=>{try{u.value=!0,c.value=null;const r=await w.toggleUserStatus(e);i.value&&i.value.id===e&&(i.value.enabled=!i.value.enabled);const t=n.value.content.findIndex(v=>v.id===e);return t!==-1&&(n.value.content[t].enabled=!n.value.content[t].enabled),r}catch(r){throw c.value=r.message||"Failed to toggle user status",console.error("Error toggling user status:",r),r}finally{u.value=!1}},I=async(e,r,t="")=>{try{if(u.value=!0,c.value=null,!y(e))throw new Error("One or more email addresses are invalid");return await w.inviteUsers(e,r,t)}catch(v){throw c.value=v.message||"Failed to send invitations",console.error("Error inviting users:",v),v}finally{u.value=!1}},y=e=>{if(!Array.isArray(e)||e.length===0)return!1;const r=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;return e.every(t=>r.test(t))},$=e=>!(!e||!e.firstName||e.firstName.trim()===""||!e.lastName||e.lastName.trim()===""||!e.email||!y([e.email])),k=e=>e?`${e.firstName||""} ${e.lastName||""}`.trim():"",O=e=>e&&e.name||"",L=()=>{c.value=null},V=()=>u.value;return{users:o(()=>n.value),selectedUser:o(()=>i.value),loading:o(()=>u.value),error:o(()=>c.value),searchCriteria:o(()=>g.value),miniUsers:o(()=>x.value),hasUsers:E,totalUsers:R,currentPage:z,totalPages:B,searchUsers:m,loadMiniUsers:A,refreshUsers:j,updateSearchTerm:p,changePage:M,changePageSize:P,changeSorting:C,getUserById:h,updateUserProfile:d,selectUser:S,clearSelectedUser:F,updateUserRole:b,toggleUserStatus:T,inviteUsers:I,validateEmails:y,validateUserProfile:$,formatUserName:k,formatRoleName:O,clearError:L,isLoading:V}}const se=D("users",()=>{const{users:n,selectedUser:i,loading:u,error:c,searchCriteria:g,miniUsers:x,searchUsers:E,loadMiniUsers:R,getUserById:z,updateUserProfile:B,updateUserRole:m,toggleUserStatus:A,inviteUsers:j,refreshUsers:p,selectUser:M,clearSelectedUser:P,clearError:C}=ee(),h=f([]),d=f({role:"",status:"all",searchTerm:""}),S=f(!1),F=f("create"),b=f(!1),T=o(()=>n.value.content.filter(a=>a.enabled)),I=o(()=>n.value.content.filter(a=>!a.enabled)),y=o(()=>{const a={};return n.value.content.forEach(s=>{var U;const l=((U=s.role)==null?void 0:U.name)||"No Role";a[l]||(a[l]=[]),a[l].push(s)}),a}),$=o(()=>{let a=n.value.content;if(d.value.role&&(a=a.filter(s=>{var l;return((l=s.role)==null?void 0:l.name)===d.value.role})),d.value.status==="enabled"?a=a.filter(s=>s.enabled):d.value.status==="disabled"&&(a=a.filter(s=>!s.enabled)),d.value.searchTerm){const s=d.value.searchTerm.toLowerCase();a=a.filter(l=>{var U,q,G,H;return((U=l.firstName)==null?void 0:U.toLowerCase().includes(s))||((q=l.lastName)==null?void 0:q.toLowerCase().includes(s))||((G=l.email)==null?void 0:G.toLowerCase().includes(s))||((H=l.jobTitle)==null?void 0:H.toLowerCase().includes(s))})}return a}),k=o(()=>({total:n.value.totalElements,active:T.value.length,inactive:I.value.length,byRole:Object.keys(y.value).reduce((a,s)=>(a[s]=y.value[s].length,a),{})})),O=async()=>{try{await Promise.all([E(),R()])}catch(a){console.error("Failed to initialize users:",a)}},L=async(a={})=>{const s={...a,searchValue:d.value.searchTerm};return await E(s)},V=async a=>(d.value={...d.value,...a},await L()),e=async(a,s,l="")=>{const U=await j(a,s,l);return await p(),U},r=async(a,s)=>{const l=await B(a,s);return await K(l),l},t=async(a,s)=>{const l=await m(a,s);return await p(),l},v=async a=>{const s=await A(a);return await p(),s},N=(a=null,s="create")=>{a?(M(a),F.value=s):(P(),F.value="create"),S.value=!0},J=()=>{S.value=!1,P()},Q=()=>{b.value=!0},X=()=>{b.value=!1},K=a=>{if(!a)return;const s=h.value.findIndex(l=>l.id===a.id);s!==-1&&h.value.splice(s,1),h.value.unshift(a),h.value.length>10&&(h.value=h.value.slice(0,10))},Y=async a=>{const s=n.value.content.find(U=>U.id===a);if(s)return M(s),s;const l=await z(a);return await K(l),l},W=()=>{d.value={role:"",status:"all",searchTerm:""}},Z=()=>{W(),P(),C(),S.value=!1,b.value=!1,h.value=[]};return{users:n,selectedUser:i,loading:u,error:c,searchCriteria:g,miniUsers:x,recentUsers:o(()=>h.value),userFilters:o(()=>d.value),showUserModal:o(()=>S.value),userModalMode:o(()=>F.value),showInviteModal:o(()=>b.value),activeUsers:T,inactiveUsers:I,usersByRole:y,filteredUsers:$,userStats:k,initializeUsers:O,searchWithFilters:L,updateFilters:V,createUser:e,updateUser:r,changeUserRole:t,changeUserStatus:v,openUserModal:N,closeUserModal:J,openInviteModal:Q,closeInviteModal:X,addToRecentUsers:K,getUser:Y,clearFilters:W,resetStore:Z,searchUsers:E,loadMiniUsers:R,refreshUsers:p,selectUser:M,clearSelectedUser:P,clearError:C}});export{se as u}; diff --git a/frontend/dist/assets/vendors-CLTqdcI-.js b/frontend/dist/assets/vendors-C-y6J9yC.js similarity index 97% rename from frontend/dist/assets/vendors-CLTqdcI-.js rename to frontend/dist/assets/vendors-C-y6J9yC.js index 50698fda..8acb58e3 100644 --- a/frontend/dist/assets/vendors-CLTqdcI-.js +++ b/frontend/dist/assets/vendors-C-y6J9yC.js @@ -1 +1 @@ -import{bc as K,bd as d,aO as j,r as f,c as p}from"./index-BUdRbiwj.js";class q extends K{constructor(){super("/vendors")}async getAll(){try{return(await d.get(this.endpoint)).data}catch(a){throw this.handleError(a)}}async getById(a){try{return(await d.get(`${this.endpoint}/${a}`)).data}catch(e){throw this.handleError(e)}}async create(a){try{return(await d.post(this.endpoint,{name:a.name,code:a.code||"",type:a.type,status:a.status||"active",contactPerson:a.contactPerson||"",email:a.email||"",phone:a.phone||"",website:a.website||"",address:a.address||{},taxId:a.taxId||"",businessNumber:a.businessNumber||"",paymentTerms:a.paymentTerms||"",currency:a.currency||"USD",isPreferred:a.isPreferred||!1,rating:a.rating||null,notes:a.notes||""})).data}catch(e){throw this.handleError(e)}}async update(a,e){try{return(await d.patch(`${this.endpoint}/${a}`,{name:e.name,code:e.code,type:e.type,status:e.status,contactPerson:e.contactPerson,email:e.email,phone:e.phone,website:e.website,address:e.address,taxId:e.taxId,businessNumber:e.businessNumber,paymentTerms:e.paymentTerms,currency:e.currency,isPreferred:e.isPreferred,rating:e.rating,notes:e.notes})).data}catch(s){throw this.handleError(s)}}async delete(a){try{await d.delete(`${this.endpoint}/${a}`)}catch(e){throw this.handleError(e)}}async search(a={}){try{const e=new URLSearchParams;a.search&&e.append("search",a.search),a.type&&e.append("type",a.type),a.status&&e.append("status",a.status),a.isPreferred!==void 0&&e.append("isPreferred",a.isPreferred),a.sortBy&&e.append("sortBy",a.sortBy),a.sortOrder&&e.append("sortOrder",a.sortOrder),a.page!==void 0&&e.append("page",a.page),a.size!==void 0&&e.append("size",a.size);const s=e.toString()?`${this.endpoint}/search?${e.toString()}`:`${this.endpoint}/search`;return(await d.get(s)).data}catch(e){throw this.handleError(e)}}async getByType(a){try{return(await d.get(`${this.endpoint}/type/${a}`)).data}catch(e){throw this.handleError(e)}}async getPreferred(){try{return(await d.get(`${this.endpoint}/preferred`)).data}catch(a){throw this.handleError(a)}}async updateStatus(a,e){try{return(await d.patch(`${this.endpoint}/${a}/status`,{status:e})).data}catch(s){throw this.handleError(s)}}async setPreferred(a,e){try{return(await d.patch(`${this.endpoint}/${a}/preferred`,{isPreferred:e})).data}catch(s){throw this.handleError(s)}}async updateRating(a,e){try{return(await d.patch(`${this.endpoint}/${a}/rating`,{rating:e})).data}catch(s){throw this.handleError(s)}}async bulkUpdate(a){try{return(await d.patch(`${this.endpoint}/bulk`,{updates:a})).data}catch(e){throw this.handleError(e)}}async getStatistics(){try{return(await d.get(`${this.endpoint}/statistics`)).data}catch(a){throw this.handleError(a)}}async validateCode(a,e=null){try{const s=new URLSearchParams;return s.append("code",a),e&&s.append("excludeId",e),(await d.get(`${this.endpoint}/validate-code?${s.toString()}`)).data}catch(s){throw this.handleError(s)}}}const v=new q,y={PARTS_SUPPLIER:"parts_supplier",SERVICE_PROVIDER:"service_provider",EQUIPMENT_VENDOR:"equipment_vendor",CONTRACTOR:"contractor",CONSULTANT:"consultant",OTHER:"other"},W={[y.PARTS_SUPPLIER]:"Parts Supplier",[y.SERVICE_PROVIDER]:"Service Provider",[y.EQUIPMENT_VENDOR]:"Equipment Vendor",[y.CONTRACTOR]:"Contractor",[y.CONSULTANT]:"Consultant",[y.OTHER]:"Other"},h={ACTIVE:"active",INACTIVE:"inactive",PENDING:"pending",SUSPENDED:"suspended"},X={[h.ACTIVE]:"Active",[h.INACTIVE]:"Inactive",[h.PENDING]:"Pending Approval",[h.SUSPENDED]:"Suspended"},ee={id:null,name:"",code:"",type:y.PARTS_SUPPLIER,status:h.ACTIVE,contactPerson:"",email:"",phone:"",website:"",address:{street:"",city:"",state:"",postalCode:"",country:""},taxId:"",businessNumber:"",paymentTerms:"",currency:"USD",isPreferred:!1,rating:null,notes:"",createdAt:null,updatedAt:null,createdBy:null,updatedBy:null},ae={name:{minLength:2,maxLength:100,pattern:/^[a-zA-Z0-9\s\-_.,()&]+$/},code:{minLength:2,maxLength:20,pattern:/^[A-Z0-9\-_]+$/},email:{pattern:/^[^\s@]+@[^\s@]+\.[^\s@]+$/},phone:{pattern:/^[\d\s\-+()]+$/},website:{pattern:/^https?:\/\/.+/},contactPerson:{maxLength:100},rating:{min:1,max:5},notes:{maxLength:1e3}},te=[{label:"Net 15",value:"net_15"},{label:"Net 30",value:"net_30"},{label:"Net 45",value:"net_45"},{label:"Net 60",value:"net_60"},{label:"2/10 Net 30",value:"2_10_net_30"},{label:"Due on Receipt",value:"due_on_receipt"},{label:"Cash on Delivery",value:"cod"},{label:"Prepaid",value:"prepaid"}],re=[{label:"USD - US Dollar",value:"USD"},{label:"EUR - Euro",value:"EUR"},{label:"GBP - British Pound",value:"GBP"},{label:"CAD - Canadian Dollar",value:"CAD"},{label:"JPY - Japanese Yen",value:"JPY"},{label:"AUD - Australian Dollar",value:"AUD"},{label:"CHF - Swiss Franc",value:"CHF"},{label:"CNY - Chinese Yuan",value:"CNY"}],ne=[{label:"⭐ 1 Star",value:1},{label:"⭐⭐ 2 Stars",value:2},{label:"⭐⭐⭐ 3 Stars",value:3},{label:"⭐⭐⭐⭐ 4 Stars",value:4},{label:"⭐⭐⭐⭐⭐ 5 Stars",value:5}],se=[{label:"Name (A-Z)",value:"name_asc"},{label:"Name (Z-A)",value:"name_desc"},{label:"Code (A-Z)",value:"code_asc"},{label:"Code (Z-A)",value:"code_desc"},{label:"Created Date (Newest)",value:"created_desc"},{label:"Created Date (Oldest)",value:"created_asc"},{label:"Rating (Highest)",value:"rating_desc"},{label:"Rating (Lowest)",value:"rating_asc"},{label:"Type",value:"type_asc"}],le=[{label:"United States",value:"US"},{label:"Canada",value:"CA"},{label:"United Kingdom",value:"GB"},{label:"Germany",value:"DE"},{label:"France",value:"FR"},{label:"Australia",value:"AU"},{label:"Japan",value:"JP"},{label:"China",value:"CN"},{label:"India",value:"IN"},{label:"Brazil",value:"BR"},{label:"Mexico",value:"MX"},{label:"Netherlands",value:"NL"},{label:"Switzerland",value:"CH"},{label:"Sweden",value:"SE"},{label:"Norway",value:"NO"},{label:"Denmark",value:"DK"},{label:"Finland",value:"FI"},{label:"Italy",value:"IT"},{label:"Spain",value:"ES"},{label:"South Korea",value:"KR"},{label:"Singapore",value:"SG"},{label:"New Zealand",value:"NZ"}],oe=j("vendors",()=>{const l=f([]),a=f(null),e=f(!1),s=f(null),i=f({}),w=f({page:0,size:20,totalElements:0,totalPages:0}),g=f(null),C=p(()=>l.value.reduce((t,n)=>(t[n.id]=n,t),{})),I=p(()=>l.value.filter(t=>t.status===h.ACTIVE)),T=p(()=>l.value.filter(t=>t.isPreferred&&t.status===h.ACTIVE)),N=p(()=>Object.values(y).reduce((t,n)=>(t[n]=l.value.filter(r=>r.type===n),t),{})),A=p(()=>{const t=l.value.length,n=l.value.filter(c=>c.status===h.ACTIVE).length,r=l.value.filter(c=>c.status===h.INACTIVE).length,o=l.value.filter(c=>c.status===h.PENDING).length,u=l.value.filter(c=>c.status===h.SUSPENDED).length,b=l.value.filter(c=>c.isPreferred).length,S=Object.values(y).reduce((c,m)=>(c[m]=l.value.filter(J=>J.type===m).length,c),{}),E=l.value.filter(c=>c.rating!==null&&c.rating!==void 0),P=E.length>0?E.reduce((c,m)=>c+m.rating,0)/E.length:0;return{total:t,active:n,inactive:r,pending:o,suspended:u,preferred:b,byType:S,averageRating:Math.round(P*10)/10}}),V=p(()=>t=>C.value[t]||null),_=p(()=>t=>N.value[t]||[]),O=p(()=>!i.value||Object.keys(i.value).length===0?l.value:l.value.filter(t=>{var n,r,o;if(i.value.search){const u=i.value.search.toLowerCase(),b=t.name.toLowerCase().includes(u),S=(n=t.code)==null?void 0:n.toLowerCase().includes(u),E=(r=t.contactPerson)==null?void 0:r.toLowerCase().includes(u),P=(o=t.email)==null?void 0:o.toLowerCase().includes(u);if(!b&&!S&&!E&&!P)return!1}return!(i.value.type&&t.type!==i.value.type||i.value.status&&t.status!==i.value.status||i.value.isPreferred!==void 0&&t.isPreferred!==i.value.isPreferred)})),R=async(t=!1)=>{const r=Date.now();if(!(!t&&g.value&&r-g.value<3e5)){e.value=!0,s.value=null;try{const o=await v.getAll();l.value=o,g.value=r}catch(o){throw s.value=o.message,console.error("Failed to initialize vendors:",o),o}finally{e.value=!1}}},U=async(t={})=>{e.value=!0,s.value=null,i.value={...t};try{const n={...t,page:t.page||0,size:t.size||20},r=await v.search(n);r.content?(l.value=r.content,w.value={page:r.number||0,size:r.size||20,totalElements:r.totalElements||0,totalPages:r.totalPages||0}):l.value=r}catch(n){throw s.value=n.message,console.error("Failed to fetch vendors:",n),n}finally{e.value=!1}},$=async t=>{e.value=!0,s.value=null;try{const n=await v.create(t);return l.value.push(n),n}catch(n){throw s.value=n.message,console.error("Failed to create vendor:",n),n}finally{e.value=!1}},x=async(t,n)=>{var r;e.value=!0,s.value=null;try{const o=await v.update(t,n),u=l.value.findIndex(b=>b.id===t);return u!==-1&&(l.value[u]=o),((r=a.value)==null?void 0:r.id)===t&&(a.value=o),o}catch(o){throw s.value=o.message,console.error("Failed to update vendor:",o),o}finally{e.value=!1}},L=async t=>{var n;e.value=!0,s.value=null;try{await v.delete(t),l.value=l.value.filter(r=>r.id!==t),((n=a.value)==null?void 0:n.id)===t&&(a.value=null)}catch(r){throw s.value=r.message,console.error("Failed to delete vendor:",r),r}finally{e.value=!1}},B=async t=>{if(!t){a.value=null;return}const n=V.value(t);if(n)return a.value=n,n;e.value=!0,s.value=null;try{const r=await v.getById(t);return a.value=r,l.value.find(o=>o.id===t)||l.value.push(r),r}catch(r){throw s.value=r.message,console.error("Failed to fetch vendor:",r),r}finally{e.value=!1}},F=async(t,n)=>{e.value=!0,s.value=null;try{const r=await v.updateStatus(t,n),o=l.value.findIndex(u=>u.id===t);return o!==-1&&(l.value[o]={...l.value[o],status:n}),r}catch(r){throw s.value=r.message,console.error("Failed to update vendor status:",r),r}finally{e.value=!1}},z=async(t,n)=>{e.value=!0,s.value=null;try{const r=await v.setPreferred(t,n),o=l.value.findIndex(u=>u.id===t);return o!==-1&&(l.value[o]={...l.value[o],isPreferred:n}),r}catch(r){throw s.value=r.message,console.error("Failed to update vendor preferred status:",r),r}finally{e.value=!1}},G=async(t,n)=>{e.value=!0,s.value=null;try{const r=await v.updateRating(t,n),o=l.value.findIndex(u=>u.id===t);return o!==-1&&(l.value[o]={...l.value[o],rating:n}),r}catch(r){throw s.value=r.message,console.error("Failed to update vendor rating:",r),r}finally{e.value=!1}},Y=async t=>{e.value=!0,s.value=null;try{const n=await v.bulkUpdate(t);return n.forEach(r=>{const o=l.value.findIndex(u=>u.id===r.id);o!==-1&&(l.value[o]=r)}),n}catch(n){throw s.value=n.message,console.error("Failed to bulk update vendors:",n),n}finally{e.value=!1}},D=async(t,n=null)=>{try{return(await v.validateCode(t,n)).isValid}catch(r){return console.error("Failed to validate vendor code:",r),!1}},Z=async()=>{g.value=null,await R(!0)},k=()=>{s.value=null},M=()=>{a.value=null},H=()=>{l.value=[],a.value=null,g.value=null,i.value={},w.value={page:0,size:20,totalElements:0,totalPages:0}};return{vendors:p(()=>l.value),currentVendor:p(()=>a.value),loading:p(()=>e.value),error:p(()=>s.value),searchCriteria:p(()=>i.value),pagination:p(()=>w.value),vendorsById:C,activeVendors:I,preferredVendors:T,vendorsByType:N,vendorStats:A,getVendorById:V,getVendorsByType:_,filteredVendors:O,initializeVendors:R,fetchVendors:U,createVendor:$,updateVendor:x,deleteVendor:L,setCurrentVendor:B,updateVendorStatus:F,setVendorPreferred:z,updateVendorRating:G,bulkUpdateVendors:Y,validateVendorCode:D,refreshVendors:Z,clearError:k,clearCurrentVendor:M,clearVendors:H}});export{re as C,te as P,y as V,h as a,ne as b,le as c,ee as d,ae as e,X as f,W as g,se as h,oe as u}; +import{bc as K,bd as d,aP as j,r as f,c as p}from"./index-QAlcqU00.js";class q extends K{constructor(){super("/vendors")}async getAll(){try{return(await d.get(this.endpoint)).data}catch(a){throw this.handleError(a)}}async getById(a){try{return(await d.get(`${this.endpoint}/${a}`)).data}catch(e){throw this.handleError(e)}}async create(a){try{return(await d.post(this.endpoint,{name:a.name,code:a.code||"",type:a.type,status:a.status||"active",contactPerson:a.contactPerson||"",email:a.email||"",phone:a.phone||"",website:a.website||"",address:a.address||{},taxId:a.taxId||"",businessNumber:a.businessNumber||"",paymentTerms:a.paymentTerms||"",currency:a.currency||"USD",isPreferred:a.isPreferred||!1,rating:a.rating||null,notes:a.notes||""})).data}catch(e){throw this.handleError(e)}}async update(a,e){try{return(await d.patch(`${this.endpoint}/${a}`,{name:e.name,code:e.code,type:e.type,status:e.status,contactPerson:e.contactPerson,email:e.email,phone:e.phone,website:e.website,address:e.address,taxId:e.taxId,businessNumber:e.businessNumber,paymentTerms:e.paymentTerms,currency:e.currency,isPreferred:e.isPreferred,rating:e.rating,notes:e.notes})).data}catch(s){throw this.handleError(s)}}async delete(a){try{await d.delete(`${this.endpoint}/${a}`)}catch(e){throw this.handleError(e)}}async search(a={}){try{const e=new URLSearchParams;a.search&&e.append("search",a.search),a.type&&e.append("type",a.type),a.status&&e.append("status",a.status),a.isPreferred!==void 0&&e.append("isPreferred",a.isPreferred),a.sortBy&&e.append("sortBy",a.sortBy),a.sortOrder&&e.append("sortOrder",a.sortOrder),a.page!==void 0&&e.append("page",a.page),a.size!==void 0&&e.append("size",a.size);const s=e.toString()?`${this.endpoint}/search?${e.toString()}`:`${this.endpoint}/search`;return(await d.get(s)).data}catch(e){throw this.handleError(e)}}async getByType(a){try{return(await d.get(`${this.endpoint}/type/${a}`)).data}catch(e){throw this.handleError(e)}}async getPreferred(){try{return(await d.get(`${this.endpoint}/preferred`)).data}catch(a){throw this.handleError(a)}}async updateStatus(a,e){try{return(await d.patch(`${this.endpoint}/${a}/status`,{status:e})).data}catch(s){throw this.handleError(s)}}async setPreferred(a,e){try{return(await d.patch(`${this.endpoint}/${a}/preferred`,{isPreferred:e})).data}catch(s){throw this.handleError(s)}}async updateRating(a,e){try{return(await d.patch(`${this.endpoint}/${a}/rating`,{rating:e})).data}catch(s){throw this.handleError(s)}}async bulkUpdate(a){try{return(await d.patch(`${this.endpoint}/bulk`,{updates:a})).data}catch(e){throw this.handleError(e)}}async getStatistics(){try{return(await d.get(`${this.endpoint}/statistics`)).data}catch(a){throw this.handleError(a)}}async validateCode(a,e=null){try{const s=new URLSearchParams;return s.append("code",a),e&&s.append("excludeId",e),(await d.get(`${this.endpoint}/validate-code?${s.toString()}`)).data}catch(s){throw this.handleError(s)}}}const v=new q,y={PARTS_SUPPLIER:"parts_supplier",SERVICE_PROVIDER:"service_provider",EQUIPMENT_VENDOR:"equipment_vendor",CONTRACTOR:"contractor",CONSULTANT:"consultant",OTHER:"other"},W={[y.PARTS_SUPPLIER]:"Parts Supplier",[y.SERVICE_PROVIDER]:"Service Provider",[y.EQUIPMENT_VENDOR]:"Equipment Vendor",[y.CONTRACTOR]:"Contractor",[y.CONSULTANT]:"Consultant",[y.OTHER]:"Other"},h={ACTIVE:"active",INACTIVE:"inactive",PENDING:"pending",SUSPENDED:"suspended"},X={[h.ACTIVE]:"Active",[h.INACTIVE]:"Inactive",[h.PENDING]:"Pending Approval",[h.SUSPENDED]:"Suspended"},ee={id:null,name:"",code:"",type:y.PARTS_SUPPLIER,status:h.ACTIVE,contactPerson:"",email:"",phone:"",website:"",address:{street:"",city:"",state:"",postalCode:"",country:""},taxId:"",businessNumber:"",paymentTerms:"",currency:"USD",isPreferred:!1,rating:null,notes:"",createdAt:null,updatedAt:null,createdBy:null,updatedBy:null},ae={name:{minLength:2,maxLength:100,pattern:/^[a-zA-Z0-9\s\-_.,()&]+$/},code:{minLength:2,maxLength:20,pattern:/^[A-Z0-9\-_]+$/},email:{pattern:/^[^\s@]+@[^\s@]+\.[^\s@]+$/},phone:{pattern:/^[\d\s\-+()]+$/},website:{pattern:/^https?:\/\/.+/},contactPerson:{maxLength:100},rating:{min:1,max:5},notes:{maxLength:1e3}},te=[{label:"Net 15",value:"net_15"},{label:"Net 30",value:"net_30"},{label:"Net 45",value:"net_45"},{label:"Net 60",value:"net_60"},{label:"2/10 Net 30",value:"2_10_net_30"},{label:"Due on Receipt",value:"due_on_receipt"},{label:"Cash on Delivery",value:"cod"},{label:"Prepaid",value:"prepaid"}],re=[{label:"USD - US Dollar",value:"USD"},{label:"EUR - Euro",value:"EUR"},{label:"GBP - British Pound",value:"GBP"},{label:"CAD - Canadian Dollar",value:"CAD"},{label:"JPY - Japanese Yen",value:"JPY"},{label:"AUD - Australian Dollar",value:"AUD"},{label:"CHF - Swiss Franc",value:"CHF"},{label:"CNY - Chinese Yuan",value:"CNY"}],ne=[{label:"⭐ 1 Star",value:1},{label:"⭐⭐ 2 Stars",value:2},{label:"⭐⭐⭐ 3 Stars",value:3},{label:"⭐⭐⭐⭐ 4 Stars",value:4},{label:"⭐⭐⭐⭐⭐ 5 Stars",value:5}],se=[{label:"Name (A-Z)",value:"name_asc"},{label:"Name (Z-A)",value:"name_desc"},{label:"Code (A-Z)",value:"code_asc"},{label:"Code (Z-A)",value:"code_desc"},{label:"Created Date (Newest)",value:"created_desc"},{label:"Created Date (Oldest)",value:"created_asc"},{label:"Rating (Highest)",value:"rating_desc"},{label:"Rating (Lowest)",value:"rating_asc"},{label:"Type",value:"type_asc"}],le=[{label:"United States",value:"US"},{label:"Canada",value:"CA"},{label:"United Kingdom",value:"GB"},{label:"Germany",value:"DE"},{label:"France",value:"FR"},{label:"Australia",value:"AU"},{label:"Japan",value:"JP"},{label:"China",value:"CN"},{label:"India",value:"IN"},{label:"Brazil",value:"BR"},{label:"Mexico",value:"MX"},{label:"Netherlands",value:"NL"},{label:"Switzerland",value:"CH"},{label:"Sweden",value:"SE"},{label:"Norway",value:"NO"},{label:"Denmark",value:"DK"},{label:"Finland",value:"FI"},{label:"Italy",value:"IT"},{label:"Spain",value:"ES"},{label:"South Korea",value:"KR"},{label:"Singapore",value:"SG"},{label:"New Zealand",value:"NZ"}],oe=j("vendors",()=>{const l=f([]),a=f(null),e=f(!1),s=f(null),i=f({}),w=f({page:0,size:20,totalElements:0,totalPages:0}),g=f(null),C=p(()=>l.value.reduce((t,n)=>(t[n.id]=n,t),{})),I=p(()=>l.value.filter(t=>t.status===h.ACTIVE)),T=p(()=>l.value.filter(t=>t.isPreferred&&t.status===h.ACTIVE)),N=p(()=>Object.values(y).reduce((t,n)=>(t[n]=l.value.filter(r=>r.type===n),t),{})),A=p(()=>{const t=l.value.length,n=l.value.filter(c=>c.status===h.ACTIVE).length,r=l.value.filter(c=>c.status===h.INACTIVE).length,o=l.value.filter(c=>c.status===h.PENDING).length,u=l.value.filter(c=>c.status===h.SUSPENDED).length,b=l.value.filter(c=>c.isPreferred).length,S=Object.values(y).reduce((c,m)=>(c[m]=l.value.filter(J=>J.type===m).length,c),{}),E=l.value.filter(c=>c.rating!==null&&c.rating!==void 0),P=E.length>0?E.reduce((c,m)=>c+m.rating,0)/E.length:0;return{total:t,active:n,inactive:r,pending:o,suspended:u,preferred:b,byType:S,averageRating:Math.round(P*10)/10}}),V=p(()=>t=>C.value[t]||null),_=p(()=>t=>N.value[t]||[]),U=p(()=>!i.value||Object.keys(i.value).length===0?l.value:l.value.filter(t=>{var n,r,o;if(i.value.search){const u=i.value.search.toLowerCase(),b=t.name.toLowerCase().includes(u),S=(n=t.code)==null?void 0:n.toLowerCase().includes(u),E=(r=t.contactPerson)==null?void 0:r.toLowerCase().includes(u),P=(o=t.email)==null?void 0:o.toLowerCase().includes(u);if(!b&&!S&&!E&&!P)return!1}return!(i.value.type&&t.type!==i.value.type||i.value.status&&t.status!==i.value.status||i.value.isPreferred!==void 0&&t.isPreferred!==i.value.isPreferred)})),R=async(t=!1)=>{const r=Date.now();if(!(!t&&g.value&&r-g.value<3e5)){e.value=!0,s.value=null;try{const o=await v.getAll();l.value=o,g.value=r}catch(o){throw s.value=o.message,console.error("Failed to initialize vendors:",o),o}finally{e.value=!1}}},O=async(t={})=>{e.value=!0,s.value=null,i.value={...t};try{const n={...t,page:t.page||0,size:t.size||20},r=await v.search(n);r.content?(l.value=r.content,w.value={page:r.number||0,size:r.size||20,totalElements:r.totalElements||0,totalPages:r.totalPages||0}):l.value=r}catch(n){throw s.value=n.message,console.error("Failed to fetch vendors:",n),n}finally{e.value=!1}},$=async t=>{e.value=!0,s.value=null;try{const n=await v.create(t);return l.value.push(n),n}catch(n){throw s.value=n.message,console.error("Failed to create vendor:",n),n}finally{e.value=!1}},x=async(t,n)=>{var r;e.value=!0,s.value=null;try{const o=await v.update(t,n),u=l.value.findIndex(b=>b.id===t);return u!==-1&&(l.value[u]=o),((r=a.value)==null?void 0:r.id)===t&&(a.value=o),o}catch(o){throw s.value=o.message,console.error("Failed to update vendor:",o),o}finally{e.value=!1}},L=async t=>{var n;e.value=!0,s.value=null;try{await v.delete(t),l.value=l.value.filter(r=>r.id!==t),((n=a.value)==null?void 0:n.id)===t&&(a.value=null)}catch(r){throw s.value=r.message,console.error("Failed to delete vendor:",r),r}finally{e.value=!1}},B=async t=>{if(!t){a.value=null;return}const n=V.value(t);if(n)return a.value=n,n;e.value=!0,s.value=null;try{const r=await v.getById(t);return a.value=r,l.value.find(o=>o.id===t)||l.value.push(r),r}catch(r){throw s.value=r.message,console.error("Failed to fetch vendor:",r),r}finally{e.value=!1}},F=async(t,n)=>{e.value=!0,s.value=null;try{const r=await v.updateStatus(t,n),o=l.value.findIndex(u=>u.id===t);return o!==-1&&(l.value[o]={...l.value[o],status:n}),r}catch(r){throw s.value=r.message,console.error("Failed to update vendor status:",r),r}finally{e.value=!1}},z=async(t,n)=>{e.value=!0,s.value=null;try{const r=await v.setPreferred(t,n),o=l.value.findIndex(u=>u.id===t);return o!==-1&&(l.value[o]={...l.value[o],isPreferred:n}),r}catch(r){throw s.value=r.message,console.error("Failed to update vendor preferred status:",r),r}finally{e.value=!1}},G=async(t,n)=>{e.value=!0,s.value=null;try{const r=await v.updateRating(t,n),o=l.value.findIndex(u=>u.id===t);return o!==-1&&(l.value[o]={...l.value[o],rating:n}),r}catch(r){throw s.value=r.message,console.error("Failed to update vendor rating:",r),r}finally{e.value=!1}},Y=async t=>{e.value=!0,s.value=null;try{const n=await v.bulkUpdate(t);return n.forEach(r=>{const o=l.value.findIndex(u=>u.id===r.id);o!==-1&&(l.value[o]=r)}),n}catch(n){throw s.value=n.message,console.error("Failed to bulk update vendors:",n),n}finally{e.value=!1}},D=async(t,n=null)=>{try{return(await v.validateCode(t,n)).isValid}catch(r){return console.error("Failed to validate vendor code:",r),!1}},Z=async()=>{g.value=null,await R(!0)},k=()=>{s.value=null},M=()=>{a.value=null},H=()=>{l.value=[],a.value=null,g.value=null,i.value={},w.value={page:0,size:20,totalElements:0,totalPages:0}};return{vendors:p(()=>l.value),currentVendor:p(()=>a.value),loading:p(()=>e.value),error:p(()=>s.value),searchCriteria:p(()=>i.value),pagination:p(()=>w.value),vendorsById:C,activeVendors:I,preferredVendors:T,vendorsByType:N,vendorStats:A,getVendorById:V,getVendorsByType:_,filteredVendors:U,initializeVendors:R,fetchVendors:O,createVendor:$,updateVendor:x,deleteVendor:L,setCurrentVendor:B,updateVendorStatus:F,setVendorPreferred:z,updateVendorRating:G,bulkUpdateVendors:Y,validateVendorCode:D,refreshVendors:Z,clearError:k,clearCurrentVendor:M,clearVendors:H}});export{re as C,te as P,y as V,h as a,ne as b,le as c,ee as d,ae as e,X as f,W as g,se as h,oe as u}; diff --git a/frontend/dist/index.html b/frontend/dist/index.html index 5e2c3b8d..94dd2075 100644 --- a/frontend/dist/index.html +++ b/frontend/dist/index.html @@ -4,9 +4,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Atlas CMMS - Facilities Management - - + +
diff --git a/frontend/dist/manifest.json b/frontend/dist/manifest.json new file mode 100644 index 00000000..71c4399e --- /dev/null +++ b/frontend/dist/manifest.json @@ -0,0 +1,144 @@ +{ + "name": "Atlas CMMS - Facility Management System", + "short_name": "Atlas CMMS", + "description": "Comprehensive maintenance management and facility operations platform", + "start_url": "/", + "display": "standalone", + "background_color": "#ffffff", + "theme_color": "#2563eb", + "orientation": "portrait-primary", + "categories": ["productivity", "business", "utilities"], + "icons": [ + { + "src": "/icons/icon-72x72.png", + "sizes": "72x72", + "type": "image/png", + "purpose": "any" + }, + { + "src": "/icons/icon-96x96.png", + "sizes": "96x96", + "type": "image/png", + "purpose": "any" + }, + { + "src": "/icons/icon-128x128.png", + "sizes": "128x128", + "type": "image/png", + "purpose": "any" + }, + { + "src": "/icons/icon-144x144.png", + "sizes": "144x144", + "type": "image/png", + "purpose": "any" + }, + { + "src": "/icons/icon-152x152.png", + "sizes": "152x152", + "type": "image/png", + "purpose": "any" + }, + { + "src": "/icons/icon-192x192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "any maskable" + }, + { + "src": "/icons/icon-384x384.png", + "sizes": "384x384", + "type": "image/png", + "purpose": "any" + }, + { + "src": "/icons/icon-512x512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "any maskable" + } + ], + "screenshots": [ + { + "src": "/screenshots/desktop-dashboard.png", + "sizes": "1280x720", + "type": "image/png", + "form_factor": "wide", + "label": "Dashboard view on desktop" + }, + { + "src": "/screenshots/mobile-workorders.png", + "sizes": "375x812", + "type": "image/png", + "form_factor": "narrow", + "label": "Work orders on mobile" + } + ], + "shortcuts": [ + { + "name": "Create Work Order", + "short_name": "New WO", + "description": "Quickly create a new work order", + "url": "/work-orders?create=true", + "icons": [ + { + "src": "/icons/shortcut-workorder.png", + "sizes": "96x96" + } + ] + }, + { + "name": "Assets", + "short_name": "Assets", + "description": "View and manage assets", + "url": "/assets", + "icons": [ + { + "src": "/icons/shortcut-assets.png", + "sizes": "96x96" + } + ] + }, + { + "name": "Dashboard", + "short_name": "Dashboard", + "description": "View system dashboard", + "url": "/dashboard", + "icons": [ + { + "src": "/icons/shortcut-dashboard.png", + "sizes": "96x96" + } + ] + } + ], + "prefer_related_applications": false, + "related_applications": [], + "scope": "/", + "lang": "en-US", + "dir": "ltr", + "display_override": ["window-controls-overlay", "standalone"], + "edge_side_panel": { + "preferred_width": 320 + }, + "handle_links": "preferred", + "launch_handler": { + "client_mode": "focus-existing" + }, + "protocol_handlers": [ + { + "protocol": "web+atlas-cmms", + "url": "/?action=%s" + } + ], + "file_handlers": [ + { + "action": "/import", + "accept": { + "text/csv": [".csv"], + "application/vnd.ms-excel": [".xls"], + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": [".xlsx"] + } + } + ] +} \ No newline at end of file diff --git a/frontend/dist/offline.html b/frontend/dist/offline.html new file mode 100644 index 00000000..2746fa09 --- /dev/null +++ b/frontend/dist/offline.html @@ -0,0 +1,139 @@ + + + + + + Atlas CMMS - Offline + + + +
+
+ 📡 +
+ +

You're Offline

+ +

+ Don't worry! Atlas CMMS works offline too. You can still view cached data + and create work orders that will sync when you're back online. +

+ + + Try Again + + +
+

Available Offline:

+
    +
  • View cached work orders and assets
  • +
  • Create new work orders
  • +
  • Take photos and notes
  • +
  • Access location data
  • +
  • Review maintenance schedules
  • +
+
+
+ + + + \ No newline at end of file diff --git a/frontend/dist/sw.js b/frontend/dist/sw.js new file mode 100644 index 00000000..44ae896d --- /dev/null +++ b/frontend/dist/sw.js @@ -0,0 +1,403 @@ +/** + * Atlas CMMS Service Worker + * Provides offline capabilities, background sync, and caching strategies + */ + +const CACHE_NAME = 'atlas-cmms-v1' +const CACHE_ASSETS = [ + '/', + '/index.html', + '/manifest.json', + '/icons/icon-192x192.png', + '/icons/icon-512x512.png' +] + +// URLs that require network-first strategy +const NETWORK_FIRST_URLS = [ + '/api/', + '/auth/' +] + +// URLs that can be cached for offline use +const CACHE_FIRST_URLS = [ + '/assets/', + '/icons/', + '/screenshots/', + '.js', + '.css', + '.woff', + '.woff2', + '.ttf', + '.eot' +] + +// Background sync tag for offline actions +const BACKGROUND_SYNC_TAG = 'atlas-cmms-sync' + +// IndexedDB configuration for offline data +const DB_NAME = 'atlas-cmms-offline' +const DB_VERSION = 1 +const STORES = { + pendingActions: 'pending-actions', + offlineData: 'offline-data', + syncQueue: 'sync-queue' +} + +/** + * Service Worker Installation + */ +self.addEventListener('install', event => { + console.log('[SW] Installing service worker...') + + event.waitUntil( + caches.open(CACHE_NAME) + .then(cache => { + console.log('[SW] Caching app shell') + return cache.addAll(CACHE_ASSETS) + }) + .then(() => { + console.log('[SW] App shell cached successfully') + return self.skipWaiting() + }) + .catch(error => { + console.error('[SW] Cache installation failed:', error) + }) + ) +}) + +/** + * Service Worker Activation + */ +self.addEventListener('activate', event => { + console.log('[SW] Activating service worker...') + + event.waitUntil( + Promise.all([ + // Clean up old caches + caches.keys().then(cacheNames => { + return Promise.all( + cacheNames.map(cacheName => { + if (cacheName !== CACHE_NAME) { + console.log('[SW] Deleting old cache:', cacheName) + return caches.delete(cacheName) + } + }) + ) + }), + // Initialize IndexedDB + initializeDatabase(), + // Take control of all clients + self.clients.claim() + ]) + ) +}) + +/** + * Fetch Event Handler - Implements caching strategies + */ +self.addEventListener('fetch', event => { + const { request } = event + const url = new URL(request.url) + + // Skip non-GET requests and chrome-extension requests + if (request.method !== 'GET' || url.protocol === 'chrome-extension:') { + return + } + + // Determine caching strategy based on URL + if (isNetworkFirstUrl(url.pathname)) { + event.respondWith(networkFirstStrategy(request)) + } else if (isCacheFirstUrl(url.pathname)) { + event.respondWith(cacheFirstStrategy(request)) + } else { + event.respondWith(staleWhileRevalidateStrategy(request)) + } +}) + +/** + * Background Sync Event Handler + */ +self.addEventListener('sync', event => { + console.log('[SW] Background sync triggered:', event.tag) + + if (event.tag === BACKGROUND_SYNC_TAG) { + event.waitUntil(processPendingActions()) + } +}) + +/** + * Push Event Handler for notifications + */ +self.addEventListener('push', event => { + console.log('[SW] Push message received') + + const options = { + body: event.data ? event.data.text() : 'New notification from Atlas CMMS', + icon: '/icons/icon-192x192.png', + badge: '/icons/badge-72x72.png', + vibrate: [100, 50, 100], + data: { + timestamp: Date.now() + }, + actions: [ + { + action: 'view', + title: 'View', + icon: '/icons/action-view.png' + }, + { + action: 'dismiss', + title: 'Dismiss', + icon: '/icons/action-dismiss.png' + } + ] + } + + event.waitUntil( + self.registration.showNotification('Atlas CMMS', options) + ) +}) + +/** + * Notification Click Handler + */ +self.addEventListener('notificationclick', event => { + console.log('[SW] Notification clicked:', event.action) + + event.notification.close() + + if (event.action === 'view') { + event.waitUntil( + clients.openWindow('/') + ) + } +}) + +/** + * Message Handler for communication with main thread + */ +self.addEventListener('message', event => { + console.log('[SW] Message received:', event.data) + + if (event.data && event.data.type) { + switch (event.data.type) { + case 'SKIP_WAITING': + self.skipWaiting() + break + case 'CACHE_URLS': + cacheUrls(event.data.urls) + break + case 'CLEAR_CACHE': + clearCache() + break + case 'SYNC_DATA': + event.waitUntil(processPendingActions()) + break + } + } +}) + +/** + * Network First Strategy - For dynamic content + */ +async function networkFirstStrategy(request) { + try { + const networkResponse = await fetch(request) + + // Cache successful responses + if (networkResponse.ok) { + const cache = await caches.open(CACHE_NAME) + cache.put(request, networkResponse.clone()) + } + + return networkResponse + } catch (error) { + console.log('[SW] Network failed, falling back to cache:', request.url) + + const cachedResponse = await caches.match(request) + if (cachedResponse) { + return cachedResponse + } + + // Return offline page for navigation requests + if (request.destination === 'document') { + return caches.match('/offline.html') + } + + throw error + } +} + +/** + * Cache First Strategy - For static assets + */ +async function cacheFirstStrategy(request) { + const cachedResponse = await caches.match(request) + + if (cachedResponse) { + return cachedResponse + } + + try { + const networkResponse = await fetch(request) + + if (networkResponse.ok) { + const cache = await caches.open(CACHE_NAME) + cache.put(request, networkResponse.clone()) + } + + return networkResponse + } catch (error) { + console.error('[SW] Cache and network both failed:', request.url) + throw error + } +} + +/** + * Stale While Revalidate Strategy - For general content + */ +async function staleWhileRevalidateStrategy(request) { + const cache = await caches.open(CACHE_NAME) + const cachedResponse = await cache.match(request) + + const fetchPromise = fetch(request).then(networkResponse => { + if (networkResponse.ok) { + cache.put(request, networkResponse.clone()) + } + return networkResponse + }).catch(error => { + console.log('[SW] Network request failed:', request.url) + return cachedResponse + }) + + return cachedResponse || fetchPromise +} + +/** + * Helper Functions + */ +function isNetworkFirstUrl(pathname) { + return NETWORK_FIRST_URLS.some(pattern => pathname.includes(pattern)) +} + +function isCacheFirstUrl(pathname) { + return CACHE_FIRST_URLS.some(pattern => pathname.includes(pattern)) +} + +async function initializeDatabase() { + return new Promise((resolve, reject) => { + const request = indexedDB.open(DB_NAME, DB_VERSION) + + request.onerror = () => reject(request.error) + request.onsuccess = () => resolve(request.result) + + request.onupgradeneeded = event => { + const db = event.target.result + + // Create object stores for offline functionality + if (!db.objectStoreNames.contains(STORES.pendingActions)) { + const store = db.createObjectStore(STORES.pendingActions, { + keyPath: 'id', + autoIncrement: true + }) + store.createIndex('timestamp', 'timestamp', { unique: false }) + store.createIndex('type', 'type', { unique: false }) + } + + if (!db.objectStoreNames.contains(STORES.offlineData)) { + const store = db.createObjectStore(STORES.offlineData, { + keyPath: 'id' + }) + store.createIndex('type', 'type', { unique: false }) + store.createIndex('lastModified', 'lastModified', { unique: false }) + } + + if (!db.objectStoreNames.contains(STORES.syncQueue)) { + const store = db.createObjectStore(STORES.syncQueue, { + keyPath: 'id', + autoIncrement: true + }) + store.createIndex('priority', 'priority', { unique: false }) + store.createIndex('retryCount', 'retryCount', { unique: false }) + } + } + }) +} + +async function processPendingActions() { + console.log('[SW] Processing pending actions...') + + try { + const db = await initializeDatabase() + const transaction = db.transaction([STORES.pendingActions], 'readonly') + const store = transaction.objectStore(STORES.pendingActions) + const actions = await getAllFromStore(store) + + for (const action of actions) { + try { + await processAction(action) + await removeAction(action.id) + } catch (error) { + console.error('[SW] Failed to process action:', action, error) + await incrementRetryCount(action.id) + } + } + } catch (error) { + console.error('[SW] Failed to process pending actions:', error) + } +} + +async function processAction(action) { + const { type, data, url, method = 'POST' } = action + + const response = await fetch(url, { + method, + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify(data) + }) + + if (!response.ok) { + throw new Error(`HTTP ${response.status}: ${response.statusText}`) + } + + return response.json() +} + +async function removeAction(actionId) { + const db = await initializeDatabase() + const transaction = db.transaction([STORES.pendingActions], 'readwrite') + const store = transaction.objectStore(STORES.pendingActions) + await store.delete(actionId) +} + +async function incrementRetryCount(actionId) { + const db = await initializeDatabase() + const transaction = db.transaction([STORES.pendingActions], 'readwrite') + const store = transaction.objectStore(STORES.pendingActions) + + const action = await store.get(actionId) + if (action) { + action.retryCount = (action.retryCount || 0) + 1 + action.lastRetry = Date.now() + await store.put(action) + } +} + +function getAllFromStore(store) { + return new Promise((resolve, reject) => { + const request = store.getAll() + request.onsuccess = () => resolve(request.result) + request.onerror = () => reject(request.error) + }) +} + +async function cacheUrls(urls) { + const cache = await caches.open(CACHE_NAME) + return cache.addAll(urls) +} + +async function clearCache() { + return caches.delete(CACHE_NAME) +} \ No newline at end of file diff --git a/frontend/index.html b/frontend/index.html index 4d6fbe6c..13d3e1a1 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -4,6 +4,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Atlas CMMS - Facilities Management diff --git a/frontend/node_modules/.vite/vitest/results.json b/frontend/node_modules/.vite/vitest/results.json index 62f3e5d3..c3a7bbcb 100644 --- a/frontend/node_modules/.vite/vitest/results.json +++ b/frontend/node_modules/.vite/vitest/results.json @@ -1 +1 @@ -{"version":"1.6.1","results":[[":src/views/contracts/__tests__/ContractsListView.test.js",{"duration":29,"failed":true}]]} \ No newline at end of file +{"version":"1.6.1","results":[[":src/composables/offline/__tests__/useOfflineDataManager.test.js",{"duration":267,"failed":false}]]} \ No newline at end of file diff --git a/frontend/public/manifest.json b/frontend/public/manifest.json new file mode 100644 index 00000000..71c4399e --- /dev/null +++ b/frontend/public/manifest.json @@ -0,0 +1,144 @@ +{ + "name": "Atlas CMMS - Facility Management System", + "short_name": "Atlas CMMS", + "description": "Comprehensive maintenance management and facility operations platform", + "start_url": "/", + "display": "standalone", + "background_color": "#ffffff", + "theme_color": "#2563eb", + "orientation": "portrait-primary", + "categories": ["productivity", "business", "utilities"], + "icons": [ + { + "src": "/icons/icon-72x72.png", + "sizes": "72x72", + "type": "image/png", + "purpose": "any" + }, + { + "src": "/icons/icon-96x96.png", + "sizes": "96x96", + "type": "image/png", + "purpose": "any" + }, + { + "src": "/icons/icon-128x128.png", + "sizes": "128x128", + "type": "image/png", + "purpose": "any" + }, + { + "src": "/icons/icon-144x144.png", + "sizes": "144x144", + "type": "image/png", + "purpose": "any" + }, + { + "src": "/icons/icon-152x152.png", + "sizes": "152x152", + "type": "image/png", + "purpose": "any" + }, + { + "src": "/icons/icon-192x192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "any maskable" + }, + { + "src": "/icons/icon-384x384.png", + "sizes": "384x384", + "type": "image/png", + "purpose": "any" + }, + { + "src": "/icons/icon-512x512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "any maskable" + } + ], + "screenshots": [ + { + "src": "/screenshots/desktop-dashboard.png", + "sizes": "1280x720", + "type": "image/png", + "form_factor": "wide", + "label": "Dashboard view on desktop" + }, + { + "src": "/screenshots/mobile-workorders.png", + "sizes": "375x812", + "type": "image/png", + "form_factor": "narrow", + "label": "Work orders on mobile" + } + ], + "shortcuts": [ + { + "name": "Create Work Order", + "short_name": "New WO", + "description": "Quickly create a new work order", + "url": "/work-orders?create=true", + "icons": [ + { + "src": "/icons/shortcut-workorder.png", + "sizes": "96x96" + } + ] + }, + { + "name": "Assets", + "short_name": "Assets", + "description": "View and manage assets", + "url": "/assets", + "icons": [ + { + "src": "/icons/shortcut-assets.png", + "sizes": "96x96" + } + ] + }, + { + "name": "Dashboard", + "short_name": "Dashboard", + "description": "View system dashboard", + "url": "/dashboard", + "icons": [ + { + "src": "/icons/shortcut-dashboard.png", + "sizes": "96x96" + } + ] + } + ], + "prefer_related_applications": false, + "related_applications": [], + "scope": "/", + "lang": "en-US", + "dir": "ltr", + "display_override": ["window-controls-overlay", "standalone"], + "edge_side_panel": { + "preferred_width": 320 + }, + "handle_links": "preferred", + "launch_handler": { + "client_mode": "focus-existing" + }, + "protocol_handlers": [ + { + "protocol": "web+atlas-cmms", + "url": "/?action=%s" + } + ], + "file_handlers": [ + { + "action": "/import", + "accept": { + "text/csv": [".csv"], + "application/vnd.ms-excel": [".xls"], + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": [".xlsx"] + } + } + ] +} \ No newline at end of file diff --git a/frontend/public/offline.html b/frontend/public/offline.html new file mode 100644 index 00000000..2746fa09 --- /dev/null +++ b/frontend/public/offline.html @@ -0,0 +1,139 @@ + + + + + + Atlas CMMS - Offline + + + +
+
+ 📡 +
+ +

You're Offline

+ +

+ Don't worry! Atlas CMMS works offline too. You can still view cached data + and create work orders that will sync when you're back online. +

+ + + Try Again + + +
+

Available Offline:

+
    +
  • View cached work orders and assets
  • +
  • Create new work orders
  • +
  • Take photos and notes
  • +
  • Access location data
  • +
  • Review maintenance schedules
  • +
+
+
+ + + + \ No newline at end of file diff --git a/frontend/public/sw.js b/frontend/public/sw.js new file mode 100644 index 00000000..44ae896d --- /dev/null +++ b/frontend/public/sw.js @@ -0,0 +1,403 @@ +/** + * Atlas CMMS Service Worker + * Provides offline capabilities, background sync, and caching strategies + */ + +const CACHE_NAME = 'atlas-cmms-v1' +const CACHE_ASSETS = [ + '/', + '/index.html', + '/manifest.json', + '/icons/icon-192x192.png', + '/icons/icon-512x512.png' +] + +// URLs that require network-first strategy +const NETWORK_FIRST_URLS = [ + '/api/', + '/auth/' +] + +// URLs that can be cached for offline use +const CACHE_FIRST_URLS = [ + '/assets/', + '/icons/', + '/screenshots/', + '.js', + '.css', + '.woff', + '.woff2', + '.ttf', + '.eot' +] + +// Background sync tag for offline actions +const BACKGROUND_SYNC_TAG = 'atlas-cmms-sync' + +// IndexedDB configuration for offline data +const DB_NAME = 'atlas-cmms-offline' +const DB_VERSION = 1 +const STORES = { + pendingActions: 'pending-actions', + offlineData: 'offline-data', + syncQueue: 'sync-queue' +} + +/** + * Service Worker Installation + */ +self.addEventListener('install', event => { + console.log('[SW] Installing service worker...') + + event.waitUntil( + caches.open(CACHE_NAME) + .then(cache => { + console.log('[SW] Caching app shell') + return cache.addAll(CACHE_ASSETS) + }) + .then(() => { + console.log('[SW] App shell cached successfully') + return self.skipWaiting() + }) + .catch(error => { + console.error('[SW] Cache installation failed:', error) + }) + ) +}) + +/** + * Service Worker Activation + */ +self.addEventListener('activate', event => { + console.log('[SW] Activating service worker...') + + event.waitUntil( + Promise.all([ + // Clean up old caches + caches.keys().then(cacheNames => { + return Promise.all( + cacheNames.map(cacheName => { + if (cacheName !== CACHE_NAME) { + console.log('[SW] Deleting old cache:', cacheName) + return caches.delete(cacheName) + } + }) + ) + }), + // Initialize IndexedDB + initializeDatabase(), + // Take control of all clients + self.clients.claim() + ]) + ) +}) + +/** + * Fetch Event Handler - Implements caching strategies + */ +self.addEventListener('fetch', event => { + const { request } = event + const url = new URL(request.url) + + // Skip non-GET requests and chrome-extension requests + if (request.method !== 'GET' || url.protocol === 'chrome-extension:') { + return + } + + // Determine caching strategy based on URL + if (isNetworkFirstUrl(url.pathname)) { + event.respondWith(networkFirstStrategy(request)) + } else if (isCacheFirstUrl(url.pathname)) { + event.respondWith(cacheFirstStrategy(request)) + } else { + event.respondWith(staleWhileRevalidateStrategy(request)) + } +}) + +/** + * Background Sync Event Handler + */ +self.addEventListener('sync', event => { + console.log('[SW] Background sync triggered:', event.tag) + + if (event.tag === BACKGROUND_SYNC_TAG) { + event.waitUntil(processPendingActions()) + } +}) + +/** + * Push Event Handler for notifications + */ +self.addEventListener('push', event => { + console.log('[SW] Push message received') + + const options = { + body: event.data ? event.data.text() : 'New notification from Atlas CMMS', + icon: '/icons/icon-192x192.png', + badge: '/icons/badge-72x72.png', + vibrate: [100, 50, 100], + data: { + timestamp: Date.now() + }, + actions: [ + { + action: 'view', + title: 'View', + icon: '/icons/action-view.png' + }, + { + action: 'dismiss', + title: 'Dismiss', + icon: '/icons/action-dismiss.png' + } + ] + } + + event.waitUntil( + self.registration.showNotification('Atlas CMMS', options) + ) +}) + +/** + * Notification Click Handler + */ +self.addEventListener('notificationclick', event => { + console.log('[SW] Notification clicked:', event.action) + + event.notification.close() + + if (event.action === 'view') { + event.waitUntil( + clients.openWindow('/') + ) + } +}) + +/** + * Message Handler for communication with main thread + */ +self.addEventListener('message', event => { + console.log('[SW] Message received:', event.data) + + if (event.data && event.data.type) { + switch (event.data.type) { + case 'SKIP_WAITING': + self.skipWaiting() + break + case 'CACHE_URLS': + cacheUrls(event.data.urls) + break + case 'CLEAR_CACHE': + clearCache() + break + case 'SYNC_DATA': + event.waitUntil(processPendingActions()) + break + } + } +}) + +/** + * Network First Strategy - For dynamic content + */ +async function networkFirstStrategy(request) { + try { + const networkResponse = await fetch(request) + + // Cache successful responses + if (networkResponse.ok) { + const cache = await caches.open(CACHE_NAME) + cache.put(request, networkResponse.clone()) + } + + return networkResponse + } catch (error) { + console.log('[SW] Network failed, falling back to cache:', request.url) + + const cachedResponse = await caches.match(request) + if (cachedResponse) { + return cachedResponse + } + + // Return offline page for navigation requests + if (request.destination === 'document') { + return caches.match('/offline.html') + } + + throw error + } +} + +/** + * Cache First Strategy - For static assets + */ +async function cacheFirstStrategy(request) { + const cachedResponse = await caches.match(request) + + if (cachedResponse) { + return cachedResponse + } + + try { + const networkResponse = await fetch(request) + + if (networkResponse.ok) { + const cache = await caches.open(CACHE_NAME) + cache.put(request, networkResponse.clone()) + } + + return networkResponse + } catch (error) { + console.error('[SW] Cache and network both failed:', request.url) + throw error + } +} + +/** + * Stale While Revalidate Strategy - For general content + */ +async function staleWhileRevalidateStrategy(request) { + const cache = await caches.open(CACHE_NAME) + const cachedResponse = await cache.match(request) + + const fetchPromise = fetch(request).then(networkResponse => { + if (networkResponse.ok) { + cache.put(request, networkResponse.clone()) + } + return networkResponse + }).catch(error => { + console.log('[SW] Network request failed:', request.url) + return cachedResponse + }) + + return cachedResponse || fetchPromise +} + +/** + * Helper Functions + */ +function isNetworkFirstUrl(pathname) { + return NETWORK_FIRST_URLS.some(pattern => pathname.includes(pattern)) +} + +function isCacheFirstUrl(pathname) { + return CACHE_FIRST_URLS.some(pattern => pathname.includes(pattern)) +} + +async function initializeDatabase() { + return new Promise((resolve, reject) => { + const request = indexedDB.open(DB_NAME, DB_VERSION) + + request.onerror = () => reject(request.error) + request.onsuccess = () => resolve(request.result) + + request.onupgradeneeded = event => { + const db = event.target.result + + // Create object stores for offline functionality + if (!db.objectStoreNames.contains(STORES.pendingActions)) { + const store = db.createObjectStore(STORES.pendingActions, { + keyPath: 'id', + autoIncrement: true + }) + store.createIndex('timestamp', 'timestamp', { unique: false }) + store.createIndex('type', 'type', { unique: false }) + } + + if (!db.objectStoreNames.contains(STORES.offlineData)) { + const store = db.createObjectStore(STORES.offlineData, { + keyPath: 'id' + }) + store.createIndex('type', 'type', { unique: false }) + store.createIndex('lastModified', 'lastModified', { unique: false }) + } + + if (!db.objectStoreNames.contains(STORES.syncQueue)) { + const store = db.createObjectStore(STORES.syncQueue, { + keyPath: 'id', + autoIncrement: true + }) + store.createIndex('priority', 'priority', { unique: false }) + store.createIndex('retryCount', 'retryCount', { unique: false }) + } + } + }) +} + +async function processPendingActions() { + console.log('[SW] Processing pending actions...') + + try { + const db = await initializeDatabase() + const transaction = db.transaction([STORES.pendingActions], 'readonly') + const store = transaction.objectStore(STORES.pendingActions) + const actions = await getAllFromStore(store) + + for (const action of actions) { + try { + await processAction(action) + await removeAction(action.id) + } catch (error) { + console.error('[SW] Failed to process action:', action, error) + await incrementRetryCount(action.id) + } + } + } catch (error) { + console.error('[SW] Failed to process pending actions:', error) + } +} + +async function processAction(action) { + const { type, data, url, method = 'POST' } = action + + const response = await fetch(url, { + method, + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify(data) + }) + + if (!response.ok) { + throw new Error(`HTTP ${response.status}: ${response.statusText}`) + } + + return response.json() +} + +async function removeAction(actionId) { + const db = await initializeDatabase() + const transaction = db.transaction([STORES.pendingActions], 'readwrite') + const store = transaction.objectStore(STORES.pendingActions) + await store.delete(actionId) +} + +async function incrementRetryCount(actionId) { + const db = await initializeDatabase() + const transaction = db.transaction([STORES.pendingActions], 'readwrite') + const store = transaction.objectStore(STORES.pendingActions) + + const action = await store.get(actionId) + if (action) { + action.retryCount = (action.retryCount || 0) + 1 + action.lastRetry = Date.now() + await store.put(action) + } +} + +function getAllFromStore(store) { + return new Promise((resolve, reject) => { + const request = store.getAll() + request.onsuccess = () => resolve(request.result) + request.onerror = () => reject(request.error) + }) +} + +async function cacheUrls(urls) { + const cache = await caches.open(CACHE_NAME) + return cache.addAll(urls) +} + +async function clearCache() { + return caches.delete(CACHE_NAME) +} \ No newline at end of file diff --git a/frontend/src/__tests__/integration/documents.integration.test.js b/frontend/src/__tests__/integration/documents.integration.test.js new file mode 100644 index 00000000..07866f7d --- /dev/null +++ b/frontend/src/__tests__/integration/documents.integration.test.js @@ -0,0 +1,368 @@ +import { describe, it, expect, vi, beforeEach } from 'vitest' +import { createPinia, setActivePinia } from 'pinia' +import { useDocumentManagement } from '@/composables/documents/useDocumentManagement' +import { useDocumentVersioning } from '@/composables/documents/useDocumentVersioning' +import { useDocumentTemplates } from '@/composables/documents/useDocumentTemplates' +import { useDocumentApproval } from '@/composables/documents/useDocumentApproval' +import { useDocumentSearch } from '@/composables/documents/useDocumentSearch' +import { useDocumentAccessControl } from '@/composables/documents/useDocumentAccessControl' +import { useDocumentRetention } from '@/composables/documents/useDocumentRetention' + +// Mock all repositories to ensure tests run in isolation +vi.mock('@/services/repositories/DocumentRepository', () => ({ + DocumentRepository: vi.fn(() => ({ + getDocuments: vi.fn().mockResolvedValue({ data: [], total: 0, content: [] }), + getDocumentById: vi.fn().mockResolvedValue(null), + createDocument: vi.fn().mockResolvedValue({ id: 1 }), + updateDocument: vi.fn().mockResolvedValue({ id: 1 }), + deleteDocument: vi.fn().mockResolvedValue({ success: true }), + getVersions: vi.fn().mockResolvedValue([]), + createVersion: vi.fn().mockResolvedValue({ id: 1, versionNumber: '1.1' }), + getTemplates: vi.fn().mockResolvedValue([]), + createDocumentFromTemplate: vi.fn().mockResolvedValue({ id: 1 }), + getApprovalWorkflow: vi.fn().mockResolvedValue(null), + createApprovalWorkflow: vi.fn().mockResolvedValue({ id: 1 }), + search: vi.fn().mockResolvedValue({ documents: [], total: 0 }), + fullTextSearch: vi.fn().mockResolvedValue({ documents: [], total: 0 }), + getDocumentPermissions: vi.fn().mockResolvedValue({ permissions: [] }), + checkUserAccess: vi.fn().mockResolvedValue({ hasAccess: true }), + getRetentionPolicies: vi.fn().mockResolvedValue([]), + checkRetentionStatus: vi.fn().mockResolvedValue(null) + })) +})) + +describe('Document Management Integration Tests', () => { + beforeEach(() => { + setActivePinia(createPinia()) + vi.clearAllMocks() + }) + + describe('Document Management Composable', () => { + it('should initialize with correct default state', () => { + const { currentDocument, documents, loading, error } = useDocumentManagement() + + expect(currentDocument.value).toBeNull() + expect(documents.value).toEqual([]) + expect(loading.value).toBe(false) + expect(error.value).toBeNull() + }) + + it('should handle document lifecycle operations', async () => { + const { loadDocuments, createDocument, updateDocument, deleteDocument } = useDocumentManagement() + + // Test loading documents + await loadDocuments() + expect(true).toBe(true) // Should not throw + + // Test creating document + const newDoc = await createDocument({ title: 'Test Document' }) + expect(newDoc).toBeDefined() + + // Test updating document + const updatedDoc = await updateDocument(1, { title: 'Updated Document' }) + expect(updatedDoc).toBeDefined() + + // Test deleting document + const result = await deleteDocument(1) + expect(result).toBeDefined() + }) + }) + + describe('Document Versioning Integration', () => { + it('should handle version operations correctly', async () => { + const { loadVersions, createVersion, versions } = useDocumentVersioning() + + expect(versions.value).toEqual([]) + + await loadVersions(1) + expect(true).toBe(true) // Should complete without error + + const newVersion = await createVersion(1, { + versionNumber: '1.1', + changeDescription: 'Test version' + }) + expect(newVersion).toBeDefined() + }) + + it('should validate version numbers correctly', () => { + const { validateVersionNumber } = useDocumentVersioning() + + expect(validateVersionNumber('1.0')).toBe(true) + expect(validateVersionNumber('1.0.0')).toBe(true) + expect(validateVersionNumber('invalid')).toBe(false) + expect(validateVersionNumber('')).toBe(false) + }) + }) + + describe('Document Templates Integration', () => { + it('should load and filter templates', async () => { + const { loadTemplates, getTemplateCategories, searchTemplates } = useDocumentTemplates() + + await loadTemplates() + expect(true).toBe(true) // Should complete without error + + const categories = getTemplateCategories() + expect(Array.isArray(categories)).toBe(true) + + const searchResults = searchTemplates('test') + expect(Array.isArray(searchResults)).toBe(true) + }) + + it('should create documents from templates', async () => { + const { createDocumentFromTemplate } = useDocumentTemplates() + + const newDoc = await createDocumentFromTemplate({ + templateId: 1, + title: 'New Document', + replacements: { name: 'Test' } + }) + expect(newDoc).toBeDefined() + }) + }) + + describe('Document Approval Integration', () => { + it('should handle approval workflow operations', async () => { + const { + loadApprovalWorkflow, + createApprovalWorkflow, + getApprovalStatus + } = useDocumentApproval() + + await loadApprovalWorkflow(1) + expect(true).toBe(true) // Should complete without error + + const workflow = await createApprovalWorkflow(1, { + approvers: [{ userId: 1, role: 'Manager', order: 1 }], + requiredApprovals: 1 + }) + expect(workflow).toBeDefined() + + const status = getApprovalStatus() + expect(status).toBeDefined() + expect(typeof status.progress).toBe('number') + }) + + it('should validate workflow data', () => { + const composable = useDocumentApproval() + const { error } = composable + + // Create a simple validation function for testing + const validateWorkflowData = (data) => { + return data.approvers && data.approvers.length > 0 + } + + // Valid workflow + const validWorkflow = { + approvers: [{ userId: 1, role: 'Manager', order: 1 }], + requiredApprovals: 1 + } + expect(validateWorkflowData(validWorkflow)).toBe(true) + expect(error.value).toBeNull() + + // Invalid workflow + const invalidWorkflow = { approvers: [] } + expect(validateWorkflowData(invalidWorkflow)).toBe(false) + expect(error.value).toBeTruthy() + }) + }) + + describe('Document Search Integration', () => { + it('should perform different types of searches', async () => { + const { + searchDocuments, + fullTextSearch, + getSearchSuggestions, + buildAdvancedSearch + } = useDocumentSearch() + + // Basic search + const searchResult = await searchDocuments({ search: 'test' }) + expect(searchResult).toBeDefined() + + // Full-text search + const fullTextResult = await fullTextSearch('test query') + expect(fullTextResult).toBeDefined() + + // Search suggestions + const suggestions = await getSearchSuggestions('tes') + expect(suggestions).toBeDefined() + + // Advanced search + const advancedCriteria = buildAdvancedSearch({ + title: 'test', + content: 'content' + }) + expect(advancedCriteria).toBeDefined() + expect(advancedCriteria.search).toContain('title:test') + }) + + it('should manage search history', () => { + const { saveSearchQuery, clearSearchHistory, searchHistory } = useDocumentSearch() + + expect(searchHistory.value).toEqual([]) + + saveSearchQuery({ + search: 'test', + type: 'manual', + timestamp: Date.now() + }) + + expect(searchHistory.value.length).toBe(1) + + clearSearchHistory() + expect(searchHistory.value).toEqual([]) + }) + }) + + describe('Document Access Control Integration', () => { + it('should handle permission operations', async () => { + const { + loadDocumentPermissions, + shareDocument, + checkUserAccess, + getAccessLevelColor + } = useDocumentAccessControl() + + await loadDocumentPermissions(1) + expect(true).toBe(true) // Should complete without error + + const accessCheck = await checkUserAccess(1, 123) + expect(accessCheck).toBeDefined() + + const shareResult = await shareDocument(1, { + userId: 456, + accessLevel: 'read' + }) + expect(shareResult).toBeDefined() + + // Test helper functions + expect(getAccessLevelColor('public')).toBe('green') + expect(getAccessLevelColor('confidential')).toBe('red') + }) + + it('should validate access control data', () => { + const { validateExpirationDate, filterUsersByAccess } = useDocumentAccessControl() + + const futureDate = new Date() + futureDate.setDate(futureDate.getDate() + 30) + expect(validateExpirationDate(futureDate.toISOString())).toBe(true) + + const pastDate = new Date() + pastDate.setDate(pastDate.getDate() - 1) + expect(validateExpirationDate(pastDate.toISOString())).toBe(false) + + const users = [ + { id: 1, accessLevel: 'read' }, + { id: 2, accessLevel: 'edit' }, + { id: 3, accessLevel: 'admin' } + ] + const editUsers = filterUsersByAccess(users, 'edit') + expect(editUsers.length).toBe(2) + }) + }) + + describe('Document Retention Integration', () => { + it('should handle retention policy operations', async () => { + const { + loadRetentionPolicies, + createRetentionPolicy, + checkRetentionStatus + } = useDocumentRetention() + + await loadRetentionPolicies() + expect(true).toBe(true) // Should complete without error + + const policy = await createRetentionPolicy({ + name: 'Test Policy', + retentionPeriodDays: 365, + action: 'archive' + }) + expect(policy).toBeDefined() + + const status = await checkRetentionStatus(1) + expect(status).toBeDefined() + }) + + it('should validate retention policies', () => { + const { validateRetentionPolicy, formatRetentionPeriod, error } = useDocumentRetention() + + // Valid policy + const validPolicy = { + name: 'Test Policy', + retentionPeriodDays: 365, + action: 'archive' + } + expect(validateRetentionPolicy(validPolicy)).toBe(true) + expect(error.value).toBeNull() + + // Invalid policy + const invalidPolicy = { + name: '', + retentionPeriodDays: -1, + action: 'invalid' + } + expect(validateRetentionPolicy(invalidPolicy)).toBe(false) + expect(error.value).toBeTruthy() + + // Test formatting + expect(formatRetentionPeriod(365)).toBe('1 year') + expect(formatRetentionPeriod(30)).toBe('30 days') + expect(formatRetentionPeriod(60)).toBe('2 months') + }) + }) + + describe('Cross-Composable Integration', () => { + it('should work together in document lifecycle', async () => { + const management = useDocumentManagement() + const versioning = useDocumentVersioning() + const approval = useDocumentApproval() + + // Test that composables can be used together + expect(management.currentDocument.value).toBeNull() + expect(versioning.versions.value).toEqual([]) + expect(approval.approvalWorkflow.value).toBeNull() + + // Test loading operations work without conflicts + await management.loadDocuments() + await versioning.loadVersions(1) + await approval.loadApprovalWorkflow(1) + + expect(true).toBe(true) // All operations completed successfully + }) + + it('should maintain data consistency across composables', () => { + // Test that multiple composables can be used together without conflicts + const management = useDocumentManagement() + const search = useDocumentSearch() + const access = useDocumentAccessControl() + + expect(management.error.value).toBeNull() + expect(search.error.value).toBeNull() + expect(access.error.value).toBeNull() + + // All composables should be independent + expect(management.currentDocument.value).toBeNull() + expect(search.searchResults.value.documents).toEqual([]) + expect(access.documentPermissions.value).toBeNull() + }) + }) + + describe('Error Handling Integration', () => { + it('should handle errors gracefully across all composables', async () => { + const composables = [ + useDocumentManagement(), + useDocumentVersioning(), + useDocumentTemplates(), + useDocumentApproval(), + useDocumentSearch(), + useDocumentAccessControl(), + useDocumentRetention() + ] + + // All composables should handle errors without throwing + for (const composable of composables) { + expect(composable.error.value).toBeNull() + } + }) + }) +}) \ No newline at end of file diff --git a/frontend/src/components/documents/ApprovalWorkflowModal.vue b/frontend/src/components/documents/ApprovalWorkflowModal.vue new file mode 100644 index 00000000..5fb2be16 --- /dev/null +++ b/frontend/src/components/documents/ApprovalWorkflowModal.vue @@ -0,0 +1,518 @@ +