@wssto2/vue-core 0.12.0 → 0.13.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 (122) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/README.md +4 -2
  3. package/dist/{AccessGate.vue_vue_type_script_setup_true_lang-CzQbD2Pc.js → AccessGate.vue_vue_type_script_setup_true_lang-DEzXovsY.js} +1 -1
  4. package/dist/{Activity-CdkJW68R.js → Activity-ChfxdvXf.js} +24 -23
  5. package/dist/{AdaptivePageShell.vue_vue_type_script_setup_true_lang-D5i77H6S.js → AdaptivePageShell.vue_vue_type_script_setup_true_lang-lPj9hPqV.js} +33 -33
  6. package/dist/{Changes-DxK_QfiB.js → Changes-BCa43_mO.js} +18 -17
  7. package/dist/{CollectionPage.vue_vue_type_script_setup_true_lang-x0jyJ01f.js → CollectionPage.vue_vue_type_script_setup_true_lang-C1GCvyZx.js} +6 -6
  8. package/dist/{DataTable.vue_vue_type_script_setup_true_lang-C_ZytnW-.js → DataTable.vue_vue_type_script_setup_true_lang-B9r9M5Gt.js} +1 -1
  9. package/dist/{DateField.vue_vue_type_script_setup_true_lang-CeNwBbJT.js → DateField.vue_vue_type_script_setup_true_lang-B5UUY1OO.js} +2 -2
  10. package/dist/{DeadLetters-DnA7LP1w.js → DeadLetters-wFTqhISU.js} +5 -5
  11. package/dist/{General-2matxl2Y.js → General-jW7u4MjH.js} +16 -15
  12. package/dist/{IncidentRecord-Bt3G4HlX.js → IncidentRecord-CXzgLKqI.js} +6 -6
  13. package/dist/{IncidentsList-2iwgqp9J.js → IncidentsList-D1MySyXb.js} +6 -6
  14. package/dist/{NewRolePage-DhGFwvk3.js → NewRolePage-CQ5UVaHs.js} +3 -3
  15. package/dist/{NumberField.vue_vue_type_script_setup_true_lang-B3UrXNqH.js → NumberField.vue_vue_type_script_setup_true_lang-YVgf5CP6.js} +1 -1
  16. package/dist/{PersonAccess.vue_vue_type_script_setup_true_lang-DbGZSNQc.js → PersonAccess.vue_vue_type_script_setup_true_lang-CWCt9_dM.js} +2 -2
  17. package/dist/{ProfilePage-CpuyDBAv.js → ProfilePage-Ca3x3UAH.js} +79 -77
  18. package/dist/{RecordHeader.vue_vue_type_script_setup_true_lang-DqGc3Jyo.js → RecordHeader.vue_vue_type_script_setup_true_lang-Do_ATJwT.js} +1 -1
  19. package/dist/{ResourcePage.vue_vue_type_script_setup_true_lang-DljhsTU4.js → ResourcePage.vue_vue_type_script_setup_true_lang-Coz91xht.js} +1 -1
  20. package/dist/{RoleEditor.vue_vue_type_script_setup_true_lang-C0FIotFA.js → RoleEditor.vue_vue_type_script_setup_true_lang-d_aaeXTT.js} +2 -2
  21. package/dist/{RolePage-DaNv049g.js → RolePage-BUj1w1m1.js} +5 -5
  22. package/dist/{RolesPage-6hlzJes_.js → RolesPage-NKzBUsrM.js} +3 -3
  23. package/dist/{SectionNavigator.vue_vue_type_script_setup_true_lang-Dh3sXUt_.js → SectionNavigator.vue_vue_type_script_setup_true_lang-DfKEhTFv.js} +2 -2
  24. package/dist/{ServiceAccountDialog.vue_vue_type_script_setup_true_lang-FJbWxME_.js → ServiceAccountDialog.vue_vue_type_script_setup_true_lang-4nbhEpv_.js} +10 -9
  25. package/dist/{ServiceAccountRecord-0-JF5lRx.js → ServiceAccountRecord-ClbyeLhL.js} +8 -8
  26. package/dist/{ServiceAccountsList-DcsnOcf-.js → ServiceAccountsList-B2VDnYxD.js} +5 -5
  27. package/dist/{Sessions-DgWhpk-i.js → Sessions-BjkciyHH.js} +23 -21
  28. package/dist/{SettingsPage-BXPWATYU.js → SettingsPage-Csb14qsx.js} +7 -7
  29. package/dist/{SignIn-DPoUwHZd.js → SignIn-DPFMv4C7.js} +14 -12
  30. package/dist/{SignInPage-OyrVemro.js → SignInPage-DukoFqkt.js} +2 -2
  31. package/dist/{SignIns-BMDrZVVp.js → SignIns-DvdpNkiS.js} +23 -22
  32. package/dist/{TimeField.vue_vue_type_script_setup_true_lang-D-Em4glH.js → TimeField.vue_vue_type_script_setup_true_lang-DpDXHH7u.js} +2 -2
  33. package/dist/{Timestamp.vue_vue_type_script_setup_true_lang-ClZAAUMd.js → Timestamp.vue_vue_type_script_setup_true_lang-DlEUKWra.js} +1 -1
  34. package/dist/{UserRecord-BW-gdCqi.js → UserRecord-B9SeSWQh.js} +57 -55
  35. package/dist/{UsersList-B3ZF_1Dj.js → UsersList-CREG8q3l.js} +4 -4
  36. package/dist/access/index.js +4 -4
  37. package/dist/app/application.d.ts +14 -6
  38. package/dist/app/current.d.ts +11 -0
  39. package/dist/app/environment.d.ts +8 -0
  40. package/dist/app/index.d.ts +1 -0
  41. package/dist/app/index.js +14 -12
  42. package/dist/application-DomS6sbx.js +435 -0
  43. package/dist/collection/http.d.ts +16 -1
  44. package/dist/collection/index.d.ts +1 -1
  45. package/dist/collection/index.js +34 -32
  46. package/dist/content/Money.vue.d.ts +1 -1
  47. package/dist/content/index.js +151 -158
  48. package/dist/{contributions-CeG4bszd.js → contributions-obnyn03x.js} +1 -1
  49. package/dist/current-B0lHKTWr.js +17 -0
  50. package/dist/form/DateField.vue.d.ts +2 -2
  51. package/dist/form/DateTimeField.vue.d.ts +2 -2
  52. package/dist/form/MoneyField.vue.d.ts +1 -1
  53. package/dist/form/NumberField.vue.d.ts +1 -1
  54. package/dist/form/date/MonthYearPanel.vue.d.ts +1 -1
  55. package/dist/form/date/days.d.ts +3 -3
  56. package/dist/form/index.d.ts +2 -0
  57. package/dist/form/index.js +1111 -1081
  58. package/dist/form/zodErrorMap.d.ts +35 -0
  59. package/dist/format/format.d.ts +51 -6
  60. package/dist/format/index.d.ts +1 -1
  61. package/dist/format/index.js +1 -1
  62. package/dist/format-DoKs29bZ.js +118 -0
  63. package/dist/{guards-Biv_SlGn.js → guards-DGcSfTEh.js} +1 -1
  64. package/dist/http-DOEfFCDA.js +107 -0
  65. package/dist/i18n/index.js +15 -15
  66. package/dist/identity/index.d.ts +2 -0
  67. package/dist/identity/index.js +43 -40
  68. package/dist/identity/usePreferences.d.ts +19 -0
  69. package/dist/incidents/clientErrorReporter.d.ts +2 -1
  70. package/dist/incidents/index.js +1 -1
  71. package/dist/{index-kEHY7hcG.js → index-CRxU_Wh2.js} +61 -61
  72. package/dist/{index-Cq9TuOqH.js → index-DZikGJ8L.js} +457 -511
  73. package/dist/{index-ClJeyW3F.js → index-D_yyd4C2.js} +4 -4
  74. package/dist/index.d.ts +1 -1
  75. package/dist/index.js +1 -1
  76. package/dist/internal/intlLocale.d.ts +5 -2
  77. package/dist/modules/identity/entities.d.ts +7 -2
  78. package/dist/modules/identity/routes.d.ts +5 -2
  79. package/dist/modules/identity/schemas.d.ts +6 -2
  80. package/dist/{navigation-TnVFYRaX.js → navigation-CctcxT51.js} +1 -1
  81. package/dist/{neighbors-OyvGi233.js → neighbors-Csfan8Ho.js} +1 -1
  82. package/dist/notifications/index.js +1 -1
  83. package/dist/onboarding/Tip.vue.d.ts +41 -0
  84. package/dist/onboarding/index.d.ts +1 -0
  85. package/dist/onboarding/index.js +145 -0
  86. package/dist/onboarding/tips.d.ts +5 -0
  87. package/dist/page/index.js +3 -3
  88. package/dist/phone/index.js +74 -74
  89. package/dist/phone/phone.d.ts +3 -3
  90. package/dist/platform/httpSession.d.ts +1 -1
  91. package/dist/platform/index.d.ts +2 -0
  92. package/dist/platform/index.js +16 -13
  93. package/dist/platform/preferences.d.ts +35 -0
  94. package/dist/platform/session.d.ts +6 -1
  95. package/dist/platform-DtISOEt7.js +284 -0
  96. package/dist/playwright/session.d.ts +7 -11
  97. package/dist/preferences-hYhrw8Uy.js +91 -0
  98. package/dist/resource/index.d.ts +1 -0
  99. package/dist/resource/index.js +24 -8
  100. package/dist/resource/read.d.ts +16 -0
  101. package/dist/router/index.js +3 -3
  102. package/dist/{rowLayout-BsKEzEME.js → rowLayout-y1IB_h2r.js} +2 -2
  103. package/dist/{sections-CvUwZ-S1.js → sections-fkW_IJLc.js} +1 -1
  104. package/dist/{serverMessages-B6GHgi40.js → serverMessages-Ddghrewh.js} +1 -1
  105. package/dist/shell/darkMode.d.ts +13 -8
  106. package/dist/shell/index.js +396 -384
  107. package/dist/{state-6KSYsVw0.js → state-CXMexi0l.js} +1 -1
  108. package/dist/styles.css +1 -1
  109. package/dist/testing/app.d.ts +11 -0
  110. package/dist/testing/format.d.ts +4 -2
  111. package/dist/testing/index.d.ts +1 -1
  112. package/dist/testing/index.js +96 -89
  113. package/dist/testing/platform.d.ts +2 -0
  114. package/dist/usePreferences-B8LIZp_f.js +47 -0
  115. package/dist/{useTypedEntry-C_Bk4sI0.js → useTypedEntry-DKs8I1yP.js} +279 -280
  116. package/package.json +6 -2
  117. package/src/styles/components.css +17 -0
  118. package/dist/application-CuzT-0vW.js +0 -420
  119. package/dist/format-D8KUBmbS.js +0 -87
  120. package/dist/http-Dm0uXY9O.js +0 -95
  121. package/dist/intlLocale-CeRU44qJ.js +0 -4
  122. package/dist/platform-BQOX_Ntw.js +0 -283
@@ -1,12 +1,12 @@
1
- import { defineComponent as $, computed as g, openBlock as t, createElementBlock as r, Fragment as V, renderList as z, toDisplayString as x, createCommentVNode as k, createElementVNode as p, normalizeClass as _, createVNode as E, unref as b, renderSlot as M, createTextVNode as L, createBlock as w, useModel as U, useId as F, useTemplateRef as R, watch as H, nextTick as I, withModifiers as Z, withDirectives as G, vModelText as O, mergeModels as T, ref as A, withCtx as C, createSlots as P, resolveDynamicComponent as q } from "vue";
2
- import { useI18n as D } from "vue-i18n";
3
- import { u as K, t as j } from "../format-D8KUBmbS.js";
1
+ import { defineComponent as w, computed as g, openBlock as t, createElementBlock as r, Fragment as V, renderList as z, toDisplayString as b, createCommentVNode as _, createElementVNode as f, normalizeClass as h, createVNode as A, unref as x, renderSlot as B, createTextVNode as M, createBlock as k, useModel as N, useId as U, useTemplateRef as F, watch as R, nextTick as I, withModifiers as Z, withDirectives as G, vModelText as H, mergeModels as T, ref as D, withCtx as C, createSlots as O, resolveDynamicComponent as P } from "vue";
2
+ import { u as j, t as q } from "../format-DoKs29bZ.js";
4
3
  import { _ as S } from "../Icon.vue_vue_type_script_lang-BhhsFYwp.js";
5
4
  import { _ as J } from "../Avatar.vue_vue_type_script_setup_true_lang-BPj_fkJR.js";
6
- import { i as ze } from "../Avatar.vue_vue_type_script_setup_true_lang-BPj_fkJR.js";
5
+ import { i as Ce } from "../Avatar.vue_vue_type_script_setup_true_lang-BPj_fkJR.js";
6
+ import { useI18n as E } from "vue-i18n";
7
7
  import { _ as Q } from "../KeyValue.vue_vue_type_script_setup_true_lang-wcZcvnow.js";
8
- import { _ as De } from "../Panel.vue_vue_type_script_setup_true_lang-D_Wg42hu.js";
9
- import { _ as Ae } from "../Timestamp.vue_vue_type_script_setup_true_lang-ClZAAUMd.js";
8
+ import { _ as Te } from "../Panel.vue_vue_type_script_setup_true_lang-D_Wg42hu.js";
9
+ import { _ as Ae } from "../Timestamp.vue_vue_type_script_setup_true_lang-DlEUKWra.js";
10
10
  const W = ["aria-label"], X = {
11
11
  key: 0,
12
12
  class: "py-1.5 text-center text-caption font-semibold text-content-muted",
@@ -15,97 +15,90 @@ const W = ["aria-label"], X = {
15
15
  key: 0,
16
16
  "data-test": "activity-event",
17
17
  class: "flex min-w-0 items-center gap-2.5 py-0.5 compact:items-start"
18
- }, te = { class: "flex min-w-0 flex-1 items-center gap-3 compact:flex-col compact:items-start compact:gap-1" }, se = { class: "flex min-w-0 flex-1 flex-wrap items-center gap-x-1.5 gap-y-1 text-subheadline text-content-strong" }, ae = { class: "shrink-0 text-footnote text-content-muted" }, oe = ["data-mine"], ne = /* @__PURE__ */ $({
18
+ }, te = { class: "flex min-w-0 flex-1 items-center gap-3 compact:flex-col compact:items-start compact:gap-1" }, se = { class: "flex min-w-0 flex-1 flex-wrap items-center gap-x-1.5 gap-y-1 text-subheadline text-content-strong" }, ae = { class: "shrink-0 text-footnote text-content-muted" }, oe = ["data-mine"], ne = /* @__PURE__ */ w({
19
19
  __name: "ActivityStream",
20
20
  props: {
21
21
  items: {},
22
22
  label: { default: void 0 }
23
23
  },
24
24
  setup(d) {
25
- const o = d, { t: s } = D(), n = K(), f = {
25
+ const o = d, a = j(), i = {
26
26
  neutral: "bg-status-neutral-surface text-status-neutral-content",
27
27
  info: "bg-status-info-surface text-status-info-content",
28
28
  warning: "bg-status-warning-surface text-status-warning-content",
29
29
  critical: "bg-status-danger-surface text-status-danger-content",
30
30
  positive: "bg-status-success-surface text-status-success-content"
31
- }, a = (c) => j(c.at)?.getTime() ?? 0;
32
- function v(c) {
33
- const m = j(c);
34
- if (!m) return "";
35
- const l = Math.round(((/* @__PURE__ */ new Date()).setHours(0, 0, 0, 0) - new Date(m).setHours(0, 0, 0, 0)) / 864e5);
36
- return l === 0 ? s("core.activity.today") : l === 1 ? s("core.activity.yesterday") : n.date(m);
37
- }
38
- const h = g(() => {
39
- const c = o.items.map((l, e) => ({ item: l, index: e })).sort((l, e) => a(l.item) - a(e.item) || l.index - e.index).map(({ item: l }) => l), m = [];
40
- for (const l of c) {
41
- const e = a(l) > 0 ? new Date(l.at).toDateString() : "", B = m[m.length - 1];
42
- B && B.key === e ? B.items.push(l) : m.push({ key: e, label: v(l.at), items: [l] });
31
+ }, m = (s) => q(s.at)?.getTime() ?? 0, l = g(() => {
32
+ const s = o.items.map((n, e) => ({ item: n, index: e })).sort((n, e) => m(n.item) - m(e.item) || n.index - e.index).map(({ item: n }) => n), u = [];
33
+ for (const n of s) {
34
+ const e = m(n) > 0 ? new Date(n.at).toDateString() : "", $ = u[u.length - 1];
35
+ $ && $.key === e ? $.items.push(n) : u.push({ key: e, label: a.day(n.at), items: [n] });
43
36
  }
44
- return m;
45
- }), y = (c, m) => [c, n.time(m)].filter(Boolean).join(" · "), u = (c) => c, i = (c) => c;
46
- return (c, m) => (t(), r("div", {
37
+ return u;
38
+ }), y = (s, u) => [s, a.time(u)].filter(Boolean).join(" · "), p = (s) => s, c = (s) => s;
39
+ return (s, u) => (t(), r("div", {
47
40
  "data-test": "activity-stream",
48
41
  class: "flex min-w-0 flex-col gap-3.5 compact:gap-3",
49
42
  "aria-label": o.label,
50
43
  role: "group"
51
44
  }, [
52
- (t(!0), r(V, null, z(h.value, (l) => (t(), r("section", {
53
- key: l.key,
45
+ (t(!0), r(V, null, z(l.value, (n) => (t(), r("section", {
46
+ key: n.key,
54
47
  class: "flex min-w-0 flex-col gap-3.5 compact:gap-3"
55
48
  }, [
56
- l.label ? (t(), r("h4", X, x(l.label), 1)) : k("", !0),
57
- p("ol", Y, [
58
- (t(!0), r(V, null, z(l.items, (e) => (t(), r("li", {
49
+ n.label ? (t(), r("h4", X, b(n.label), 1)) : _("", !0),
50
+ f("ol", Y, [
51
+ (t(!0), r(V, null, z(n.items, (e) => (t(), r("li", {
59
52
  key: `${e.kind}-${e.id}`,
60
53
  class: "min-w-0"
61
54
  }, [
62
55
  e.kind === "event" ? (t(), r("div", ee, [
63
- p("span", {
56
+ f("span", {
64
57
  "aria-hidden": "true",
65
- class: _(["flex size-7 shrink-0 items-center justify-center rounded-full", f[u(e).tone ?? "neutral"]])
58
+ class: h(["flex size-7 shrink-0 items-center justify-center rounded-full", i[p(e).tone ?? "neutral"]])
66
59
  }, [
67
- E(b(S), {
68
- name: u(e).icon,
60
+ A(x(S), {
61
+ name: p(e).icon,
69
62
  size: 14
70
63
  }, null, 8, ["name"])
71
64
  ], 2),
72
- p("div", te, [
73
- p("div", se, [
74
- M(c.$slots, "event", {
75
- item: u(e)
65
+ f("div", te, [
66
+ f("div", se, [
67
+ B(s.$slots, "event", {
68
+ item: p(e)
76
69
  }, () => [
77
- L(x(u(e).text), 1)
70
+ M(b(p(e).text), 1)
78
71
  ])
79
72
  ]),
80
- p("span", ae, x(y(u(e).actor, e.at)), 1)
73
+ f("span", ae, b(y(p(e).actor, e.at)), 1)
81
74
  ])
82
75
  ])) : (t(), r("div", {
83
76
  key: 1,
84
77
  "data-test": "activity-comment",
85
- "data-mine": i(e).mine ? "true" : void 0,
86
- class: _(["flex min-w-0 items-end gap-2", i(e).mine ? "justify-end" : ""])
78
+ "data-mine": c(e).mine ? "true" : void 0,
79
+ class: h(["flex min-w-0 items-end gap-2", c(e).mine ? "justify-end" : ""])
87
80
  }, [
88
- i(e).mine ? k("", !0) : (t(), w(J, {
81
+ c(e).mine ? _("", !0) : (t(), k(J, {
89
82
  key: 0,
90
- src: i(e).avatarUrl,
91
- name: i(e).author,
83
+ src: c(e).avatarUrl,
84
+ name: c(e).author,
92
85
  size: "md"
93
86
  }, null, 8, ["src", "name"])),
94
- p("div", {
95
- class: _(["flex max-w-[78%] min-w-0 flex-col gap-1", i(e).mine ? "items-end" : "items-start"])
87
+ f("div", {
88
+ class: h(["flex max-w-[78%] min-w-0 flex-col gap-1", c(e).mine ? "items-end" : "items-start"])
96
89
  }, [
97
- p("p", {
98
- class: _(["rounded-2xl px-3.5 py-2 text-body break-words whitespace-pre-line text-content-strong", i(e).mine ? "rounded-br-md bg-surface-selected" : "rounded-bl-md bg-surface-cell shadow-group"])
99
- }, x(i(e).body), 3),
100
- p("span", {
101
- class: _(["flex flex-wrap items-center gap-1.5 px-1 text-caption text-content-muted", i(e).mine ? "justify-end" : ""])
90
+ f("p", {
91
+ class: h(["rounded-2xl px-3.5 py-2 text-body break-words whitespace-pre-line text-content-strong", c(e).mine ? "rounded-br-md bg-surface-selected" : "rounded-bl-md bg-surface-cell shadow-group"])
92
+ }, b(c(e).body), 3),
93
+ f("span", {
94
+ class: h(["flex flex-wrap items-center gap-1.5 px-1 text-caption text-content-muted", c(e).mine ? "justify-end" : ""])
102
95
  }, [
103
- L(x(y(i(e).author, e.at)) + " ", 1),
104
- M(c.$slots, "comment-meta", {
105
- item: i(e)
96
+ M(b(y(c(e).author, e.at)) + " ", 1),
97
+ B(s.$slots, "comment-meta", {
98
+ item: c(e)
106
99
  }),
107
- M(c.$slots, "comment-actions", {
108
- item: i(e)
100
+ B(s.$slots, "comment-actions", {
101
+ item: c(e)
109
102
  })
110
103
  ], 2)
111
104
  ], 2)
@@ -115,7 +108,7 @@ const W = ["aria-label"], X = {
115
108
  ]))), 128))
116
109
  ], 8, W));
117
110
  }
118
- }), le = ["for"], re = ["id", "maxlength", "placeholder", "disabled"], ie = ["disabled", "aria-label"], ce = /* @__PURE__ */ $({
111
+ }), le = ["for"], re = ["id", "maxlength", "placeholder", "disabled"], ie = ["disabled", "aria-label"], ce = /* @__PURE__ */ w({
119
112
  __name: "Composer",
120
113
  props: /* @__PURE__ */ T({
121
114
  placeholder: { default: void 0 },
@@ -128,56 +121,56 @@ const W = ["aria-label"], X = {
128
121
  modelModifiers: {}
129
122
  }),
130
123
  emits: /* @__PURE__ */ T(["submit"], ["update:modelValue"]),
131
- setup(d, { expose: o, emit: s }) {
132
- const n = d, f = s, a = U(d, "modelValue"), { t: v } = D(), h = F(), y = R("field"), u = g(() => n.placeholder ?? v("core.comments.placeholder")), i = g(() => !n.disabled && !n.processing && a.value.trim().length > 0);
133
- function c() {
134
- const e = y.value;
135
- e && (e.style.height = "auto", e.style.height = `${Math.min(e.scrollHeight, 192)}px`);
124
+ setup(d, { expose: o, emit: a }) {
125
+ const i = d, m = a, l = N(d, "modelValue"), { t: y } = E(), p = U(), c = F("field"), s = g(() => i.placeholder ?? y("core.comments.placeholder")), u = g(() => !i.disabled && !i.processing && l.value.trim().length > 0);
126
+ function n() {
127
+ const v = c.value;
128
+ v && (v.style.height = "auto", v.style.height = `${Math.min(v.scrollHeight, 192)}px`);
136
129
  }
137
- H(a, () => I(c));
138
- function m() {
139
- i.value && f("submit", a.value.trim());
130
+ R(l, () => I(n));
131
+ function e() {
132
+ u.value && m("submit", l.value.trim());
140
133
  }
141
- function l(e) {
142
- e.key === "Enter" && (e.metaKey || e.ctrlKey) && (e.preventDefault(), m());
134
+ function $(v) {
135
+ v.key === "Enter" && (v.metaKey || v.ctrlKey) && (v.preventDefault(), e());
143
136
  }
144
- return o({ focus: () => y.value?.focus() }), (e, B) => (t(), r("form", {
137
+ return o({ focus: () => c.value?.focus() }), (v, L) => (t(), r("form", {
145
138
  "data-test": "composer",
146
139
  class: "flex items-end gap-2",
147
- onSubmit: Z(m, ["prevent"])
140
+ onSubmit: Z(e, ["prevent"])
148
141
  }, [
149
- p("label", {
150
- for: b(h),
142
+ f("label", {
143
+ for: x(p),
151
144
  class: "sr-only"
152
- }, x(n.label ?? u.value), 9, le),
153
- G(p("textarea", {
154
- id: b(h),
145
+ }, b(i.label ?? s.value), 9, le),
146
+ G(f("textarea", {
147
+ id: x(p),
155
148
  ref_key: "field",
156
- ref: y,
157
- "onUpdate:modelValue": B[0] || (B[0] = (N) => a.value = N),
149
+ ref: c,
150
+ "onUpdate:modelValue": L[0] || (L[0] = (K) => l.value = K),
158
151
  rows: "1",
159
- maxlength: n.maxLength,
160
- placeholder: u.value,
161
- disabled: n.disabled,
152
+ maxlength: i.maxLength,
153
+ placeholder: s.value,
154
+ disabled: i.disabled,
162
155
  "data-test": "composer-input",
163
156
  class: "block max-h-48 min-h-10 min-w-0 flex-1 resize-none rounded-3xl border-0 bg-surface-cell px-3.5 py-2.5 text-body text-content-strong ring-1 ring-border-separator ring-inset placeholder:text-content-disabled focus:outline-2 focus:outline-offset-0 focus:outline-border-focus focus:ring-0 disabled:cursor-not-allowed disabled:bg-fill compact:min-h-[2.375rem] compact:py-2",
164
- onKeydown: l
157
+ onKeydown: $
165
158
  }, null, 40, re), [
166
- [O, a.value]
159
+ [H, l.value]
167
160
  ]),
168
- p("button", {
161
+ f("button", {
169
162
  type: "submit",
170
163
  "data-test": "composer-send",
171
- disabled: !i.value,
172
- "aria-label": b(v)("core.comments.send"),
173
- class: _(["hit-target relative mb-0.5 flex size-9 shrink-0 items-center justify-center rounded-full transition-colors duration-motion-fast focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-border-focus compact:size-[2.125rem]", i.value ? "cursor-pointer bg-tint text-content-on-tint hover:bg-tint/90" : "cursor-not-allowed bg-fill-strong text-surface-cell"])
164
+ disabled: !u.value,
165
+ "aria-label": x(y)("core.comments.send"),
166
+ class: h(["hit-target relative mb-0.5 flex size-9 shrink-0 items-center justify-center rounded-full transition-colors duration-motion-fast focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-border-focus compact:size-[2.125rem]", u.value ? "cursor-pointer bg-tint text-content-on-tint hover:bg-tint/90" : "cursor-not-allowed bg-fill-strong text-surface-cell"])
174
167
  }, [
175
- n.processing ? (t(), w(b(S), {
168
+ i.processing ? (t(), k(x(S), {
176
169
  key: 0,
177
170
  name: "loader4Line",
178
171
  size: 18,
179
172
  class: "animate-spin"
180
- })) : (t(), w(b(S), {
173
+ })) : (t(), k(x(S), {
181
174
  key: 1,
182
175
  name: "arrowUpSLine",
183
176
  size: 20
@@ -195,7 +188,7 @@ const W = ["aria-label"], X = {
195
188
  key: 1,
196
189
  class: "px-1 text-body text-content-muted",
197
190
  "data-test": "comment-thread-empty"
198
- }, pe = ["disabled", "aria-label", "title", "onClick"], we = /* @__PURE__ */ $({
191
+ }, pe = ["disabled", "aria-label", "title", "onClick"], we = /* @__PURE__ */ w({
199
192
  __name: "CommentThread",
200
193
  props: {
201
194
  comments: {},
@@ -209,129 +202,129 @@ const W = ["aria-label"], X = {
209
202
  },
210
203
  emits: ["remove"],
211
204
  setup(d, { emit: o }) {
212
- const s = d, n = o, { t: f } = D(), a = A(""), v = A(!1), h = g(
213
- () => s.comments.map((u) => ({
205
+ const a = d, i = o, { t: m } = E(), l = D(""), y = D(!1), p = g(
206
+ () => a.comments.map((s) => ({
214
207
  kind: "comment",
215
- id: u.id,
216
- at: u.createdAt ?? null,
217
- body: u.body,
218
- author: u.author,
219
- avatarUrl: u.avatarUrl,
220
- mine: u.mine,
221
- source: u
208
+ id: s.id,
209
+ at: s.createdAt ?? null,
210
+ body: s.body,
211
+ author: s.author,
212
+ avatarUrl: s.avatarUrl,
213
+ mine: s.mine,
214
+ source: s
222
215
  }))
223
216
  );
224
- async function y(u) {
225
- v.value = !0;
217
+ async function c(s) {
218
+ y.value = !0;
226
219
  try {
227
- await s.onAdd?.(u) !== !1 && (a.value = "");
220
+ await a.onAdd?.(s) !== !1 && (l.value = "");
228
221
  } finally {
229
- v.value = !1;
222
+ y.value = !1;
230
223
  }
231
224
  }
232
- return (u, i) => (t(), r("section", ue, [
233
- s.hideTitle ? k("", !0) : (t(), r("h3", de, x(s.title ?? b(f)("core.comments.title")), 1)),
234
- s.comments.length === 0 ? (t(), r("p", me, x(b(f)("core.comments.none")), 1)) : (t(), w(ne, {
225
+ return (s, u) => (t(), r("section", ue, [
226
+ a.hideTitle ? _("", !0) : (t(), r("h3", de, b(a.title ?? x(m)("core.comments.title")), 1)),
227
+ a.comments.length === 0 ? (t(), r("p", me, b(x(m)("core.comments.none")), 1)) : (t(), k(ne, {
235
228
  key: 2,
236
- items: h.value,
237
- label: s.title ?? b(f)("core.comments.title")
229
+ items: p.value,
230
+ label: a.title ?? x(m)("core.comments.title")
238
231
  }, {
239
- "comment-actions": C(({ item: c }) => [
240
- s.canRemove ? (t(), r("button", {
232
+ "comment-actions": C(({ item: n }) => [
233
+ a.canRemove ? (t(), r("button", {
241
234
  key: 0,
242
235
  type: "button",
243
236
  "data-test": "comment-remove",
244
237
  class: "hit-target relative inline-flex size-5 cursor-pointer items-center justify-center rounded-full text-content-muted transition-colors duration-motion-fast hover:text-content-destructive focus-visible:outline-2 focus-visible:outline-border-focus disabled:cursor-not-allowed disabled:opacity-40",
245
- disabled: s.disabled,
246
- "aria-label": b(f)("core.comments.remove"),
247
- title: b(f)("core.comments.remove"),
248
- onClick: (m) => n("remove", c.source)
238
+ disabled: a.disabled,
239
+ "aria-label": x(m)("core.comments.remove"),
240
+ title: x(m)("core.comments.remove"),
241
+ onClick: (e) => i("remove", n.source)
249
242
  }, [
250
- E(b(S), {
243
+ A(x(S), {
251
244
  name: "deleteBin2Line",
252
245
  size: 14
253
246
  })
254
- ], 8, pe)) : k("", !0)
247
+ ], 8, pe)) : _("", !0)
255
248
  ]),
256
249
  _: 1
257
250
  }, 8, ["items", "label"])),
258
- s.canAdd ? (t(), w(ce, {
251
+ a.canAdd ? (t(), k(ce, {
259
252
  key: 3,
260
- modelValue: a.value,
261
- "onUpdate:modelValue": i[0] || (i[0] = (c) => a.value = c),
262
- "max-length": s.maxLength,
263
- disabled: s.disabled,
264
- processing: v.value,
265
- onSubmit: y
266
- }, null, 8, ["modelValue", "max-length", "disabled", "processing"])) : k("", !0)
253
+ modelValue: l.value,
254
+ "onUpdate:modelValue": u[0] || (u[0] = (n) => l.value = n),
255
+ "max-length": a.maxLength,
256
+ disabled: a.disabled,
257
+ processing: y.value,
258
+ onSubmit: c
259
+ }, null, 8, ["modelValue", "max-length", "disabled", "processing"])) : _("", !0)
267
260
  ]));
268
261
  }
269
262
  }), fe = {
270
263
  role: "separator",
271
264
  class: "my-2 flex items-center gap-4"
272
- }, be = {
265
+ }, xe = {
273
266
  key: 0,
274
267
  class: "select-none whitespace-nowrap font-mono text-2xs uppercase tracking-widest text-content-muted"
275
- }, $e = /* @__PURE__ */ $({
268
+ }, $e = /* @__PURE__ */ w({
276
269
  __name: "Divider",
277
270
  props: {
278
271
  label: {}
279
272
  },
280
273
  setup(d) {
281
- return (o, s) => (t(), r("div", fe, [
282
- s[0] || (s[0] = p("span", { class: "h-px flex-1 bg-border-separator" }, null, -1)),
283
- d.label ? (t(), r("span", be, x(d.label), 1)) : k("", !0),
284
- s[1] || (s[1] = p("span", { class: "h-px flex-1 bg-border-separator" }, null, -1))
274
+ return (o, a) => (t(), r("div", fe, [
275
+ a[0] || (a[0] = f("span", { class: "h-px flex-1 bg-border-separator" }, null, -1)),
276
+ d.label ? (t(), r("span", xe, b(d.label), 1)) : _("", !0),
277
+ a[1] || (a[1] = f("span", { class: "h-px flex-1 bg-border-separator" }, null, -1))
285
278
  ]));
286
279
  }
287
- }), Be = /* @__PURE__ */ $({
280
+ }), Be = /* @__PURE__ */ w({
288
281
  __name: "KeyValueList",
289
282
  props: {
290
283
  items: {},
291
284
  columns: { default: 1 }
292
285
  },
293
286
  setup(d) {
294
- const o = d, s = {
287
+ const o = d, a = {
295
288
  1: "grid-cols-1",
296
289
  2: "grid-cols-1 sm:grid-cols-2",
297
290
  3: "grid-cols-1 sm:grid-cols-2 lg:grid-cols-3"
298
291
  };
299
- return (n, f) => (t(), r("dl", {
300
- class: _(["grid gap-x-6 gap-y-3", s[o.columns]])
292
+ return (i, m) => (t(), r("dl", {
293
+ class: h(["grid gap-x-6 gap-y-3", a[o.columns]])
301
294
  }, [
302
- (t(!0), r(V, null, z(o.items, (a) => (t(), w(Q, {
303
- key: a.key,
304
- label: a.label,
305
- value: a.value,
306
- "data-key": a.key
307
- }, P({ _: 2 }, [
308
- n.$slots.value ? {
295
+ (t(!0), r(V, null, z(o.items, (l) => (t(), k(Q, {
296
+ key: l.key,
297
+ label: l.label,
298
+ value: l.value,
299
+ "data-key": l.key
300
+ }, O({ _: 2 }, [
301
+ i.$slots.value ? {
309
302
  name: "default",
310
303
  fn: C(() => [
311
- M(n.$slots, "value", { item: a })
304
+ B(i.$slots, "value", { item: l })
312
305
  ]),
313
306
  key: "0"
314
307
  } : void 0
315
308
  ]), 1032, ["label", "value", "data-key"]))), 128))
316
309
  ], 2));
317
310
  }
318
- }), Me = /* @__PURE__ */ $({
311
+ }), Ve = /* @__PURE__ */ w({
319
312
  __name: "MicroLabel",
320
313
  props: {
321
314
  as: { default: "span" }
322
315
  },
323
316
  setup(d) {
324
- return (o, s) => (t(), w(q(d.as), { class: "text-2xs font-semibold uppercase tracking-[0.06em] text-content-muted" }, {
317
+ return (o, a) => (t(), k(P(d.as), { class: "text-2xs font-semibold uppercase tracking-[0.06em] text-content-muted" }, {
325
318
  default: C(() => [
326
- M(o.$slots, "default")
319
+ B(o.$slots, "default")
327
320
  ]),
328
321
  _: 3
329
322
  }));
330
323
  }
331
- }), xe = {
324
+ }), be = {
332
325
  key: 0,
333
326
  class: "mr-0.5"
334
- }, Ve = /* @__PURE__ */ $({
327
+ }, Me = /* @__PURE__ */ w({
335
328
  __name: "Money",
336
329
  props: {
337
330
  amount: {},
@@ -342,19 +335,19 @@ const W = ["aria-label"], X = {
342
335
  signed: { type: Boolean, default: !1 }
343
336
  },
344
337
  setup(d) {
345
- const o = d, s = K(), n = g(() => typeof o.amount == "number" && Number.isFinite(o.amount) ? o.amount : 0), f = g(() => o.emptyZero && !n.value), a = g(() => !o.signed || !n.value || !Math.round(Math.abs(n.value) * 10 ** o.decimals) ? "" : n.value > 0 ? "+" : "−"), v = g(() => s.money(o.signed ? Math.abs(n.value) : n.value, { decimals: o.decimals, whole: o.whole, symbol: !1 })), h = g(() => a.value === "+" ? "font-medium text-status-success-content" : a.value === "−" ? "font-medium text-status-danger-content" : ""), y = g(() => o.symbol ? s.currencySymbol : "");
346
- return (u, i) => (t(), r("span", {
347
- class: _(["whitespace-nowrap tabular-nums", h.value])
338
+ const o = d, a = j(), i = g(() => typeof o.amount == "number" && Number.isFinite(o.amount) ? o.amount : 0), m = g(() => o.emptyZero && !i.value), l = g(() => !o.signed || !i.value || !Math.round(Math.abs(i.value) * 10 ** o.decimals) ? "" : i.value > 0 ? "+" : "−"), y = g(() => a.money(o.signed ? Math.abs(i.value) : i.value, { decimals: o.decimals, whole: o.whole, symbol: !1 })), p = g(() => l.value === "+" ? "font-medium text-status-success-content" : l.value === "−" ? "font-medium text-status-danger-content" : ""), c = g(() => o.symbol ? a.currencySymbol : "");
339
+ return (s, u) => (t(), r("span", {
340
+ class: h(["whitespace-nowrap tabular-nums", p.value])
348
341
  }, [
349
- f.value ? (t(), r(V, { key: 0 }, [
350
- L("—")
342
+ m.value ? (t(), r(V, { key: 0 }, [
343
+ M("—")
351
344
  ], 64)) : (t(), r(V, { key: 1 }, [
352
- a.value ? (t(), r("span", xe, x(a.value), 1)) : k("", !0),
353
- L(x(v.value), 1),
354
- y.value ? (t(), r("span", {
345
+ l.value ? (t(), r("span", be, b(l.value), 1)) : _("", !0),
346
+ M(b(y.value), 1),
347
+ c.value ? (t(), r("span", {
355
348
  key: 1,
356
- class: _(["ml-1 font-normal", h.value ? "opacity-75" : "text-content-muted"])
357
- }, x(y.value), 3)) : k("", !0)
349
+ class: h(["ml-1 font-normal", p.value ? "opacity-75" : "text-content-muted"])
350
+ }, b(c.value), 3)) : _("", !0)
358
351
  ], 64))
359
352
  ], 2));
360
353
  }
@@ -367,9 +360,9 @@ export {
367
360
  $e as Divider,
368
361
  Q as KeyValue,
369
362
  Be as KeyValueList,
370
- Me as MicroLabel,
371
- Ve as Money,
372
- De as Panel,
363
+ Ve as MicroLabel,
364
+ Me as Money,
365
+ Te as Panel,
373
366
  Ae as Timestamp,
374
- ze as initialsFor
367
+ Ce as initialsFor
375
368
  };
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as i, h as l } from "vue";
2
2
  import { d as u } from "./context-Ch1r4fdN.js";
3
- import { h as a } from "./platform-BQOX_Ntw.js";
3
+ import { h as a } from "./platform-DtISOEt7.js";
4
4
  function h(o, n) {
5
5
  const t = o.map(({ contribution: e }) => e).sort((e, r) => (e.order ?? 0) - (r.order ?? 0));
6
6
  return {
@@ -0,0 +1,17 @@
1
+ let t = null;
2
+ function n(e) {
3
+ return t = e, () => {
4
+ t === e && (t = null);
5
+ };
6
+ }
7
+ function r() {
8
+ if (!t)
9
+ throw new Error(
10
+ "There is no application yet: currentApplication() returns the one createApplication() made. Call it when the code runs (not while the module loads), after main.ts created the application; in a unit test call createTestApplication() from @wssto2/vue-core/testing first and dispose() it afterwards."
11
+ );
12
+ return t;
13
+ }
14
+ export {
15
+ n as b,
16
+ r as c
17
+ };
@@ -43,12 +43,12 @@ declare const __VLS_component: import("vue").DefineComponent<__VLS_PublicProps,
43
43
  error: string;
44
44
  required: boolean;
45
45
  presentation: "control" | "value";
46
+ min: Day;
47
+ max: Day;
46
48
  labelHidden: boolean;
47
49
  hint: string;
48
50
  editable: boolean;
49
51
  lockedReason: string;
50
- min: Day;
51
- max: Day;
52
52
  disabledDates: DisabledDates;
53
53
  openOn: Day;
54
54
  quickPicks: readonly QuickPick[];
@@ -43,12 +43,12 @@ declare const __VLS_component: import("vue").DefineComponent<__VLS_PublicProps,
43
43
  error: string;
44
44
  required: boolean;
45
45
  presentation: "control" | "value";
46
+ min: string;
47
+ max: string;
46
48
  labelHidden: boolean;
47
49
  hint: string;
48
50
  editable: boolean;
49
51
  lockedReason: string;
50
- min: string;
51
- max: string;
52
52
  disabledDates: DisabledDates;
53
53
  openOn: Day;
54
54
  quickPicks: readonly QuickPick[];
@@ -33,12 +33,12 @@ declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {
33
33
  required: boolean;
34
34
  width: Exclude<ControlWidth, "content">;
35
35
  presentation: "control" | "value";
36
+ decimals: number;
36
37
  modelValue: number | null;
37
38
  labelHidden: boolean;
38
39
  hint: string;
39
40
  editable: boolean;
40
41
  lockedReason: string;
41
- decimals: number;
42
42
  negative: boolean;
43
43
  blankZero: boolean;
44
44
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -63,6 +63,7 @@ declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {
63
63
  width: Exclude<ControlWidth, "content">;
64
64
  prefix: string;
65
65
  presentation: "control" | "value";
66
+ decimals: number;
66
67
  modelValue: number | null;
67
68
  labelHidden: boolean;
68
69
  hint: string;
@@ -70,7 +71,6 @@ declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {
70
71
  lockedReason: string;
71
72
  mono: boolean;
72
73
  suffix: string;
73
- decimals: number;
74
74
  minDecimals: number;
75
75
  negative: boolean;
76
76
  grouping: boolean;
@@ -25,8 +25,8 @@ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {
25
25
  year: number;
26
26
  }) => any) | undefined;
27
27
  }>, {
28
- month: number | null;
29
28
  year: number | null;
29
+ month: number | null;
30
30
  viewYear: number;
31
31
  minYear: number;
32
32
  maxYear: number;
@@ -46,10 +46,10 @@ export declare function today(now?: Date): Day;
46
46
  export declare function isDayDisabled(day: Day, rules: DayRules): boolean;
47
47
  /** The nearest day inside `min` and `max`. */
48
48
  export declare function clampDay(day: Day, rules: DayRules): Day;
49
- /** The locale's first day of the week, 1 (Monday) to 7 (Sunday). Monday where the platform does not know. */
50
- export declare function firstWeekday(locale: string): number;
49
+ /** The locale's first day of the week, 1 (Monday) to 7 (Sunday). Monday where the platform does not know. `tag` is the BCP 47 tag `Intl` is given: `useFormat().intlLocale`. */
50
+ export declare function firstWeekday(tag: string): number;
51
51
  /** The days of the week that are a weekend in the locale (Saturday and Sunday where the platform does not know). */
52
- export declare function weekendDays(locale: string): readonly number[];
52
+ export declare function weekendDays(tag: string): readonly number[];
53
53
  export interface CalendarCell {
54
54
  day: Day;
55
55
  /** The day of the month, 1 to 31. */
@@ -3,6 +3,8 @@ export { fieldKey, focusFirstError } from "./focus";
3
3
  export { useDirtySnapshot, useSheetDiscardGuard } from "./dirty";
4
4
  export { createLeaveGuard, installLeaveGuard, MissingLeaveGuardRootError, leaveGuardKey, useLeaveGuard, useLeaveGuardContext } from "./leaveGuard";
5
5
  export type { LeaveGuard, PendingLeave } from "./leaveGuard";
6
+ export { zodErrorMap } from "./zodErrorMap";
7
+ export type { ZodErrorMapEnvironment, ZodIssueLike } from "./zodErrorMap";
6
8
  export { default as LeaveGuardRoot } from "./LeaveGuardRoot.vue";
7
9
  export { useForm } from "./useForm";
8
10
  export type { FieldBinding, Form, FormFailure, FormFailureKind, FormOptions, KeysHolding, MonthYearBinding, SubmitContext, SubmitOptions, SubmitResult } from "./useForm";