@wssto2/vue-core 0.4.27 → 0.5.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 (144) hide show
  1. package/CHANGELOG.md +79 -0
  2. package/dist/{AccessGate.vue_vue_type_script_setup_true_lang-J5HoyGNJ.js → AccessGate.vue_vue_type_script_setup_true_lang-Nw1IsB8N.js} +1 -1
  3. package/dist/{ActionRow.vue_vue_type_script_setup_true_lang-QPvYudWc.js → ActionRow.vue_vue_type_script_setup_true_lang-BCgKzUvG.js} +1 -1
  4. package/dist/{Activity-xtkZq4vG.js → Activity-CoGI2_GL.js} +7 -7
  5. package/dist/{Changes-BPB8h56i.js → Changes-Cwfe6wbX.js} +6 -6
  6. package/dist/{CollectionPage.vue_vue_type_script_setup_true_lang-CVEYkb26.js → CollectionPage.vue_vue_type_script_setup_true_lang-CtvHtFLy.js} +5 -5
  7. package/dist/{DataTable.vue_vue_type_script_setup_true_lang-DcQQ-uQS.js → DataTable.vue_vue_type_script_setup_true_lang-BEvz5zqo.js} +1 -1
  8. package/dist/{DateField.vue_vue_type_script_setup_true_lang-CpuH0WTl.js → DateField.vue_vue_type_script_setup_true_lang-DRuWzSaX.js} +1 -1
  9. package/dist/{DeadLetters-DeYxkTMh.js → DeadLetters-DyA5Dqn0.js} +7 -7
  10. package/dist/{FormErrors.vue_vue_type_script_setup_true_lang-DGOSc-PS.js → FormErrors.vue_vue_type_script_setup_true_lang-D7edzNTL.js} +2 -2
  11. package/dist/{FormGroup.vue_vue_type_script_setup_true_lang-DSwSRsA5.js → FormGroup.vue_vue_type_script_setup_true_lang-BPchlRCl.js} +2 -2
  12. package/dist/{FormView.vue_vue_type_script_setup_true_lang-BUrYkjmF.js → FormView.vue_vue_type_script_setup_true_lang-CPSYV7iQ.js} +2 -2
  13. package/dist/{General-BLbn4BCc.js → General-DTEfxWls.js} +10 -10
  14. package/dist/MenuButton.vue_vue_type_script_setup_true_lang-AGbN9r5q.js +28 -0
  15. package/dist/{NewRolePage-B7DwFWPk.js → NewRolePage-CRZoUajV.js} +3 -3
  16. package/dist/{NumberField.vue_vue_type_script_setup_true_lang-DaE5BLm4.js → NumberField.vue_vue_type_script_setup_true_lang-ButMV_sf.js} +1 -1
  17. package/dist/ProfilePage-DLY81mvN.js +764 -0
  18. package/dist/RoleEditor.vue_vue_type_script_setup_true_lang-gXbxXG2R.js +325 -0
  19. package/dist/RolePage-B9t586Q8.js +314 -0
  20. package/dist/{RolesPage-B5RwSZ89.js → RolesPage-BRdG-OSL.js} +6 -6
  21. package/dist/{SectionNavigator.vue_vue_type_script_setup_true_lang-Dmv6TpCi.js → SectionNavigator.vue_vue_type_script_setup_true_lang-Cy9Oi0ts.js} +1 -1
  22. package/dist/{SegmentedField.vue_vue_type_script_setup_true_lang-Dg-_ZjgR.js → SegmentedField.vue_vue_type_script_setup_true_lang-BwyMvkis.js} +1 -1
  23. package/dist/{SelectField.vue_vue_type_script_setup_true_lang-C3FbRQW7.js → SelectField.vue_vue_type_script_setup_true_lang-BzQC1qDQ.js} +11 -12
  24. package/dist/SessionList.vue_vue_type_script_setup_true_lang-DhoTd5D7.js +133 -0
  25. package/dist/{Sessions-wEdUsK-U.js → Sessions-vGyUOnPG.js} +5 -5
  26. package/dist/SettingsPage-V8WeADZZ.js +632 -0
  27. package/dist/{SignIn-CK9rq8LQ.js → SignIn-C-3i8RG6.js} +7 -7
  28. package/dist/{SignInPage-BORsM1g4.js → SignInPage-D2NA3VKU.js} +4 -4
  29. package/dist/SignIns-eoYPB6kB.js +121 -0
  30. package/dist/{SwitchField.vue_vue_type_script_setup_true_lang-ALvJisiP.js → SwitchField.vue_vue_type_script_setup_true_lang-D_-HACqT.js} +1 -1
  31. package/dist/{TextField.vue_vue_type_script_setup_true_lang-CP2WeU36.js → TextField.vue_vue_type_script_setup_true_lang-DTAQPbW0.js} +2 -2
  32. package/dist/{TextareaField.vue_vue_type_script_setup_true_lang-BJ4__cvJ.js → TextareaField.vue_vue_type_script_setup_true_lang-DsjK2C9T.js} +1 -1
  33. package/dist/{TimeField.vue_vue_type_script_setup_true_lang-DBxKAWRo.js → TimeField.vue_vue_type_script_setup_true_lang-Cz7KhUqt.js} +1 -1
  34. package/dist/Timestamp.vue_vue_type_script_setup_true_lang-CutyQkJb.js +52 -0
  35. package/dist/{UserRecord-C1SzdpKu.js → UserRecord-BaQl2zzQ.js} +13 -13
  36. package/dist/{UsersList-B3hc683r.js → UsersList-BfXWgH5K.js} +9 -9
  37. package/dist/access/RoleCompareDialog.vue.d.ts +1 -1
  38. package/dist/access/RoleEditor.vue.d.ts +2 -0
  39. package/dist/access/constraints.d.ts +28 -0
  40. package/dist/access/context.d.ts +5 -0
  41. package/dist/access/feature.d.ts +17 -0
  42. package/dist/access/index.d.ts +3 -1
  43. package/dist/access/index.js +11 -9
  44. package/dist/access/refusals.d.ts +20 -2
  45. package/dist/app/index.js +6 -6
  46. package/dist/client/index.js +19 -11
  47. package/dist/{client-k9euDWF4.js → client-BHPFfBj3.js} +20 -20
  48. package/dist/collection/index.js +5 -5
  49. package/dist/content/Timestamp.vue.d.ts +3 -2
  50. package/dist/content/index.js +66 -37
  51. package/dist/{contributions-BVBZP5Jb.js → contributions-DVQPcjJz.js} +1 -1
  52. package/dist/{describeError-B-NMa--w.js → describeError-BqGAUZgX.js} +1 -1
  53. package/dist/{error-CD7x0Jrz.js → error-Bb_dr_Ay.js} +2 -2
  54. package/dist/{fieldMessages-6HVzSDqG.js → fieldMessages-DTXpWnBd.js} +7 -7
  55. package/dist/form/index.js +1235 -1412
  56. package/dist/{guards-BJZjc3FZ.js → guards-DRh4zmxO.js} +1 -1
  57. package/dist/{http-BFfkA7gN.js → http-D_pBg22D.js} +1 -1
  58. package/dist/i18n/index.d.ts +2 -2
  59. package/dist/i18n/index.js +30 -30
  60. package/dist/identity/index.d.ts +2 -0
  61. package/dist/identity/index.js +8 -6
  62. package/dist/identity/profile/DetailsFields.vue.d.ts +8 -0
  63. package/dist/identity/profile/{DetailsPanel.vue.d.ts → DetailsGroup.vue.d.ts} +4 -1
  64. package/dist/identity/profile/{EmailPanel.vue.d.ts → EmailGroup.vue.d.ts} +1 -1
  65. package/dist/identity/profile/SignInsGroup.vue.d.ts +2 -0
  66. package/dist/identity/profile/profileSections.d.ts +37 -0
  67. package/dist/identity/shared/SignInList.vue.d.ts +22 -0
  68. package/dist/identity/shared/deviceLabel.d.ts +7 -0
  69. package/dist/identity/useReturnToOwnAccount.d.ts +10 -0
  70. package/dist/identity/users/context.d.ts +3 -0
  71. package/dist/identity/users/feature.d.ts +3 -0
  72. package/dist/index-WkbzC_ee.js +745 -0
  73. package/dist/index-g-qbUeTk.js +630 -0
  74. package/dist/index-kqk7Mclb.js +480 -0
  75. package/dist/index.d.ts +1 -1
  76. package/dist/index.js +1 -1
  77. package/dist/modules/notification/entities.d.ts +19 -0
  78. package/dist/modules/notification/routes.d.ts +25 -1
  79. package/dist/modules/notification/schemas.d.ts +24 -0
  80. package/dist/{navigation-DpcDF0rX.js → navigation-DuQwti76.js} +1 -1
  81. package/dist/{neighbors-RVQ4O3Qv.js → neighbors-IMRQ4rkm.js} +22 -22
  82. package/dist/notifications/context.d.ts +24 -1
  83. package/dist/notifications/feature.d.ts +10 -1
  84. package/dist/notifications/index.d.ts +1 -1
  85. package/dist/notifications/index.js +1 -1
  86. package/dist/notifications/push/DevicesSection.vue.d.ts +12 -0
  87. package/dist/notifications/push/ThisDeviceSection.vue.d.ts +15 -0
  88. package/dist/notifications/push/browser.d.ts +40 -0
  89. package/dist/notifications/push/devices.d.ts +15 -0
  90. package/dist/notifications/push/thisDevice.d.ts +28 -0
  91. package/dist/notifications/settings/ChannelsSection.vue.d.ts +16 -0
  92. package/dist/notifications/settings/{QuietHoursPanel.vue.d.ts → QuietHoursSection.vue.d.ts} +3 -1
  93. package/dist/notifications/settings/SettingsBody.vue.d.ts +17 -0
  94. package/dist/notifications/settings/settings.d.ts +4 -3
  95. package/dist/notifications/settings/state.d.ts +4 -2
  96. package/dist/options-g8RwEhBk.js +366 -0
  97. package/dist/overlay/MenuButton.vue.d.ts +3 -2
  98. package/dist/overlay/index.js +37 -59
  99. package/dist/page/index.js +1 -1
  100. package/dist/phone/index.js +10 -11
  101. package/dist/platform/index.js +3 -3
  102. package/dist/{platform-PZpUkkMS.js → platform-Dl1fbScN.js} +2 -2
  103. package/dist/push-worker/index.d.ts +91 -0
  104. package/dist/push-worker/index.js +54 -0
  105. package/dist/resource/index.js +1 -1
  106. package/dist/{routeResource-DlTsGTg_.js → routeResource-CcYA75T2.js} +2 -2
  107. package/dist/router/index.js +3 -3
  108. package/dist/{rowLayout-Dh749umr.js → rowLayout-BBFyLbOl.js} +1 -1
  109. package/dist/{sections-CeZl-Jxg.js → sections-D5rgQ4YB.js} +1 -1
  110. package/dist/shell/index.js +3 -3
  111. package/dist/signInEvents-DWShrJox.js +30 -0
  112. package/dist/state/index.js +1 -1
  113. package/dist/{status-D9iQJJiz.js → status-C2gHqkj6.js} +2 -2
  114. package/dist/styles.css +1 -1
  115. package/dist/{suggestions-DHJFKB26.js → suggestions-CfFTHi8y.js} +2 -2
  116. package/dist/testing/index.js +1 -1
  117. package/dist/{useCommand-Cj-APj-P.js → useCommand-CtqheKUv.js} +2 -2
  118. package/dist/useGroupSheet-ATvc0IiM.js +278 -0
  119. package/dist/{useLoad-M7V-AVwR.js → useLoad-W4tfxmm5.js} +1 -1
  120. package/dist/{useResourceForm-tGYTfKhH.js → useResourceForm-CJfl8rj_.js} +1 -1
  121. package/package.json +6 -2
  122. package/dist/KeyValue.vue_vue_type_script_setup_true_lang-wcZcvnow.js +0 -35
  123. package/dist/OtpInput.vue_vue_type_script_setup_true_lang-gp4FfWAH.js +0 -95
  124. package/dist/PanelActions.vue_vue_type_script_setup_true_lang-E9VdIGkf.js +0 -46
  125. package/dist/ProfilePage-CQYHj9Ns.js +0 -654
  126. package/dist/RoleEditor.vue_vue_type_script_setup_true_lang-DRHmjA9w.js +0 -300
  127. package/dist/RolePage-ODFu68Ce.js +0 -315
  128. package/dist/SessionList.vue_vue_type_script_setup_true_lang-D5qm77Zo.js +0 -111
  129. package/dist/SettingsPage-BVrMihx0.js +0 -255
  130. package/dist/SignInTable.vue_vue_type_script_setup_true_lang-AakWNvaM.js +0 -79
  131. package/dist/SignIns-C-8kVf7I.js +0 -66
  132. package/dist/Timestamp.vue_vue_type_script_setup_true_lang-DRmzPDOP.js +0 -51
  133. package/dist/control-B4SdblL6.js +0 -350
  134. package/dist/identity/profile/PanelActions.vue.d.ts +0 -17
  135. package/dist/index-C3E6DcO0.js +0 -706
  136. package/dist/index-LP6NNnow.js +0 -459
  137. package/dist/index-qUaGJ9j2.js +0 -504
  138. package/dist/notifications/settings/EmailPanel.vue.d.ts +0 -14
  139. package/dist/options-Ba_0uLWN.js +0 -18
  140. package/dist/route-goWMxDUN.js +0 -13
  141. package/dist/transport-BnP7WC0Y.js +0 -4
  142. /package/dist/identity/{profile/PasswordPanel.vue.d.ts → ReturnMenuItem.vue.d.ts} +0 -0
  143. /package/dist/identity/profile/{SessionsPanel.vue.d.ts → PasswordGroup.vue.d.ts} +0 -0
  144. /package/dist/identity/profile/{SignInsPanel.vue.d.ts → SessionsGroup.vue.d.ts} +0 -0
@@ -0,0 +1,91 @@
1
+ /** The JSON go-core's push worker sends (NOTIF-DEVICE-001): no secrets and no customer contact data. */
2
+ export interface PushPayload {
3
+ /** 0 for a bundle of several notifications. */
4
+ notification_id: number;
5
+ category: string;
6
+ title: string;
7
+ body: string;
8
+ /** An in-app path. */
9
+ link: string;
10
+ /** Notifications with the same tag replace each other. */
11
+ tag: string;
12
+ /** For the app icon badge; absent when the server did not say. */
13
+ unread_count?: number;
14
+ }
15
+ export interface PushHandlersOptions {
16
+ /** The notification's icon (a URL on the application's origin). */
17
+ icon?: string;
18
+ /** The small monochrome badge some platforms draw; default the icon. */
19
+ badge?: string;
20
+ /** Shown when a push carries no title. Default "". */
21
+ fallbackTitle?: string;
22
+ }
23
+ /** A push payload read defensively: a missing or malformed field becomes its empty value, so a notification is always shown. */
24
+ export declare function readPayload(raw: unknown): PushPayload;
25
+ /**
26
+ * The path, query and hash of a link when it stays on `origin`, "/" otherwise: a payload can name another site or a
27
+ * `javascript:` URL, and only the application's own pages are ever opened.
28
+ */
29
+ export declare function sameOriginLink(link: unknown, origin: string): string;
30
+ interface WaitableEvent {
31
+ waitUntil(work: Promise<unknown>): void;
32
+ }
33
+ interface PushEventLike extends WaitableEvent {
34
+ data: {
35
+ json(): unknown;
36
+ } | null;
37
+ }
38
+ interface NotificationClickEventLike extends WaitableEvent {
39
+ notification: {
40
+ close(): void;
41
+ data?: unknown;
42
+ };
43
+ }
44
+ interface WindowClientLike {
45
+ url: string;
46
+ focus(): Promise<unknown>;
47
+ navigate?(url: string): Promise<unknown>;
48
+ }
49
+ /** The part of the service worker's global scope the handlers use; `self` is one. */
50
+ export interface PushWorkerScope {
51
+ addEventListener(type: "push", listener: (event: PushEventLike) => void): void;
52
+ addEventListener(type: "notificationclick", listener: (event: NotificationClickEventLike) => void): void;
53
+ location: {
54
+ origin: string;
55
+ };
56
+ registration: {
57
+ showNotification(title: string, options: {
58
+ body: string;
59
+ icon?: string;
60
+ badge?: string;
61
+ tag?: string;
62
+ data: {
63
+ notification_id: number;
64
+ link: string;
65
+ };
66
+ }): Promise<void>;
67
+ };
68
+ clients: {
69
+ matchAll(options: {
70
+ type: "window";
71
+ includeUncontrolled: true;
72
+ }): Promise<readonly WindowClientLike[]>;
73
+ openWindow(url: string): Promise<unknown>;
74
+ };
75
+ navigator: {
76
+ setAppBadge?(count: number): Promise<void>;
77
+ clearAppBadge?(): Promise<void>;
78
+ };
79
+ }
80
+ /**
81
+ * Adds the two handlers go-core's web push needs to the service worker:
82
+ *
83
+ * - `push` shows every push as a notification (browsers, Apple's above all, drop a subscription that pushes silently), titled and
84
+ * tagged as the payload says, and sets the app icon badge to its `unread_count` (clearing it at 0);
85
+ * - `notificationclick` closes the notification and brings the application's window to the front on the notification's link: an
86
+ * open window of this origin is focused and navigated, otherwise a new one is opened. A link to another origin opens "/".
87
+ *
88
+ * Call it once, at the top level of the worker's file. `scope` is the worker's global scope (`self`) and is only given in tests.
89
+ */
90
+ export declare function installPushHandlers(options?: PushHandlersOptions, scope?: PushWorkerScope): void;
91
+ export {};
@@ -0,0 +1,54 @@
1
+ function l(i) {
2
+ const t = typeof i == "object" && i !== null ? i : {}, n = (o) => typeof t[o] == "string" ? t[o] : "";
3
+ return {
4
+ notification_id: typeof t.notification_id == "number" ? t.notification_id : 0,
5
+ category: n("category"),
6
+ title: n("title"),
7
+ body: n("body"),
8
+ link: n("link"),
9
+ tag: n("tag"),
10
+ ...typeof t.unread_count == "number" ? { unread_count: t.unread_count } : {}
11
+ };
12
+ }
13
+ function d(i, t) {
14
+ if (typeof i != "string" || i === "") return "/";
15
+ try {
16
+ const n = new URL(i, t);
17
+ return n.origin === t ? n.pathname + n.search + n.hash : "/";
18
+ } catch {
19
+ return "/";
20
+ }
21
+ }
22
+ function g(i = {}, t = self) {
23
+ t.addEventListener("push", (n) => {
24
+ let o;
25
+ try {
26
+ o = n.data?.json();
27
+ } catch {
28
+ o = void 0;
29
+ }
30
+ const a = l(o), r = t.registration.showNotification(a.title || i.fallbackTitle || "", {
31
+ body: a.body,
32
+ ...i.icon ? { icon: i.icon } : {},
33
+ ...i.badge ?? i.icon ? { badge: i.badge ?? i.icon } : {},
34
+ ...a.tag ? { tag: a.tag } : {},
35
+ data: { notification_id: a.notification_id, link: d(a.link, t.location.origin) }
36
+ }), { unread_count: e } = a, c = e !== void 0 && t.navigator.setAppBadge && t.navigator.clearAppBadge ? (e > 0 ? t.navigator.setAppBadge(e) : t.navigator.clearAppBadge()).catch(() => {
37
+ }) : Promise.resolve();
38
+ n.waitUntil(Promise.all([r, c]));
39
+ }), t.addEventListener("notificationclick", (n) => {
40
+ n.notification.close();
41
+ const o = n.notification.data ?? {}, a = d(o.link, t.location.origin);
42
+ n.waitUntil(
43
+ t.clients.matchAll({ type: "window", includeUncontrolled: !0 }).then(async (r) => {
44
+ const e = r.find((c) => new URL(c.url).origin === t.location.origin);
45
+ return e ? (await e.focus(), e.navigate ? e.navigate(a).catch(() => t.clients.openWindow(a)) : t.clients.openWindow(a)) : t.clients.openWindow(a);
46
+ })
47
+ );
48
+ });
49
+ }
50
+ export {
51
+ g as installPushHandlers,
52
+ l as readPayload,
53
+ d as sameOriginLink
54
+ };
@@ -1,4 +1,4 @@
1
- import { p as o, u as r, a, b as u } from "../routeResource-DlTsGTg_.js";
1
+ import { p as o, u as r, a, b as u } from "../routeResource-CcYA75T2.js";
2
2
  import { _ as R, a as c } from "../ResourcePage.vue_vue_type_script_setup_true_lang-BFBGvevP.js";
3
3
  export {
4
4
  R as RecordPager,
@@ -2,8 +2,8 @@ import { computed as f, toValue as A, shallowRef as w, watch as R, getCurrentSco
2
2
  import { useRoute as M } from "vue-router";
3
3
  import { M as h } from "./context-Ch1r4fdN.js";
4
4
  import { useI18n as S } from "vue-i18n";
5
- import { a as p } from "./error-CD7x0Jrz.js";
6
- import { a as _ } from "./describeError-B-NMa--w.js";
5
+ import { i as p } from "./error-Bb_dr_Ay.js";
6
+ import { a as _ } from "./describeError-BqGAUZgX.js";
7
7
  function D(e) {
8
8
  if (!/^\d+$/.test(e)) return null;
9
9
  const n = Number(e);
@@ -1,9 +1,9 @@
1
1
  import { _ as a, c as o, a as r, i as t } from "../NoAccess.vue_vue_type_script_setup_true_lang-DWxq-MTM.js";
2
2
  import { d as c } from "../defineRoutes-BGAdiIrt.js";
3
3
  import { A as u, f as p, i as f, r as A, u as m } from "../access-DmAceEo5.js";
4
- import { i as l, r as x } from "../guards-BJZjc3FZ.js";
5
- import { u as y } from "../sections-CeZl-Jxg.js";
6
- import { b as v, c as N, n as H, u as b } from "../navigation-DpcDF0rX.js";
4
+ import { i as l, r as x } from "../guards-DRh4zmxO.js";
5
+ import { u as y } from "../sections-D5rgQ4YB.js";
6
+ import { b as v, c as N, n as H, u as b } from "../navigation-DuQwti76.js";
7
7
  export {
8
8
  u as AppRouterView,
9
9
  a as NoAccess,
@@ -8,7 +8,7 @@ import { _ as ze } from "./Tooltip.vue_vue_type_script_setup_true_lang-mErNPt8e.
8
8
  import { _ as he } from "./EmptyState.vue_vue_type_script_setup_true_lang-50p-Mp8I.js";
9
9
  import { u as Fe } from "./format-D8X4zsx6.js";
10
10
  import { _ as Ve } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
11
- import { _ as Oe } from "./Timestamp.vue_vue_type_script_setup_true_lang-DRmzPDOP.js";
11
+ import { _ as Oe } from "./Timestamp.vue_vue_type_script_setup_true_lang-CutyQkJb.js";
12
12
  import { a as je } from "./mediaQuery-CygcXmFW.js";
13
13
  function Ue(y, n) {
14
14
  const d = (n ?? "").split(/\s+/).filter((v) => v !== "");
@@ -1,7 +1,7 @@
1
1
  import { computed as n, watch as h } from "vue";
2
2
  import { useI18n as b } from "vue-i18n";
3
3
  import { useRoute as g, useRouter as p } from "vue-router";
4
- import { u as y } from "./platform-PZpUkkMS.js";
4
+ import { u as y } from "./platform-Dl1fbScN.js";
5
5
  import { i as w } from "./access-DmAceEo5.js";
6
6
  function j() {
7
7
  const t = g(), u = p(), { access: c } = y(), { t: r } = b(), i = n(() => {
@@ -3,12 +3,12 @@ import { useI18n as B } from "vue-i18n";
3
3
  import { _ as we } from "../Avatar.vue_vue_type_script_setup_true_lang-BPj_fkJR.js";
4
4
  import { _ as P, u as Xe, c as Ue } from "../Icon.vue_vue_type_script_lang-D7oC-d-S.js";
5
5
  import { _ as We } from "../Popover.vue_vue_type_script_setup_true_lang-C70GrCP7.js";
6
- import { u as xe, S as X } from "../contributions-BVBZP5Jb.js";
6
+ import { u as xe, S as X } from "../contributions-DVQPcjJz.js";
7
7
  import { u as Ye } from "../environment-Dva-SG8D.js";
8
8
  import { _ as He } from "../CountryFlag.vue_vue_type_script_setup_true_lang-Kry_vPPZ.js";
9
9
  import { l as pe } from "../languageName-CItV_SOv.js";
10
10
  import { t as _e } from "../toast-CqSDTWRX.js";
11
- import { u as J, h as ue } from "../platform-PZpUkkMS.js";
11
+ import { u as J, h as ue } from "../platform-Dl1fbScN.js";
12
12
  import { a as qe, _ as ve, h as ke } from "../AccountMenuItem.vue_vue_type_script_setup_true_lang-CPeNxh5K.js";
13
13
  import { _ as Ge } from "../Sheet.vue_vue_type_script_setup_true_lang-DgOFV4fa.js";
14
14
  import { _ as Qe } from "../LeaveGuardRoot.vue_vue_type_script_setup_true_lang-Cv7KlA5y.js";
@@ -17,7 +17,7 @@ import { _ as Ze } from "../BottomDock.vue_vue_type_script_setup_true_lang-CjN7x
17
17
  import { b as $e } from "../chrome-nUcmVu8G.js";
18
18
  import { p as Se, A as et } from "../access-DmAceEo5.js";
19
19
  import { RouterLink as Le, useRoute as tt, useRouter as de } from "vue-router";
20
- import { u as nt } from "../navigation-DpcDF0rX.js";
20
+ import { u as nt } from "../navigation-DuQwti76.js";
21
21
  import { u as at } from "../leaveGuard-Cc8yeLxM.js";
22
22
  import { u as ot, S as st } from "../dialogStack-DZZg55w0.js";
23
23
  import { a as H } from "../mediaQuery-CygcXmFW.js";
@@ -0,0 +1,30 @@
1
+ const i = (e) => /Edg\/|EdgA\/|EdgiOS\//.test(e) ? "Edge" : /Firefox\/|FxiOS\//.test(e) ? "Firefox" : /Chrome\/|CriOS\//.test(e) ? "Chrome" : /Safari\/|iPhone|iPad/.test(e) ? "Safari" : "", s = (e) => e.includes("iPhone") ? "iPhone" : e.includes("iPad") ? "iPad" : e.includes("Android") ? "Android" : e.includes("Windows") ? "Windows" : /Mac OS X|Macintosh/.test(e) ? "macOS" : /Linux|X11/.test(e) ? "Linux" : "";
2
+ function u(e) {
3
+ const n = e.trim();
4
+ if (n === "") return "";
5
+ const t = i(n), r = s(n);
6
+ return t && r ? `${t} · ${r}` : [...n].slice(0, 80).join("");
7
+ }
8
+ const o = {
9
+ signed_in: { tone: "positive", byOther: !1 },
10
+ wrong_password: { tone: "critical", byOther: !1 },
11
+ locked_out: { tone: "critical", byOther: !1 },
12
+ refused_inactive: { tone: "critical", byOther: !1 },
13
+ signed_in_as: { tone: "warning", byOther: !0 },
14
+ unlocked: { tone: "neutral", byOther: !0 },
15
+ signed_out_everywhere: { tone: "neutral", byOther: !0 },
16
+ session_revoked: { tone: "neutral", byOther: !0 }
17
+ };
18
+ function c(e) {
19
+ const n = o[e];
20
+ return n ? { ...n, known: !0 } : { tone: "neutral", byOther: !1, known: !1 };
21
+ }
22
+ function a(e, n) {
23
+ const t = c(e);
24
+ return t.known ? t.byOther && n ? `core.account.signins.events_by.${e}` : `core.account.signins.events.${e}` : "core.account.signins.events.unknown";
25
+ }
26
+ export {
27
+ a,
28
+ u as d,
29
+ c as s
30
+ };
@@ -7,7 +7,7 @@ import { _ as G } from "../EmptyState.vue_vue_type_script_setup_true_lang-50p-Mp
7
7
  import { defineComponent as m, computed as k, openBlock as e, createElementBlock as a, normalizeClass as p, createVNode as d, unref as i, createElementVNode as u, renderSlot as f, createBlock as S, toDisplayString as l, createCommentVNode as c } from "vue";
8
8
  import { _ as x } from "../Icon.vue_vue_type_script_lang-D7oC-d-S.js";
9
9
  import { useI18n as g } from "vue-i18n";
10
- import { u as K } from "../useLoad-M7V-AVwR.js";
10
+ import { u as K } from "../useLoad-W4tfxmm5.js";
11
11
  import { D as X, W as Y, u as Z } from "../useWaitStatus-fsacMl4W.js";
12
12
  const $ = ["amber", "lime", "teal", "cyan", "blue", "indigo", "violet", "fuchsia", "pink"], V = /* @__PURE__ */ m({
13
13
  __name: "FieldNote",
@@ -1,5 +1,5 @@
1
- import { a, r as o } from "./http-BFfkA7gN.js";
2
- import { i as r } from "./index-LP6NNnow.js";
1
+ import { a, r as o } from "./http-D_pBg22D.js";
2
+ import { i as r } from "./index-kqk7Mclb.js";
3
3
  const n = ["active", "locked", "inactive", "all"];
4
4
  function l(i) {
5
5
  return a({