@ketvietlab/ketsuite 0.1.15 → 0.1.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/dist/cli.js +1 -1
  2. package/dist/modules/backend/design/charts.css +1 -66
  3. package/dist/modules/backend/design/client/backend-shell.d.mts +2 -2
  4. package/dist/modules/backend/design/client/backend-shell.d.mts.map +1 -1
  5. package/dist/modules/backend/design/client/backend-shell.mjs +1 -1
  6. package/dist/modules/backend/design/client/backend-shell.mjs.map +4 -4
  7. package/dist/modules/backend/design/content.css +0 -55
  8. package/dist/modules/backend/design/controls.css +1 -105
  9. package/dist/modules/backend/design/forms.css +5 -18
  10. package/dist/modules/backend/design/lists.css +0 -43
  11. package/dist/modules/backend/index.d.ts +2 -2
  12. package/dist/modules/backend/index.d.ts.map +1 -1
  13. package/dist/modules/backend/index.js +3 -2
  14. package/dist/modules/backend/index.js.map +1 -1
  15. package/dist/modules/channel_api/core.d.ts +1 -1
  16. package/dist/modules/channel_api/core.d.ts.map +1 -1
  17. package/dist/modules/channel_api/openapi.d.ts.map +1 -1
  18. package/dist/modules/channel_api/openapi.js +1 -0
  19. package/dist/modules/channel_api/openapi.js.map +1 -1
  20. package/dist/modules/channel_api/staff.d.ts +1 -0
  21. package/dist/modules/channel_api/staff.d.ts.map +1 -1
  22. package/dist/modules/channel_api/staff.js +19 -12
  23. package/dist/modules/channel_api/staff.js.map +1 -1
  24. package/dist/modules/crm_backend/screens/activity-planner.d.ts.map +1 -1
  25. package/dist/modules/crm_backend/screens/activity-planner.js +2 -2
  26. package/dist/modules/crm_backend/screens/activity-planner.js.map +1 -1
  27. package/dist/modules/crm_backend/screens/case-create.d.ts.map +1 -1
  28. package/dist/modules/crm_backend/screens/case-create.js +2 -2
  29. package/dist/modules/crm_backend/screens/case-create.js.map +1 -1
  30. package/dist/modules/crm_backend/screens/case-detail.d.ts.map +1 -1
  31. package/dist/modules/crm_backend/screens/case-detail.js +3 -3
  32. package/dist/modules/crm_backend/screens/case-detail.js.map +1 -1
  33. package/dist/modules/crm_backend/screens/cases-list.d.ts.map +1 -1
  34. package/dist/modules/crm_backend/screens/cases-list.js +2 -2
  35. package/dist/modules/crm_backend/screens/cases-list.js.map +1 -1
  36. package/dist/modules/crm_backend/screens/configuration.d.ts.map +1 -1
  37. package/dist/modules/crm_backend/screens/configuration.js +3 -3
  38. package/dist/modules/crm_backend/screens/configuration.js.map +1 -1
  39. package/dist/modules/crm_backend/screens/leaderboard.d.ts.map +1 -1
  40. package/dist/modules/crm_backend/screens/leaderboard.js +2 -2
  41. package/dist/modules/crm_backend/screens/leaderboard.js.map +1 -1
  42. package/dist/modules/crm_backend/screens/pipeline.d.ts.map +1 -1
  43. package/dist/modules/crm_backend/screens/pipeline.js +2 -2
  44. package/dist/modules/crm_backend/screens/pipeline.js.map +1 -1
  45. package/dist/modules/storage/routes.d.ts.map +1 -1
  46. package/dist/modules/storage/routes.js +3 -2
  47. package/dist/modules/storage/routes.js.map +1 -1
  48. package/dist/scaffold/index.js +1 -1
  49. package/dist/ui/charts.d.ts +5 -5
  50. package/dist/ui/charts.d.ts.map +1 -1
  51. package/dist/ui/charts.js +14 -18
  52. package/dist/ui/charts.js.map +1 -1
  53. package/dist/ui/data.d.ts +1 -1
  54. package/dist/ui/data.d.ts.map +1 -1
  55. package/dist/ui/data.js +4 -9
  56. package/dist/ui/data.js.map +1 -1
  57. package/dist/ui/index.d.ts +3 -3
  58. package/dist/ui/index.d.ts.map +1 -1
  59. package/dist/ui/index.js +2 -2
  60. package/dist/ui/index.js.map +1 -1
  61. package/dist/ui/layout.d.ts +8 -0
  62. package/dist/ui/layout.d.ts.map +1 -1
  63. package/dist/ui/layout.js +6 -5
  64. package/dist/ui/layout.js.map +1 -1
  65. package/dist/ui/navigation.d.ts +5 -0
  66. package/dist/ui/navigation.d.ts.map +1 -1
  67. package/dist/ui/navigation.js +16 -0
  68. package/dist/ui/navigation.js.map +1 -1
  69. package/dist/ui/surfaces.d.ts +3 -10
  70. package/dist/ui/surfaces.d.ts.map +1 -1
  71. package/dist/ui/surfaces.js +4 -10
  72. package/dist/ui/surfaces.js.map +1 -1
  73. package/dist/ui/timeframe.d.ts +5 -36
  74. package/dist/ui/timeframe.d.ts.map +1 -1
  75. package/dist/ui/timeframe.js +6 -35
  76. package/dist/ui/timeframe.js.map +1 -1
  77. package/package.json +4 -4
  78. package/dist/modules/backend/design/design-system.css +0 -2
package/dist/cli.js CHANGED
@@ -4,7 +4,7 @@ import { serveDeployment } from '@ketvietlab/ketjs';
4
4
  import { ketsuite } from './deployment.js';
5
5
  import { ensureDevelopmentAdmin } from './development.js';
6
6
  import { scaffoldKetsuite } from './scaffold/index.js';
7
- const VERSION = '0.1.15';
7
+ const VERSION = '0.1.17';
8
8
  const HELP = `KetSuite ${VERSION}
9
9
 
10
10
  Usage:
@@ -93,60 +93,7 @@
93
93
  white-space: nowrap;
94
94
  }
95
95
 
96
- /* Bars */
97
- [data-ui="bar-chart"] {
98
- display: grid;
99
- gap: var(--admin-gap-sm);
100
- min-inline-size: 0;
101
- }
102
- [data-ui="bar-chart-row"] {
103
- display: grid;
104
- grid-template-columns: minmax(6rem, 11rem) minmax(0, 1fr) auto;
105
- align-items: center;
106
- gap: var(--admin-gap-sm);
107
- font-size: var(--admin-size-sm);
108
- }
109
- [data-ui="bar-chart-label"] {
110
- min-inline-size: 0;
111
- overflow: hidden;
112
- text-overflow: ellipsis;
113
- white-space: nowrap;
114
- color: var(--admin-ink-secondary);
115
- }
116
- [data-ui="bar-chart-label"] a {
117
- color: inherit;
118
- text-decoration: none;
119
- }
120
- [data-ui="bar-chart-label"] a:hover {
121
- color: var(--admin-accent-text);
122
- text-decoration: underline;
123
- }
124
- [data-ui="bar-chart-track"] {
125
- display: block;
126
- block-size: 0.625rem;
127
- border-radius: var(--admin-radius-full);
128
- background: var(--admin-chart-track);
129
- overflow: hidden;
130
- }
131
- [data-ui="bar-chart-fill"] {
132
- display: block;
133
- block-size: 100%;
134
- min-inline-size: 2px;
135
- border-radius: inherit;
136
- }
137
- [data-ui="bar-chart-value"] {
138
- color: var(--admin-ink);
139
- font-variant-numeric: tabular-nums;
140
- white-space: nowrap;
141
- }
142
- [data-ui="bar-chart-scale"] {
143
- display: flex;
144
- justify-content: space-between;
145
- grid-column: 2 / -1;
146
- color: var(--admin-ink-muted);
147
- font-size: var(--admin-size-xs);
148
- font-variant-numeric: tabular-nums;
149
- }
96
+ /* Bars live in the Design System (`data-display/bar-chart`). */
150
97
 
151
98
  /* Change against a previous period.
152
99
 
@@ -186,27 +133,21 @@
186
133
 
187
134
  /* Series colours. The only place a chart hue is named — the canvas reads the
188
135
  same tokens at mount, so this stays the single source. */
189
- [data-ui="bar-chart-fill"][data-series="1"],
190
136
  [data-ui="chart-legend-item"][data-series="1"] [data-ui="chart-legend-swatch"] {
191
137
  background: var(--admin-chart-1);
192
138
  }
193
- [data-ui="bar-chart-fill"][data-series="2"],
194
139
  [data-ui="chart-legend-item"][data-series="2"] [data-ui="chart-legend-swatch"] {
195
140
  background: var(--admin-chart-2);
196
141
  }
197
- [data-ui="bar-chart-fill"][data-series="3"],
198
142
  [data-ui="chart-legend-item"][data-series="3"] [data-ui="chart-legend-swatch"] {
199
143
  background: var(--admin-chart-3);
200
144
  }
201
- [data-ui="bar-chart-fill"][data-series="4"],
202
145
  [data-ui="chart-legend-item"][data-series="4"] [data-ui="chart-legend-swatch"] {
203
146
  background: var(--admin-chart-4);
204
147
  }
205
- [data-ui="bar-chart-fill"][data-series="5"],
206
148
  [data-ui="chart-legend-item"][data-series="5"] [data-ui="chart-legend-swatch"] {
207
149
  background: var(--admin-chart-5);
208
150
  }
209
- [data-ui="bar-chart-fill"][data-series="6"],
210
151
  [data-ui="chart-legend-item"][data-series="6"] [data-ui="chart-legend-swatch"] {
211
152
  background: var(--admin-chart-6);
212
153
  }
@@ -219,11 +160,5 @@
219
160
  [data-ui="chart"][data-kind="doughnut"] [data-ui="chart-legend"] {
220
161
  inline-size: 100%;
221
162
  }
222
- [data-ui="bar-chart-row"] {
223
- grid-template-columns: minmax(0, 1fr) auto;
224
- }
225
- [data-ui="bar-chart-track"] {
226
- grid-column: 1 / -1;
227
- }
228
163
  }
229
164
  }
@@ -1,6 +1,6 @@
1
- declare var Gs: ({ navigation: i, lifetime: t }: {
1
+ declare var Dc: ({ navigation: i, lifetime: t }: {
2
2
  lifetime: any;
3
3
  navigation: any;
4
4
  }) => () => void;
5
- export { Gs as backendShell };
5
+ export { Dc as backendShell };
6
6
  //# sourceMappingURL=backend-shell.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"backend-shell.d.mts","sourceRoot":"","sources":["../../../../../../../../packages/ketsuite/src/modules/backend/design/client/backend-shell.mjs"],"names":[],"mappings":"AACy1qB,QAAA,IAAspO,EAAE;;;gBAAwI,CAAC;AAAA,OAAM,EAAC,EAAE,IAAI,YAAY,EAAC,CAAC"}
1
+ {"version":3,"file":"backend-shell.d.mts","sourceRoot":"","sources":["../../../../../../../../packages/ketsuite/src/modules/backend/design/client/backend-shell.mjs"],"names":[],"mappings":"AACk8yB,QAAA,IAA0pO,EAAE;;;gBAAyI,CAAC;AAAA,OAAM,EAAC,EAAE,IAAI,YAAY,EAAC,CAAC"}
@@ -1,2 +1,2 @@
1
1
  // @ts-nocheck Generated by tools/build-backend-client.mjs — do not edit.
2
- function Q(i){let t,a,n=0;async function s(r){let d=r.querySelector("input[type=email]"),p=r.querySelector("[data-email-status]");if(!d||!p)return;t?.abort(),clearTimeout(a);let R=++n,T=d.value.trim(),P=r.querySelector("[data-email-next]"),C=r.querySelector("[data-email-retry]"),H=(y,k)=>{p.textContent=y,P&&(P.disabled=!k),d.setAttribute("aria-invalid",String(!k)),r.dataset.emailAvailable=k?"true":"false"};if(C&&(C.hidden=!0),!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(T)){H(T?"Email ch\u01B0a \u0111\xFAng \u0111\u1ECBnh d\u1EA1ng.":"Nh\u1EADp email \u0111\u1EC3 ki\u1EC3m tra.",!1);return}H("\u0110ang ki\u1EC3m tra email\u2026",!1),a=setTimeout(async()=>{t=new AbortController;try{let y=await fetch(r.dataset.emailCheck,{method:"POST",cache:"no-store",headers:{"content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams({email:T}),signal:AbortSignal.any([t.signal,AbortSignal.timeout(1e4)])});if(!y.ok)throw new Error("email-check-failed");let k=await y.json();if(R!==n||!r.isConnected)return;if(!k.ok)throw new Error("email-check-failed");H(k.available?"Email c\xF3 th\u1EC3 s\u1EED d\u1EE5ng.":"Email \u0111\xE3 \u0111\u01B0\u1EE3c s\u1EED d\u1EE5ng. Nh\u1EADp email kh\xE1c.",k.available)}catch{if(R!==n||!r.isConnected)return;H("Ch\u01B0a ki\u1EC3m tra \u0111\u01B0\u1EE3c email. Vui l\xF2ng th\u1EED l\u1EA1i.",!1),C&&(C.hidden=!1)}},400)}function o(r,d=!1){let p=r.querySelector('select[name="companyId"]'),R=r.querySelector('select[name="branchId"]'),T=r.querySelector('select[name="scopeKind"]')?.value;if(R&&p){d&&(R.value="");for(let y of R.options)y.value&&(y.hidden=y.dataset.companyId!==p.value,y.disabled=y.hidden)}let P=T==="tenant"?"tenant":T==="branch"?`branch:${p?.value}:${R?.value}`:`company:${p?.value}`;for(let y of r.querySelectorAll("[data-assigned-scopes]")){let e=JSON.parse(y.dataset.assignedScopes??"[]").includes(P);y.disabled=y.dataset.roleDisabled==="true"||e;let g=y.closest("[data-role-option]"),l=g?.querySelector("[data-role-assigned]"),x=g?.querySelector("[data-role-description]");l&&(l.hidden=!e),x&&(x.hidden=e),y.disabled&&(y.checked=!1)}let C=p?.closest('[data-ui="form-field"]'),H=R?.closest('[data-ui="form-field"]');C&&(C.hidden=T==="tenant"),H&&(H.hidden=T==="tenant"||T==="company")}function u(){for(let r of document.querySelectorAll("form[data-user-workflow]"))r.dataset.initialized||(r.dataset.initialized="true",o(r),s(r))}document.addEventListener("input",r=>{let d=r.target,p=d.closest("form[data-user-workflow]");if(p&&(d.type==="email"&&s(p),d.matches("[data-role-search]"))){let R=0;for(let P of p.querySelectorAll("[data-role-option]"))P.hidden=!P.textContent?.toLocaleLowerCase("vi").includes(d.value.toLocaleLowerCase("vi")),P.hidden||R++;let T=p.querySelector("[data-role-empty]");T&&(T.hidden=R>0)}},{signal:i}),document.addEventListener("change",r=>{let d=r.target,p=d.closest("form[data-user-workflow]");p&&d.matches('select[name="companyId"],select[name="branchId"],select[name="scopeKind"]')&&o(p,d.matches('select[name="companyId"]'))},{signal:i}),document.addEventListener("click",r=>{let d=r.target;d.matches("[data-email-retry]")&&s(d.closest("form"))},{signal:i}),document.addEventListener("submit",r=>{let d=r.target;d.matches("form[data-user-workflow]")&&d.querySelector("input[type=email]")&&d.dataset.emailAvailable!=="true"&&r.preventDefault()},{signal:i});let f=new MutationObserver(u);return f.observe(document.documentElement,{childList:!0,subtree:!0}),u(),()=>{t?.abort(),clearTimeout(a),f.disconnect()}}import{each as Ct}from"/_ket/view/index.js";import{Fragment as Mt,jsx as Et,jsxs as Dt}from"/_ket/view/jsx-runtime.js";var Z=["action","action-leading","action-label","action-spinner","action-group"];import{jsx as Jt,jsxs as Xt}from"/_ket/view/jsx-runtime.js";var Y=["badge","tag","tag-remove","count-badge","avatar","code"];import{each as Kt}from"/_ket/view/index.js";import{jsx as Bt,jsxs as qt}from"/_ket/view/jsx-runtime.js";var j=["notice","notice-mark","notice-copy","notice-title","notice-message","notice-actions","empty","empty-mark","empty-title","empty-message","empty-actions","loading","loading-label"];import{each as fa}from"/_ket/view/index.js";import{each as Yt}from"/_ket/view/index.js";import{jsx as zt,jsxs as Ut}from"/_ket/view/jsx-runtime.js";var ee=["app-shell","app-sidebar","app-main","app-right-rail","page","page-header","page-heading","page-title","page-description","page-actions","page-body","record-canvas","record-content","record-section","record-section-title"];import{Fragment as aa,jsx as ta,jsxs as ia}from"/_ket/view/jsx-runtime.js";var te=["stack","inline","grid","surface","surface-head","surface-title","surface-actions","disclosure","disclosure-summary","disclosure-body","section","section-head","section-eyebrow","section-title","section-description","section-actions","section-body","content-card","card-head","card-title","card-summary","card-body","card-meta","card-actions","metric","metric-icon","metric-label","metric-value","metric-detail"];import{each as da}from"/_ket/view/index.js";import{Fragment as ca,jsx as ua}from"/_ket/view/jsx-runtime.js";import{jsx as va,jsxs as xa}from"/_ket/view/jsx-runtime.js";var ae=["field","field-label","field-required","field-control","field-options","field-option","field-option-input","field-help","field-error"];import{each as wa}from"/_ket/view/index.js";import{jsx as Pa,jsxs as ka}from"/_ket/view/jsx-runtime.js";var ie=["breadcrumbs","breadcrumb","nav-list","nav-item","nav-item-leading","nav-item-label","nav-item-count","tabs","tab","tab-count"];import{jsx as Ca,jsxs as Oa}from"/_ket/view/jsx-runtime.js";var ne=["progress","progress-label","progress-value","progress-track","progress-bar"];import{each as Da}from"/_ket/view/index.js";import{Fragment as Xa,jsx as Fa,jsxs as Ja}from"/_ket/view/jsx-runtime.js";var oe=["menu","menu-trigger","menu-panel","menu-item","menu-item-copy"];import{jsx as Ka,jsxs as $a}from"/_ket/view/jsx-runtime.js";var re=["popover","popover-trigger","popover-panel","popover-close"];import{jsx as Va,jsxs as Ga}from"/_ket/view/jsx-runtime.js";var le=["tooltip","tooltip-trigger","tooltip-content"];import{jsx as Wa,jsxs as _a}from"/_ket/view/jsx-runtime.js";var de=["modal-layer","modal-backdrop","modal-sheet","modal-head","modal-heading","modal-title","modal-description","modal-close","modal-body","modal-actions"];import{jsx as ei}from"/_ket/view/jsx-runtime.js";var se=["dialog","confirm-dialog-message"];import{each as ii}from"/_ket/view/index.js";import{jsx as oi,jsxs as ri}from"/_ket/view/jsx-runtime.js";var ce=["toast-region","toast","toast-copy","toast-title","toast-message","toast-actions"];import{jsx as si}from"/_ket/view/jsx-runtime.js";var ue=["spinner","visually-hidden"];import{each as mi}from"/_ket/view/index.js";import{jsx as bi}from"/_ket/view/jsx-runtime.js";var me=["skeleton","skeleton-line"];var at=["a[href]","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])","summary",'[tabindex]:not([tabindex="-1"])'].join(","),J=i=>[...i.querySelectorAll(at)].filter(t=>t instanceof HTMLElement&&!t.hidden&&t.getAttribute("aria-hidden")!=="true"&&(typeof t.checkVisibility!="function"||t.checkVisibility())),q=(i=document)=>{let t=document.activeElement instanceof HTMLElement?document.activeElement:null,a=i.querySelector('[data-ui="modal-layer"][data-route-modal="true"] [role="dialog"]'),n=i.querySelector('[data-ui="app-shell"], [data-ui="shell"]'),s=n instanceof HTMLElement?n.inert:!1;if(a instanceof HTMLElement){n instanceof HTMLElement&&!n.contains(a)&&(n.inert=!0);let e=J(a)[0];(e instanceof HTMLElement?e:a).focus()}let o=window.matchMedia("(max-width: 48rem)"),u=document.documentElement,f=u.dataset.kvNavigationOpen,r=[...i.querySelectorAll('[data-ui="app-navigation"]')].filter(e=>e instanceof HTMLDetailsElement),d=new Map,p=e=>{let g=d.get(e);if(g?.targets){for(let{element:l,inert:x}of g.targets)l.inert=x;g.targets=null}},R=()=>{o.matches&&r.some(g=>g.open)?u.dataset.kvNavigationOpen="true":f===void 0?delete u.dataset.kvNavigationOpen:u.dataset.kvNavigationOpen=f},T=e=>{let g=e.querySelector('[data-ui="navigation-trigger"]'),l=e.querySelector('[data-ui="navigation-drawer"]');if(!(g instanceof HTMLElement)||!(l instanceof HTMLElement))return;let x=o.matches;if(g.dataset.open=String(x&&e.open),!x){l.removeAttribute("role"),l.removeAttribute("aria-modal"),l.removeAttribute("aria-label"),p(e),R();return}if(l.setAttribute("role","dialog"),l.setAttribute("aria-modal","true"),l.setAttribute("aria-label",l.dataset.navigationLabel??"Navigation"),!e.open){p(e),R();return}let v=d.get(e)??{};if(!v.targets){let O=e.closest('[data-ui="app-shell"], [data-ui="shell"]'),L=O?[...O.querySelectorAll(':scope > [data-ui="app-main"], :scope > [data-ui="main"], :scope > [data-ui="app-right-rail"]')].filter(w=>w instanceof HTMLElement).map(w=>({element:w,inert:w.inert})):[];for(let{element:w}of L)w.inert=!0;v.targets=L,v.returnFocus=document.activeElement instanceof HTMLElement?document.activeElement:g,d.set(e,v),queueMicrotask(()=>{if(!e.open||!o.matches)return;let w=l.querySelector('[data-ui="navigation-item"][aria-current="page"]'),M=J(l)[0],m=w instanceof HTMLElement?w:M;(m instanceof HTMLElement?m:l).focus()})}R()},P=(e,g=!0)=>{let l=d.get(e);e.open=!1,T(e),g&&l?.returnFocus instanceof HTMLElement&&l.returnFocus.isConnected&&l.returnFocus.focus(),d.delete(e)},C=r.map(e=>{let g=()=>T(e),l=x=>{let v=x.target;if(!(v instanceof Element))return;let L=v.closest('[data-ui="navigation-branch-trigger"]')?.closest('[data-ui="navigation-branch"]');if(L instanceof HTMLDetailsElement&&L.open){x.preventDefault();return}!o.matches||!e.open||(v.closest('[data-ui="navigation-close"]')||v.closest('[data-ui="navigation-backdrop"]')||v.closest('[data-ui="navigation-item"]'))&&P(e)};return e.addEventListener("toggle",g),e.addEventListener("click",l),T(e),()=>{e.removeEventListener("toggle",g),e.removeEventListener("click",l),p(e)}}),H=()=>{for(let e of r)e.open?P(e,!1):T(e)};o.addEventListener("change",H);for(let e of i.querySelectorAll('[data-ui="popover"][data-open="true"]')){let g=e.querySelector('[data-ui="popover-trigger"]'),l=e.querySelector('[data-ui="popover-panel"]');if(!(g instanceof HTMLElement)||!(l instanceof HTMLElement))continue;let x=g.getBoundingClientRect(),v=8,O=e.getAttribute("data-placement")??"bottom-start",L=O.startsWith("top"),w=O.endsWith("end"),M=x.top-l.offsetHeight-v,m=x.bottom+v,c=M>=8,S=m+l.offsetHeight<=window.innerHeight-8,b=L?c||!S:!S&&c,h=w?x.right-l.offsetWidth:x.left,D=Math.max(8,Math.min(h,window.innerWidth-l.offsetWidth-8)),$=Math.max(8,Math.min(b?M:m,window.innerHeight-l.offsetHeight-8));l.dataset.runtimePositioned="true",l.dataset.runtimePlacement=`${b?"top":"bottom"}-${w?"end":"start"}`,l.style.left=`${Math.round(D)}px`,l.style.top=`${Math.round($)}px`,l.style.right="auto",l.style.bottom="auto"}let y=e=>{let g=r.find(m=>o.matches&&m.open);if(g instanceof HTMLDetailsElement){let m=g.querySelector('[data-ui="navigation-drawer"]');if(e.key==="Escape"){P(g),e.preventDefault();return}if(e.key==="Tab"&&m instanceof HTMLElement){let c=J(m),S=c[0],b=c.at(-1);if(!c.length){e.preventDefault(),m.focus();return}if(e.shiftKey&&(document.activeElement===S||document.activeElement===m)){e.preventDefault(),b instanceof HTMLElement&&b.focus();return}if(!e.shiftKey&&document.activeElement===b){e.preventDefault(),S instanceof HTMLElement&&S.focus();return}}}let l=document.activeElement?.closest('[data-ui="tree"] [role="treeitem"]');if(l instanceof HTMLElement){let m=l.closest('[data-ui="tree"]'),c=m?[...m.querySelectorAll('[role="treeitem"]')].filter(h=>h instanceof HTMLElement):[],S=c.indexOf(l),b=-1;if(e.key==="ArrowDown")b=Math.min(c.length-1,S+1);else if(e.key==="ArrowUp")b=Math.max(0,S-1);else if(e.key==="Home")b=0;else if(e.key==="End")b=c.length-1;else if(e.key==="ArrowRight"){let h=Number(l.getAttribute("aria-level"));l.getAttribute("aria-expanded")==="true"&&Number(c[S+1]?.getAttribute("aria-level"))>h&&(b=S+1)}else if(e.key==="ArrowLeft"){let h=Number(l.getAttribute("aria-level"));h>1&&(b=c.findLastIndex((D,$)=>$<S&&Number(D.getAttribute("aria-level"))<h))}if(b>=0&&c[b]){for(let h of c)h.tabIndex=-1;c[b].tabIndex=0,c[b].focus(),e.preventDefault();return}}let x=document.activeElement?.closest('[data-ui="tree-grid-row"]');if(x instanceof HTMLElement){let m=x.closest('[data-ui="tree-grid"]'),c=m?[...m.querySelectorAll('[data-ui="tree-grid-row"]')].filter(h=>h instanceof HTMLElement):[],S=c.indexOf(x),b=e.key==="ArrowDown"?Math.min(c.length-1,S+1):e.key==="ArrowUp"?Math.max(0,S-1):e.key==="Home"?0:e.key==="End"?c.length-1:-1;if(b>=0&&c[b]){for(let h of c)h.tabIndex=-1;c[b].tabIndex=0,c[b].focus(),e.preventDefault();return}}let v=document.activeElement?.closest('[data-ui="menu"][open]');if(v instanceof HTMLDetailsElement){let m=v.querySelector('[data-ui="menu-trigger"]'),c=[...v.querySelectorAll('[role="menuitem"]')].filter(D=>D instanceof HTMLElement&&D.getAttribute("aria-disabled")!=="true"),S=document.activeElement,b=S instanceof HTMLElement?c.indexOf(S):-1,h=-1;if(e.key==="ArrowDown"?h=b<0?0:(b+1)%c.length:e.key==="ArrowUp"?h=b<0?c.length-1:(b-1+c.length)%c.length:e.key==="Home"?h=0:e.key==="End"&&(h=c.length-1),h>=0&&c[h]instanceof HTMLElement){c[h].focus(),e.preventDefault();return}if((e.key==="Enter"||e.key===" ")&&document.activeElement===m){c[0]instanceof HTMLElement&&c[0].focus(),e.preventDefault();return}}if(e.key==="Escape"&&v instanceof HTMLDetailsElement){v.open=!1;let m=v.querySelector('[data-ui="menu-trigger"]');m instanceof HTMLElement&&m.focus(),e.preventDefault();return}let O=document.activeElement?.closest('[data-ui="popover"][data-open="true"]');if(e.key==="Escape"&&O instanceof HTMLElement){let m=O.querySelector('[data-ui="popover-close"]');m instanceof HTMLElement&&m.click(),e.preventDefault();return}if(!(a instanceof HTMLElement))return;if(e.key==="Escape"){let m=a.querySelector('[data-ui="modal-close"]');m instanceof HTMLElement&&m.click(),e.preventDefault();return}if(e.key!=="Tab")return;let L=J(a);if(!L.length){e.preventDefault(),a.focus();return}let w=L[0],M=L.at(-1);e.shiftKey&&(document.activeElement===w||document.activeElement===a)?(e.preventDefault(),M instanceof HTMLElement&&M.focus()):!e.shiftKey&&document.activeElement===M&&(e.preventDefault(),w instanceof HTMLElement&&w.focus())},k=e=>{let g=e.target;if(g instanceof Node)for(let l of i.querySelectorAll('[data-ui="menu"][open]'))l instanceof HTMLDetailsElement&&!l.contains(g)&&(l.open=!1)};return document.addEventListener("keydown",y),document.addEventListener("click",k),()=>{document.removeEventListener("keydown",y),document.removeEventListener("click",k),o.removeEventListener("change",H);for(let e of C)e();f===void 0?delete u.dataset.kvNavigationOpen:u.dataset.kvNavigationOpen=f,n instanceof HTMLElement&&(n.inert=s),t?.isConnected&&t.focus()}};import{jsx as yi,jsxs as vi}from"/_ket/view/jsx-runtime.js";import{jsx as Ri,jsxs as Pi}from"/_ket/view/jsx-runtime.js";var fe=["switch-control","switch-track"];import{each as Hi}from"/_ket/view/index.js";import{Fragment as Di,jsx as Ei,jsxs as Mi}from"/_ket/view/jsx-runtime.js";var pe=["combobox","combobox-input-row","combobox-toggle","combobox-listbox","combobox-option","combobox-empty","tag-picker"];import{jsx as Ii,jsxs as Ni}from"/_ket/view/jsx-runtime.js";var he=["date-range"];import{jsx as qi,jsxs as Vi}from"/_ket/view/jsx-runtime.js";var ye=["file-upload","drop-zone","upload-status"];import{jsx as Wi}from"/_ket/view/jsx-runtime.js";var ve=["relation-picker"];import{each as Zi}from"/_ket/view/index.js";import{jsx as tn,jsxs as an}from"/_ket/view/jsx-runtime.js";var xe=["search-bar","filter-bar","applied-filters","applied-filter","saved-views","saved-view","view-settings","view-settings-options"];import{jsx as ln,jsxs as dn}from"/_ket/view/jsx-runtime.js";var Se=["inline-edit","inline-edit-value","inline-edit-form","inline-edit-actions"];import{each as xn}from"/_ket/view/index.js";import{each as gn}from"/_ket/view/index.js";import{jsx as pn,jsxs as hn}from"/_ket/view/jsx-runtime.js";var Te=["list-chrome","list-chrome-row","list-search","list-search-label","list-search-input","list-search-submit","list-facets","list-facet","list-facet-count","list-view-switch","list-view","list-sort","list-sort-label","list-sort-select","list-status","list-actions","bulk-actions","bulk-summary","bulk-action-list","pager-bar","pager-summary","pager-pages","pager-page","pager-actions","pager-link"];import{jsx as Rn,jsxs as Pn}from"/_ket/view/jsx-runtime.js";var we=["resource-list","resource-list-item","resource-list-select","resource-list-link"];import{each as Hn}from"/_ket/view/index.js";import{jsx as On,jsxs as En}from"/_ket/view/jsx-runtime.js";var Re=["data-grid-scroll","data-grid","data-grid-cap","data-grid-cell"];import{each as An}from"/_ket/view/index.js";import{jsx as Jn,jsxs as Xn}from"/_ket/view/jsx-runtime.js";var Pe=["tree","tree-item","tree-link","tree-grid","tree-grid-row"];import{each as Kn}from"/_ket/view/index.js";import{jsx as qn,jsxs as Vn}from"/_ket/view/jsx-runtime.js";var ke=["description-list","key-value","key-value-label","key-value-value","person","person-body","avatar-group","status"];import{jsx as Un}from"/_ket/view/jsx-runtime.js";var Le=["formatted-date","formatted-number","formatted-money"];import{each as Qn}from"/_ket/view/index.js";import{jsx as to,jsxs as ao}from"/_ket/view/jsx-runtime.js";var Ce=["record-summary","record-summary-main","record-actions","record-rail"];import{each as oo}from"/_ket/view/index.js";import{jsx as co,jsxs as uo}from"/_ket/view/jsx-runtime.js";var Ee=["activity-timeline","activity-item","activity-marker","audit-log","audit-item"];import{each as bo}from"/_ket/view/index.js";import{jsx as ho,jsxs as yo}from"/_ket/view/jsx-runtime.js";var Me=["attachments","attachment","media-gallery","media-item"];import{each as So}from"/_ket/view/index.js";import{Fragment as Po,jsx as wo,jsxs as Ro}from"/_ket/view/jsx-runtime.js";var De=["app-navigation","navigation-trigger","navigation-trigger-icon","navigation-trigger-identity","navigation-trigger-label","navigation-layer","navigation-backdrop","navigation-drawer","navigation-header","navigation-identity","navigation-context","navigation-close","navigation-groups","navigation-group","navigation-group-label","navigation-items","navigation-supplementary","navigation-item","navigation-branch","navigation-branch-trigger","navigation-children","navigation-item-leading","navigation-item-copy","navigation-item-label","navigation-item-description","navigation-item-count","navigation-footer"];import{each as Oo}from"/_ket/view/index.js";import{Fragment as Jo,jsx as Ao,jsxs as Fo}from"/_ket/view/jsx-runtime.js";var Ae=["table-scroll","table","table-caption","select-col","select-all","col","sort-link","sort-icon","row","group-row","group-cell","group-link","group-indent","group-count","group-pager","group-pager-actions","cell","select-cell","row-select","row-link"];import{Fragment as $o,jsx as No,jsxs as Ko}from"/_ket/view/jsx-runtime.js";import{jsx as Uo,jsxs as Wo}from"/_ket/view/jsx-runtime.js";var Fe=["list-page","list-page-context","list-page-header","list-page-heading","list-page-title-row","list-page-eyebrow","list-page-title","list-page-description","list-page-actions","list-page-toolbar","list-page-controls","list-page-status","list-page-body","list-page-footer"];import{jsx as jo,jsxs as er}from"/_ket/view/jsx-runtime.js";var Je=["record-page","record-page-context","record-page-header","record-page-title-row","record-page-heading","record-page-title","record-page-subline","record-page-status","record-page-description","record-page-actions","record-page-meta","record-page-controller","record-page-navigation","record-page-layout","record-page-body","record-page-aside"];var Xe=["form-page","form-page-context","form-page-header","form-page-title-row","form-page-heading","form-page-title","form-page-subline","form-page-status","form-page-description","form-page-actions","form-page-meta","form-page-controller","form-page-navigation","form-page-layout","form-page-body","form-page-aside"];import{jsx as sr,jsxs as cr}from"/_ket/view/jsx-runtime.js";var Ie=["dashboard-page","dashboard-page-context","dashboard-page-header","dashboard-page-heading","dashboard-page-eyebrow","dashboard-page-title-row","dashboard-page-title","dashboard-page-subline","dashboard-page-status","dashboard-page-description","dashboard-page-actions","dashboard-page-meta","dashboard-page-body"];var Ne=["board-page","board-page-context","board-page-header","board-page-heading","board-page-eyebrow","board-page-title-row","board-page-title","board-page-subline","board-page-status","board-page-description","board-page-actions","board-page-meta","board-page-toolbar","board-page-controls","board-page-body"];import{each as vr}from"/_ket/view/index.js";import{jsx as Sr,jsxs as Tr}from"/_ket/view/jsx-runtime.js";var Ke=["pipeline","pipeline-step","pipeline-arrow","pipeline-step-label","pipeline-step-value","pipeline-step-node"];import{each as Lr}from"/_ket/view/index.js";import{jsx as Er,jsxs as Mr}from"/_ket/view/jsx-runtime.js";var $e=["record-form","form-errors","form-grid","form-actions"];var Be={actions:Z,feedback:j,fields:ae,status:Y,navigation:ie,progress:ne,menu:oe,popover:re,tooltip:le,dialog:se,toast:ce,spinner:ue,skeleton:me,scalarFields:fe,combobox:pe,dateTime:he,upload:ye,relationPicker:ve,listControls:xe,inlineEdit:Se,resourceList:we,dataGrid:Re,tree:Pe,recordDisplay:ke,formattedValues:Le,recordComposition:Ce,activity:Ee,media:Me,layouts:te,shell:ee,appNavigation:De,table:Ae,listChrome:Te,listPage:Fe,formPage:Xe,recordPage:Je,dashboardPage:Ie,boardPage:Ne,modal:de,pipeline:Ke,form:$e},bt=[...new Set(Object.values(Be).flat())].sort(),ft=Object.freeze(Object.fromEntries(Object.entries(Be).map(([i,t])=>[i,[...t]])));var W="ket.backend.theme",U=['[data-ui="search-menu"]','[data-ui="col-config"]','[data-ui="bulk-actions"]','[data-ui="viewer"]','[data-ui="record-more"]'].join(", "),ze=globalThis,E=i=>i.target instanceof Element?i.target:null,K=i=>i==="light"||i==="dark"?i:null,pt=()=>{try{return K(localStorage.getItem(W))}catch{return null}},ht=i=>{try{localStorage.setItem(W,i)}catch{}},Ue=()=>K(document.documentElement.dataset.theme)??(matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),I=()=>{let i=String(Ue()==="dark");for(let t of document.querySelectorAll('[data-ui="sidebar-tools"] [data-ui="action"][name="theme"]'))t.setAttribute("aria-pressed",i)},yt=i=>{let t=pt();t&&(document.documentElement.dataset.theme=t),I(),document.addEventListener("click",a=>{let n=E(a)?.closest('[data-ui="sidebar-tools"] [data-ui="action"][name="theme"]');if(!n||n.disabled)return;let s=Ue()==="dark"?"light":"dark";document.documentElement.dataset.theme=s,ht(s),I()},{signal:i}),matchMedia("(prefers-color-scheme: dark)").addEventListener("change",()=>{K(document.documentElement.dataset.theme)||I()},{signal:i}),addEventListener("storage",a=>{if(a.key!==W)return;let n=K(a.newValue);n?document.documentElement.dataset.theme=n:delete document.documentElement.dataset.theme,I()},{signal:i})},vt=i=>{let t=[...i.querySelectorAll('[data-ui="row-select"]:not(:disabled)')],a=t.filter(s=>s.checked).length,n=i.querySelector('[data-ui="select-all"]');if(n&&(n.checked=t.length>0&&a===t.length,n.indeterminate=a>0&&a<t.length),!a){let s=i.closest('[data-ui="shell"]');for(let o of s?.querySelectorAll('[data-ui="bulk-actions"][open]')??[])o.removeAttribute("open")}},xt=(i,t)=>{document.addEventListener("change",a=>{let n=E(a);if(!(n instanceof HTMLInputElement)||!n.matches('[data-ui="select-all"], [data-ui="row-select"]'))return;let s=n.closest('[data-ui="table"]');if(s){if(n.matches('[data-ui="select-all"]'))for(let o of s.querySelectorAll('[data-ui="row-select"]:not(:disabled)'))o.checked=n.checked;vt(s)}},{signal:i}),document.addEventListener("click",a=>{if(a.defaultPrevented||a.button!==0||a.metaKey||a.ctrlKey||a.shiftKey||a.altKey)return;let n=E(a);if(n?.closest('a, button, input, select, textarea, label, summary, details, [data-ui="select-cell"]'))return;let o=n?.closest('[data-ui="row"][data-row-href]')?.getAttribute("data-row-href");o&&(a.preventDefault(),t.navigate(o))},{signal:i}),document.addEventListener("keydown",a=>{if(a.defaultPrevented||a.key!=="Enter"&&a.key!==" ")return;let n=E(a),o=(n?.matches('[data-ui="row"][data-row-href][tabindex="0"]')?n:null)?.getAttribute("data-row-href");o&&(a.preventDefault(),_(o,t))},{signal:i})},qe=()=>[...document.querySelectorAll(`${U}[open]`)],St=i=>{document.addEventListener("click",t=>{let a=E(t)?.closest(U);for(let n of qe())n!==a&&!n.contains(a??null)&&n.removeAttribute("open")},{signal:i}),document.addEventListener("keydown",t=>{if(t.key!=="Escape")return;let a=qe();if(!a.length)return;let n=document.activeElement?.closest(U),s=n?.open?n:a.at(-1);s?.removeAttribute("open"),s?.querySelector("summary")?.focus(),t.preventDefault()},{signal:i})},Tt=i=>{document.addEventListener("click",t=>{let a=E(t)?.closest('[data-ui="chrome-search-toggle"]'),n=a?.getAttribute("aria-controls");if(!a||!n)return;let s=document.getElementById(n);!(s instanceof HTMLDialogElement)||s.open||(s.showModal(),a.setAttribute("aria-expanded","true"),requestAnimationFrame(()=>s.querySelector('[data-presentation="modal"] [data-ui="chrome-search-input"]')?.focus()))},{signal:i}),document.addEventListener("cancel",t=>{E(t)?.matches('[data-ui="chrome-search-modal"]')&&t.preventDefault()},{capture:!0,signal:i}),document.addEventListener("close",t=>{let a=E(t);if(!(a instanceof HTMLDialogElement)||!a.matches('[data-ui="chrome-search-modal"]'))return;let n=document.querySelector(`[data-ui="chrome-search-toggle"][aria-controls="${CSS.escape(a.id)}"]`);n?.setAttribute("aria-expanded","false"),n?.focus()},{capture:!0,signal:i})},wt=["a[href]","button:not(:disabled)",'input:not(:disabled):not([type="hidden"])',"select:not(:disabled)","textarea:not(:disabled)",'[tabindex]:not([tabindex="-1"])'].join(", "),N=()=>document.querySelector('[data-ui="modal-layer"][data-route-modal="true"]'),Ve=i=>[...i.querySelectorAll(wt)].filter(t=>!t.hidden&&t.getAttribute("aria-hidden")!=="true"&&!t.matches('[data-ui="modal-backdrop"]')),_=(i,t)=>{t.navigate(i)},Rt=(i,t)=>i.composedPath().some(a=>a instanceof HTMLElement&&a!==t&&a.matches('[data-ui="modal-layer"][data-presentation="dialog"]')),We=i=>{for(let t of i.querySelectorAll('input:not([type="hidden"])'))if(!t.disabled){if(t.type==="checkbox"||t.type==="radio"){if(t.checked!==t.defaultChecked)return!0}else if(t.value!==t.defaultValue)return!0}for(let t of i.querySelectorAll("textarea"))if(!t.disabled&&t.value!==t.defaultValue)return!0;for(let t of i.querySelectorAll("select"))if(!t.disabled){for(let a of t.options)if(a.selected!==a.defaultSelected)return!0}return!1},Ge=i=>{if(!We(i))return!0;let t=i.getAttribute("data-unsaved-prompt");return t?ze.confirm(t):!0},Pt=(i,t)=>{if(typeof EventSource!="function")return;let a=null,n=null,s=()=>{n?.close(),n=null,a=null},o=()=>{let f=document.querySelector('[data-ui="live-region"][data-stream]');if(f===a)return;s();let r=f instanceof HTMLElement?f.dataset.stream??"":"";if(!r)return;a=f,n=new EventSource(`/_ket/stream/${encodeURIComponent(r)}`);let d=()=>_(location.href,t);n.onmessage=d,n.addEventListener("done",()=>{s(),d()}),n.onerror=()=>{n?.readyState===EventSource.CLOSED&&s()}};o();let u=new MutationObserver(o);return u.observe(document.body,{childList:!0,subtree:!0}),addEventListener("pagehide",s,{signal:i}),()=>{u.disconnect(),s()}},kt=(i,t)=>{let a=new WeakSet,n=()=>{let o=N();!o||a.has(o)||(a.add(o),requestAnimationFrame(()=>{let u=o.querySelector('[data-ui="modal-sheet"]');(Ve(o).find(r=>!r.matches('[data-ui="modal-close"]'))??u)?.focus()}))};n();let s=new MutationObserver(n);return s.observe(document.body,{childList:!0,subtree:!0}),document.addEventListener("click",o=>{let u=N();if(!u)return;let f=o.composedPath().find(r=>r instanceof HTMLElement&&(r.matches('[data-ui="modal-close"], [data-ui="modal-backdrop"], a[data-ui="tab"]')||r.matches('a[data-ui="action"][href]')));!f||!u.contains(f)||Ge(u)||(o.preventDefault(),o.stopPropagation())},{capture:!0,signal:i}),document.addEventListener("click",o=>{let u=document.querySelector("[data-save-before-navigation]"),f=u instanceof HTMLFormElement?u:u?.querySelector("form"),r=E(o)?.closest("a[href]");if(!u||!f||!r||N()||!We(u)||(o.preventDefault(),o.stopPropagation(),!ze.confirm(u.dataset.saveBeforeNavigation)))return;let d=f.querySelector('input[name="returnTo"]');d||(d=document.createElement("input"),d.type="hidden",d.name="returnTo",f.append(d)),d.value=r.href,f.requestSubmit()},{capture:!0,signal:i}),document.addEventListener("keydown",o=>{let u=N();if(!u||Rt(o,u))return;if(o.key==="Escape"){let p=u.querySelector('[data-ui="modal-close"]');if(!p||(o.preventDefault(),!Ge(u)))return;_(p.getAttribute("href")??p.href,t);return}if(o.key!=="Tab")return;let f=Ve(u);if(!f.length)return;let r=f[0],d=f.at(-1);o.shiftKey&&document.activeElement===r?(o.preventDefault(),d.focus()):!o.shiftKey&&document.activeElement===d&&(o.preventDefault(),r.focus())},{signal:i}),()=>s.disconnect()},Gs=({navigation:i,lifetime:t})=>{let a=q(document),n=Q(t);yt(t),xt(t,i),St(t),Tt(t);let s=kt(t,i),o=Pt(t,i);return()=>{a(),o?.(),s(),n()}};export{Gs as backendShell};
2
+ function ae(i){let t,a,n=0;async function u(l){let s=l.querySelector("input[type=email]"),y=l.querySelector("[data-email-status]");if(!s||!y)return;t?.abort(),clearTimeout(a);let k=++n,w=s.value.trim(),C=l.querySelector("[data-email-next]"),H=l.querySelector("[data-email-retry]"),L=(S,O)=>{y.textContent=S,C&&(C.disabled=!O),s.setAttribute("aria-invalid",String(!O)),l.dataset.emailAvailable=O?"true":"false"};if(H&&(H.hidden=!0),!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(w)){L(w?"Email ch\u01B0a \u0111\xFAng \u0111\u1ECBnh d\u1EA1ng.":"Nh\u1EADp email \u0111\u1EC3 ki\u1EC3m tra.",!1);return}L("\u0110ang ki\u1EC3m tra email\u2026",!1),a=setTimeout(async()=>{t=new AbortController;try{let S=await fetch(l.dataset.emailCheck,{method:"POST",cache:"no-store",headers:{"content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams({email:w}),signal:AbortSignal.any([t.signal,AbortSignal.timeout(1e4)])});if(!S.ok)throw new Error("email-check-failed");let O=await S.json();if(k!==n||!l.isConnected)return;if(!O.ok)throw new Error("email-check-failed");L(O.available?"Email c\xF3 th\u1EC3 s\u1EED d\u1EE5ng.":"Email \u0111\xE3 \u0111\u01B0\u1EE3c s\u1EED d\u1EE5ng. Nh\u1EADp email kh\xE1c.",O.available)}catch{if(k!==n||!l.isConnected)return;L("Ch\u01B0a ki\u1EC3m tra \u0111\u01B0\u1EE3c email. Vui l\xF2ng th\u1EED l\u1EA1i.",!1),H&&(H.hidden=!1)}},400)}function d(l,s=!1){let y=l.querySelector('select[name="companyId"]'),k=l.querySelector('select[name="branchId"]'),w=l.querySelector('select[name="scopeKind"]')?.value;if(k&&y){s&&(k.value="");for(let S of k.options)S.value&&(S.hidden=S.dataset.companyId!==y.value,S.disabled=S.hidden)}let C=w==="tenant"?"tenant":w==="branch"?`branch:${y?.value}:${k?.value}`:`company:${y?.value}`;for(let S of l.querySelectorAll("[data-assigned-scopes]")){let D=JSON.parse(S.dataset.assignedScopes??"[]").includes(C);S.disabled=S.dataset.roleDisabled==="true"||D;let I=S.closest("[data-role-option]"),J=I?.querySelector("[data-role-assigned]"),X=I?.querySelector("[data-role-description]");J&&(J.hidden=!D),X&&(X.hidden=D),S.disabled&&(S.checked=!1)}let H=y?.closest('[data-ui="form-field"]'),L=k?.closest('[data-ui="form-field"]');H&&(H.hidden=w==="tenant"),L&&(L.hidden=w==="tenant"||w==="company")}function b(){for(let l of document.querySelectorAll("form[data-user-workflow]"))l.dataset.initialized||(l.dataset.initialized="true",d(l),u(l))}document.addEventListener("input",l=>{let s=l.target,y=s.closest("form[data-user-workflow]");if(y&&(s.type==="email"&&u(y),s.matches("[data-role-search]"))){let k=0;for(let C of y.querySelectorAll("[data-role-option]"))C.hidden=!C.textContent?.toLocaleLowerCase("vi").includes(s.value.toLocaleLowerCase("vi")),C.hidden||k++;let w=y.querySelector("[data-role-empty]");w&&(w.hidden=k>0)}},{signal:i}),document.addEventListener("change",l=>{let s=l.target,y=s.closest("form[data-user-workflow]");y&&s.matches('select[name="companyId"],select[name="branchId"],select[name="scopeKind"]')&&d(y,s.matches('select[name="companyId"]'))},{signal:i}),document.addEventListener("click",l=>{let s=l.target;s.matches("[data-email-retry]")&&u(s.closest("form"))},{signal:i}),document.addEventListener("submit",l=>{let s=l.target;s.matches("form[data-user-workflow]")&&s.querySelector("input[type=email]")&&s.dataset.emailAvailable!=="true"&&l.preventDefault()},{signal:i});let v=new MutationObserver(b);return v.observe(document.documentElement,{childList:!0,subtree:!0}),b(),()=>{t?.abort(),clearTimeout(a),v.disconnect()}}import{each as Kt}from"/_ket/view/index.js";import{Fragment as $t,jsx as Bt,jsxs as qt}from"/_ket/view/jsx-runtime.js";var ie=["action","action-leading","action-label","action-spinner","action-group"];import{jsx as zt,jsxs as Ut}from"/_ket/view/jsx-runtime.js";var ne=["badge","tag","tag-remove","count-badge","avatar","code"];import{each as Qt}from"/_ket/view/index.js";import{jsx as Yt,jsxs as jt}from"/_ket/view/jsx-runtime.js";var re=["notice","notice-mark","notice-copy","notice-title","notice-message","notice-actions","empty","empty-mark","empty-title","empty-message","empty-actions","loading","loading-label"];import{each as Ea}from"/_ket/view/index.js";import{each as ba}from"/_ket/view/index.js";import{Fragment as na,jsx as aa,jsxs as ia}from"/_ket/view/jsx-runtime.js";import{jsx as da,jsxs as sa}from"/_ket/view/jsx-runtime.js";var oe=["app-shell","app-sidebar","app-main","app-right-rail","page","page-context","page-header","page-heading","page-eyebrow","page-title-row","page-title","page-description","page-subline","page-status","page-actions","page-meta","page-body","record-canvas","record-content","record-section","record-section-title"];import{Fragment as ya,jsx as pa,jsxs as va}from"/_ket/view/jsx-runtime.js";var de=["stack","inline","grid","card-grid","surface","surface-head","surface-heading","surface-title","surface-description","surface-actions","disclosure","disclosure-summary","disclosure-body","section","section-head","section-eyebrow","section-title","section-description","section-actions","section-body","content-card","card-media","card-head","card-leading","card-heading","card-eyebrow","card-title","card-summary","card-status","card-body","card-meta","card-actions","kanban","kanban-card","kanban-media","kanban-title","kanban-meta","kanban-note","kanban-actions","metric","metric-icon","metric-label","metric-value","metric-detail"];import{each as ka}from"/_ket/view/index.js";import{Fragment as Ra,jsx as Ca}from"/_ket/view/jsx-runtime.js";import{jsx as Fa,jsxs as Ia}from"/_ket/view/jsx-runtime.js";var se=["field","field-label","field-required","field-control","field-options","field-option","field-option-input","field-help","field-error"];import{each as Ka}from"/_ket/view/index.js";import{jsx as Ba,jsxs as $a}from"/_ket/view/jsx-runtime.js";var ce=["breadcrumbs","breadcrumb","breadcrumb-overflow","breadcrumb-overflow-trigger","breadcrumb-overflow-list","nav-list","nav-item","nav-item-leading","nav-item-label","nav-item-count","tabs","tab","tab-count"];import{jsx as Va,jsxs as za}from"/_ket/view/jsx-runtime.js";var ue=["progress","progress-label","progress-value","progress-track","progress-bar"];import{each as _a}from"/_ket/view/index.js";import{Fragment as ja,jsx as Za,jsxs as Ya}from"/_ket/view/jsx-runtime.js";var me=["menu","menu-trigger","menu-panel","menu-label","menu-separator","menu-item","menu-item-leading","menu-item-copy","menu-item-check","menu-item-shortcut"];import{jsx as ai,jsxs as ii}from"/_ket/view/jsx-runtime.js";var ge=["popover","popover-trigger","popover-panel","popover-close"];import{jsx as li,jsxs as oi}from"/_ket/view/jsx-runtime.js";var be=["tooltip","tooltip-trigger","tooltip-content"];import{jsx as ci,jsxs as ui}from"/_ket/view/jsx-runtime.js";var fe=["modal-layer","modal-backdrop","modal-sheet","modal-head","modal-heading","modal-title","modal-description","modal-close","modal-body","modal-actions"];import{jsx as hi}from"/_ket/view/jsx-runtime.js";var he=["dialog","confirm-dialog-message"];import{each as vi}from"/_ket/view/index.js";import{jsx as Si,jsxs as Ti}from"/_ket/view/jsx-runtime.js";var pe=["toast-region","toast","toast-copy","toast-title","toast-message","toast-actions"];import{jsx as Pi}from"/_ket/view/jsx-runtime.js";var ye=["spinner","visually-hidden"];import{each as Li}from"/_ket/view/index.js";import{jsx as Oi}from"/_ket/view/jsx-runtime.js";var ve=["skeleton","skeleton-line"];var gt=["a[href]","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])","summary",'[tabindex]:not([tabindex="-1"])'].join(","),B=i=>[...i.querySelectorAll(gt)].filter(t=>t instanceof HTMLElement&&!t.hidden&&t.getAttribute("aria-hidden")!=="true"&&(typeof t.checkVisibility!="function"||t.checkVisibility())),W=(i=document)=>{let t=document.activeElement instanceof HTMLElement?document.activeElement:null,a=i.querySelector('[data-ui="modal-layer"][data-route-modal="true"] [role="dialog"]'),n=i.querySelector('[data-ui="app-shell"], [data-ui="shell"]'),u=n instanceof HTMLElement?n.inert:!1;if(a instanceof HTMLElement){n instanceof HTMLElement&&!n.contains(a)&&(n.inert=!0);let e=B(a)[0];(e instanceof HTMLElement?e:a).focus()}let d=[...i.querySelectorAll('[data-ui="menu"]')].filter(e=>e instanceof HTMLDetailsElement),b=e=>{let o=e.querySelector('[data-ui="menu-trigger"]');o instanceof HTMLElement&&o.setAttribute("aria-expanded",String(e.open))},v=d.map(e=>{let o=()=>b(e);return e.addEventListener("toggle",o),b(e),()=>e.removeEventListener("toggle",o)}),l=window.matchMedia("(max-width: 48rem)"),s=document.documentElement,y=s.dataset.kvNavigationOpen,k=[...i.querySelectorAll('[data-ui="app-navigation"]')].filter(e=>e instanceof HTMLDetailsElement),w=new Map,C=e=>{let o=w.get(e);if(o?.targets){for(let{element:r,inert:f}of o.targets)r.inert=f;o.targets=null}},H=()=>{l.matches&&k.some(o=>o.open)?s.dataset.kvNavigationOpen="true":y===void 0?delete s.dataset.kvNavigationOpen:s.dataset.kvNavigationOpen=y},L=e=>{let o=e.querySelector('[data-ui="navigation-trigger"]'),r=e.querySelector('[data-ui="navigation-drawer"]');if(!(o instanceof HTMLElement)||!(r instanceof HTMLElement))return;let f=l.matches;if(o.dataset.open=String(f&&e.open),!f){r.removeAttribute("role"),r.removeAttribute("aria-modal"),r.removeAttribute("aria-label"),C(e),H();return}if(r.setAttribute("role","dialog"),r.setAttribute("aria-modal","true"),r.setAttribute("aria-label",r.dataset.navigationLabel??"Navigation"),!e.open){C(e),H();return}let h=w.get(e)??{};if(!h.targets){let p=e.closest('[data-ui="app-shell"], [data-ui="shell"]'),P=p?[...p.querySelectorAll(':scope > [data-ui="app-main"], :scope > [data-ui="main"], :scope > [data-ui="app-right-rail"]')].filter(R=>R instanceof HTMLElement).map(R=>({element:R,inert:R.inert})):[];for(let{element:R}of P)R.inert=!0;h.targets=P,h.returnFocus=document.activeElement instanceof HTMLElement?document.activeElement:o,w.set(e,h),queueMicrotask(()=>{if(!e.open||!l.matches)return;let R=r.querySelector('[data-ui="navigation-item"][aria-current="page"]'),A=B(r)[0],E=R instanceof HTMLElement?R:A;(E instanceof HTMLElement?E:r).focus()})}H()},S=(e,o=!0)=>{let r=w.get(e);e.open=!1,L(e),o&&r?.returnFocus instanceof HTMLElement&&r.returnFocus.isConnected&&r.returnFocus.focus(),w.delete(e)},O=k.map(e=>{let o=()=>L(e),r=f=>{let h=f.target;if(!(h instanceof Element))return;let P=h.closest('[data-ui="navigation-branch-trigger"]')?.closest('[data-ui="navigation-branch"]');if(P instanceof HTMLDetailsElement&&P.open){f.preventDefault();return}!l.matches||!e.open||(h.closest('[data-ui="navigation-close"]')||h.closest('[data-ui="navigation-backdrop"]')||h.closest('[data-ui="navigation-item"]'))&&S(e)};return e.addEventListener("toggle",o),e.addEventListener("click",r),L(e),()=>{e.removeEventListener("toggle",o),e.removeEventListener("click",r),C(e)}}),D=()=>{for(let e of k)e.open?S(e,!1):L(e)};l.addEventListener("change",D);for(let e of i.querySelectorAll('[data-ui="popover"][data-open="true"]')){let o=e.querySelector('[data-ui="popover-trigger"]'),r=e.querySelector('[data-ui="popover-panel"]');if(!(o instanceof HTMLElement)||!(r instanceof HTMLElement))continue;let f=o.getBoundingClientRect(),h=8,p=e.getAttribute("data-placement")??"bottom-start",P=p.startsWith("top"),R=p.endsWith("end"),A=f.top-r.offsetHeight-h,E=f.bottom+h,g=A>=8,c=E+r.offsetHeight<=window.innerHeight-8,T=P?g||!c:!c&&g,m=R?f.right-r.offsetWidth:f.left,x=Math.max(8,Math.min(m,window.innerWidth-r.offsetWidth-8)),F=Math.max(8,Math.min(T?A:E,window.innerHeight-r.offsetHeight-8));r.dataset.runtimePositioned="true",r.dataset.runtimePlacement=`${T?"top":"bottom"}-${R?"end":"start"}`,r.style.left=`${Math.round(x)}px`,r.style.top=`${Math.round(F)}px`,r.style.right="auto",r.style.bottom="auto"}let I=e=>{let o=k.find(g=>l.matches&&g.open);if(o instanceof HTMLDetailsElement){let g=o.querySelector('[data-ui="navigation-drawer"]');if(e.key==="Escape"){S(o),e.preventDefault();return}if(e.key==="Tab"&&g instanceof HTMLElement){let c=B(g),T=c[0],m=c.at(-1);if(!c.length){e.preventDefault(),g.focus();return}if(e.shiftKey&&(document.activeElement===T||document.activeElement===g)){e.preventDefault(),m instanceof HTMLElement&&m.focus();return}if(!e.shiftKey&&document.activeElement===m){e.preventDefault(),T instanceof HTMLElement&&T.focus();return}}}let r=document.activeElement?.closest('[data-ui="tree"] [role="treeitem"]');if(r instanceof HTMLElement){let g=r.closest('[data-ui="tree"]'),c=g?[...g.querySelectorAll('[role="treeitem"]')].filter(x=>x instanceof HTMLElement):[],T=c.indexOf(r),m=-1;if(e.key==="ArrowDown")m=Math.min(c.length-1,T+1);else if(e.key==="ArrowUp")m=Math.max(0,T-1);else if(e.key==="Home")m=0;else if(e.key==="End")m=c.length-1;else if(e.key==="ArrowRight"){let x=Number(r.getAttribute("aria-level"));r.getAttribute("aria-expanded")==="true"&&Number(c[T+1]?.getAttribute("aria-level"))>x&&(m=T+1)}else if(e.key==="ArrowLeft"){let x=Number(r.getAttribute("aria-level"));x>1&&(m=c.findLastIndex((F,rt)=>rt<T&&Number(F.getAttribute("aria-level"))<x))}if(m>=0&&c[m]){for(let x of c)x.tabIndex=-1;c[m].tabIndex=0,c[m].focus(),e.preventDefault();return}}let f=document.activeElement?.closest('[data-ui="tree-grid-row"]');if(f instanceof HTMLElement){let g=f.closest('[data-ui="tree-grid"]'),c=g?[...g.querySelectorAll('[data-ui="tree-grid-row"]')].filter(x=>x instanceof HTMLElement):[],T=c.indexOf(f),m=e.key==="ArrowDown"?Math.min(c.length-1,T+1):e.key==="ArrowUp"?Math.max(0,T-1):e.key==="Home"?0:e.key==="End"?c.length-1:-1;if(m>=0&&c[m]){for(let x of c)x.tabIndex=-1;c[m].tabIndex=0,c[m].focus(),e.preventDefault();return}}let h=document.activeElement?.closest('[data-ui="menu"]');if(h instanceof HTMLDetailsElement&&!h.open){let g=h.querySelector('[data-ui="menu-trigger"]');if(document.activeElement===g&&(e.key==="ArrowDown"||e.key==="ArrowUp")){h.open=!0;let c=[...h.querySelectorAll('[role="menuitem"], [role="menuitemcheckbox"], [role="menuitemradio"]')].filter(m=>m instanceof HTMLElement&&m.getAttribute("aria-disabled")!=="true"),T=e.key==="ArrowUp"?c.at(-1):c[0];T instanceof HTMLElement&&T.focus(),e.preventDefault();return}}let p=document.activeElement?.closest('[data-ui="menu"][open]');if(p instanceof HTMLDetailsElement){let g=p.querySelector('[data-ui="menu-trigger"]'),c=[...p.querySelectorAll('[role="menuitem"], [role="menuitemcheckbox"], [role="menuitemradio"]')].filter(F=>F instanceof HTMLElement&&F.getAttribute("aria-disabled")!=="true"),T=document.activeElement,m=T instanceof HTMLElement?c.indexOf(T):-1,x=-1;if(e.key==="ArrowDown"?x=m<0?0:(m+1)%c.length:e.key==="ArrowUp"?x=m<0?c.length-1:(m-1+c.length)%c.length:e.key==="Home"?x=0:e.key==="End"&&(x=c.length-1),x>=0&&c[x]instanceof HTMLElement){c[x].focus(),e.preventDefault();return}if((e.key==="Enter"||e.key===" ")&&document.activeElement===g){c[0]instanceof HTMLElement&&c[0].focus(),e.preventDefault();return}}if(e.key==="Escape"&&p instanceof HTMLDetailsElement){p.open=!1;let g=p.querySelector('[data-ui="menu-trigger"]');g instanceof HTMLElement&&g.focus(),e.preventDefault();return}let P=document.activeElement?.closest('[data-ui="popover"][data-open="true"]');if(e.key==="Escape"&&P instanceof HTMLElement){let g=P.querySelector('[data-ui="popover-close"]');g instanceof HTMLElement&&g.click(),e.preventDefault();return}if(!(a instanceof HTMLElement))return;if(e.key==="Escape"){let g=a.querySelector('[data-ui="modal-close"]');g instanceof HTMLElement&&g.click(),e.preventDefault();return}if(e.key!=="Tab")return;let R=B(a);if(!R.length){e.preventDefault(),a.focus();return}let A=R[0],E=R.at(-1);e.shiftKey&&(document.activeElement===A||document.activeElement===a)?(e.preventDefault(),E instanceof HTMLElement&&E.focus()):!e.shiftKey&&document.activeElement===E&&(e.preventDefault(),A instanceof HTMLElement&&A.focus())},J=e=>{let o=[...e.querySelectorAll('[data-ui="row-select"]')].filter(p=>p instanceof HTMLInputElement&&!p.disabled),r=o.filter(p=>p.checked),f=e.querySelector('[data-ui="select-all"]');f instanceof HTMLInputElement&&(f.checked=o.length>0&&r.length===o.length,f.indeterminate=r.length>0&&r.length<o.length);for(let p of o)p.closest('[data-ui="row"]')?.toggleAttribute("data-selected",p.checked);let h=o[0]?.getAttribute("form");if(h)for(let p of document.querySelectorAll(`[data-ui="bulk-actions"][data-form="${CSS.escape(h)}"]`)){r.length?p.setAttribute("data-has-selection","true"):p.removeAttribute("data-has-selection");for(let P of p.querySelectorAll('[data-ui="bulk-count"]'))P.textContent=String(r.length);for(let P of p.querySelectorAll('[data-ui="bulk-action-list"] button'))P instanceof HTMLButtonElement&&P.dataset.kvAlwaysDisabled!=="true"&&(P.disabled=r.length===0)}},X=e=>{let o=e.target;if(!(o instanceof HTMLInputElement))return;let r=o.getAttribute("data-ui");if(r!=="select-all"&&r!=="row-select")return;let f=o.closest('[data-ui="table"]');if(f){if(r==="select-all")for(let h of f.querySelectorAll('[data-ui="row-select"]'))h instanceof HTMLInputElement&&!h.disabled&&(h.checked=o.checked);J(f)}};for(let e of i.querySelectorAll('[data-ui="table"]'))e.querySelector('[data-ui="row-select"]')&&J(e);document.addEventListener("change",X);let te=e=>{let o=e.target;if(o instanceof Node)for(let r of i.querySelectorAll('[data-ui="menu"][open]')){if(!(r instanceof HTMLDetailsElement))continue;let f=o instanceof Element?o.closest('[data-ui="menu-item"]'):null;(!r.contains(o)||f&&f.getAttribute("aria-disabled")!=="true")&&(r.open=!1)}};return document.addEventListener("keydown",I),document.addEventListener("click",te),()=>{document.removeEventListener("keydown",I),document.removeEventListener("click",te),document.removeEventListener("change",X);for(let e of v)e();l.removeEventListener("change",D);for(let e of O)e();y===void 0?delete s.dataset.kvNavigationOpen:s.dataset.kvNavigationOpen=y,n instanceof HTMLElement&&(n.inert=u),t?.isConnected&&t.focus()}};import{jsx as Di,jsxs as Fi}from"/_ket/view/jsx-runtime.js";import{jsx as Ni,jsxs as Bi}from"/_ket/view/jsx-runtime.js";var Te=["switch-control","switch-track"];import{each as Gi}from"/_ket/view/index.js";import{Fragment as _i,jsx as Ui,jsxs as Wi}from"/_ket/view/jsx-runtime.js";var we=["combobox","combobox-input-row","combobox-toggle","combobox-listbox","combobox-option","combobox-empty","tag-picker"];import{jsx as en,jsxs as tn}from"/_ket/view/jsx-runtime.js";var ke=["date-range"];import{jsx as ln,jsxs as on}from"/_ket/view/jsx-runtime.js";var Pe=["file-upload","drop-zone","upload-status"];import{jsx as un}from"/_ket/view/jsx-runtime.js";var Re=["relation-picker"];import{each as bn}from"/_ket/view/index.js";import{jsx as yn,jsxs as vn}from"/_ket/view/jsx-runtime.js";var Ce=["search-bar","filter-bar","applied-filters","applied-filter","saved-views","saved-view","view-settings","view-settings-options"];import{jsx as wn,jsxs as kn}from"/_ket/view/jsx-runtime.js";var Le=["inline-edit","inline-edit-value","inline-edit-form","inline-edit-actions"];import{each as Jn}from"/_ket/view/index.js";import{each as Hn}from"/_ket/view/index.js";import{Fragment as Dn,jsx as Mn,jsxs as An}from"/_ket/view/jsx-runtime.js";var He=["list-chrome","list-chrome-row","list-search","list-search-label","list-search-input","list-search-submit","list-facets","list-facet","list-facet-count","list-view-switch","list-view","list-sort","list-sort-label","list-sort-select","list-status","list-actions","bulk-actions","bulk-summary","bulk-count","bulk-action-list","pager-bar","pager-summary","pager-pages","pager-page","pager-actions","pager-link"];import{jsx as Bn,jsxs as $n}from"/_ket/view/jsx-runtime.js";var Oe=["resource-list","resource-list-item","resource-list-select","resource-list-link"];import{each as Vn}from"/_ket/view/index.js";import{jsx as Un,jsxs as Wn}from"/_ket/view/jsx-runtime.js";var Ee=["data-grid-scroll","data-grid","data-grid-cap","data-grid-cell"];import{each as Zn}from"/_ket/view/index.js";import{jsx as jn,jsxs as er}from"/_ket/view/jsx-runtime.js";var Me=["tree","tree-item","tree-link","tree-grid","tree-grid-row"];import{each as ir}from"/_ket/view/index.js";import{jsx as rr,jsxs as lr}from"/_ket/view/jsx-runtime.js";var Ae=["data-matrix","data-matrix-head","data-matrix-heading","data-matrix-eyebrow","data-matrix-title","data-matrix-description","data-matrix-summary","data-matrix-scroll","data-matrix-table","data-matrix-column","data-matrix-row-head","data-matrix-row-leading","data-matrix-row-title","data-matrix-row-description","data-matrix-row-status","data-matrix-row-actions","data-matrix-cell"];import{each as sr}from"/_ket/view/index.js";import{jsx as ur,jsxs as mr}from"/_ket/view/jsx-runtime.js";var De=["bar-chart","bar-chart-rows","bar-chart-row","bar-chart-label","bar-chart-caption","bar-chart-track","bar-chart-fill","bar-chart-segment","bar-chart-value","bar-chart-scale","bar-chart-legend","bar-chart-legend-item","bar-chart-legend-swatch","bar-chart-empty"];import{each as fr}from"/_ket/view/index.js";import{jsx as pr,jsxs as yr}from"/_ket/view/jsx-runtime.js";var Fe=["timeframe","timeframe-menu","timeframe-trigger","timeframe-label","timeframe-value","timeframe-content","timeframe-option","timeframe-option-label","timeframe-option-detail","timeframe-range","timeframe-asof","timeframe-note"];import{each as Sr}from"/_ket/view/index.js";import{jsx as kr,jsxs as Pr}from"/_ket/view/jsx-runtime.js";var Ie=["description-list","key-value","key-value-label","key-value-value","person","person-body","avatar-group","status"];import{jsx as Lr}from"/_ket/view/jsx-runtime.js";var Je=["formatted-date","formatted-number","formatted-money"];import{each as Er}from"/_ket/view/index.js";import{jsx as Ir,jsxs as Jr}from"/_ket/view/jsx-runtime.js";var Ke=["record-summary","record-summary-main","record-actions","record-rail"];import{each as Nr}from"/_ket/view/index.js";import{jsx as Gr,jsxs as Vr}from"/_ket/view/jsx-runtime.js";var Be=["activity-timeline","activity-item","activity-marker","audit-log","audit-item"];import{each as Wr}from"/_ket/view/index.js";import{jsx as Zr,jsxs as Yr}from"/_ket/view/jsx-runtime.js";var $e=["attachments","attachment","media-gallery","media-item"];import{each as tl}from"/_ket/view/index.js";import{Fragment as rl,jsx as il,jsxs as nl}from"/_ket/view/jsx-runtime.js";var qe=["app-navigation","navigation-trigger","navigation-trigger-icon","navigation-trigger-identity","navigation-trigger-label","navigation-layer","navigation-backdrop","navigation-drawer","navigation-header","navigation-identity","navigation-context","navigation-close","navigation-groups","navigation-group","navigation-group-label","navigation-items","navigation-supplementary","navigation-item","navigation-branch","navigation-branch-trigger","navigation-children","navigation-item-leading","navigation-item-copy","navigation-item-label","navigation-item-description","navigation-item-count","navigation-footer"];import{each as cl}from"/_ket/view/index.js";import{Fragment as hl,jsx as bl,jsxs as fl}from"/_ket/view/jsx-runtime.js";var Ge=["table-scroll","table","table-caption","select-col","select-all","col","sort-link","sort-icon","row","group-row","group-cell","group-link","group-indent","group-count","group-pager","group-pager-actions","cell","select-cell","row-select","row-link"];import{jsx as kl,jsxs as Pl}from"/_ket/view/jsx-runtime.js";var Ve=["list-page","list-page-context","list-page-header","list-page-heading","list-page-title-row","list-page-eyebrow","list-page-title","list-page-description","list-page-actions","list-page-toolbar","list-page-controls","list-page-status","list-page-body","list-page-footer"];import{jsx as Hl,jsxs as Ol}from"/_ket/view/jsx-runtime.js";var ze=["record-page","record-page-context","record-page-header","record-page-title-row","record-page-heading","record-page-title","record-page-subline","record-page-status","record-page-description","record-page-actions","record-page-meta","record-page-controller","record-page-navigation","record-page-layout","record-page-body","record-page-aside"];var Ue=["form-page","form-page-context","form-page-header","form-page-title-row","form-page-heading","form-page-title","form-page-subline","form-page-status","form-page-description","form-page-actions","form-page-meta","form-page-controller","form-page-navigation","form-page-layout","form-page-body","form-page-aside"];import{jsx as Kl,jsxs as Nl}from"/_ket/view/jsx-runtime.js";var We=["dashboard-page","dashboard-page-context","dashboard-page-header","dashboard-page-heading","dashboard-page-eyebrow","dashboard-page-title-row","dashboard-page-title","dashboard-page-subline","dashboard-page-status","dashboard-page-description","dashboard-page-actions","dashboard-page-meta","dashboard-page-body"];var _e=["board-page","board-page-context","board-page-header","board-page-heading","board-page-eyebrow","board-page-title-row","board-page-title","board-page-subline","board-page-status","board-page-description","board-page-actions","board-page-meta","board-page-toolbar","board-page-controls","board-page-body"];import{each as _l}from"/_ket/view/index.js";import{jsx as Zl,jsxs as Yl}from"/_ket/view/jsx-runtime.js";var Qe=["pipeline","pipeline-step","pipeline-arrow","pipeline-step-label","pipeline-step-value","pipeline-step-node"];import{each as io}from"/_ket/view/index.js";import{jsx as oo,jsxs as so}from"/_ket/view/jsx-runtime.js";var Ze=["record-form","form-errors","form-grid","form-actions"];var Ye={actions:ie,feedback:re,fields:se,status:ne,navigation:ce,progress:ue,menu:me,popover:ge,tooltip:be,dialog:he,toast:pe,spinner:ye,skeleton:ve,scalarFields:Te,combobox:we,dateTime:ke,upload:Pe,relationPicker:Re,listControls:Ce,inlineEdit:Le,resourceList:Oe,dataGrid:Ee,tree:Me,matrix:Ae,barChart:De,timeframe:Fe,recordDisplay:Ie,formattedValues:Je,recordComposition:Ke,activity:Be,media:$e,layouts:de,shell:oe,appNavigation:qe,table:Ge,listChrome:He,listPage:Ve,formPage:Ue,recordPage:ze,dashboardPage:We,boardPage:_e,modal:fe,pipeline:Qe,form:Ze},kt=[...new Set(Object.values(Ye).flat())].sort(),Pt=Object.freeze(Object.fromEntries(Object.entries(Ye).map(([i,t])=>[i,[...t]])));var j="ket.backend.theme",Y=['[data-ui="search-menu"]','[data-ui="col-config"]','[data-ui="bulk-actions"]','[data-ui="viewer"]','[data-ui="record-more"]'].join(", "),at=globalThis,M=i=>i.target instanceof Element?i.target:null,V=i=>i==="light"||i==="dark"?i:null,Rt=()=>{try{return V(localStorage.getItem(j))}catch{return null}},Ct=i=>{try{localStorage.setItem(j,i)}catch{}},it=()=>V(document.documentElement.dataset.theme)??(matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),q=()=>{let i=String(it()==="dark");for(let t of document.querySelectorAll('[data-ui="sidebar-tools"] [data-ui="action"][name="theme"]'))t.setAttribute("aria-pressed",i)},Lt=i=>{let t=Rt();t&&(document.documentElement.dataset.theme=t),q(),document.addEventListener("click",a=>{let n=M(a)?.closest('[data-ui="sidebar-tools"] [data-ui="action"][name="theme"]');if(!n||n.disabled)return;let u=it()==="dark"?"light":"dark";document.documentElement.dataset.theme=u,Ct(u),q()},{signal:i}),matchMedia("(prefers-color-scheme: dark)").addEventListener("change",()=>{V(document.documentElement.dataset.theme)||q()},{signal:i}),addEventListener("storage",a=>{if(a.key!==j)return;let n=V(a.newValue);n?document.documentElement.dataset.theme=n:delete document.documentElement.dataset.theme,q()},{signal:i})},Ht=i=>{let t=[...i.querySelectorAll('[data-ui="row-select"]:not(:disabled)')],a=t.filter(u=>u.checked).length,n=i.querySelector('[data-ui="select-all"]');if(n&&(n.checked=t.length>0&&a===t.length,n.indeterminate=a>0&&a<t.length),!a){let u=i.closest('[data-ui="shell"]');for(let d of u?.querySelectorAll('[data-ui="bulk-actions"][open]')??[])d.removeAttribute("open")}},Ot=(i,t)=>{document.addEventListener("change",a=>{let n=M(a);if(!(n instanceof HTMLInputElement)||!n.matches('[data-ui="select-all"], [data-ui="row-select"]'))return;let u=n.closest('[data-ui="table"]');if(u){if(n.matches('[data-ui="select-all"]'))for(let d of u.querySelectorAll('[data-ui="row-select"]:not(:disabled)'))d.checked=n.checked;Ht(u)}},{signal:i}),document.addEventListener("click",a=>{if(a.defaultPrevented||a.button!==0||a.metaKey||a.ctrlKey||a.shiftKey||a.altKey)return;let n=M(a);if(n?.closest('a, button, input, select, textarea, label, summary, details, [data-ui="select-cell"]'))return;let d=n?.closest('[data-ui="row"][data-row-href]')?.getAttribute("data-row-href");d&&(a.preventDefault(),t.navigate(d))},{signal:i}),document.addEventListener("keydown",a=>{if(a.defaultPrevented||a.key!=="Enter"&&a.key!==" ")return;let n=M(a),d=(n?.matches('[data-ui="row"][data-row-href][tabindex="0"]')?n:null)?.getAttribute("data-row-href");d&&(a.preventDefault(),ee(d,t))},{signal:i})},je=()=>[...document.querySelectorAll(`${Y}[open]`)],Et=i=>{document.addEventListener("click",t=>{let a=M(t)?.closest(Y);for(let n of je())n!==a&&!n.contains(a??null)&&n.removeAttribute("open")},{signal:i}),document.addEventListener("keydown",t=>{if(t.key!=="Escape")return;let a=je();if(!a.length)return;let n=document.activeElement?.closest(Y),u=n?.open?n:a.at(-1);u?.removeAttribute("open"),u?.querySelector("summary")?.focus(),t.preventDefault()},{signal:i})},Mt=i=>{document.addEventListener("click",t=>{let a=M(t)?.closest('[data-ui="chrome-search-toggle"]'),n=a?.getAttribute("aria-controls");if(!a||!n)return;let u=document.getElementById(n);!(u instanceof HTMLDialogElement)||u.open||(u.showModal(),a.setAttribute("aria-expanded","true"),requestAnimationFrame(()=>u.querySelector('[data-presentation="modal"] [data-ui="chrome-search-input"]')?.focus()))},{signal:i}),document.addEventListener("cancel",t=>{M(t)?.matches('[data-ui="chrome-search-modal"]')&&t.preventDefault()},{capture:!0,signal:i}),document.addEventListener("close",t=>{let a=M(t);if(!(a instanceof HTMLDialogElement)||!a.matches('[data-ui="chrome-search-modal"]'))return;let n=document.querySelector(`[data-ui="chrome-search-toggle"][aria-controls="${CSS.escape(a.id)}"]`);n?.setAttribute("aria-expanded","false"),n?.focus()},{capture:!0,signal:i})},At=["a[href]","button:not(:disabled)",'input:not(:disabled):not([type="hidden"])',"select:not(:disabled)","textarea:not(:disabled)",'[tabindex]:not([tabindex="-1"])'].join(", "),G=()=>document.querySelector('[data-ui="modal-layer"][data-route-modal="true"]'),et=i=>[...i.querySelectorAll(At)].filter(t=>!t.hidden&&t.getAttribute("aria-hidden")!=="true"&&!t.matches('[data-ui="modal-backdrop"]')),ee=(i,t)=>{t.navigate(i)},Dt=(i,t)=>i.composedPath().some(a=>a instanceof HTMLElement&&a!==t&&a.matches('[data-ui="modal-layer"][data-presentation="dialog"]')),nt=i=>{for(let t of i.querySelectorAll('input:not([type="hidden"])'))if(!t.disabled){if(t.type==="checkbox"||t.type==="radio"){if(t.checked!==t.defaultChecked)return!0}else if(t.value!==t.defaultValue)return!0}for(let t of i.querySelectorAll("textarea"))if(!t.disabled&&t.value!==t.defaultValue)return!0;for(let t of i.querySelectorAll("select"))if(!t.disabled){for(let a of t.options)if(a.selected!==a.defaultSelected)return!0}return!1},tt=i=>{if(!nt(i))return!0;let t=i.getAttribute("data-unsaved-prompt");return t?at.confirm(t):!0},Ft=(i,t)=>{if(typeof EventSource!="function")return;let a=null,n=null,u=()=>{n?.close(),n=null,a=null},d=()=>{let v=document.querySelector('[data-ui="live-region"][data-stream]');if(v===a)return;u();let l=v instanceof HTMLElement?v.dataset.stream??"":"";if(!l)return;a=v,n=new EventSource(`/_ket/stream/${encodeURIComponent(l)}`);let s=()=>ee(location.href,t);n.onmessage=s,n.addEventListener("done",()=>{u(),s()}),n.onerror=()=>{n?.readyState===EventSource.CLOSED&&u()}};d();let b=new MutationObserver(d);return b.observe(document.body,{childList:!0,subtree:!0}),addEventListener("pagehide",u,{signal:i}),()=>{b.disconnect(),u()}},It=(i,t)=>{let a=new WeakSet,n=()=>{let d=G();!d||a.has(d)||(a.add(d),requestAnimationFrame(()=>{let b=d.querySelector('[data-ui="modal-sheet"]');(et(d).find(l=>!l.matches('[data-ui="modal-close"]'))??b)?.focus()}))};n();let u=new MutationObserver(n);return u.observe(document.body,{childList:!0,subtree:!0}),document.addEventListener("click",d=>{let b=G();if(!b)return;let v=d.composedPath().find(l=>l instanceof HTMLElement&&(l.matches('[data-ui="modal-close"], [data-ui="modal-backdrop"], a[data-ui="tab"]')||l.matches('a[data-ui="action"][href]')));!v||!b.contains(v)||tt(b)||(d.preventDefault(),d.stopPropagation())},{capture:!0,signal:i}),document.addEventListener("click",d=>{let b=document.querySelector("[data-save-before-navigation]"),v=b instanceof HTMLFormElement?b:b?.querySelector("form"),l=M(d)?.closest("a[href]");if(!b||!v||!l||G()||!nt(b)||(d.preventDefault(),d.stopPropagation(),!at.confirm(b.dataset.saveBeforeNavigation)))return;let s=v.querySelector('input[name="returnTo"]');s||(s=document.createElement("input"),s.type="hidden",s.name="returnTo",v.append(s)),s.value=l.href,v.requestSubmit()},{capture:!0,signal:i}),document.addEventListener("keydown",d=>{let b=G();if(!b||Dt(d,b))return;if(d.key==="Escape"){let y=b.querySelector('[data-ui="modal-close"]');if(!y||(d.preventDefault(),!tt(b)))return;ee(y.getAttribute("href")??y.href,t);return}if(d.key!=="Tab")return;let v=et(b);if(!v.length)return;let l=v[0],s=v.at(-1);d.shiftKey&&document.activeElement===l?(d.preventDefault(),s.focus()):!d.shiftKey&&document.activeElement===s&&(d.preventDefault(),l.focus())},{signal:i}),()=>u.disconnect()},Dc=({navigation:i,lifetime:t})=>{let a=W(document),n=ae(t);Lt(t),Ot(t,i),Et(t),Mt(t);let u=It(t,i),d=Ft(t,i);return()=>{a(),d?.(),u(),n()}};export{Dc as backendShell};