@wssto2/vue-core 0.19.0 → 0.20.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 (147) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +3 -0
  3. package/dist/{AccessGate.vue_vue_type_script_setup_true_lang-Bg8JFAOT.js → AccessGate.vue_vue_type_script_setup_true_lang-Dw_pnsh9.js} +1 -1
  4. package/dist/{AccountMenuItem.vue_vue_type_script_setup_true_lang-BIYgaihv.js → AccountMenuItem.vue_vue_type_script_setup_true_lang-rmH1XbU9.js} +1 -1
  5. package/dist/{ActionRow.vue_vue_type_script_setup_true_lang-B5IMNnTf.js → ActionRow.vue_vue_type_script_setup_true_lang-_TDoIg53.js} +2 -2
  6. package/dist/{Activity-CiYn5E6A.js → Activity-BDVYmNgy.js} +9 -9
  7. package/dist/{AdaptivePageShell.vue_vue_type_script_setup_true_lang-oXWQTfBs.js → AdaptivePageShell.vue_vue_type_script_setup_true_lang-DryXyklZ.js} +6 -6
  8. package/dist/{AlertDialog.vue_vue_type_script_setup_true_lang-WuGvAOrj.js → AlertDialog.vue_vue_type_script_setup_true_lang-QYvbly_-.js} +1 -1
  9. package/dist/{AsyncSection.vue_vue_type_script_setup_true_lang-CX8mpXRE.js → AsyncSection.vue_vue_type_script_setup_true_lang-DRP4BnMb.js} +4 -4
  10. package/dist/{Banner.vue_vue_type_script_setup_true_lang-sv0phngk.js → Banner.vue_vue_type_script_setup_true_lang-ukLpznql.js} +1 -1
  11. package/dist/{Button.vue_vue_type_script_setup_true_lang-JrqhO99l.js → Button.vue_vue_type_script_setup_true_lang-DkRuLqQK.js} +1 -1
  12. package/dist/{Changes-Cy8STpLX.js → Changes-DRij0rEQ.js} +5 -5
  13. package/dist/{CollectionPage.vue_vue_type_script_setup_true_lang-Dr6nFNBB.js → CollectionPage.vue_vue_type_script_setup_true_lang-Aoof1prZ.js} +12 -12
  14. package/dist/{DataTable.vue_vue_type_script_setup_true_lang-D372wlxR.js → DataTable.vue_vue_type_script_setup_true_lang-DGcNcRkO.js} +1 -1
  15. package/dist/{DateField.vue_vue_type_script_setup_true_lang-D0KcfW8R.js → DateField.vue_vue_type_script_setup_true_lang-J04KjxmR.js} +4 -4
  16. package/dist/{DeadLetters-DhJkMpd_.js → DeadLetters-Dpm4UY__.js} +4 -4
  17. package/dist/{DiscardChangesModal.vue_vue_type_script_setup_true_lang-92szOrYd.js → DiscardChangesModal.vue_vue_type_script_setup_true_lang-CxNVKoYI.js} +1 -1
  18. package/dist/{EmptyState.vue_vue_type_script_setup_true_lang-DbZiO2RF.js → EmptyState.vue_vue_type_script_setup_true_lang-ByKvrNSg.js} +1 -1
  19. package/dist/{FormGroup.vue_vue_type_script_setup_true_lang-lvAuBG-0.js → FormGroup.vue_vue_type_script_setup_true_lang-7bIssY9f.js} +4 -4
  20. package/dist/{FormRow.vue_vue_type_script_setup_true_lang-CpgNVQF4.js → FormRow.vue_vue_type_script_setup_true_lang-okuxbKyI.js} +1 -1
  21. package/dist/{FormView.vue_vue_type_script_setup_true_lang-D01Jr4UU.js → FormView.vue_vue_type_script_setup_true_lang-CiYprNRr.js} +2 -2
  22. package/dist/{General-CwTPC5UP.js → General-BmVEbYqv.js} +8 -8
  23. package/dist/{HeaderAction.vue_vue_type_script_setup_true_lang-Da59TLBh.js → HeaderAction.vue_vue_type_script_setup_true_lang-DVfkuOy-.js} +2 -2
  24. package/dist/{Icon.vue_vue_type_script_lang-BhhsFYwp.js → Icon.vue_vue_type_script_lang-0pW1XBaE.js} +35 -33
  25. package/dist/{IconTile.vue_vue_type_script_setup_true_lang-BmxCuUZ9.js → IconTile.vue_vue_type_script_setup_true_lang-BWHQiA7d.js} +1 -1
  26. package/dist/{IncidentRecord-hXEGuLGg.js → IncidentRecord-DWY6Bws1.js} +17 -17
  27. package/dist/{IncidentsList-C41VyDwK.js → IncidentsList-C21UNIhT.js} +6 -6
  28. package/dist/{LeaveGuardRoot.vue_vue_type_script_setup_true_lang-CrGrjrlO.js → LeaveGuardRoot.vue_vue_type_script_setup_true_lang-CpEd_Psg.js} +1 -1
  29. package/dist/{Menu.vue_vue_type_script_setup_true_lang-Cqu4Ebsb.js → Menu.vue_vue_type_script_setup_true_lang-DobycRxf.js} +1 -1
  30. package/dist/{MenuButton.vue_vue_type_script_setup_true_lang-C-XRr5f2.js → MenuButton.vue_vue_type_script_setup_true_lang-qDKt6gX9.js} +1 -1
  31. package/dist/{Modal.vue_vue_type_script_setup_true_lang-CZ7WrDwu.js → Modal.vue_vue_type_script_setup_true_lang-C0tQAYQ4.js} +2 -2
  32. package/dist/{NewRolePage-BYYZJkK7.js → NewRolePage-K5zts3e_.js} +4 -4
  33. package/dist/{NoAccess.vue_vue_type_script_setup_true_lang-BHzZtZ50.js → NoAccess.vue_vue_type_script_setup_true_lang-BYnTQCtW.js} +1 -1
  34. package/dist/{NumberField.vue_vue_type_script_setup_true_lang-BhNZgEW6.js → NumberField.vue_vue_type_script_setup_true_lang-CxgVJrdv.js} +2 -2
  35. package/dist/{Panel.vue_vue_type_script_setup_true_lang-D_Wg42hu.js → Panel.vue_vue_type_script_setup_true_lang-DTCmFSwg.js} +1 -1
  36. package/dist/{PersonAccess.vue_vue_type_script_setup_true_lang-mYFuG-Y3.js → PersonAccess.vue_vue_type_script_setup_true_lang-Kp9g93wE.js} +12 -12
  37. package/dist/{PhotoViewer.vue_vue_type_script_setup_true_lang-DmMg1T_V.js → PhotoViewer.vue_vue_type_script_setup_true_lang-D2-uQbSV.js} +1 -1
  38. package/dist/{ProfilePage-DGEsIycR.js → ProfilePage-C3mLBer6.js} +17 -17
  39. package/dist/{RecordHeader.vue_vue_type_script_setup_true_lang-B3BnYg1x.js → RecordHeader.vue_vue_type_script_setup_true_lang-Dz5Qw8II.js} +2 -2
  40. package/dist/{ResourcePage.vue_vue_type_script_setup_true_lang-1iZtj3rh.js → ResourcePage.vue_vue_type_script_setup_true_lang-R3eJKPq5.js} +4 -4
  41. package/dist/{RoleEditor.vue_vue_type_script_setup_true_lang-BslSDDiM.js → RoleEditor.vue_vue_type_script_setup_true_lang-CGMpBpnK.js} +12 -12
  42. package/dist/{RolePage-C08ZUqw1.js → RolePage-C62_sGxx.js} +13 -13
  43. package/dist/{RolesPage-FOuY1VKg.js → RolesPage-CS8ryIQq.js} +9 -9
  44. package/dist/{SectionList.vue_vue_type_script_setup_true_lang-CodyVezo.js → SectionList.vue_vue_type_script_setup_true_lang-C6eOVjpa.js} +3 -3
  45. package/dist/{SectionNavigator.vue_vue_type_script_setup_true_lang-DCTFxfPB.js → SectionNavigator.vue_vue_type_script_setup_true_lang-DqDcFvS0.js} +6 -6
  46. package/dist/{SegmentedField.vue_vue_type_script_setup_true_lang-CLR6EvzO.js → SegmentedField.vue_vue_type_script_setup_true_lang-Du4YUcw9.js} +2 -2
  47. package/dist/{SelectField.vue_vue_type_script_setup_true_lang-D5xYofdb.js → SelectField.vue_vue_type_script_setup_true_lang-BA5YMCXA.js} +6 -6
  48. package/dist/{ServiceAccountDialog.vue_vue_type_script_setup_true_lang-CDr4WNIb.js → ServiceAccountDialog.vue_vue_type_script_setup_true_lang-BoeV2_MN.js} +8 -8
  49. package/dist/{ServiceAccountRecord-kWwIQGZb.js → ServiceAccountRecord-BDkaaOte.js} +18 -18
  50. package/dist/{ServiceAccountsList-CKy9_YHP.js → ServiceAccountsList-KaZwNlK5.js} +10 -10
  51. package/dist/{Sessions-BDc8gdYH.js → Sessions-DhOpUlRc.js} +7 -7
  52. package/dist/{SettingsPage-t-8kmFVT.js → SettingsPage-DPzg7zwX.js} +18 -18
  53. package/dist/Sheet.vue_vue_type_script_setup_true_lang-C1jpmLYN.js +163 -0
  54. package/dist/{SignIn-CqtkvtCZ.js → SignIn-4aUxE2LU.js} +8 -8
  55. package/dist/{SignInPage-DcdNKZIb.js → SignInPage-B80pQ8tG.js} +6 -6
  56. package/dist/{SignIns-D4-nGu0B.js → SignIns-CLX8Puf1.js} +5 -5
  57. package/dist/{StatusLine.vue_vue_type_script_setup_true_lang-DsdQmLq6.js → StatusLine.vue_vue_type_script_setup_true_lang-BN8nG1CW.js} +1 -1
  58. package/dist/{SwipeActions.vue_vue_type_script_setup_true_lang-D8SiC0G7.js → SwipeActions.vue_vue_type_script_setup_true_lang-BBqcW3MR.js} +1 -1
  59. package/dist/{SwitchField.vue_vue_type_script_setup_true_lang-CLtcuofe.js → SwitchField.vue_vue_type_script_setup_true_lang-Dw7BbBU4.js} +2 -2
  60. package/dist/Tabs.vue_vue_type_script_setup_true_lang-Cma_ma6V.js +169 -0
  61. package/dist/{TextField.vue_vue_type_script_setup_true_lang-CVGh-p3J.js → TextField.vue_vue_type_script_setup_true_lang-DS6RPR-h.js} +4 -4
  62. package/dist/{TextareaField.vue_vue_type_script_setup_true_lang-YxUlNHSk.js → TextareaField.vue_vue_type_script_setup_true_lang-BqpZt1Hv.js} +2 -2
  63. package/dist/{TimeField.vue_vue_type_script_setup_true_lang-DHNC_MLt.js → TimeField.vue_vue_type_script_setup_true_lang-BeS1cfqL.js} +4 -4
  64. package/dist/{Timestamp.vue_vue_type_script_setup_true_lang-d_KuxWjH.js → Timestamp.vue_vue_type_script_setup_true_lang-XbbupD9A.js} +1 -1
  65. package/dist/{UserRecord-CwZCr9Im.js → UserRecord-BFqw2Pi8.js} +10 -10
  66. package/dist/{UsersList-Cn19sFgv.js → UsersList-C52C1lN1.js} +3 -3
  67. package/dist/{ViewTabs.vue_vue_type_script_setup_true_lang-BjdDXE3T.js → ViewTabs.vue_vue_type_script_setup_true_lang-CBYrLPL4.js} +1 -1
  68. package/dist/access/index.js +7 -7
  69. package/dist/app/index.js +2 -2
  70. package/dist/{application-CDSweJb9.js → application-cTqMhmFf.js} +8 -8
  71. package/dist/{back-LcLlFodC.js → back-CeozxCgQ.js} +2 -2
  72. package/dist/button/index.js +1 -1
  73. package/dist/collection/index.js +9 -9
  74. package/dist/content/DiffView.vue.d.ts +22 -0
  75. package/dist/content/PreviewFrame.vue.d.ts +46 -0
  76. package/dist/content/diff.d.ts +27 -0
  77. package/dist/content/index.d.ts +4 -0
  78. package/dist/content/index.js +552 -218
  79. package/dist/content/previewFrame.d.ts +50 -0
  80. package/dist/{contributions-B0x5x5xD.js → contributions-BSmIRPg1.js} +1 -1
  81. package/dist/controls/SortableList.vue.d.ts +31 -0
  82. package/dist/controls/Tabs.vue.d.ts +2 -0
  83. package/dist/controls/index.d.ts +1 -0
  84. package/dist/controls/index.js +132 -33
  85. package/dist/form/CodeEditor.vue.d.ts +61 -0
  86. package/dist/form/I18nField.vue.d.ts +1 -1
  87. package/dist/form/MarkerList.vue.d.ts +20 -0
  88. package/dist/form/TextareaField.vue.d.ts +1 -1
  89. package/dist/form/index.d.ts +2 -0
  90. package/dist/form/index.js +1550 -1428
  91. package/dist/{guards-CNJ0ATVC.js → guards-BP9x7CLF.js} +1 -1
  92. package/dist/i18n/index.js +18 -18
  93. package/dist/icon/core.d.ts +2 -0
  94. package/dist/icon/index.js +1 -1
  95. package/dist/identity/index.js +3 -3
  96. package/dist/identity/profile/EmailChangeDialog.vue.d.ts +2 -2
  97. package/dist/incidents/index.js +1 -1
  98. package/dist/{index-BA2w8uwD.js → index-CMx77x5P.js} +27 -27
  99. package/dist/{index-1HS7O2-e.js → index-CxUfs3Xz.js} +10 -10
  100. package/dist/{index-SLJWm40T.js → index-DLkQwWt9.js} +9 -9
  101. package/dist/index.d.ts +1 -1
  102. package/dist/index.js +1 -1
  103. package/dist/modal/Sheet.vue.d.ts +13 -0
  104. package/dist/modal/TabbedSheet.vue.d.ts +46 -0
  105. package/dist/modal/index.d.ts +1 -0
  106. package/dist/modal/index.js +123 -41
  107. package/dist/navigation-C05vGEN8.js +55 -0
  108. package/dist/{neighbors-Dg_LU9ry.js → neighbors-BqfO6zf3.js} +2 -2
  109. package/dist/notifications/index.js +1 -1
  110. package/dist/onboarding/index.js +2 -2
  111. package/dist/{options-mOOX6JSS.js → options-DIp_lVAj.js} +2 -2
  112. package/dist/overlay/index.js +4 -4
  113. package/dist/page/SectionNavigator.vue.d.ts +1 -1
  114. package/dist/page/SplitPane.vue.d.ts +54 -0
  115. package/dist/page/WorkbenchPage.vue.d.ts +72 -0
  116. package/dist/page/index.d.ts +2 -0
  117. package/dist/page/index.js +343 -104
  118. package/dist/phone/index.js +3 -3
  119. package/dist/platform/index.js +3 -3
  120. package/dist/platform/navigation.d.ts +10 -0
  121. package/dist/{platform-DU9QFts8.js → platform-YWfOO7b2.js} +94 -88
  122. package/dist/pwa/index.js +3 -3
  123. package/dist/resource/index.js +1 -1
  124. package/dist/{resources-BZLlAtoS.js → resources-BAxfEEv1.js} +1 -1
  125. package/dist/router/index.js +4 -4
  126. package/dist/router/navigation.d.ts +2 -0
  127. package/dist/{rowLayout-PIuD7MGo.js → rowLayout-3W9TvFNt.js} +5 -5
  128. package/dist/{sectionIndex-BS0ic5W7.js → sectionIndex-CSr457Lb.js} +2 -2
  129. package/dist/{sections-BpiRLntE.js → sections-DXso1JSV.js} +2 -2
  130. package/dist/shell/NavigationList.vue.d.ts +1 -1
  131. package/dist/shell/index.js +522 -501
  132. package/dist/shell/navigationGroups.d.ts +4 -1
  133. package/dist/state/index.js +8 -8
  134. package/dist/{state-z1iPF1DT.js → state-DqCZdet7.js} +1 -1
  135. package/dist/styles.css +1 -1
  136. package/dist/{suggestions-DeMgs_ki.js → suggestions-D0-qmRFy.js} +1 -1
  137. package/dist/testing/index.js +2 -2
  138. package/dist/{useCommand-DQKvro1n.js → useCommand-D6K6o6dx.js} +4 -4
  139. package/dist/{useGroupSheet-CRw3MUmX.js → useGroupSheet-Daxi2mzi.js} +5 -5
  140. package/dist/{usePreferences-DB29UTFD.js → usePreferences-D38x73re.js} +1 -1
  141. package/dist/{useRecordDialog-0azHxxvm.js → useRecordDialog-CfBp0kuP.js} +1 -1
  142. package/dist/{useResourceForm-zVuWerSn.js → useResourceForm-Ddxk7mc0.js} +1 -1
  143. package/dist/{useTypedEntry-BsMV66Yc.js → useTypedEntry-r4AqWlV7.js} +2 -2
  144. package/package.json +1 -1
  145. package/dist/Sheet.vue_vue_type_script_setup_true_lang-BG8HUNfs.js +0 -145
  146. package/dist/Tabs.vue_vue_type_script_setup_true_lang-tpkGp98F.js +0 -155
  147. package/dist/navigation-d-JAPBGA.js +0 -53
@@ -1,4 +1,6 @@
1
1
  export declare const coreIcons: {
2
+ readonly externalLink: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"/><polyline points=\"15 3 21 3 21 9\"/><line x1=\"10\" y1=\"14\" x2=\"21\" y2=\"3\"/></svg>";
3
+ readonly draggable: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><circle cx=\"9\" cy=\"6\" r=\"1.6\"/><circle cx=\"15\" cy=\"6\" r=\"1.6\"/><circle cx=\"9\" cy=\"12\" r=\"1.6\"/><circle cx=\"15\" cy=\"12\" r=\"1.6\"/><circle cx=\"9\" cy=\"18\" r=\"1.6\"/><circle cx=\"15\" cy=\"18\" r=\"1.6\"/></svg>";
2
4
  readonly close: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M11.9997 10.5865L16.9495 5.63672L18.3637 7.05093L13.4139 12.0007L18.3637 16.9504L16.9495 18.3646L11.9997 13.4149L7.04996 18.3646L5.63574 16.9504L10.5855 12.0007L5.63574 7.05093L7.04996 5.63672L11.9997 10.5865Z\"></path></svg>";
3
5
  readonly loader4Line: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M18.364 5.63604L16.9497 7.05025C15.683 5.7835 13.933 5 12 5C8.13401 5 5 8.13401 5 12C5 15.866 8.13401 19 12 19C15.866 19 19 15.866 19 12H21C21 16.9706 16.9706 21 12 21C7.02944 21 3 16.9706 3 12C3 7.02944 7.02944 3 12 3C14.4853 3 16.7353 4.00736 18.364 5.63604Z\"></path></svg>";
4
6
  readonly expandUpDownLine: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M18.2072 9.0428 12.0001 2.83569 5.793 9.0428 7.20721 10.457 12.0001 5.66412 16.793 10.457 18.2072 9.0428ZM5.79285 14.9572 12 21.1643 18.2071 14.9572 16.7928 13.543 12 18.3359 7.20706 13.543 5.79285 14.9572Z\"></path></svg>";
@@ -1,4 +1,4 @@
1
- import { _ as a, i as n, p as c } from "../Icon.vue_vue_type_script_lang-BhhsFYwp.js";
1
+ import { _ as a, i as n, p as c } from "../Icon.vue_vue_type_script_lang-0pW1XBaE.js";
2
2
  export {
3
3
  a as Icon,
4
4
  n as installIcons,
@@ -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-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";
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-CMx77x5P.js";
3
+ import { a as T, _ } from "../ActionRow.vue_vue_type_script_setup_true_lang-_TDoIg53.js";
4
+ import { i as k, l as N, r as O, s as j, a as q, u as z } from "../usePreferences-D38x73re.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
- pending: (pending: PendingEmail | null) => any;
7
6
  changed: (profile: ProfileResponse) => any;
7
+ pending: (pending: PendingEmail | null) => any;
8
8
  cancelled: () => any;
9
9
  }, string, import("vue").PublicProps, Readonly<{}> & Readonly<{
10
- onPending?: ((pending: PendingEmail | null) => any) | undefined;
11
10
  onChanged?: ((profile: ProfileResponse) => any) | undefined;
11
+ onPending?: ((pending: PendingEmail | null) => any) | undefined;
12
12
  onCancelled?: (() => any) | undefined;
13
13
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
14
14
  export default _default;
@@ -1,4 +1,4 @@
1
- import { h as t, j as i, k as r, l as n, i as a } from "../index-1HS7O2-e.js";
1
+ import { h as t, j as i, k as r, l as n, i as a } from "../index-CxUfs3Xz.js";
2
2
  export {
3
3
  t as MAX_REPORTS_PER_SESSION,
4
4
  i as clientErrorReporter,
@@ -8,34 +8,34 @@ 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-DU9QFts8.js";
12
- import { i as H, r as qe, l as Fe, s as Ne, a as Be } from "./usePreferences-DB29UTFD.js";
11
+ import { u as I, h as W, f as te } from "./platform-YWfOO7b2.js";
12
+ import { i as H, r as qe, l as Fe, s as Ne, a as Be } from "./usePreferences-D38x73re.js";
13
13
  import { useI18n as C } from "vue-i18n";
14
- import { _ as fe } from "./Icon.vue_vue_type_script_lang-BhhsFYwp.js";
14
+ import { _ as fe } from "./Icon.vue_vue_type_script_lang-0pW1XBaE.js";
15
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
- import { _ as T } from "./Button.vue_vue_type_script_setup_true_lang-JrqhO99l.js";
16
+ import { _ as ge } from "./AccountMenuItem.vue_vue_type_script_setup_true_lang-rmH1XbU9.js";
17
+ import { _ as T } from "./Button.vue_vue_type_script_setup_true_lang-DkRuLqQK.js";
18
18
  import { u as De } from "./leaveGuard-Cc8yeLxM.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";
19
+ import { _ as We } from "./FormView.vue_vue_type_script_setup_true_lang-CiYprNRr.js";
20
+ import { _ as L } from "./TextField.vue_vue_type_script_setup_true_lang-DS6RPR-h.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-lvAuBG-0.js";
24
+ import { u as He, a as V } from "./FormGroup.vue_vue_type_script_setup_true_lang-7bIssY9f.js";
25
25
  import { u as J } from "./format-C_HXlOYQ.js";
26
26
  import { b as Je } from "./routeResource-DlTsGTg_.js";
27
- import { _ as F } from "./IconTile.vue_vue_type_script_setup_true_lang-BmxCuUZ9.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";
27
+ import { _ as F } from "./IconTile.vue_vue_type_script_setup_true_lang-BWHQiA7d.js";
28
+ import { _ as U } from "./FormRow.vue_vue_type_script_setup_true_lang-okuxbKyI.js";
29
+ import { u as he, _ as be } from "./useCommand-D6K6o6dx.js";
30
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";
31
+ import { _ as Qe } from "./SelectField.vue_vue_type_script_setup_true_lang-BA5YMCXA.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-B5IMNnTf.js";
34
+ import "./ActionRow.vue_vue_type_script_setup_true_lang-_TDoIg53.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-D372wlxR.js";
36
+ import { _ as tt } from "./DataTable.vue_vue_type_script_setup_true_lang-DGcNcRkO.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-Bg8JFAOT.js";
38
+ import { _ as st } from "./AccessGate.vue_vue_type_script_setup_true_lang-Dw_pnsh9.js";
39
39
  import "./routes-Beyr5NQo.js";
40
40
  const [ot, ve] = N("vue-core.identity"), rt = { hidden: "" }, at = /* @__PURE__ */ $({
41
41
  __name: "LocaleSync",
@@ -246,7 +246,7 @@ const ft = ["aria-labelledby"], _t = ["id"], gt = { class: "mt-1 text-subheadlin
246
246
  ]));
247
247
  }
248
248
  }), wt = X({
249
- login: { name: "login", path: "/login", component: () => import("./SignInPage-DcdNKZIb.js"), meta: { public: !0, titleKey: "core.identity.signin.title" } }
249
+ login: { name: "login", path: "/login", component: () => import("./SignInPage-B80pQ8tG.js"), meta: { public: !0, titleKey: "core.identity.signin.title" } }
250
250
  });
251
251
  function Xn(e = {}) {
252
252
  return ne({
@@ -381,7 +381,7 @@ function Hn(e) {
381
381
  };
382
382
  }
383
383
  const ke = X({
384
- index: { name: "profile", path: "/profile", component: () => import("./ProfilePage-DGEsIycR.js"), meta: { titleKey: "core.profile.title" } }
384
+ index: { name: "profile", path: "/profile", component: () => import("./ProfilePage-C3mLBer6.js"), meta: { titleKey: "core.profile.title" } }
385
385
  }), At = /* @__PURE__ */ $({
386
386
  __name: "ProfileMenuItem",
387
387
  setup(e) {
@@ -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-Cn19sFgv.js"), meta: { access: le, titleKey: "core.users.title" } },
415
+ index: { name: "users.index", path: "/users", component: () => import("./UsersList-C52C1lN1.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-CwZCr9Im.js"),
419
+ component: () => import("./UserRecord-BFqw2Pi8.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-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" } } }
422
+ { name: "users.record.general", path: "general", component: () => import("./General-BmVEbYqv.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-4aUxE2LU.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-DhOpUlRc.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-CLX8Puf1.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-DRij0rEQ.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-BDVYmNgy.js"), meta: { access: Kt, section: { labelKey: "core.users.sections.activity", icon: "listCheck", groupKey: "core.users.section_groups.activity" } } }
428
428
  ]
429
429
  }
430
430
  });
@@ -1153,11 +1153,11 @@ 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-CKy9_YHP.js"), meta: { access: ue, titleKey: "core.serviceaccounts.title_plural" } },
1156
+ index: { name: "serviceaccounts.index", path: "/iam/service-accounts", component: () => import("./ServiceAccountsList-KaZwNlK5.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-kWwIQGZb.js"),
1160
+ component: () => import("./ServiceAccountRecord-BDkaaOte.js"),
1161
1161
  meta: { access: ue, titleKey: "core.serviceaccounts.title_plural", remountOnParam: "id" }
1162
1162
  }
1163
1163
  });
@@ -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-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";
6
+ import { a as O } from "./FormGroup.vue_vue_type_script_setup_true_lang-7bIssY9f.js";
7
+ import { _ as F } from "./SelectField.vue_vue_type_script_setup_true_lang-BA5YMCXA.js";
8
+ import { _ as b } from "./TextareaField.vue_vue_type_script_setup_true_lang-BqpZt1Hv.js";
9
+ import { _ as w } from "./TextField.vue_vue_type_script_setup_true_lang-DS6RPR-h.js";
10
+ import { u as j, _ as K } from "./useCommand-D6K6o6dx.js";
11
11
  import { t as z } from "./toast-CqSDTWRX.js";
12
- import { u as R } from "./platform-DU9QFts8.js";
12
+ import { u as R } from "./platform-YWfOO7b2.js";
13
13
  import { d as H, r as Q, a as W } from "./http-D6qOS6xs.js";
14
- import { _ as Y } from "./AccountMenuItem.vue_vue_type_script_setup_true_lang-BIYgaihv.js";
14
+ import { _ as Y } from "./AccountMenuItem.vue_vue_type_script_setup_true_lang-rmH1XbU9.js";
15
15
  import { d as J } from "./defineRoutes-BGAdiIrt.js";
16
- import { d as Z } from "./application-CDSweJb9.js";
16
+ import { d as Z } from "./application-cTqMhmFf.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-C41VyDwK.js"), meta: { access: N, titleKey: "core.incidents.title" } },
271
+ index: { name: "incidents.index", path: "/incidents", component: () => import("./IncidentsList-C21UNIhT.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-hXEGuLGg.js"),
275
+ component: () => import("./IncidentRecord-DWY6Bws1.js"),
276
276
  // Previous / next record swaps the id in place.
277
277
  meta: { access: N, titleKey: "core.incidents.title", remountOnParam: "incidentID" }
278
278
  }
@@ -2,20 +2,20 @@ 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-DU9QFts8.js";
5
+ import { u as ee } from "./platform-YWfOO7b2.js";
6
6
  import { d as te } from "./defineRoutes-BGAdiIrt.js";
7
7
  import { useI18n as I } from "vue-i18n";
8
- import { _ as _e } from "./AccountMenuItem.vue_vue_type_script_setup_true_lang-BIYgaihv.js";
8
+ import { _ as _e } from "./AccountMenuItem.vue_vue_type_script_setup_true_lang-rmH1XbU9.js";
9
9
  import { f as xe } from "./client-Do8v1I5l.js";
10
10
  import { u as we } from "./mediaQuery-CygcXmFW.js";
11
- import { _ as ke } from "./Sheet.vue_vue_type_script_setup_true_lang-BG8HUNfs.js";
11
+ import { _ as ke } from "./Sheet.vue_vue_type_script_setup_true_lang-C1jpmLYN.js";
12
12
  import { _ as Se } from "./Popover.vue_vue_type_script_setup_true_lang-BK8HL_V0.js";
13
- import { _ as J } from "./HeaderAction.vue_vue_type_script_setup_true_lang-Da59TLBh.js";
13
+ import { _ as J } from "./HeaderAction.vue_vue_type_script_setup_true_lang-DVfkuOy-.js";
14
14
  import { useRouter as Te } from "vue-router";
15
- import { _ as K } from "./Button.vue_vue_type_script_setup_true_lang-JrqhO99l.js";
15
+ import { _ as K } from "./Button.vue_vue_type_script_setup_true_lang-DkRuLqQK.js";
16
16
  import { u as Ee } from "./format-C_HXlOYQ.js";
17
- import { _ as Pe } from "./Icon.vue_vue_type_script_lang-BhhsFYwp.js";
18
- import { _ as Ce } from "./AsyncSection.vue_vue_type_script_setup_true_lang-CX8mpXRE.js";
17
+ import { _ as Pe } from "./Icon.vue_vue_type_script_lang-0pW1XBaE.js";
18
+ import { _ as Ce } from "./AsyncSection.vue_vue_type_script_setup_true_lang-DRP4BnMb.js";
19
19
  const E = {
20
20
  list: v("GET", "/v1/notifications"),
21
21
  unread: v("GET", "/v1/notifications/unread"),
@@ -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-DhJkMpd_.js"), meta: { access: Ne, titleKey: "core.notifications.dead_letters.title" } }
138
+ index: { name: "events.deadletters", path: "/events/dead-letters", component: () => import("./DeadLetters-Dpm4UY__.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-t-8kmFVT.js"), meta: { titleKey: "core.notifications.settings.title" } }
140
+ index: { name: "notifications.settings", path: "/profile/notifications", component: () => import("./SettingsPage-DPzg7zwX.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.19.0";
2
+ export declare const version = "0.20.0";
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- const o = "0.19.0";
1
+ const o = "0.20.0";
2
2
  export {
3
3
  o as version
4
4
  };
@@ -11,6 +11,13 @@
11
11
  * Inertness, scroll lock, Escape and focus come from `useDialog`, the behaviour Modal and
12
12
  * AlertDialog use, so they nest.
13
13
  *
14
+ * - `size` (`md` 28rem, the default; `lg` 36rem; `xl` 48rem) is the width of the desktop slide-over; the bottom sheet ignores it.
15
+ * - `docked` makes the desktop sheet a **non-modal** panel in the page's own layout: no scrim, no scroll lock, no focus trap, the
16
+ * page beside it stays usable (inert nothing), and its content narrows to make room. Put the sheet as a child of a flex row
17
+ * next to the content (`<div class="flex h-full"><div class="min-w-0 flex-1">page</div><Sheet docked …/></div>`); it takes the
18
+ * row's height. Escape closes it while focus is inside it. On phones, tablets and touch screens a docked sheet is the usual
19
+ * bottom sheet, because there is no room beside the page.
20
+ *
14
21
  * <Sheet ref="sheet" :title="t('filters')" grouped>…body…<template #footer>…buttons…</template></Sheet>
15
22
  * sheet.value?.present() sheet.value?.dismiss()
16
23
  */
@@ -18,6 +25,10 @@ type __VLS_Props = {
18
25
  title?: string;
19
26
  /** The canvas behind inset groups (pickers) instead of a plain cell surface. */
20
27
  grouped?: boolean;
28
+ /** The width of the desktop slide-over. */
29
+ size?: "md" | "lg" | "xl";
30
+ /** A non-modal panel beside the page (desktop only); see above. */
31
+ docked?: boolean;
21
32
  };
22
33
  type __VLS_Slots = {
23
34
  default?: () => unknown;
@@ -42,7 +53,9 @@ declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {
42
53
  onPresented?: (() => any) | undefined;
43
54
  }>, {
44
55
  title: string;
56
+ size: "md" | "lg" | "xl";
45
57
  grouped: boolean;
58
+ docked: boolean;
46
59
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
47
60
  declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
48
61
  export default _default;
@@ -0,0 +1,46 @@
1
+ /** One tab of a `TabbedSheet`. `error` marks it when something inside needs attention (a failed field): `true` says "Has errors", a text says it. */
2
+ export interface SheetTab<Value extends string | number = string | number> {
3
+ value: Value;
4
+ label: string;
5
+ error?: boolean | string;
6
+ }
7
+ declare const _default: <Value extends string | number>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
8
+ props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
9
+ readonly onDismissed?: (() => any) | undefined;
10
+ readonly onPresented?: (() => any) | undefined;
11
+ readonly "onUpdate:tab"?: ((value: Value) => any) | undefined;
12
+ } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onDismissed" | "onPresented" | "onUpdate:tab"> & ({
13
+ tabs: readonly SheetTab<Value>[];
14
+ title?: string;
15
+ grouped?: boolean;
16
+ size?: "md" | "lg" | "xl";
17
+ docked?: boolean;
18
+ /** The accessible name of the tab list. Default: the title. */
19
+ tabsLabel?: string;
20
+ } & {
21
+ tab: Value;
22
+ }) & Partial<{}>> & import("vue").PublicProps;
23
+ expose(exposed: import("vue").ShallowUnwrapRef<{
24
+ present: () => void | undefined;
25
+ dismiss: () => void | undefined;
26
+ }>): void;
27
+ attrs: any;
28
+ slots: {
29
+ default?: (scope: {
30
+ tab: Value;
31
+ }) => unknown;
32
+ footer?: () => unknown;
33
+ actions?: () => unknown;
34
+ /** Replaces the title and the close button, as in `Sheet`. */
35
+ header?: (scope: {
36
+ titleId: string;
37
+ }) => unknown;
38
+ };
39
+ emit: (((evt: "dismissed") => void) & ((evt: "presented") => void)) & ((evt: "update:tab", value: Value) => void);
40
+ }>) => import("vue").VNode & {
41
+ __ctx?: Awaited<typeof __VLS_setup>;
42
+ };
43
+ export default _default;
44
+ type __VLS_PrettifyLocal<T> = {
45
+ [K in keyof T]: T[K];
46
+ } & {};
@@ -1,5 +1,6 @@
1
1
  export { default as DiscardChangesModal } from "./DiscardChangesModal.vue";
2
2
  export { default as Modal } from "./Modal.vue";
3
3
  export { default as Sheet } from "./Sheet.vue";
4
+ export { default as TabbedSheet, type SheetTab } from "./TabbedSheet.vue";
4
5
  export { default as ShortcutHelp } from "./ShortcutHelp.vue";
5
6
  export { modalPlacementKey, type ModalPlacement } from "./placement";
@@ -1,56 +1,137 @@
1
- import { _ as G } from "../DiscardChangesModal.vue_vue_type_script_setup_true_lang-92szOrYd.js";
2
- import { _ as b } from "../Modal.vue_vue_type_script_setup_true_lang-CZ7WrDwu.js";
3
- import { m as O } from "../Modal.vue_vue_type_script_setup_true_lang-CZ7WrDwu.js";
4
- import { _ as T } from "../Sheet.vue_vue_type_script_setup_true_lang-BG8HUNfs.js";
5
- import { defineComponent as y, ref as k, computed as v, openBlock as t, createBlock as w, unref as i, withCtx as S, createElementVNode as r, createElementBlock as o, Fragment as c, renderList as u, toDisplayString as l, createCommentVNode as C } from "vue";
6
- import { useI18n as B } from "vue-i18n";
7
- import { a as M, u as $ } from "../shortcut-oixX55SZ.js";
8
- const j = {
1
+ import { _ as le } from "../DiscardChangesModal.vue_vue_type_script_setup_true_lang-CxNVKoYI.js";
2
+ import { _ as M } from "../Modal.vue_vue_type_script_setup_true_lang-C0tQAYQ4.js";
3
+ import { m as de } from "../Modal.vue_vue_type_script_setup_true_lang-C0tQAYQ4.js";
4
+ import { _ as V } from "../Sheet.vue_vue_type_script_setup_true_lang-C1jpmLYN.js";
5
+ import { defineComponent as $, useModel as B, useTemplateRef as C, computed as x, openBlock as o, createBlock as S, createSlots as D, withCtx as i, createVNode as P, unref as v, createElementBlock as r, Fragment as c, renderList as f, withDirectives as L, renderSlot as h, vShow as N, normalizeProps as R, guardReactiveProps as T, mergeModels as k, ref as j, createElementVNode as u, toDisplayString as m, createCommentVNode as E } from "vue";
6
+ import { useI18n as w } from "vue-i18n";
7
+ import { _ as H } from "../Tabs.vue_vue_type_script_setup_true_lang-Cma_ma6V.js";
8
+ import { a as K, u as q } from "../shortcut-oixX55SZ.js";
9
+ const F = ["data-tab-panel"], oe = /* @__PURE__ */ $({
10
+ __name: "TabbedSheet",
11
+ props: /* @__PURE__ */ k({
12
+ tabs: {},
13
+ title: { default: void 0 },
14
+ grouped: { type: Boolean, default: !1 },
15
+ size: { default: "md" },
16
+ docked: { type: Boolean, default: !1 },
17
+ tabsLabel: { default: void 0 }
18
+ }, {
19
+ tab: { required: !0 },
20
+ tabModifiers: {}
21
+ }),
22
+ emits: /* @__PURE__ */ k(["presented", "dismissed"], ["update:tab"]),
23
+ setup(_, { expose: l }) {
24
+ const a = _, n = B(_, "tab"), { t: b } = w(), p = C("sheet"), d = x(
25
+ () => a.tabs.map((e) => ({
26
+ value: e.value,
27
+ label: e.label,
28
+ ...e.error ? { error: typeof e.error == "string" ? e.error : b("core.sheet.tab_error") } : {}
29
+ }))
30
+ );
31
+ return l({ present: () => p.value?.present(), dismiss: () => p.value?.dismiss() }), (e, s) => (o(), S(V, {
32
+ ref_key: "sheet",
33
+ ref: p,
34
+ title: a.title,
35
+ grouped: a.grouped,
36
+ size: a.size,
37
+ docked: a.docked,
38
+ onPresented: s[1] || (s[1] = (t) => e.$emit("presented")),
39
+ onDismissed: s[2] || (s[2] = (t) => e.$emit("dismissed"))
40
+ }, D({
41
+ default: i(() => [
42
+ P(H, {
43
+ modelValue: n.value,
44
+ "onUpdate:modelValue": s[0] || (s[0] = (t) => n.value = t),
45
+ tabs: d.value,
46
+ stretch: "",
47
+ label: a.tabsLabel ?? a.title ?? v(b)("core.sheet.tabs")
48
+ }, {
49
+ default: i(() => [
50
+ (o(!0), r(c, null, f(a.tabs, (t) => L((o(), r("div", {
51
+ key: t.value,
52
+ "data-tab-panel": String(t.value)
53
+ }, [
54
+ h(e.$slots, "default", {
55
+ tab: t.value
56
+ })
57
+ ], 8, F)), [
58
+ [N, t.value === n.value]
59
+ ])), 128))
60
+ ]),
61
+ _: 3
62
+ }, 8, ["modelValue", "tabs", "label"])
63
+ ]),
64
+ _: 2
65
+ }, [
66
+ e.$slots.actions ? {
67
+ name: "actions",
68
+ fn: i(() => [
69
+ h(e.$slots, "actions")
70
+ ]),
71
+ key: "0"
72
+ } : void 0,
73
+ e.$slots.header ? {
74
+ name: "header",
75
+ fn: i((t) => [
76
+ h(e.$slots, "header", R(T(t)))
77
+ ]),
78
+ key: "1"
79
+ } : void 0,
80
+ e.$slots.footer ? {
81
+ name: "footer",
82
+ fn: i(() => [
83
+ h(e.$slots, "footer")
84
+ ]),
85
+ key: "2"
86
+ } : void 0
87
+ ]), 1032, ["title", "grouped", "size", "docked"]));
88
+ }
89
+ }), I = {
9
90
  class: "flex flex-col gap-5",
10
91
  "data-test": "shortcut-help"
11
- }, D = { class: "mb-1 text-footnote font-semibold text-content-muted uppercase" }, E = { class: "divide-y divide-border-separator" }, H = { class: "text-body" }, K = { class: "flex shrink-0 items-center gap-1 text-footnote text-content-muted" }, N = { key: 0 }, V = { class: "text-footnote text-content-muted" }, R = /* @__PURE__ */ y({
92
+ }, U = { class: "mb-1 text-footnote font-semibold text-content-muted uppercase" }, A = { class: "divide-y divide-border-separator" }, G = { class: "text-body" }, J = { class: "flex shrink-0 items-center gap-1 text-footnote text-content-muted" }, O = { key: 0 }, Q = { class: "text-footnote text-content-muted" }, se = /* @__PURE__ */ $({
12
93
  __name: "ShortcutHelp",
13
- setup(z) {
14
- const { t: s, te: f } = B(), p = k(null), h = M();
15
- $({ key: "?", group: "general", label: () => s("core.shortcuts.show_help") }, () => p.value?.present());
16
- const x = v(() => {
17
- const a = /* @__PURE__ */ new Map();
18
- for (const e of h.value) a.set(e.group ?? "general", [...a.get(e.group ?? "general") ?? [], e]);
19
- return [...a].map(([e, n]) => ({ group: e, title: f(`core.shortcuts.groups.${e}`) ? s(`core.shortcuts.groups.${e}`) : e, rows: n }));
94
+ setup(_) {
95
+ const { t: l, te: a } = w(), n = j(null), b = K();
96
+ q({ key: "?", group: "general", label: () => l("core.shortcuts.show_help") }, () => n.value?.present());
97
+ const p = x(() => {
98
+ const d = /* @__PURE__ */ new Map();
99
+ for (const e of b.value) d.set(e.group ?? "general", [...d.get(e.group ?? "general") ?? [], e]);
100
+ return [...d].map(([e, s]) => ({ group: e, title: a(`core.shortcuts.groups.${e}`) ? l(`core.shortcuts.groups.${e}`) : e, rows: s }));
20
101
  });
21
- return (a, e) => (t(), w(b, {
102
+ return (d, e) => (o(), S(M, {
22
103
  ref_key: "modal",
23
- ref: p,
24
- title: i(s)("core.shortcuts.title"),
104
+ ref: n,
105
+ title: v(l)("core.shortcuts.title"),
25
106
  size: "sm"
26
107
  }, {
27
- default: S(() => [
28
- r("div", j, [
29
- (t(!0), o(c, null, u(x.value, (n) => (t(), o("section", {
30
- key: n.group
108
+ default: i(() => [
109
+ u("div", I, [
110
+ (o(!0), r(c, null, f(p.value, (s) => (o(), r("section", {
111
+ key: s.group
31
112
  }, [
32
- r("h3", D, l(n.title), 1),
33
- r("dl", E, [
34
- (t(!0), o(c, null, u(n.rows, (d) => (t(), o("div", {
35
- key: d.label,
113
+ u("h3", U, m(s.title), 1),
114
+ u("dl", A, [
115
+ (o(!0), r(c, null, f(s.rows, (t) => (o(), r("div", {
116
+ key: t.label,
36
117
  class: "flex items-center justify-between gap-4 py-1.5"
37
118
  }, [
38
- r("dt", H, l(d.label), 1),
39
- r("dd", K, [
40
- (t(!0), o(c, null, u(d.keys, (m, g) => (t(), o(c, {
41
- key: m.join("+")
119
+ u("dt", G, m(t.label), 1),
120
+ u("dd", J, [
121
+ (o(!0), r(c, null, f(t.keys, (g, z) => (o(), r(c, {
122
+ key: g.join("+")
42
123
  }, [
43
- g > 0 ? (t(), o("span", N, l(i(s)("core.shortcuts.or")), 1)) : C("", !0),
44
- (t(!0), o(c, null, u(m, (_) => (t(), o("kbd", {
45
- key: _,
124
+ z > 0 ? (o(), r("span", O, m(v(l)("core.shortcuts.or")), 1)) : E("", !0),
125
+ (o(!0), r(c, null, f(g, (y) => (o(), r("kbd", {
126
+ key: y,
46
127
  class: "min-w-6 rounded-control border border-border-separator bg-fill px-1.5 py-0.5 text-center font-mono text-content-strong"
47
- }, l(_), 1))), 128))
128
+ }, m(y), 1))), 128))
48
129
  ], 64))), 128))
49
130
  ])
50
131
  ]))), 128))
51
132
  ])
52
133
  ]))), 128)),
53
- r("p", V, l(i(s)("core.shortcuts.hint")), 1)
134
+ u("p", Q, m(v(l)("core.shortcuts.hint")), 1)
54
135
  ])
55
136
  ]),
56
137
  _: 1
@@ -58,9 +139,10 @@ const j = {
58
139
  }
59
140
  });
60
141
  export {
61
- G as DiscardChangesModal,
62
- b as Modal,
63
- T as Sheet,
64
- R as ShortcutHelp,
65
- O as modalPlacementKey
142
+ le as DiscardChangesModal,
143
+ M as Modal,
144
+ V as Sheet,
145
+ se as ShortcutHelp,
146
+ oe as TabbedSheet,
147
+ de as modalPlacementKey
66
148
  };
@@ -0,0 +1,55 @@
1
+ import { computed as k } from "vue";
2
+ import { d as y } from "./context-Ch1r4fdN.js";
3
+ import { h as N } from "./platform-YWfOO7b2.js";
4
+ function F(h, c = {}) {
5
+ const i = /* @__PURE__ */ new Map(), o = [];
6
+ for (const n of h) {
7
+ const { destination: s } = n.binding, f = i.get(s);
8
+ if (f) {
9
+ o.push(`The destination "${s}" is bound twice: by feature "${f.feature}" and by feature "${n.feature}".`);
10
+ continue;
11
+ }
12
+ c.known && !c.known.includes(s) && o.push(`Feature "${n.feature}" binds the destination "${s}", which the backend's navigation does not contain.`), i.set(s, n);
13
+ }
14
+ for (const n of c.required ?? [])
15
+ i.has(n) || o.push(`The destination "${n}" is required but no feature binds it.`);
16
+ return { destinations: i, issues: o };
17
+ }
18
+ function M(h) {
19
+ const { session: c, router: i, i18n: o, destinations: n } = h, s = (e) => o.te(e.i18n) ? o.t(e.i18n) : e.i18n;
20
+ function f(e, r) {
21
+ return e.flatMap((t, l) => {
22
+ const a = `${r}/${t.route ?? t.href ?? l}`, u = f(t.children ?? [], a);
23
+ if (t.route === void 0 && t.href !== void 0) return [{ ...d(t, a, null, u, !1), href: t.href }];
24
+ if (t.route === void 0) return u.length > 0 ? [d(t, a, null, u, !1)] : [];
25
+ const v = n.get(t.route);
26
+ if (!v) return [];
27
+ const { to: m, within: g = [] } = v.binding, p = g.some(($) => i.currentRoute.value.matched.some((w) => w.name === $));
28
+ return [d(t, a, m, u, p || b(m))];
29
+ });
30
+ }
31
+ function b(e) {
32
+ const { matched: r } = i.resolve(e), t = r[r.length - 1];
33
+ return t !== void 0 && i.currentRoute.value.matched.includes(t);
34
+ }
35
+ const d = (e, r, t, l, a) => ({
36
+ key: r,
37
+ label: s(e),
38
+ icon: e.icon ?? null,
39
+ to: t,
40
+ href: null,
41
+ active: a || l.some((u) => u.active),
42
+ children: l
43
+ });
44
+ return k(() => {
45
+ const e = N(c.state.value);
46
+ return e ? f(e.navigation ?? [], "") : [];
47
+ });
48
+ }
49
+ const [R, T] = y("vue-core.navigation");
50
+ export {
51
+ F as b,
52
+ M as c,
53
+ R as n,
54
+ T as u
55
+ };
@@ -1,8 +1,8 @@
1
1
  import { computed as j, ref as z, shallowRef as I, watch as F, getCurrentScope as J, onScopeDispose as Q } from "vue";
2
2
  import { useRoute as N } from "vue-router";
3
3
  import { i as M } from "./error-CD7x0Jrz.js";
4
- import { w as U } from "./back-LcLlFodC.js";
5
- import { L as k, d as O, e as D, o as V, q as W } from "./state-z1iPF1DT.js";
4
+ import { w as U } from "./back-CeozxCgQ.js";
5
+ import { L as k, d as O, e as D, o as V, q as W } from "./state-DqCZdet7.js";
6
6
  function K(l, t, n, g) {
7
7
  return typeof t == "string" ? t : { ...t, query: { ...t.query, [n]: D(l, g) } };
8
8
  }
@@ -1,4 +1,4 @@
1
- import { d as s, e as a, n as o, b as i, c as n, f as u } from "../index-SLJWm40T.js";
1
+ import { d as s, e as a, n as o, b as i, c as n, f as u } from "../index-DLkQwWt9.js";
2
2
  export {
3
3
  s as deadLettersRoutes,
4
4
  a as eventsRoutes,