@wssto2/vue-core 0.7.0 → 0.8.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 (37) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/{Activity-CW2TOQAY.js → Activity-Cm1dlM2b.js} +1 -1
  3. package/dist/{Changes-BCaVkeZg.js → Changes-fN0KMYbW.js} +1 -1
  4. package/dist/{CollectionPage.vue_vue_type_script_setup_true_lang-BmXnfM5f.js → CollectionPage.vue_vue_type_script_setup_true_lang--onFdKOB.js} +1 -1
  5. package/dist/{DataTable.vue_vue_type_script_setup_true_lang-DRWrCRLr.js → DataTable.vue_vue_type_script_setup_true_lang-CTukf2B2.js} +1 -1
  6. package/dist/{DeadLetters-DUM_bsL-.js → DeadLetters-BslDh93e.js} +2 -2
  7. package/dist/{General-Dsh0TJ5w.js → General-DJ53Egpp.js} +1 -1
  8. package/dist/{IncidentRecord-C9zrjNrp.js → IncidentRecord-DQTnYQEe.js} +1 -1
  9. package/dist/{IncidentsList-ClQOjd5c.js → IncidentsList-C3yUnwwY.js} +13 -13
  10. package/dist/{ProfilePage-CJIztbx3.js → ProfilePage-DxALOfzC.js} +1 -1
  11. package/dist/{ServiceAccountDialog.vue_vue_type_script_setup_true_lang-D2Xj5mr7.js → ServiceAccountDialog.vue_vue_type_script_setup_true_lang-en2w_pAJ.js} +1 -1
  12. package/dist/{ServiceAccountRecord-Ct3TrSqZ.js → ServiceAccountRecord-B_amE8fL.js} +2 -2
  13. package/dist/{ServiceAccountsList-CaXEp73j.js → ServiceAccountsList-CoDKG_15.js} +2 -2
  14. package/dist/{Sessions-Bg4Zk9Gf.js → Sessions-BrAEXAMA.js} +1 -1
  15. package/dist/{SettingsPage-Brq9U4tJ.js → SettingsPage-Cje1X0ix.js} +1 -1
  16. package/dist/{SignIn-DB5LRNlB.js → SignIn-CbWgDlFb.js} +1 -1
  17. package/dist/{SignInPage-Ts-iTaC1.js → SignInPage-DmHdrZR-.js} +1 -1
  18. package/dist/{SignIns-bCvvmCHF.js → SignIns-D5BRb9Sr.js} +2 -2
  19. package/dist/{UserRecord-DgK9FsvV.js → UserRecord-rIeTkocJ.js} +2 -2
  20. package/dist/{UsersList-Due2ZkbO.js → UsersList-CiPeerC7.js} +3 -3
  21. package/dist/collection/index.d.ts +1 -1
  22. package/dist/collection/index.js +81 -60
  23. package/dist/collection/savedViews.d.ts +12 -2
  24. package/dist/identity/index.js +1 -1
  25. package/dist/incidents/index.js +1 -1
  26. package/dist/{index-i-cTTVxo.js → index-BQg5X6iK.js} +2 -2
  27. package/dist/{index-CXTJ_1NV.js → index-B_lzrZot.js} +12 -12
  28. package/dist/{index-D5_GAqjA.js → index-Cgu6Ntok.js} +2 -2
  29. package/dist/index.d.ts +1 -1
  30. package/dist/index.js +1 -1
  31. package/dist/modules/savedview/entities.d.ts +7 -0
  32. package/dist/modules/savedview/routes.d.ts +13 -0
  33. package/dist/modules/savedview/schemas.d.ts +11 -0
  34. package/dist/notifications/index.js +1 -1
  35. package/dist/{rowLayout-Cz-K7jeo.js → rowLayout-XlTcD4de.js} +2 -2
  36. package/dist/{status-DZ4eSnAS.js → status-BV5Ae4K4.js} +1 -1
  37. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.8.0 — 2026-10-15
4
+
5
+ Saved views over go-core's `savedview` module, for go-core v1.12.0. The `SavedViews` seam gets its server adapter, so an application no longer writes its own.
6
+
7
+ ### Requires
8
+ - **go-core `v1.12.0`**: the `savedview` module (`savedview.Install`, `GET | POST /v1/saved-views` and `DELETE /v1/saved-views/:id`, a person's views per list, 20 per list). `src/modules` is regenerated and gains `savedview/`; the other modules change only in their version header. **`vue` 3.5.19 or later**, unchanged.
9
+
10
+ ### New
11
+ - **`serverSavedViews(http)`** from `/collection`: a `SavedViews` over the generated `savedview` routes. Pass it as `useCollection(def, { savedViews: serverSavedViews(usePlatform().http) })`; lists stay opt-in.
12
+ - `list` passes the library's abort signal; `save` sends the state as a JSON string and returns the view with its state as the object it was saved as; `remove` takes the id.
13
+ - The state is stored as the library wrote it, with its `version`. A view that carries none is not given one: `useCollection` skips it like a view of another `stateVersion`.
14
+ - The server's refusals (400 at the cap, 404 for another person's view) reach the caller as `ApiError`.
15
+
16
+ ### Docs
17
+ - The `SavedViews` doc comment names the adapter (it said go-core had no endpoint); the [list page](docs/recipes/list-page.md) recipe shows how a list opts in.
18
+
3
19
  ## 0.7.0 — 2026-10-15
4
20
 
5
21
  The incident screens and the reporter of the browser's own errors, for go-core v1.11.0. ARV's own screens (list, incident, report dialog) move into the library, on the generated `incident` module types.
@@ -6,7 +6,7 @@ import { u as O } from "./format-D8X4zsx6.js";
6
6
  import { _ as U } from "./DateField.vue_vue_type_script_setup_true_lang-DmYp54mq.js";
7
7
  import { _ as T } from "./FormGroup.vue_vue_type_script_setup_true_lang-BTADNpwB.js";
8
8
  import { g as z } from "./options-QuOkMKVZ.js";
9
- import { P as G, c as H, i as J } from "./index-CXTJ_1NV.js";
9
+ import { P as G, c as H, i as J } from "./index-B_lzrZot.js";
10
10
  import { u as K } from "./platform-Dr4iY3b8.js";
11
11
  import { b as M } from "./routeResource-CcYA75T2.js";
12
12
  import { _ as Q } from "./AsyncSection.vue_vue_type_script_setup_true_lang-GxAsImnO.js";
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as k, computed as N, openBlock as n, createBlock as u, unref as a, withCtx as g, createElementBlock as p, Fragment as _, renderList as $, createElementVNode as i, toDisplayString as h, createCommentVNode as C, ref as x, watch as b, createVNode as y } from "vue";
2
2
  import { useI18n as E } from "vue-i18n";
3
- import { P as V, i as R } from "./index-CXTJ_1NV.js";
3
+ import { P as V, i as R } from "./index-B_lzrZot.js";
4
4
  import { u as S } from "./platform-Dr4iY3b8.js";
5
5
  import { b as B } from "./routeResource-CcYA75T2.js";
6
6
  import { _ as F } from "./AsyncSection.vue_vue_type_script_setup_true_lang-GxAsImnO.js";
@@ -11,7 +11,7 @@ import { u as Pe } from "./format-D8X4zsx6.js";
11
11
  import { _ as I } from "./Icon.vue_vue_type_script_lang-BhhsFYwp.js";
12
12
  import { _ as Ae } from "./Banner.vue_vue_type_script_setup_true_lang-sv0phngk.js";
13
13
  import { _ as Ee } from "./EmptyState.vue_vue_type_script_setup_true_lang-DbZiO2RF.js";
14
- import { u as bt, _ as gt } from "./rowLayout-Cz-K7jeo.js";
14
+ import { u as bt, _ as gt } from "./rowLayout-XlTcD4de.js";
15
15
  import { _ as Ye } from "./Menu.vue_vue_type_script_setup_true_lang-ldLdJ5Q-.js";
16
16
  import { _ as Ze } from "./Popover.vue_vue_type_script_setup_true_lang-C70GrCP7.js";
17
17
  import { _ as we } from "./ToneDot.vue_vue_type_script_setup_true_lang-99rNn-L5.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-Cz-K7jeo.js";
2
+ import { u as R, _ as L } from "./rowLayout-XlTcD4de.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 { i as k } from "./error-Bb_dr_Ay.js";
4
- import { u as V, _ as N } from "./CollectionPage.vue_vue_type_script_setup_true_lang-BmXnfM5f.js";
4
+ import { u as V, _ as N } from "./CollectionPage.vue_vue_type_script_setup_true_lang--onFdKOB.js";
5
5
  import { u as P } from "./describeError-BqGAUZgX.js";
6
6
  import { u as I } from "./format-D8X4zsx6.js";
7
- import { e as a, R as O } from "./index-i-cTTVxo.js";
7
+ import { e as a, R as O } from "./index-BQg5X6iK.js";
8
8
  import { _ as W } from "./AlertDialog.vue_vue_type_script_setup_true_lang-BvGc1Rfl.js";
9
9
  import { t as i } from "./toast-CqSDTWRX.js";
10
10
  import { u as Y } from "./useLoad-W4tfxmm5.js";
@@ -8,7 +8,7 @@ import { _ as F } from "./FormView.vue_vue_type_script_setup_true_lang-Ncl9DmFB.
8
8
  import { _ as L } from "./SelectField.vue_vue_type_script_setup_true_lang-iJm8qmjT.js";
9
9
  import { _ as f } from "./TextField.vue_vue_type_script_setup_true_lang-7IAl4eAE.js";
10
10
  import { u as A } from "./useSaveChrome-7huA3FzR.js";
11
- import { P as D, b as G, i as I } from "./index-CXTJ_1NV.js";
11
+ import { P as D, b as G, i as I } from "./index-B_lzrZot.js";
12
12
  import { t as M } from "./toast-CqSDTWRX.js";
13
13
  import { u as O } from "./platform-Dr4iY3b8.js";
14
14
  import { b as U } from "./routeResource-CcYA75T2.js";
@@ -24,7 +24,7 @@ import { a as be } from "./routeResource-CcYA75T2.js";
24
24
  import { a as ve } from "./ResourcePage.vue_vue_type_script_setup_true_lang-Cm3tx76N.js";
25
25
  import { _ as N } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
26
26
  import { _ as q } from "./EmptyState.vue_vue_type_script_setup_true_lang-DbZiO2RF.js";
27
- 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-D5_GAqjA.js";
27
+ 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-Cgu6Ntok.js";
28
28
  import { _ as Ne } from "./Avatar.vue_vue_type_script_setup_true_lang-BPj_fkJR.js";
29
29
  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 = {
30
30
  key: 0,
@@ -1,15 +1,15 @@
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 r, createElementVNode as F, createTextVNode as f, createCommentVNode as O } from "vue";
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-BmXnfM5f.js";
5
- import { b as y } from "./rowLayout-Cz-K7jeo.js";
4
+ import { u as z, _ as P } from "./CollectionPage.vue_vue_type_script_setup_true_lang--onFdKOB.js";
5
+ import { a as y } from "./rowLayout-XlTcD4de.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-u53rHMFG.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-D8X4zsx6.js";
10
10
  import { u as G } from "./platform-Dr4iY3b8.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-D5_GAqjA.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-Cgu6Ntok.js";
13
13
  const X = {
14
14
  key: 1,
15
15
  class: "flex min-w-0 items-center gap-3"
@@ -35,7 +35,7 @@ const X = {
35
35
  icon: h,
36
36
  label: t,
37
37
  type: "select",
38
- options: Object.entries(o).map(([a, V]) => ({ label: s(V), value: a }))
38
+ options: Object.entries(o).map(([r, V]) => ({ label: s(V), value: r }))
39
39
  }), L = Y("created_at"), x = d(() => [
40
40
  L.value,
41
41
  u("status", "checkCircle", s("core.incidents.table_filters.status"), S),
@@ -71,11 +71,11 @@ const X = {
71
71
  icon: "alertTriangle"
72
72
  })
73
73
  ]),
74
- "cell-title": i(({ item: t, compact: o, to: a }) => [
74
+ "cell-title": i(({ item: t, compact: o, to: r }) => [
75
75
  o ? (n(), m(e(y), {
76
76
  key: 0,
77
77
  title: t.title,
78
- to: a,
78
+ to: r,
79
79
  highlight: e(_).query.value.search
80
80
  }, null, 8, ["title", "to", "highlight"])) : (n(), p("div", X, [
81
81
  c(e(g), {
@@ -87,19 +87,19 @@ const X = {
87
87
  c(e(y), {
88
88
  title: t.title,
89
89
  subtitle: t.public_code,
90
- to: a,
90
+ to: r,
91
91
  highlight: e(_).query.value.search,
92
92
  "subtitle-selectable": ""
93
93
  }, null, 8, ["title", "subtitle", "to", "highlight"])
94
94
  ]))
95
95
  ]),
96
96
  "cell-severity": i(({ item: t, compact: o }) => [
97
- o ? (n(), p("span", Z, r(t.public_code), 1)) : O("", !0),
97
+ o ? (n(), p("span", Z, a(t.public_code), 1)) : O("", !0),
98
98
  c(e(k), {
99
99
  tone: e(W)[t.severity] ?? "neutral"
100
100
  }, {
101
101
  default: i(() => [
102
- f(r(e(s)(e(E)[t.severity] ?? t.severity)), 1)
102
+ f(a(e(s)(e(E)[t.severity] ?? t.severity)), 1)
103
103
  ]),
104
104
  _: 2
105
105
  }, 1032, ["tone"])
@@ -110,16 +110,16 @@ const X = {
110
110
  dot: ""
111
111
  }, {
112
112
  default: i(() => [
113
- f(r(e(s)(e(S)[t.status] ?? t.status)), 1)
113
+ f(a(e(s)(e(S)[t.status] ?? t.status)), 1)
114
114
  ]),
115
115
  _: 2
116
116
  }, 1032, ["tone"])
117
117
  ]),
118
118
  "cell-source": i(({ item: t }) => [
119
- F("span", ee, r(e(s)(e(T)[t.source] ?? t.source)), 1)
119
+ F("span", ee, a(e(s)(e(T)[t.source] ?? t.source)), 1)
120
120
  ]),
121
121
  "cell-last_seen_at": i(({ item: t, compact: o }) => [
122
- o ? (n(), p("span", te, r(e(R).date(t.last_seen_at)), 1)) : (n(), m(e(j), {
122
+ o ? (n(), p("span", te, a(e(R).date(t.last_seen_at)), 1)) : (n(), m(e(j), {
123
123
  key: 1,
124
124
  value: t.last_seen_at
125
125
  }, null, 8, ["value"]))
@@ -4,7 +4,7 @@ import { a as ke } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang
4
4
  import { u as G } from "./platform-Dr4iY3b8.js";
5
5
  import { _ as ee } from "./AsyncSection.vue_vue_type_script_setup_true_lang-GxAsImnO.js";
6
6
  import { u as te } from "./useLoad-W4tfxmm5.js";
7
- import { i as S, d as T, c as qe } from "./index-CXTJ_1NV.js";
7
+ import { i as S, d as T, c as qe } from "./index-B_lzrZot.js";
8
8
  import { u as ce } from "./FormErrors.vue_vue_type_script_setup_true_lang-DJiK8iqo.js";
9
9
  import { _ as ue } from "./FormView.vue_vue_type_script_setup_true_lang-Ncl9DmFB.js";
10
10
  import { u as Ce, _ as Se, a as Ee, b as Ve } from "./useGroupSheet-DxXzdKo3.js";
@@ -9,7 +9,7 @@ import { _ as F } from "./useCommand-BIZX1ReM.js";
9
9
  import { u as H } from "./useRecordDialog-BLVSz7g3.js";
10
10
  import { t as J } from "./toast-CqSDTWRX.js";
11
11
  import { u as S } from "./platform-Dr4iY3b8.js";
12
- import { i as Q, f as W, M as X } from "./index-CXTJ_1NV.js";
12
+ import { i as Q, f as W, M as X } from "./index-B_lzrZot.js";
13
13
  import { r as Y } from "./http-nz92KjdS.js";
14
14
  import { s as l } from "./routes-CVckt7Pj.js";
15
15
  import { u as ee } from "./fieldMessages-DTXpWnBd.js";
@@ -15,8 +15,8 @@ import { u as ae } from "./platform-Dr4iY3b8.js";
15
15
  import { u as me, a as ve } from "./routeResource-CcYA75T2.js";
16
16
  import { a as fe } from "./ResourcePage.vue_vue_type_script_setup_true_lang-Cm3tx76N.js";
17
17
  import { _ as O } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
18
- import { M as ce, R as _e, f as pe, s as ye } from "./index-CXTJ_1NV.js";
19
- import { u as W, a as X, _ as ke } from "./ServiceAccountDialog.vue_vue_type_script_setup_true_lang-D2Xj5mr7.js";
18
+ import { M as ce, R as _e, f as pe, s as ye } from "./index-B_lzrZot.js";
19
+ import { u as W, a as X, _ as ke } from "./ServiceAccountDialog.vue_vue_type_script_setup_true_lang-en2w_pAJ.js";
20
20
  import { _ as J } from "./Button.vue_vue_type_script_setup_true_lang-DQq_0P0p.js";
21
21
  import { _ as be } from "./AsyncSection.vue_vue_type_script_setup_true_lang-GxAsImnO.js";
22
22
  import { _ as ge } from "./Modal.vue_vue_type_script_setup_true_lang-4MsnTWyx.js";
@@ -13,8 +13,8 @@ import { u as X } from "./platform-Dr4iY3b8.js";
13
13
  import { _ as Y } from "./AsyncSection.vue_vue_type_script_setup_true_lang-GxAsImnO.js";
14
14
  import { _ as Z } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
15
15
  import { u as ee } from "./useLoad-W4tfxmm5.js";
16
- import { f as te, M as $, s as A } from "./index-CXTJ_1NV.js";
17
- import { u as ae, _ as se } from "./ServiceAccountDialog.vue_vue_type_script_setup_true_lang-D2Xj5mr7.js";
16
+ import { f as te, M as $, s as A } from "./index-B_lzrZot.js";
17
+ import { u as ae, _ as se } from "./ServiceAccountDialog.vue_vue_type_script_setup_true_lang-en2w_pAJ.js";
18
18
  const oe = {
19
19
  class: "flex min-w-0 flex-col gap-group-gap",
20
20
  "data-test": "service-segment"
@@ -2,7 +2,7 @@ import { defineComponent as x, useTemplateRef as v, computed as w, ref as $, ope
2
2
  import { useI18n as N } from "vue-i18n";
3
3
  import { _ as q } from "./Button.vue_vue_type_script_setup_true_lang-DQq_0P0p.js";
4
4
  import { u as A } from "./describeError-BqGAUZgX.js";
5
- import { P as D, b as L, e as O, i as g, d as T } from "./index-CXTJ_1NV.js";
5
+ import { P as D, b as L, e as O, i as g, d as T } from "./index-B_lzrZot.js";
6
6
  import { _ as k } from "./AlertDialog.vue_vue_type_script_setup_true_lang-BvGc1Rfl.js";
7
7
  import { t as b } from "./toast-CqSDTWRX.js";
8
8
  import { u as V } from "./platform-Dr4iY3b8.js";
@@ -5,7 +5,7 @@ import { a as oe } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang
5
5
  import { t as C } from "./toast-CqSDTWRX.js";
6
6
  import { u as U } from "./fieldMessages-DTXpWnBd.js";
7
7
  import { _ as W } from "./AsyncSection.vue_vue_type_script_setup_true_lang-GxAsImnO.js";
8
- import { n as T, u as le, a as re } from "./index-i-cTTVxo.js";
8
+ import { n as T, u as le, a as re } from "./index-BQg5X6iK.js";
9
9
  import { _ as H } from "./SectionIntro.vue_vue_type_script_setup_true_lang-CZtPrmXD.js";
10
10
  import { _ as j } from "./Button.vue_vue_type_script_setup_true_lang-DQq_0P0p.js";
11
11
  import { _ as ce } from "./IconTile.vue_vue_type_script_setup_true_lang-BmxCuUZ9.js";
@@ -6,7 +6,7 @@ import { u as D } from "./format-D8X4zsx6.js";
6
6
  import { _ as p } from "./FormGroup.vue_vue_type_script_setup_true_lang-BTADNpwB.js";
7
7
  import { g as b } from "./options-QuOkMKVZ.js";
8
8
  import { u as U } from "./describeError-BqGAUZgX.js";
9
- import { c as q, P as z, b as F, _ as L, i as O, d as T } from "./index-CXTJ_1NV.js";
9
+ import { c as q, P as z, b as F, _ as L, i as O, d as T } from "./index-B_lzrZot.js";
10
10
  import { t as h } from "./toast-CqSDTWRX.js";
11
11
  import { u as j, h as G } from "./platform-Dr4iY3b8.js";
12
12
  import { b as H } from "./routeResource-CcYA75T2.js";
@@ -6,7 +6,7 @@ import { _ as N } from "./Panel.vue_vue_type_script_setup_true_lang-D_Wg42hu.js"
6
6
  import { _ as S } from "./FormView.vue_vue_type_script_setup_true_lang-Ncl9DmFB.js";
7
7
  import { _ as a } from "./TextField.vue_vue_type_script_setup_true_lang-7IAl4eAE.js";
8
8
  import { r as $ } from "./guards-BFCulig0.js";
9
- import { u as C, a as E } from "./index-CXTJ_1NV.js";
9
+ import { u as C, a as E } from "./index-B_lzrZot.js";
10
10
  const V = { class: "flex flex-1 flex-col items-center justify-center gap-8" }, k = { class: "text-xl font-semibold text-content-strong" }, H = /* @__PURE__ */ d({
11
11
  __name: "SignInPage",
12
12
  setup(q) {
@@ -1,13 +1,13 @@
1
1
  import { defineComponent as y, computed as k, openBlock as _, createElementBlock as b, createVNode as r, unref as t, withCtx as l, createElementVNode as u, toDisplayString as d, createTextVNode as $, ref as v, watch as w, createBlock as I, createCommentVNode as S } from "vue";
2
2
  import { useI18n as h } from "vue-i18n";
3
- import { P as V, i as N } from "./index-CXTJ_1NV.js";
3
+ import { P as V, i as N } from "./index-B_lzrZot.js";
4
4
  import { u as B } from "./platform-Dr4iY3b8.js";
5
5
  import { b as E } from "./routeResource-CcYA75T2.js";
6
6
  import { _ as R } from "./AsyncSection.vue_vue_type_script_setup_true_lang-GxAsImnO.js";
7
7
  import { u as C } from "./useLoad-W4tfxmm5.js";
8
8
  import { _ as P } from "./PageBar.vue_vue_type_script_setup_true_lang-DPpcZxuT.js";
9
9
  import { _ as L } from "./SectionIntro.vue_vue_type_script_setup_true_lang-CZtPrmXD.js";
10
- import { _ as T } from "./DataTable.vue_vue_type_script_setup_true_lang-DRWrCRLr.js";
10
+ import { _ as T } from "./DataTable.vue_vue_type_script_setup_true_lang-CTukf2B2.js";
11
11
  import { _ as U } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
12
12
  import { d as q, s as D, a as G } from "./signInEvents-DWShrJox.js";
13
13
  import { _ as K } from "./ViewTabs.vue_vue_type_script_setup_true_lang-BjdDXE3T.js";
@@ -3,7 +3,7 @@ import { useI18n as A } from "vue-i18n";
3
3
  import { a as F } from "./neighbors-BKzihEGQ.js";
4
4
  import { _ as H } from "./Avatar.vue_vue_type_script_setup_true_lang-BPj_fkJR.js";
5
5
  import { u as J } from "./describeError-BqGAUZgX.js";
6
- import { i as w, P as Q, p as W, g as X, h as Y, j as Z, d as ee } from "./index-CXTJ_1NV.js";
6
+ import { i as w, P as Q, p as W, g as X, h as Y, j as Z, d as ee } from "./index-B_lzrZot.js";
7
7
  import { _ as se } from "./AlertDialog.vue_vue_type_script_setup_true_lang-BvGc1Rfl.js";
8
8
  import { t as k } from "./toast-CqSDTWRX.js";
9
9
  import { _ as ae } from "./SectionNavigator.vue_vue_type_script_setup_true_lang-ivdGWUeF.js";
@@ -18,7 +18,7 @@ import { _ as z } from "./FormGroup.vue_vue_type_script_setup_true_lang-BTADNpwB
18
18
  import { g as B } from "./options-QuOkMKVZ.js";
19
19
  import { u as K, _ as M } from "./useCommand-BIZX1ReM.js";
20
20
  import { u as U } from "./fieldMessages-DTXpWnBd.js";
21
- import { u as ce, s as le } from "./status-DZ4eSnAS.js";
21
+ import { u as ce, s as le } from "./status-BV5Ae4K4.js";
22
22
  import { _ as T } from "./TextField.vue_vue_type_script_setup_true_lang-7IAl4eAE.js";
23
23
  const ue = /* @__PURE__ */ R({
24
24
  __name: "DeactivateDialog",
@@ -1,13 +1,13 @@
1
1
  import { defineComponent as U, openBlock as p, createBlock as C, unref as e, withCtx as c, createVNode as r, mergeProps as i, useTemplateRef as V, computed as q, createTextVNode as z, toDisplayString as $, createCommentVNode as A, createElementBlock as S, normalizeClass as N } from "vue";
2
2
  import { useI18n as B } from "vue-i18n";
3
3
  import { useRouter as P } from "vue-router";
4
- import { u as D, _ as I } from "./CollectionPage.vue_vue_type_script_setup_true_lang-BmXnfM5f.js";
4
+ import { u as D, _ as I } from "./CollectionPage.vue_vue_type_script_setup_true_lang--onFdKOB.js";
5
5
  import { _ as M } from "./Avatar.vue_vue_type_script_setup_true_lang-BPj_fkJR.js";
6
6
  import { u as F } from "./format-D8X4zsx6.js";
7
7
  import { u as L } from "./platform-Dr4iY3b8.js";
8
8
  import { _ as G } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
9
- import { i as K, g as E, h as W } from "./index-CXTJ_1NV.js";
10
- import { U as j, u as H, s as J } from "./status-DZ4eSnAS.js";
9
+ import { i as K, g as E, h as W } from "./index-B_lzrZot.js";
10
+ import { U as j, u as H, s as J } from "./status-BV5Ae4K4.js";
11
11
  import { u as O } from "./environment-Dva-SG8D.js";
12
12
  import { u as Q } from "./languages-BShG9LpE.js";
13
13
  import { _ as X } from "./FormGroup.vue_vue_type_script_setup_true_lang-BTADNpwB.js";
@@ -11,7 +11,7 @@ export { useCollectionBack } from "./back";
11
11
  export type { CollectionBackOptions } from "./back";
12
12
  export { useCollectionNeighbors } from "./neighbors";
13
13
  export type { CollectionNeighbors, Neighbor, NeighborOptions } from "./neighbors";
14
- export { createMemorySavedViews } from "./savedViews";
14
+ export { createMemorySavedViews, serverSavedViews } from "./savedViews";
15
15
  export type { SavedView, SavedViews, SavedViewState } from "./savedViews";
16
16
  export { default as CollectionPage } from "./CollectionPage.vue";
17
17
  export { default as CollectionTable } from "./CollectionTable.vue";
@@ -1,104 +1,125 @@
1
- import { D as I, d as N } from "../definition-C7QuyV3i.js";
2
- import { _ as z, a as M, u as O } from "../CollectionPage.vue_vue_type_script_setup_true_lang-BmXnfM5f.js";
3
- import { h as j, l as U, r as G } from "../http-nz92KjdS.js";
4
- import { L as Z } from "../state-ChVIjayU.js";
5
- import { u as H, a as J } from "../neighbors-BKzihEGQ.js";
6
- import { a as Q, b as W } from "../rowLayout-Cz-K7jeo.js";
7
- import { _ as ee } from "../DataTable.vue_vue_type_script_setup_true_lang-DRWrCRLr.js";
8
- import { defineComponent as v, openBlock as l, createElementBlock as c, Fragment as h, renderList as y, createBlock as C, unref as u, withCtx as k, normalizeClass as m, createVNode as p, createCommentVNode as g } from "vue";
9
- import { _ as b } from "../Icon.vue_vue_type_script_lang-BhhsFYwp.js";
10
- import { _ as w } from "../Tooltip.vue_vue_type_script_setup_true_lang-mErNPt8e.js";
11
- import { D as se, u as oe } from "../datePresets-DB13HHHd.js";
12
- function L(d = {}) {
13
- const s = new Map(Object.entries(d).map(([t, e]) => [t, [...e]]));
14
- let i = 1;
15
- const a = (t) => {
16
- let e = s.get(t);
17
- return e || s.set(t, e = []), e;
1
+ import { D as q, d as z } from "../definition-C7QuyV3i.js";
2
+ import { _ as j, a as G, u as U } from "../CollectionPage.vue_vue_type_script_setup_true_lang--onFdKOB.js";
3
+ import { h as X, l as Z, r as H } from "../http-nz92KjdS.js";
4
+ import { L as Q } from "../state-ChVIjayU.js";
5
+ import { u as Y, a as ee } from "../neighbors-BKzihEGQ.js";
6
+ import { route as f } from "../client/index.js";
7
+ import { b as se, a as ae } from "../rowLayout-XlTcD4de.js";
8
+ import { _ as ne } from "../DataTable.vue_vue_type_script_setup_true_lang-CTukf2B2.js";
9
+ import { defineComponent as k, openBlock as d, createElementBlock as c, Fragment as C, renderList as g, createBlock as h, unref as m, withCtx as E, normalizeClass as p, createVNode as b, createCommentVNode as S } from "vue";
10
+ import { _ } from "../Icon.vue_vue_type_script_lang-BhhsFYwp.js";
11
+ import { _ as T } from "../Tooltip.vue_vue_type_script_setup_true_lang-mErNPt8e.js";
12
+ import { D as ie, u as le } from "../datePresets-DB13HHHd.js";
13
+ const v = {
14
+ index: f("GET", "/v1/saved-views"),
15
+ store: f("POST", "/v1/saved-views"),
16
+ delete: f("DELETE", "/v1/saved-views/:id")
17
+ }, x = ({ id: o, name: t, state: a }) => ({ id: o, name: t, state: a });
18
+ function I(o) {
19
+ return {
20
+ async list(t, { signal: a }) {
21
+ return (await o.request(v.index, { list: t }, { signal: a })).data.map(x);
22
+ },
23
+ async save(t, a, n) {
24
+ const s = JSON.stringify({ ...n, view: n.view || void 0 });
25
+ return x((await o.request(v.store, { list_key: t, name: a, state: s })).data);
26
+ },
27
+ async remove(t, a) {
28
+ await o.request(v.delete, { id: Number(a) });
29
+ }
30
+ };
31
+ }
32
+ function O(o = {}) {
33
+ const t = new Map(Object.entries(o).map(([s, e]) => [s, [...e]]));
34
+ let a = 1;
35
+ const n = (s) => {
36
+ let e = t.get(s);
37
+ return e || t.set(s, e = []), e;
18
38
  };
19
39
  return {
20
- async list(t) {
21
- return [...a(t)];
40
+ async list(s) {
41
+ return [...n(s)];
22
42
  },
23
- async save(t, e, r) {
24
- const o = a(t), n = o.findIndex((x) => x.name === e), f = { id: n === -1 ? `view-${i++}` : o[n].id, name: e, state: r };
25
- return n === -1 ? o.push(f) : o[n] = f, f;
43
+ async save(s, e, l) {
44
+ const r = n(s), i = r.findIndex((y) => y.name === e), u = { id: i === -1 ? `view-${a++}` : r[i].id, name: e, state: l };
45
+ return i === -1 ? r.push(u) : r[i] = u, u;
26
46
  },
27
- async remove(t, e) {
28
- const r = a(t), o = r.findIndex((n) => n.id === e);
29
- o !== -1 && r.splice(o, 1);
47
+ async remove(s, e) {
48
+ const l = n(s), r = l.findIndex((i) => i.id === e);
49
+ r !== -1 && l.splice(r, 1);
30
50
  }
31
51
  };
32
52
  }
33
- const E = {
53
+ const P = {
34
54
  key: 0,
35
55
  class: "flex items-center justify-center gap-1",
36
56
  "data-test": "row-actions"
37
- }, S = ["href", "target", "rel", "aria-label", "data-action"], T = ["aria-label", "data-action", "disabled", "onClick"], _ = "focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-border-focus", B = /* @__PURE__ */ v({
57
+ }, A = ["href", "target", "rel", "aria-label", "data-action"], D = ["aria-label", "data-action", "disabled", "onClick"], w = "focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-border-focus", V = /* @__PURE__ */ k({
38
58
  __name: "RowActions",
39
59
  props: {
40
60
  actions: {},
41
61
  disabled: { type: Boolean, default: !1 }
42
62
  },
43
- setup(d) {
44
- const s = d, i = (a) => a.tone === "critical" ? "text-status-danger-content hover:bg-status-danger-surface" : "text-content-link hover:bg-tint-soft";
45
- return (a, t) => s.actions.length > 0 ? (l(), c("div", E, [
46
- (l(!0), c(h, null, y(s.actions, (e) => (l(), C(u(w), {
63
+ setup(o) {
64
+ const t = o, a = (n) => n.tone === "critical" ? "text-status-danger-content hover:bg-status-danger-surface" : "text-content-link hover:bg-tint-soft";
65
+ return (n, s) => t.actions.length > 0 ? (d(), c("div", P, [
66
+ (d(!0), c(C, null, g(t.actions, (e) => (d(), h(m(T), {
47
67
  key: e.key,
48
68
  text: e.label,
49
69
  side: "left"
50
70
  }, {
51
- default: k(() => [
52
- e.href && !s.disabled ? (l(), c("a", {
71
+ default: E(() => [
72
+ e.href && !t.disabled ? (d(), c("a", {
53
73
  key: 0,
54
74
  href: e.href,
55
75
  target: e.external ? "_blank" : void 0,
56
76
  rel: e.external ? "noopener" : void 0,
57
77
  "aria-label": e.label,
58
78
  "data-action": e.key,
59
- class: m(["inline-flex rounded-md p-1.5 transition-colors", [i(e), _]])
79
+ class: p(["inline-flex rounded-md p-1.5 transition-colors", [a(e), w]])
60
80
  }, [
61
- p(u(b), {
81
+ b(m(_), {
62
82
  name: e.icon,
63
83
  size: 18
64
84
  }, null, 8, ["name"])
65
- ], 10, S)) : (l(), c("button", {
85
+ ], 10, A)) : (d(), c("button", {
66
86
  key: 1,
67
87
  type: "button",
68
88
  "aria-label": e.label,
69
89
  "data-action": e.key,
70
- disabled: s.disabled,
71
- class: m(["inline-flex cursor-pointer rounded-md p-1.5 transition-colors disabled:pointer-events-none disabled:opacity-40", [i(e), _]]),
72
- onClick: (r) => e.onSelect?.()
90
+ disabled: t.disabled,
91
+ class: p(["inline-flex cursor-pointer rounded-md p-1.5 transition-colors disabled:pointer-events-none disabled:opacity-40", [a(e), w]]),
92
+ onClick: (l) => e.onSelect?.()
73
93
  }, [
74
- p(u(b), {
94
+ b(m(_), {
75
95
  name: e.icon,
76
96
  size: 18
77
97
  }, null, 8, ["name"])
78
- ], 10, T))
98
+ ], 10, D))
79
99
  ]),
80
100
  _: 2
81
101
  }, 1032, ["text"]))), 128))
82
- ])) : g("", !0);
102
+ ])) : S("", !0);
83
103
  }
84
104
  });
85
105
  export {
86
- Q as CollectionCell,
87
- z as CollectionPage,
88
- M as CollectionTable,
89
- se as DATE_PRESETS,
90
- I as DEFAULT_PAGE_SIZES,
91
- ee as DataTable,
92
- Z as LIST_CONTEXT_PARAM,
93
- W as RecordIdentity,
94
- B as RowActions,
95
- L as createMemorySavedViews,
96
- N as defineCollection,
97
- j as httpList,
98
- U as listParams,
99
- G as readListPage,
100
- O as useCollection,
101
- H as useCollectionBack,
102
- J as useCollectionNeighbors,
103
- oe as useDatePresetFilter
106
+ se as CollectionCell,
107
+ j as CollectionPage,
108
+ G as CollectionTable,
109
+ ie as DATE_PRESETS,
110
+ q as DEFAULT_PAGE_SIZES,
111
+ ne as DataTable,
112
+ Q as LIST_CONTEXT_PARAM,
113
+ ae as RecordIdentity,
114
+ V as RowActions,
115
+ O as createMemorySavedViews,
116
+ z as defineCollection,
117
+ X as httpList,
118
+ Z as listParams,
119
+ H as readListPage,
120
+ I as serverSavedViews,
121
+ U as useCollection,
122
+ Y as useCollectionBack,
123
+ ee as useCollectionNeighbors,
124
+ le as useDatePresetFilter
104
125
  };
@@ -1,3 +1,4 @@
1
+ import type { HttpClient } from "../client";
1
2
  /**
2
3
  * What "Saved views" stores for a list: the filters, the search and the scope, stamped with the
3
4
  * definition's `stateVersion` so a view saved before the meaning of a key changed is migrated or
@@ -15,8 +16,8 @@ export interface SavedView {
15
16
  readonly state: SavedViewState;
16
17
  }
17
18
  /**
18
- * The seam to wherever an application keeps a person's saved views (go-core has no endpoint for it
19
- * yet). The application supplies one per list (`useCollection(def, { savedViews })`); the library
19
+ * The seam to wherever an application keeps a person's saved views (`serverSavedViews` is the one for
20
+ * go-core's `savedview` module). The application supplies one per list (`useCollection(def, { savedViews })`); the library
20
21
  * only reads, saves and removes through it. A saved view belongs to the signed-in person: the
21
22
  * adapter's backend decides who that is, the library clears what it loaded when the session changes.
22
23
  */
@@ -28,5 +29,14 @@ export interface SavedViews {
28
29
  save(listId: string, name: string, state: SavedViewState): Promise<SavedView>;
29
30
  remove(listId: string, id: SavedView["id"]): Promise<void>;
30
31
  }
32
+ /**
33
+ * `SavedViews` over go-core's `savedview` module (`GET | POST /v1/saved-views`, `DELETE /v1/saved-views/:id`): the
34
+ * signed-in person's views, kept per list id. Make it in `setup` over the platform's client and pass it to
35
+ * `useCollection(def, { savedViews: serverSavedViews(usePlatform().http) })`; a list that passes none has no saved views.
36
+ *
37
+ * The state travels as the library wrote it, `version` included: a view saved without one comes back without one
38
+ * and is skipped by `useCollection` like any view of another `stateVersion`.
39
+ */
40
+ export declare function serverSavedViews(http: HttpClient): SavedViews;
31
41
  /** An in-memory `SavedViews` for tests and the playground. It forgets everything on reload; not for an application. */
32
42
  export declare function createMemorySavedViews(initial?: Readonly<Record<string, readonly SavedView[]>>): SavedViews;
@@ -1,4 +1,4 @@
1
- import { _ as t, k as a, l as o, i as n, m as i, d as r, n as u, o as c, q as d, r as A, t as p, s as R, v as f, w as l, x as m, g as y } from "../index-CXTJ_1NV.js";
1
+ import { _ as t, k as a, l as o, i as n, m as i, d as r, n as u, o as c, q as d, r as A, t as p, s as R, v as f, w as l, x as m, g as y } from "../index-B_lzrZot.js";
2
2
  import { _ as v } from "../ActionRow.vue_vue_type_script_setup_true_lang-Cg1lhpcA.js";
3
3
  import { s as I } from "../routes-CVckt7Pj.js";
4
4
  export {
@@ -1,4 +1,4 @@
1
- import { h as t, j as i, k as r, l as n, i as a } from "../index-D5_GAqjA.js";
1
+ import { h as t, j as i, k as r, l as n, i as a } from "../index-Cgu6Ntok.js";
2
2
  export {
3
3
  t as MAX_REPORTS_PER_SESSION,
4
4
  i as clientErrorReporter,
@@ -135,9 +135,9 @@ function Me(n = ee().http, t = W()) {
135
135
  return { state: $(e), hash: $(i), busy: $(a), inspect: c, enable: u, disable: g };
136
136
  }
137
137
  const Ne = "events.deadletter:view", $t = "events.deadletter:retry", Y = te({
138
- index: { name: "events.deadletters", path: "/events/dead-letters", component: () => import("./DeadLetters-DUM_bsL-.js"), meta: { access: Ne, titleKey: "core.notifications.dead_letters.title" } }
138
+ index: { name: "events.deadletters", path: "/events/dead-letters", component: () => import("./DeadLetters-BslDh93e.js"), meta: { access: Ne, titleKey: "core.notifications.dead_letters.title" } }
139
139
  }), j = te({
140
- index: { name: "notifications.settings", path: "/profile/notifications", component: () => import("./SettingsPage-Brq9U4tJ.js"), meta: { titleKey: "core.notifications.settings.title" } }
140
+ index: { name: "notifications.settings", path: "/profile/notifications", component: () => import("./SettingsPage-Cje1X0ix.js"), meta: { titleKey: "core.notifications.settings.title" } }
141
141
  }), Oe = /* @__PURE__ */ q({
142
142
  __name: "SettingsMenuItem",
143
143
  setup(n) {
@@ -287,7 +287,7 @@ const De = ["aria-labelledby"], Ve = ["id"], Me = { class: "mt-1 text-subheadlin
287
287
  ]));
288
288
  }
289
289
  }), Je = K({
290
- login: { name: "login", path: "/login", component: () => import("./SignInPage-Ts-iTaC1.js"), meta: { public: !0, titleKey: "core.identity.signin.title" } }
290
+ login: { name: "login", path: "/login", component: () => import("./SignInPage-DmHdrZR-.js"), meta: { public: !0, titleKey: "core.identity.signin.title" } }
291
291
  });
292
292
  function $s(e = {}) {
293
293
  return N({
@@ -355,7 +355,7 @@ function Ls(e) {
355
355
  };
356
356
  }
357
357
  const te = K({
358
- index: { name: "profile", path: "/profile", component: () => import("./ProfilePage-CJIztbx3.js"), meta: { titleKey: "core.profile.title" } }
358
+ index: { name: "profile", path: "/profile", component: () => import("./ProfilePage-DxALOfzC.js"), meta: { titleKey: "core.profile.title" } }
359
359
  }), es = /* @__PURE__ */ w({
360
360
  __name: "ProfileMenuItem",
361
361
  setup(e) {
@@ -379,19 +379,19 @@ function ns(e) {
379
379
  return { name: `users.record.${e.path}`, path: e.path, component: s, meta: { ...e.meta } };
380
380
  }
381
381
  const W = "iam.user:view", Ds = "iam.user:manage", os = "iam.user.activity:view", ne = K({
382
- index: { name: "users.index", path: "/users", component: () => import("./UsersList-Due2ZkbO.js"), meta: { access: W, titleKey: "core.users.title" } },
382
+ index: { name: "users.index", path: "/users", component: () => import("./UsersList-CiPeerC7.js"), meta: { access: W, titleKey: "core.users.title" } },
383
383
  record: {
384
384
  name: "users.record",
385
385
  path: "/users/:id",
386
- component: () => import("./UserRecord-DgK9FsvV.js"),
386
+ component: () => import("./UserRecord-rIeTkocJ.js"),
387
387
  meta: { access: W, titleKey: "core.users.title", remountOnParam: "id" },
388
388
  children: [
389
- { name: "users.record.general", path: "general", component: () => import("./General-Dsh0TJ5w.js"), meta: { section: { labelKey: "core.users.sections.general", icon: "user3Line", groupKey: "core.users.section_groups.person" } } },
390
- { name: "users.record.signin", path: "signin", component: () => import("./SignIn-DB5LRNlB.js"), meta: { section: { labelKey: "core.users.sections.signin", icon: "key2Line", groupKey: "core.users.section_groups.access" } } },
391
- { name: "users.record.sessions", path: "sessions", component: () => import("./Sessions-Bg4Zk9Gf.js"), meta: { section: { labelKey: "core.users.sections.sessions", icon: "deviceLine", groupKey: "core.users.section_groups.access" } } },
392
- { name: "users.record.signins", path: "signins", component: () => import("./SignIns-bCvvmCHF.js"), meta: { section: { labelKey: "core.users.sections.signins", icon: "timeFill", groupKey: "core.users.section_groups.activity" } } },
393
- { name: "users.record.changes", path: "changes", component: () => import("./Changes-BCaVkeZg.js"), meta: { section: { labelKey: "core.users.sections.changes", icon: "edit", groupKey: "core.users.section_groups.activity" } } },
394
- { name: "users.record.activity", path: "activity", component: () => import("./Activity-CW2TOQAY.js"), meta: { access: os, section: { labelKey: "core.users.sections.activity", icon: "listCheck", groupKey: "core.users.section_groups.activity" } } }
389
+ { name: "users.record.general", path: "general", component: () => import("./General-DJ53Egpp.js"), meta: { section: { labelKey: "core.users.sections.general", icon: "user3Line", groupKey: "core.users.section_groups.person" } } },
390
+ { name: "users.record.signin", path: "signin", component: () => import("./SignIn-CbWgDlFb.js"), meta: { section: { labelKey: "core.users.sections.signin", icon: "key2Line", groupKey: "core.users.section_groups.access" } } },
391
+ { name: "users.record.sessions", path: "sessions", component: () => import("./Sessions-BrAEXAMA.js"), meta: { section: { labelKey: "core.users.sections.sessions", icon: "deviceLine", groupKey: "core.users.section_groups.access" } } },
392
+ { name: "users.record.signins", path: "signins", component: () => import("./SignIns-D5BRb9Sr.js"), meta: { section: { labelKey: "core.users.sections.signins", icon: "timeFill", groupKey: "core.users.section_groups.activity" } } },
393
+ { name: "users.record.changes", path: "changes", component: () => import("./Changes-fN0KMYbW.js"), meta: { section: { labelKey: "core.users.sections.changes", icon: "edit", groupKey: "core.users.section_groups.activity" } } },
394
+ { name: "users.record.activity", path: "activity", component: () => import("./Activity-Cm1dlM2b.js"), meta: { access: os, section: { labelKey: "core.users.sections.activity", icon: "listCheck", groupKey: "core.users.section_groups.activity" } } }
395
395
  ]
396
396
  }
397
397
  });
@@ -452,11 +452,11 @@ const Ms = /* @__PURE__ */ w({
452
452
  }, 8, ["permission"])) : I("", !0);
453
453
  }
454
454
  }), [rs, Bs] = A("vue-core.serviceaccounts"), Y = "iam.serviceaccount:view", js = "iam.serviceaccount:manage", Ws = "iam.serviceaccount:revoke", H = K({
455
- index: { name: "serviceaccounts.index", path: "/iam/service-accounts", component: () => import("./ServiceAccountsList-CaXEp73j.js"), meta: { access: Y, titleKey: "core.serviceaccounts.title_plural" } },
455
+ index: { name: "serviceaccounts.index", path: "/iam/service-accounts", component: () => import("./ServiceAccountsList-CoDKG_15.js"), meta: { access: Y, titleKey: "core.serviceaccounts.title_plural" } },
456
456
  record: {
457
457
  name: "serviceaccounts.record",
458
458
  path: "/iam/service-accounts/:id",
459
- component: () => import("./ServiceAccountRecord-Ct3TrSqZ.js"),
459
+ component: () => import("./ServiceAccountRecord-B_amE8fL.js"),
460
460
  meta: { access: Y, titleKey: "core.serviceaccounts.title_plural", remountOnParam: "id" }
461
461
  }
462
462
  });
@@ -263,11 +263,11 @@ const Qe = {
263
263
  }, null, 8, ["label"])) : R("", !0);
264
264
  }
265
265
  }), M = Z({
266
- index: { name: "incidents.index", path: "/incidents", component: () => import("./IncidentsList-ClQOjd5c.js"), meta: { access: q, titleKey: "core.incidents.title" } },
266
+ index: { name: "incidents.index", path: "/incidents", component: () => import("./IncidentsList-C3yUnwwY.js"), meta: { access: q, titleKey: "core.incidents.title" } },
267
267
  details: {
268
268
  name: "incidents.details",
269
269
  path: "/incidents/:incidentID",
270
- component: () => import("./IncidentRecord-C9zrjNrp.js"),
270
+ component: () => import("./IncidentRecord-DQTnYQEe.js"),
271
271
  // Previous / next record swaps the id in place.
272
272
  meta: { access: q, titleKey: "core.incidents.title", remountOnParam: "incidentID" }
273
273
  }
package/dist/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  /** The version of @wssto2/vue-core (kept equal to package.json by index.test.ts). */
2
- export declare const version = "0.7.0";
2
+ export declare const version = "0.8.0";
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- const o = "0.7.0";
1
+ const o = "0.8.0";
2
2
  export {
3
3
  o as version
4
4
  };
@@ -0,0 +1,7 @@
1
+ export type ViewResponse = {
2
+ id: number;
3
+ list_key: string;
4
+ name: string;
5
+ state: Record<string, unknown>;
6
+ updated_at: string;
7
+ };
@@ -0,0 +1,13 @@
1
+ import { type QueryValue } from "../../client";
2
+ import type { ViewResponse } from "./entities";
3
+ export declare const savedviewRoutes: {
4
+ readonly index: import("../../client").ApiRoute<Record<string, QueryValue>, ViewResponse[], unknown>;
5
+ readonly store: import("../../client").ApiRoute<{
6
+ list_key: string;
7
+ name: string;
8
+ state: string;
9
+ }, ViewResponse, unknown>;
10
+ readonly delete: import("../../client").ApiRoute<{
11
+ id: number;
12
+ }, void, unknown>;
13
+ };
@@ -0,0 +1,11 @@
1
+ import { z } from 'zod';
2
+ export declare const SaveInputSchema: z.ZodObject<{
3
+ list_key: z.ZodString;
4
+ name: z.ZodString;
5
+ state: z.ZodString;
6
+ }, z.core.$strip>;
7
+ export type SaveInput = z.infer<typeof SaveInputSchema>;
8
+ export declare const ViewPathSchema: z.ZodObject<{
9
+ id: z.ZodNumber;
10
+ }, z.core.$strip>;
11
+ export type ViewPath = z.infer<typeof ViewPathSchema>;
@@ -1,4 +1,4 @@
1
- import { d as s, e as a, n as o, b as i, c as n, f as u } from "../index-i-cTTVxo.js";
1
+ import { d as s, e as a, n as o, b as i, c as n, f as u } from "../index-BQg5X6iK.js";
2
2
  export {
3
3
  s as deadLettersRoutes,
4
4
  a as eventsRoutes,
@@ -657,7 +657,7 @@ function Xt(y) {
657
657
  }
658
658
  export {
659
659
  Wt as _,
660
- V as a,
661
- ke as b,
660
+ ke as a,
661
+ V as b,
662
662
  Xt as u
663
663
  };
@@ -1,6 +1,6 @@
1
1
  import { d as o } from "./definition-C7QuyV3i.js";
2
2
  import { r as a } from "./http-nz92KjdS.js";
3
- import { i as r } from "./index-CXTJ_1NV.js";
3
+ import { i as r } from "./index-B_lzrZot.js";
4
4
  const n = ["active", "locked", "inactive", "all"];
5
5
  function v(i) {
6
6
  return o({
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@wssto2/vue-core",
3
- "version": "0.7.0",
4
- "goCore": "v1.11.0",
3
+ "version": "0.8.0",
4
+ "goCore": "v1.12.0",
5
5
  "description": "Shared Vue 3 library for go-core applications: app shell, list / record / form pages and their controls.",
6
6
  "keywords": [
7
7
  "vue",