@wssto2/vue-core 0.4.4 → 0.4.5

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 (67) hide show
  1. package/dist/{Activity-BH0jQxZs.js → Activity-DukTfcmn.js} +2 -2
  2. package/dist/{AdaptivePageShell.vue_vue_type_script_setup_true_lang-DxD6JvyK.js → AdaptivePageShell.vue_vue_type_script_setup_true_lang-B7qSUiee.js} +1 -1
  3. package/dist/{Changes-DS81sZj9.js → Changes-Dhi7EBe9.js} +2 -2
  4. package/dist/CollectionPage.vue_vue_type_script_setup_true_lang-BuAdhiy_.js +1514 -0
  5. package/dist/{DataTable.vue_vue_type_script_setup_true_lang-DBtMgcW6.js → DataTable.vue_vue_type_script_setup_true_lang-KPm5NrDE.js} +1 -1
  6. package/dist/{DeadLetters-BqKtaowL.js → DeadLetters-CfKE1axC.js} +2 -2
  7. package/dist/{General-CK-9LrQ2.js → General-BwT5Y_TN.js} +2 -2
  8. package/dist/IconTile.vue_vue_type_script_setup_true_lang-_FXvaj93.js +50 -0
  9. package/dist/{Menu.vue_vue_type_script_setup_true_lang-ClsOlOSr.js → Menu.vue_vue_type_script_setup_true_lang-uPmxWvds.js} +56 -50
  10. package/dist/{NewRolePage-CziDdoeG.js → NewRolePage-B8OGQE-A.js} +3 -3
  11. package/dist/{ProfilePage-x063Zij2.js → ProfilePage-DIJEhiW-.js} +4 -4
  12. package/dist/{RecordHeader.vue_vue_type_script_setup_true_lang-Bua3wbN6.js → RecordHeader.vue_vue_type_script_setup_true_lang-D87Hs75d.js} +1 -1
  13. package/dist/{ResourcePage.vue_vue_type_script_setup_true_lang-CzP4BNh7.js → ResourcePage.vue_vue_type_script_setup_true_lang-gJGEfLzX.js} +1 -1
  14. package/dist/{RoleEditor.vue_vue_type_script_setup_true_lang-BjhaIqqG.js → RoleEditor.vue_vue_type_script_setup_true_lang-4YJhNgbn.js} +1 -1
  15. package/dist/{RolePage-Cecu3BKn.js → RolePage-Bn0re7VE.js} +6 -6
  16. package/dist/{RolesPage-DIL35QcF.js → RolesPage-CjEAQvTq.js} +3 -3
  17. package/dist/{SectionList.vue_vue_type_script_setup_true_lang-CaF3LPbQ.js → SectionList.vue_vue_type_script_setup_true_lang-B0p_8xQG.js} +2 -2
  18. package/dist/{SectionNavigator.vue_vue_type_script_setup_true_lang-BJfEOvEf.js → SectionNavigator.vue_vue_type_script_setup_true_lang-ROl9_pdO.js} +3 -3
  19. package/dist/SelectField.vue_vue_type_script_setup_true_lang-BJoAkBo2.js +437 -0
  20. package/dist/{SessionList.vue_vue_type_script_setup_true_lang-D5KRitar.js → SessionList.vue_vue_type_script_setup_true_lang-D4k5QeWS.js} +1 -1
  21. package/dist/{Sessions-DhHIVk7e.js → Sessions-BZnBtu7h.js} +2 -2
  22. package/dist/{SettingsPage-BuGtZcae.js → SettingsPage-BmRCB75J.js} +2 -2
  23. package/dist/{SignIn-DRls5eYK.js → SignIn-D-n9cfMH.js} +2 -2
  24. package/dist/{SignInPage-D9wR46KD.js → SignInPage-BzIP6sPa.js} +1 -1
  25. package/dist/{SignInTable.vue_vue_type_script_setup_true_lang-CifEaH7c.js → SignInTable.vue_vue_type_script_setup_true_lang-ALAuc0sI.js} +1 -1
  26. package/dist/{SignIns-BMBFeBrK.js → SignIns-dFIzemgy.js} +2 -2
  27. package/dist/ToneDot.vue_vue_type_script_setup_true_lang-99rNn-L5.js +24 -0
  28. package/dist/{UserRecord-BOCP5XC6.js → UserRecord-DoOu1hWB.js} +5 -5
  29. package/dist/{UsersList-Df6HeAAO.js → UsersList-CYBGEOqE.js} +4 -4
  30. package/dist/access/index.js +1 -1
  31. package/dist/collection/CollectionCell.vue.d.ts +2 -0
  32. package/dist/collection/RecordIdentity.vue.d.ts +6 -0
  33. package/dist/collection/filters.d.ts +4 -0
  34. package/dist/collection/index.js +3 -3
  35. package/dist/collection/rowInteractions.d.ts +2 -0
  36. package/dist/controls/IconTile.vue.d.ts +10 -3
  37. package/dist/controls/index.js +1 -1
  38. package/dist/form/I18nField.vue.d.ts +1 -1
  39. package/dist/form/TextareaField.vue.d.ts +1 -1
  40. package/dist/form/index.js +4 -4
  41. package/dist/form/options.d.ts +3 -0
  42. package/dist/identity/index.js +1 -1
  43. package/dist/{index-EkQmsbBQ.js → index-BHt1dLX2.js} +2 -2
  44. package/dist/{index-BykMr7eH.js → index-BVX0nmMv.js} +10 -10
  45. package/dist/{index-BwMaMqSc.js → index-CixCeO47.js} +5 -5
  46. package/dist/index.d.ts +1 -1
  47. package/dist/index.js +1 -1
  48. package/dist/notifications/index.js +1 -1
  49. package/dist/overlay/AlertDialog.vue.d.ts +2 -2
  50. package/dist/overlay/Menu.vue.d.ts +3 -0
  51. package/dist/overlay/index.js +1 -1
  52. package/dist/page/AdaptivePageShell.vue.d.ts +2 -2
  53. package/dist/page/ResourceHeader.vue.d.ts +2 -2
  54. package/dist/page/index.js +5 -5
  55. package/dist/resource/index.js +1 -1
  56. package/dist/{rowLayout-CZ7uZFnE.js → rowLayout-BkQWulan.js} +239 -221
  57. package/dist/shell/NavigationList.vue.d.ts +1 -1
  58. package/dist/shell/index.js +1 -1
  59. package/dist/state/ToneDot.vue.d.ts +12 -0
  60. package/dist/{status-DyvlO552.js → status-D3cLPSCh.js} +1 -1
  61. package/dist/styles.css +1 -1
  62. package/package.json +1 -1
  63. package/src/styles/collection.css +1 -1
  64. package/src/styles/theme.css +7 -0
  65. package/dist/CollectionPage.vue_vue_type_script_setup_true_lang-BZRdVhZo.js +0 -1485
  66. package/dist/IconTile.vue_vue_type_script_setup_true_lang-BpIjgu5E.js +0 -40
  67. package/dist/SelectField.vue_vue_type_script_setup_true_lang-7O1BAx04.js +0 -423
@@ -1,8 +1,11 @@
1
1
  import type { IconName } from "../icon";
2
+ import type { Tone } from "../state";
2
3
  export interface FilterOption {
3
4
  value: string | number;
4
5
  label: string;
5
6
  icon?: IconName;
7
+ /** A status dot before the label, in the tone's colour, wherever the option is listed or shown as the chosen one. */
8
+ dot?: Tone;
6
9
  /** For a filter with `dependsOn`: the parent value this option belongs to; offered only while the parent is empty or includes it. */
7
10
  parentValue?: string | number;
8
11
  }
@@ -58,6 +61,7 @@ export declare function joinRange(from: string | number | null | undefined, unti
58
61
  export declare function narrowedOptions(filter: FilterDescriptor, parentValue: string | number | null | undefined): {
59
62
  value: string;
60
63
  label: string;
64
+ dot?: Tone;
61
65
  }[];
62
66
  /** An applied filter as a removable token. */
63
67
  export interface FilterChip {
@@ -1,8 +1,8 @@
1
1
  import { D as M, L as O, a as V, h as j, l as U, r as G } from "../http-CNcDHSOj.js";
2
- import { _ as Z, a as q, u as H } from "../CollectionPage.vue_vue_type_script_setup_true_lang-BZRdVhZo.js";
2
+ import { _ as Z, a as q, u as H } from "../CollectionPage.vue_vue_type_script_setup_true_lang-BuAdhiy_.js";
3
3
  import { u as K } from "../neighbors-DpaIMQAL.js";
4
- import { a as W, b as Y } from "../rowLayout-CZ7uZFnE.js";
5
- import { _ as te } from "../DataTable.vue_vue_type_script_setup_true_lang-DBtMgcW6.js";
4
+ import { a as W, b as Y } from "../rowLayout-BkQWulan.js";
5
+ import { _ as te } from "../DataTable.vue_vue_type_script_setup_true_lang-KPm5NrDE.js";
6
6
  import { defineComponent as y, openBlock as c, createElementBlock as d, Fragment as h, renderList as v, createBlock as k, unref as u, withCtx as C, normalizeClass as m, createVNode as p, createCommentVNode as g } from "vue";
7
7
  import { _ } from "../Icon.vue_vue_type_script_lang-D7oC-d-S.js";
8
8
  import { _ as w } from "../Tooltip.vue_vue_type_script_setup_true_lang-OOD_XNWx.js";
@@ -22,6 +22,7 @@ export declare function useRowInteractions<Row>(options: RowInteractionOptions<R
22
22
  id: string;
23
23
  label: string;
24
24
  icon?: import("../icon").IconName | undefined;
25
+ dot?: import("../state").Tone | undefined;
25
26
  section?: string | undefined;
26
27
  tone?: "critical" | undefined;
27
28
  disabled?: boolean | undefined;
@@ -33,6 +34,7 @@ export declare function useRowInteractions<Row>(options: RowInteractionOptions<R
33
34
  id: string;
34
35
  label: string;
35
36
  icon?: import("../icon").IconName | undefined;
37
+ dot?: import("../state").Tone | undefined;
36
38
  section?: string | undefined;
37
39
  tone?: "critical" | undefined;
38
40
  disabled?: boolean | undefined;
@@ -7,18 +7,25 @@ import { type IconName } from "../icon";
7
7
  * <IconTile tone="brand" icon="carLine" /> the app's own programmes
8
8
  * <IconTile tone="anchor" text="N" /> integrations, navigation
9
9
  * <IconTile tone="neutral" icon="serverLine" size="lg" /> system and export
10
+ * <IconTile weight="soft" size="sm" icon="user" /> a list row's leading mark: quiet, not a block
11
+ *
12
+ * `weight="soft"` is a light tint of the tone with its glyph (and a hairline ring) instead of the solid fill:
13
+ * for tiles on white surfaces, where a solid block reads as a missing photo.
10
14
  */
11
15
  type __VLS_Props = {
12
16
  tone?: "brand" | "anchor" | "neutral";
13
17
  icon?: IconName;
14
18
  text?: string;
15
- /** `row` follows the theme's row metrics (22 px desktop, 29 px compact). */
16
- size?: "row" | "md" | "lg";
19
+ /** `solid` (default) fills the tile; `soft` is a light tint with the tone's glyph. */
20
+ weight?: "solid" | "soft";
21
+ /** `row` follows the theme's row metrics (22 px desktop, 29 px compact); `sm` is 32 px, a list row's leading tile. */
22
+ size?: "row" | "sm" | "md" | "lg";
17
23
  };
18
24
  declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
19
25
  text: string;
20
- size: "row" | "md" | "lg";
26
+ size: "row" | "sm" | "md" | "lg";
21
27
  tone: "brand" | "anchor" | "neutral";
22
28
  icon: IconName;
29
+ weight: "solid" | "soft";
23
30
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
24
31
  export default _default;
@@ -1,4 +1,4 @@
1
- import { _ as A } from "../IconTile.vue_vue_type_script_setup_true_lang-BpIjgu5E.js";
1
+ import { _ as A } from "../IconTile.vue_vue_type_script_setup_true_lang-_FXvaj93.js";
2
2
  import { defineComponent as p, useSlots as c, openBlock as r, createElementBlock as d, normalizeClass as u, createElementVNode as f, renderSlot as m, toDisplayString as b, createVNode as x, unref as h, useModel as v, useTemplateRef as _, withDirectives as y, mergeProps as g, vModelText as k, mergeModels as w } from "vue";
3
3
  import { _ as B } from "../Icon.vue_vue_type_script_lang-D7oC-d-S.js";
4
4
  import { _ as N } from "../DateButton.vue_vue_type_script_setup_true_lang-EcqrfWKz.js";
@@ -37,8 +37,8 @@ declare const _default: import("vue").DefineComponent<__VLS_PublicProps, {
37
37
  label: string;
38
38
  error: string;
39
39
  required: boolean;
40
- rows: number;
41
40
  presentation: "control" | "value";
41
+ rows: number;
42
42
  hint: string;
43
43
  editable: boolean;
44
44
  lockedReason: string;
@@ -30,8 +30,8 @@ declare const _default: import("vue").DefineComponent<__VLS_PublicProps, {
30
30
  label: string;
31
31
  error: string;
32
32
  required: boolean;
33
- rows: number;
34
33
  presentation: "control" | "value";
34
+ rows: number;
35
35
  stacked: boolean;
36
36
  hint: string;
37
37
  editable: boolean;
@@ -31,8 +31,8 @@ import { _ as us } from "../FormView.vue_vue_type_script_setup_true_lang-cr0xNDX
31
31
  import { a as qt } from "../environment-Dva-SG8D.js";
32
32
  import { _ as Mt } from "../NumberField.vue_vue_type_script_setup_true_lang-C7N5nq0P.js";
33
33
  import { _ as Ot } from "../Sheet.vue_vue_type_script_setup_true_lang-DgOFV4fa.js";
34
- import { u as jt, a as Ue } from "../SelectField.vue_vue_type_script_setup_true_lang-7O1BAx04.js";
35
- import { _ as cs, b as fs } from "../SelectField.vue_vue_type_script_setup_true_lang-7O1BAx04.js";
34
+ import { u as jt, a as Ue } from "../SelectField.vue_vue_type_script_setup_true_lang-BJoAkBo2.js";
35
+ import { _ as cs, b as fs } from "../SelectField.vue_vue_type_script_setup_true_lang-BJoAkBo2.js";
36
36
  import { g as vs, m as ps } from "../options-Ba_0uLWN.js";
37
37
  import { _ as gs } from "../OtpInput.vue_vue_type_script_setup_true_lang-gp4FfWAH.js";
38
38
  import { _ as Ye } from "../PhotoViewer.vue_vue_type_script_setup_true_lang-QPCW3Xi6.js";
@@ -43,8 +43,8 @@ import { _ as Rt } from "../Modal.vue_vue_type_script_setup_true_lang-DpBb8ans.j
43
43
  import { _ as We } from "../Banner.vue_vue_type_script_setup_true_lang-DSStj_5z.js";
44
44
  import { D as Tt } from "../useWaitStatus-fsacMl4W.js";
45
45
  import { t as Et } from "../toast-CqSDTWRX.js";
46
- import { a as It } from "../AdaptivePageShell.vue_vue_type_script_setup_true_lang-DxD6JvyK.js";
47
- import { _ as Gt, a as Nt } from "../SectionList.vue_vue_type_script_setup_true_lang-CaF3LPbQ.js";
46
+ import { a as It } from "../AdaptivePageShell.vue_vue_type_script_setup_true_lang-B7qSUiee.js";
47
+ import { _ as Gt, a as Nt } from "../SectionList.vue_vue_type_script_setup_true_lang-B0p_8xQG.js";
48
48
  import { p as Kt } from "../sectionIndex-BS0ic5W7.js";
49
49
  import { u as Pt } from "../useSaveChrome-DuWm0Czf.js";
50
50
  import { matchedRouteKey as At, onBeforeRouteLeave as Ut } from "vue-router";
@@ -1,9 +1,12 @@
1
+ import type { Tone } from "../state";
1
2
  /** One choice of a select, chips, segments or cards. `Value` is what lands in the form. */
2
3
  export interface SelectOption<Value extends string | number = string | number> {
3
4
  readonly value: Value;
4
5
  readonly label: string;
5
6
  /** A caption at the end of the row (tells equal names apart). */
6
7
  readonly description?: string;
8
+ /** A status dot before the label, in the tone's colour. */
9
+ readonly dot?: Tone;
7
10
  readonly disabled?: boolean;
8
11
  /** Options with the same group are listed together, under its name, in the order the groups first appear. */
9
12
  readonly group?: string;
@@ -1,4 +1,4 @@
1
- import { _ as t, h as n, j as a, i, k as o, d as r, l as d, m as u, n as y, r as l, o as I, s as f, q as p, t as A, f as c } from "../index-BykMr7eH.js";
1
+ import { _ as t, h as n, j as a, i, k as o, d as r, l as d, m as u, n as y, r as l, o as I, s as f, q as p, t as A, f as c } from "../index-BVX0nmMv.js";
2
2
  export {
3
3
  t as SignInAsButton,
4
4
  n as identityFeature,
@@ -31,9 +31,9 @@ const M = {
31
31
  deadLettersRetryAll: y("POST", "/v1/events/dead-letters/retry", { permission: "events.deadletter:retry" }),
32
32
  consumers: y("GET", "/v1/events/consumers", { permission: "events.deadletter:view" })
33
33
  }, [ke, ee] = fe("vue-core.notifications"), we = "events.deadletter:view", bt = "events.deadletter:retry", J = Z({
34
- index: { name: "events.deadletters", path: "/events/dead-letters", component: () => import("./DeadLetters-BqKtaowL.js"), meta: { access: we, titleKey: "core.notifications.dead_letters.title" } }
34
+ index: { name: "events.deadletters", path: "/events/dead-letters", component: () => import("./DeadLetters-CfKE1axC.js"), meta: { access: we, titleKey: "core.notifications.dead_letters.title" } }
35
35
  }), j = Z({
36
- index: { name: "notifications.settings", path: "/profile/notifications", component: () => import("./SettingsPage-BuGtZcae.js"), meta: { titleKey: "core.notifications.settings.title" } }
36
+ index: { name: "notifications.settings", path: "/profile/notifications", component: () => import("./SettingsPage-BmRCB75J.js"), meta: { titleKey: "core.notifications.settings.title" } }
37
37
  }), Te = /* @__PURE__ */ z({
38
38
  __name: "SettingsMenuItem",
39
39
  setup(o) {
@@ -315,7 +315,7 @@ function Cs(e) {
315
315
  const Ye = async (e) => {
316
316
  await B(e.http);
317
317
  }, Je = z({
318
- login: { name: "login", path: "/login", component: () => import("./SignInPage-D9wR46KD.js"), meta: { public: !0, titleKey: "core.identity.signin.title" } }
318
+ login: { name: "login", path: "/login", component: () => import("./SignInPage-BzIP6sPa.js"), meta: { public: !0, titleKey: "core.identity.signin.title" } }
319
319
  });
320
320
  function Os(e = {}) {
321
321
  return H({
@@ -334,7 +334,7 @@ function Os(e = {}) {
334
334
  });
335
335
  }
336
336
  const Z = z({
337
- index: { name: "profile", path: "/profile", component: () => import("./ProfilePage-x063Zij2.js"), meta: { titleKey: "core.profile.title" } }
337
+ index: { name: "profile", path: "/profile", component: () => import("./ProfilePage-DIJEhiW-.js"), meta: { titleKey: "core.profile.title" } }
338
338
  }), Qe = /* @__PURE__ */ E({
339
339
  __name: "ProfileMenuItem",
340
340
  setup(e) {
@@ -358,19 +358,19 @@ function es(e) {
358
358
  return { name: `users.record.${e.path}`, path: e.path, component: s, meta: { ...e.meta } };
359
359
  }
360
360
  const W = "iam.user:view", qs = "iam.user:manage", ss = "iam.user.activity:view", ee = z({
361
- index: { name: "users.index", path: "/users", component: () => import("./UsersList-Df6HeAAO.js"), meta: { access: W, titleKey: "core.users.title" } },
361
+ index: { name: "users.index", path: "/users", component: () => import("./UsersList-CYBGEOqE.js"), meta: { access: W, titleKey: "core.users.title" } },
362
362
  record: {
363
363
  name: "users.record",
364
364
  path: "/users/:id",
365
- component: () => import("./UserRecord-BOCP5XC6.js"),
365
+ component: () => import("./UserRecord-DoOu1hWB.js"),
366
366
  meta: { access: W, titleKey: "core.users.title", remountOnParam: "id" },
367
367
  children: [
368
- { name: "users.record.general", path: "general", component: () => import("./General-CK-9LrQ2.js"), meta: { section: { labelKey: "core.users.sections.general", icon: "user3Line", groupKey: "core.users.section_groups.person" } } },
369
- { name: "users.record.signin", path: "signin", component: () => import("./SignIn-DRls5eYK.js"), meta: { section: { labelKey: "core.users.sections.signin", icon: "key2Line", groupKey: "core.users.section_groups.access" } } },
370
- { name: "users.record.sessions", path: "sessions", component: () => import("./Sessions-DhHIVk7e.js"), meta: { section: { labelKey: "core.users.sections.sessions", icon: "deviceLine", groupKey: "core.users.section_groups.access" } } },
371
- { name: "users.record.signins", path: "signins", component: () => import("./SignIns-BMBFeBrK.js"), meta: { section: { labelKey: "core.users.sections.signins", icon: "timeFill", groupKey: "core.users.section_groups.activity" } } },
372
- { name: "users.record.changes", path: "changes", component: () => import("./Changes-DS81sZj9.js"), meta: { section: { labelKey: "core.users.sections.changes", icon: "edit", groupKey: "core.users.section_groups.activity" } } },
373
- { name: "users.record.activity", path: "activity", component: () => import("./Activity-BH0jQxZs.js"), meta: { access: ss, section: { labelKey: "core.users.sections.activity", icon: "listCheck", groupKey: "core.users.section_groups.activity" } } }
368
+ { name: "users.record.general", path: "general", component: () => import("./General-BwT5Y_TN.js"), meta: { section: { labelKey: "core.users.sections.general", icon: "user3Line", groupKey: "core.users.section_groups.person" } } },
369
+ { name: "users.record.signin", path: "signin", component: () => import("./SignIn-D-n9cfMH.js"), meta: { section: { labelKey: "core.users.sections.signin", icon: "key2Line", groupKey: "core.users.section_groups.access" } } },
370
+ { name: "users.record.sessions", path: "sessions", component: () => import("./Sessions-BZnBtu7h.js"), meta: { section: { labelKey: "core.users.sections.sessions", icon: "deviceLine", groupKey: "core.users.section_groups.access" } } },
371
+ { name: "users.record.signins", path: "signins", component: () => import("./SignIns-dFIzemgy.js"), meta: { section: { labelKey: "core.users.sections.signins", icon: "timeFill", groupKey: "core.users.section_groups.activity" } } },
372
+ { name: "users.record.changes", path: "changes", component: () => import("./Changes-Dhi7EBe9.js"), meta: { section: { labelKey: "core.users.sections.changes", icon: "edit", groupKey: "core.users.section_groups.activity" } } },
373
+ { name: "users.record.activity", path: "activity", component: () => import("./Activity-DukTfcmn.js"), meta: { access: ss, section: { labelKey: "core.users.sections.activity", icon: "listCheck", groupKey: "core.users.section_groups.activity" } } }
374
374
  ]
375
375
  }
376
376
  });
@@ -14,11 +14,11 @@ import { t as ee } from "./toast-CqSDTWRX.js";
14
14
  import { _ as ce } from "./AccessGate.vue_vue_type_script_setup_true_lang-DcbZBINh.js";
15
15
  import { _ as Oe } from "./AsyncSection.vue_vue_type_script_setup_true_lang-Blj6KgCr.js";
16
16
  import { u as Ae } from "./useLoad-CYRVx6HW.js";
17
- import { _ as De, a as Ke } from "./SelectField.vue_vue_type_script_setup_true_lang-7O1BAx04.js";
17
+ import { _ as De, a as Ke } from "./SelectField.vue_vue_type_script_setup_true_lang-BJoAkBo2.js";
18
18
  import { _ as Be } from "./SegmentedField.vue_vue_type_script_setup_true_lang-BMqWlpsL.js";
19
19
  import { u as Pe, _ as Ue } from "./useCommand-BkONMn3X.js";
20
20
  import { u as Fe } from "./platform-q3cjODLx.js";
21
- import { _ as Ge } from "./IconTile.vue_vue_type_script_setup_true_lang-BpIjgu5E.js";
21
+ import { _ as Ge } from "./IconTile.vue_vue_type_script_setup_true_lang-_FXvaj93.js";
22
22
  import { u as Me } from "./mediaQuery-CygcXmFW.js";
23
23
  import { _ as Ve } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
24
24
  const C = {
@@ -43,12 +43,12 @@ const C = {
43
43
  viewAccess: "iam.user:view",
44
44
  manageBindings: "iam.user:manage"
45
45
  }, re = Ee({
46
- roles: { name: "access.roles", path: "/iam/roles", component: () => import("./RolesPage-DIL35QcF.js"), meta: { access: F.viewRoles, titleKey: "core.access.title" } },
47
- newRole: { name: "access.roles.new", path: "/iam/roles/new", component: () => import("./NewRolePage-CziDdoeG.js"), meta: { access: F.manageRoles, titleKey: "core.access.new_title" } },
46
+ roles: { name: "access.roles", path: "/iam/roles", component: () => import("./RolesPage-CjEAQvTq.js"), meta: { access: F.viewRoles, titleKey: "core.access.title" } },
47
+ newRole: { name: "access.roles.new", path: "/iam/roles/new", component: () => import("./NewRolePage-B8OGQE-A.js"), meta: { access: F.manageRoles, titleKey: "core.access.new_title" } },
48
48
  role: {
49
49
  name: "access.role",
50
50
  path: "/iam/roles/:ref",
51
- component: () => import("./RolePage-Cecu3BKn.js"),
51
+ component: () => import("./RolePage-Bn0re7VE.js"),
52
52
  // A role's ref (its key, or the id of a custom one) swaps in place when a link leads to another role.
53
53
  meta: { access: F.viewRoles, titleKey: "core.access.title", remountOnParam: "ref" }
54
54
  }
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.4.4";
2
+ export declare const version = "0.4.5";
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- const o = "0.4.4";
1
+ const o = "0.4.5";
2
2
  export {
3
3
  o as version
4
4
  };
@@ -1,4 +1,4 @@
1
- import { d as s, e as o, n as a, a as i, b as n } from "../index-EkQmsbBQ.js";
1
+ import { d as s, e as o, n as a, a as i, b as n } from "../index-BHt1dLX2.js";
2
2
  export {
3
3
  s as deadLettersRoutes,
4
4
  o as eventsRoutes,
@@ -2,8 +2,8 @@ import { type IconName } from "../icon";
2
2
  declare const _default: <Subject = undefined>(__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<{
3
3
  props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
4
4
  readonly onCancel?: (() => any) | undefined;
5
- readonly onDismissed?: (() => any) | undefined;
6
5
  readonly onFailed?: ((error: unknown) => any) | undefined;
6
+ readonly onDismissed?: (() => any) | undefined;
7
7
  readonly onConfirm?: ((subject: Subject) => any) | undefined;
8
8
  } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onCancel" | "onDismissed" | "onFailed" | "onConfirm"> & {
9
9
  title: string;
@@ -25,7 +25,7 @@ declare const _default: <Subject = undefined>(__VLS_props: NonNullable<Awaited<t
25
25
  slots: {
26
26
  default?: () => unknown;
27
27
  };
28
- emit: ((evt: "cancel") => void) & ((evt: "dismissed") => void) & ((evt: "failed", error: unknown) => void) & ((evt: "confirm", subject: Subject) => void);
28
+ emit: ((evt: "cancel") => void) & ((evt: "failed", error: unknown) => void) & ((evt: "dismissed") => void) & ((evt: "confirm", subject: Subject) => void);
29
29
  }>) => import("vue").VNode & {
30
30
  __ctx?: Awaited<typeof __VLS_setup>;
31
31
  };
@@ -1,10 +1,13 @@
1
1
  import type { Placement } from "@floating-ui/dom";
2
2
  import type { IconName } from "../icon";
3
+ import type { Tone } from "../state";
3
4
  /** One command of a `Menu`. */
4
5
  export interface MenuItem {
5
6
  id: string;
6
7
  label: string;
7
8
  icon?: IconName;
9
+ /** A status dot before the label (an option that is a state). */
10
+ dot?: Tone;
8
11
  /** Items with a different section start a new block after a separator. */
9
12
  section?: string;
10
13
  /** `critical` commands go last, in their own block, in red. */
@@ -1,5 +1,5 @@
1
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-ClsOlOSr.js";
2
+ import { _ as a } from "../Menu.vue_vue_type_script_setup_true_lang-uPmxWvds.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";
@@ -58,11 +58,11 @@ declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {}, {}
58
58
  path: readonly PagePathItem[] | null;
59
59
  width: "full" | "content" | "readable";
60
60
  icon: IconName;
61
+ description: string;
61
62
  actions: readonly PageAction[];
63
+ count: number | null;
62
64
  back: PageBack | null;
63
65
  documentTitle: string | null;
64
- description: string;
65
- count: number | null;
66
66
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
67
67
  declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
68
68
  export default _default;
@@ -27,11 +27,11 @@ type __VLS_Slots = {
27
27
  };
28
28
  declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
29
29
  icon: IconName;
30
- actions: readonly PageAction[];
31
- leading: PageAction | null;
32
30
  status: string | null;
33
31
  description: string;
32
+ actions: readonly PageAction[];
34
33
  count: number | null;
34
+ leading: PageAction | null;
35
35
  inlineActions: boolean;
36
36
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
37
37
  declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
@@ -1,15 +1,15 @@
1
- import { _ as x } from "../AdaptivePageShell.vue_vue_type_script_setup_true_lang-DxD6JvyK.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-DxD6JvyK.js";
1
+ import { _ as x } from "../AdaptivePageShell.vue_vue_type_script_setup_true_lang-B7qSUiee.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-B7qSUiee.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
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
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-Bua3wbN6.js";
7
+ import { _ as ue } from "../RecordHeader.vue_vue_type_script_setup_true_lang-D87Hs75d.js";
8
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
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-BJfEOvEf.js";
12
- import { a as Se, _ as Ce } from "../SectionList.vue_vue_type_script_setup_true_lang-CaF3LPbQ.js";
11
+ import { _ as ye } from "../SectionNavigator.vue_vue_type_script_setup_true_lang-ROl9_pdO.js";
12
+ import { a as Se, _ as Ce } from "../SectionList.vue_vue_type_script_setup_true_lang-B0p_8xQG.js";
13
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,
@@ -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-CzP4BNh7.js";
2
+ import { _ as R, a as c } from "../ResourcePage.vue_vue_type_script_setup_true_lang-gJGEfLzX.js";
3
3
  export {
4
4
  R as RecordPager,
5
5
  c as ResourcePage,