@wssto2/vue-core 0.4.26 → 0.4.28
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.
- package/CHANGELOG.md +29 -0
- package/dist/{Activity-B6R8Jghz.js → Activity-BWkVX1Nx.js} +2 -2
- package/dist/{AdaptivePageShell.vue_vue_type_script_setup_true_lang-CxU9aNRQ.js → AdaptivePageShell.vue_vue_type_script_setup_true_lang-GUTIXuNd.js} +58 -53
- package/dist/{AsyncSection.vue_vue_type_script_setup_true_lang-Blj6KgCr.js → AsyncSection.vue_vue_type_script_setup_true_lang-B0NfvG3B.js} +45 -40
- package/dist/Avatar.vue_vue_type_script_setup_true_lang-BPj_fkJR.js +50 -0
- package/dist/{Changes-BQG7IV49.js → Changes-MG77TDwz.js} +3 -3
- package/dist/{CollectionPage.vue_vue_type_script_setup_true_lang-BrbQ0Y5d.js → CollectionPage.vue_vue_type_script_setup_true_lang-Bnpv9TEj.js} +2 -2
- package/dist/{DataTable.vue_vue_type_script_setup_true_lang-DPuH84I7.js → DataTable.vue_vue_type_script_setup_true_lang-BEvz5zqo.js} +1 -1
- package/dist/{DeadLetters-CJZSWjsn.js → DeadLetters-CkDE71B3.js} +2 -2
- package/dist/{General-tsRC866T.js → General-UTBVEXbN.js} +1 -1
- package/dist/{NewRolePage-L57Zg1Mg.js → NewRolePage-B7DwFWPk.js} +4 -4
- package/dist/{ProfilePage-B9WUrImn.js → ProfilePage-C8VhiKIh.js} +4 -4
- package/dist/{RecordHeader.vue_vue_type_script_setup_true_lang-szzWzdDu.js → RecordHeader.vue_vue_type_script_setup_true_lang-fmx0f8xi.js} +1 -1
- package/dist/{ResourcePage.vue_vue_type_script_setup_true_lang-BFaaFQSm.js → ResourcePage.vue_vue_type_script_setup_true_lang-BFBGvevP.js} +2 -2
- package/dist/{RoleEditor.vue_vue_type_script_setup_true_lang-Hr0WgL1K.js → RoleEditor.vue_vue_type_script_setup_true_lang-DRHmjA9w.js} +1 -1
- package/dist/{RolePage-uezn-Og1.js → RolePage-ODFu68Ce.js} +5 -5
- package/dist/{RolesPage-DkMAJZR6.js → RolesPage-B5RwSZ89.js} +3 -3
- package/dist/{SectionList.vue_vue_type_script_setup_true_lang-BJnz2ROc.js → SectionList.vue_vue_type_script_setup_true_lang-wyW7n3Uq.js} +1 -1
- package/dist/{SectionNavigator.vue_vue_type_script_setup_true_lang-BYRc0-qh.js → SectionNavigator.vue_vue_type_script_setup_true_lang-Dmv6TpCi.js} +2 -2
- package/dist/{Sessions-BDu3nMmz.js → Sessions-DWj2OGo0.js} +2 -2
- package/dist/{SettingsPage-CA7YCy6K.js → SettingsPage-C3fPSmi7.js} +3 -3
- package/dist/{SignIn-DQzS20kM.js → SignIn-COThB9XN.js} +1 -1
- package/dist/{SignInPage-ft3unWwX.js → SignInPage-CdzgSvRm.js} +1 -1
- package/dist/{SignInTable.vue_vue_type_script_setup_true_lang-ByEAVfjv.js → SignInTable.vue_vue_type_script_setup_true_lang-Bs0yTi2E.js} +1 -1
- package/dist/{SignIns-C3h_YIkc.js → SignIns-cztICmqt.js} +3 -3
- package/dist/Timestamp.vue_vue_type_script_setup_true_lang-CutyQkJb.js +52 -0
- package/dist/{UserRecord-BO5-wsYt.js → UserRecord-BWMnXz4q.js} +5 -5
- package/dist/{UsersList-D3b3DGN5.js → UsersList-Chq8yM5C.js} +4 -4
- package/dist/access/index.js +1 -1
- package/dist/collection/index.js +3 -3
- package/dist/content/Avatar.vue.d.ts +6 -0
- package/dist/content/Timestamp.vue.d.ts +15 -0
- package/dist/content/index.js +2 -2
- package/dist/form/index.js +2 -2
- package/dist/identity/index.js +1 -1
- package/dist/{index-BVU76sBO.js → index-BhtJR4c_.js} +10 -10
- package/dist/{index-CvJSAsfk.js → index-C3E6DcO0.js} +4 -4
- package/dist/{index-C3CzOub7.js → index-sTBBHqNG.js} +3 -3
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/notifications/index.js +1 -1
- package/dist/overlay/MenuButton.vue.d.ts +24 -0
- package/dist/overlay/index.d.ts +1 -0
- package/dist/overlay/index.js +59 -35
- package/dist/page/index.js +5 -5
- package/dist/resource/index.js +1 -1
- package/dist/{rowLayout-D1vrdy0s.js → rowLayout-BBFyLbOl.js} +1 -1
- package/dist/shell/index.js +3 -1
- package/dist/state/async.d.ts +16 -0
- package/dist/state/index.d.ts +1 -1
- package/dist/state/index.js +38 -37
- package/dist/{status-8KH7PITT.js → status-dGvfh1TP.js} +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
- package/dist/Avatar.vue_vue_type_script_setup_true_lang-CFIheaSr.js +0 -35
- package/dist/Timestamp.vue_vue_type_script_setup_true_lang-CU2Y5oYl.js +0 -34
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,34 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.4.28 — 2026-10-12
|
|
4
|
+
|
|
5
|
+
From the owner's review of ARV W2's screenshots of 0.4.27: the changed-by cell and the row menu are quieter. Two items, one commit each; no new API.
|
|
6
|
+
|
|
7
|
+
### Requires
|
|
8
|
+
- go-core unchanged: **`v1.7.0`**; **`vue` 3.5.19 or later**.
|
|
9
|
+
|
|
10
|
+
### Changes to existing behaviour
|
|
11
|
+
- **`Timestamp` with an `author` stacks.** The smallest `Avatar` is centred on two lines, the name on the first (a long one truncates) and the date on the second in muted text (never truncated, never wrapped). The cell is as wide as the wider of the name and the date, no wider, so a list column stays narrow instead of growing and cutting the row's own text. There is no `layout` option: one way. Without an author it is unchanged (date with the calendar icon); "No data" is unchanged. ARV: the "Uneseno/Uređeno" columns; nothing to change in the call sites.
|
|
12
|
+
- **`MenuButton` is plain at rest.** No fill and a `content-muted` icon, like an iOS row's "⋯"; the fill (and `content-strong` icon) shows on hover, `focus-visible` and while its menu is open (`data-pressed`, the stronger fill). The 44px touch target on compact stays an invisible hit area (`hit-target`), so a row of 36px content does not grow. `aria-expanded` and `data-pressed` are as before. ARV: `FollowUpRow`.
|
|
13
|
+
- **Pinned by tests that were updated:** `content.test.ts` "Timestamp with an author" (the inline layout: `shrink-0` date, three siblings in a row) now pins the grid, the two-row avatar and `whitespace-nowrap`; `Menu.test.ts` "MenuButton" gains the rest-state and hit-area test (the pressed-state test is unchanged).
|
|
14
|
+
|
|
15
|
+
## 0.4.27 — 2026-10-12
|
|
16
|
+
|
|
17
|
+
The gaps ARV lane W found when it moved its twin components onto the library. Four items (plus `Avatar` `src`, which `Timestamp` author needs); no existing default changes.
|
|
18
|
+
|
|
19
|
+
### Requires
|
|
20
|
+
- go-core unchanged: **`v1.7.0`**; **`vue` 3.5.19 or later**.
|
|
21
|
+
|
|
22
|
+
### Added
|
|
23
|
+
- **Page chrome spec hooks.** The toolbar root is `data-page-toolbar`, the breadcrumb `nav` `data-page-path` and the actions group `data-page-actions`, beside the existing `data-page-shell`, `-back`, `-action="<id>"`, `-overflow`, `-path-item` and `-status`. The phone nav bar now carries `data-page-back` and `data-page-overflow` on its back and "More" buttons. All are documented as stable spec hooks (testing recipe); each appears once per page. ARV: the 39 specs that select `[data-test="page-toolbar"]`, `page-back`, `page-action-overflow`, `page-shell`, `page-status`, `page-path` and `page-actions` move to `[data-page-*]` when the catalogue screens adopt the library shell.
|
|
24
|
+
- **`Timestamp` `author`** (`@wssto2/vue-core/content`): `{ name: string; avatarUrl?: string | null } | null`. With an author the calendar icon gives way to the smallest `Avatar` and the name (truncated), then the date in muted text, which never shrinks; `precision` still applies, no author is the date alone, and an empty value still reads "No data". `avatarUrl` is the photo's full URL, **built by the app** (no auth or fetching in the library); ARV joins its legacy URL and the photo path. ARV: the 22 non-deferred `Timestamp` users (`:date` becomes `:value`, `with-time` becomes `precision`).
|
|
25
|
+
- **`Avatar` `src`** (`@wssto2/vue-core/content`): `src?: string | null`, a full URL. Draws the photo (round, `object-cover`, `alt` = the name, not draggable); the initials show when `src` is empty, while it loads and if it fails to load (never a broken-image icon), and a changed `src` retries.
|
|
26
|
+
- **`asyncState({ loading, error, value })`** (`@wssto2/vue-core/state`): the `AsyncState` of a region driven by plain flags, for `AsyncSection`'s one `state` prop (no second props surface). `value` is `undefined` until there is an answer (`null` is an answer, shown as empty); loading over a value is `refreshing`, an error over a value is `stale`, loading wins over an error, an empty error is none, and nothing yet is `loading`. ARV: the offer and contract document sections.
|
|
27
|
+
- **`MenuButton`** (`@wssto2/vue-core/overlay`): the round "⋯" button for a `Menu`'s `#trigger` slot. `<MenuButton v-bind="trigger" label="…" />` (props `label` required, `icon` default `moreLine`, plus the slot scope `presented`, `toggle`, `attrs`). It carries the trigger attrs and shows a pressed look (`data-pressed`) while the menu is open. ARV: `FollowUpRow`.
|
|
28
|
+
|
|
29
|
+
### Changes to existing behaviour
|
|
30
|
+
- None. **Pinned by tests that were updated:** none.
|
|
31
|
+
|
|
3
32
|
## 0.4.26 — 2026-10-12
|
|
4
33
|
|
|
5
34
|
A typed platform declared once, and the signed-in user changed in place. From ARV cutover g (the step f map, wave 2 step 0). Three items, one commit each.
|
|
@@ -6,10 +6,10 @@ import { u as O } from "./format-D8X4zsx6.js";
|
|
|
6
6
|
import { _ as U } from "./DateField.vue_vue_type_script_setup_true_lang-CpuH0WTl.js";
|
|
7
7
|
import { _ as T } from "./FormGroup.vue_vue_type_script_setup_true_lang-DSwSRsA5.js";
|
|
8
8
|
import { e as z } from "./control-B4SdblL6.js";
|
|
9
|
-
import { P as G, c as H, i as J } from "./index-
|
|
9
|
+
import { P as G, c as H, i as J } from "./index-BhtJR4c_.js";
|
|
10
10
|
import { u as K } from "./platform-PZpUkkMS.js";
|
|
11
11
|
import { b as M } from "./routeResource-DlTsGTg_.js";
|
|
12
|
-
import { _ as Q } from "./AsyncSection.vue_vue_type_script_setup_true_lang-
|
|
12
|
+
import { _ as Q } from "./AsyncSection.vue_vue_type_script_setup_true_lang-B0NfvG3B.js";
|
|
13
13
|
import { _ as W } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
|
|
14
14
|
import { u as X } from "./useLoad-M7V-AVwR.js";
|
|
15
15
|
import { _ as Y } from "./PageBar.vue_vue_type_script_setup_true_lang-B7qdEeej.js";
|
|
@@ -12,25 +12,26 @@ import { d as ee } from "./context-Ch1r4fdN.js";
|
|
|
12
12
|
const te = /* @__PURE__ */ $({
|
|
13
13
|
__name: "BottomDockPortal",
|
|
14
14
|
setup(d) {
|
|
15
|
-
const e = D() ? F(U, null) : null,
|
|
15
|
+
const e = D() ? F(U, null) : null, a = k(() => e?.value ?? null);
|
|
16
16
|
return (c, i) => (r(), _(O, {
|
|
17
|
-
to:
|
|
18
|
-
disabled: !
|
|
17
|
+
to: a.value,
|
|
18
|
+
disabled: !a.value
|
|
19
19
|
}, [
|
|
20
20
|
v(c.$slots, "default")
|
|
21
21
|
], 8, ["to", "disabled"]));
|
|
22
22
|
}
|
|
23
|
-
}),
|
|
23
|
+
}), ae = {
|
|
24
24
|
key: 0,
|
|
25
|
+
"data-page-actions": "",
|
|
25
26
|
class: "flex min-w-0 flex-wrap items-center justify-end gap-2"
|
|
26
|
-
},
|
|
27
|
+
}, ne = ["aria-label", "onClick"], E = /* @__PURE__ */ $({
|
|
27
28
|
__name: "PageActions",
|
|
28
29
|
props: {
|
|
29
30
|
actions: {},
|
|
30
31
|
leading: {}
|
|
31
32
|
},
|
|
32
33
|
setup(d) {
|
|
33
|
-
const e = d, { t:
|
|
34
|
+
const e = d, { t: a } = P(), c = k(() => [
|
|
34
35
|
...e.leading ? [e.leading] : [],
|
|
35
36
|
...e.actions.filter((t) => t.placement !== "overflow" && t.tone !== "critical")
|
|
36
37
|
]), i = k(() => e.actions.filter((t) => t.placement === "overflow" || t.tone === "critical").map((t) => ({
|
|
@@ -45,7 +46,7 @@ const te = /* @__PURE__ */ $({
|
|
|
45
46
|
function u(t) {
|
|
46
47
|
return t === e.leading || t.prominence === "plain" ? "plain" : t.prominence === "standard" ? "standard" : t.placement === "primary" ? "primary" : "standard";
|
|
47
48
|
}
|
|
48
|
-
return (t, o) => c.value.length || i.value.length ? (r(), p("div",
|
|
49
|
+
return (t, o) => c.value.length || i.value.length ? (r(), p("div", ae, [
|
|
49
50
|
(r(!0), p(I, null, M(c.value, (s) => (r(), _(W, {
|
|
50
51
|
key: s.id,
|
|
51
52
|
prominence: u(s),
|
|
@@ -64,23 +65,26 @@ const te = /* @__PURE__ */ $({
|
|
|
64
65
|
i.value.length ? (r(), _(Y, {
|
|
65
66
|
key: 0,
|
|
66
67
|
items: i.value,
|
|
67
|
-
label: l(
|
|
68
|
+
label: l(a)("core.page.more_actions")
|
|
68
69
|
}, {
|
|
69
70
|
trigger: x(({ toggle: s, attrs: g }) => [
|
|
70
71
|
m("button", H({ type: "button" }, g, {
|
|
71
|
-
"aria-label": l(
|
|
72
|
+
"aria-label": l(a)("core.page.more_actions"),
|
|
72
73
|
"data-page-overflow": "",
|
|
73
74
|
class: "hit-target flex size-9 cursor-pointer items-center justify-center rounded-button bg-fill text-content-strong transition-colors duration-motion-fast hover:bg-fill-strong focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-border-focus",
|
|
74
75
|
onClick: s
|
|
75
76
|
}), [
|
|
76
77
|
b(l(y), { name: "moreLine" })
|
|
77
|
-
], 16,
|
|
78
|
+
], 16, ne)
|
|
78
79
|
]),
|
|
79
80
|
_: 1
|
|
80
81
|
}, 8, ["items", "label"])) : f("", !0)
|
|
81
82
|
])) : f("", !0);
|
|
82
83
|
}
|
|
83
|
-
}), oe = {
|
|
84
|
+
}), oe = {
|
|
85
|
+
"data-page-toolbar": "",
|
|
86
|
+
class: "sticky top-[var(--shell-banner-h,0px)] z-20 flex min-h-bar-height min-w-0 flex-wrap items-center gap-2.5 border-b border-border-separator bg-surface-page/85 py-2 pr-6 pl-4 backdrop-blur-xl"
|
|
87
|
+
}, se = ["aria-label"], le = {
|
|
84
88
|
class: "flex shrink-0 text-content-link",
|
|
85
89
|
"aria-hidden": "true"
|
|
86
90
|
}, re = { class: "flex min-w-0 items-center" }, ie = {
|
|
@@ -101,11 +105,12 @@ const te = /* @__PURE__ */ $({
|
|
|
101
105
|
status: {}
|
|
102
106
|
},
|
|
103
107
|
setup(d) {
|
|
104
|
-
const e = d, { t:
|
|
108
|
+
const e = d, { t: a } = P(), c = k(() => e.path && e.path.length >= 2 ? e.path.slice(0, -1) : []), i = k(() => e.path && c.value.length ? e.path[e.path.length - 1] ?? null : e.back ?? null);
|
|
105
109
|
return (u, t) => (r(), p("div", oe, [
|
|
106
110
|
c.value.length && i.value ? (r(), p("nav", {
|
|
107
111
|
key: 0,
|
|
108
|
-
"
|
|
112
|
+
"data-page-path": "",
|
|
113
|
+
"aria-label": l(a)("core.page.breadcrumbs"),
|
|
109
114
|
class: "-ml-1 flex min-w-0 items-center"
|
|
110
115
|
}, [
|
|
111
116
|
m("span", le, [
|
|
@@ -180,9 +185,9 @@ const te = /* @__PURE__ */ $({
|
|
|
180
185
|
]));
|
|
181
186
|
}
|
|
182
187
|
});
|
|
183
|
-
function me(d, e,
|
|
188
|
+
function me(d, e, a = !0) {
|
|
184
189
|
const c = N();
|
|
185
|
-
if (!c || !z(
|
|
190
|
+
if (!c || !z(a)) return;
|
|
186
191
|
const i = c.claim();
|
|
187
192
|
let u = null;
|
|
188
193
|
T(() => z(e), (t) => i.setTitle(t), { immediate: !0 }), R(() => {
|
|
@@ -223,7 +228,7 @@ const fe = { class: "flex min-w-0 flex-wrap items-center gap-x-4 gap-y-3" }, ge
|
|
|
223
228
|
inlineActions: { type: Boolean, default: !1 }
|
|
224
229
|
},
|
|
225
230
|
setup(d) {
|
|
226
|
-
const e = d, { locale:
|
|
231
|
+
const e = d, { locale: a } = P(), c = j("(max-width: 47.999rem)"), i = k(() => e.count == null ? null : new Intl.NumberFormat(J(a.value)).format(e.count)), u = V("titleElement");
|
|
227
232
|
return me(u, () => e.title), (t, o) => (r(), p("div", fe, [
|
|
228
233
|
m("div", ge, [
|
|
229
234
|
v(t.$slots, "leading", {}, () => [
|
|
@@ -264,13 +269,13 @@ const fe = { class: "flex min-w-0 flex-wrap items-center gap-x-4 gap-y-3" }, ge
|
|
|
264
269
|
}
|
|
265
270
|
}), [$e, De] = ee("vue-core.pageSectionBack");
|
|
266
271
|
function Se(d, e) {
|
|
267
|
-
const
|
|
268
|
-
let c =
|
|
269
|
-
const i =
|
|
272
|
+
const a = G();
|
|
273
|
+
let c = a.fullPath;
|
|
274
|
+
const i = a.matched[a.matched.length - 1];
|
|
270
275
|
T(
|
|
271
|
-
() =>
|
|
276
|
+
() => a.fullPath,
|
|
272
277
|
(s) => {
|
|
273
|
-
|
|
278
|
+
a.matched[a.matched.length - 1] === i && (c = s);
|
|
274
279
|
}
|
|
275
280
|
);
|
|
276
281
|
let u, t;
|
|
@@ -282,7 +287,7 @@ function Se(d, e) {
|
|
|
282
287
|
if (!s || !d.value) return;
|
|
283
288
|
const g = () => {
|
|
284
289
|
const S = Array.from(d.value?.querySelectorAll("a[href]") ?? []).find(
|
|
285
|
-
(
|
|
290
|
+
(n) => n.getAttribute("href") === s.href
|
|
286
291
|
);
|
|
287
292
|
S && (S.focus({ preventScroll: !0 }), window.scrollTo({ top: s.top, behavior: "instant" }), o());
|
|
288
293
|
};
|
|
@@ -309,32 +314,32 @@ const Te = { key: 1 }, Le = {
|
|
|
309
314
|
width: { default: "full" }
|
|
310
315
|
},
|
|
311
316
|
setup(d) {
|
|
312
|
-
const e = d,
|
|
313
|
-
A(Z,
|
|
314
|
-
const c =
|
|
317
|
+
const e = d, a = N() ?? X();
|
|
318
|
+
A(Z, a);
|
|
319
|
+
const c = a.claimShell();
|
|
315
320
|
L(c);
|
|
316
321
|
const i = V("root");
|
|
317
|
-
Se(i,
|
|
322
|
+
Se(i, a);
|
|
318
323
|
const u = j("(max-width: 47.999rem)"), t = K(null);
|
|
319
324
|
A($e, t);
|
|
320
325
|
const o = k(() => {
|
|
321
326
|
if (t.value) return t.value;
|
|
322
327
|
if (e.back !== void 0) return e.back;
|
|
323
|
-
const
|
|
324
|
-
return
|
|
328
|
+
const n = e.path?.[e.path.length - 1];
|
|
329
|
+
return n ? { label: n.label, to: n.to } : null;
|
|
325
330
|
}), s = k(() => {
|
|
326
|
-
const
|
|
327
|
-
return
|
|
328
|
-
}), g =
|
|
331
|
+
const n = t.value;
|
|
332
|
+
return n ? n.path ? [...e.path ?? (e.back ? [e.back] : []), ...n.path] : null : e.path;
|
|
333
|
+
}), g = a.claim();
|
|
329
334
|
T(
|
|
330
335
|
() => [e.actions, e.documentTitle],
|
|
331
|
-
([
|
|
336
|
+
([n, C]) => g.setRegistration({ actions: n, leading: null, status: null, navTitle: null, documentTitle: C ?? null }),
|
|
332
337
|
{ immediate: !0 }
|
|
333
|
-
), T(o, (
|
|
338
|
+
), T(o, (n) => g.setBack(n), { immediate: !0 }), L(() => {
|
|
334
339
|
g.clearRegistration(), g.clearBack();
|
|
335
340
|
});
|
|
336
341
|
const S = { full: "", content: "max-w-content", readable: "max-w-readable" };
|
|
337
|
-
return (
|
|
342
|
+
return (n, C) => (r(), p("div", {
|
|
338
343
|
ref_key: "root",
|
|
339
344
|
ref: i,
|
|
340
345
|
class: "min-w-0 w-full flex-1 bg-surface-page",
|
|
@@ -344,14 +349,14 @@ const Te = { key: 1 }, Le = {
|
|
|
344
349
|
key: 0,
|
|
345
350
|
back: o.value,
|
|
346
351
|
path: s.value,
|
|
347
|
-
actions: l(
|
|
348
|
-
leading: l(
|
|
349
|
-
status: l(
|
|
352
|
+
actions: l(a).actions.value,
|
|
353
|
+
leading: l(a).leading.value,
|
|
354
|
+
status: l(a).status.value
|
|
350
355
|
}, q({ _: 2 }, [
|
|
351
|
-
|
|
356
|
+
n.$slots.pager ? {
|
|
352
357
|
name: "pager",
|
|
353
358
|
fn: x(() => [
|
|
354
|
-
v(
|
|
359
|
+
v(n.$slots, "pager")
|
|
355
360
|
]),
|
|
356
361
|
key: "0"
|
|
357
362
|
} : void 0
|
|
@@ -359,34 +364,34 @@ const Te = { key: 1 }, Le = {
|
|
|
359
364
|
m("div", {
|
|
360
365
|
class: Q(["mx-auto flex min-w-0 flex-col gap-section-gap pt-section-gap pr-[max(var(--app-screen-padding),var(--app-safe-right))] pb-[max(var(--app-screen-padding),var(--app-safe-bottom),calc(var(--bottom-dock-h,0px)+var(--app-screen-padding)))] pl-[max(var(--app-screen-padding),var(--app-safe-left))] lg:pt-[calc(var(--app-section-gap)*1.5)] lg:pr-[max(2.5rem,var(--app-safe-right))] lg:pl-[max(2.5rem,var(--app-safe-left))]", S[e.width]])
|
|
361
366
|
}, [
|
|
362
|
-
v(
|
|
367
|
+
v(n.$slots, "header", {}, () => [
|
|
363
368
|
b(ye, {
|
|
364
369
|
title: e.title,
|
|
365
370
|
description: e.description,
|
|
366
371
|
icon: e.icon,
|
|
367
372
|
count: e.count,
|
|
368
|
-
actions: o.value ? [] : l(
|
|
369
|
-
leading: o.value ? null : l(
|
|
370
|
-
status: o.value ? null : l(
|
|
373
|
+
actions: o.value ? [] : l(a).actions.value,
|
|
374
|
+
leading: o.value ? null : l(a).leading.value,
|
|
375
|
+
status: o.value ? null : l(a).status.value
|
|
371
376
|
}, null, 8, ["title", "description", "icon", "count", "actions", "leading", "status"])
|
|
372
377
|
]),
|
|
373
|
-
|
|
378
|
+
n.$slots.header && !o.value && !l(u) ? (r(), _(E, {
|
|
374
379
|
key: 0,
|
|
375
|
-
actions: l(
|
|
376
|
-
leading: l(
|
|
380
|
+
actions: l(a).actions.value,
|
|
381
|
+
leading: l(a).leading.value
|
|
377
382
|
}, null, 8, ["actions", "leading"])) : f("", !0),
|
|
378
|
-
|
|
379
|
-
v(
|
|
383
|
+
n.$slots.notices ? (r(), p("div", Te, [
|
|
384
|
+
v(n.$slots, "notices")
|
|
380
385
|
])) : f("", !0),
|
|
381
|
-
v(
|
|
382
|
-
|
|
383
|
-
v(
|
|
386
|
+
v(n.$slots, "default"),
|
|
387
|
+
n.$slots.pager && l(u) ? (r(), p("div", Le, [
|
|
388
|
+
v(n.$slots, "pager")
|
|
384
389
|
])) : f("", !0)
|
|
385
390
|
], 2),
|
|
386
|
-
|
|
391
|
+
n.$slots.bottom ? (r(), _(te, { key: 1 }, {
|
|
387
392
|
default: x(() => [
|
|
388
393
|
m("div", Ce, [
|
|
389
|
-
v(
|
|
394
|
+
v(n.$slots, "bottom")
|
|
390
395
|
])
|
|
391
396
|
]),
|
|
392
397
|
_: 3
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { defineComponent as
|
|
1
|
+
import { defineComponent as k, openBlock as n, createElementBlock as o, computed as $, Fragment as _, unref as i, renderSlot as y, renderList as b, createBlock as v, createVNode as c, withCtx as d, createElementVNode as m, toDisplayString as l, createCommentVNode as f, createTextVNode as g, normalizeClass as w, createSlots as x } from "vue";
|
|
2
2
|
import { useI18n as C } from "vue-i18n";
|
|
3
|
-
import { _ as
|
|
4
|
-
import { _ as
|
|
5
|
-
import { _ as
|
|
3
|
+
import { _ as h } from "./Button.vue_vue_type_script_setup_true_lang-CL9Qh5yq.js";
|
|
4
|
+
import { _ as S } from "./Icon.vue_vue_type_script_lang-D7oC-d-S.js";
|
|
5
|
+
import { _ as E } from "./Banner.vue_vue_type_script_setup_true_lang-DSStj_5z.js";
|
|
6
6
|
import { _ as V } from "./EmptyState.vue_vue_type_script_setup_true_lang-50p-Mp8I.js";
|
|
7
7
|
function K(s) {
|
|
8
8
|
return s.status === "loading" || s.status === "failed" ? void 0 : s.value;
|
|
@@ -10,13 +10,17 @@ function K(s) {
|
|
|
10
10
|
function z(s) {
|
|
11
11
|
return s == null || s === "" || Array.isArray(s) && s.length === 0;
|
|
12
12
|
}
|
|
13
|
+
function M(s) {
|
|
14
|
+
const { loading: t, error: a, value: r } = s, e = r !== void 0;
|
|
15
|
+
return t ? e ? { status: "refreshing", value: r } : { status: "loading" } : a ? e ? { status: "stale", value: r, error: a } : { status: "failed", error: a } : e ? { status: "loaded", value: r } : { status: "loading" };
|
|
16
|
+
}
|
|
13
17
|
const A = {
|
|
14
18
|
class: "skeleton-bar animate-pulse rounded-lg bg-fill-strong motion-reduce:animate-none",
|
|
15
19
|
"aria-hidden": "true"
|
|
16
|
-
}, N = /* @__PURE__ */
|
|
20
|
+
}, N = /* @__PURE__ */ k({
|
|
17
21
|
__name: "Skeleton",
|
|
18
22
|
setup(s) {
|
|
19
|
-
return (t,
|
|
23
|
+
return (t, a) => (n(), o("div", A));
|
|
20
24
|
}
|
|
21
25
|
}), B = ["aria-label"], D = {
|
|
22
26
|
key: 1,
|
|
@@ -24,7 +28,7 @@ const A = {
|
|
|
24
28
|
}, I = { class: "flex flex-wrap items-center justify-between gap-3" }, L = { key: 0 }, T = ["aria-busy"], F = { class: "min-w-0" }, R = {
|
|
25
29
|
key: 3,
|
|
26
30
|
"data-async": "empty"
|
|
27
|
-
},
|
|
31
|
+
}, P = /* @__PURE__ */ k({
|
|
28
32
|
inheritAttrs: !1,
|
|
29
33
|
__name: "AsyncSection",
|
|
30
34
|
props: {
|
|
@@ -37,40 +41,40 @@ const A = {
|
|
|
37
41
|
},
|
|
38
42
|
emits: ["retry"],
|
|
39
43
|
setup(s) {
|
|
40
|
-
const t = s, { t:
|
|
44
|
+
const t = s, { t: a } = C(), r = $(() => {
|
|
41
45
|
const e = t.state;
|
|
42
46
|
return e.status === "loading" || e.status === "failed" || e.status === "loaded" && t.isEmpty(e.value) ? null : { value: e.value };
|
|
43
47
|
});
|
|
44
|
-
return (e,
|
|
45
|
-
t.state.status === "loading" ? (
|
|
48
|
+
return (e, u) => (n(), o(_, null, [
|
|
49
|
+
t.state.status === "loading" ? (n(), o("div", {
|
|
46
50
|
key: 0,
|
|
47
51
|
class: "space-y-3",
|
|
48
52
|
"data-async": "loading",
|
|
49
53
|
role: "status",
|
|
50
54
|
"aria-busy": "true",
|
|
51
|
-
"aria-label":
|
|
55
|
+
"aria-label": i(a)("core.state.loading")
|
|
52
56
|
}, [
|
|
53
57
|
y(e.$slots, "skeleton", {}, () => [
|
|
54
|
-
(
|
|
58
|
+
(n(!0), o(_, null, b(t.skeletonRows, (p) => (n(), v(N, { key: p }))), 128))
|
|
55
59
|
])
|
|
56
|
-
], 8, B)) : t.state.status === "failed" || t.state.status === "stale" && t.state.error ? (
|
|
57
|
-
|
|
60
|
+
], 8, B)) : t.state.status === "failed" || t.state.status === "stale" && t.state.error ? (n(), o("div", D, [
|
|
61
|
+
c(E, {
|
|
58
62
|
tone: "warning",
|
|
59
63
|
role: "alert"
|
|
60
64
|
}, {
|
|
61
|
-
default:
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
t.state.status === "stale" ? (
|
|
65
|
+
default: d(() => [
|
|
66
|
+
m("div", I, [
|
|
67
|
+
m("div", null, [
|
|
68
|
+
m("p", null, l(t.state.error), 1),
|
|
69
|
+
t.state.status === "stale" ? (n(), o("p", L, l(i(a)("core.state.stale")), 1)) : f("", !0)
|
|
66
70
|
]),
|
|
67
|
-
|
|
71
|
+
c(h, {
|
|
68
72
|
prominence: "secondary",
|
|
69
73
|
size: "sm",
|
|
70
|
-
onClick:
|
|
74
|
+
onClick: u[0] || (u[0] = (p) => e.$emit("retry"))
|
|
71
75
|
}, {
|
|
72
|
-
default:
|
|
73
|
-
g(i(
|
|
76
|
+
default: d(() => [
|
|
77
|
+
g(l(i(a)("core.actions.retry")), 1)
|
|
74
78
|
]),
|
|
75
79
|
_: 1
|
|
76
80
|
})
|
|
@@ -78,54 +82,55 @@ const A = {
|
|
|
78
82
|
]),
|
|
79
83
|
_: 1
|
|
80
84
|
})
|
|
81
|
-
])) : t.state.status === "refreshing" || t.state.status === "stale" ? (
|
|
85
|
+
])) : t.state.status === "refreshing" || t.state.status === "stale" ? (n(), o("div", {
|
|
82
86
|
key: 2,
|
|
83
87
|
"data-async": "stale",
|
|
84
88
|
role: "status",
|
|
85
89
|
"aria-busy": t.state.status === "refreshing" || void 0,
|
|
86
90
|
class: "flex w-fit max-w-full flex-wrap items-center gap-2 rounded-group bg-fill py-1 pr-1 pl-3 text-footnote text-content-muted"
|
|
87
91
|
}, [
|
|
88
|
-
|
|
92
|
+
c(i(S), {
|
|
89
93
|
name: t.state.status === "refreshing" ? "loader4Line" : "refreshLine",
|
|
90
94
|
size: 14,
|
|
91
|
-
class:
|
|
95
|
+
class: w(t.state.status === "refreshing" ? "animate-spin" : "")
|
|
92
96
|
}, null, 8, ["name", "class"]),
|
|
93
|
-
|
|
94
|
-
t.state.status === "stale" ? (
|
|
97
|
+
m("p", F, l(i(a)(t.state.status === "refreshing" ? "core.state.refreshing" : "core.state.stale")), 1),
|
|
98
|
+
t.state.status === "stale" ? (n(), v(h, {
|
|
95
99
|
key: 0,
|
|
96
100
|
prominence: "plain",
|
|
97
101
|
size: "xs",
|
|
98
|
-
onClick:
|
|
102
|
+
onClick: u[1] || (u[1] = (p) => e.$emit("retry"))
|
|
99
103
|
}, {
|
|
100
|
-
default:
|
|
101
|
-
g(i(
|
|
104
|
+
default: d(() => [
|
|
105
|
+
g(l(i(a)("core.actions.retry")), 1)
|
|
102
106
|
]),
|
|
103
107
|
_: 1
|
|
104
|
-
})) :
|
|
105
|
-
], 8, T)) :
|
|
106
|
-
|
|
107
|
-
title: t.emptyTitle ??
|
|
108
|
+
})) : f("", !0)
|
|
109
|
+
], 8, T)) : r.value ? f("", !0) : (n(), o("div", R, [
|
|
110
|
+
c(V, {
|
|
111
|
+
title: t.emptyTitle ?? i(a)("core.state.empty"),
|
|
108
112
|
description: t.emptyDescription,
|
|
109
113
|
icon: t.emptyIcon
|
|
110
114
|
}, x({ _: 2 }, [
|
|
111
115
|
e.$slots["empty-actions"] ? {
|
|
112
116
|
name: "actions",
|
|
113
|
-
fn:
|
|
117
|
+
fn: d(() => [
|
|
114
118
|
y(e.$slots, "empty-actions")
|
|
115
119
|
]),
|
|
116
120
|
key: "0"
|
|
117
121
|
} : void 0
|
|
118
122
|
]), 1032, ["title", "description", "icon"])
|
|
119
123
|
])),
|
|
120
|
-
|
|
121
|
-
value:
|
|
122
|
-
}, void 0, void 0, 4) :
|
|
124
|
+
r.value ? y(e.$slots, "default", {
|
|
125
|
+
value: r.value.value
|
|
126
|
+
}, void 0, void 0, 4) : f("", !0)
|
|
123
127
|
], 64));
|
|
124
128
|
}
|
|
125
129
|
});
|
|
126
130
|
export {
|
|
127
|
-
|
|
131
|
+
P as _,
|
|
128
132
|
N as a,
|
|
133
|
+
M as b,
|
|
129
134
|
z as i,
|
|
130
135
|
K as v
|
|
131
136
|
};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { defineComponent as m, computed as x, ref as n, watch as p, openBlock as r, createElementBlock as i, normalizeClass as c, createTextVNode as v, toDisplayString as g, createCommentVNode as z } from "vue";
|
|
2
|
+
function b(a) {
|
|
3
|
+
const e = (a ?? "").trim().split(/\s+/).filter(Boolean);
|
|
4
|
+
return (e.length > 1 ? [e[0]?.[0], e[e.length - 1]?.[0]] : [e[0]?.[0]]).filter(Boolean).join("").toLocaleUpperCase() || "?";
|
|
5
|
+
}
|
|
6
|
+
const h = ["src", "alt", "data-loaded"], k = /* @__PURE__ */ m({
|
|
7
|
+
__name: "Avatar",
|
|
8
|
+
props: {
|
|
9
|
+
name: { default: "" },
|
|
10
|
+
src: { default: null },
|
|
11
|
+
size: { default: "sm" },
|
|
12
|
+
tone: { default: "neutral" }
|
|
13
|
+
},
|
|
14
|
+
setup(a) {
|
|
15
|
+
const e = a, o = {
|
|
16
|
+
xs: "size-5 text-3xs",
|
|
17
|
+
sm: "size-7 text-2xs",
|
|
18
|
+
md: "size-9 text-xs",
|
|
19
|
+
lg: "size-12 text-base",
|
|
20
|
+
// Record header: 72px on wide screens, 96px on compact ones. Square by aspect ratio, so it
|
|
21
|
+
// can shrink in a very narrow column (enlarged text).
|
|
22
|
+
xl: "aspect-square w-18 max-w-full text-2xl compact:w-24 compact:text-3xl"
|
|
23
|
+
}, u = {
|
|
24
|
+
neutral: "bg-fill text-content-muted",
|
|
25
|
+
anchor: "bg-tile-anchor text-tile-anchor-foreground"
|
|
26
|
+
}, d = x(() => b(e.name)), t = n(!1), s = n(!1);
|
|
27
|
+
return p(() => e.src, () => {
|
|
28
|
+
t.value = !1, s.value = !1;
|
|
29
|
+
}), (w, l) => (r(), i("span", {
|
|
30
|
+
"aria-hidden": "true",
|
|
31
|
+
class: c(["relative inline-flex shrink-0 select-none items-center justify-center overflow-hidden rounded-full font-semibold", [o[e.size], u[e.tone]]])
|
|
32
|
+
}, [
|
|
33
|
+
v(g(d.value), 1),
|
|
34
|
+
e.src && !s.value ? (r(), i("img", {
|
|
35
|
+
key: e.src,
|
|
36
|
+
src: e.src,
|
|
37
|
+
alt: e.name ?? "",
|
|
38
|
+
draggable: "false",
|
|
39
|
+
"data-loaded": t.value || void 0,
|
|
40
|
+
class: c(["absolute inset-0 size-full rounded-full object-cover", t.value ? "" : "opacity-0"]),
|
|
41
|
+
onLoad: l[0] || (l[0] = (f) => t.value = !0),
|
|
42
|
+
onError: l[1] || (l[1] = (f) => s.value = !0)
|
|
43
|
+
}, null, 42, h)) : z("", !0)
|
|
44
|
+
], 2));
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
export {
|
|
48
|
+
k as _,
|
|
49
|
+
b as i
|
|
50
|
+
};
|
|
@@ -1,11 +1,11 @@
|
|
|
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-
|
|
3
|
+
import { P as V, i as R } from "./index-BhtJR4c_.js";
|
|
4
4
|
import { u as S } from "./platform-PZpUkkMS.js";
|
|
5
5
|
import { b as B } from "./routeResource-DlTsGTg_.js";
|
|
6
|
-
import { _ as F } from "./AsyncSection.vue_vue_type_script_setup_true_lang-
|
|
6
|
+
import { _ as F } from "./AsyncSection.vue_vue_type_script_setup_true_lang-B0NfvG3B.js";
|
|
7
7
|
import { u as L } from "./useLoad-M7V-AVwR.js";
|
|
8
|
-
import { _ as P } from "./Avatar.vue_vue_type_script_setup_true_lang-
|
|
8
|
+
import { _ as P } from "./Avatar.vue_vue_type_script_setup_true_lang-BPj_fkJR.js";
|
|
9
9
|
import { _ as I } from "./IconTile.vue_vue_type_script_setup_true_lang-_FXvaj93.js";
|
|
10
10
|
import { u as O } from "./format-D8X4zsx6.js";
|
|
11
11
|
import { _ as T } from "./FormGroup.vue_vue_type_script_setup_true_lang-DSwSRsA5.js";
|
|
@@ -2,7 +2,7 @@ import { hasInjectionContext as lt, inject as ot, shallowRef as xe, computed as
|
|
|
2
2
|
import { routerKey as ct } from "vue-router";
|
|
3
3
|
import { i as qe, a as ut } from "./error-CD7x0Jrz.js";
|
|
4
4
|
import { a as dt, d as Re, o as ft, L as Te, e as je, w as pt, b as vt } from "./http-BFfkA7gN.js";
|
|
5
|
-
import { a as mt } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-
|
|
5
|
+
import { a as mt } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-GUTIXuNd.js";
|
|
6
6
|
import { useI18n as he } from "vue-i18n";
|
|
7
7
|
import { _ as ce, u as Ne } from "./Button.vue_vue_type_script_setup_true_lang-CL9Qh5yq.js";
|
|
8
8
|
import { _ as Ge } from "./Tabs.vue_vue_type_script_setup_true_lang-CcMcE38r.js";
|
|
@@ -10,7 +10,7 @@ import { u as Pe } from "./format-D8X4zsx6.js";
|
|
|
10
10
|
import { _ as I } from "./Icon.vue_vue_type_script_lang-D7oC-d-S.js";
|
|
11
11
|
import { _ as Ae } from "./Banner.vue_vue_type_script_setup_true_lang-DSStj_5z.js";
|
|
12
12
|
import { _ as Ee } from "./EmptyState.vue_vue_type_script_setup_true_lang-50p-Mp8I.js";
|
|
13
|
-
import { u as bt, _ as gt } from "./rowLayout-
|
|
13
|
+
import { u as bt, _ as gt } from "./rowLayout-BBFyLbOl.js";
|
|
14
14
|
import { _ as Ye } from "./Menu.vue_vue_type_script_setup_true_lang-DsFOeCVe.js";
|
|
15
15
|
import { _ as Ze } from "./Popover.vue_vue_type_script_setup_true_lang-C70GrCP7.js";
|
|
16
16
|
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-
|
|
2
|
+
import { u as R, _ as L } from "./rowLayout-BBFyLbOl.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-
|
|
4
|
+
import { u as V, _ as N } from "./CollectionPage.vue_vue_type_script_setup_true_lang-Bnpv9TEj.js";
|
|
5
5
|
import { u as P } from "./describeError-B-NMa--w.js";
|
|
6
6
|
import { u as I } from "./format-D8X4zsx6.js";
|
|
7
|
-
import { e as a, R as O } from "./index-
|
|
7
|
+
import { e as a, R as O } from "./index-sTBBHqNG.js";
|
|
8
8
|
import { _ as W } from "./AlertDialog.vue_vue_type_script_setup_true_lang-whA4WLdl.js";
|
|
9
9
|
import { t as i } from "./toast-CqSDTWRX.js";
|
|
10
10
|
import { u as Y } from "./useLoad-M7V-AVwR.js";
|
|
@@ -8,7 +8,7 @@ import { _ as F } from "./FormView.vue_vue_type_script_setup_true_lang-BUrYkjmF.
|
|
|
8
8
|
import { _ as L } from "./SelectField.vue_vue_type_script_setup_true_lang-C3FbRQW7.js";
|
|
9
9
|
import { _ as f } from "./TextField.vue_vue_type_script_setup_true_lang-CP2WeU36.js";
|
|
10
10
|
import { u as A } from "./useSaveChrome-7huA3FzR.js";
|
|
11
|
-
import { P as D, b as G, i as I } from "./index-
|
|
11
|
+
import { P as D, b as G, i as I } from "./index-BhtJR4c_.js";
|
|
12
12
|
import { t as M } from "./toast-CqSDTWRX.js";
|
|
13
13
|
import { u as O } from "./platform-PZpUkkMS.js";
|
|
14
14
|
import { b as U } from "./routeResource-DlTsGTg_.js";
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { defineComponent as _, computed as d, openBlock as y, createBlock as w, unref as e, withCtx as i, createVNode as l } from "vue";
|
|
2
2
|
import { useI18n as v } from "vue-i18n";
|
|
3
3
|
import { useRoute as k, useRouter as R } from "vue-router";
|
|
4
|
-
import { a as $ } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-
|
|
5
|
-
import { _ as b } from "./AsyncSection.vue_vue_type_script_setup_true_lang-
|
|
4
|
+
import { a as $ } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-GUTIXuNd.js";
|
|
5
|
+
import { _ as b } from "./AsyncSection.vue_vue_type_script_setup_true_lang-B0NfvG3B.js";
|
|
6
6
|
import { u as g } from "./useLoad-M7V-AVwR.js";
|
|
7
|
-
import { a as x, c as u } from "./index-
|
|
8
|
-
import { _ as P } from "./RoleEditor.vue_vue_type_script_setup_true_lang-
|
|
7
|
+
import { a as x, c as u } from "./index-C3E6DcO0.js";
|
|
8
|
+
import { _ as P } from "./RoleEditor.vue_vue_type_script_setup_true_lang-DRHmjA9w.js";
|
|
9
9
|
const V = /* @__PURE__ */ _({
|
|
10
10
|
__name: "NewRolePage",
|
|
11
11
|
setup(h) {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { defineComponent as A, watch as X, openBlock as v, createBlock as S, unref as e, withCtx as u, createVNode as r, mergeProps as E, useModel as pe, useId as fe, useTemplateRef as J, ref as w, onMounted as me, onBeforeUnmount as ve, computed as M, createElementBlock as I, withModifiers as _e, toDisplayString as b, createCommentVNode as W, createElementVNode as x, createTextVNode as N, Fragment as le, mergeModels as oe } from "vue";
|
|
2
2
|
import { useI18n as R } from "vue-i18n";
|
|
3
|
-
import { a as ge } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-
|
|
3
|
+
import { a as ge } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-GUTIXuNd.js";
|
|
4
4
|
import { u as L } from "./platform-PZpUkkMS.js";
|
|
5
|
-
import { _ as Q } from "./AsyncSection.vue_vue_type_script_setup_true_lang-
|
|
5
|
+
import { _ as Q } from "./AsyncSection.vue_vue_type_script_setup_true_lang-B0NfvG3B.js";
|
|
6
6
|
import { u as Y } from "./useLoad-M7V-AVwR.js";
|
|
7
|
-
import { i as k, d as G } from "./index-
|
|
7
|
+
import { i as k, d as G } from "./index-BhtJR4c_.js";
|
|
8
8
|
import { u as Z } from "./FormErrors.vue_vue_type_script_setup_true_lang-DGOSc-PS.js";
|
|
9
9
|
import { _ as ee } from "./FormView.vue_vue_type_script_setup_true_lang-BUrYkjmF.js";
|
|
10
10
|
import { _ as U } from "./TextField.vue_vue_type_script_setup_true_lang-CP2WeU36.js";
|
|
@@ -23,7 +23,7 @@ import { _ as he } from "./OtpInput.vue_vue_type_script_setup_true_lang-gp4FfWAH
|
|
|
23
23
|
import { _ as $e } from "./AlertDialog.vue_vue_type_script_setup_true_lang-whA4WLdl.js";
|
|
24
24
|
import { _ as qe } from "./SessionList.vue_vue_type_script_setup_true_lang-D5qm77Zo.js";
|
|
25
25
|
import { _ as ke } from "./PageBar.vue_vue_type_script_setup_true_lang-B7qdEeej.js";
|
|
26
|
-
import { _ as Ce } from "./SignInTable.vue_vue_type_script_setup_true_lang-
|
|
26
|
+
import { _ as Ce } from "./SignInTable.vue_vue_type_script_setup_true_lang-Bs0yTi2E.js";
|
|
27
27
|
import { _ as Se } from "./ViewTabs.vue_vue_type_script_setup_true_lang-BJIoZAlH.js";
|
|
28
28
|
const Pe = /* @__PURE__ */ A({
|
|
29
29
|
__name: "DetailsPanel",
|