@wssto2/vue-core 0.15.3 → 0.17.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 (153) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/README.md +4 -3
  3. package/bin/architecture/engine.mjs +3 -0
  4. package/bin/architecture/permissions.mjs +56 -0
  5. package/bin/architecture/rules.mjs +17 -0
  6. package/bin/commands/check-architecture.mjs +19 -0
  7. package/bin/config.mjs +2 -0
  8. package/dist/{AccessGate.vue_vue_type_script_setup_true_lang-BH3f0hda.js → AccessGate.vue_vue_type_script_setup_true_lang-Bg8JFAOT.js} +1 -1
  9. package/dist/{ActionRow.vue_vue_type_script_setup_true_lang-DybAIOHS.js → ActionRow.vue_vue_type_script_setup_true_lang-B5IMNnTf.js} +4 -4
  10. package/dist/{Activity-DM9t5d3D.js → Activity-CiYn5E6A.js} +7 -7
  11. package/dist/{AdaptivePageShell.vue_vue_type_script_setup_true_lang-uO4EAmBb.js → AdaptivePageShell.vue_vue_type_script_setup_true_lang-oXWQTfBs.js} +170 -168
  12. package/dist/{Changes-DYpysvfX.js → Changes-Cy8STpLX.js} +3 -3
  13. package/dist/{CollectionPage.vue_vue_type_script_setup_true_lang-qxeSTAKV.js → CollectionPage.vue_vue_type_script_setup_true_lang-Dr6nFNBB.js} +6 -6
  14. package/dist/{DataTable.vue_vue_type_script_setup_true_lang-DbRS37n3.js → DataTable.vue_vue_type_script_setup_true_lang-D372wlxR.js} +1 -1
  15. package/dist/{DateField.vue_vue_type_script_setup_true_lang-DzCvYHAf.js → DateField.vue_vue_type_script_setup_true_lang-D0KcfW8R.js} +17 -16
  16. package/dist/{DeadLetters-vt9vhJD7.js → DeadLetters-DhJkMpd_.js} +4 -4
  17. package/dist/{FormGroup.vue_vue_type_script_setup_true_lang-dsO1m9Mm.js → FormGroup.vue_vue_type_script_setup_true_lang-lvAuBG-0.js} +2 -2
  18. package/dist/FormRow.vue_vue_type_script_setup_true_lang-CpgNVQF4.js +160 -0
  19. package/dist/{FormView.vue_vue_type_script_setup_true_lang-Bq_Qa4py.js → FormView.vue_vue_type_script_setup_true_lang-D01Jr4UU.js} +5 -5
  20. package/dist/{General-oUI2MiwO.js → General-CwTPC5UP.js} +11 -11
  21. package/dist/{IncidentRecord-CQdv_bN5.js → IncidentRecord-hXEGuLGg.js} +14 -14
  22. package/dist/{IncidentsList-DwQ0wuM8.js → IncidentsList-C41VyDwK.js} +6 -6
  23. package/dist/{NewRolePage-C-wbA-uW.js → NewRolePage-BYYZJkK7.js} +3 -3
  24. package/dist/{NumberField.vue_vue_type_script_setup_true_lang-U-_kcnGr.js → NumberField.vue_vue_type_script_setup_true_lang-BhNZgEW6.js} +7 -6
  25. package/dist/{PersonAccess.vue_vue_type_script_setup_true_lang-BPDh9s2m.js → PersonAccess.vue_vue_type_script_setup_true_lang-mYFuG-Y3.js} +56 -56
  26. package/dist/{ProfilePage-Di77M2cX.js → ProfilePage-DGEsIycR.js} +13 -13
  27. package/dist/{RecordHeader.vue_vue_type_script_setup_true_lang-CZtvUH5L.js → RecordHeader.vue_vue_type_script_setup_true_lang-B3BnYg1x.js} +1 -1
  28. package/dist/{ResourcePage.vue_vue_type_script_setup_true_lang-uLrX13ab.js → ResourcePage.vue_vue_type_script_setup_true_lang-1iZtj3rh.js} +1 -1
  29. package/dist/{RoleEditor.vue_vue_type_script_setup_true_lang-V2D7fhR9.js → RoleEditor.vue_vue_type_script_setup_true_lang-BslSDDiM.js} +10 -10
  30. package/dist/{RolePage-Crp71rRb.js → RolePage-C08ZUqw1.js} +9 -9
  31. package/dist/{RolesPage-DKXXnnDV.js → RolesPage-FOuY1VKg.js} +10 -10
  32. package/dist/{SectionNavigator.vue_vue_type_script_setup_true_lang-5ogQCj8M.js → SectionNavigator.vue_vue_type_script_setup_true_lang-DCTFxfPB.js} +2 -2
  33. package/dist/{SegmentedField.vue_vue_type_script_setup_true_lang-zv_AxpBn.js → SegmentedField.vue_vue_type_script_setup_true_lang-CLR6EvzO.js} +13 -12
  34. package/dist/{SelectField.vue_vue_type_script_setup_true_lang-CLkoPbGm.js → SelectField.vue_vue_type_script_setup_true_lang-D5xYofdb.js} +10 -9
  35. package/dist/{ServiceAccountDialog.vue_vue_type_script_setup_true_lang-C7WKxJ9i.js → ServiceAccountDialog.vue_vue_type_script_setup_true_lang-CDr4WNIb.js} +9 -9
  36. package/dist/{ServiceAccountRecord-CTU10RWy.js → ServiceAccountRecord-kWwIQGZb.js} +12 -12
  37. package/dist/{ServiceAccountsList-BVRjoswH.js → ServiceAccountsList-CKy9_YHP.js} +8 -8
  38. package/dist/{Sessions-BHwMrF7c.js → Sessions-BDc8gdYH.js} +4 -4
  39. package/dist/{SettingsPage-lRWvsMYK.js → SettingsPage-t-8kmFVT.js} +13 -13
  40. package/dist/{SignIn-HnujOMRY.js → SignIn-CqtkvtCZ.js} +7 -7
  41. package/dist/{SignInPage-c886Fvd7.js → SignInPage-DcdNKZIb.js} +4 -4
  42. package/dist/{SignIns-BsTlN2Zc.js → SignIns-D4-nGu0B.js} +3 -3
  43. package/dist/{SwitchField.vue_vue_type_script_setup_true_lang-Ds4q0bbl.js → SwitchField.vue_vue_type_script_setup_true_lang-CLtcuofe.js} +15 -14
  44. package/dist/{TextField.vue_vue_type_script_setup_true_lang-CWIeeZRE.js → TextField.vue_vue_type_script_setup_true_lang-CVGh-p3J.js} +7 -6
  45. package/dist/{TextareaField.vue_vue_type_script_setup_true_lang-D2j4s96s.js → TextareaField.vue_vue_type_script_setup_true_lang-YxUlNHSk.js} +6 -5
  46. package/dist/{TimeField.vue_vue_type_script_setup_true_lang-C1mLvOkc.js → TimeField.vue_vue_type_script_setup_true_lang-DHNC_MLt.js} +30 -29
  47. package/dist/{Timestamp.vue_vue_type_script_setup_true_lang-jCXYFLtq.js → Timestamp.vue_vue_type_script_setup_true_lang-d_KuxWjH.js} +1 -1
  48. package/dist/{UserRecord-DrbpVHh9.js → UserRecord-CwZCr9Im.js} +10 -10
  49. package/dist/{UsersList-M5tBxrox.js → UsersList-Cn19sFgv.js} +4 -4
  50. package/dist/access/index.js +4 -4
  51. package/dist/app/application.d.ts +2 -0
  52. package/dist/app/index.js +2 -2
  53. package/dist/app/validate.d.ts +3 -1
  54. package/dist/{application-C900Wz0A.js → application-CDSweJb9.js} +144 -142
  55. package/dist/back-LcLlFodC.js +63 -0
  56. package/dist/{chrome-nUcmVu8G.js → chrome-kMBKIB1N.js} +2 -2
  57. package/dist/collection/authors.d.ts +27 -0
  58. package/dist/collection/index.d.ts +2 -0
  59. package/dist/collection/index.js +81 -76
  60. package/dist/config/index.d.ts +42 -0
  61. package/dist/config/index.js +12 -3
  62. package/dist/content/Panel.vue.d.ts +1 -1
  63. package/dist/content/index.js +2 -2
  64. package/dist/{contributions-9CPT-Z5v.js → contributions-B0x5x5xD.js} +1 -1
  65. package/dist/form/CommandDialog.vue.d.ts +1 -1
  66. package/dist/form/DateField.vue.d.ts +1 -1
  67. package/dist/form/DateTimeField.vue.d.ts +1 -1
  68. package/dist/form/FileField.vue.d.ts +1 -1
  69. package/dist/form/FormRow.vue.d.ts +2 -2
  70. package/dist/form/I18nField.vue.d.ts +2 -2
  71. package/dist/form/TextField.vue.d.ts +1 -1
  72. package/dist/form/TextareaField.vue.d.ts +2 -2
  73. package/dist/form/date/value.d.ts +21 -0
  74. package/dist/form/index.d.ts +1 -0
  75. package/dist/form/index.js +745 -715
  76. package/dist/format/format.d.ts +8 -2
  77. package/dist/format/index.js +1 -1
  78. package/dist/format-C_HXlOYQ.js +136 -0
  79. package/dist/{guards-6fJxfUtk.js → guards-CNJ0ATVC.js} +1 -1
  80. package/dist/i18n/index.d.ts +14 -2
  81. package/dist/i18n/index.js +84 -73
  82. package/dist/i18n/messages.d.ts +10 -1
  83. package/dist/i18n/runtime.d.ts +3 -1
  84. package/dist/identity/index.js +3 -3
  85. package/dist/identity/profile/EmailChangeDialog.vue.d.ts +2 -2
  86. package/dist/identity/users/list.d.ts +1 -1
  87. package/dist/incidents/index.js +1 -1
  88. package/dist/{index-_hDHxrt5.js → index-1HS7O2-e.js} +9 -9
  89. package/dist/{index-DM_nWOYf.js → index-BA2w8uwD.js} +86 -86
  90. package/dist/{index-vES_D5ls.js → index-SLJWm40T.js} +4 -4
  91. package/dist/index.d.ts +1 -1
  92. package/dist/index.js +1 -1
  93. package/dist/modal/DiscardChangesModal.vue.d.ts +2 -2
  94. package/dist/modal/Modal.vue.d.ts +2 -2
  95. package/dist/modal/Sheet.vue.d.ts +2 -2
  96. package/dist/modules/identity/routes.d.ts +1 -1
  97. package/dist/modules/identity/schemas.d.ts +2 -2
  98. package/dist/{navigation-DMJ6akat.js → navigation-d-JAPBGA.js} +1 -1
  99. package/dist/{neighbors-DrEahe7B.js → neighbors-Dg_LU9ry.js} +32 -31
  100. package/dist/notifications/index.js +1 -1
  101. package/dist/onboarding/index.js +1 -1
  102. package/dist/options-mOOX6JSS.js +214 -0
  103. package/dist/overlay/AlertDialog.vue.d.ts +3 -3
  104. package/dist/overlay/Menu.vue.d.ts +2 -2
  105. package/dist/overlay/PhotoViewer.vue.d.ts +2 -2
  106. package/dist/overlay/Popover.vue.d.ts +2 -2
  107. package/dist/page/SectionNavigator.vue.d.ts +1 -1
  108. package/dist/page/SectionPanel.vue.d.ts +1 -1
  109. package/dist/page/back.d.ts +37 -0
  110. package/dist/page/index.d.ts +1 -0
  111. package/dist/page/index.js +46 -42
  112. package/dist/phone/index.js +57 -56
  113. package/dist/platform/index.d.ts +10 -1
  114. package/dist/platform/index.js +16 -15
  115. package/dist/platform/platform.d.ts +4 -2
  116. package/dist/{platform-ORzRR3Tw.js → platform-DU9QFts8.js} +7 -6
  117. package/dist/playwright/config.d.ts +33 -0
  118. package/dist/playwright/index.d.ts +2 -0
  119. package/dist/playwright/index.js +192 -171
  120. package/dist/resource/index.js +1 -1
  121. package/dist/router/index.js +3 -3
  122. package/dist/router/sections.d.ts +1 -1
  123. package/dist/{rowLayout-QKfNHsML.js → rowLayout-PIuD7MGo.js} +2 -2
  124. package/dist/sections-BpiRLntE.js +54 -0
  125. package/dist/{serverMessages-Ce8-MK4e.js → serverMessages-C_KkDvpT.js} +1 -1
  126. package/dist/shell/index.js +5 -5
  127. package/dist/state/NextStepPanel.vue.d.ts +63 -0
  128. package/dist/state/PhaseTiles.vue.d.ts +20 -0
  129. package/dist/state/PhaseTrack.vue.d.ts +48 -0
  130. package/dist/state/RequirementList.vue.d.ts +10 -0
  131. package/dist/state/TodoRow.vue.d.ts +52 -0
  132. package/dist/state/index.d.ts +9 -0
  133. package/dist/state/index.js +731 -126
  134. package/dist/state/phaseStep.d.ts +7 -0
  135. package/dist/state/phaseTile.d.ts +10 -0
  136. package/dist/state/requirementItem.d.ts +16 -0
  137. package/dist/state/todoRow.d.ts +8 -0
  138. package/dist/{state-QDaxntgR.js → state-z1iPF1DT.js} +1 -1
  139. package/dist/styles.css +1 -1
  140. package/dist/{suggestions-q_v3M7G6.js → suggestions-DeMgs_ki.js} +1 -1
  141. package/dist/testing/format.d.ts +1 -1
  142. package/dist/testing/index.js +31 -31
  143. package/dist/{useCommand-DAMgQ5NE.js → useCommand-DQKvro1n.js} +2 -2
  144. package/dist/{useGroupSheet-B-Hs4gNO.js → useGroupSheet-CRw3MUmX.js} +3 -3
  145. package/dist/{usePreferences-BfMXVbSO.js → usePreferences-DB29UTFD.js} +1 -1
  146. package/dist/{useRecordDialog-QPKFH1Ww.js → useRecordDialog-0azHxxvm.js} +1 -1
  147. package/dist/{useResourceForm-Oa6bk3NI.js → useResourceForm-zVuWerSn.js} +1 -1
  148. package/dist/{useSaveChrome-7huA3FzR.js → useSaveChrome-DB9OwIjT.js} +1 -1
  149. package/dist/{useTypedEntry-CITij2C_.js → useTypedEntry-BsMV66Yc.js} +46 -45
  150. package/package.json +1 -1
  151. package/dist/format-Cp1h0vsC.js +0 -125
  152. package/dist/options-B48UiYsG.js +0 -368
  153. package/dist/sections-DI_JhgQG.js +0 -53
@@ -13,6 +13,8 @@ export interface MessageNamespace {
13
13
  readonly namespace: string;
14
14
  /** The loader per locale. A locale without one falls back to the application's fallback locale. */
15
15
  readonly loaders: Readonly<Record<string, MessageLoader>>;
16
+ /** The loaders of an `import.meta.glob("./*.json")`, by path; their locale is known only with the application's `localeFiles` (`messageLoaders`). */
17
+ readonly files: Readonly<Record<string, MessageLoader>>;
16
18
  /** Loaded before the application first renders (the shell's own texts), not on demand. */
17
19
  readonly essential: boolean;
18
20
  }
@@ -20,11 +22,18 @@ export interface LocaleMessagesOptions {
20
22
  /** Default false: loaded when a route of the owning feature is entered. */
21
23
  essential?: boolean;
22
24
  }
25
+ /** Which file name holds a locale's messages when it differs from the locale (`{ bs: "ba" }`: `ba.json` is Bosnian). */
26
+ export type LocaleFiles = Readonly<Record<string, string>>;
27
+ /** The loaders of a namespace by locale: the explicit ones, plus each glob file under its locale (the file name, or the locale `localeFiles` maps to it). */
28
+ export declare function messageLoaders(entry: MessageNamespace, localeFiles?: LocaleFiles): Readonly<Record<string, MessageLoader>>;
23
29
  /**
24
30
  * Binds a message namespace to its files, one lazy loader per locale:
25
31
  *
26
32
  * localeMessages("tickets", { en: () => import("./i18n/en.json"), hr: () => import("./i18n/hr.json") })
33
+ * localeMessages("tickets", import.meta.glob("./i18n/*.json")) // lazy; file names are locales, or via createApplication({ localeFiles })
27
34
  *
28
- * Nothing loads until the runtime needs it. `core` belongs to the library.
35
+ * Nothing loads until the runtime needs it. Use the lazy glob, never `{ eager: true }`. `core` belongs to the library.
29
36
  */
30
37
  export declare function localeMessages(namespace: string, loaders: Readonly<Record<string, MessageLoader>>, options?: LocaleMessagesOptions): MessageNamespace;
38
+ /** The lazy `import.meta.glob("./*.json")` of the namespace's folder (its values are typed `unknown` by Vite; the files are the messages). */
39
+ export declare function localeMessages(namespace: string, files: Readonly<Record<`${string}.json`, () => Promise<unknown>>>, options?: LocaleMessagesOptions): MessageNamespace;
@@ -1,4 +1,4 @@
1
- import type { MessageNamespace } from "./messages";
1
+ import { type LocaleFiles, type MessageNamespace } from "./messages";
2
2
  /** The part of a vue-i18n composer (`i18n.global`) the runtime writes to. */
3
3
  export interface MessageTarget {
4
4
  locale: {
@@ -15,6 +15,8 @@ export interface MessageRuntimeOptions {
15
15
  target: MessageTarget;
16
16
  /** Every namespace of the application, unique by name (the application validates that). */
17
17
  namespaces: readonly MessageNamespace[];
18
+ /** The file name that holds a locale's messages when it is not the locale itself, for namespaces declared from a glob. */
19
+ localeFiles?: LocaleFiles;
18
20
  /** The locale whose messages stand in for a missing one. */
19
21
  fallback: string;
20
22
  /** The locales `setLocale` accepts. */
@@ -1,7 +1,7 @@
1
1
  import { i as a } from "../preferences-hYhrw8Uy.js";
2
- import { k as o, r as n, t as i, P as r, j as u, h as c, _ as d, q as S, i as g, U as A, v as f, w as l, x as p, y as m, z as I, A as R, o as x, B as y, C as P, n as U, s as v, e as D, g as E, b, f as w, D as F, E as B, c as C } from "../index-DM_nWOYf.js";
3
- import { a as T, _ } from "../ActionRow.vue_vue_type_script_setup_true_lang-DybAIOHS.js";
4
- import { i as k, l as N, r as O, s as j, a as q, u as z } from "../usePreferences-BfMXVbSO.js";
2
+ import { k as o, r as n, t as i, P as r, j as u, h as c, _ as d, q as S, i as g, U as A, v as f, w as l, x as p, y as m, z as I, A as R, o as x, B as y, C as P, n as U, s as v, e as D, g as E, b, f as w, D as F, E as B, c as C } from "../index-BA2w8uwD.js";
3
+ import { a as T, _ } from "../ActionRow.vue_vue_type_script_setup_true_lang-B5IMNnTf.js";
4
+ import { i as k, l as N, r as O, s as j, a as q, u as z } from "../usePreferences-DB29UTFD.js";
5
5
  import { s as K } from "../routes-Beyr5NQo.js";
6
6
  export {
7
7
  T as ActionRow,
@@ -3,12 +3,12 @@ declare function present(existing: PendingEmail | null): void;
3
3
  declare const _default: import("vue").DefineComponent<{}, {
4
4
  present: typeof present;
5
5
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
6
- changed: (profile: ProfileResponse) => any;
7
6
  pending: (pending: PendingEmail | null) => any;
7
+ changed: (profile: ProfileResponse) => any;
8
8
  cancelled: () => any;
9
9
  }, string, import("vue").PublicProps, Readonly<{}> & Readonly<{
10
- onChanged?: ((profile: ProfileResponse) => any) | undefined;
11
10
  onPending?: ((pending: PendingEmail | null) => any) | undefined;
11
+ onChanged?: ((profile: ProfileResponse) => any) | undefined;
12
12
  onCancelled?: (() => any) | undefined;
13
13
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
14
14
  export default _default;
@@ -11,7 +11,7 @@ export type UsersCollection = CollectionDefinition<any, any, any, any>;
11
11
  * The list of people, one definition for the list page and for the previous / next of a person's record, so both ask
12
12
  * the server the same question. The sorts and views are the ones go-core accepts.
13
13
  */
14
- export declare function userList(http: HttpClient): CollectionDefinition<import("..").UserRow, "name" | "email" | "login" | "created_at", "last_sign_in", "inactive" | "all" | "locked" | "active", Readonly<Record<string, unknown>>>;
14
+ export declare function userList(http: HttpClient): CollectionDefinition<import("..").UserRow, "name" | "email" | "login" | "created_at", "last_sign_in", "inactive" | "all" | "active" | "locked", Readonly<Record<string, unknown>>>;
15
15
  /**
16
16
  * The definition the users screens ask the list with: the application's (`usersFeature({ collection })`) or `userList`. The list
17
17
  * page and the previous / next of a record both call it, so they ask the server the same question.
@@ -1,4 +1,4 @@
1
- import { h as t, j as i, k as r, l as n, i as a } from "../index-_hDHxrt5.js";
1
+ import { h as t, j as i, k as r, l as n, i as a } from "../index-1HS7O2-e.js";
2
2
  export {
3
3
  t as MAX_REPORTS_PER_SESSION,
4
4
  i as clientErrorReporter,
@@ -3,17 +3,17 @@ import { d as $, p as V } from "./feature-DdUAfyi4.js";
3
3
  import { defineComponent as y, computed as k, onMounted as U, watch as L, openBlock as S, createBlock as I, unref as e, withCtx as T, createElementVNode as X, createVNode as c, mergeProps as l, createCommentVNode as A, ref as B } from "vue";
4
4
  import { d as G } from "./context-Ch1r4fdN.js";
5
5
  import { useI18n as q } from "vue-i18n";
6
- import { a as O } from "./FormGroup.vue_vue_type_script_setup_true_lang-dsO1m9Mm.js";
7
- import { _ as F } from "./SelectField.vue_vue_type_script_setup_true_lang-CLkoPbGm.js";
8
- import { _ as b } from "./TextareaField.vue_vue_type_script_setup_true_lang-D2j4s96s.js";
9
- import { _ as w } from "./TextField.vue_vue_type_script_setup_true_lang-CWIeeZRE.js";
10
- import { u as j, _ as K } from "./useCommand-DAMgQ5NE.js";
6
+ import { a as O } from "./FormGroup.vue_vue_type_script_setup_true_lang-lvAuBG-0.js";
7
+ import { _ as F } from "./SelectField.vue_vue_type_script_setup_true_lang-D5xYofdb.js";
8
+ import { _ as b } from "./TextareaField.vue_vue_type_script_setup_true_lang-YxUlNHSk.js";
9
+ import { _ as w } from "./TextField.vue_vue_type_script_setup_true_lang-CVGh-p3J.js";
10
+ import { u as j, _ as K } from "./useCommand-DQKvro1n.js";
11
11
  import { t as z } from "./toast-CqSDTWRX.js";
12
- import { u as R } from "./platform-ORzRR3Tw.js";
12
+ import { u as R } from "./platform-DU9QFts8.js";
13
13
  import { d as H, r as Q, a as W } from "./http-D6qOS6xs.js";
14
14
  import { _ as Y } from "./AccountMenuItem.vue_vue_type_script_setup_true_lang-BIYgaihv.js";
15
15
  import { d as J } from "./defineRoutes-BGAdiIrt.js";
16
- import { d as Z } from "./application-C900Wz0A.js";
16
+ import { d as Z } from "./application-CDSweJb9.js";
17
17
  import { R as ee } from "./client-Do8v1I5l.js";
18
18
  import { a as te } from "./error-CD7x0Jrz.js";
19
19
  const g = {
@@ -268,11 +268,11 @@ const Qe = {
268
268
  }, null, 8, ["label"])) : A("", !0);
269
269
  }
270
270
  }), P = J({
271
- index: { name: "incidents.index", path: "/incidents", component: () => import("./IncidentsList-DwQ0wuM8.js"), meta: { access: N, titleKey: "core.incidents.title" } },
271
+ index: { name: "incidents.index", path: "/incidents", component: () => import("./IncidentsList-C41VyDwK.js"), meta: { access: N, titleKey: "core.incidents.title" } },
272
272
  details: {
273
273
  name: "incidents.details",
274
274
  path: "/incidents/:incidentID",
275
- component: () => import("./IncidentRecord-CQdv_bN5.js"),
275
+ component: () => import("./IncidentRecord-hXEGuLGg.js"),
276
276
  // Previous / next record swaps the id in place.
277
277
  meta: { access: N, titleKey: "core.incidents.title", remountOnParam: "incidentID" }
278
278
  }
@@ -3,39 +3,39 @@ import { d as ne, p as se } from "./feature-DdUAfyi4.js";
3
3
  import { k as Ie, u as Pe } from "./keepAlive-ClGnsIzT.js";
4
4
  import { d as X } from "./defineRoutes-BGAdiIrt.js";
5
5
  import { d as N } from "./context-Ch1r4fdN.js";
6
- import { defineComponent as $, computed as A, watch as ee, openBlock as m, createElementBlock as w, ref as oe, useTemplateRef as je, watchEffect as Ke, onBeforeUnmount as Le, createVNode as h, unref as t, createElementVNode as g, toDisplayString as _, createCommentVNode as k, createBlock as v, useId as Re, Teleport as ze, normalizeClass as ae, createTextVNode as E, withCtx as p, mergeProps as j, h as Te, Fragment as R, renderList as D, createSlots as me, renderSlot as Ue } from "vue";
6
+ import { defineComponent as $, computed as A, watch as ee, openBlock as m, createElementBlock as w, ref as oe, useTemplateRef as je, watchEffect as Ke, onBeforeUnmount as Le, createVNode as h, unref as t, createElementVNode as _, toDisplayString as g, createCommentVNode as k, createBlock as v, useId as Re, Teleport as ze, normalizeClass as ae, createTextVNode as E, withCtx as p, mergeProps as j, h as Te, Fragment as R, renderList as D, createSlots as me, renderSlot as Ue } from "vue";
7
7
  import { a as Y } from "./error-CD7x0Jrz.js";
8
8
  import { u as pe } from "./environment-Dva-SG8D.js";
9
9
  import { u as B } from "./describeError-B-NMa--w.js";
10
10
  import { t as z } from "./toast-CqSDTWRX.js";
11
- import { u as I, h as W, f as te } from "./platform-ORzRR3Tw.js";
12
- import { i as H, r as qe, l as Fe, s as Ne, a as Be } from "./usePreferences-BfMXVbSO.js";
11
+ import { u as I, h as W, f as te } from "./platform-DU9QFts8.js";
12
+ import { i as H, r as qe, l as Fe, s as Ne, a as Be } from "./usePreferences-DB29UTFD.js";
13
13
  import { useI18n as C } from "vue-i18n";
14
14
  import { _ as fe } from "./Icon.vue_vue_type_script_lang-BhhsFYwp.js";
15
- import { useRouter as ge, useRoute as Ve, RouterLink as Me } from "vue-router";
16
- import { _ as _e } from "./AccountMenuItem.vue_vue_type_script_setup_true_lang-BIYgaihv.js";
15
+ import { useRouter as _e, useRoute as Ve, RouterLink as Me } from "vue-router";
16
+ import { _ as ge } from "./AccountMenuItem.vue_vue_type_script_setup_true_lang-BIYgaihv.js";
17
17
  import { _ as T } from "./Button.vue_vue_type_script_setup_true_lang-JrqhO99l.js";
18
18
  import { u as De } from "./leaveGuard-Cc8yeLxM.js";
19
- import { _ as We } from "./FormView.vue_vue_type_script_setup_true_lang-Bq_Qa4py.js";
20
- import { _ as L } from "./TextField.vue_vue_type_script_setup_true_lang-CWIeeZRE.js";
19
+ import { _ as We } from "./FormView.vue_vue_type_script_setup_true_lang-D01Jr4UU.js";
20
+ import { _ as L } from "./TextField.vue_vue_type_script_setup_true_lang-CVGh-p3J.js";
21
21
  import { u as Ge } from "./mediaQuery-CygcXmFW.js";
22
22
  import { u as Xe } from "./useDialog-B4_MpX2v.js";
23
23
  import { c as Ye } from "./closeOverlays-CjVsIrpL.js";
24
- import { u as He, a as V } from "./FormGroup.vue_vue_type_script_setup_true_lang-dsO1m9Mm.js";
25
- import { u as J } from "./format-Cp1h0vsC.js";
24
+ import { u as He, a as V } from "./FormGroup.vue_vue_type_script_setup_true_lang-lvAuBG-0.js";
25
+ import { u as J } from "./format-C_HXlOYQ.js";
26
26
  import { b as Je } from "./routeResource-DlTsGTg_.js";
27
27
  import { _ as F } from "./IconTile.vue_vue_type_script_setup_true_lang-BmxCuUZ9.js";
28
- import { g as U } from "./options-B48UiYsG.js";
29
- import { u as he, _ as be } from "./useCommand-DAMgQ5NE.js";
30
- import { u as ye } from "./serverMessages-Ce8-MK4e.js";
31
- import { _ as Qe } from "./SelectField.vue_vue_type_script_setup_true_lang-CLkoPbGm.js";
28
+ import { _ as U } from "./FormRow.vue_vue_type_script_setup_true_lang-CpgNVQF4.js";
29
+ import { u as he, _ as be } from "./useCommand-DQKvro1n.js";
30
+ import { u as ye } from "./serverMessages-C_KkDvpT.js";
31
+ import { _ as Qe } from "./SelectField.vue_vue_type_script_setup_true_lang-D5xYofdb.js";
32
32
  import { d as Ze, r as et } from "./http-D6qOS6xs.js";
33
33
  import { z as r } from "zod";
34
- import "./ActionRow.vue_vue_type_script_setup_true_lang-DybAIOHS.js";
34
+ import "./ActionRow.vue_vue_type_script_setup_true_lang-B5IMNnTf.js";
35
35
  import { _ as G } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
36
- import { _ as tt } from "./DataTable.vue_vue_type_script_setup_true_lang-DbRS37n3.js";
36
+ import { _ as tt } from "./DataTable.vue_vue_type_script_setup_true_lang-D372wlxR.js";
37
37
  import { _ as nt } from "./Avatar.vue_vue_type_script_setup_true_lang-BPj_fkJR.js";
38
- import { _ as st } from "./AccessGate.vue_vue_type_script_setup_true_lang-BH3f0hda.js";
38
+ import { _ as st } from "./AccessGate.vue_vue_type_script_setup_true_lang-Bg8JFAOT.js";
39
39
  import "./routes-Beyr5NQo.js";
40
40
  const [ot, ve] = N("vue-core.identity"), rt = { hidden: "" }, at = /* @__PURE__ */ $({
41
41
  __name: "LocaleSync",
@@ -59,7 +59,7 @@ const [ot, ve] = N("vue-core.identity"), rt = { hidden: "" }, at = /* @__PURE__
59
59
  }
60
60
  });
61
61
  function xe() {
62
- const e = I(), n = ge(), { home: o } = ve(), s = B(), a = oe(!1), c = A(() => W(e.session.state.value)?.impersonator != null);
62
+ const e = I(), n = _e(), { home: o } = ve(), s = B(), a = oe(!1), c = A(() => W(e.session.state.value)?.impersonator != null);
63
63
  async function d() {
64
64
  a.value = !0;
65
65
  try {
@@ -102,24 +102,24 @@ const it = { class: "min-w-0 flex-1" }, ct = { class: "hidden md:inline" }, lt =
102
102
  size: 18,
103
103
  class: "shrink-0 compact:hidden"
104
104
  }),
105
- g("span", it, [
106
- g("span", ct, _(t(n)("core.identity.impersonation.banner", { name: d.value })), 1),
107
- g("span", lt, _(t(n)("core.identity.impersonation.banner_short", { name: d.value })), 1)
105
+ _("span", it, [
106
+ _("span", ct, g(t(n)("core.identity.impersonation.banner", { name: d.value })), 1),
107
+ _("span", lt, g(t(n)("core.identity.impersonation.banner_short", { name: d.value })), 1)
108
108
  ]),
109
- g("button", {
109
+ _("button", {
110
110
  type: "button",
111
111
  disabled: t(s),
112
112
  class: "hit-target cursor-pointer rounded-control bg-status-warning-solid px-3 py-1 text-footnote font-semibold whitespace-nowrap text-white transition duration-motion-fast hover:brightness-110 disabled:opacity-45",
113
113
  onClick: f[0] || (f[0] = //@ts-ignore
114
114
  (...y) => t(a) && t(a)(...y))
115
- }, _(t(n)("core.identity.impersonation.return")), 9, ut)
115
+ }, g(t(n)("core.identity.impersonation.return")), 9, ut)
116
116
  ], 512)) : k("", !0);
117
117
  }
118
118
  }), mt = /* @__PURE__ */ $({
119
119
  __name: "ReturnMenuItem",
120
120
  setup(e) {
121
121
  const { t: n } = C(), { impersonating: o, leave: s } = xe();
122
- return (a, c) => t(o) ? (m(), v(_e, {
122
+ return (a, c) => t(o) ? (m(), v(ge, {
123
123
  key: 0,
124
124
  label: t(n)("core.identity.impersonation.return"),
125
125
  icon: "logoutBoxRLine",
@@ -144,7 +144,7 @@ function pt(e = {}) {
144
144
  }), i = A(() => d.errors.first("password") ?? (d.failure.value?.error ? d.failure.value.message : void 0));
145
145
  return { form: d, passwordError: i, submit: async () => (await d.submit((l) => Ne(o, l))).status === "saved" };
146
146
  }
147
- const ft = ["aria-labelledby"], gt = ["id"], _t = { class: "mt-1 text-subheadline text-content-muted" }, ht = { class: "flex items-center gap-2 rounded-control bg-status-success-surface px-2.5 py-2 text-footnote text-status-success-content" }, bt = { class: "flex flex-col gap-1.5" }, yt = { class: "text-footnote text-content-muted" }, vt = {
147
+ const ft = ["aria-labelledby"], _t = ["id"], gt = { class: "mt-1 text-subheadline text-content-muted" }, ht = { class: "flex items-center gap-2 rounded-control bg-status-success-surface px-2.5 py-2 text-footnote text-status-success-content" }, bt = { class: "flex flex-col gap-1.5" }, yt = { class: "text-footnote text-content-muted" }, vt = {
148
148
  class: "rounded-control bg-fill px-2.5 py-2 text-body text-content-muted",
149
149
  "data-expiry-login": ""
150
150
  }, xt = /* @__PURE__ */ $({
@@ -175,39 +175,39 @@ const ft = ["aria-labelledby"], gt = ["id"], _t = { class: "mt-1 text-subheadlin
175
175
  "aria-labelledby": t(i),
176
176
  "data-session-expiry": ""
177
177
  }, [
178
- O[0] || (O[0] = g("div", {
178
+ O[0] || (O[0] = _("div", {
179
179
  class: "fixed inset-0 bg-scrim",
180
180
  "aria-hidden": "true"
181
181
  }, null, -1)),
182
- g("div", {
182
+ _("div", {
183
183
  class: ae(["fixed inset-0 flex p-4", t(d) ? "items-end p-0" : "items-center justify-center"])
184
184
  }, [
185
- g("div", {
185
+ _("div", {
186
186
  ref_key: "panel",
187
187
  ref: f,
188
188
  tabindex: "-1",
189
189
  class: ae(["flex w-full flex-col gap-4 bg-surface-overlay p-6 shadow-float outline-none", t(d) ? "rounded-t-2xl pb-[max(2rem,var(--app-safe-bottom))]" : "max-w-sm rounded-menu"])
190
190
  }, [
191
- g("div", null, [
192
- g("h2", {
191
+ _("div", null, [
192
+ _("h2", {
193
193
  id: t(i),
194
194
  class: "text-headline font-semibold text-content-strong"
195
- }, _(t(n)("core.identity.expired.title")), 9, gt),
196
- g("p", _t, _(t(n)("core.identity.expired.body")), 1)
195
+ }, g(t(n)("core.identity.expired.title")), 9, _t),
196
+ _("p", gt, g(t(n)("core.identity.expired.body")), 1)
197
197
  ]),
198
- g("p", ht, [
198
+ _("p", ht, [
199
199
  h(t(fe), {
200
200
  name: "checkboxCircleFill",
201
201
  size: 16,
202
202
  class: "shrink-0"
203
203
  }),
204
- E(" " + _(t(n)("core.identity.expired.kept")), 1)
204
+ E(" " + g(t(n)("core.identity.expired.kept")), 1)
205
205
  ]),
206
206
  h(t(We), { onSubmit: t(M) }, {
207
207
  default: p(() => [
208
- g("div", bt, [
209
- g("span", yt, _(t(n)("core.identity.username")), 1),
210
- g("span", vt, _(l.value), 1)
208
+ _("div", bt, [
209
+ _("span", yt, g(t(n)("core.identity.username")), 1),
210
+ _("span", vt, g(l.value), 1)
211
211
  ]),
212
212
  h(t(L), j(t(b).bind("password"), {
213
213
  label: t(n)("core.identity.signin.password"),
@@ -223,7 +223,7 @@ const ft = ["aria-labelledby"], gt = ["id"], _t = { class: "mt-1 text-subheadlin
223
223
  processing: t(b).submitting.value
224
224
  }, {
225
225
  default: p(() => [
226
- E(_(t(n)("core.identity.signin.submit")), 1)
226
+ E(g(t(n)("core.identity.signin.submit")), 1)
227
227
  ]),
228
228
  _: 1
229
229
  }, 8, ["processing"])
@@ -236,7 +236,7 @@ const ft = ["aria-labelledby"], gt = ["id"], _t = { class: "mt-1 text-subheadlin
236
236
  onClick: P
237
237
  }, {
238
238
  default: p(() => [
239
- E(_(t(n)("core.identity.expired.sign_out")), 1)
239
+ E(g(t(n)("core.identity.expired.sign_out")), 1)
240
240
  ]),
241
241
  _: 1
242
242
  })
@@ -246,7 +246,7 @@ const ft = ["aria-labelledby"], gt = ["id"], _t = { class: "mt-1 text-subheadlin
246
246
  ]));
247
247
  }
248
248
  }), wt = X({
249
- login: { name: "login", path: "/login", component: () => import("./SignInPage-c886Fvd7.js"), meta: { public: !0, titleKey: "core.identity.signin.title" } }
249
+ login: { name: "login", path: "/login", component: () => import("./SignInPage-DcdNKZIb.js"), meta: { public: !0, titleKey: "core.identity.signin.title" } }
250
250
  });
251
251
  function Xn(e = {}) {
252
252
  return ne({
@@ -381,12 +381,12 @@ function Hn(e) {
381
381
  };
382
382
  }
383
383
  const ke = X({
384
- index: { name: "profile", path: "/profile", component: () => import("./ProfilePage-Di77M2cX.js"), meta: { titleKey: "core.profile.title" } }
384
+ index: { name: "profile", path: "/profile", component: () => import("./ProfilePage-DGEsIycR.js"), meta: { titleKey: "core.profile.title" } }
385
385
  }), At = /* @__PURE__ */ $({
386
386
  __name: "ProfileMenuItem",
387
387
  setup(e) {
388
388
  const { t: n } = C();
389
- return (o, s) => (m(), v(_e, {
389
+ return (o, s) => (m(), v(ge, {
390
390
  label: t(n)("core.profile.menu"),
391
391
  icon: "user3Line",
392
392
  to: t(ke).index,
@@ -412,19 +412,19 @@ function jt(e, n) {
412
412
  return [...e.flatMap((s) => [s, ...o(s)]), ...n.filter((s) => s.after === void 0).map((s) => ce(s))];
413
413
  }
414
414
  const le = "iam.user:view", ts = "iam.user:manage", Kt = "iam.user.activity:view", Se = X({
415
- index: { name: "users.index", path: "/users", component: () => import("./UsersList-M5tBxrox.js"), meta: { access: le, titleKey: "core.users.title" } },
415
+ index: { name: "users.index", path: "/users", component: () => import("./UsersList-Cn19sFgv.js"), meta: { access: le, titleKey: "core.users.title" } },
416
416
  record: {
417
417
  name: "users.record",
418
418
  path: "/users/:id",
419
- component: () => import("./UserRecord-DrbpVHh9.js"),
419
+ component: () => import("./UserRecord-CwZCr9Im.js"),
420
420
  meta: { access: le, titleKey: "core.users.title", remountOnParam: "id" },
421
421
  children: [
422
- { name: "users.record.general", path: "general", component: () => import("./General-oUI2MiwO.js"), meta: { section: { labelKey: "core.users.sections.general", icon: "user3Line", groupKey: "core.users.section_groups.person" } } },
423
- { name: "users.record.signin", path: "signin", component: () => import("./SignIn-HnujOMRY.js"), meta: { section: { labelKey: "core.users.sections.signin", icon: "key2Line", groupKey: "core.users.section_groups.access" } } },
424
- { name: "users.record.sessions", path: "sessions", component: () => import("./Sessions-BHwMrF7c.js"), meta: { section: { labelKey: "core.users.sections.sessions", icon: "deviceLine", groupKey: "core.users.section_groups.access" } } },
425
- { name: "users.record.signins", path: "signins", component: () => import("./SignIns-BsTlN2Zc.js"), meta: { section: { labelKey: "core.users.sections.signins", icon: "timeFill", groupKey: "core.users.section_groups.activity" } } },
426
- { name: "users.record.changes", path: "changes", component: () => import("./Changes-DYpysvfX.js"), meta: { section: { labelKey: "core.users.sections.changes", icon: "edit", groupKey: "core.users.section_groups.activity" } } },
427
- { name: "users.record.activity", path: "activity", component: () => import("./Activity-DM9t5d3D.js"), meta: { access: Kt, section: { labelKey: "core.users.sections.activity", icon: "listCheck", groupKey: "core.users.section_groups.activity" } } }
422
+ { name: "users.record.general", path: "general", component: () => import("./General-CwTPC5UP.js"), meta: { section: { labelKey: "core.users.sections.general", icon: "user3Line", groupKey: "core.users.section_groups.person" } } },
423
+ { name: "users.record.signin", path: "signin", component: () => import("./SignIn-CqtkvtCZ.js"), meta: { section: { labelKey: "core.users.sections.signin", icon: "key2Line", groupKey: "core.users.section_groups.access" } } },
424
+ { name: "users.record.sessions", path: "sessions", component: () => import("./Sessions-BDc8gdYH.js"), meta: { section: { labelKey: "core.users.sections.sessions", icon: "deviceLine", groupKey: "core.users.section_groups.access" } } },
425
+ { name: "users.record.signins", path: "signins", component: () => import("./SignIns-D4-nGu0B.js"), meta: { section: { labelKey: "core.users.sections.signins", icon: "timeFill", groupKey: "core.users.section_groups.activity" } } },
426
+ { name: "users.record.changes", path: "changes", component: () => import("./Changes-Cy8STpLX.js"), meta: { section: { labelKey: "core.users.sections.changes", icon: "edit", groupKey: "core.users.section_groups.activity" } } },
427
+ { name: "users.record.activity", path: "activity", component: () => import("./Activity-CiYn5E6A.js"), meta: { access: Kt, section: { labelKey: "core.users.sections.activity", icon: "listCheck", groupKey: "core.users.section_groups.activity" } } }
428
428
  ]
429
429
  }
430
430
  });
@@ -747,15 +747,15 @@ const rs = (e) => e === "locked" ? "critical" : e === "inactive" ? "neutral" : "
747
747
  setup(e, { emit: n }) {
748
748
  const o = e, s = n, { t: a } = C();
749
749
  return (c, d) => o.lastPage > 1 ? (m(), w("div", Nt, [
750
- g("span", null, _(t(a)("core.collection.page.page_of", { current: o.page, total: o.lastPage })) + " · " + _(o.total), 1),
751
- g("span", Bt, [
750
+ _("span", null, g(t(a)("core.collection.page.page_of", { current: o.page, total: o.lastPage })) + " · " + g(o.total), 1),
751
+ _("span", Bt, [
752
752
  h(t(T), {
753
753
  size: "sm",
754
754
  disabled: o.page <= 1,
755
755
  onClick: d[0] || (d[0] = (i) => s("update:page", o.page - 1))
756
756
  }, {
757
757
  default: p(() => [
758
- E(_(t(a)("core.collection.page.previous")), 1)
758
+ E(g(t(a)("core.collection.page.previous")), 1)
759
759
  ]),
760
760
  _: 1
761
761
  }, 8, ["disabled"]),
@@ -765,7 +765,7 @@ const rs = (e) => e === "locked" ? "critical" : e === "inactive" ? "neutral" : "
765
765
  onClick: d[1] || (d[1] = (i) => s("update:page", o.page + 1))
766
766
  }, {
767
767
  default: p(() => [
768
- E(_(t(a)("core.collection.page.next")), 1)
768
+ E(g(t(a)("core.collection.page.next")), 1)
769
769
  ]),
770
770
  _: 1
771
771
  }, 8, ["disabled"])
@@ -819,15 +819,15 @@ const rs = (e) => e === "locked" ? "critical" : e === "inactive" ? "neutral" : "
819
819
  })
820
820
  ]),
821
821
  sub: p(() => [
822
- g("span", Vt, [
823
- l.ip ? (m(), w("span", Mt, _(l.ip), 1)) : k("", !0),
822
+ _("span", Vt, [
823
+ l.ip ? (m(), w("span", Mt, g(l.ip), 1)) : k("", !0),
824
824
  l.ip ? (m(), w("span", Dt, "·")) : k("", !0),
825
- g("span", null, _(t(a)("core.account.sessions.last_active", { when: t(c).dateTime(l.last_used_at) })), 1),
826
- i[0] || (i[0] = g("span", {
825
+ _("span", null, g(t(a)("core.account.sessions.last_active", { when: t(c).dateTime(l.last_used_at) })), 1),
826
+ i[0] || (i[0] = _("span", {
827
827
  "aria-hidden": "true",
828
828
  class: "hidden md:inline"
829
829
  }, "·", -1)),
830
- g("span", null, _(t(a)("core.account.sessions.expires", { when: t(c).dateTime(l.expires_at) })), 1)
830
+ _("span", null, g(t(a)("core.account.sessions.expires", { when: t(c).dateTime(l.expires_at) })), 1)
831
831
  ]),
832
832
  l.current || l.opened_by ? (m(), w("span", Wt, [
833
833
  l.current ? (m(), v(t(G), {
@@ -837,7 +837,7 @@ const rs = (e) => e === "locked" ? "critical" : e === "inactive" ? "neutral" : "
837
837
  "data-session-current": ""
838
838
  }, {
839
839
  default: p(() => [
840
- E(_(t(a)("core.account.sessions.this_device")), 1)
840
+ E(g(t(a)("core.account.sessions.this_device")), 1)
841
841
  ]),
842
842
  _: 1
843
843
  })) : k("", !0),
@@ -847,7 +847,7 @@ const rs = (e) => e === "locked" ? "critical" : e === "inactive" ? "neutral" : "
847
847
  "data-session-opened-by": ""
848
848
  }, {
849
849
  default: p(() => [
850
- E(_(l.opened_by.name ? t(a)("core.account.sessions.opened_by", { name: l.opened_by.name }) : t(a)("core.account.sessions.opened_by_other")), 1)
850
+ E(g(l.opened_by.name ? t(a)("core.account.sessions.opened_by", { name: l.opened_by.name }) : t(a)("core.account.sessions.opened_by_other")), 1)
851
851
  ]),
852
852
  _: 2
853
853
  }, 1024)) : k("", !0)
@@ -862,7 +862,7 @@ const rs = (e) => e === "locked" ? "critical" : e === "inactive" ? "neutral" : "
862
862
  onClick: (u) => s("end", l)
863
863
  }, {
864
864
  default: p(() => [
865
- E(_(t(a)("core.account.sessions.end")), 1)
865
+ E(g(t(a)("core.account.sessions.end")), 1)
866
866
  ]),
867
867
  _: 1
868
868
  }, 8, ["data-end-session-inline", "onClick"])) : k("", !0)
@@ -881,7 +881,7 @@ const rs = (e) => e === "locked" ? "critical" : e === "inactive" ? "neutral" : "
881
881
  onClick: (u) => s("end", l)
882
882
  }, {
883
883
  default: p(() => [
884
- E(_(t(a)("core.account.sessions.end")), 1)
884
+ E(g(t(a)("core.account.sessions.end")), 1)
885
885
  ]),
886
886
  _: 1
887
887
  }, 8, ["data-end-session", "onClick"])
@@ -952,18 +952,18 @@ const Jt = ["title"], Qt = { class: "font-mono" }, cs = /* @__PURE__ */ $({
952
952
  })
953
953
  ]),
954
954
  sub: p(() => [
955
- g("span", {
955
+ _("span", {
956
956
  class: "flex flex-col gap-y-0.5 md:flex-row md:flex-wrap md:items-center md:gap-x-1.5",
957
957
  title: i.device,
958
958
  "data-signin-facts": ""
959
959
  }, [
960
- g("span", null, _(t(s).dateTime(i.created_at)), 1),
960
+ _("span", null, g(t(s).dateTime(i.created_at)), 1),
961
961
  i.ip ? (m(), w(R, { key: 0 }, [
962
- d[0] || (d[0] = g("span", {
962
+ d[0] || (d[0] = _("span", {
963
963
  "aria-hidden": "true",
964
964
  class: "hidden md:inline"
965
965
  }, "·", -1)),
966
- g("span", Qt, _(i.ip), 1)
966
+ _("span", Qt, g(i.ip), 1)
967
967
  ], 64)) : k("", !0)
968
968
  ], 8, Jt)
969
969
  ]),
@@ -973,7 +973,7 @@ const Jt = ["title"], Qt = { class: "font-mono" }, cs = /* @__PURE__ */ $({
973
973
  "data-event": i.event
974
974
  }, {
975
975
  default: p(() => [
976
- E(_(a(i)), 1)
976
+ E(g(a(i)), 1)
977
977
  ]),
978
978
  _: 2
979
979
  }, 1032, ["tone", "data-event"])
@@ -1024,22 +1024,22 @@ const Jt = ["title"], Qt = { class: "font-mono" }, cs = /* @__PURE__ */ $({
1024
1024
  "data-event": i.event
1025
1025
  }, {
1026
1026
  default: p(() => [
1027
- E(_(a(i)), 1)
1027
+ E(g(a(i)), 1)
1028
1028
  ]),
1029
1029
  _: 2
1030
1030
  }, 1032, ["tone", "data-event"])
1031
1031
  ]),
1032
1032
  "cell-device": p(({ item: i }) => [
1033
- g("span", {
1033
+ _("span", {
1034
1034
  class: "block truncate",
1035
1035
  title: i.device
1036
- }, _(t(Oe)(i.device) || "—"), 9, en)
1036
+ }, g(t(Oe)(i.device) || "—"), 9, en)
1037
1037
  ]),
1038
1038
  "cell-ip": p(({ item: i }) => [
1039
- g("span", tn, _(i.ip || "—"), 1)
1039
+ _("span", tn, g(i.ip || "—"), 1)
1040
1040
  ]),
1041
1041
  empty: p(() => [
1042
- g("p", nn, _(t(o)("core.account.signins.empty")), 1)
1042
+ _("p", nn, g(t(o)("core.account.signins.empty")), 1)
1043
1043
  ]),
1044
1044
  _: 1
1045
1045
  }, 8, ["rows", "columns", "row-key", "loading"])
@@ -1070,7 +1070,7 @@ const Jt = ["title"], Qt = { class: "font-mono" }, cs = /* @__PURE__ */ $({
1070
1070
  "data-change-row": ""
1071
1071
  }, {
1072
1072
  leading: p(() => [
1073
- g("span", sn, [
1073
+ _("span", sn, [
1074
1074
  y.row.actor?.name ? (m(), v(t(nt), {
1075
1075
  key: 0,
1076
1076
  name: y.row.actor.name,
@@ -1083,10 +1083,10 @@ const Jt = ["title"], Qt = { class: "font-mono" }, cs = /* @__PURE__ */ $({
1083
1083
  ])
1084
1084
  ]),
1085
1085
  sub: p(() => [
1086
- g("span", on, [
1086
+ _("span", on, [
1087
1087
  y.row.actor ? (m(), w(R, { key: 0 }, [
1088
- g("span", rn, _(y.row.actor.name || t(o)("core.account.somebody_else")), 1),
1089
- f[0] || (f[0] = g("span", { "aria-hidden": "true" }, "·", -1))
1088
+ _("span", rn, g(y.row.actor.name || t(o)("core.account.somebody_else")), 1),
1089
+ f[0] || (f[0] = _("span", { "aria-hidden": "true" }, "·", -1))
1090
1090
  ], 64)) : k("", !0),
1091
1091
  (m(!0), w(R, null, D(y.details, (x, b) => (m(), w(R, { key: b }, [
1092
1092
  typeof x != "string" ? (m(), v(t(Me), {
@@ -1096,13 +1096,13 @@ const Jt = ["title"], Qt = { class: "font-mono" }, cs = /* @__PURE__ */ $({
1096
1096
  "data-change-link": ""
1097
1097
  }, {
1098
1098
  default: p(() => [
1099
- E(_(x.text), 1)
1099
+ E(g(x.text), 1)
1100
1100
  ]),
1101
1101
  _: 2
1102
- }, 1032, ["to"])) : (m(), w("span", an, _(x), 1)),
1103
- f[1] || (f[1] = g("span", { "aria-hidden": "true" }, "·", -1))
1102
+ }, 1032, ["to"])) : (m(), w("span", an, g(x), 1)),
1103
+ f[1] || (f[1] = _("span", { "aria-hidden": "true" }, "·", -1))
1104
1104
  ], 64))), 128)),
1105
- g("span", null, _(t(c).dateTime(y.row.created_at)), 1)
1105
+ _("span", null, g(t(c).dateTime(y.row.created_at)), 1)
1106
1106
  ])
1107
1107
  ]),
1108
1108
  _: 2
@@ -1119,7 +1119,7 @@ const Jt = ["title"], Qt = { class: "font-mono" }, cs = /* @__PURE__ */ $({
1119
1119
  permission: {}
1120
1120
  },
1121
1121
  setup(e) {
1122
- const n = e, { t: o } = C(), s = I(), a = ge(), { home: c } = ve(), d = B(), i = oe(!1), l = A(() => {
1122
+ const n = e, { t: o } = C(), s = I(), a = _e(), { home: c } = ve(), d = B(), i = oe(!1), l = A(() => {
1123
1123
  const f = W(s.session.state.value);
1124
1124
  return f !== null && f.impersonator === void 0 && f.user.id !== n.userId;
1125
1125
  });
@@ -1144,7 +1144,7 @@ const Jt = ["title"], Qt = { class: "font-mono" }, cs = /* @__PURE__ */ $({
1144
1144
  onClick: u
1145
1145
  }, {
1146
1146
  default: p(() => [
1147
- E(_(t(o)("core.identity.impersonation.sign_in_as", { name: n.name })), 1)
1147
+ E(g(t(o)("core.identity.impersonation.sign_in_as", { name: n.name })), 1)
1148
1148
  ]),
1149
1149
  _: 1
1150
1150
  }, 8, ["processing"])
@@ -1153,15 +1153,15 @@ const Jt = ["title"], Qt = { class: "font-mono" }, cs = /* @__PURE__ */ $({
1153
1153
  }, 8, ["permission"])) : k("", !0);
1154
1154
  }
1155
1155
  }), [cn, ms] = N("vue-core.serviceaccounts"), ue = "iam.serviceaccount:view", ps = "iam.serviceaccount:manage", fs = "iam.serviceaccount:revoke", de = X({
1156
- index: { name: "serviceaccounts.index", path: "/iam/service-accounts", component: () => import("./ServiceAccountsList-BVRjoswH.js"), meta: { access: ue, titleKey: "core.serviceaccounts.title_plural" } },
1156
+ index: { name: "serviceaccounts.index", path: "/iam/service-accounts", component: () => import("./ServiceAccountsList-CKy9_YHP.js"), meta: { access: ue, titleKey: "core.serviceaccounts.title_plural" } },
1157
1157
  record: {
1158
1158
  name: "serviceaccounts.record",
1159
1159
  path: "/iam/service-accounts/:id",
1160
- component: () => import("./ServiceAccountRecord-CTU10RWy.js"),
1160
+ component: () => import("./ServiceAccountRecord-kWwIQGZb.js"),
1161
1161
  meta: { access: ue, titleKey: "core.serviceaccounts.title_plural", remountOnParam: "id" }
1162
1162
  }
1163
1163
  });
1164
- function gs(e = {}) {
1164
+ function _s(e = {}) {
1165
1165
  return ne({
1166
1166
  id: "serviceaccounts",
1167
1167
  routes: de.records,
@@ -1173,7 +1173,7 @@ function gs(e = {}) {
1173
1173
  export {
1174
1174
  Ct as A,
1175
1175
  ke as B,
1176
- gs as C,
1176
+ _s as C,
1177
1177
  Ft as D,
1178
1178
  ns as E,
1179
1179
  ts as M,
@@ -2,7 +2,7 @@ import { r as v } from "./route-goWMxDUN.js";
2
2
  import { d as ve, p as me } from "./feature-DdUAfyi4.js";
3
3
  import { ref as C, readonly as $, defineComponent as q, openBlock as _, createBlock as U, unref as s, shallowRef as z, withCtx as A, createTextVNode as X, toDisplayString as L, mergeProps as Z, computed as N, createElementBlock as S, createElementVNode as P, createCommentVNode as R, createVNode as T, Fragment as G, renderList as be, normalizeClass as H, useTemplateRef as he, createSlots as ye } from "vue";
4
4
  import { d as ge } from "./context-Ch1r4fdN.js";
5
- import { u as ee } from "./platform-ORzRR3Tw.js";
5
+ import { u as ee } from "./platform-DU9QFts8.js";
6
6
  import { d as te } from "./defineRoutes-BGAdiIrt.js";
7
7
  import { useI18n as I } from "vue-i18n";
8
8
  import { _ as _e } from "./AccountMenuItem.vue_vue_type_script_setup_true_lang-BIYgaihv.js";
@@ -13,7 +13,7 @@ import { _ as Se } from "./Popover.vue_vue_type_script_setup_true_lang-BK8HL_V0.
13
13
  import { _ as J } from "./HeaderAction.vue_vue_type_script_setup_true_lang-Da59TLBh.js";
14
14
  import { useRouter as Te } from "vue-router";
15
15
  import { _ as K } from "./Button.vue_vue_type_script_setup_true_lang-JrqhO99l.js";
16
- import { u as Ee } from "./format-Cp1h0vsC.js";
16
+ import { u as Ee } from "./format-C_HXlOYQ.js";
17
17
  import { _ as Pe } from "./Icon.vue_vue_type_script_lang-BhhsFYwp.js";
18
18
  import { _ as Ce } from "./AsyncSection.vue_vue_type_script_setup_true_lang-CX8mpXRE.js";
19
19
  const E = {
@@ -135,9 +135,9 @@ function Me(n = ee().http, t = W()) {
135
135
  return { state: $(e), hash: $(i), busy: $(a), inspect: c, enable: u, disable: g };
136
136
  }
137
137
  const Ne = "events.deadletter:view", $t = "events.deadletter:retry", Y = te({
138
- index: { name: "events.deadletters", path: "/events/dead-letters", component: () => import("./DeadLetters-vt9vhJD7.js"), meta: { access: Ne, titleKey: "core.notifications.dead_letters.title" } }
138
+ index: { name: "events.deadletters", path: "/events/dead-letters", component: () => import("./DeadLetters-DhJkMpd_.js"), meta: { access: Ne, titleKey: "core.notifications.dead_letters.title" } }
139
139
  }), j = te({
140
- index: { name: "notifications.settings", path: "/profile/notifications", component: () => import("./SettingsPage-lRWvsMYK.js"), meta: { titleKey: "core.notifications.settings.title" } }
140
+ index: { name: "notifications.settings", path: "/profile/notifications", component: () => import("./SettingsPage-t-8kmFVT.js"), meta: { titleKey: "core.notifications.settings.title" } }
141
141
  }), Oe = /* @__PURE__ */ q({
142
142
  __name: "SettingsMenuItem",
143
143
  setup(n) {
package/dist/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  /** The version of @wssto2/vue-core (kept equal to package.json by index.test.ts). */
2
- export declare const version = "0.15.3";
2
+ export declare const version = "0.17.0";