@wssto2/vue-core 0.10.0 → 0.11.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 (58) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/ActionRow.vue_vue_type_script_setup_true_lang-DybAIOHS.js +64 -0
  3. package/dist/{Activity-CeAG0ZtJ.js → Activity-CdkJW68R.js} +2 -2
  4. package/dist/{Changes-B9-zpDxG.js → Changes-DxK_QfiB.js} +2 -2
  5. package/dist/{CollectionPage.vue_vue_type_script_setup_true_lang-Cn0YOWJF.js → CollectionPage.vue_vue_type_script_setup_true_lang-x0jyJ01f.js} +1 -1
  6. package/dist/{DataTable.vue_vue_type_script_setup_true_lang-BQRG8bpH.js → DataTable.vue_vue_type_script_setup_true_lang-C_ZytnW-.js} +1 -1
  7. package/dist/{DeadLetters-BP03yC4R.js → DeadLetters-DnA7LP1w.js} +2 -2
  8. package/dist/{General-BDmCJr3H.js → General-2matxl2Y.js} +23 -21
  9. package/dist/Highlight.vue_vue_type_script_setup_true_lang-DZGBmwcX.js +29 -0
  10. package/dist/{IncidentRecord-DEhl6AyA.js → IncidentRecord-Bt3G4HlX.js} +1 -1
  11. package/dist/{IncidentsList-COgRPdk3.js → IncidentsList-2iwgqp9J.js} +3 -3
  12. package/dist/{ProfilePage-BQCK2w8R.js → ProfilePage-CpuyDBAv.js} +21 -20
  13. package/dist/{ServiceAccountDialog.vue_vue_type_script_setup_true_lang-C0OIBrSp.js → ServiceAccountDialog.vue_vue_type_script_setup_true_lang-FJbWxME_.js} +2 -2
  14. package/dist/{ServiceAccountRecord-gtlhYaAz.js → ServiceAccountRecord-0-JF5lRx.js} +29 -29
  15. package/dist/{ServiceAccountsList-BM7GGcvw.js → ServiceAccountsList-DcsnOcf-.js} +6 -6
  16. package/dist/{Sessions-BCDJYuV2.js → Sessions-DgWhpk-i.js} +2 -2
  17. package/dist/{SettingsPage-DUhMsYBf.js → SettingsPage-BXPWATYU.js} +5 -4
  18. package/dist/{SignIn-4D7WohI8.js → SignIn-DPoUwHZd.js} +2 -2
  19. package/dist/{SignInPage-B6B-34GG.js → SignInPage-OyrVemro.js} +1 -1
  20. package/dist/{SignIns-CFoe4hpX.js → SignIns-BMDrZVVp.js} +6 -6
  21. package/dist/{UserRecord-Cd1TCpJZ.js → UserRecord-BW-gdCqi.js} +43 -43
  22. package/dist/{UsersList-GJU5-CTG.js → UsersList-B3ZF_1Dj.js} +25 -25
  23. package/dist/app/index.d.ts +1 -0
  24. package/dist/app/index.js +11 -10
  25. package/dist/app/languages.d.ts +8 -0
  26. package/dist/collection/Highlight.vue.d.ts +12 -0
  27. package/dist/collection/index.d.ts +1 -0
  28. package/dist/collection/index.js +18 -17
  29. package/dist/i18n/index.d.ts +1 -0
  30. package/dist/i18n/index.js +6 -4
  31. package/dist/i18n/serverMessages.d.ts +16 -0
  32. package/dist/identity/index.d.ts +2 -1
  33. package/dist/identity/index.js +7 -7
  34. package/dist/identity/users/context.d.ts +3 -0
  35. package/dist/identity/users/feature.d.ts +12 -1
  36. package/dist/identity/users/list.d.ts +12 -1
  37. package/dist/identity/users/personSections.d.ts +14 -5
  38. package/dist/incidents/index.js +1 -1
  39. package/dist/{index-CTkG-acm.js → index-ClJeyW3F.js} +2 -2
  40. package/dist/{index-pJ_eRg80.js → index-Cq9TuOqH.js} +441 -434
  41. package/dist/{index-DUs7WSz-.js → index-kEHY7hcG.js} +2 -2
  42. package/dist/index.d.ts +1 -1
  43. package/dist/index.js +1 -1
  44. package/dist/keepAlive-ClGnsIzT.js +55 -0
  45. package/dist/notifications/index.js +1 -1
  46. package/dist/rowLayout-BsKEzEME.js +650 -0
  47. package/dist/serverMessages-B6GHgi40.js +25 -0
  48. package/dist/shell/QuickSearchPalette.vue.d.ts +3 -3
  49. package/dist/shell/index.js +419 -427
  50. package/dist/shell/quickSearchControl.d.ts +8 -5
  51. package/dist/styles.css +1 -1
  52. package/package.json +1 -1
  53. package/dist/ActionRow.vue_vue_type_script_setup_true_lang-IpcP3Bjc.js +0 -87
  54. package/dist/highlight-DnYhLXnu.js +0 -9
  55. package/dist/identity/fieldMessages.d.ts +0 -15
  56. package/dist/identity/users/languages.d.ts +0 -4
  57. package/dist/keepAlive-z3IRFkQq.js +0 -46
  58. package/dist/rowLayout-Il4psyXN.js +0 -658
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.11.0 — 2026-10-17
4
+
5
+ The five gaps an application met adopting 0.10.0's users screens and quick search. go-core is unchanged (`v1.15.0`).
6
+
7
+ ### New
8
+ - **identity:** `PersonSection.after` (`general`, `signin`, `sessions`, `signins`, `changes` or `activity`, typed as `BuiltInPersonSection`) places an application's section right behind that built-in one, in its group (the section's own `groupKey` is replaced by the group's). Without it the section stays at the end. Another name is a start-up error that lists the valid ones.
9
+ - **identity:** `usersFeature({ collection })` is the one definition of the people list, used by the list page and by the previous / next of a person's record. Default `userList`. An application whose list filters by more than the library knows passes its own (`UsersCollection`), the one its `replace.list` page uses, and the record's pager then asks the server with those filters too.
10
+ - **i18n:** `useServerMessages` is exported from `@wssto2/vue-core/i18n` (moved from identity): `describeFieldError`, `failureMessage(kind, error)` and `sentence(error)` for any go-core refusal, in the app's `errors.<reason>` or the library's `core.errors.<reason>`.
11
+ - **app:** `useLanguages` is exported from `@wssto2/vue-core/app`: the application's locales as select options, each named in itself.
12
+ - **collection:** `<Highlight :text :search />`, the text with the words of the search in `<mark>`, over `highlightParts`. `RecordIdentity` and the quick-search palette use it, so the library has one highlight.
13
+
14
+ ### Changed
15
+ - **shell:** `quickSearch` `placeholder`, `hint` and `noneHint` are `MaybeRefOrGetter<string>`, read when the palette renders, so an application whose messages load lazily passes `() => t("…")`. A plain string still works.
16
+ - **shell:** the quick-search palette marks matched words with the look `RecordIdentity` uses (the warning tone), not the tint it had.
17
+
3
18
  ## 0.10.0 — 2026-10-16
4
19
 
5
20
  The last generic pieces an application kept to itself, and an identity whose users screens an application can shape. Needs go-core v1.15.0 (`goCore`, `src/modules` synced).
@@ -0,0 +1,64 @@
1
+ import { defineComponent as r, openBlock as o, createElementBlock as l, createElementVNode as s, toDisplayString as n, createCommentVNode as d, renderSlot as f, createBlock as u, unref as c, withCtx as p, normalizeClass as _, createVNode as x } from "vue";
2
+ import { g as b } from "./options-B48UiYsG.js";
3
+ import { _ as h } from "./Icon.vue_vue_type_script_lang-BhhsFYwp.js";
4
+ const k = { class: "flex flex-wrap items-end gap-3 px-row-inset" }, g = { class: "flex min-w-0 grow basis-56 flex-col gap-1" }, w = { class: "text-title font-semibold tracking-tight text-content-strong" }, y = {
5
+ key: 0,
6
+ class: "max-w-readable text-subheadline text-content-muted"
7
+ }, E = /* @__PURE__ */ r({
8
+ __name: "SectionIntro",
9
+ props: {
10
+ title: {},
11
+ description: {}
12
+ },
13
+ setup(e) {
14
+ return (i, t) => (o(), l("div", k, [
15
+ s("div", g, [
16
+ s("h2", w, n(e.title), 1),
17
+ e.description ? (o(), l("p", y, n(e.description), 1)) : d("", !0)
18
+ ]),
19
+ f(i.$slots, "actions")
20
+ ]));
21
+ }
22
+ }), $ = ["disabled"], v = { class: "flex min-w-0 flex-1 flex-col" }, C = {
23
+ key: 0,
24
+ class: "text-footnote text-content-muted"
25
+ }, R = /* @__PURE__ */ r({
26
+ __name: "ActionRow",
27
+ props: {
28
+ label: {},
29
+ sub: { default: void 0 },
30
+ tone: { default: "link" },
31
+ disabled: { type: Boolean, default: !1 }
32
+ },
33
+ emits: ["click"],
34
+ setup(e, { emit: i }) {
35
+ const t = e, m = i;
36
+ return (B, a) => (o(), u(c(b), { layout: "stacked" }, {
37
+ default: p(() => [
38
+ s("button", {
39
+ type: "button",
40
+ disabled: t.disabled,
41
+ class: "flex w-full items-center gap-3 py-0.5 text-left focus-visible:outline-2 focus-visible:outline-border-focus disabled:opacity-50",
42
+ onClick: a[0] || (a[0] = (S) => m("click"))
43
+ }, [
44
+ s("span", v, [
45
+ s("span", {
46
+ class: _(["text-body", t.tone === "critical" ? "text-content-destructive" : "text-content-link"])
47
+ }, n(t.label), 3),
48
+ t.sub ? (o(), l("span", C, n(t.sub), 1)) : d("", !0)
49
+ ]),
50
+ x(c(h), {
51
+ name: "arrowRightSLine",
52
+ size: 18,
53
+ class: "shrink-0 text-content-disabled"
54
+ })
55
+ ], 8, $)
56
+ ]),
57
+ _: 1
58
+ }));
59
+ }
60
+ });
61
+ export {
62
+ E as _,
63
+ R as a
64
+ };
@@ -7,13 +7,13 @@ import { u as G } from "./format-D8KUBmbS.js";
7
7
  import { _ as B } from "./DateField.vue_vue_type_script_setup_true_lang-CeNwBbJT.js";
8
8
  import { a as H } from "./FormGroup.vue_vue_type_script_setup_true_lang-D6jYfNjW.js";
9
9
  import { g as J } from "./options-B48UiYsG.js";
10
- import { P as M, g as Q, i as W, m as X } from "./index-pJ_eRg80.js";
10
+ import { P as M, f as Q, i as W, l as X } from "./index-Cq9TuOqH.js";
11
11
  import { u as Y } from "./platform-BQOX_Ntw.js";
12
12
  import { b as Z } from "./routeResource-DlTsGTg_.js";
13
13
  import { _ as tt } from "./AsyncSection.vue_vue_type_script_setup_true_lang-DGzQ-Snp.js";
14
14
  import { _ as et } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
15
15
  import { u as at } from "./useLoad-M7V-AVwR.js";
16
- import { _ as st } from "./ActionRow.vue_vue_type_script_setup_true_lang-IpcP3Bjc.js";
16
+ import { _ as st } from "./ActionRow.vue_vue_type_script_setup_true_lang-DybAIOHS.js";
17
17
  const ot = {
18
18
  class: "flex min-w-0 flex-col gap-group-gap",
19
19
  "data-person-activity": ""
@@ -1,11 +1,11 @@
1
1
  import { defineComponent as h, ref as m, watch as p, openBlock as l, createElementBlock as d, createVNode as c, unref as t, withCtx as y, toDisplayString as x, createBlock as f, createCommentVNode as C } from "vue";
2
2
  import { useI18n as k } from "vue-i18n";
3
- import { P as $, g as b, i as V, n as R, m as E } from "./index-pJ_eRg80.js";
3
+ import { P as $, f as b, i as V, m as R, l as E } from "./index-Cq9TuOqH.js";
4
4
  import { u as N } from "./platform-BQOX_Ntw.js";
5
5
  import { b as B } from "./routeResource-DlTsGTg_.js";
6
6
  import { _ as P } from "./AsyncSection.vue_vue_type_script_setup_true_lang-DGzQ-Snp.js";
7
7
  import { u as S } from "./useLoad-M7V-AVwR.js";
8
- import { _ as U } from "./ActionRow.vue_vue_type_script_setup_true_lang-IpcP3Bjc.js";
8
+ import { _ as U } from "./ActionRow.vue_vue_type_script_setup_true_lang-DybAIOHS.js";
9
9
  import { _ as I } from "./ViewTabs.vue_vue_type_script_setup_true_lang-BjdDXE3T.js";
10
10
  const W = {
11
11
  class: "flex min-w-0 flex-col gap-group-gap",
@@ -11,7 +11,7 @@ import { u as Pe } from "./format-D8KUBmbS.js";
11
11
  import { _ as I } from "./Icon.vue_vue_type_script_lang-BhhsFYwp.js";
12
12
  import { _ as Ne } from "./Banner.vue_vue_type_script_setup_true_lang-sv0phngk.js";
13
13
  import { _ as Ae } from "./EmptyState.vue_vue_type_script_setup_true_lang-DbZiO2RF.js";
14
- import { u as bt, _ as gt } from "./rowLayout-Il4psyXN.js";
14
+ import { u as bt, _ as gt } from "./rowLayout-BsKEzEME.js";
15
15
  import { u as Ee } from "./shortcut-DUR6yPWA.js";
16
16
  import { _ as Ye } from "./Menu.vue_vue_type_script_setup_true_lang-wKc9gdCn.js";
17
17
  import { _ as Ze } from "./Popover.vue_vue_type_script_setup_true_lang-C20Hf3Hl.js";
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as d, computed as u, useSlots as p, openBlock as w, createElementBlock as y, createVNode as f, unref as k, createSlots as b, renderList as m, withCtx as h, renderSlot as v, normalizeProps as _, guardReactiveProps as g } from "vue";
2
- import { u as R, _ as L } from "./rowLayout-Il4psyXN.js";
2
+ import { u as R, _ as L } from "./rowLayout-BsKEzEME.js";
3
3
  const F = ["aria-busy"], V = /* @__PURE__ */ d({
4
4
  __name: "DataTable",
5
5
  props: {
@@ -1,10 +1,10 @@
1
1
  import { defineComponent as B, useTemplateRef as C, computed as y, ref as v, openBlock as D, createBlock as z, unref as r, withCtx as m, createVNode as F, createElementVNode as b, normalizeClass as $, toDisplayString as h } from "vue";
2
2
  import { useI18n as q } from "vue-i18n";
3
3
  import { a as k } from "./error-CD7x0Jrz.js";
4
- import { u as V, _ as N } from "./CollectionPage.vue_vue_type_script_setup_true_lang-Cn0YOWJF.js";
4
+ import { u as V, _ as N } from "./CollectionPage.vue_vue_type_script_setup_true_lang-x0jyJ01f.js";
5
5
  import { u as P } from "./describeError-B-NMa--w.js";
6
6
  import { u as I } from "./format-D8KUBmbS.js";
7
- import { e as a, R as O } from "./index-CTkG-acm.js";
7
+ import { e as a, R as O } from "./index-ClJeyW3F.js";
8
8
  import { _ as W } from "./AlertDialog.vue_vue_type_script_setup_true_lang-CrFhR9rJ.js";
9
9
  import { t as i } from "./toast-CqSDTWRX.js";
10
10
  import { u as Y } from "./useLoad-M7V-AVwR.js";
@@ -1,4 +1,4 @@
1
- import { defineComponent as R, computed as N, openBlock as i, createElementBlock as k, createVNode as o, unref as e, withCtx as u, mergeProps as c, createBlock as v, createCommentVNode as m, createElementVNode as p, toDisplayString as b, createTextVNode as S } from "vue";
1
+ import { defineComponent as R, computed as N, openBlock as i, createElementBlock as k, createVNode as o, unref as e, withCtx as u, mergeProps as c, createBlock as v, createCommentVNode as d, createElementVNode as p, toDisplayString as b, createTextVNode as S } from "vue";
2
2
  import { useI18n as V } from "vue-i18n";
3
3
  import { RouterLink as B } from "vue-router";
4
4
  import { u as E } from "./format-D8KUBmbS.js";
@@ -8,11 +8,13 @@ import { _ as F } from "./FormView.vue_vue_type_script_setup_true_lang-DvbPEiNQ.
8
8
  import { _ as L } from "./SelectField.vue_vue_type_script_setup_true_lang-BZwdANL3.js";
9
9
  import { _ as f } from "./TextField.vue_vue_type_script_setup_true_lang-CWIeeZRE.js";
10
10
  import { u as A } from "./useSaveChrome-7huA3FzR.js";
11
- import { P as D, e as G, f as I, i as M } from "./index-pJ_eRg80.js";
12
- import { t as O } from "./toast-CqSDTWRX.js";
13
- import { u as U } from "./platform-BQOX_Ntw.js";
14
- import { b as j } from "./routeResource-DlTsGTg_.js";
15
- import { u as z, _ as H, a as $ } from "./ActionRow.vue_vue_type_script_setup_true_lang-IpcP3Bjc.js";
11
+ import { P as D, e as G, i as I } from "./index-Cq9TuOqH.js";
12
+ import { t as M } from "./toast-CqSDTWRX.js";
13
+ import { u as O } from "./platform-BQOX_Ntw.js";
14
+ import { b as U } from "./routeResource-DlTsGTg_.js";
15
+ import { u as j } from "./serverMessages-B6GHgi40.js";
16
+ import { _ as z, a as $ } from "./ActionRow.vue_vue_type_script_setup_true_lang-DybAIOHS.js";
17
+ import { u as H } from "./keepAlive-ClGnsIzT.js";
16
18
  const J = {
17
19
  class: "flex min-w-0 max-w-200 flex-col gap-group-gap",
18
20
  "data-person-general": ""
@@ -20,30 +22,30 @@ const J = {
20
22
  key: 1,
21
23
  class: "flex flex-wrap items-center gap-x-1.5 px-row-inset text-footnote text-content-muted",
22
24
  "data-person-audit": ""
23
- }, de = /* @__PURE__ */ R({
25
+ }, pe = /* @__PURE__ */ R({
24
26
  __name: "General",
25
27
  setup(Q) {
26
- const { t: a } = V(), { http: q } = U(), w = E(), g = j(D), n = G(), C = I(), x = (t) => t === null || t.trim() === "", P = {
28
+ const { t: a } = V(), { http: q } = O(), w = E(), g = U(D), n = G(), C = H(), x = (t) => t === null || t.trim() === "", P = {
27
29
  safeParse(t) {
28
- const s = t, d = ["login", "name", "email", "locale"].filter((_) => x(s[_])).map((_) => ({ path: [_], message: a("core.account.validation.required") }));
29
- return d.length > 0 ? { success: !1, error: { issues: d } } : { success: !0, data: { ...s, locale: s.locale ?? "", phone: x(s.phone) ? void 0 : s.phone } };
30
+ const s = t, m = ["login", "name", "email", "locale"].filter((_) => x(s[_])).map((_) => ({ path: [_], message: a("core.account.validation.required") }));
31
+ return m.length > 0 ? { success: !1, error: { issues: m } } : { success: !0, data: { ...s, locale: s.locale ?? "", phone: x(s.phone) ? void 0 : s.phone } };
30
32
  }
31
33
  }, r = T({
32
- ...z(),
34
+ ...j(),
33
35
  source: g,
34
36
  defaults: () => ({ login: "", name: "", email: "", phone: "", locale: null }),
35
37
  validator: P,
36
38
  toValues: (t) => ({ login: t.login, name: t.name, email: t.email, phone: t.phone, locale: t.locale }),
37
- save: async (t, s) => (await q.request(M.usersUpdate, { id: s.id, ...t })).data
39
+ save: async (t, s) => (await q.request(I.usersUpdate, { id: s.id, ...t })).data
38
40
  });
39
41
  async function y() {
40
42
  const t = await r.save();
41
- (t.status === "saved" || t.status === "saved-refresh-failed") && O.success(a("core.users.general.saved"));
43
+ (t.status === "saved" || t.status === "saved-refresh-failed") && M.success(a("core.users.general.saved"));
42
44
  }
43
45
  A({ form: r, allowed: () => n.can.manage, ready: () => g.data.value !== null, save: y, cancel: () => r.reset() });
44
46
  const l = N(() => g.data.value);
45
47
  return (t, s) => (i(), k("div", J, [
46
- o(H, {
48
+ o(z, {
47
49
  title: e(a)("core.users.sections.general"),
48
50
  description: e(a)("core.users.intro.general")
49
51
  }, null, 8, ["title", "description"]),
@@ -107,18 +109,18 @@ const J = {
107
109
  sub: e(a)("core.users.deactivate.row_sub"),
108
110
  tone: "critical",
109
111
  "data-deactivate-row": "",
110
- onClick: s[0] || (s[0] = (d) => e(n).deactivate())
111
- }, null, 8, ["label", "sub"])) : m("", !0),
112
+ onClick: s[0] || (s[0] = (m) => e(n).deactivate())
113
+ }, null, 8, ["label", "sub"])) : d("", !0),
112
114
  e(n).can.activate ? (i(), v($, {
113
115
  key: 1,
114
116
  label: e(a)("core.users.actions.activate"),
115
117
  sub: e(a)("core.users.activate.row_sub"),
116
118
  "data-activate-row": "",
117
- onClick: s[1] || (s[1] = (d) => e(n).activate())
118
- }, null, 8, ["label", "sub"])) : m("", !0)
119
+ onClick: s[1] || (s[1] = (m) => e(n).activate())
120
+ }, null, 8, ["label", "sub"])) : d("", !0)
119
121
  ]),
120
122
  _: 1
121
- })) : m("", !0),
123
+ })) : d("", !0),
122
124
  l.value ? (i(), k("p", K, [
123
125
  p("span", null, b(e(a)("core.users.general.created", { when: e(w).dateTime(l.value.created_at) })), 1),
124
126
  s[2] || (s[2] = p("span", { "aria-hidden": "true" }, "·", -1)),
@@ -133,10 +135,10 @@ const J = {
133
135
  ]),
134
136
  _: 1
135
137
  }, 8, ["to"])
136
- ])) : m("", !0)
138
+ ])) : d("", !0)
137
139
  ]));
138
140
  }
139
141
  });
140
142
  export {
141
- de as default
143
+ pe as default
142
144
  };
@@ -0,0 +1,29 @@
1
+ import { defineComponent as p, computed as u, openBlock as a, createElementBlock as o, Fragment as c, renderList as g, toDisplayString as l, createTextVNode as m } from "vue";
2
+ function f(n, r) {
3
+ const s = (r ?? "").split(/\s+/).filter((t) => t !== "");
4
+ if (s.length === 0 || n === "") return [{ text: n, match: !1 }];
5
+ const i = new RegExp(`(${s.sort((t, e) => e.length - t.length).map((t) => t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).join("|")})`, "giu");
6
+ return n.split(i).flatMap((t, e) => t === "" ? [] : [{ text: t, match: e % 2 === 1 }]);
7
+ }
8
+ const _ = {
9
+ key: 0,
10
+ class: "rounded-sm bg-status-warning-surface text-status-warning-content"
11
+ }, x = /* @__PURE__ */ p({
12
+ __name: "Highlight",
13
+ props: {
14
+ text: {},
15
+ search: {}
16
+ },
17
+ setup(n) {
18
+ const r = n, s = u(() => f(r.text, r.search));
19
+ return (i, t) => (a(!0), o(c, null, g(s.value, (e, h) => (a(), o(c, { key: h }, [
20
+ e.match ? (a(), o("mark", _, l(e.text), 1)) : (a(), o(c, { key: 1 }, [
21
+ m(l(e.text), 1)
22
+ ], 64))
23
+ ], 64))), 128));
24
+ }
25
+ });
26
+ export {
27
+ x as _,
28
+ f as h
29
+ };
@@ -23,7 +23,7 @@ import { a as be } from "./routeResource-DlTsGTg_.js";
23
23
  import { a as ve } from "./ResourcePage.vue_vue_type_script_setup_true_lang-DljhsTU4.js";
24
24
  import { _ as N } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
25
25
  import { _ as q } from "./EmptyState.vue_vue_type_script_setup_true_lang-DbZiO2RF.js";
26
- import { u as xe, i as he, a as ye, M as ge, U as ke, m as we, f as $e, g as z, r as Se, S as Te, e as D, c as L, d as Ee, b as Ie } from "./index-DUs7WSz-.js";
26
+ import { u as xe, i as he, a as ye, M as ge, U as ke, m as we, f as $e, g as z, r as Se, S as Te, e as D, c as L, d as Ee, b as Ie } from "./index-kEHY7hcG.js";
27
27
  import { _ as Ne } from "./Avatar.vue_vue_type_script_setup_true_lang-BPj_fkJR.js";
28
28
  const De = { class: "flex min-w-0 items-center gap-2" }, Le = { class: "flex min-w-0 flex-col items-start" }, Ce = { class: "max-w-full truncate text-xs font-semibold text-content-strong" }, Ae = {
29
29
  key: 0,
@@ -1,15 +1,15 @@
1
1
  import { defineComponent as $, useTemplateRef as D, computed as d, openBlock as n, createBlock as m, unref as e, withCtx as i, createVNode as c, createElementBlock as p, toDisplayString as a, createElementVNode as F, createTextVNode as f, createCommentVNode as O } from "vue";
2
2
  import { useI18n as q } from "vue-i18n";
3
3
  import { useRouter as U } from "vue-router";
4
- import { u as z, _ as P } from "./CollectionPage.vue_vue_type_script_setup_true_lang-Cn0YOWJF.js";
5
- import { a as y } from "./rowLayout-Il4psyXN.js";
4
+ import { u as z, _ as P } from "./CollectionPage.vue_vue_type_script_setup_true_lang-x0jyJ01f.js";
5
+ import { a as y } from "./rowLayout-BsKEzEME.js";
6
6
  import { u as Y } from "./datePresets-DB13HHHd.js";
7
7
  import { _ as j } from "./Timestamp.vue_vue_type_script_setup_true_lang-ClZAAUMd.js";
8
8
  import { _ as g } from "./IconTile.vue_vue_type_script_setup_true_lang-BmxCuUZ9.js";
9
9
  import { u as K } from "./format-D8KUBmbS.js";
10
10
  import { u as G } from "./platform-BQOX_Ntw.js";
11
11
  import { _ as k } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
12
- import { i as v, a as H, C as J, _ as M, S as T, b as Q, c as S, d as W, e as E } from "./index-DUs7WSz-.js";
12
+ import { i as v, a as H, C as J, _ as M, S as T, b as Q, c as S, d as W, e as E } from "./index-kEHY7hcG.js";
13
13
  const X = {
14
14
  key: 1,
15
15
  class: "flex min-w-0 items-center gap-3"
@@ -1,19 +1,20 @@
1
- import { defineComponent as V, openBlock as m, createBlock as U, unref as e, withCtx as _, createVNode as n, mergeProps as E, createElementVNode as z, toDisplayString as q, watch as J, createElementBlock as w, Fragment as A, useModel as ve, useId as _e, useTemplateRef as Q, ref as x, onMounted as ge, onBeforeUnmount as ye, computed as D, withModifiers as be, createCommentVNode as H, createTextVNode as O, mergeModels as le, renderList as we, resolveDynamicComponent as re } from "vue";
1
+ import { defineComponent as V, openBlock as m, createBlock as U, unref as e, withCtx as _, createVNode as n, mergeProps as E, createElementVNode as z, toDisplayString as q, watch as J, createElementBlock as w, Fragment as A, useModel as ve, useId as _e, useTemplateRef as Q, ref as x, onMounted as ge, onBeforeUnmount as ye, computed as D, withModifiers as be, createCommentVNode as H, createTextVNode as j, mergeModels as le, renderList as we, resolveDynamicComponent as re } from "vue";
2
2
  import { useI18n as P } from "vue-i18n";
3
3
  import { _ as he } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-D5i77H6S.js";
4
4
  import { u as F } from "./platform-BQOX_Ntw.js";
5
5
  import { _ as ee } from "./AsyncSection.vue_vue_type_script_setup_true_lang-DGzQ-Snp.js";
6
6
  import { u as te } from "./useLoad-M7V-AVwR.js";
7
- import { i as S, h as j, k as xe, v as $e, m as ke, g as qe } from "./index-pJ_eRg80.js";
7
+ import { i as S, g as O, j as xe, t as $e, l as ke, f as qe } from "./index-Cq9TuOqH.js";
8
8
  import { a as K, u as ne, p as Ce } from "./FormGroup.vue_vue_type_script_setup_true_lang-D6jYfNjW.js";
9
9
  import { _ as de } from "./FormView.vue_vue_type_script_setup_true_lang-DvbPEiNQ.js";
10
10
  import { u as Se, _ as Ee, a as Ve, b as Pe } from "./useGroupSheet-CPjHydQV.js";
11
11
  import { t as C } from "./toast-CqSDTWRX.js";
12
- import { u as T, a as W } from "./ActionRow.vue_vue_type_script_setup_true_lang-IpcP3Bjc.js";
12
+ import { u as T } from "./serverMessages-B6GHgi40.js";
13
13
  import { g as Z } from "./options-B48UiYsG.js";
14
14
  import { _ as I } from "./TextField.vue_vue_type_script_setup_true_lang-CWIeeZRE.js";
15
15
  import { _ as Ne } from "./IconTile.vue_vue_type_script_setup_true_lang-BmxCuUZ9.js";
16
16
  import { u as ce } from "./format-D8KUBmbS.js";
17
+ import { a as W } from "./ActionRow.vue_vue_type_script_setup_true_lang-DybAIOHS.js";
17
18
  import { a as Y } from "./error-CD7x0Jrz.js";
18
19
  import { a as Ae } from "./leaveGuard-Cc8yeLxM.js";
19
20
  import { _ as Me } from "./Modal.vue_vue_type_script_setup_true_lang-DDS0iEnn.js";
@@ -127,11 +128,11 @@ const Fe = { class: "font-mono" }, ie = /* @__PURE__ */ V({
127
128
  }), Be = {
128
129
  key: 0,
129
130
  class: "max-w-sm text-body text-content-muted"
130
- }, Le = ["id"], Oe = {
131
+ }, Le = ["id"], je = {
131
132
  key: 2,
132
133
  class: "mt-3 text-footnote text-content-muted",
133
134
  "data-verify-expires": ""
134
- }, je = { class: "mt-6 flex w-full flex-col gap-2" }, ze = /* @__PURE__ */ V({
135
+ }, Oe = { class: "mt-6 flex w-full flex-col gap-2" }, ze = /* @__PURE__ */ V({
135
136
  __name: "VerifyCode",
136
137
  props: /* @__PURE__ */ le({
137
138
  description: { default: void 0 },
@@ -189,8 +190,8 @@ const Fe = { class: "font-mono" }, ie = /* @__PURE__ */ V({
189
190
  role: "alert",
190
191
  class: "mt-3 text-footnote text-content-destructive",
191
192
  "data-verify-error": ""
192
- }, q(t.error), 9, Le)) : y.value ? (m(), w("p", Oe, q(e(s)("core.profile.email.valid_until", { time: y.value })), 1)) : H("", !0),
193
- z("div", je, [
193
+ }, q(t.error), 9, Le)) : y.value ? (m(), w("p", je, q(e(s)("core.profile.email.valid_until", { time: y.value })), 1)) : H("", !0),
194
+ z("div", Oe, [
194
195
  t.expired ? H("", !0) : (m(), U(e(X), {
195
196
  key: 0,
196
197
  type: "submit",
@@ -202,7 +203,7 @@ const Fe = { class: "font-mono" }, ie = /* @__PURE__ */ V({
202
203
  "data-verify-submit": ""
203
204
  }, {
204
205
  default: _(() => [
205
- O(q(e(s)("core.profile.email.verify")), 1)
206
+ j(q(e(s)("core.profile.email.verify")), 1)
206
207
  ]),
207
208
  _: 1
208
209
  }, 8, ["disabled", "processing"])),
@@ -217,9 +218,9 @@ const Fe = { class: "font-mono" }, ie = /* @__PURE__ */ V({
217
218
  }, {
218
219
  default: _(() => [
219
220
  u.value > 0 ? (m(), w(A, { key: 0 }, [
220
- O(q(e(s)("core.profile.email.resend_in", { time: g.value })), 1)
221
+ j(q(e(s)("core.profile.email.resend_in", { time: g.value })), 1)
221
222
  ], 64)) : (m(), w(A, { key: 1 }, [
222
- O(q(t.expired ? e(s)("core.profile.email.request_new") : e(s)("core.profile.email.resend")), 1)
223
+ j(q(t.expired ? e(s)("core.profile.email.request_new") : e(s)("core.profile.email.resend")), 1)
223
224
  ], 64))
224
225
  ]),
225
226
  _: 1
@@ -232,7 +233,7 @@ const Fe = { class: "font-mono" }, ie = /* @__PURE__ */ V({
232
233
  onClick: N[1] || (N[1] = (R) => c("cancel"))
233
234
  }, {
234
235
  default: _(() => [
235
- O(q(e(s)("core.profile.email.cancel_change")), 1)
236
+ j(q(e(s)("core.profile.email.cancel_change")), 1)
236
237
  ]),
237
238
  _: 1
238
239
  }, 8, ["disabled"])
@@ -269,7 +270,7 @@ const Fe = { class: "font-mono" }, ie = /* @__PURE__ */ V({
269
270
  const v = (await c.request(S.profileConfirmEmail, { code: f })).data;
270
271
  t("changed", v), C.success(a("core.profile.email.changed")), o.value?.dismiss();
271
272
  } catch (v) {
272
- if (j(v)) return;
273
+ if (O(v)) return;
273
274
  if (Y(v) && v.fields.email?.[0]) {
274
275
  i.value = null, t("pending", null), d.value = "request", u.errors.set({ email: [s.describeFieldError(v.fields.email[0])] });
275
276
  return;
@@ -286,7 +287,7 @@ const Fe = { class: "font-mono" }, ie = /* @__PURE__ */ V({
286
287
  try {
287
288
  i.value = (await c.request(S.profileResendEmail)).data, R(), t("pending", i.value), C.success(a("core.profile.email.code_sent", { email: i.value.email }));
288
289
  } catch (f) {
289
- if (j(f)) return;
290
+ if (O(f)) return;
290
291
  if (Y(f) && f.code === "identity.code.no_pending") {
291
292
  i.value = null, t("pending", null), d.value = "request", C.error(s.sentence(f, a("core.profile.email.resend_failed")));
292
293
  return;
@@ -303,7 +304,7 @@ const Fe = { class: "font-mono" }, ie = /* @__PURE__ */ V({
303
304
  try {
304
305
  await c.request(S.profileCancelEmail), i.value = null, t("cancelled"), C.success(a("core.profile.email.cancelled")), o.value?.dismiss();
305
306
  } catch (f) {
306
- j(f) || C.error(s.sentence(f, a("core.profile.email.cancel_failed")));
307
+ O(f) || C.error(s.sentence(f, a("core.profile.email.cancel_failed")));
307
308
  } finally {
308
309
  k.value = !1;
309
310
  }
@@ -378,7 +379,7 @@ const Fe = { class: "font-mono" }, ie = /* @__PURE__ */ V({
378
379
  try {
379
380
  await c.request(S.profileCancelEmail), C.success(a("core.profile.email.cancelled")), b(null);
380
381
  } catch (g) {
381
- j(g) || C.error(o.sentence(g, a("core.profile.email.cancel_failed")));
382
+ O(g) || C.error(o.sentence(g, a("core.profile.email.cancel_failed")));
382
383
  } finally {
383
384
  i.value = !1;
384
385
  }
@@ -396,7 +397,7 @@ const Fe = { class: "font-mono" }, ie = /* @__PURE__ */ V({
396
397
  "data-profile-email-current": ""
397
398
  }, {
398
399
  default: _(() => [
399
- O(q(p.profile.email), 1)
400
+ j(q(p.profile.email), 1)
400
401
  ]),
401
402
  _: 1
402
403
  }, 8, ["label"]),
@@ -519,7 +520,7 @@ const Fe = { class: "font-mono" }, ie = /* @__PURE__ */ V({
519
520
  onClick: o[1] || (o[1] = (d) => t.value = !t.value)
520
521
  }), {
521
522
  default: _(() => [
522
- O(q(t.value ? e(l)("core.profile.password.hide") : e(l)("core.profile.password.show")), 1)
523
+ j(q(t.value ? e(l)("core.profile.password.hide") : e(l)("core.profile.password.show")), 1)
523
524
  ]),
524
525
  _: 1
525
526
  }, 16, ["icon"])
@@ -551,7 +552,7 @@ const Ze = { "data-profile-sessions": "" }, et = /* @__PURE__ */ V({
551
552
  try {
552
553
  await p.request(S.profileRevokeSession, { session_id: i.id }), C.success(l("core.account.sessions.ended"));
553
554
  } catch (r) {
554
- j(r) || C.error(t.sentence(r, l("core.account.sessions.end_failed")));
555
+ O(r) || C.error(t.sentence(r, l("core.account.sessions.end_failed")));
555
556
  }
556
557
  await a.reload();
557
558
  }
@@ -632,7 +633,7 @@ const Ze = { "data-profile-sessions": "" }, et = /* @__PURE__ */ V({
632
633
  }, 8, ["state"])
633
634
  ]));
634
635
  }
635
- }), st = { class: "flex min-w-0 flex-col gap-group-gap" }, ot = ["data-profile-section"], Et = /* @__PURE__ */ V({
636
+ }), st = { class: "flex min-w-0 flex-col gap-group-gap" }, ot = ["data-profile-section"], Vt = /* @__PURE__ */ V({
636
637
  __name: "ProfilePage",
637
638
  setup(h) {
638
639
  const { t: l } = P(), { http: p, session: t } = F(), { profileSections: a } = qe(), c = te(async ({ signal: r }) => (await p.request(S.profileShow, void 0, { signal: r })).data), s = { details: Ge, email: Xe, password: Ke, sessions: et, signins: at }, o = (r) => r.kind === "panel" ? r.id : `section:${r.section.id}`, d = (r) => r.kind === "section" || ["details", "email"].includes(r.id);
@@ -680,5 +681,5 @@ const Ze = { "data-profile-sessions": "" }, et = /* @__PURE__ */ V({
680
681
  }
681
682
  });
682
683
  export {
683
- Et as default
684
+ Vt as default
684
685
  };
@@ -9,10 +9,10 @@ import { _ as F } from "./useCommand-Ch_nx1AQ.js";
9
9
  import { u as H } from "./useRecordDialog-DdkauXnU.js";
10
10
  import { t as J } from "./toast-CqSDTWRX.js";
11
11
  import { u as C } from "./platform-BQOX_Ntw.js";
12
- import { i as Q, o as W, p as X } from "./index-pJ_eRg80.js";
12
+ import { i as Q, n as W, o as X } from "./index-Cq9TuOqH.js";
13
13
  import { r as Y } from "./http-Dm0uXY9O.js";
14
14
  import { s as l } from "./routes-Beyr5NQo.js";
15
- import { u as ee } from "./ActionRow.vue_vue_type_script_setup_true_lang-IpcP3Bjc.js";
15
+ import { u as ee } from "./serverMessages-B6GHgi40.js";
16
16
  const y = (o) => ({ headers: { "Idempotency-Key": o } }), S = 500;
17
17
  function ae(o) {
18
18
  return {