@wssto2/vue-core 0.3.0 → 0.4.1

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 (161) hide show
  1. package/README.md +3 -0
  2. package/dist/{AccessGate.vue_vue_type_script_setup_true_lang-DKX3PH2n.js → AccessGate.vue_vue_type_script_setup_true_lang-DcbZBINh.js} +1 -1
  3. package/dist/{AccountMenuItem.vue_vue_type_script_setup_true_lang-DIGqTLwd.js → AccountMenuItem.vue_vue_type_script_setup_true_lang-CPeNxh5K.js} +1 -1
  4. package/dist/{ActionRow.vue_vue_type_script_setup_true_lang-B7Lpfkf6.js → ActionRow.vue_vue_type_script_setup_true_lang-LlfIPWsJ.js} +2 -2
  5. package/dist/{Activity-DviO0VQ8.js → Activity-ylf1r2lv.js} +9 -9
  6. package/dist/{AdaptivePageShell.vue_vue_type_script_setup_true_lang-CvAnzdc1.js → AdaptivePageShell.vue_vue_type_script_setup_true_lang-CUtGqVGA.js} +4 -4
  7. package/dist/{AlertDialog.vue_vue_type_script_setup_true_lang-CJsMUIUg.js → AlertDialog.vue_vue_type_script_setup_true_lang-whA4WLdl.js} +1 -1
  8. package/dist/{AsyncSection.vue_vue_type_script_setup_true_lang-CCtthMRd.js → AsyncSection.vue_vue_type_script_setup_true_lang-Blj6KgCr.js} +4 -4
  9. package/dist/{Banner.vue_vue_type_script_setup_true_lang-Cib_YYpr.js → Banner.vue_vue_type_script_setup_true_lang-DSStj_5z.js} +1 -1
  10. package/dist/{Button.vue_vue_type_script_setup_true_lang-CYil8h9z.js → Button.vue_vue_type_script_setup_true_lang-CL9Qh5yq.js} +1 -1
  11. package/dist/{Changes-DlT5mN9G.js → Changes-B1-2LPkp.js} +8 -8
  12. package/dist/{CollectionPage.vue_vue_type_script_setup_true_lang-CXILftEc.js → CollectionPage.vue_vue_type_script_setup_true_lang-DU_jzTg7.js} +176 -172
  13. package/dist/{DataTable.vue_vue_type_script_setup_true_lang-DSYgS9lC.js → DataTable.vue_vue_type_script_setup_true_lang-UH6f9puS.js} +1 -1
  14. package/dist/DateField.vue_vue_type_script_setup_true_lang-GVasv8ao.js +255 -0
  15. package/dist/DeadLetters-CcogaMTK.js +104 -0
  16. package/dist/{DiscardChangesModal.vue_vue_type_script_setup_true_lang-Cb3xJI1x.js → DiscardChangesModal.vue_vue_type_script_setup_true_lang-D1arePCZ.js} +1 -1
  17. package/dist/{EmptyState.vue_vue_type_script_setup_true_lang-C2ZYIT9F.js → EmptyState.vue_vue_type_script_setup_true_lang-50p-Mp8I.js} +1 -1
  18. package/dist/{FormErrors.vue_vue_type_script_setup_true_lang-DVgNBQ8p.js → FormErrors.vue_vue_type_script_setup_true_lang-BQb7wLT0.js} +1 -1
  19. package/dist/{FormGroup.vue_vue_type_script_setup_true_lang-0mfG8TkU.js → FormGroup.vue_vue_type_script_setup_true_lang-DG2zdG_a.js} +10 -10
  20. package/dist/{FormView.vue_vue_type_script_setup_true_lang-Bz2m3AtF.js → FormView.vue_vue_type_script_setup_true_lang-cr0xNDXP.js} +2 -2
  21. package/dist/{General-BD-Hcz0a.js → General-DSrflQib.js} +9 -9
  22. package/dist/HeaderAction.vue_vue_type_script_setup_true_lang-Cgji-Jrr.js +45 -0
  23. package/dist/{Icon.vue_vue_type_script_lang-VvcV2Bzo.js → Icon.vue_vue_type_script_lang-D7oC-d-S.js} +33 -29
  24. package/dist/{IconTile.vue_vue_type_script_setup_true_lang-D7QgnUyN.js → IconTile.vue_vue_type_script_setup_true_lang-BpIjgu5E.js} +1 -1
  25. package/dist/{LeaveGuardRoot.vue_vue_type_script_setup_true_lang-C2udmeEA.js → LeaveGuardRoot.vue_vue_type_script_setup_true_lang-Cv7KlA5y.js} +1 -1
  26. package/dist/{Menu.vue_vue_type_script_setup_true_lang-BNAjx9tj.js → Menu.vue_vue_type_script_setup_true_lang-DTbAcDzL.js} +30 -26
  27. package/dist/{Modal.vue_vue_type_script_setup_true_lang-D7SwVPpL.js → Modal.vue_vue_type_script_setup_true_lang-DpBb8ans.js} +2 -2
  28. package/dist/{NewRolePage-Dla4YnMs.js → NewRolePage-Du9eyEG2.js} +4 -4
  29. package/dist/{NoAccess.vue_vue_type_script_setup_true_lang-8m9cNptR.js → NoAccess.vue_vue_type_script_setup_true_lang-DWxq-MTM.js} +1 -1
  30. package/dist/{NumberField.vue_vue_type_script_setup_true_lang-CYRg7Kfg.js → NumberField.vue_vue_type_script_setup_true_lang-C7N5nq0P.js} +1 -1
  31. package/dist/{PageBar.vue_vue_type_script_setup_true_lang-Cfr5xsJx.js → PageBar.vue_vue_type_script_setup_true_lang-B7qdEeej.js} +1 -1
  32. package/dist/{Panel.vue_vue_type_script_setup_true_lang-BCRxRK4D.js → Panel.vue_vue_type_script_setup_true_lang-BA0u_DtS.js} +1 -1
  33. package/dist/PanelActions.vue_vue_type_script_setup_true_lang-E9VdIGkf.js +46 -0
  34. package/dist/{PhotoViewer.vue_vue_type_script_setup_true_lang-B3Q4dhqJ.js → PhotoViewer.vue_vue_type_script_setup_true_lang-QPCW3Xi6.js} +1 -1
  35. package/dist/ProfilePage-BjvWyg_e.js +654 -0
  36. package/dist/{RecordHeader.vue_vue_type_script_setup_true_lang-DKsaKlAq.js → RecordHeader.vue_vue_type_script_setup_true_lang-Ci4fs5s5.js} +2 -2
  37. package/dist/{ResourcePage.vue_vue_type_script_setup_true_lang-CJcKa9SW.js → ResourcePage.vue_vue_type_script_setup_true_lang-KPVA-1fI.js} +5 -5
  38. package/dist/{RoleEditor.vue_vue_type_script_setup_true_lang-DuEPOmjI.js → RoleEditor.vue_vue_type_script_setup_true_lang-Ci1Aqc37.js} +30 -29
  39. package/dist/{RolePage-bZzv_E4l.js → RolePage-BDD6volP.js} +13 -13
  40. package/dist/{RolesPage-BniZv0nB.js → RolesPage-Bzun0trr.js} +9 -9
  41. package/dist/{SectionList.vue_vue_type_script_setup_true_lang-BKP_bge8.js → SectionList.vue_vue_type_script_setup_true_lang-DBheVDeX.js} +3 -3
  42. package/dist/{SectionNavigator.vue_vue_type_script_setup_true_lang-BgGEGxSI.js → SectionNavigator.vue_vue_type_script_setup_true_lang-L4TXI0wR.js} +6 -6
  43. package/dist/{SegmentedField.vue_vue_type_script_setup_true_lang-BZ9UdgA1.js → SegmentedField.vue_vue_type_script_setup_true_lang-BMqWlpsL.js} +1 -1
  44. package/dist/{SelectField.vue_vue_type_script_setup_true_lang-BiGaEKBQ.js → SelectField.vue_vue_type_script_setup_true_lang-7O1BAx04.js} +15 -14
  45. package/dist/{SessionList.vue_vue_type_script_setup_true_lang-DUQpr7gb.js → SessionList.vue_vue_type_script_setup_true_lang-D5KRitar.js} +4 -4
  46. package/dist/{Sessions-Co5-xdeb.js → Sessions-BOzz38WJ.js} +6 -6
  47. package/dist/SettingsPage-BXlYHt8u.js +255 -0
  48. package/dist/{Sheet.vue_vue_type_script_setup_true_lang-bHYzx7-J.js → Sheet.vue_vue_type_script_setup_true_lang-DgOFV4fa.js} +48 -45
  49. package/dist/{SignIn-BWwFbxki.js → SignIn-CenfvX8C.js} +7 -7
  50. package/dist/{SignInPage-FnLtoi2q.js → SignInPage-23sJGIXh.js} +6 -6
  51. package/dist/{SignInTable.vue_vue_type_script_setup_true_lang-Dnx3T_42.js → SignInTable.vue_vue_type_script_setup_true_lang-CEbAvZ_C.js} +1 -1
  52. package/dist/{SignIns-3UcI64_h.js → SignIns-DRaTo-T0.js} +6 -6
  53. package/dist/{SwipeActions.vue_vue_type_script_setup_true_lang-4I8m27ol.js → SwipeActions.vue_vue_type_script_setup_true_lang-BJIA2JfI.js} +1 -1
  54. package/dist/SwitchField.vue_vue_type_script_setup_true_lang-CM8yp9JQ.js +64 -0
  55. package/dist/{Tabs.vue_vue_type_script_setup_true_lang-BeGaydRr.js → Tabs.vue_vue_type_script_setup_true_lang-CcMcE38r.js} +1 -1
  56. package/dist/{TextField.vue_vue_type_script_setup_true_lang-C_FMf3Vc.js → TextField.vue_vue_type_script_setup_true_lang-B9dwVASU.js} +3 -3
  57. package/dist/TextareaField.vue_vue_type_script_setup_true_lang-CqAWfABZ.js +68 -0
  58. package/dist/TimeField.vue_vue_type_script_setup_true_lang-DWfAUlnz.js +164 -0
  59. package/dist/{Timestamp.vue_vue_type_script_setup_true_lang-1RJGKxbD.js → Timestamp.vue_vue_type_script_setup_true_lang-FVRUr-9y.js} +1 -1
  60. package/dist/{UserRecord-Ci8HfwbX.js → UserRecord-BreLQOPG.js} +13 -13
  61. package/dist/{UsersList-vEJ-cgkT.js → UsersList-CKLqiOpt.js} +8 -8
  62. package/dist/{ViewTabs.vue_vue_type_script_setup_true_lang-ByqTU2JT.js → ViewTabs.vue_vue_type_script_setup_true_lang-BJIoZAlH.js} +1 -1
  63. package/dist/access/index.js +1 -1
  64. package/dist/access-DmAceEo5.js +42 -0
  65. package/dist/app/feature.d.ts +2 -0
  66. package/dist/app/index.js +11 -11
  67. package/dist/button/index.js +1 -1
  68. package/dist/{chrome-BS3xJcad.js → chrome-nUcmVu8G.js} +2 -2
  69. package/dist/client/index.js +11 -19
  70. package/dist/{client-Bw0aM5Gu.js → client-k9euDWF4.js} +19 -19
  71. package/dist/collection/definition.d.ts +3 -0
  72. package/dist/collection/index.js +6 -6
  73. package/dist/collection/useCollection.d.ts +2 -0
  74. package/dist/content/index.js +2 -2
  75. package/dist/{contributions-CDDg3fKp.js → contributions-DsfmDoRD.js} +1 -1
  76. package/dist/control-7EP4tjYy.js +313 -0
  77. package/dist/controls/index.js +4 -4
  78. package/dist/form/index.js +987 -1134
  79. package/dist/{guards-Cd1V28oG.js → guards-Dve61KjR.js} +1 -1
  80. package/dist/{http-DGGSKWvU.js → http-CNcDHSOj.js} +9 -8
  81. package/dist/i18n/index.js +20 -20
  82. package/dist/icon/core.d.ts +4 -0
  83. package/dist/icon/index.js +1 -1
  84. package/dist/identity/index.js +1 -1
  85. package/dist/index-0TeI4rVv.js +504 -0
  86. package/dist/{index-B2dbYZR9.js → index-BBdzJnvG.js} +15 -15
  87. package/dist/{index-BAcl44SC.js → index-CnVf6Uk_.js} +19 -19
  88. package/dist/index.d.ts +1 -1
  89. package/dist/index.js +1 -1
  90. package/dist/modal/Sheet.vue.d.ts +2 -0
  91. package/dist/modal/index.js +5 -5
  92. package/dist/modules/events/entities.d.ts +16 -0
  93. package/dist/modules/events/routes.d.ts +17 -0
  94. package/dist/modules/events/schemas.d.ts +16 -0
  95. package/dist/modules/notification/entities.d.ts +46 -0
  96. package/dist/modules/notification/routes.d.ts +26 -0
  97. package/dist/modules/notification/schemas.d.ts +25 -0
  98. package/dist/{navigation-BPWa63ge.js → navigation-Cm3iChlR.js} +1 -1
  99. package/dist/{neighbors-D0WRBxXI.js → neighbors-DpaIMQAL.js} +1 -1
  100. package/dist/notifications/InboxPanel.vue.d.ts +16 -0
  101. package/dist/notifications/MarkAllRead.vue.d.ts +7 -0
  102. package/dist/notifications/NotificationBell.vue.d.ts +2 -0
  103. package/dist/notifications/SettingsLink.vue.d.ts +6 -0
  104. package/dist/notifications/context.d.ts +20 -0
  105. package/dist/notifications/deadletters/DeadLetters.vue.d.ts +2 -0
  106. package/dist/notifications/deadletters/access.d.ts +3 -0
  107. package/dist/notifications/deadletters/list.d.ts +3 -0
  108. package/dist/notifications/deadletters/routes.d.ts +13 -0
  109. package/dist/notifications/feature.d.ts +31 -0
  110. package/dist/notifications/inbox.d.ts +62 -0
  111. package/dist/notifications/index.d.ts +13 -0
  112. package/dist/notifications/index.js +8 -0
  113. package/dist/notifications/settings/EmailPanel.vue.d.ts +14 -0
  114. package/dist/notifications/settings/QuietHoursPanel.vue.d.ts +14 -0
  115. package/dist/notifications/settings/SettingsMenuItem.vue.d.ts +2 -0
  116. package/dist/notifications/settings/SettingsPage.vue.d.ts +2 -0
  117. package/dist/notifications/settings/categoryText.d.ts +9 -0
  118. package/dist/notifications/settings/routes.d.ts +13 -0
  119. package/dist/notifications/settings/settings.d.ts +18 -0
  120. package/dist/notifications/settings/state.d.ts +16 -0
  121. package/dist/notifications/state.d.ts +27 -0
  122. package/dist/notifications/stream.d.ts +21 -0
  123. package/dist/options-Ba_0uLWN.js +18 -0
  124. package/dist/overlay/index.js +3 -3
  125. package/dist/page/chrome.d.ts +4 -1
  126. package/dist/page/index.d.ts +1 -1
  127. package/dist/page/index.js +25 -24
  128. package/dist/phone/index.js +68 -67
  129. package/dist/platform/index.js +2 -2
  130. package/dist/{platform-hunMqFdB.js → platform-q3cjODLx.js} +1 -1
  131. package/dist/resource/index.js +1 -1
  132. package/dist/route-goWMxDUN.js +13 -0
  133. package/dist/router/access.d.ts +1 -1
  134. package/dist/router/index.js +5 -5
  135. package/dist/router/pageRefresh.d.ts +6 -0
  136. package/dist/{rowLayout-BI7a3Kom.js → rowLayout-BqTEhEuy.js} +5 -5
  137. package/dist/{sections-BEqW1dOc.js → sections-D-kD98vu.js} +2 -2
  138. package/dist/shell/BackofficeShell.vue.d.ts +4 -1
  139. package/dist/shell/NavigationDrawer.vue.d.ts +1 -1
  140. package/dist/shell/PullToRefresh.vue.d.ts +2 -0
  141. package/dist/shell/ShellSidebar.vue.d.ts +2 -1
  142. package/dist/shell/backofficeShell.d.ts +3 -1
  143. package/dist/shell/index.js +638 -584
  144. package/dist/shell/pullToRefresh.d.ts +16 -0
  145. package/dist/shell/search.d.ts +3 -0
  146. package/dist/state/index.js +4 -4
  147. package/dist/{status-C9aXR-Jb.js → status-jB5r1cG2.js} +2 -2
  148. package/dist/styles.css +1 -1
  149. package/dist/{suggestions-BJAqOj4c.js → suggestions-BxMm6MQA.js} +1 -1
  150. package/dist/testing/index.js +1 -1
  151. package/dist/transport-BnP7WC0Y.js +4 -0
  152. package/dist/{useCommand-BgRwnYlV.js → useCommand-BkONMn3X.js} +2 -2
  153. package/dist/{useResourceForm-Bgc9jMcu.js → useResourceForm-D1hIpwW5.js} +1 -1
  154. package/dist/{useSaveChrome-chi6D3HY.js → useSaveChrome-DuWm0Czf.js} +1 -1
  155. package/dist/useTypedEntry-aTfPBAhw.js +857 -0
  156. package/package.json +8 -4
  157. package/dist/DateField.vue_vue_type_script_setup_true_lang-DMVjNsaM.js +0 -1099
  158. package/dist/ProfilePage-OJMQ8cr8.js +0 -691
  159. package/dist/TextareaField.vue_vue_type_script_setup_true_lang-CU3KTKIJ.js +0 -127
  160. package/dist/access-DdRFrVV1.js +0 -40
  161. package/dist/options-BXkMR63B.js +0 -329
@@ -0,0 +1,27 @@
1
+ import type { Item, StreamEvent } from "../modules/notification/entities";
2
+ /** What the inbox keeps: the notifications this app has loaded or been sent, newest first, and the server's unread count. */
3
+ export interface InboxContents {
4
+ readonly items: readonly Item[];
5
+ readonly unreadCount: number;
6
+ }
7
+ /** The newest id of a list: "Mark all as read" stops there, so a notification nobody has seen stays unread. 0 for none. */
8
+ export declare function newestId(items: readonly Item[]): number;
9
+ /** One notification marked read here (before the server answers). */
10
+ export declare function markedRead(items: readonly Item[], id: number, readAt: string): readonly Item[];
11
+ /** Everything up to `upToId` marked read here. */
12
+ export declare function markedReadUpTo(items: readonly Item[], upToId: number, readAt: string): readonly Item[];
13
+ /**
14
+ * The first page of a (re)load, with anything newer the stream brought while the request was on its way: the page was
15
+ * read before it, so it would otherwise vanish until the next load. Newest first, each id once.
16
+ */
17
+ export declare function withNewer(page: readonly Item[], current: readonly Item[]): readonly Item[];
18
+ /** A further (older) page appended, ids already shown left out. */
19
+ export declare function withOlder(current: readonly Item[], page: readonly Item[]): readonly Item[];
20
+ /**
21
+ * One stream event applied. Every event carries the server's unread count and it always wins over counting here
22
+ * (NOTIF-READ-001); a reading on another device marks the same notifications read here. A "read all" names the newest
23
+ * id that device had seen, and only notifications up to it are read.
24
+ */
25
+ export declare function applyStreamEvent(state: InboxContents, event: StreamEvent, readAt: string): InboxContents;
26
+ /** The unread count as a badge shows it: "99+" past 99. */
27
+ export declare function unreadBadge(count: number): string;
@@ -0,0 +1,21 @@
1
+ import type { Transport } from "../client";
2
+ import type { StreamEvent } from "../modules/notification/entities";
3
+ /** Why a stream ended: the caller reconnects, except after `aborted`. */
4
+ export type StreamEnd = "closed" | "unauthorized" | "failed" | "aborted" | "stalled";
5
+ export interface ReadStreamOptions {
6
+ url: string;
7
+ transport: Transport;
8
+ signal: AbortSignal;
9
+ onEvent(event: StreamEvent): void;
10
+ /** A connection that sends nothing, not even a heartbeat, for this long is dropped. go-core beats every 25 s. */
11
+ idleTimeout: number;
12
+ }
13
+ /** One server-sent message block as an event; a comment (`: ping`), a block without data and an unreadable one give null. */
14
+ export declare function parseStreamMessage(message: string): StreamEvent | null;
15
+ /**
16
+ * Opens the notification stream and reads it until it ends. `EventSource` cannot send headers and
17
+ * cannot tell a dead connection from a quiet one, so the byte stream is read with `fetch` through the
18
+ * platform's transport: the session cookie goes with it, the heartbeat resets a watchdog, and aborting
19
+ * the signal ends it at once.
20
+ */
21
+ export declare function readStream({ url, transport, signal, onEvent, idleTimeout }: ReadStreamOptions): Promise<StreamEnd>;
@@ -0,0 +1,18 @@
1
+ function l(t) {
2
+ const o = /* @__PURE__ */ new Map();
3
+ for (const e of t) {
4
+ const n = e.group ?? null, r = o.get(n) ?? [];
5
+ r.push(e), o.set(n, r);
6
+ }
7
+ return [...o.entries()].sort(([e], [n]) => e === null ? -1 : n === null ? 1 : 0).map(([e, n]) => ({ title: e, options: n }));
8
+ }
9
+ function c(t, o) {
10
+ const e = s(o.trim());
11
+ return e === "" ? t : t.filter((n) => s(n.label).includes(e) || n.description !== void 0 && s(n.description).includes(e));
12
+ }
13
+ const s = (t) => t.normalize("NFD").replace(/[̀-ͯ]/g, "").toLocaleLowerCase();
14
+ export {
15
+ s as f,
16
+ l as g,
17
+ c as m
18
+ };
@@ -1,5 +1,5 @@
1
- import { _ as e } from "../AlertDialog.vue_vue_type_script_setup_true_lang-CJsMUIUg.js";
2
- import { _ as a } from "../Menu.vue_vue_type_script_setup_true_lang-BNAjx9tj.js";
1
+ import { _ as e } from "../AlertDialog.vue_vue_type_script_setup_true_lang-whA4WLdl.js";
2
+ import { _ as a } from "../Menu.vue_vue_type_script_setup_true_lang-DTbAcDzL.js";
3
3
  import { _ as p } from "../Popover.vue_vue_type_script_setup_true_lang-Dx-tDhNE.js";
4
4
  import { _ as m } from "../Toaster.vue_vue_type_script_setup_true_lang-55boRLAj.js";
5
5
  import { _ as x } from "../Tooltip.vue_vue_type_script_setup_true_lang-OOD_XNWx.js";
@@ -7,7 +7,7 @@ import { t as T } from "../toast-D9Z5To38.js";
7
7
  import { I as i, u as A } from "../dialogStack-DZZg55w0.js";
8
8
  import { I as P, u as l } from "../useDialog-CXR3hN0G.js";
9
9
  import { C as D, u as R } from "../mediaQuery-CygcXmFW.js";
10
- import { _ as E } from "../PhotoViewer.vue_vue_type_script_setup_true_lang-B3Q4dhqJ.js";
10
+ import { _ as E } from "../PhotoViewer.vue_vue_type_script_setup_true_lang-QPCW3Xi6.js";
11
11
  export {
12
12
  e as AlertDialog,
13
13
  D as COMPACT_MEDIA_QUERY,
@@ -64,7 +64,10 @@ export declare function createPageChrome(): PageChrome;
64
64
  export declare const pageChromeKey: import("vue").InjectionKey<PageChrome>, usePageChromeContext: () => PageChrome;
65
65
  /** Creates the page chrome of an app and installs it; returns it for the app's phone header to read. */
66
66
  export declare function installPageChrome(app: App): PageChrome;
67
- /** The chrome of an app that installed one, otherwise null. */
67
+ /**
68
+ * The chrome of an app that installed one, otherwise null. Use it in a component that may be mounted without the
69
+ * application (a unit test, a story); inside an application use `usePageChromeContext`, which names the missing provider.
70
+ */
68
71
  export declare function useOptionalPageChrome(): PageChrome | null;
69
72
  export interface PageChromeOptions {
70
73
  /** Actions for the page's toolbar (desktop) and nav bar (phone). */
@@ -7,7 +7,7 @@ export { default as PageActions } from "./PageActions.vue";
7
7
  export { default as PageToolbar } from "./PageToolbar.vue";
8
8
  export { default as RecordHeader } from "./RecordHeader.vue";
9
9
  export { default as ResourceHeader } from "./ResourceHeader.vue";
10
- export { createPageChrome, installPageChrome, usePageChrome, usePageChromeContext, pageChromeKey, type FocusMemory, type PageChrome, type PageChromeOptions, type PageChromeOwner, type PageChromeRegistration, } from "./chrome";
10
+ export { createPageChrome, installPageChrome, useOptionalPageChrome, usePageChrome, usePageChromeContext, pageChromeKey, type FocusMemory, type PageChrome, type PageChromeOptions, type PageChromeOwner, type PageChromeRegistration, } from "./chrome";
11
11
  export { pageSectionBackKey, usePageSectionBack } from "./sectionBack";
12
12
  export { provideSectionIndex, sectionId, useSectionAnchor, useSectionIndex } from "./sectionIndex";
13
13
  export type { IndexedSection, SectionIndex } from "./sectionIndex";
@@ -1,23 +1,23 @@
1
- import { _ as x } from "../AdaptivePageShell.vue_vue_type_script_setup_true_lang-CvAnzdc1.js";
2
- import { a as W, b as X, c as Y, d as Z, p as ee, u as te, e as ae } from "../AdaptivePageShell.vue_vue_type_script_setup_true_lang-CvAnzdc1.js";
1
+ import { _ as x } from "../AdaptivePageShell.vue_vue_type_script_setup_true_lang-CUtGqVGA.js";
2
+ import { a as W, b as X, c as Y, d as Z, p as ee, u as te, e as ae } from "../AdaptivePageShell.vue_vue_type_script_setup_true_lang-CUtGqVGA.js";
3
3
  import { _ as se } from "../BottomDock.vue_vue_type_script_setup_true_lang-CjN7xYEr.js";
4
4
  import { b as ne, i as re, u as ie } from "../bottomDock-BZEiOPYZ.js";
5
- import { defineComponent as v, openBlock as a, createBlock as b, withCtx as c, createElementVNode as s, normalizeStyle as k, createElementBlock as l, Fragment as y, renderList as B, normalizeClass as d, unref as _, createCommentVNode as p, toDisplayString as f, useModel as S, useId as C, useTemplateRef as $, computed as P, mergeProps as w, createSlots as T, renderSlot as m, mergeModels as D } from "vue";
6
- import { _ as L } from "../Icon.vue_vue_type_script_lang-VvcV2Bzo.js";
7
- import { _ as ue } from "../RecordHeader.vue_vue_type_script_setup_true_lang-DKsaKlAq.js";
8
- import { c as pe, i as fe, p as me, u as be, a as ge } from "../chrome-BS3xJcad.js";
5
+ import { defineComponent as v, openBlock as a, createBlock as b, withCtx as c, createElementVNode as s, normalizeStyle as k, createElementBlock as l, Fragment as y, renderList as B, normalizeClass as d, unref as h, createCommentVNode as p, toDisplayString as f, useModel as S, useId as C, useTemplateRef as P, computed as $, mergeProps as w, createSlots as T, renderSlot as m, mergeModels as D } from "vue";
6
+ import { _ as L } from "../Icon.vue_vue_type_script_lang-D7oC-d-S.js";
7
+ import { _ as ue } from "../RecordHeader.vue_vue_type_script_setup_true_lang-Ci4fs5s5.js";
8
+ import { c as pe, i as fe, p as me, a as be, u as ge, b as ve } from "../chrome-nUcmVu8G.js";
9
9
  import { s as z, u as I } from "../sectionIndex-BS0ic5W7.js";
10
- import { p as _e, a as he } from "../sectionIndex-BS0ic5W7.js";
11
- import { _ as ke } from "../SectionNavigator.vue_vue_type_script_setup_true_lang-BgGEGxSI.js";
12
- import { a as Be, _ as Se } from "../SectionList.vue_vue_type_script_setup_true_lang-BKP_bge8.js";
13
- import { _ as A } from "../Panel.vue_vue_type_script_setup_true_lang-BCRxRK4D.js";
10
+ import { p as _e, a as xe } from "../sectionIndex-BS0ic5W7.js";
11
+ import { _ as ye } from "../SectionNavigator.vue_vue_type_script_setup_true_lang-L4TXI0wR.js";
12
+ import { a as Se, _ as Ce } from "../SectionList.vue_vue_type_script_setup_true_lang-DBheVDeX.js";
13
+ import { _ as A } from "../Panel.vue_vue_type_script_setup_true_lang-BA0u_DtS.js";
14
14
  const K = ["aria-label"], M = ["aria-label"], N = ["aria-selected", "tabindex", "onClick"], R = { class: "relative" }, E = {
15
15
  key: 2,
16
16
  class: "absolute -right-1 -top-0.5 size-2 rounded-full bg-status-warning-solid ring-2 ring-surface-cell"
17
17
  }, H = {
18
18
  key: 0,
19
19
  class: "sr-only"
20
- }, q = /* @__PURE__ */ v({
20
+ }, U = /* @__PURE__ */ v({
21
21
  __name: "BottomTabBar",
22
22
  props: {
23
23
  items: {},
@@ -51,7 +51,7 @@ const K = ["aria-label"], M = ["aria-label"], N = ["aria-selected", "tabindex",
51
51
  onClick: (u) => r("select", e.value)
52
52
  }, [
53
53
  s("span", R, [
54
- e.icon ? (a(), b(_(L), {
54
+ e.icon ? (a(), b(h(L), {
55
55
  key: 0,
56
56
  name: e.icon,
57
57
  size: 22
@@ -73,7 +73,7 @@ const K = ["aria-label"], M = ["aria-label"], N = ["aria-selected", "tabindex",
73
73
  _: 1
74
74
  }));
75
75
  }
76
- }), G = /* @__PURE__ */ v({
76
+ }), q = /* @__PURE__ */ v({
77
77
  __name: "SectionPanel",
78
78
  props: /* @__PURE__ */ D({
79
79
  title: {},
@@ -91,13 +91,13 @@ const K = ["aria-label"], M = ["aria-label"], N = ["aria-selected", "tabindex",
91
91
  }),
92
92
  emits: ["update:collapsed"],
93
93
  setup(n) {
94
- const t = n, o = S(n, "collapsed"), r = t.id ?? (z(t.title) || `section-${C()}`), i = $("panel"), g = P(() => i.value?.$el ?? null);
94
+ const t = n, o = S(n, "collapsed"), r = t.id ?? (z(t.title) || `section-${C()}`), i = P("panel"), g = $(() => i.value?.$el ?? null);
95
95
  return I(r, () => t.title, g, { number: () => t.number, reveal: () => i.value?.expand() }), (e, u) => (a(), b(A, w({
96
96
  ref_key: "panel",
97
97
  ref: i,
98
98
  collapsed: o.value,
99
- "onUpdate:collapsed": u[0] || (u[0] = (h) => o.value = h)
100
- }, { id: _(r), tabindex: -1 }, {
99
+ "onUpdate:collapsed": u[0] || (u[0] = (_) => o.value = _)
100
+ }, { id: h(r), tabindex: -1 }, {
101
101
  title: t.title,
102
102
  icon: t.icon,
103
103
  number: t.number,
@@ -134,15 +134,15 @@ export {
134
134
  W as AdaptivePageShell,
135
135
  se as BottomDock,
136
136
  x as BottomDockPortal,
137
- q as BottomTabBar,
137
+ U as BottomTabBar,
138
138
  X as PageActions,
139
139
  Y as PageToolbar,
140
140
  ue as RecordHeader,
141
141
  Z as ResourceHeader,
142
- Be as SectionJumper,
143
- Se as SectionList,
144
- ke as SectionNavigator,
145
- G as SectionPanel,
142
+ Se as SectionJumper,
143
+ Ce as SectionList,
144
+ ye as SectionNavigator,
145
+ q as SectionPanel,
146
146
  ne as bottomDockKey,
147
147
  pe as createPageChrome,
148
148
  re as installBottomDock,
@@ -153,9 +153,10 @@ export {
153
153
  z as sectionId,
154
154
  ie as useBottomDockTarget,
155
155
  te as useLargeTitle,
156
- be as usePageChrome,
157
- ge as usePageChromeContext,
156
+ be as useOptionalPageChrome,
157
+ ge as usePageChrome,
158
+ ve as usePageChromeContext,
158
159
  ae as usePageSectionBack,
159
160
  I as useSectionAnchor,
160
- he as useSectionIndex
161
+ xe as useSectionIndex
161
162
  };
@@ -1,73 +1,74 @@
1
- import { defineComponent as fe, useModel as me, useTemplateRef as F, ref as B, computed as g, watch as ne, nextTick as A, openBlock as w, createElementBlock as $, createElementVNode as f, normalizeClass as P, unref as i, createVNode as M, toDisplayString as T, normalizeStyle as ge, Fragment as ee, renderList as le, createCommentVNode as J, withModifiers as xe, withDirectives as we, vModelText as _e, mergeModels as ae, inject as ke, shallowRef as Ce, onBeforeUnmount as $e, createBlock as De, mergeProps as Me, createSlots as Te, withCtx as se, createTextVNode as Se, renderSlot as Ne, mergeDefaults as Ie } from "vue";
1
+ import { defineComponent as fe, useModel as me, useTemplateRef as F, ref as B, computed as g, watch as ne, nextTick as A, openBlock as w, createElementBlock as $, createElementVNode as f, normalizeClass as P, unref as i, createVNode as M, toDisplayString as T, normalizeStyle as ge, Fragment as ee, renderList as le, createCommentVNode as J, withModifiers as xe, withDirectives as we, vModelText as _e, mergeModels as re, inject as ke, shallowRef as Ce, onBeforeUnmount as $e, createBlock as De, mergeProps as Me, createSlots as Te, withCtx as se, createTextVNode as Se, renderSlot as Ne, mergeDefaults as Ie } from "vue";
2
2
  import { useI18n as pe } from "vue-i18n";
3
3
  import { b as Pe } from "../controlSurface-t7OEFESJ.js";
4
- import { c as ie, a as Ve, g as Oe, _ as Re, f as Ee, b as Be } from "../options-BXkMR63B.js";
5
- import { _ as q } from "../Icon.vue_vue_type_script_lang-VvcV2Bzo.js";
6
- import { _ as ue } from "../CountryFlag.vue_vue_type_script_setup_true_lang-Kry_vPPZ.js";
4
+ import { a as Ve, c as Oe, _ as Re, f as Ee, b as Be } from "../control-7EP4tjYy.js";
5
+ import { _ as q } from "../Icon.vue_vue_type_script_lang-D7oC-d-S.js";
6
+ import { _ as ie } from "../CountryFlag.vue_vue_type_script_setup_true_lang-Kry_vPPZ.js";
7
7
  import { u as ze } from "../anchored-Cj4--8dT.js";
8
8
  import { AsYouType as L, validatePhoneNumberLength as Fe, parsePhoneNumberFromString as ve, getCountries as qe, getCountryCallingCode as Ae } from "libphonenumber-js/max";
9
9
  import Le from "libphonenumber-js/max/metadata";
10
+ import { f as ue } from "../options-Ba_0uLWN.js";
10
11
  const ce = ["HR", "BA", "SI", "RS"], We = 15;
11
12
  function he(t) {
12
13
  return Le.country_calling_codes[t]?.[0];
13
14
  }
14
15
  const W = (t) => Ae(t), de = (t) => `+${W(t)}`, te = () => qe();
15
- function Ke(t, a) {
16
+ function Ke(t, r) {
16
17
  const o = `+${t}`;
17
- return new L().input(`${o}${a}`).slice(o.length).trim();
18
+ return new L().input(`${o}${r}`).slice(o.length).trim();
18
19
  }
19
- function re(t, a, o) {
20
- const r = o.slice(0, Math.max(0, We - a.length));
21
- return r === "" ? { country: t, e164: "", text: "" } : { country: t, e164: `+${a}${r}`, text: Ke(a, r) };
20
+ function ae(t, r, o) {
21
+ const a = o.slice(0, Math.max(0, We - r.length));
22
+ return a === "" ? { country: t, e164: "", text: "" } : { country: t, e164: `+${r}${a}`, text: Ke(r, a) };
22
23
  }
23
- function oe(t, a) {
24
+ function oe(t, r) {
24
25
  const o = t.trim().replace(/^00(?=\d)/, "+");
25
26
  if (o.startsWith("+")) {
26
27
  const l = new L();
27
28
  l.input(o);
28
29
  const x = l.getCallingCode();
29
- if (!x) return { country: a, e164: "", text: o.replace(/[^\d+]/g, "") };
30
- const p = l.getCountry() ?? (W(a) === x ? a : he(x) ?? a);
31
- return re(p, x, l.getNumber()?.nationalNumber ?? "");
30
+ if (!x) return { country: r, e164: "", text: o.replace(/[^\d+]/g, "") };
31
+ const p = l.getCountry() ?? (W(r) === x ? r : he(x) ?? r);
32
+ return ae(p, x, l.getNumber()?.nationalNumber ?? "");
32
33
  }
33
- const r = new L(a);
34
- return r.input(o.replace(/\D/g, "")), re(a, W(a), r.getNumber()?.nationalNumber ?? "");
34
+ const a = new L(r);
35
+ return a.input(o.replace(/\D/g, "")), ae(r, W(r), a.getNumber()?.nationalNumber ?? "");
35
36
  }
36
- function Ue(t, a) {
37
- return re(a, W(a), t.text.replace(/\D/g, ""));
37
+ function Ue(t, r) {
38
+ return ae(r, W(r), t.text.replace(/\D/g, ""));
38
39
  }
39
40
  function je(t) {
40
41
  return t.startsWith("+") ? new L().input(t) : t;
41
42
  }
42
43
  const He = { MOBILE: "mobile", FIXED_LINE: "landline", TOLL_FREE: "toll_free", PREMIUM_RATE: "premium_rate", VOIP: "voip" };
43
44
  function Ge(t) {
44
- const a = t ? ve(t) : void 0, o = a?.isValid() ? a.getType() : void 0;
45
+ const r = t ? ve(t) : void 0, o = r?.isValid() ? r.getType() : void 0;
45
46
  return o ? He[o] : void 0;
46
47
  }
47
48
  function Xe(t) {
48
- const a = new L();
49
- a.input(t);
50
- const o = a.getCallingCode();
51
- return a.getCountry() ?? (o ? he(o) : void 0);
49
+ const r = new L();
50
+ r.input(t);
51
+ const o = r.getCallingCode();
52
+ return r.getCountry() ?? (o ? he(o) : void 0);
52
53
  }
53
54
  function ye(t) {
54
55
  if (t === "") return null;
55
- const a = Xe(t), o = Fe(t);
56
- return o === "TOO_SHORT" ? { kind: "too_short", country: a } : o === "TOO_LONG" ? { kind: "too_long", country: a } : o !== void 0 ? { kind: "invalid", country: a } : ve(t)?.isValid() ? null : { kind: "invalid", country: a };
56
+ const r = Xe(t), o = Fe(t);
57
+ return o === "TOO_SHORT" ? { kind: "too_short", country: r } : o === "TOO_LONG" ? { kind: "too_long", country: r } : o !== void 0 ? { kind: "invalid", country: r } : ve(t)?.isValid() ? null : { kind: "invalid", country: r };
57
58
  }
58
- const Ct = (t) => ye(t) === null;
59
- function be(t, a) {
59
+ const $t = (t) => ye(t) === null;
60
+ function be(t, r) {
60
61
  try {
61
- return new Intl.DisplayNames([a], { type: "region" }).of(t) ?? t;
62
+ return new Intl.DisplayNames([r], { type: "region" }).of(t) ?? t;
62
63
  } catch {
63
64
  return t;
64
65
  }
65
66
  }
66
- function Ye(t, a, o) {
67
- const r = ie(t.trim());
68
- if (r === "") return o;
69
- const l = r.replace(/\D/g, ""), x = new Intl.DisplayNames([a], { type: "region" }), p = (h) => ie(x.of(h) ?? h), _ = r.startsWith("+") || /^\d+$/.test(r);
70
- return o.filter((h) => _ ? W(h).startsWith(l) : p(h).includes(r) || h.toLowerCase() === r);
67
+ function Ye(t, r, o) {
68
+ const a = ue(t.trim());
69
+ if (a === "") return o;
70
+ const l = a.replace(/\D/g, ""), x = new Intl.DisplayNames([r], { type: "region" }), p = (h) => ue(x.of(h) ?? h), _ = a.startsWith("+") || /^\d+$/.test(a);
71
+ return o.filter((h) => _ ? W(h).startsWith(l) : p(h).includes(a) || h.toLowerCase() === a);
71
72
  }
72
73
  const Je = ["id", "disabled", "aria-label", "aria-expanded"], Qe = { class: "tabular-nums" }, Ze = ["id", "aria-label"], et = {
73
74
  key: 0,
@@ -77,9 +78,9 @@ const Je = ["id", "disabled", "aria-label", "aria-expanded"], Qe = { class: "tab
77
78
  key: 0,
78
79
  class: "px-3 py-2 text-footnote text-content-muted",
79
80
  role: "status"
80
- }, at = { class: "border-t border-border-separator px-3 py-2" }, rt = ["aria-controls", "aria-activedescendant", "aria-label", "placeholder"], lt = /* @__PURE__ */ fe({
81
+ }, rt = { class: "border-t border-border-separator px-3 py-2" }, at = ["aria-controls", "aria-activedescendant", "aria-label", "placeholder"], lt = /* @__PURE__ */ fe({
81
82
  __name: "CountryPicker",
82
- props: /* @__PURE__ */ ae({
83
+ props: /* @__PURE__ */ re({
83
84
  id: {},
84
85
  common: {},
85
86
  disabled: { type: Boolean },
@@ -88,21 +89,21 @@ const Je = ["id", "disabled", "aria-label", "aria-expanded"], Qe = { class: "tab
88
89
  modelValue: { required: !0 },
89
90
  modelModifiers: {}
90
91
  }),
91
- emits: /* @__PURE__ */ ae(["picked"], ["update:modelValue"]),
92
- setup(t, { expose: a, emit: o }) {
93
- const r = t, l = me(t, "modelValue"), x = o, { t: p, locale: _ } = pe(), h = F("root"), V = F("trigger"), k = F("panel"), K = F("search"), C = B(!1), v = B(""), d = B(0), O = g(() => {
92
+ emits: /* @__PURE__ */ re(["picked"], ["update:modelValue"]),
93
+ setup(t, { expose: r, emit: o }) {
94
+ const a = t, l = me(t, "modelValue"), x = o, { t: p, locale: _ } = pe(), h = F("root"), V = F("trigger"), k = F("panel"), K = F("search"), C = B(!1), v = B(""), d = B(0), O = g(() => {
94
95
  const e = /* @__PURE__ */ new Map();
95
96
  for (const s of te()) e.set(s, be(s, _.value));
96
97
  return e;
97
98
  }), S = (e) => O.value.get(e) ?? e, D = g(() => {
98
- const e = r.common.filter((c) => O.value.has(c));
99
+ const e = a.common.filter((c) => O.value.has(c));
99
100
  if (v.value.trim() !== "") {
100
101
  const c = Ye(v.value, _.value, te());
101
102
  return [{ title: null, countries: [...c.filter((n) => e.includes(n)), ...c.filter((n) => !e.includes(n))] }];
102
103
  }
103
104
  const s = te().filter((c) => !e.includes(c)).sort((c, n) => S(c).localeCompare(S(n), _.value));
104
105
  return [{ title: p("core.form.phone.common"), countries: e }, { title: p("core.form.phone.all"), countries: s }].filter((c) => c.countries.length > 0);
105
- }), y = g(() => D.value.flatMap((e) => e.countries)), z = g(() => D.value.map((e, s) => D.value.slice(0, s).reduce((c, n) => c + n.countries.length, 0))), U = (e) => `${r.id}-country-${e}`, { style: Q } = ze(k, {
106
+ }), y = g(() => D.value.flatMap((e) => e.countries)), z = g(() => D.value.map((e, s) => D.value.slice(0, s).reduce((c, n) => c + n.countries.length, 0))), U = (e) => `${a.id}-country-${e}`, { style: Q } = ze(k, {
106
107
  reference: () => V.value,
107
108
  placement: () => "bottom-start",
108
109
  offset: 4,
@@ -112,7 +113,7 @@ const Je = ["id", "disabled", "aria-label", "aria-expanded"], Qe = { class: "tab
112
113
  }
113
114
  });
114
115
  async function j() {
115
- r.disabled || C.value || (v.value = "", d.value = Math.max(0, y.value.indexOf(l.value)), C.value = !0, await A(), K.value?.focus());
116
+ a.disabled || C.value || (v.value = "", d.value = Math.max(0, y.value.indexOf(l.value)), C.value = !0, await A(), K.value?.focus());
116
117
  }
117
118
  function N(e) {
118
119
  C.value = !1, e && V.value?.focus();
@@ -138,27 +139,27 @@ const Je = ["id", "disabled", "aria-label", "aria-expanded"], Qe = { class: "tab
138
139
  function E(e) {
139
140
  (e.key === "ArrowDown" || e.key === "ArrowUp") && (e.preventDefault(), j());
140
141
  }
141
- return a({ focus: () => V.value?.focus() }), (e, s) => (w(), $("div", {
142
+ return r({ focus: () => V.value?.focus() }), (e, s) => (w(), $("div", {
142
143
  ref_key: "root",
143
144
  ref: h,
144
145
  class: "shrink-0",
145
146
  onFocusout: H
146
147
  }, [
147
148
  f("button", {
148
- id: `${r.id}-country`,
149
+ id: `${a.id}-country`,
149
150
  ref_key: "trigger",
150
151
  ref: V,
151
152
  type: "button",
152
- disabled: r.disabled,
153
+ disabled: a.disabled,
153
154
  "aria-label": i(p)("core.form.phone.country", { country: S(l.value) }),
154
155
  "aria-haspopup": "listbox",
155
156
  "aria-expanded": C.value,
156
157
  "data-test": "country-button",
157
- class: P(["flex h-full min-h-8 cursor-pointer items-center gap-1.5 whitespace-nowrap text-body font-medium text-content-strong focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-border-focus disabled:cursor-not-allowed compact:border-r compact:border-border-separator", r.surface]),
158
+ class: P(["flex h-full min-h-8 cursor-pointer items-center gap-1.5 whitespace-nowrap text-body font-medium text-content-strong focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-border-focus disabled:cursor-not-allowed compact:border-r compact:border-border-separator", a.surface]),
158
159
  onClick: s[0] || (s[0] = (c) => C.value ? N(!0) : j()),
159
160
  onKeydown: E
160
161
  }, [
161
- M(ue, { country: l.value }, null, 8, ["country"]),
162
+ M(ie, { country: l.value }, null, 8, ["country"]),
162
163
  f("span", Qe, T(i(de)(l.value)), 1),
163
164
  M(i(q), {
164
165
  name: "arrowDownSLine",
@@ -175,7 +176,7 @@ const Je = ["id", "disabled", "aria-label", "aria-expanded"], Qe = { class: "tab
175
176
  class: "z-1000 flex flex-col overflow-hidden rounded-menu bg-surface-overlay shadow-float"
176
177
  }, [
177
178
  f("div", {
178
- id: `${r.id}-countries`,
179
+ id: `${a.id}-countries`,
179
180
  role: "listbox",
180
181
  "aria-label": i(p)("core.form.phone.countries"),
181
182
  class: "min-h-0 flex-1 overflow-y-auto p-2"
@@ -197,7 +198,7 @@ const Je = ["id", "disabled", "aria-label", "aria-expanded"], Qe = { class: "tab
197
198
  onMouseenter: (m) => d.value = (z.value[n] ?? 0) + b,
198
199
  onClick: (m) => R(u)
199
200
  }, [
200
- M(ue, { country: u }, null, 8, ["country"]),
201
+ M(ie, { country: u }, null, 8, ["country"]),
201
202
  f("span", {
202
203
  class: P(["min-w-0 flex-1 truncate text-content-strong", u === l.value ? "font-semibold" : ""])
203
204
  }, T(S(u)), 3),
@@ -206,7 +207,7 @@ const Je = ["id", "disabled", "aria-label", "aria-expanded"], Qe = { class: "tab
206
207
  ], 64))), 128)),
207
208
  y.value.length === 0 ? (w(), $("p", nt, T(i(p)("core.form.phone.no_match")), 1)) : J("", !0)
208
209
  ], 8, Ze),
209
- f("div", at, [
210
+ f("div", rt, [
210
211
  we(f("input", {
211
212
  ref_key: "search",
212
213
  ref: K,
@@ -216,14 +217,14 @@ const Je = ["id", "disabled", "aria-label", "aria-expanded"], Qe = { class: "tab
216
217
  autocomplete: "off",
217
218
  "aria-autocomplete": "list",
218
219
  "aria-expanded": "true",
219
- "aria-controls": `${r.id}-countries`,
220
+ "aria-controls": `${a.id}-countries`,
220
221
  "aria-activedescendant": y.value[d.value] ? U(y.value[d.value]) : void 0,
221
222
  "aria-label": i(p)("core.form.phone.search"),
222
223
  placeholder: i(p)("core.form.phone.search"),
223
224
  "data-test": "country-search",
224
225
  class: "block w-full border-0 bg-transparent p-0 text-body text-content-strong placeholder:text-content-muted focus:outline-none focus:ring-0",
225
226
  onKeydown: G
226
- }, null, 40, rt), [
227
+ }, null, 40, at), [
227
228
  [_e, v.value]
228
229
  ])
229
230
  ])
@@ -237,9 +238,9 @@ const Je = ["id", "disabled", "aria-label", "aria-expanded"], Qe = { class: "tab
237
238
  }, dt = ["href", "aria-label", "title"], ft = ["href", "aria-label", "title"], mt = ["aria-label", "title"], pt = {
238
239
  class: "sr-only",
239
240
  role: "status"
240
- }, $t = /* @__PURE__ */ fe({
241
+ }, Dt = /* @__PURE__ */ fe({
241
242
  __name: "PhoneField",
242
- props: /* @__PURE__ */ ae(/* @__PURE__ */ Ie({
243
+ props: /* @__PURE__ */ re(/* @__PURE__ */ Ie({
243
244
  label: {},
244
245
  hint: {},
245
246
  error: {},
@@ -258,17 +259,17 @@ const Je = ["id", "disabled", "aria-label", "aria-expanded"], Qe = { class: "tab
258
259
  modelModifiers: {}
259
260
  }),
260
261
  emits: ["update:modelValue"],
261
- setup(t, { expose: a }) {
262
- const o = t, r = me(t, "modelValue"), { t: l, locale: x } = pe(), p = ke(st, {}), _ = !!Ve(), h = Oe("text", () => o.error || R.value ? "error" : o.disabled ? "locked" : "rest"), V = g(() => _ ? Pe(o.width) : "w-full"), k = F("input"), K = g(() => o.defaultCountry ?? p.defaultCountry ?? (o.commonCountries ?? p.commonCountries ?? ce)[0] ?? "HR"), C = g(() => o.commonCountries ?? p.commonCountries ?? ce), v = Ce(K.value), d = B("");
262
+ setup(t, { expose: r }) {
263
+ const o = t, a = me(t, "modelValue"), { t: l, locale: x } = pe(), p = ke(st, {}), _ = !!Ve(), h = Oe("text", () => o.error || R.value ? "error" : o.disabled ? "locked" : "rest"), V = g(() => _ ? Pe(o.width) : "w-full"), k = F("input"), K = g(() => o.defaultCountry ?? p.defaultCountry ?? (o.commonCountries ?? p.commonCountries ?? ce)[0] ?? "HR"), C = g(() => o.commonCountries ?? p.commonCountries ?? ce), v = Ce(K.value), d = B("");
263
264
  let O = null;
264
265
  function S(n) {
265
266
  v.value = n.country, d.value = n.text;
266
267
  }
267
- ne(() => r.value, (n) => {
268
+ ne(() => a.value, (n) => {
268
269
  n !== O && (O = null, S(oe(n, v.value)));
269
270
  }, { immediate: !0 });
270
271
  function D(n) {
271
- S(n), O = n.e164, r.value = n.e164;
272
+ S(n), O = n.e164, a.value = n.e164;
272
273
  }
273
274
  const y = (n) => n.replace(/\D/g, "").length;
274
275
  async function z(n) {
@@ -295,13 +296,13 @@ const Je = ["id", "disabled", "aria-label", "aria-expanded"], Qe = { class: "tab
295
296
  /^(\+|00)\d/.test(u) && (n.preventDefault(), D(oe(u, v.value)), A(() => k.value?.setSelectionRange(d.value.length, d.value.length)));
296
297
  }
297
298
  function j(n) {
298
- D(Ue({ country: v.value, e164: r.value, text: d.value }, n)), A(() => k.value?.focus());
299
+ D(Ue({ country: v.value, e164: a.value, text: d.value }, n)), A(() => k.value?.focus());
299
300
  }
300
- const N = B(!1), R = g(() => N.value && r.value !== "" ? ye(r.value) : null), H = g(() => {
301
+ const N = B(!1), R = g(() => N.value && a.value !== "" ? ye(a.value) : null), H = g(() => {
301
302
  const n = R.value;
302
303
  if (n)
303
304
  return n.country ? l(`core.form.phone.${n.kind}`, { country: be(n.country, x.value) }) : l("core.form.phone.invalid_any");
304
- }), G = g(() => r.value !== "" && !R.value ? Ge(r.value) : void 0), E = g(() => je(r.value)), e = B(!1);
305
+ }), G = g(() => a.value !== "" && !R.value ? Ge(a.value) : void 0), E = g(() => je(a.value)), e = B(!1);
305
306
  let s = null;
306
307
  async function c() {
307
308
  try {
@@ -311,8 +312,8 @@ const Je = ["id", "disabled", "aria-label", "aria-expanded"], Qe = { class: "tab
311
312
  }
312
313
  e.value = !0, s && clearTimeout(s), s = setTimeout(() => e.value = !1, 1800);
313
314
  }
314
- return $e(() => s && clearTimeout(s)), a({ focus: () => k.value?.focus() }), (n, u) => (w(), De(Re, Me({ ...i(Ee)(o), error: o.error ?? H.value }, {
315
- value: r.value === "" ? null : E.value,
315
+ return $e(() => s && clearTimeout(s)), r({ focus: () => k.value?.focus() }), (n, u) => (w(), De(Re, Me({ ...i(Ee)(o), error: o.error ?? H.value }, {
316
+ value: a.value === "" ? null : E.value,
316
317
  "value-style": "numeric"
317
318
  }), Te({
318
319
  default: se(({ id: b, describedby: m, invalid: I }) => [
@@ -366,7 +367,7 @@ const Je = ["id", "disabled", "aria-label", "aria-expanded"], Qe = { class: "tab
366
367
  ]),
367
368
  _: 2
368
369
  }, [
369
- r.value !== "" ? {
370
+ a.value !== "" ? {
370
371
  name: "readonly",
371
372
  fn: se(() => [
372
373
  f("div", {
@@ -377,7 +378,7 @@ const Je = ["id", "disabled", "aria-label", "aria-expanded"], Qe = { class: "tab
377
378
  class: P(["flex-auto whitespace-nowrap text-body tabular-nums text-content-strong", _ ? "text-right" : ""])
378
379
  }, T(E.value), 3),
379
380
  f("a", {
380
- href: `tel:${r.value}`,
381
+ href: `tel:${a.value}`,
381
382
  "aria-label": i(l)("core.form.phone.call"),
382
383
  title: i(l)("core.form.phone.call"),
383
384
  "data-test": "phone-call",
@@ -389,7 +390,7 @@ const Je = ["id", "disabled", "aria-label", "aria-expanded"], Qe = { class: "tab
389
390
  })
390
391
  ], 8, dt),
391
392
  f("a", {
392
- href: `sms:${r.value}`,
393
+ href: `sms:${a.value}`,
393
394
  "aria-label": i(l)("core.form.phone.message"),
394
395
  title: i(l)("core.form.phone.message"),
395
396
  "data-test": "phone-message",
@@ -401,7 +402,7 @@ const Je = ["id", "disabled", "aria-label", "aria-expanded"], Qe = { class: "tab
401
402
  })
402
403
  ], 8, ft),
403
404
  Ne(n.$slots, "actions", {
404
- number: r.value,
405
+ number: a.value,
405
406
  formatted: E.value
406
407
  }),
407
408
  f("button", {
@@ -427,11 +428,11 @@ const Je = ["id", "disabled", "aria-label", "aria-expanded"], Qe = { class: "tab
427
428
  });
428
429
  export {
429
430
  ce as COMMON_COUNTRIES,
430
- $t as PhoneField,
431
+ Dt as PhoneField,
431
432
  be as countryName,
432
433
  de as dialCode,
433
434
  je as formatInternational,
434
- Ct as isValidPhone,
435
+ $t as isValidPhone,
435
436
  Xe as phoneCountry,
436
437
  st as phoneDefaultsKey,
437
438
  Ge as phoneKind,
@@ -5,9 +5,9 @@ var B = (s) => {
5
5
  var E = (s, t, e) => t in s ? N(s, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : s[t] = e;
6
6
  var $ = (s, t, e) => E(s, typeof t != "symbol" ? t + "" : t, e), w = (s, t, e) => t.has(s) || B("Cannot " + e);
7
7
  var o = (s, t, e) => (w(s, t, "read from private field"), e ? e.call(s) : t.get(s)), h = (s, t, e) => t.has(s) ? B("Cannot add the same private member more than once") : t instanceof WeakSet ? t.add(s) : t.set(s, e), f = (s, t, e, r) => (w(s, t, "write to private field"), r ? r.call(s, e) : t.set(s, e), e), u = (s, t, e) => (w(s, t, "access private method"), e);
8
- import { b as J, c as L, a as M, d as T, h as q, e as F, i as G, p as K, f as _, g as z, u as D } from "../platform-hunMqFdB.js";
8
+ import { b as J, c as L, a as M, d as T, h as q, e as F, i as G, p as K, f as _, g as z, u as D } from "../platform-q3cjODLx.js";
9
9
  import { M as Q, d as R } from "../context-Ch1r4fdN.js";
10
- import { _ as V } from "../AccessGate.vue_vue_type_script_setup_true_lang-DKX3PH2n.js";
10
+ import { _ as V } from "../AccessGate.vue_vue_type_script_setup_true_lang-DcbZBINh.js";
11
11
  class d extends Error {
12
12
  constructor(e, r = [], n) {
13
13
  super(r.length > 0 ? `${e}: ${r.join("; ")}` : e);
@@ -1,4 +1,4 @@
1
- import { c as P } from "./client-Bw0aM5Gu.js";
1
+ import { c as P } from "./client-k9euDWF4.js";
2
2
  import { d as k } from "./context-Ch1r4fdN.js";
3
3
  import { a as x, A as q } from "./error-CD7x0Jrz.js";
4
4
  import { shallowRef as U } from "vue";
@@ -1,5 +1,5 @@
1
1
  import { p as o, u as r, a, b as u } from "../routeResource-DstM0hvf.js";
2
- import { _ as R, a as c } from "../ResourcePage.vue_vue_type_script_setup_true_lang-CJcKa9SW.js";
2
+ import { _ as R, a as c } from "../ResourcePage.vue_vue_type_script_setup_true_lang-KPVA-1fI.js";
3
3
  export {
4
4
  R as RecordPager,
5
5
  c as ResourcePage,
@@ -0,0 +1,13 @@
1
+ function u(e, i, r = {}) {
2
+ return { method: e, path: i, permission: r.permission, public: r.public === !0, raw: !1 };
3
+ }
4
+ u.raw = (e, i, r = {}) => ({
5
+ method: e,
6
+ path: i,
7
+ permission: r.permission,
8
+ public: r.public === !0,
9
+ raw: !0
10
+ });
11
+ export {
12
+ u as r
13
+ };
@@ -24,7 +24,7 @@ export declare const routeAccessKey: InjectionKey<RouteAccess>, useRouteAccess:
24
24
  * page's section outlet) is an `AppRouterView`, not a bare `RouterView`: it shows the no-access state
25
25
  * in place of a page the session may not open (parents around it keep rendering, so the layout stays),
26
26
  * and remounts a page when the route parameter named by `meta.remountOnParam` changes (a record pager
27
- * moving to the next record).
27
+ * moving to the next record), or when the shell's pull to refresh reloads the page (the shell's outlet only).
28
28
  *
29
29
  * Denial is shown here, not enforced: the server authorizes every request.
30
30
  */
@@ -1,9 +1,9 @@
1
- import { _ as a, c as o, a as r, i as t } from "../NoAccess.vue_vue_type_script_setup_true_lang-8m9cNptR.js";
1
+ import { _ as a, c as o, a as r, i as t } from "../NoAccess.vue_vue_type_script_setup_true_lang-DWxq-MTM.js";
2
2
  import { d as c } from "../defineRoutes-BGAdiIrt.js";
3
- import { A as u, f as p, i as f, r as A, u as m } from "../access-DdRFrVV1.js";
4
- import { i as l, r as x } from "../guards-Cd1V28oG.js";
5
- import { u as y } from "../sections-BEqW1dOc.js";
6
- import { b as v, c as N, n as H, u as b } from "../navigation-BPWa63ge.js";
3
+ import { A as u, f as p, i as f, r as A, u as m } from "../access-DmAceEo5.js";
4
+ import { i as l, r as x } from "../guards-Dve61KjR.js";
5
+ import { u as y } from "../sections-D-kD98vu.js";
6
+ import { b as v, c as N, n as H, u as b } from "../navigation-Cm3iChlR.js";
7
7
  export {
8
8
  u as AppRouterView,
9
9
  a as NoAccess,