@wssto2/vue-core 0.13.1 → 0.15.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 (113) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/README.md +2 -2
  3. package/bin/architecture/engine.mjs +11 -1
  4. package/bin/architecture/rules.mjs +95 -0
  5. package/bin/commands/check-architecture.mjs +8 -1
  6. package/bin/config.mjs +2 -0
  7. package/dist/{AccessGate.vue_vue_type_script_setup_true_lang-DEzXovsY.js → AccessGate.vue_vue_type_script_setup_true_lang-BH3f0hda.js} +1 -1
  8. package/dist/{Activity-ChfxdvXf.js → Activity-MOAIv6s4.js} +5 -5
  9. package/dist/{AdaptivePageShell.vue_vue_type_script_setup_true_lang-lPj9hPqV.js → AdaptivePageShell.vue_vue_type_script_setup_true_lang-Bsv5j5Z8.js} +1 -1
  10. package/dist/{Changes-BCa43_mO.js → Changes-Bu7D0dhY.js} +2 -2
  11. package/dist/{CollectionPage.vue_vue_type_script_setup_true_lang-C1GCvyZx.js → CollectionPage.vue_vue_type_script_setup_true_lang-D5HsYIck.js} +6 -6
  12. package/dist/{DataTable.vue_vue_type_script_setup_true_lang-B9r9M5Gt.js → DataTable.vue_vue_type_script_setup_true_lang-J3PhyJAS.js} +1 -1
  13. package/dist/{DateField.vue_vue_type_script_setup_true_lang-B5UUY1OO.js → DateField.vue_vue_type_script_setup_true_lang-CKKG4JEg.js} +2 -2
  14. package/dist/{DeadLetters-wFTqhISU.js → DeadLetters-DsujMnLG.js} +5 -5
  15. package/dist/FormGroup.vue_vue_type_script_setup_true_lang-CTVuhEbW.js +428 -0
  16. package/dist/{FormView.vue_vue_type_script_setup_true_lang-DvbPEiNQ.js → FormView.vue_vue_type_script_setup_true_lang-Cfvh7rF6.js} +1 -1
  17. package/dist/{General-jW7u4MjH.js → General-Dswj1oXt.js} +7 -7
  18. package/dist/IncidentRecord-DcmqpziF.js +522 -0
  19. package/dist/{IncidentsList-yu0xSMrH.js → IncidentsList-BRNqHZdU.js} +6 -6
  20. package/dist/{NewRolePage-CQ5UVaHs.js → NewRolePage-dFLznJGH.js} +3 -3
  21. package/dist/{NumberField.vue_vue_type_script_setup_true_lang-YVgf5CP6.js → NumberField.vue_vue_type_script_setup_true_lang-U-_kcnGr.js} +1 -1
  22. package/dist/{PersonAccess.vue_vue_type_script_setup_true_lang-CWCt9_dM.js → PersonAccess.vue_vue_type_script_setup_true_lang-D3yp43o5.js} +4 -4
  23. package/dist/{ProfilePage-Ca3x3UAH.js → ProfilePage-BnHR3xGB.js} +10 -10
  24. package/dist/{RecordHeader.vue_vue_type_script_setup_true_lang-Do_ATJwT.js → RecordHeader.vue_vue_type_script_setup_true_lang-SDgLjwEI.js} +1 -1
  25. package/dist/{ResourcePage.vue_vue_type_script_setup_true_lang-Coz91xht.js → ResourcePage.vue_vue_type_script_setup_true_lang-DRC3h71-.js} +1 -1
  26. package/dist/{RoleEditor.vue_vue_type_script_setup_true_lang-d_aaeXTT.js → RoleEditor.vue_vue_type_script_setup_true_lang-DNF9wzE9.js} +4 -4
  27. package/dist/{RolePage-BUj1w1m1.js → RolePage-BtM2rFLm.js} +7 -7
  28. package/dist/{RolesPage-NKzBUsrM.js → RolesPage-MO1gAfdT.js} +4 -4
  29. package/dist/{SectionNavigator.vue_vue_type_script_setup_true_lang-DfKEhTFv.js → SectionNavigator.vue_vue_type_script_setup_true_lang-TMdsmYAg.js} +2 -2
  30. package/dist/ServiceAccountDialog.vue_vue_type_script_setup_true_lang-Bo3phlqB.js +127 -0
  31. package/dist/{ServiceAccountRecord-ClbyeLhL.js → ServiceAccountRecord-C1M-dcju.js} +10 -10
  32. package/dist/{ServiceAccountsList-B2VDnYxD.js → ServiceAccountsList-zfyS2WJB.js} +6 -6
  33. package/dist/{Sessions-BjkciyHH.js → Sessions-BYBUSqHI.js} +3 -3
  34. package/dist/{SettingsPage-Csb14qsx.js → SettingsPage-C9Kp2ddX.js} +9 -9
  35. package/dist/{SignIn-DPFMv4C7.js → SignIn-HBYLSZ1M.js} +5 -5
  36. package/dist/{SignInPage-DukoFqkt.js → SignInPage-CEoz3fWE.js} +3 -3
  37. package/dist/{SignIns-DvdpNkiS.js → SignIns-BAz7V4vy.js} +2 -2
  38. package/dist/{TimeField.vue_vue_type_script_setup_true_lang-DpDXHH7u.js → TimeField.vue_vue_type_script_setup_true_lang-BDlTAMsh.js} +2 -2
  39. package/dist/{Timestamp.vue_vue_type_script_setup_true_lang-DlEUKWra.js → Timestamp.vue_vue_type_script_setup_true_lang-jCXYFLtq.js} +1 -1
  40. package/dist/{UserRecord-B9SeSWQh.js → UserRecord-DkyhGma-.js} +9 -9
  41. package/dist/{UsersList-CREG8q3l.js → UsersList-CsW-jU0m.js} +4 -4
  42. package/dist/access/RestrictedPanel.vue.d.ts +20 -0
  43. package/dist/access/index.d.ts +1 -0
  44. package/dist/access/index.js +91 -31
  45. package/dist/app/application.d.ts +2 -2
  46. package/dist/app/current.d.ts +6 -0
  47. package/dist/app/index.d.ts +1 -1
  48. package/dist/app/index.js +17 -16
  49. package/dist/{application-DomS6sbx.js → application-2gHiwAVy.js} +6 -6
  50. package/dist/client/client.d.ts +6 -0
  51. package/dist/client/index.js +1 -1
  52. package/dist/client-Do8v1I5l.js +193 -0
  53. package/dist/collection/index.js +6 -6
  54. package/dist/config/index.d.ts +21 -1
  55. package/dist/content/StatSummary.vue.d.ts +40 -0
  56. package/dist/content/index.d.ts +1 -0
  57. package/dist/content/index.js +245 -176
  58. package/dist/{contributions-obnyn03x.js → contributions-9CPT-Z5v.js} +1 -1
  59. package/dist/{current-B0lHKTWr.js → current-CslcEPXp.js} +8 -4
  60. package/dist/eslint/index.js +2 -2
  61. package/dist/form/index.js +16 -16
  62. package/dist/form/useForm.d.ts +1 -1
  63. package/dist/format/format.d.ts +5 -2
  64. package/dist/format/index.js +1 -1
  65. package/dist/format-Cp1h0vsC.js +125 -0
  66. package/dist/{guards-DGcSfTEh.js → guards-6fJxfUtk.js} +1 -1
  67. package/dist/{http-DOEfFCDA.js → http-D6qOS6xs.js} +1 -1
  68. package/dist/i18n/index.d.ts +5 -1
  69. package/dist/i18n/index.js +21 -20
  70. package/dist/i18n/serverMessages.d.ts +15 -1
  71. package/dist/identity/index.js +2 -2
  72. package/dist/incidents/Occurrences.vue.d.ts +9 -0
  73. package/dist/incidents/api.d.ts +11 -2
  74. package/dist/incidents/index.js +1 -1
  75. package/dist/{index-DZikGJ8L.js → index--AF_DNhE.js} +22 -22
  76. package/dist/{index-D_yyd4C2.js → index-DYva-K_4.js} +5 -5
  77. package/dist/{index-Be9Q1PB_.js → index-Dlu-PA4W.js} +104 -98
  78. package/dist/index.d.ts +1 -1
  79. package/dist/index.js +1 -1
  80. package/dist/modules/incident/entities.d.ts +19 -0
  81. package/dist/modules/incident/routes.d.ts +4 -1
  82. package/dist/{navigation-CctcxT51.js → navigation-DMJ6akat.js} +1 -1
  83. package/dist/{neighbors-Csfan8Ho.js → neighbors-DrEahe7B.js} +1 -1
  84. package/dist/notifications/index.js +1 -1
  85. package/dist/onboarding/index.js +1 -1
  86. package/dist/page/index.js +3 -3
  87. package/dist/phone/index.d.ts +1 -1
  88. package/dist/phone/index.js +154 -142
  89. package/dist/phone/phone.d.ts +6 -0
  90. package/dist/platform/index.js +3 -3
  91. package/dist/{platform-DtISOEt7.js → platform-ORzRR3Tw.js} +1 -1
  92. package/dist/resource/index.js +2 -2
  93. package/dist/router/index.js +3 -3
  94. package/dist/{rowLayout-y1IB_h2r.js → rowLayout-Ohh5ng1u.js} +2 -2
  95. package/dist/{sections-fkW_IJLc.js → sections-DI_JhgQG.js} +1 -1
  96. package/dist/serverMessages-Ce8-MK4e.js +30 -0
  97. package/dist/shell/index.js +4 -4
  98. package/dist/{state-CXMexi0l.js → state-QDaxntgR.js} +1 -1
  99. package/dist/styles.css +1 -1
  100. package/dist/testing/index.js +3 -3
  101. package/dist/{useCommand-Ch_nx1AQ.js → useCommand-BvcU3AlW.js} +1 -1
  102. package/dist/{useGroupSheet-CPjHydQV.js → useGroupSheet-BGIntPKD.js} +1 -1
  103. package/dist/{usePreferences-B8LIZp_f.js → usePreferences-BfMXVbSO.js} +1 -1
  104. package/dist/{useRecordDialog-DdkauXnU.js → useRecordDialog-q_BNXdb7.js} +1 -1
  105. package/dist/{useResourceForm-Dl6YFYyz.js → useResourceForm-C1S628UI.js} +1 -1
  106. package/dist/{useTypedEntry-DKs8I1yP.js → useTypedEntry-tttjrClq.js} +1 -1
  107. package/package.json +2 -2
  108. package/dist/FormGroup.vue_vue_type_script_setup_true_lang-D6jYfNjW.js +0 -427
  109. package/dist/IncidentRecord-zTemLz2R.js +0 -404
  110. package/dist/ServiceAccountDialog.vue_vue_type_script_setup_true_lang-4nbhEpv_.js +0 -127
  111. package/dist/client-Dg303Pmc.js +0 -193
  112. package/dist/format-DoKs29bZ.js +0 -118
  113. package/dist/serverMessages-Ddghrewh.js +0 -25
@@ -1,17 +1,21 @@
1
1
  let t = null;
2
- function n(e) {
2
+ function r(e) {
3
3
  return t = e, () => {
4
4
  t === e && (t = null);
5
5
  };
6
6
  }
7
- function r() {
7
+ function n() {
8
8
  if (!t)
9
9
  throw new Error(
10
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
11
  );
12
12
  return t;
13
13
  }
14
+ function i() {
15
+ return n().platform.http;
16
+ }
14
17
  export {
15
- n as b,
16
- r as c
18
+ i as a,
19
+ r as b,
20
+ n as c
17
21
  };
@@ -76,8 +76,8 @@ function b({ typed: e = !1, tsconfigRootDir: n, ignores: i = [], rules: p = {} }
76
76
  ...p
77
77
  }
78
78
  },
79
- // Test doubles define stub components inline, several per file, with untyped prop lists on purpose.
80
- { files: ["**/*.test.ts"], languageOptions: { globals: r.vitest }, rules: { "vue/require-prop-types": "off", "vue/one-component-per-file": "off" } }
79
+ // Test files (named *.test.ts or in a tests/ folder) define stub components inline, several per file, with untyped prop lists on purpose.
80
+ { files: ["**/*.test.ts", "tests/**/*.{ts,vue}"], languageOptions: { globals: r.vitest }, rules: { "vue/require-prop-types": "off", "vue/one-component-per-file": "off" } }
81
81
  ];
82
82
  }
83
83
  export {
@@ -1,12 +1,12 @@
1
- import { a as ot, _ as We, c as nt, f as st } from "../FormGroup.vue_vue_type_script_setup_true_lang-D6jYfNjW.js";
2
- import { E as Bo, b as Lo, d as To, p as qo, r as zo, u as Vo, e as Do, g as Ro } from "../FormGroup.vue_vue_type_script_setup_true_lang-D6jYfNjW.js";
3
- import { f as qe } from "../useCommand-Ch_nx1AQ.js";
4
- import { _ as Io, a as jo, u as Oo } from "../useCommand-Ch_nx1AQ.js";
1
+ import { a as ot, _ as We, c as nt, f as st } from "../FormGroup.vue_vue_type_script_setup_true_lang-CTVuhEbW.js";
2
+ import { E as Bo, b as Lo, d as To, p as qo, r as zo, u as Vo, e as Do, g as Ro } from "../FormGroup.vue_vue_type_script_setup_true_lang-CTVuhEbW.js";
3
+ import { f as qe } from "../useCommand-BvcU3AlW.js";
4
+ import { _ as Io, a as jo, u as Oo } from "../useCommand-BvcU3AlW.js";
5
5
  import { ref as P, computed as h, defineComponent as G, openBlock as d, createBlock as R, mergeProps as J, unref as s, createSlots as Z, withCtx as f, createElementVNode as p, normalizeClass as j, createElementBlock as y, Fragment as de, renderList as $e, createVNode as I, createCommentVNode as q, toDisplayString as C, renderSlot as S, mergeDefaults as ce, useModel as re, useId as Re, withKeys as Se, withModifiers as pe, createTextVNode as H, mergeModels as le, useTemplateRef as U, shallowRef as Ne, watch as ge, normalizeProps as ze, guardReactiveProps as Ve, nextTick as xe, provide as rt, inject as Je, onBeforeUnmount as Ze, getCurrentScope as it, onScopeDispose as ut, toValue as dt, shallowReactive as Ae, normalizeStyle as ct, resolveDynamicComponent as ft } from "vue";
6
6
  import { a as Xe } from "../leaveGuard-Cc8yeLxM.js";
7
7
  import { M as No, c as Ao, i as Go, l as Ko, u as Po } from "../leaveGuard-Cc8yeLxM.js";
8
8
  import { _ as Uo } from "../LeaveGuardRoot.vue_vue_type_script_setup_true_lang-CIwW7y4j.js";
9
- import { u as Wo } from "../useResourceForm-Dl6YFYyz.js";
9
+ import { u as Wo } from "../useResourceForm-C1S628UI.js";
10
10
  import { _ as X } from "../Icon.vue_vue_type_script_lang-BhhsFYwp.js";
11
11
  import { u as Qe, _ as ye, f as fe, b as me, a as et, e as Me, g as mt, j as vt, k as pt } from "../options-B48UiYsG.js";
12
12
  import { d as Zo, h as Xo, m as Qo } from "../options-B48UiYsG.js";
@@ -16,32 +16,32 @@ import { a as gt } from "../TextField.vue_vue_type_script_setup_true_lang-CWIeeZ
16
16
  import { _ as tn } from "../TextField.vue_vue_type_script_setup_true_lang-CWIeeZRE.js";
17
17
  import { u as yt, l as ht } from "../suggestions-q_v3M7G6.js";
18
18
  import { r as ln } from "../suggestions-q_v3M7G6.js";
19
- import { s as _e, u as Ge, i as kt, o as Ce, e as Fe, k as xt, _ as wt, l as $t, c as _t, b as Ct, t as Te, g as St, q as Ft } from "../useTypedEntry-DKs8I1yP.js";
20
- import { u as Bt, a as Lt, s as Tt } from "../DateField.vue_vue_type_script_setup_true_lang-B5UUY1OO.js";
21
- import { _ as nn } from "../DateField.vue_vue_type_script_setup_true_lang-B5UUY1OO.js";
19
+ import { s as _e, u as Ge, i as kt, o as Ce, e as Fe, k as xt, _ as wt, l as $t, c as _t, b as Ct, t as Te, g as St, q as Ft } from "../useTypedEntry-tttjrClq.js";
20
+ import { u as Bt, a as Lt, s as Tt } from "../DateField.vue_vue_type_script_setup_true_lang-CKKG4JEg.js";
21
+ import { _ as nn } from "../DateField.vue_vue_type_script_setup_true_lang-CKKG4JEg.js";
22
22
  import { _ as tt } from "../DateButton.vue_vue_type_script_setup_true_lang-CovKG5lN.js";
23
- import { u as at } from "../format-DoKs29bZ.js";
23
+ import { u as at } from "../format-Cp1h0vsC.js";
24
24
  import { u as Ie } from "../mediaQuery-CygcXmFW.js";
25
25
  import { _ as je } from "../Popover.vue_vue_type_script_setup_true_lang-C20Hf3Hl.js";
26
- import { u as qt } from "../TimeField.vue_vue_type_script_setup_true_lang-DpDXHH7u.js";
27
- import { _ as rn } from "../TimeField.vue_vue_type_script_setup_true_lang-DpDXHH7u.js";
26
+ import { u as qt } from "../TimeField.vue_vue_type_script_setup_true_lang-BDlTAMsh.js";
27
+ import { _ as rn } from "../TimeField.vue_vue_type_script_setup_true_lang-BDlTAMsh.js";
28
28
  import { _ as be } from "../Button.vue_vue_type_script_setup_true_lang-C74hcb0N.js";
29
- import { _ as dn } from "../FormView.vue_vue_type_script_setup_true_lang-DvbPEiNQ.js";
29
+ import { _ as dn } from "../FormView.vue_vue_type_script_setup_true_lang-Cfvh7rF6.js";
30
30
  import { a as zt } from "../environment-Dva-SG8D.js";
31
- import { _ as Vt } from "../NumberField.vue_vue_type_script_setup_true_lang-YVgf5CP6.js";
31
+ import { _ as Vt } from "../NumberField.vue_vue_type_script_setup_true_lang-U-_kcnGr.js";
32
32
  import { _ as Dt } from "../Sheet.vue_vue_type_script_setup_true_lang-B91aRD_y.js";
33
33
  import { b as Rt, a as Ke } from "../SelectField.vue_vue_type_script_setup_true_lang-BZwdANL3.js";
34
34
  import { _ as fn, u as mn } from "../SelectField.vue_vue_type_script_setup_true_lang-BZwdANL3.js";
35
- import { _ as pn, b as bn, a as gn, u as yn } from "../useGroupSheet-CPjHydQV.js";
35
+ import { _ as pn, b as bn, a as gn, u as yn } from "../useGroupSheet-BGIntPKD.js";
36
36
  import { _ as Pe } from "../PhotoViewer.vue_vue_type_script_setup_true_lang-Bqxj_uJ5.js";
37
37
  import { _ as kn } from "../SegmentedField.vue_vue_type_script_setup_true_lang-zv_AxpBn.js";
38
38
  import { _ as wn } from "../SwitchField.vue_vue_type_script_setup_true_lang-Ds4q0bbl.js";
39
39
  import { _ as _n } from "../TextareaField.vue_vue_type_script_setup_true_lang-D2j4s96s.js";
40
- import { _ as Mt } from "../AdaptivePageShell.vue_vue_type_script_setup_true_lang-lPj9hPqV.js";
40
+ import { _ as Mt } from "../AdaptivePageShell.vue_vue_type_script_setup_true_lang-Bsv5j5Z8.js";
41
41
  import { _ as It, a as jt } from "../SectionList.vue_vue_type_script_setup_true_lang-DR0_NsqC.js";
42
42
  import { p as Ot } from "../sectionIndex-BS0ic5W7.js";
43
43
  import { u as Et } from "../useSaveChrome-7huA3FzR.js";
44
- import { u as Sn } from "../useRecordDialog-DdkauXnU.js";
44
+ import { u as Sn } from "../useRecordDialog-q_BNXdb7.js";
45
45
  import { matchedRouteKey as Nt, onBeforeRouteLeave as At } from "vue-router";
46
46
  function Gt(l) {
47
47
  const a = P(null);
@@ -80,7 +80,7 @@ export interface FormOptions<Values extends object, Output = Values> {
80
80
  readonly defaults: Values | (() => Values);
81
81
  /** The app's schema (anything with Zod's `safeParse`). Without one the server is the only validator. */
82
82
  readonly validator?: FormValidator<Output>;
83
- /** A field message into a sentence, for a form that says it differently from the rest of the app. Default: the application's (`createApplication({ describeFieldError })`), else as sent. */
83
+ /** A field message into a sentence, for a form that says it differently from the rest of the app. Default: the application's (`createApplication({ describeFieldError })`), else the library's words for go-core's validator keys (`useServerMessages`), other text as sent. */
84
84
  readonly describeFieldError?: (message: string, field: string) => string;
85
85
  /** The draft's name for a field the server names, given the whole dotted path (`tax_id` is `taxId`, `lines.0.unit_price` is `lines.0.unitPrice`). Default: the same name. */
86
86
  readonly serverField?: (field: string) => string;
@@ -54,8 +54,11 @@ export interface MoneyOptions {
54
54
  export interface Formatting {
55
55
  /** The locale the next call formats for. */
56
56
  readonly locale: string;
57
- /** Numeric by default: `30. 09. 2026.` in hr, `09/30/2026` in en. */
58
- date(value: DateInput): string;
57
+ /**
58
+ * Numeric by default: `30. 09. 2026.` in hr, `09/30/2026` in en. With `options` it is `Intl.DateTimeFormat`'s for the active locale
59
+ * (`{ month: "long", year: "numeric" }`; the application's `datePattern` does not apply), and in Bosnian the month words are Bosnian.
60
+ */
61
+ date(value: DateInput, options?: Intl.DateTimeFormatOptions): string;
59
62
  dateTime(value: DateInput): string;
60
63
  time(value: DateInput): string;
61
64
  number(value: number | null | undefined, options?: Intl.NumberFormatOptions): string;
@@ -1,4 +1,4 @@
1
- import { c as o, f as s, i, a as l, t as n, u as g } from "../format-DoKs29bZ.js";
1
+ import { c as o, f as s, i, a as l, t as n, u as g } from "../format-Cp1h0vsC.js";
2
2
  function e(a) {
3
3
  return a.normalize("NFD").replace(/[\u0300-\u036f]/g, "").replace(/[đĐ]/g, "d").toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "");
4
4
  }
@@ -0,0 +1,125 @@
1
+ import { d as x } from "./context-Ch1r4fdN.js";
2
+ const E = { bs: "sr-Latn-BA" }, M = (e, r = {}) => r[e] ?? E[e] ?? e, L = /^(\d{4})-(\d{2})-(\d{2})$/, S = /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}/, A = ["0000-00-00", "0001-01-01", "1970-01-01"];
3
+ function b(e) {
4
+ if (e == null || e === "") return null;
5
+ let r;
6
+ if (e instanceof Date) r = e;
7
+ else if (typeof e == "number") r = new Date(e);
8
+ else {
9
+ if (A.some((o) => e.startsWith(o))) return null;
10
+ const c = L.exec(e);
11
+ c ? r = new Date(Number(c[1]), Number(c[2]) - 1, Number(c[3])) : r = new Date(S.test(e) ? e.replace(" ", "T") : e);
12
+ }
13
+ return Number.isNaN(r.getTime()) || r.getTime() <= 0 ? null : r;
14
+ }
15
+ const F = { year: "numeric", month: "2-digit", day: "2-digit" }, T = { hour: "2-digit", minute: "2-digit" }, h = [
16
+ ["year", 31536e3],
17
+ ["month", 2592e3],
18
+ ["week", 604800],
19
+ ["day", 86400],
20
+ ["hour", 3600],
21
+ ["minute", 60],
22
+ ["second", 1]
23
+ ], Y = "sr-Latn-BA", N = ["januar", "februar", "mart", "april", "maj", "juni", "juli", "august", "septembar", "oktobar", "novembar", "decembar"], j = ["januara", "februara", "marta", "aprila", "maja", "juna", "jula", "augusta", "septembra", "oktobra", "novembra", "decembra"];
24
+ function O(e, r, c) {
25
+ const o = new Intl.DateTimeFormat(r, c);
26
+ if (r !== Y || c.month !== "long" && c.month !== "short") return o.format(e);
27
+ const d = e.getMonth();
28
+ return o.formatToParts(e).map((l) => l.type !== "month" ? l.value : c.month === "short" ? N[d].slice(0, 3) : (c.day === void 0 ? N : j)[d]).join("");
29
+ }
30
+ const D = (e, r = 2) => String(e).padStart(r, "0");
31
+ function $(e, r, { group: c, decimal: o }) {
32
+ const d = r?.minimumFractionDigits ?? 0, l = Math.max(d, r?.maximumFractionDigits ?? 3), [g = "", a = ""] = e.toFixed(l).split(".");
33
+ let i = a;
34
+ for (; i.length > d && i.endsWith("0"); ) i = i.slice(0, -1);
35
+ const t = r?.useGrouping === !1 ? g : g.replace(/\B(?=(\d{3})+(?!\d))/g, c);
36
+ return i ? `${t}${o}${i}` : t;
37
+ }
38
+ function H(e = {}) {
39
+ const r = /* @__PURE__ */ new Map(), c = (t, n) => {
40
+ let m = r.get(t);
41
+ return m || (m = n(), r.set(t, m)), m;
42
+ }, o = (t) => M(t, e.intlLocale), d = (t, n) => c(`d|${t}|${JSON.stringify(n)}`, () => new Intl.DateTimeFormat(o(t), n)), l = (t, n) => c(`n|${t}|${JSON.stringify(n ?? {})}`, () => new Intl.NumberFormat(o(t), n)), { datePattern: g, numberSymbols: a } = e, i = (t, n) => n.replace(
43
+ /YYYY|MM|DD|HH|mm/g,
44
+ (m) => m === "YYYY" ? D(t.getFullYear(), 4) : D(m === "MM" ? t.getMonth() + 1 : m === "DD" ? t.getDate() : m === "HH" ? t.getHours() : t.getMinutes())
45
+ );
46
+ return {
47
+ date: (t, n) => g?.[n] ? i(t, g[n]) : d(n, F).format(t),
48
+ dateTime: (t, n) => g?.[n] ? i(t, `${g[n]} HH:mm`) : d(n, { ...F, ...T }).format(t),
49
+ time: (t, n) => d(n, T).format(t),
50
+ number: (t, n, m) => a && (m?.style ?? "decimal") === "decimal" ? $(t, m, a) : l(n, m).format(t),
51
+ money(t, n, m, s) {
52
+ const u = c(`m|${m}|${n}|${JSON.stringify(s ?? {})}`, () => new Intl.NumberFormat(o(m), { ...s, style: "currency", currency: n }));
53
+ if (!a) return u.format(t);
54
+ const y = u.formatToParts(t).find((w) => w.type === "currency")?.value ?? n, f = s?.maximumFractionDigits ?? u.resolvedOptions().maximumFractionDigits ?? 2;
55
+ return `${$(t, { minimumFractionDigits: f, maximumFractionDigits: f }, a)} ${y}`;
56
+ },
57
+ relative(t, n, m) {
58
+ const s = Math.trunc((t.getTime() - m.getTime()) / 1e3), [u, y] = h.find(([, f]) => Math.abs(s) >= f) ?? h[h.length - 1];
59
+ return c(`r|${n}`, () => new Intl.RelativeTimeFormat(o(n), { numeric: "auto" })).format(Math.trunc(s / y), u);
60
+ }
61
+ };
62
+ }
63
+ const I = (e, r) => e.getFullYear() === r.getFullYear() && e.getMonth() === r.getMonth() && e.getDate() === r.getDate();
64
+ function B(e) {
65
+ const r = { ...H(e), ...e.formatters }, c = (a) => typeof a == "number" && Number.isFinite(a), o = () => M(e.locale(), e.intlLocale), d = (a) => {
66
+ const i = b(a);
67
+ return i ? r.time(i, e.locale()) : "";
68
+ }, l = (a, i) => {
69
+ const t = b(a);
70
+ return t ? i ? O(t, o(), i) : r.date(t, e.locale()) : "";
71
+ }, g = (a, { inSentence: i = !1, now: t = /* @__PURE__ */ new Date() } = {}) => {
72
+ const n = b(a);
73
+ if (!n || !e.translate) return l(a);
74
+ const m = new Date(t.getFullYear(), t.getMonth(), t.getDate() - 1), s = I(n, t) ? "core.activity.today" : I(n, m) ? "core.activity.yesterday" : null;
75
+ if (!s) return l(a);
76
+ const u = e.translate(s);
77
+ return i ? u.toLocaleLowerCase(o()) : u.charAt(0).toLocaleUpperCase(o()) + u.slice(1);
78
+ };
79
+ return {
80
+ get locale() {
81
+ return e.locale();
82
+ },
83
+ get intlLocale() {
84
+ return o();
85
+ },
86
+ date: l,
87
+ dateTime: (a) => {
88
+ const i = b(a);
89
+ return i ? r.dateTime(i, e.locale()) : "";
90
+ },
91
+ time: d,
92
+ number: (a, i) => c(a) ? r.number(a, e.locale(), i) : e.emptyNumber ?? "",
93
+ get currencySymbol() {
94
+ return e.currencySymbol ?? "";
95
+ },
96
+ money: (a, { currency: i, decimals: t, whole: n, symbol: m = !0 } = {}) => {
97
+ if (!c(a)) return "";
98
+ const s = a, u = n && Number.isInteger(s) ? 0 : t, y = u === void 0 ? void 0 : { minimumFractionDigits: u, maximumFractionDigits: u };
99
+ if (i && m) return r.money(s, i, e.locale(), y);
100
+ const f = r.number(s, e.locale(), y ?? { minimumFractionDigits: 2, maximumFractionDigits: 2 });
101
+ return m && !i && e.currencySymbol ? `${f} ${e.currencySymbol}` : f;
102
+ },
103
+ relative: (a, i = /* @__PURE__ */ new Date()) => {
104
+ const t = b(a);
105
+ return t ? r.relative(t, e.locale(), i) : "";
106
+ },
107
+ day: g,
108
+ dayTime: (a, i) => {
109
+ const t = g(a, i);
110
+ return t ? `${t} · ${d(a)}` : "";
111
+ }
112
+ };
113
+ }
114
+ const [_, P] = x("vue-core.formatting");
115
+ function V(e, r) {
116
+ e.provide(_, r);
117
+ }
118
+ export {
119
+ H as a,
120
+ B as c,
121
+ _ as f,
122
+ V as i,
123
+ b as t,
124
+ P as u
125
+ };
@@ -1,5 +1,5 @@
1
1
  import { effectScope as R, watch as g } from "vue";
2
- import { h as b } from "./platform-DtISOEt7.js";
2
+ import { h as b } from "./platform-ORzRR3Tw.js";
3
3
  const i = "redirect";
4
4
  function q(r) {
5
5
  const t = r.query[i], n = Array.isArray(t) ? t[0] : t;
@@ -1,4 +1,4 @@
1
- import { c as y } from "./current-B0lHKTWr.js";
1
+ import { c as y } from "./current-CslcEPXp.js";
2
2
  const E = [5, 8, 10, 15, 25, 50, 100], p = 25;
3
3
  function S(e) {
4
4
  const r = `defineCollection("${e.id}")`;
@@ -214,6 +214,9 @@ export type CoreMessages = {
214
214
  no_access: {
215
215
  title: string;
216
216
  body: string;
217
+ /** Shown before the address `RestrictedPanel` is given to write to. */
218
+ contact: string;
219
+ back: string;
217
220
  };
218
221
  shortcuts: {
219
222
  title: string;
@@ -398,7 +401,8 @@ export { localeMessages } from "./messages";
398
401
  export type { LocaleMessagesOptions, MessageLoader, MessageNamespace, Messages } from "./messages";
399
402
  export { createMessageRuntime } from "./runtime";
400
403
  export type { MessageFailure, MessageRuntime, MessageRuntimeOptions, MessageTarget } from "./runtime";
401
- export { useServerMessages } from "./serverMessages";
404
+ export { fieldMessageWith, useServerMessages } from "./serverMessages";
405
+ export type { ServerMessagesOptions } from "./serverMessages";
402
406
  export { appErrorDescriberKey, appFieldErrorDescriberKey, useDescribeError } from "./describeError";
403
407
  export type { AppErrorDescriber, AppFieldErrorDescriber, DescribeError, DescribeErrorOptions } from "./describeError";
404
408
  export { slavicPluralRule, slavicPluralRules, slovenianPluralRule } from "./plural";