@wssto2/vue-core 0.7.0 → 0.9.0

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 (107) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/{AccessGate.vue_vue_type_script_setup_true_lang-CkomzGrt.js → AccessGate.vue_vue_type_script_setup_true_lang-B8gpkhbw.js} +1 -1
  3. package/dist/{Activity-CW2TOQAY.js → Activity-CfG8_Pp3.js} +7 -7
  4. package/dist/{AdaptivePageShell.vue_vue_type_script_setup_true_lang-9Lt1XggN.js → AdaptivePageShell.vue_vue_type_script_setup_true_lang-DC-zSRcl.js} +1 -1
  5. package/dist/{AsyncSection.vue_vue_type_script_setup_true_lang-GxAsImnO.js → AsyncSection.vue_vue_type_script_setup_true_lang-BTIUz3cG.js} +1 -1
  6. package/dist/{Button.vue_vue_type_script_setup_true_lang-DQq_0P0p.js → Button.vue_vue_type_script_setup_true_lang-Dn-cJcj3.js} +67 -65
  7. package/dist/{Changes-BCaVkeZg.js → Changes-BT__0XX0.js} +6 -6
  8. package/dist/{CollectionPage.vue_vue_type_script_setup_true_lang-BmXnfM5f.js → CollectionPage.vue_vue_type_script_setup_true_lang-Bcwwr8ng.js} +7 -7
  9. package/dist/{DataTable.vue_vue_type_script_setup_true_lang-DRWrCRLr.js → DataTable.vue_vue_type_script_setup_true_lang-CJlllQII.js} +1 -1
  10. package/dist/{DateField.vue_vue_type_script_setup_true_lang-DmYp54mq.js → DateField.vue_vue_type_script_setup_true_lang-BuQY5e5x.js} +2 -2
  11. package/dist/{DeadLetters-DUM_bsL-.js → DeadLetters-Btv3u3qh.js} +4 -4
  12. package/dist/{FormGroup.vue_vue_type_script_setup_true_lang-BTADNpwB.js → FormGroup.vue_vue_type_script_setup_true_lang-Bzm3yJy5.js} +1 -1
  13. package/dist/{General-Dsh0TJ5w.js → General-Cum9U4Z3.js} +6 -6
  14. package/dist/{IncidentRecord-C9zrjNrp.js → IncidentRecord-C4K8hDJ1.js} +10 -10
  15. package/dist/{IncidentsList-ClQOjd5c.js → IncidentsList-BHfJ1cbg.js} +16 -16
  16. package/dist/{Modal.vue_vue_type_script_setup_true_lang-4MsnTWyx.js → Modal.vue_vue_type_script_setup_true_lang-BqO9X_-u.js} +1 -1
  17. package/dist/{NewRolePage-Bw2_jXcQ.js → NewRolePage-BSvYZkH4.js} +4 -4
  18. package/dist/{NumberField.vue_vue_type_script_setup_true_lang-C3nw944P.js → NumberField.vue_vue_type_script_setup_true_lang-CLN2COfp.js} +1 -1
  19. package/dist/{PageBar.vue_vue_type_script_setup_true_lang-DPpcZxuT.js → PageBar.vue_vue_type_script_setup_true_lang-OE8VgTkY.js} +1 -1
  20. package/dist/{PersonAccess.vue_vue_type_script_setup_true_lang-07pq4SrY.js → PersonAccess.vue_vue_type_script_setup_true_lang-CBQ1kv8G.js} +7 -7
  21. package/dist/{ProfilePage-CJIztbx3.js → ProfilePage-Dnn_VUoB.js} +13 -13
  22. package/dist/{RecordHeader.vue_vue_type_script_setup_true_lang-DPm9q1P_.js → RecordHeader.vue_vue_type_script_setup_true_lang-CU7fZpp2.js} +1 -1
  23. package/dist/{ResourcePage.vue_vue_type_script_setup_true_lang-Cm3tx76N.js → ResourcePage.vue_vue_type_script_setup_true_lang-y3gyR5A-.js} +3 -3
  24. package/dist/{RoleEditor.vue_vue_type_script_setup_true_lang-DuQR8hFf.js → RoleEditor.vue_vue_type_script_setup_true_lang-BcUxVL9y.js} +5 -5
  25. package/dist/{RolePage-Yv6m6u7o.js → RolePage-BIY9dEME.js} +10 -10
  26. package/dist/{RolesPage-TibtzxzQ.js → RolesPage-Be35CA_4.js} +5 -5
  27. package/dist/{SectionList.vue_vue_type_script_setup_true_lang-DAnZbfWA.js → SectionList.vue_vue_type_script_setup_true_lang-DzoE_o8v.js} +1 -1
  28. package/dist/{SectionNavigator.vue_vue_type_script_setup_true_lang-ivdGWUeF.js → SectionNavigator.vue_vue_type_script_setup_true_lang-CWPD9zQJ.js} +3 -3
  29. package/dist/{SelectField.vue_vue_type_script_setup_true_lang-iJm8qmjT.js → SelectField.vue_vue_type_script_setup_true_lang-CYiarLAK.js} +1 -1
  30. package/dist/{ServiceAccountDialog.vue_vue_type_script_setup_true_lang-D2Xj5mr7.js → ServiceAccountDialog.vue_vue_type_script_setup_true_lang-CKIq1Ljb.js} +7 -7
  31. package/dist/{ServiceAccountRecord-Ct3TrSqZ.js → ServiceAccountRecord-QsIfylwj.js} +13 -13
  32. package/dist/{ServiceAccountsList-CaXEp73j.js → ServiceAccountsList-CVDIhuCh.js} +7 -7
  33. package/dist/{SessionList.vue_vue_type_script_setup_true_lang-BEKTaL0g.js → SessionList.vue_vue_type_script_setup_true_lang-CkN7vR71.js} +3 -3
  34. package/dist/{Sessions-Bg4Zk9Gf.js → Sessions-Cl2DTM7s.js} +5 -5
  35. package/dist/{SettingsPage-Brq9U4tJ.js → SettingsPage-B2uWw27O.js} +10 -10
  36. package/dist/{SignIn-DB5LRNlB.js → SignIn-BHYFSMOX.js} +5 -5
  37. package/dist/{SignInPage-Ts-iTaC1.js → SignInPage--OC0hQ8M.js} +3 -3
  38. package/dist/{SignIns-bCvvmCHF.js → SignIns-CJ09NqOn.js} +5 -5
  39. package/dist/{TimeField.vue_vue_type_script_setup_true_lang-BwoE08jT.js → TimeField.vue_vue_type_script_setup_true_lang-B140Gjqd.js} +2 -2
  40. package/dist/{Timestamp.vue_vue_type_script_setup_true_lang-u53rHMFG.js → Timestamp.vue_vue_type_script_setup_true_lang-CAz2W69d.js} +1 -1
  41. package/dist/{UserRecord-DgK9FsvV.js → UserRecord-BjXUcHo8.js} +9 -9
  42. package/dist/{UsersList-Due2ZkbO.js → UsersList-D4-eC5tC.js} +9 -9
  43. package/dist/access/index.js +4 -4
  44. package/dist/app/application.d.ts +4 -2
  45. package/dist/app/index.js +2 -2
  46. package/dist/application-DtY0ef-w.js +420 -0
  47. package/dist/button/index.js +1 -1
  48. package/dist/button/shortcut.d.ts +7 -0
  49. package/dist/client/client.d.ts +33 -0
  50. package/dist/client/disposition.d.ts +5 -0
  51. package/dist/client/index.d.ts +1 -1
  52. package/dist/client/index.js +1 -1
  53. package/dist/client-Dr2vV3qH.js +193 -0
  54. package/dist/collection/index.d.ts +1 -1
  55. package/dist/collection/index.js +81 -60
  56. package/dist/collection/savedViews.d.ts +12 -2
  57. package/dist/content/Money.vue.d.ts +31 -0
  58. package/dist/content/index.d.ts +1 -0
  59. package/dist/content/index.js +75 -40
  60. package/dist/{contributions-BQ9dZoRw.js → contributions-DGsAIWd8.js} +1 -1
  61. package/dist/{fieldMessages-DTXpWnBd.js → fieldMessages-6UTV9yWL.js} +1 -1
  62. package/dist/form/FileField.vue.d.ts +1 -1
  63. package/dist/form/PhotoField.vue.d.ts +1 -1
  64. package/dist/form/index.js +18 -18
  65. package/dist/format/format.d.ts +9 -1
  66. package/dist/format/index.js +1 -1
  67. package/dist/format-Dn-BOb-o.js +86 -0
  68. package/dist/{guards-BFCulig0.js → guards-Cz7TOQD8.js} +1 -1
  69. package/dist/identity/index.js +1 -1
  70. package/dist/incidents/index.js +1 -1
  71. package/dist/{index-CXTJ_1NV.js → index-BB0_hxmE.js} +16 -16
  72. package/dist/{index-i-cTTVxo.js → index-C1jSzT1V.js} +7 -7
  73. package/dist/{index-D5_GAqjA.js → index-DZQ3gy3e.js} +8 -8
  74. package/dist/index.d.ts +1 -1
  75. package/dist/index.js +1 -1
  76. package/dist/modal/index.js +15 -15
  77. package/dist/modules/savedview/entities.d.ts +7 -0
  78. package/dist/modules/savedview/routes.d.ts +13 -0
  79. package/dist/modules/savedview/schemas.d.ts +11 -0
  80. package/dist/{navigation-BSC9X7FM.js → navigation-CWj6F_cV.js} +1 -1
  81. package/dist/{neighbors-BKzihEGQ.js → neighbors-CcCaurV5.js} +1 -1
  82. package/dist/notifications/index.js +1 -1
  83. package/dist/page/index.js +5 -5
  84. package/dist/platform/index.js +3 -3
  85. package/dist/{platform-Dr4iY3b8.js → platform-BZUWAXQV.js} +1 -1
  86. package/dist/pwa/index.d.ts +2 -0
  87. package/dist/pwa/index.js +51 -0
  88. package/dist/pwa/install.d.ts +12 -0
  89. package/dist/pwa/worker.d.ts +13 -0
  90. package/dist/resource/index.js +1 -1
  91. package/dist/router/index.js +3 -3
  92. package/dist/{rowLayout-Cz-K7jeo.js → rowLayout-BLhJ9-42.js} +4 -4
  93. package/dist/{sections-BXg4_ZhO.js → sections-CmqFs-U-.js} +1 -1
  94. package/dist/shell/index.js +3 -3
  95. package/dist/state/index.js +1 -1
  96. package/dist/{state-ChVIjayU.js → state-BiYPPKoj.js} +1 -1
  97. package/dist/{status-DZ4eSnAS.js → status-Bf4nfIe0.js} +1 -1
  98. package/dist/styles.css +1 -1
  99. package/dist/testing/index.js +2 -2
  100. package/dist/{useCommand-BIZX1ReM.js → useCommand-C3QTZIIw.js} +1 -1
  101. package/dist/{useGroupSheet-DxXzdKo3.js → useGroupSheet-LAnO37WV.js} +2 -2
  102. package/dist/{useRecordDialog-BLVSz7g3.js → useRecordDialog-Da1Sfak1.js} +1 -1
  103. package/dist/{useTypedEntry-CKuGqWT8.js → useTypedEntry-DIYdA7DK.js} +1 -1
  104. package/package.json +6 -2
  105. package/dist/application-D8Nm17zA.js +0 -420
  106. package/dist/client-CZgikXPG.js +0 -151
  107. package/dist/format-D8X4zsx6.js +0 -78
package/CHANGELOG.md CHANGED
@@ -1,5 +1,38 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.9.0 — 2026-10-15
4
+
5
+ File downloads and streams on the client, keyboard shortcuts that work on every layout, amounts with an application's own currency symbol, and the client half of an installable web app. go-core is unchanged (`v1.12.0`).
6
+
7
+ ### Fixed
8
+ - **Shortcuts on a symbol key** (`/`, `?`) now fire on layouts where the symbol needs Shift, such as Shift+7 for `/` on a Croatian keyboard. Set `shiftKey` explicitly to require Shift. The help dialog's `?` no longer requires Shift.
9
+
10
+ ### New
11
+ - **client:** `http.download(path, options)` fetches a file and resolves to `{ blob, filename, requestId }`; `filename` comes from `Content-Disposition` (RFC 6266: `filename*` wins, quotes handled, null when absent). `http.stream(path, options)` resolves to the raw `Response` for server-sent events and other streams. Both use the same base URL, credentials, `headers()` hook, `X-Request-ID`, abort and single 401 renew-and-retry as the JSON calls. `options` takes `accept` (default: any type) and, with `method: "POST"`, a `body` encoded like `post`. A non-2xx answer throws an `ApiError` built from the JSON error body, keeping `code`, `params` and `fields`. New exported types: `DownloadResult`, `RawRequestOptions`.
12
+ - **shortcuts:** `KeyboardShortcut.mod`. One registration `{ key: "k", mod: true }` means Ctrl or ⌘ alone, and is listed as "⌘ K" on Apple platforms and "Ctrl K" elsewhere.
13
+ - **format:** `createFormatting({ currencySymbol })` and `Formatting.currencySymbol`; `format.money(amount)` without an ISO currency shows the amount with two decimals through `formatters.number`, then the symbol (`1.234,50 KM`). `createApplication({ formatting: { currencySymbol } })` passes it on.
14
+ - **content:** `<Money>` (`amount`, `whole`, `decimals`, `symbol`, `emptyZero`, `signed`), formatted through the application's number formatter and currency symbol.
15
+ - **`@wssto2/vue-core/pwa`:** `captureInstallPrompt()`, `useInstallPrompt()` (`canInstall`, `installed`, `install()`), `isStandalone()`, `currentPlatform()`, and `registerServiceWorker({ url = "/sw.js", enabled = true })` with a `?build=` cache-buster. The caller passes `enabled: import.meta.env.PROD` (a worker would cache the dev server's modules). The worker itself stays the application's own file.
16
+
17
+ ### Docs
18
+ - Typed-routes recipe: downloads and streams. App-setup recipe: amounts, install and offline.
19
+
20
+ ## 0.8.0 — 2026-10-15
21
+
22
+ Saved views over go-core's `savedview` module, for go-core v1.12.0. The `SavedViews` seam gets its server adapter, so an application no longer writes its own.
23
+
24
+ ### Requires
25
+ - **go-core `v1.12.0`**: the `savedview` module (`savedview.Install`, `GET | POST /v1/saved-views` and `DELETE /v1/saved-views/:id`, a person's views per list, 20 per list). `src/modules` is regenerated and gains `savedview/`; the other modules change only in their version header. **`vue` 3.5.19 or later**, unchanged.
26
+
27
+ ### New
28
+ - **`serverSavedViews(http)`** from `/collection`: a `SavedViews` over the generated `savedview` routes. Pass it as `useCollection(def, { savedViews: serverSavedViews(usePlatform().http) })`; lists stay opt-in.
29
+ - `list` passes the library's abort signal; `save` sends the state as a JSON string and returns the view with its state as the object it was saved as; `remove` takes the id.
30
+ - The state is stored as the library wrote it, with its `version`. A view that carries none is not given one: `useCollection` skips it like a view of another `stateVersion`.
31
+ - The server's refusals (400 at the cap, 404 for another person's view) reach the caller as `ApiError`.
32
+
33
+ ### Docs
34
+ - The `SavedViews` doc comment names the adapter (it said go-core had no endpoint); the [list page](docs/recipes/list-page.md) recipe shows how a list opts in.
35
+
3
36
  ## 0.7.0 — 2026-10-15
4
37
 
5
38
  The incident screens and the reporter of the browser's own errors, for go-core v1.11.0. ARV's own screens (list, incident, report dialog) move into the library, on the generated `incident` module types.
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as t, computed as i, renderSlot as n } from "vue";
2
- import { u as l } from "./platform-Dr4iY3b8.js";
2
+ import { u as l } from "./platform-BZUWAXQV.js";
3
3
  const m = /* @__PURE__ */ t({
4
4
  __name: "AccessGate",
5
5
  props: {
@@ -2,17 +2,17 @@ import { defineComponent as S, ref as g, watch as w, computed as k, openBlock as
2
2
  import { useI18n as q } from "vue-i18n";
3
3
  import { _ as D } from "./IconTile.vue_vue_type_script_setup_true_lang-BmxCuUZ9.js";
4
4
  import { _ as I } from "./Tabs.vue_vue_type_script_setup_true_lang-tpkGp98F.js";
5
- import { u as O } from "./format-D8X4zsx6.js";
6
- import { _ as U } from "./DateField.vue_vue_type_script_setup_true_lang-DmYp54mq.js";
7
- import { _ as T } from "./FormGroup.vue_vue_type_script_setup_true_lang-BTADNpwB.js";
5
+ import { u as O } from "./format-Dn-BOb-o.js";
6
+ import { _ as U } from "./DateField.vue_vue_type_script_setup_true_lang-BuQY5e5x.js";
7
+ import { _ as T } from "./FormGroup.vue_vue_type_script_setup_true_lang-Bzm3yJy5.js";
8
8
  import { g as z } from "./options-QuOkMKVZ.js";
9
- import { P as G, c as H, i as J } from "./index-CXTJ_1NV.js";
10
- import { u as K } from "./platform-Dr4iY3b8.js";
9
+ import { P as G, c as H, i as J } from "./index-BB0_hxmE.js";
10
+ import { u as K } from "./platform-BZUWAXQV.js";
11
11
  import { b as M } from "./routeResource-CcYA75T2.js";
12
- import { _ as Q } from "./AsyncSection.vue_vue_type_script_setup_true_lang-GxAsImnO.js";
12
+ import { _ as Q } from "./AsyncSection.vue_vue_type_script_setup_true_lang-BTIUz3cG.js";
13
13
  import { _ as W } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
14
14
  import { u as X } from "./useLoad-W4tfxmm5.js";
15
- import { _ as Y } from "./PageBar.vue_vue_type_script_setup_true_lang-DPpcZxuT.js";
15
+ import { _ as Y } from "./PageBar.vue_vue_type_script_setup_true_lang-OE8VgTkY.js";
16
16
  import { _ as Z } from "./SectionIntro.vue_vue_type_script_setup_true_lang-CZtPrmXD.js";
17
17
  const ee = {
18
18
  class: "flex min-w-0 flex-col gap-group-gap",
@@ -2,7 +2,7 @@ import { defineComponent as $, getCurrentInstance as D, inject as F, computed as
2
2
  import { a as j } from "./mediaQuery-CygcXmFW.js";
3
3
  import { b as U } from "./bottomDock-BZEiOPYZ.js";
4
4
  import { useI18n as P } from "vue-i18n";
5
- import { _ as W } from "./Button.vue_vue_type_script_setup_true_lang-DQq_0P0p.js";
5
+ import { _ as W } from "./Button.vue_vue_type_script_setup_true_lang-Dn-cJcj3.js";
6
6
  import { _ as y } from "./Icon.vue_vue_type_script_lang-BhhsFYwp.js";
7
7
  import { _ as Y } from "./Menu.vue_vue_type_script_setup_true_lang-ldLdJ5Q-.js";
8
8
  import { RouterLink as B, useRoute as G } from "vue-router";
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as k, openBlock as n, createElementBlock as o, computed as $, Fragment as _, unref as i, renderSlot as y, renderList as b, createBlock as v, createVNode as c, withCtx as d, createElementVNode as m, toDisplayString as l, createCommentVNode as f, createTextVNode as g, normalizeClass as w, createSlots as x } from "vue";
2
2
  import { useI18n as C } from "vue-i18n";
3
- import { _ as h } from "./Button.vue_vue_type_script_setup_true_lang-DQq_0P0p.js";
3
+ import { _ as h } from "./Button.vue_vue_type_script_setup_true_lang-Dn-cJcj3.js";
4
4
  import { _ as S } from "./Icon.vue_vue_type_script_lang-BhhsFYwp.js";
5
5
  import { _ as E } from "./Banner.vue_vue_type_script_setup_true_lang-sv0phngk.js";
6
6
  import { _ as V } from "./EmptyState.vue_vue_type_script_setup_true_lang-DbZiO2RF.js";
@@ -1,30 +1,32 @@
1
- import { watchEffect as R, toValue as z, computed as f, triggerRef as w, shallowRef as L, defineComponent as A, useSlots as B, useTemplateRef as I, openBlock as y, createBlock as M, unref as N, withCtx as $, createElementVNode as D, mergeProps as v, createVNode as h, createElementBlock as K, h as x } from "vue";
1
+ import { watchEffect as L, toValue as R, computed as u, triggerRef as w, shallowRef as z, defineComponent as A, useSlots as B, useTemplateRef as M, openBlock as g, createBlock as N, unref as $, withCtx as I, createElementVNode as D, mergeProps as v, createVNode as h, createElementBlock as K, h as k } from "vue";
2
2
  import { RouterLink as P } from "vue-router";
3
- import { _ as k } from "./Icon.vue_vue_type_script_lang-BhhsFYwp.js";
3
+ import { _ as x } from "./Icon.vue_vue_type_script_lang-BhhsFYwp.js";
4
4
  import { u as T } from "./useWaitStatus-fsacMl4W.js";
5
5
  import { p as j } from "./perDocument-DUuFrdGU.js";
6
- function V(t, n) {
7
- return t.key.toLowerCase() === n.key.toLowerCase() && t.ctrlKey === (n.ctrlKey ?? !1) && t.shiftKey === (n.shiftKey ?? !1) && t.altKey === (n.altKey ?? !1) && t.metaKey === (n.metaKey ?? !1);
6
+ const V = /^[^\p{L}\p{N}\s]$/u;
7
+ function Y(t, n) {
8
+ const e = n.shiftKey === void 0 && V.test(n.key) || t.shiftKey === (n.shiftKey ?? !1), o = n.mod ? t.ctrlKey !== t.metaKey : t.ctrlKey === (n.ctrlKey ?? !1) && t.metaKey === (n.metaKey ?? !1);
9
+ return t.key.toLowerCase() === n.key.toLowerCase() && e && o && t.altKey === (n.altKey ?? !1);
8
10
  }
9
- function U(t) {
11
+ function O(t) {
10
12
  return t instanceof HTMLElement && (t.isContentEditable || /^(input|textarea|select)$/i.test(t.tagName));
11
13
  }
12
- function G(t, n) {
13
- R((e) => {
14
- const o = z(t);
14
+ function U(t, n) {
15
+ L((e) => {
16
+ const o = R(t);
15
17
  if (!o) return;
16
18
  if (o.label !== void 0) {
17
- const i = O(o);
19
+ const i = H(o);
18
20
  e(i.remove);
19
21
  }
20
- const a = (i) => {
21
- i.repeat || !V(i, o) || !(o.ctrlKey || o.altKey || o.metaKey) && U(i.target) || n(i) !== !1 && i.preventDefault();
22
+ const s = (i) => {
23
+ i.repeat || !Y(i, o) || !(o.mod || o.ctrlKey || o.altKey || o.metaKey) && O(i.target) || n(i) !== !1 && i.preventDefault();
22
24
  };
23
- window.addEventListener("keydown", a), e(() => window.removeEventListener("keydown", a));
25
+ window.addEventListener("keydown", s), e(() => window.removeEventListener("keydown", s));
24
26
  });
25
27
  }
26
- const H = Symbol("vue-core:shortcuts"), E = () => j(H, () => ({ items: [], changed: L(0) }));
27
- function O(t) {
28
+ const G = Symbol("vue-core:shortcuts"), E = () => j(G, () => ({ items: [], changed: z(0) }));
29
+ function H(t) {
28
30
  const n = E();
29
31
  return n.items = [...n.items, t], w(n.changed), {
30
32
  remove() {
@@ -33,31 +35,31 @@ function O(t) {
33
35
  };
34
36
  }
35
37
  function W(t) {
36
- const e = typeof navigator < "u" && /Mac|iPhone|iPad|iPod/.test(navigator.platform || navigator.userAgent) ? { ctrl: "⌃", alt: "⌥", shift: "⇧", meta: "⌘" } : { ctrl: "Ctrl", alt: "Alt", shift: "Shift", meta: "Meta" }, o = Y[t.key] ?? (t.key.length === 1 ? t.key.toUpperCase() : t.key);
38
+ const n = typeof navigator < "u" && /Mac|iPhone|iPad|iPod/.test(navigator.platform || navigator.userAgent), e = n ? { ctrl: "⌃", alt: "⌥", shift: "⇧", meta: "⌘" } : { ctrl: "Ctrl", alt: "Alt", shift: "Shift", meta: "Meta" }, o = t.mod ? !n : t.ctrlKey, s = t.mod ? n : t.metaKey, i = Z[t.key] ?? (t.key.length === 1 ? t.key.toUpperCase() : t.key);
37
39
  return [
38
- ...t.ctrlKey ? [e.ctrl] : [],
40
+ ...o ? [e.ctrl] : [],
39
41
  ...t.altKey ? [e.alt] : [],
40
42
  ...t.shiftKey ? [e.shift] : [],
41
- ...t.metaKey ? [e.meta] : [],
42
- o
43
+ ...s ? [e.meta] : [],
44
+ i
43
45
  ];
44
46
  }
45
- const Y = { ArrowLeft: "←", ArrowRight: "→", ArrowUp: "↑", ArrowDown: "↓", Escape: "Esc", " ": "Space" };
46
- function ne() {
47
+ const Z = { ArrowLeft: "←", ArrowRight: "→", ArrowUp: "↑", ArrowDown: "↓", Escape: "Esc", " ": "Space" };
48
+ function oe() {
47
49
  const t = E();
48
- return f(() => {
50
+ return u(() => {
49
51
  t.changed.value;
50
52
  const n = /* @__PURE__ */ new Map();
51
53
  for (const e of t.items) {
52
54
  const o = typeof e.label == "function" ? e.label() : e.label ?? "";
53
55
  if (o === "") continue;
54
- const a = e.group ?? null, i = n.get(`${a}\0${o}`) ?? { group: a, label: o, keys: [] }, d = W(e);
55
- i.keys.some((s) => s.join("+") === d.join("+")) || i.keys.push(d), n.set(`${a}\0${o}`, i);
56
+ const s = e.group ?? null, i = n.get(`${s}\0${o}`) ?? { group: s, label: o, keys: [] }, d = W(e);
57
+ i.keys.some((a) => a.join("+") === d.join("+")) || i.keys.push(d), n.set(`${s}\0${o}`, i);
56
58
  }
57
59
  return [...n.values()];
58
60
  });
59
61
  }
60
- const Z = ["href", "tabindex", "onClick"], q = ["href", "tabindex"], F = ["type", "disabled"], oe = /* @__PURE__ */ A({
62
+ const q = ["href", "tabindex", "onClick"], F = ["href", "tabindex"], J = ["type", "disabled"], ie = /* @__PURE__ */ A({
61
63
  __name: "Button",
62
64
  props: {
63
65
  prominence: { default: "standard" },
@@ -74,16 +76,16 @@ const Z = ["href", "tabindex", "onClick"], q = ["href", "tabindex"], F = ["type"
74
76
  },
75
77
  emits: ["click"],
76
78
  setup(t, { emit: n }) {
77
- const e = t, o = n, a = B(), i = I("element"), d = T(() => e.processing), s = f(() => e.disabled || e.processing);
78
- function p(r, l) {
79
- if (s.value) {
79
+ const e = t, o = n, s = B(), i = M("element"), d = T(() => e.processing), a = u(() => e.disabled || e.processing);
80
+ function m(r, l) {
81
+ if (a.value) {
80
82
  r.preventDefault();
81
83
  return;
82
84
  }
83
85
  o("click", r), l?.(r);
84
86
  }
85
- G(() => e.keyboardShortcut, (r) => {
86
- if (s.value || i.value?.closest("[inert]")) return !1;
87
+ U(() => e.keyboardShortcut, (r) => {
88
+ if (a.value || i.value?.closest("[inert]")) return !1;
87
89
  o("click", r);
88
90
  });
89
91
  const _ = {
@@ -107,76 +109,76 @@ const Z = ["href", "tabindex", "onClick"], q = ["href", "tabindex"], F = ["type"
107
109
  default: "bg-transparent text-content-link hover:underline",
108
110
  critical: "bg-transparent text-content-destructive hover:underline"
109
111
  }
110
- }, u = {
112
+ }, f = {
111
113
  xs: { box: "min-h-6 px-2.5 py-0.5 text-xs gap-1", icon: 12 },
112
114
  sm: { box: "min-h-8 px-3 py-1 text-xs gap-1.5", icon: 14 },
113
115
  md: { box: "min-h-9 px-4 py-1.5 text-sm gap-2", icon: 16 },
114
116
  lg: { box: "min-h-11 px-5 py-2 text-base gap-2", icon: 20 },
115
117
  xl: { box: "min-h-12 px-6 py-2.5 text-base gap-2.5", icon: 22 }
116
- }, m = f(() => [
118
+ }, p = u(() => [
117
119
  "hit-target flex cursor-pointer select-none items-center justify-center rounded-button text-center font-semibold",
118
120
  "transition duration-motion-fast ease-motion-standard",
119
121
  "focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-border-focus",
120
122
  _[e.prominence][e.tone ?? "default"],
121
- u[e.size].box,
123
+ f[e.size].box,
122
124
  // aria-disabled covers links, which have no `disabled` attribute.
123
125
  e.processing && !e.disabled ? "cursor-progress" : "disabled:cursor-not-allowed disabled:opacity-45 aria-disabled:cursor-not-allowed aria-disabled:opacity-45"
124
- ]), b = f(() => ({
125
- "aria-disabled": s.value || void 0,
126
+ ]), y = u(() => ({
127
+ "aria-disabled": a.value || void 0,
126
128
  "aria-busy": e.processing || void 0
127
- })), g = () => [
128
- e.processing && d.visible.value ? x(k, { name: "loader4Line", size: u[e.size].icon, class: "animate-spin", "data-test": "button-spinner" }) : e.icon ? x(k, { name: e.icon, size: u[e.size].icon }) : null,
129
- a.default?.(),
130
- e.trailingIcon ? x(k, { name: e.trailingIcon, size: u[e.size].icon }) : null
129
+ })), b = () => [
130
+ e.processing && d.visible.value ? k(x, { name: "loader4Line", size: f[e.size].icon, class: "animate-spin", "data-test": "button-spinner" }) : e.icon ? k(x, { name: e.icon, size: f[e.size].icon }) : null,
131
+ s.default?.(),
132
+ e.trailingIcon ? k(x, { name: e.trailingIcon, size: f[e.size].icon }) : null
131
133
  ];
132
- return (r, l) => e.to !== void 0 ? (y(), M(N(P), {
134
+ return (r, l) => e.to !== void 0 ? (g(), N($(P), {
133
135
  key: 0,
134
136
  to: e.to,
135
137
  custom: ""
136
138
  }, {
137
- default: $(({ href: c, navigate: C }) => [
139
+ default: I(({ href: c, navigate: S }) => [
138
140
  D("a", v({
139
141
  ref_key: "element",
140
142
  ref: i,
141
- href: s.value ? void 0 : c,
142
- class: m.value
143
- }, b.value, {
144
- tabindex: s.value ? -1 : void 0,
145
- onClick: (S) => p(S, C)
143
+ href: a.value ? void 0 : c,
144
+ class: p.value
145
+ }, y.value, {
146
+ tabindex: a.value ? -1 : void 0,
147
+ onClick: (C) => m(C, S)
146
148
  }), [
147
- h(g)
148
- ], 16, Z)
149
+ h(b)
150
+ ], 16, q)
149
151
  ]),
150
152
  _: 1
151
- }, 8, ["to"])) : e.href !== void 0 ? (y(), K("a", v({
153
+ }, 8, ["to"])) : e.href !== void 0 ? (g(), K("a", v({
152
154
  key: 1,
153
155
  ref_key: "element",
154
156
  ref: i,
155
- href: s.value ? void 0 : e.href,
156
- class: m.value
157
- }, b.value, {
158
- tabindex: s.value ? -1 : void 0,
159
- onClick: l[0] || (l[0] = (c) => p(c))
157
+ href: a.value ? void 0 : e.href,
158
+ class: p.value
159
+ }, y.value, {
160
+ tabindex: a.value ? -1 : void 0,
161
+ onClick: l[0] || (l[0] = (c) => m(c))
160
162
  }), [
161
- h(g)
162
- ], 16, q)) : (y(), K("button", v({
163
+ h(b)
164
+ ], 16, F)) : (g(), K("button", v({
163
165
  key: 2,
164
166
  ref_key: "element",
165
167
  ref: i,
166
168
  type: e.type,
167
- class: m.value,
168
- disabled: s.value
169
- }, b.value, {
170
- onClick: l[1] || (l[1] = (c) => p(c))
169
+ class: p.value,
170
+ disabled: a.value
171
+ }, y.value, {
172
+ onClick: l[1] || (l[1] = (c) => m(c))
171
173
  }), [
172
- h(g)
173
- ], 16, F));
174
+ h(b)
175
+ ], 16, J));
174
176
  }
175
177
  });
176
178
  export {
177
- oe as _,
178
- ne as a,
179
- V as m,
179
+ ie as _,
180
+ oe as a,
181
+ Y as m,
180
182
  W as s,
181
- G as u
183
+ U as u
182
184
  };
@@ -1,16 +1,16 @@
1
1
  import { defineComponent as k, computed as N, openBlock as n, createBlock as u, unref as a, withCtx as g, createElementBlock as p, Fragment as _, renderList as $, createElementVNode as i, toDisplayString as h, createCommentVNode as C, ref as x, watch as b, createVNode as y } from "vue";
2
2
  import { useI18n as E } from "vue-i18n";
3
- import { P as V, i as R } from "./index-CXTJ_1NV.js";
4
- import { u as S } from "./platform-Dr4iY3b8.js";
3
+ import { P as V, i as R } from "./index-BB0_hxmE.js";
4
+ import { u as S } from "./platform-BZUWAXQV.js";
5
5
  import { b as B } from "./routeResource-CcYA75T2.js";
6
- import { _ as F } from "./AsyncSection.vue_vue_type_script_setup_true_lang-GxAsImnO.js";
6
+ import { _ as F } from "./AsyncSection.vue_vue_type_script_setup_true_lang-BTIUz3cG.js";
7
7
  import { u as L } from "./useLoad-W4tfxmm5.js";
8
8
  import { _ as P } from "./Avatar.vue_vue_type_script_setup_true_lang-BPj_fkJR.js";
9
9
  import { _ as I } from "./IconTile.vue_vue_type_script_setup_true_lang-BmxCuUZ9.js";
10
- import { u as O } from "./format-D8X4zsx6.js";
11
- import { _ as T } from "./FormGroup.vue_vue_type_script_setup_true_lang-BTADNpwB.js";
10
+ import { u as O } from "./format-Dn-BOb-o.js";
11
+ import { _ as T } from "./FormGroup.vue_vue_type_script_setup_true_lang-Bzm3yJy5.js";
12
12
  import { g as U } from "./options-QuOkMKVZ.js";
13
- import { _ as q } from "./PageBar.vue_vue_type_script_setup_true_lang-DPpcZxuT.js";
13
+ import { _ as q } from "./PageBar.vue_vue_type_script_setup_true_lang-OE8VgTkY.js";
14
14
  import { _ as z } from "./SectionIntro.vue_vue_type_script_setup_true_lang-CZtPrmXD.js";
15
15
  import { _ as A } from "./ViewTabs.vue_vue_type_script_setup_true_lang-BjdDXE3T.js";
16
16
  const D = { class: "flex items-center pl-0.5" }, G = { class: "flex flex-wrap items-center gap-x-1.5" }, H = {
@@ -2,21 +2,21 @@ import { hasInjectionContext as lt, inject as ot, shallowRef as xe, computed as
2
2
  import { routerKey as ct } from "vue-router";
3
3
  import { a as qe, i as ut } from "./error-Bb_dr_Ay.js";
4
4
  import { d as dt } from "./definition-C7QuyV3i.js";
5
- import { d as Re, o as ft, L as Te, e as je, w as pt, r as vt } from "./state-ChVIjayU.js";
6
- import { a as mt } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-9Lt1XggN.js";
5
+ import { d as Re, o as ft, L as Te, e as je, w as pt, r as vt } from "./state-BiYPPKoj.js";
6
+ import { a as mt } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-DC-zSRcl.js";
7
7
  import { useI18n as he } from "vue-i18n";
8
- import { _ as ce, u as Ne } from "./Button.vue_vue_type_script_setup_true_lang-DQq_0P0p.js";
8
+ import { _ as ce, u as Ne } from "./Button.vue_vue_type_script_setup_true_lang-Dn-cJcj3.js";
9
9
  import { _ as Ge } from "./Tabs.vue_vue_type_script_setup_true_lang-tpkGp98F.js";
10
- import { u as Pe } from "./format-D8X4zsx6.js";
10
+ import { u as Pe } from "./format-Dn-BOb-o.js";
11
11
  import { _ as I } from "./Icon.vue_vue_type_script_lang-BhhsFYwp.js";
12
12
  import { _ as Ae } from "./Banner.vue_vue_type_script_setup_true_lang-sv0phngk.js";
13
13
  import { _ as Ee } from "./EmptyState.vue_vue_type_script_setup_true_lang-DbZiO2RF.js";
14
- import { u as bt, _ as gt } from "./rowLayout-Cz-K7jeo.js";
14
+ import { u as bt, _ as gt } from "./rowLayout-BLhJ9-42.js";
15
15
  import { _ as Ye } from "./Menu.vue_vue_type_script_setup_true_lang-ldLdJ5Q-.js";
16
16
  import { _ as Ze } from "./Popover.vue_vue_type_script_setup_true_lang-C70GrCP7.js";
17
17
  import { _ as we } from "./ToneDot.vue_vue_type_script_setup_true_lang-99rNn-L5.js";
18
- import { _ as ht } from "./NumberField.vue_vue_type_script_setup_true_lang-C3nw944P.js";
19
- import { _ as yt } from "./SelectField.vue_vue_type_script_setup_true_lang-iJm8qmjT.js";
18
+ import { _ as ht } from "./NumberField.vue_vue_type_script_setup_true_lang-CLN2COfp.js";
19
+ import { _ as yt } from "./SelectField.vue_vue_type_script_setup_true_lang-CYiarLAK.js";
20
20
  import { a as _t } from "./mediaQuery-CygcXmFW.js";
21
21
  import { _ as xt } from "./Sheet.vue_vue_type_script_setup_true_lang-sh9YD0Pm.js";
22
22
  import { t as ke } from "./toast-CqSDTWRX.js";
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as d, computed as u, useSlots as p, openBlock as w, createElementBlock as y, createVNode as f, unref as k, createSlots as b, renderList as m, withCtx as h, renderSlot as v, normalizeProps as _, guardReactiveProps as g } from "vue";
2
- import { u as R, _ as L } from "./rowLayout-Cz-K7jeo.js";
2
+ import { u as R, _ as L } from "./rowLayout-BLhJ9-42.js";
3
3
  const F = ["aria-busy"], V = /* @__PURE__ */ d({
4
4
  __name: "DataTable",
5
5
  props: {
@@ -1,12 +1,12 @@
1
1
  import { computed as p, defineComponent as re, useModel as oe, useTemplateRef as T, openBlock as g, createBlock as Y, mergeProps as E, unref as s, createSlots as ae, withCtx as y, createElementBlock as C, Fragment as H, createVNode as D, createTextVNode as ne, toDisplayString as K, createCommentVNode as M, createElementVNode as O, normalizeClass as le, renderSlot as S, mergeModels as G, mergeDefaults as se, nextTick as J } from "vue";
2
2
  import { useI18n as L } from "vue-i18n";
3
3
  import { _ as ie } from "./DateButton.vue_vue_type_script_setup_true_lang-CovKG5lN.js";
4
- import { u as W } from "./format-D8X4zsx6.js";
4
+ import { u as W } from "./format-Dn-BOb-o.js";
5
5
  import { _ as de } from "./Icon.vue_vue_type_script_lang-BhhsFYwp.js";
6
6
  import { u as ue } from "./mediaQuery-CygcXmFW.js";
7
7
  import { _ as ce } from "./Popover.vue_vue_type_script_setup_true_lang-C70GrCP7.js";
8
8
  import { e as me, _ as fe, f as pe, b as be } from "./options-QuOkMKVZ.js";
9
- import { e as q, f as j, m as X, g as Z, h as ve, j as ye, u as ke, k as ge, _ as he, l as xe, c as we } from "./useTypedEntry-CKuGqWT8.js";
9
+ import { e as q, f as j, m as X, g as Z, h as ve, j as ye, u as ke, k as ge, _ as he, l as xe, c as we } from "./useTypedEntry-DIYdA7DK.js";
10
10
  const _e = ["d", "m", "y"];
11
11
  function $e(o) {
12
12
  const r = o("2033-11-22"), t = { y: r.indexOf("2033") >= 0 ? r.indexOf("2033") : r.indexOf("33"), m: r.indexOf("11"), d: r.indexOf("22") };
@@ -1,14 +1,14 @@
1
1
  import { defineComponent as B, useTemplateRef as C, computed as y, ref as v, openBlock as D, createBlock as z, unref as r, withCtx as m, createVNode as F, createElementVNode as b, normalizeClass as $, toDisplayString as h } from "vue";
2
2
  import { useI18n as q } from "vue-i18n";
3
3
  import { i as k } from "./error-Bb_dr_Ay.js";
4
- import { u as V, _ as N } from "./CollectionPage.vue_vue_type_script_setup_true_lang-BmXnfM5f.js";
4
+ import { u as V, _ as N } from "./CollectionPage.vue_vue_type_script_setup_true_lang-Bcwwr8ng.js";
5
5
  import { u as P } from "./describeError-BqGAUZgX.js";
6
- import { u as I } from "./format-D8X4zsx6.js";
7
- import { e as a, R as O } from "./index-i-cTTVxo.js";
6
+ import { u as I } from "./format-Dn-BOb-o.js";
7
+ import { e as a, R as O } from "./index-C1jSzT1V.js";
8
8
  import { _ as W } from "./AlertDialog.vue_vue_type_script_setup_true_lang-BvGc1Rfl.js";
9
9
  import { t as i } from "./toast-CqSDTWRX.js";
10
10
  import { u as Y } from "./useLoad-W4tfxmm5.js";
11
- import { u as j } from "./platform-Dr4iY3b8.js";
11
+ import { u as j } from "./platform-BZUWAXQV.js";
12
12
  import { d as G } from "./definition-C7QuyV3i.js";
13
13
  import { r as H } from "./http-nz92KjdS.js";
14
14
  function J(u) {
@@ -2,7 +2,7 @@ import { defineComponent as B, openBlock as d, createBlock as L, withCtx as N, c
2
2
  import { s as T, u as W } from "./sectionIndex-BS0ic5W7.js";
3
3
  import { d as $, h as j } from "./options-QuOkMKVZ.js";
4
4
  import { useI18n as D } from "vue-i18n";
5
- import { _ as q } from "./Button.vue_vue_type_script_setup_true_lang-DQq_0P0p.js";
5
+ import { _ as q } from "./Button.vue_vue_type_script_setup_true_lang-Dn-cJcj3.js";
6
6
  const H = /* @__PURE__ */ B({
7
7
  __name: "GroupEditAction",
8
8
  props: {
@@ -1,18 +1,18 @@
1
1
  import { defineComponent as R, computed as N, openBlock as i, createElementBlock as k, createVNode as o, unref as e, withCtx as u, mergeProps as c, createBlock as b, createCommentVNode as d, createElementVNode as p, toDisplayString as v, createTextVNode as S } from "vue";
2
2
  import { useI18n as V } from "vue-i18n";
3
3
  import { RouterLink as B } from "vue-router";
4
- import { u as E } from "./format-D8X4zsx6.js";
4
+ import { u as E } from "./format-Dn-BOb-o.js";
5
5
  import { u as T } from "./useResourceForm-DYuYT_on.js";
6
- import { _ as h } from "./FormGroup.vue_vue_type_script_setup_true_lang-BTADNpwB.js";
6
+ import { _ as h } from "./FormGroup.vue_vue_type_script_setup_true_lang-Bzm3yJy5.js";
7
7
  import { _ as F } from "./FormView.vue_vue_type_script_setup_true_lang-Ncl9DmFB.js";
8
- import { _ as L } from "./SelectField.vue_vue_type_script_setup_true_lang-iJm8qmjT.js";
8
+ import { _ as L } from "./SelectField.vue_vue_type_script_setup_true_lang-CYiarLAK.js";
9
9
  import { _ as f } from "./TextField.vue_vue_type_script_setup_true_lang-7IAl4eAE.js";
10
10
  import { u as A } from "./useSaveChrome-7huA3FzR.js";
11
- import { P as D, b as G, i as I } from "./index-CXTJ_1NV.js";
11
+ import { P as D, b as G, i as I } from "./index-BB0_hxmE.js";
12
12
  import { t as M } from "./toast-CqSDTWRX.js";
13
- import { u as O } from "./platform-Dr4iY3b8.js";
13
+ import { u as O } from "./platform-BZUWAXQV.js";
14
14
  import { b as U } from "./routeResource-CcYA75T2.js";
15
- import { u as j } from "./fieldMessages-DTXpWnBd.js";
15
+ import { u as j } from "./fieldMessages-6UTV9yWL.js";
16
16
  import { _ as $ } from "./ActionRow.vue_vue_type_script_setup_true_lang-Cg1lhpcA.js";
17
17
  import { _ as z } from "./SectionIntro.vue_vue_type_script_setup_true_lang-CZtPrmXD.js";
18
18
  import { u as H } from "./languages-BShG9LpE.js";
@@ -1,30 +1,30 @@
1
1
  import { defineComponent as G, openBlock as a, createElementBlock as p, createVNode as l, unref as e, createElementVNode as n, toDisplayString as o, createCommentVNode as c, computed as h, createBlock as d, withCtx as r, Fragment as U, renderList as F, createTextVNode as S, mergeProps as b } from "vue";
2
2
  import { useI18n as ee } from "vue-i18n";
3
3
  import { useRoute as te } from "vue-router";
4
- import { _ as se } from "./Button.vue_vue_type_script_setup_true_lang-DQq_0P0p.js";
5
- import { a as ne } from "./neighbors-BKzihEGQ.js";
4
+ import { _ as se } from "./Button.vue_vue_type_script_setup_true_lang-Dn-cJcj3.js";
5
+ import { a as ne } from "./neighbors-CcCaurV5.js";
6
6
  import { _ as m } from "./KeyValue.vue_vue_type_script_setup_true_lang-wcZcvnow.js";
7
7
  import { _ as T } from "./Panel.vue_vue_type_script_setup_true_lang-D_Wg42hu.js";
8
8
  import { _ as ie } from "./IconTile.vue_vue_type_script_setup_true_lang-BmxCuUZ9.js";
9
9
  import { a as ae } from "./leaveGuard-Cc8yeLxM.js";
10
10
  import { u as le } from "./useResourceForm-DYuYT_on.js";
11
11
  import { _ as oe } from "./FormErrors.vue_vue_type_script_setup_true_lang-DJiK8iqo.js";
12
- import { _ as re } from "./FormGroup.vue_vue_type_script_setup_true_lang-BTADNpwB.js";
12
+ import { _ as re } from "./FormGroup.vue_vue_type_script_setup_true_lang-Bzm3yJy5.js";
13
13
  import { _ as ce } from "./FormView.vue_vue_type_script_setup_true_lang-Ncl9DmFB.js";
14
- import { _ as w } from "./SelectField.vue_vue_type_script_setup_true_lang-iJm8qmjT.js";
14
+ import { _ as w } from "./SelectField.vue_vue_type_script_setup_true_lang-CYiarLAK.js";
15
15
  import { _ as P } from "./TextareaField.vue_vue_type_script_setup_true_lang-Dyh4Hhyl.js";
16
16
  import { _ as M } from "./TextField.vue_vue_type_script_setup_true_lang-7IAl4eAE.js";
17
17
  import { u as de } from "./useSaveChrome-7huA3FzR.js";
18
- import { u as ue } from "./useCommand-BIZX1ReM.js";
19
- import { u as _e } from "./format-D8X4zsx6.js";
18
+ import { u as ue } from "./useCommand-C3QTZIIw.js";
19
+ import { u as _e } from "./format-Dn-BOb-o.js";
20
20
  import { t as me } from "./toast-CqSDTWRX.js";
21
- import { _ as fe } from "./RecordHeader.vue_vue_type_script_setup_true_lang-DPm9q1P_.js";
22
- import { u as pe } from "./platform-Dr4iY3b8.js";
21
+ import { _ as fe } from "./RecordHeader.vue_vue_type_script_setup_true_lang-CU7fZpp2.js";
22
+ import { u as pe } from "./platform-BZUWAXQV.js";
23
23
  import { a as be } from "./routeResource-CcYA75T2.js";
24
- import { a as ve } from "./ResourcePage.vue_vue_type_script_setup_true_lang-Cm3tx76N.js";
24
+ import { a as ve } from "./ResourcePage.vue_vue_type_script_setup_true_lang-y3gyR5A-.js";
25
25
  import { _ as N } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
26
26
  import { _ as q } from "./EmptyState.vue_vue_type_script_setup_true_lang-DbZiO2RF.js";
27
- import { u as xe, i as he, a as ye, M as ge, U as ke, m as we, f as $e, g as z, r as Se, S as Te, e as D, c as L, d as Ee, b as Ie } from "./index-D5_GAqjA.js";
27
+ import { u as xe, i as he, a as ye, M as ge, U as ke, m as we, f as $e, g as z, r as Se, S as Te, e as D, c as L, d as Ee, b as Ie } from "./index-DZQ3gy3e.js";
28
28
  import { _ as Ne } from "./Avatar.vue_vue_type_script_setup_true_lang-BPj_fkJR.js";
29
29
  const De = { class: "flex min-w-0 items-center gap-2" }, Le = { class: "flex min-w-0 flex-col items-start" }, Ce = { class: "max-w-full truncate text-xs font-semibold text-content-strong" }, Ae = {
30
30
  key: 0,
@@ -1,15 +1,15 @@
1
- import { defineComponent as $, useTemplateRef as D, computed as d, openBlock as n, createBlock as m, unref as e, withCtx as i, createVNode as c, createElementBlock as p, toDisplayString as r, createElementVNode as F, createTextVNode as f, createCommentVNode as O } from "vue";
1
+ import { defineComponent as $, useTemplateRef as D, computed as d, openBlock as n, createBlock as m, unref as e, withCtx as i, createVNode as c, createElementBlock as p, toDisplayString as a, createElementVNode as F, createTextVNode as f, createCommentVNode as O } from "vue";
2
2
  import { useI18n as q } from "vue-i18n";
3
3
  import { useRouter as U } from "vue-router";
4
- import { u as z, _ as P } from "./CollectionPage.vue_vue_type_script_setup_true_lang-BmXnfM5f.js";
5
- import { b as y } from "./rowLayout-Cz-K7jeo.js";
4
+ import { u as z, _ as P } from "./CollectionPage.vue_vue_type_script_setup_true_lang-Bcwwr8ng.js";
5
+ import { a as y } from "./rowLayout-BLhJ9-42.js";
6
6
  import { u as Y } from "./datePresets-DB13HHHd.js";
7
- import { _ as j } from "./Timestamp.vue_vue_type_script_setup_true_lang-u53rHMFG.js";
7
+ import { _ as j } from "./Timestamp.vue_vue_type_script_setup_true_lang-CAz2W69d.js";
8
8
  import { _ as g } from "./IconTile.vue_vue_type_script_setup_true_lang-BmxCuUZ9.js";
9
- import { u as K } from "./format-D8X4zsx6.js";
10
- import { u as G } from "./platform-Dr4iY3b8.js";
9
+ import { u as K } from "./format-Dn-BOb-o.js";
10
+ import { u as G } from "./platform-BZUWAXQV.js";
11
11
  import { _ as k } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
12
- import { i as v, a as H, C as J, _ as M, S as T, b as Q, c as S, d as W, e as E } from "./index-D5_GAqjA.js";
12
+ import { i as v, a as H, C as J, _ as M, S as T, b as Q, c as S, d as W, e as E } from "./index-DZQ3gy3e.js";
13
13
  const X = {
14
14
  key: 1,
15
15
  class: "flex min-w-0 items-center gap-3"
@@ -35,7 +35,7 @@ const X = {
35
35
  icon: h,
36
36
  label: t,
37
37
  type: "select",
38
- options: Object.entries(o).map(([a, V]) => ({ label: s(V), value: a }))
38
+ options: Object.entries(o).map(([r, V]) => ({ label: s(V), value: r }))
39
39
  }), L = Y("created_at"), x = d(() => [
40
40
  L.value,
41
41
  u("status", "checkCircle", s("core.incidents.table_filters.status"), S),
@@ -71,11 +71,11 @@ const X = {
71
71
  icon: "alertTriangle"
72
72
  })
73
73
  ]),
74
- "cell-title": i(({ item: t, compact: o, to: a }) => [
74
+ "cell-title": i(({ item: t, compact: o, to: r }) => [
75
75
  o ? (n(), m(e(y), {
76
76
  key: 0,
77
77
  title: t.title,
78
- to: a,
78
+ to: r,
79
79
  highlight: e(_).query.value.search
80
80
  }, null, 8, ["title", "to", "highlight"])) : (n(), p("div", X, [
81
81
  c(e(g), {
@@ -87,19 +87,19 @@ const X = {
87
87
  c(e(y), {
88
88
  title: t.title,
89
89
  subtitle: t.public_code,
90
- to: a,
90
+ to: r,
91
91
  highlight: e(_).query.value.search,
92
92
  "subtitle-selectable": ""
93
93
  }, null, 8, ["title", "subtitle", "to", "highlight"])
94
94
  ]))
95
95
  ]),
96
96
  "cell-severity": i(({ item: t, compact: o }) => [
97
- o ? (n(), p("span", Z, r(t.public_code), 1)) : O("", !0),
97
+ o ? (n(), p("span", Z, a(t.public_code), 1)) : O("", !0),
98
98
  c(e(k), {
99
99
  tone: e(W)[t.severity] ?? "neutral"
100
100
  }, {
101
101
  default: i(() => [
102
- f(r(e(s)(e(E)[t.severity] ?? t.severity)), 1)
102
+ f(a(e(s)(e(E)[t.severity] ?? t.severity)), 1)
103
103
  ]),
104
104
  _: 2
105
105
  }, 1032, ["tone"])
@@ -110,16 +110,16 @@ const X = {
110
110
  dot: ""
111
111
  }, {
112
112
  default: i(() => [
113
- f(r(e(s)(e(S)[t.status] ?? t.status)), 1)
113
+ f(a(e(s)(e(S)[t.status] ?? t.status)), 1)
114
114
  ]),
115
115
  _: 2
116
116
  }, 1032, ["tone"])
117
117
  ]),
118
118
  "cell-source": i(({ item: t }) => [
119
- F("span", ee, r(e(s)(e(T)[t.source] ?? t.source)), 1)
119
+ F("span", ee, a(e(s)(e(T)[t.source] ?? t.source)), 1)
120
120
  ]),
121
121
  "cell-last_seen_at": i(({ item: t, compact: o }) => [
122
- o ? (n(), p("span", te, r(e(R).date(t.last_seen_at)), 1)) : (n(), m(e(j), {
122
+ o ? (n(), p("span", te, a(e(R).date(t.last_seen_at)), 1)) : (n(), m(e(j), {
123
123
  key: 1,
124
124
  value: t.last_seen_at
125
125
  }, null, 8, ["value"]))
@@ -1,6 +1,6 @@
1
1
  import { toValue as oe, watch as ee, onUnmounted as le, computed as i, ref as j, defineComponent as ne, useSlots as q, useId as ie, inject as re, openBlock as t, createBlock as _, Teleport as de, createElementBlock as a, unref as s, createVNode as k, Transition as T, withCtx as z, normalizeStyle as V, createCommentVNode as o, normalizeClass as y, createElementVNode as n, mergeProps as G, toDisplayString as m, renderSlot as f, createTextVNode as ce } from "vue";
2
2
  import { useI18n as ue } from "vue-i18n";
3
- import { _ as J } from "./Button.vue_vue_type_script_setup_true_lang-DQq_0P0p.js";
3
+ import { _ as J } from "./Button.vue_vue_type_script_setup_true_lang-Dn-cJcj3.js";
4
4
  import { _ as Q } from "./Icon.vue_vue_type_script_lang-BhhsFYwp.js";
5
5
  import { u as pe } from "./mediaQuery-CygcXmFW.js";
6
6
  import { u as me } from "./useDialog-CXR3hN0G.js";
@@ -1,11 +1,11 @@
1
1
  import { defineComponent as _, computed as d, openBlock as y, createBlock as w, unref as e, withCtx as i, createVNode as l } from "vue";
2
2
  import { useI18n as v } from "vue-i18n";
3
3
  import { useRoute as k, useRouter as R } from "vue-router";
4
- import { a as $ } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-9Lt1XggN.js";
5
- import { _ as b } from "./AsyncSection.vue_vue_type_script_setup_true_lang-GxAsImnO.js";
4
+ import { a as $ } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-DC-zSRcl.js";
5
+ import { _ as b } from "./AsyncSection.vue_vue_type_script_setup_true_lang-BTIUz3cG.js";
6
6
  import { u as g } from "./useLoad-W4tfxmm5.js";
7
- import { u as x } from "./PersonAccess.vue_vue_type_script_setup_true_lang-07pq4SrY.js";
8
- import { _ as P } from "./RoleEditor.vue_vue_type_script_setup_true_lang-DuQR8hFf.js";
7
+ import { u as x } from "./PersonAccess.vue_vue_type_script_setup_true_lang-CBQ1kv8G.js";
8
+ import { _ as P } from "./RoleEditor.vue_vue_type_script_setup_true_lang-BcUxVL9y.js";
9
9
  import { accessPages as u } from "./access/index.js";
10
10
  const j = /* @__PURE__ */ _({
11
11
  __name: "NewRolePage",