@wssto2/vue-core 0.9.4 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/dist/ActionRow.vue_vue_type_script_setup_true_lang-DybAIOHS.js +64 -0
  3. package/dist/Activity-CdkJW68R.js +169 -0
  4. package/dist/{AdaptivePageShell.vue_vue_type_script_setup_true_lang-DdJOodn8.js → AdaptivePageShell.vue_vue_type_script_setup_true_lang-D5i77H6S.js} +147 -159
  5. package/dist/{AsyncSection.vue_vue_type_script_setup_true_lang-BdeOKqz_.js → AsyncSection.vue_vue_type_script_setup_true_lang-DGzQ-Snp.js} +1 -1
  6. package/dist/BottomDockPortal.vue_vue_type_script_setup_true_lang-DmwR-2SP.js +17 -0
  7. package/dist/Button.vue_vue_type_script_setup_true_lang-C74hcb0N.js +123 -0
  8. package/dist/Changes-DxK_QfiB.js +69 -0
  9. package/dist/{CollectionPage.vue_vue_type_script_setup_true_lang-DHcekGNn.js → CollectionPage.vue_vue_type_script_setup_true_lang-x0jyJ01f.js} +19 -18
  10. package/dist/{DataTable.vue_vue_type_script_setup_true_lang-8kBsNRuq.js → DataTable.vue_vue_type_script_setup_true_lang-C_ZytnW-.js} +1 -1
  11. package/dist/{DateField.vue_vue_type_script_setup_true_lang-BhKdCVFn.js → DateField.vue_vue_type_script_setup_true_lang-CeNwBbJT.js} +1 -1
  12. package/dist/{DeadLetters-Bb5pPlOY.js → DeadLetters-DnA7LP1w.js} +5 -6
  13. package/dist/DrawnCheck.vue_vue_type_script_setup_true_lang-9DzDJlIA.js +38 -0
  14. package/dist/FormGroup.vue_vue_type_script_setup_true_lang-D6jYfNjW.js +427 -0
  15. package/dist/{FormView.vue_vue_type_script_setup_true_lang-aaNnMIOi.js → FormView.vue_vue_type_script_setup_true_lang-DvbPEiNQ.js} +2 -2
  16. package/dist/{General-BAG7S6wV.js → General-2matxl2Y.js} +23 -24
  17. package/dist/Highlight.vue_vue_type_script_setup_true_lang-DZGBmwcX.js +29 -0
  18. package/dist/{IncidentRecord-D8aOpNHo.js → IncidentRecord-Bt3G4HlX.js} +14 -15
  19. package/dist/{IncidentsList-C0cFl0Db.js → IncidentsList-2iwgqp9J.js} +3 -3
  20. package/dist/{Modal.vue_vue_type_script_setup_true_lang-BlHhdmMy.js → Modal.vue_vue_type_script_setup_true_lang-DDS0iEnn.js} +9 -8
  21. package/dist/{NewRolePage-C6Iu-EQJ.js → NewRolePage-DhGFwvk3.js} +4 -4
  22. package/dist/{NumberField.vue_vue_type_script_setup_true_lang-TGGAq8J-.js → NumberField.vue_vue_type_script_setup_true_lang-B3UrXNqH.js} +1 -1
  23. package/dist/{PersonAccess.vue_vue_type_script_setup_true_lang-qz1tmYpF.js → PersonAccess.vue_vue_type_script_setup_true_lang-DbGZSNQc.js} +56 -56
  24. package/dist/ProfilePage-CpuyDBAv.js +685 -0
  25. package/dist/ProgressTrack.vue_vue_type_script_setup_true_lang-DrOm8k--.js +30 -0
  26. package/dist/{RecordHeader.vue_vue_type_script_setup_true_lang-B9mN7UxZ.js → RecordHeader.vue_vue_type_script_setup_true_lang-DqGc3Jyo.js} +1 -1
  27. package/dist/{ResourcePage.vue_vue_type_script_setup_true_lang-Cw8mGf_B.js → ResourcePage.vue_vue_type_script_setup_true_lang-DljhsTU4.js} +3 -3
  28. package/dist/{RoleEditor.vue_vue_type_script_setup_true_lang-CJPvOVDV.js → RoleEditor.vue_vue_type_script_setup_true_lang-C0FIotFA.js} +11 -12
  29. package/dist/{RolePage-Dj_ocMnM.js → RolePage-DaNv049g.js} +10 -10
  30. package/dist/{RolesPage-PXrs4O-1.js → RolesPage-6hlzJes_.js} +6 -6
  31. package/dist/SearchInput.vue_vue_type_script_setup_true_lang-w4eAqyZ9.js +32 -0
  32. package/dist/{SectionList.vue_vue_type_script_setup_true_lang-CtdF1zuv.js → SectionList.vue_vue_type_script_setup_true_lang-DR0_NsqC.js} +1 -1
  33. package/dist/{SectionNavigator.vue_vue_type_script_setup_true_lang-B5ove3rM.js → SectionNavigator.vue_vue_type_script_setup_true_lang-Dh3sXUt_.js} +2 -2
  34. package/dist/{SegmentedField.vue_vue_type_script_setup_true_lang-ChfDFAA2.js → SegmentedField.vue_vue_type_script_setup_true_lang-zv_AxpBn.js} +1 -1
  35. package/dist/{SelectField.vue_vue_type_script_setup_true_lang-BP8nAQwo.js → SelectField.vue_vue_type_script_setup_true_lang-BZwdANL3.js} +3 -3
  36. package/dist/{ServiceAccountDialog.vue_vue_type_script_setup_true_lang-aWkKwxNe.js → ServiceAccountDialog.vue_vue_type_script_setup_true_lang-FJbWxME_.js} +20 -20
  37. package/dist/{ServiceAccountRecord-bxX9yQkC.js → ServiceAccountRecord-0-JF5lRx.js} +24 -24
  38. package/dist/{ServiceAccountsList-BXE6htxk.js → ServiceAccountsList-DcsnOcf-.js} +32 -32
  39. package/dist/{Sessions--Gvc0kxw.js → Sessions-DgWhpk-i.js} +23 -24
  40. package/dist/{SettingsPage-DzDC7gD-.js → SettingsPage-BXPWATYU.js} +28 -30
  41. package/dist/{SignIn-CTI_699e.js → SignIn-DPoUwHZd.js} +9 -10
  42. package/dist/{SignInPage-HKC1bm2E.js → SignInPage-OyrVemro.js} +4 -4
  43. package/dist/SignIns-BMDrZVVp.js +64 -0
  44. package/dist/StatusLine.vue_vue_type_script_setup_true_lang-DsdQmLq6.js +56 -0
  45. package/dist/{SwitchField.vue_vue_type_script_setup_true_lang-BMA2YXTZ.js → SwitchField.vue_vue_type_script_setup_true_lang-Ds4q0bbl.js} +1 -1
  46. package/dist/{TextField.vue_vue_type_script_setup_true_lang-BFVsqcBX.js → TextField.vue_vue_type_script_setup_true_lang-CWIeeZRE.js} +2 -2
  47. package/dist/{TextareaField.vue_vue_type_script_setup_true_lang-Dyh4Hhyl.js → TextareaField.vue_vue_type_script_setup_true_lang-D2j4s96s.js} +1 -1
  48. package/dist/{TimeField.vue_vue_type_script_setup_true_lang-gGFfQLuK.js → TimeField.vue_vue_type_script_setup_true_lang-D-Em4glH.js} +1 -1
  49. package/dist/UserRecord-BW-gdCqi.js +202 -0
  50. package/dist/UsersList-B3ZF_1Dj.js +74 -0
  51. package/dist/access/index.js +4 -4
  52. package/dist/app/index.d.ts +1 -0
  53. package/dist/app/index.js +11 -10
  54. package/dist/app/languages.d.ts +8 -0
  55. package/dist/{application-BmXW6iW_.js → application-CuzT-0vW.js} +1 -1
  56. package/dist/button/index.js +6 -5
  57. package/dist/collection/Highlight.vue.d.ts +12 -0
  58. package/dist/collection/PickerModal.vue.d.ts +26 -0
  59. package/dist/collection/definition.d.ts +6 -6
  60. package/dist/collection/http.d.ts +6 -6
  61. package/dist/collection/index.d.ts +6 -1
  62. package/dist/collection/index.js +145 -85
  63. package/dist/collection/picker.d.ts +39 -0
  64. package/dist/collection/types.d.ts +9 -4
  65. package/dist/collection/useCollection.d.ts +5 -5
  66. package/dist/content/ActivityStream.vue.d.ts +62 -0
  67. package/dist/content/CommentThread.vue.d.ts +52 -0
  68. package/dist/content/Composer.vue.d.ts +36 -0
  69. package/dist/content/index.d.ts +3 -0
  70. package/dist/content/index.js +321 -56
  71. package/dist/controls/index.js +28 -54
  72. package/dist/form/index.js +132 -134
  73. package/dist/format/index.d.ts +1 -0
  74. package/dist/format/index.js +10 -6
  75. package/dist/format/slug.d.ts +8 -0
  76. package/dist/http-Dm0uXY9O.js +95 -0
  77. package/dist/i18n/index.d.ts +15 -0
  78. package/dist/i18n/index.js +89 -63
  79. package/dist/i18n/plural.d.ts +23 -0
  80. package/dist/i18n/serverMessages.d.ts +16 -0
  81. package/dist/identity/embed.d.ts +39 -0
  82. package/dist/identity/index.d.ts +22 -1
  83. package/dist/identity/index.js +40 -21
  84. package/dist/identity/session.d.ts +9 -1
  85. package/dist/identity/shared/ChangeFeed.vue.d.ts +6 -3
  86. package/dist/identity/users/context.d.ts +11 -0
  87. package/dist/identity/users/dialogs.d.ts +10 -0
  88. package/dist/identity/users/ext.d.ts +8 -0
  89. package/dist/identity/users/feature.d.ts +22 -1
  90. package/dist/identity/users/list.d.ts +12 -1
  91. package/dist/identity/users/personSections.d.ts +15 -6
  92. package/dist/identity/users/replace.d.ts +45 -0
  93. package/dist/identity/users/words.d.ts +28 -0
  94. package/dist/incidents/api.d.ts +1 -1
  95. package/dist/incidents/index.js +1 -1
  96. package/dist/{index-Dz0LkLM8.js → index-ClJeyW3F.js} +4 -4
  97. package/dist/index-Cq9TuOqH.js +1264 -0
  98. package/dist/{index-Dm-sdJJr.js → index-kEHY7hcG.js} +31 -32
  99. package/dist/index.d.ts +1 -1
  100. package/dist/index.js +1 -1
  101. package/dist/keepAlive-ClGnsIzT.js +55 -0
  102. package/dist/modal/index.js +3 -3
  103. package/dist/modules/identity/entities.d.ts +7 -0
  104. package/dist/modules/identity/routes.d.ts +8 -4
  105. package/dist/modules/identity/schemas.d.ts +16 -0
  106. package/dist/{neighbors-DVfU9T0o.js → neighbors-OyvGi233.js} +2 -2
  107. package/dist/notifications/deadletters/list.d.ts +1 -1
  108. package/dist/notifications/index.js +1 -1
  109. package/dist/{options-QuOkMKVZ.js → options-B48UiYsG.js} +2 -2
  110. package/dist/page/index.js +11 -11
  111. package/dist/phone/index.js +1 -1
  112. package/dist/pwa/AndroidInstallBanner.vue.d.ts +18 -0
  113. package/dist/pwa/InstallQrSheet.vue.d.ts +21 -0
  114. package/dist/pwa/IosInstallGuide.vue.d.ts +19 -0
  115. package/dist/pwa/QrCode.vue.d.ts +16 -0
  116. package/dist/pwa/index.d.ts +4 -0
  117. package/dist/pwa/index.js +244 -24
  118. package/dist/resource/index.js +1 -1
  119. package/dist/rowLayout-BsKEzEME.js +650 -0
  120. package/dist/shell/DarkModeRow.vue.d.ts +15 -0
  121. package/dist/shell/OfflineNotice.vue.d.ts +2 -0
  122. package/dist/shell/QuickSearchButton.vue.d.ts +2 -0
  123. package/dist/shell/QuickSearchPalette.vue.d.ts +12 -0
  124. package/dist/shell/darkMode.d.ts +26 -0
  125. package/dist/shell/index.d.ts +10 -0
  126. package/dist/shell/index.js +954 -579
  127. package/dist/shell/offlineNotice.d.ts +3 -0
  128. package/dist/shell/quickSearch.d.ts +14 -0
  129. package/dist/shell/quickSearchControl.d.ts +69 -0
  130. package/dist/shortcut-DUR6yPWA.js +93 -0
  131. package/dist/state/BackgroundTaskCapsule.vue.d.ts +18 -0
  132. package/dist/state/backgroundTasks.d.ts +58 -0
  133. package/dist/state/index.d.ts +4 -0
  134. package/dist/state/index.js +194 -80
  135. package/dist/state/useCountUp.d.ts +9 -0
  136. package/dist/styles.css +1 -1
  137. package/dist/{suggestions-BVQhoXzS.js → suggestions-q_v3M7G6.js} +1 -1
  138. package/dist/testing/collection.d.ts +1 -1
  139. package/dist/{useCommand-Dc8Lgs9h.js → useCommand-Ch_nx1AQ.js} +4 -4
  140. package/dist/{useGroupSheet-DQ6cVG-z.js → useGroupSheet-CPjHydQV.js} +14 -15
  141. package/dist/{useRecordDialog-BTsbHY38.js → useRecordDialog-DdkauXnU.js} +1 -1
  142. package/dist/{useResourceForm-DJ4Q75pq.js → useResourceForm-Dl6YFYyz.js} +1 -1
  143. package/package.json +3 -2
  144. package/dist/ActionRow.vue_vue_type_script_setup_true_lang-Cg1lhpcA.js +0 -45
  145. package/dist/Activity-29hsZ28j.js +0 -156
  146. package/dist/Button.vue_vue_type_script_setup_true_lang-Dp7OB-eF.js +0 -192
  147. package/dist/Changes-Dxjdkd_5.js +0 -129
  148. package/dist/FormErrors.vue_vue_type_script_setup_true_lang-CIggKPtq.js +0 -295
  149. package/dist/FormGroup.vue_vue_type_script_setup_true_lang-B37dixvJ.js +0 -137
  150. package/dist/PageBar.vue_vue_type_script_setup_true_lang-qI94fjJv.js +0 -47
  151. package/dist/ProfilePage-BnohZIEg.js +0 -764
  152. package/dist/ProgressTrack.vue_vue_type_script_setup_true_lang-B6Prw9hi.js +0 -64
  153. package/dist/SectionIntro.vue_vue_type_script_setup_true_lang-CZtPrmXD.js +0 -23
  154. package/dist/SessionList.vue_vue_type_script_setup_true_lang-Cnyt5V8T.js +0 -133
  155. package/dist/SignIns-BcqBgWgN.js +0 -121
  156. package/dist/UserRecord-CtUPpbCt.js +0 -267
  157. package/dist/UsersList-BMkIgIg8.js +0 -155
  158. package/dist/definition-C7QuyV3i.js +0 -54
  159. package/dist/http-nz92KjdS.js +0 -42
  160. package/dist/identity/fieldMessages.d.ts +0 -15
  161. package/dist/identity/users/languages.d.ts +0 -4
  162. package/dist/index-CdtofdcJ.js +0 -501
  163. package/dist/keepAlive-z3IRFkQq.js +0 -46
  164. package/dist/languages-BShG9LpE.js +0 -10
  165. package/dist/rowLayout-CT8vWYgI.js +0 -663
  166. package/dist/signInEvents-DWShrJox.js +0 -30
  167. package/dist/status-BRA14qwX.js +0 -34
  168. package/dist/useWaitStatus-fsacMl4W.js +0 -24
  169. /package/dist/{fieldMessages-B6GHgi40.js → serverMessages-B6GHgi40.js} +0 -0
@@ -0,0 +1,650 @@
1
+ import { defineComponent as oe, openBlock as l, createElementBlock as r, normalizeClass as x, createBlock as D, unref as i, withCtx as F, createVNode as g, toDisplayString as M, createCommentVNode as f, computed as y, Fragment as b, renderSlot as S, createTextVNode as de, ref as te, getCurrentScope as Ie, onScopeDispose as Ae, nextTick as ge, useSlots as fe, useId as Te, useTemplateRef as pe, watch as ye, mergeProps as q, renderList as L, normalizeStyle as R, createElementVNode as c, withModifiers as ve, createSlots as De } from "vue";
2
+ import { useI18n as Be } from "vue-i18n";
3
+ import { RouterLink as we, useRouter as He } from "vue-router";
4
+ import { _ as Ke } from "./SwipeActions.vue_vue_type_script_setup_true_lang-D8SiC0G7.js";
5
+ import { _ as J } from "./Icon.vue_vue_type_script_lang-BhhsFYwp.js";
6
+ import { _ as Ne } from "./Menu.vue_vue_type_script_setup_true_lang-wKc9gdCn.js";
7
+ import { _ as ze } from "./Tooltip.vue_vue_type_script_setup_true_lang-Dtg5Y6pf.js";
8
+ import { _ as he } from "./EmptyState.vue_vue_type_script_setup_true_lang-DbZiO2RF.js";
9
+ import { u as Fe } from "./format-D8KUBmbS.js";
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-ClZAAUMd.js";
12
+ import { _ as me } from "./Highlight.vue_vue_type_script_setup_true_lang-DZGBmwcX.js";
13
+ import { a as je } from "./mediaQuery-CygcXmFW.js";
14
+ const Ue = ["data-row-click-ignore"], be = "col-start-1 row-start-1", Ye = "col-span-full row-start-2 max-w-full", ke = /* @__PURE__ */ oe({
15
+ __name: "RecordIdentity",
16
+ props: {
17
+ title: {},
18
+ subtitle: { default: null },
19
+ to: { default: null },
20
+ subtitleSelectable: { type: Boolean, default: !1 },
21
+ highlight: { default: null },
22
+ spread: { type: Boolean, default: !1 }
23
+ },
24
+ setup(v) {
25
+ const s = v;
26
+ return (h, e) => (l(), r("div", {
27
+ class: x(s.spread ? "contents" : "flex min-w-0 flex-col")
28
+ }, [
29
+ s.to ? (l(), D(i(we), {
30
+ key: 0,
31
+ to: s.to,
32
+ class: x(["block truncate rounded-sm text-row-title focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-border-focus", s.spread ? be : void 0])
33
+ }, {
34
+ default: F(() => [
35
+ g(me, {
36
+ text: s.title,
37
+ search: s.highlight
38
+ }, null, 8, ["text", "search"])
39
+ ]),
40
+ _: 1
41
+ }, 8, ["to", "class"])) : (l(), r("span", {
42
+ key: 1,
43
+ class: x(["truncate text-row-title", s.spread ? be : void 0])
44
+ }, [
45
+ g(me, {
46
+ text: s.title,
47
+ search: s.highlight
48
+ }, null, 8, ["text", "search"])
49
+ ], 2)),
50
+ s.subtitle ? (l(), r("span", {
51
+ key: 2,
52
+ "data-row-click-ignore": s.subtitleSelectable ? "" : void 0,
53
+ class: x(["truncate text-row-subtitle", [s.subtitleSelectable ? "w-fit cursor-text select-text" : void 0, s.spread ? Ye : void 0]])
54
+ }, M(s.subtitle), 11, Ue)) : f("", !0)
55
+ ], 2));
56
+ }
57
+ });
58
+ function _e(v, s) {
59
+ let h = v;
60
+ for (const e of String(s).split(".")) {
61
+ if (typeof h != "object" || h === null) return;
62
+ h = h[e];
63
+ }
64
+ return h;
65
+ }
66
+ const Ge = {
67
+ key: 0,
68
+ class: "flex items-center gap-3"
69
+ }, We = ["datetime"], Xe = {
70
+ key: 2,
71
+ class: "tabular-nums"
72
+ }, qe = {
73
+ key: 3,
74
+ class: "tabular-nums"
75
+ }, V = /* @__PURE__ */ oe({
76
+ __name: "CollectionCell",
77
+ props: {
78
+ column: {},
79
+ item: {},
80
+ compact: { type: Boolean },
81
+ to: {},
82
+ search: {},
83
+ spread: { type: Boolean }
84
+ },
85
+ setup(v) {
86
+ const s = v, h = Fe(), e = y(() => _e(s.item, s.column.key)), C = y(() => e.value), k = y(() => e.value === null || e.value === void 0 ? "" : String(e.value)), m = y(() => typeof e.value == "number" ? e.value : typeof e.value == "string" && e.value.trim() !== "" ? Number(e.value) : null);
87
+ return (E, N) => s.column.kind === "identity" ? (l(), r(b, { key: 0 }, [
88
+ !s.compact && E.$slots.leading ? (l(), r("div", Ge, [
89
+ S(E.$slots, "leading"),
90
+ g(ke, {
91
+ to: s.to,
92
+ title: s.column.title?.(s.item) ?? k.value,
93
+ subtitle: s.column.subtitle?.(s.item),
94
+ highlight: s.search,
95
+ "subtitle-selectable": ""
96
+ }, null, 8, ["to", "title", "subtitle", "highlight"])
97
+ ])) : (l(), D(ke, {
98
+ key: 1,
99
+ spread: s.spread,
100
+ to: s.to,
101
+ title: s.column.title?.(s.item) ?? k.value,
102
+ subtitle: s.column.subtitle?.(s.item),
103
+ highlight: s.search,
104
+ "subtitle-selectable": ""
105
+ }, null, 8, ["spread", "to", "title", "subtitle", "highlight"]))
106
+ ], 64)) : s.column.kind === "timestamp" ? (l(), r(b, { key: 1 }, [
107
+ s.compact && C.value ? (l(), r("time", {
108
+ key: 0,
109
+ class: "tabular-nums",
110
+ datetime: String(e.value)
111
+ }, M(s.column.precision === "date" ? i(h).date(C.value) : i(h).dateTime(C.value)), 9, We)) : s.compact ? f("", !0) : (l(), D(i(Oe), {
112
+ key: 1,
113
+ value: C.value,
114
+ precision: s.column.precision ?? "dateTime"
115
+ }, null, 8, ["value", "precision"]))
116
+ ], 64)) : s.column.kind === "number" ? (l(), r("span", Xe, M(i(h).number(m.value, s.column.format)), 1)) : s.column.kind === "money" ? (l(), r("span", qe, M(i(h).money(m.value, { currency: typeof s.column.currency == "function" ? s.column.currency(s.item) : s.column.currency })), 1)) : s.column.kind === "badge" ? (l(), D(i(Ve), {
117
+ key: 4,
118
+ tone: s.column.tone(s.item),
119
+ dot: ""
120
+ }, {
121
+ default: F(() => [
122
+ de(M(s.column.text?.(s.item) ?? k.value), 1)
123
+ ]),
124
+ _: 1
125
+ }, 8, ["tone"])) : (l(), r(b, { key: 5 }, [
126
+ de(M(k.value), 1)
127
+ ], 64));
128
+ }
129
+ }), Je = 'a, button, input, select, textarea, label, [role="button"], [data-row-click-ignore]', Qe = 500, Ze = 8;
130
+ function et(v) {
131
+ const s = He(), h = te([]), e = te("");
132
+ let C = !1, k = null, m = { x: 0, y: 0 };
133
+ const E = (a) => v.actions()?.(a) ?? [];
134
+ function N(a) {
135
+ return E(a).filter((p) => p.href).map((p) => ({ key: p.key, label: p.label, icon: p.icon, href: p.href, tone: p.tone ?? "neutral", external: p.external }));
136
+ }
137
+ function I(a, p, w) {
138
+ const A = E(a);
139
+ return A.length === 0 ? !1 : (e.value = v.label()?.(a) ?? v.moreLabel(), h.value = A.map((_) => ({
140
+ id: _.key,
141
+ label: _.label,
142
+ icon: _.icon,
143
+ section: _.section,
144
+ tone: _.tone === "critical" ? "critical" : void 0,
145
+ onSelect: () => {
146
+ _.onSelect ? _.onSelect() : _.href && (_.external ? window.open(_.href, "_blank", "noopener") : window.location.assign(_.href));
147
+ }
148
+ })), ge(() => v.presentMenu(p, w)), !0);
149
+ }
150
+ function O(a, p) {
151
+ const w = a.currentTarget.getBoundingClientRect();
152
+ I(p, w.left, w.bottom);
153
+ }
154
+ function j(a, p) {
155
+ !v.actions() || a.target.closest("a") || I(p, a.clientX, a.clientY) && (a.preventDefault(), C = !0);
156
+ }
157
+ function B() {
158
+ k && clearTimeout(k), k = null;
159
+ }
160
+ function U(a, p) {
161
+ C = !1, !(a.pointerType !== "touch" || !v.actions()) && (m = { x: a.clientX, y: a.clientY }, B(), k = setTimeout(() => {
162
+ k = null, I(p, m.x, m.y) && (C = !0, navigator.vibrate?.(10));
163
+ }, Qe));
164
+ }
165
+ function H(a) {
166
+ k && Math.hypot(a.clientX - m.x, a.clientY - m.y) > Ze && B();
167
+ }
168
+ function z(a) {
169
+ C && (C = !1, a.preventDefault(), a.stopPropagation());
170
+ }
171
+ function K(a, p) {
172
+ const w = v.pick?.(), A = w ? null : v.target(p);
173
+ if (!(!w && !A || a.target.closest(Je)) && !window.getSelection()?.toString()) {
174
+ if (w) {
175
+ w(p);
176
+ return;
177
+ }
178
+ if (a.metaKey || a.ctrlKey) {
179
+ window.open(s.resolve(A).href, "_blank");
180
+ return;
181
+ }
182
+ s.push(A);
183
+ }
184
+ }
185
+ return Ie() && Ae(B), { menuItems: h, menuLabel: e, swipeActions: N, openMenuFrom: O, onContextMenu: j, onPointerDown: U, onPointerMove: H, cancelPress: B, onClickCapture: z, onClick: K, actionsOf: E };
186
+ }
187
+ const tt = { class: "flex flex-1 flex-col gap-2 pt-1" }, ot = ["onClick", "onContextmenu", "onPointerdown"], st = { class: "flex items-start gap-3" }, lt = {
188
+ key: 0,
189
+ class: "shrink-0 pt-0.5"
190
+ }, nt = { class: "flex min-w-0 flex-1 flex-col gap-1" }, rt = {
191
+ key: 2,
192
+ class: "block truncate text-row-title"
193
+ }, it = {
194
+ key: 0,
195
+ class: "col-start-2 row-start-1 flex shrink-0 items-center gap-2 pt-0.5"
196
+ }, at = ["aria-label", "onClick"], ct = {
197
+ key: 0,
198
+ class: "flex min-w-0 flex-wrap items-center gap-x-3 gap-y-1 text-row-meta"
199
+ }, ut = {
200
+ key: 1,
201
+ class: "truncate"
202
+ }, dt = {
203
+ key: 2,
204
+ class: "px-4 py-6",
205
+ "data-test": "collection-failed"
206
+ }, ft = {
207
+ key: 3,
208
+ class: "px-4 py-2 text-center",
209
+ "data-test": "collection-empty"
210
+ }, pt = {
211
+ key: 1,
212
+ class: "inline-block w-full align-middle"
213
+ }, yt = ["role"], vt = { class: "border-b border-border-separator" }, ht = ["aria-sort"], mt = ["onClick"], bt = { key: 1 }, kt = {
214
+ key: 0,
215
+ class: "px-4 pt-2.5 pb-2",
216
+ style: { width: "20px" }
217
+ }, gt = { class: "sr-only" }, wt = {
218
+ key: 0,
219
+ class: "size-8 shrink-0 rounded-full bg-fill"
220
+ }, _t = { class: "flex flex-1 flex-col gap-1.5" }, xt = { key: 0 }, Ct = ["onClick", "onContextmenu", "onPointerdown"], $t = { key: 0 }, St = { class: "flex items-center justify-center gap-1" }, Lt = ["aria-label", "onClick"], Pt = {
221
+ key: 2,
222
+ "data-test": "collection-failed"
223
+ }, Rt = ["colspan"], Mt = {
224
+ key: 3,
225
+ "data-test": "collection-empty"
226
+ }, Et = ["colspan"], It = "cursor-pointer hover:bg-fill/60 active:bg-fill-strong group-focus-visible/pick:data-current:bg-fill group-focus-visible/pick:data-current:outline-2 group-focus-visible/pick:data-current:-outline-offset-2 group-focus-visible/pick:data-current:outline-border-focus", At = "cursor-pointer after:pointer-events-none after:absolute after:inset-0 after:z-10 after:transition-colors hover:after:bg-content-strong/5 active:after:bg-content-strong/10 group-focus-visible/pick:data-current:after:bg-content-strong/5 group-focus-visible/pick:data-current:after:outline-2 group-focus-visible/pick:data-current:after:-outline-offset-2 group-focus-visible/pick:data-current:after:outline-border-focus", Tt = 37, Wt = /* @__PURE__ */ oe({
227
+ __name: "CollectionRows",
228
+ props: {
229
+ columns: {},
230
+ rows: {},
231
+ rowKey: {},
232
+ display: {},
233
+ phone: { type: Boolean },
234
+ link: {},
235
+ search: { default: void 0 },
236
+ sorted: { default: null },
237
+ rowActions: { type: Function, default: void 0 },
238
+ rowLabel: { type: Function, default: void 0 },
239
+ rowHeight: { default: void 0 },
240
+ density: { default: "regular" },
241
+ actionsVisible: { type: Boolean, default: !1 },
242
+ skeletonRows: {},
243
+ reserveRows: { default: void 0 },
244
+ rowClass: { type: Function, default: void 0 },
245
+ pick: { type: Function, default: void 0 },
246
+ pickLabel: { default: void 0 }
247
+ },
248
+ emits: ["sort"],
249
+ setup(v, { expose: s, emit: h }) {
250
+ const e = v, C = h, k = fe(), { t: m } = Be(), E = fe(), N = (o) => e.columns.filter((u) => u.mobile === o), I = y(() => N("primary")), O = y(() => N("accessory")), j = y(() => N("meta")), B = y(() => I.value.length === 1 && I.value[0].kind === "identity" && !z(I.value[0])), U = (o) => O.value.length > 0 || G.value && Z(o), H = (o) => `cell-${String(o.key).replace(/\./g, "_")}`, z = (o) => !!E[H(o)], K = (o, u) => _e(o, u.key), a = (o) => o == null || o === "", p = { md: "hidden md:table-cell", xl: "hidden xl:table-cell", "2xl": "hidden 2xl:table-cell" }, w = (o) => o.hideBelow ? [p[o.hideBelow]] : [], A = (o) => ["text-nowrap px-4 pt-2.5 pb-2 text-footnote font-normal text-content-muted", ...w(o)], _ = { start: "text-left", center: "text-center", end: "text-right" }, xe = (o) => [...w(o), _[o.align ?? "start"]], Ce = { start: "justify-start", center: "justify-center", end: "justify-end" }, se = y(() => e.rows.length > 0 && e.link(e.rows[0]) !== null), T = y(() => e.pick !== void 0 && e.display === "rows" && e.rows.length > 0), $e = Te(), Q = (o) => `${$e}-option-${o}`, P = te(-1), Y = pe("list");
251
+ ye(() => e.rows, () => P.value = -1), ye(P, (o) => void ge(() => Y.value?.querySelector(`[id="${Q(o)}"]`)?.scrollIntoView?.({ block: "nearest" })));
252
+ function Se(o) {
253
+ if (o.target !== o.currentTarget || o.altKey || o.ctrlKey || o.metaKey || o.shiftKey) return;
254
+ const u = e.rows.length - 1, t = P.value, $ = { ArrowDown: Math.min(t + 1, u), ArrowUp: Math.max(t - 1, 0), Home: 0, End: u };
255
+ o.key in $ ? (o.preventDefault(), P.value = $[o.key]) : (o.key === "Enter" || o.key === " ") && t >= 0 && e.rows[t] !== void 0 && (o.preventDefault(), e.pick?.(e.rows[t]));
256
+ }
257
+ const le = y(
258
+ () => T.value ? {
259
+ role: "listbox",
260
+ tabindex: 0,
261
+ "aria-label": e.pickLabel ?? m("core.collection.pick_label"),
262
+ "aria-activedescendant": P.value >= 0 ? Q(P.value) : void 0,
263
+ onKeydown: Se,
264
+ onFocus: () => {
265
+ P.value < 0 && (P.value = 0);
266
+ }
267
+ } : {}
268
+ ), ne = (o) => T.value ? { role: "option", id: Q(o), "data-current": o === P.value ? "" : void 0 } : {};
269
+ function Le() {
270
+ return T.value ? (Y.value?.focus(), !0) : !1;
271
+ }
272
+ s({ focusRows: Le });
273
+ const re = pe("rowMenu"), d = et({
274
+ actions: () => e.rowActions,
275
+ label: () => e.rowLabel,
276
+ target: (o) => e.link(o),
277
+ pick: () => e.pick,
278
+ presentMenu: (o, u) => re.value?.presentAt(o, u),
279
+ moreLabel: () => m("core.page.more_actions")
280
+ }), G = y(() => !!e.rowActions && (e.actionsVisible || !k.actions && !se.value)), W = y(() => !!k.actions || se.value || G.value), ie = (o) => e.rowLabel ? `${m("core.page.more_actions")}: ${e.rowLabel(o)}` : m("core.page.more_actions"), Z = (o) => d.actionsOf(o).length > 0, ae = y(() => e.columns.length + (W.value ? 1 : 0)), X = (o) => o.sort !== void 0 && e.sorted?.key === o.sort, Pe = (o) => o.sort === void 0 ? void 0 : X(o) ? e.sorted?.direction === "asc" ? "ascending" : "descending" : "none", Re = (o) => X(o) ? e.sorted?.direction === "asc" ? "arrowUpSLine" : "arrowDownSLine" : "expandUpDownLine", ce = (o) => ({ animationDelay: `${Math.min(o, 8) * 30}ms` }), ee = y(() => e.display === "loading"), Me = y(() => ee.value && e.reserveRows !== void 0 ? `${e.reserveRows * (e.rowHeight ?? 40) + Tt}px` : void 0), ue = y(() => e.display === "empty" || e.display === "no-matches");
281
+ return (o, u) => (l(), r(b, null, [
282
+ e.phone ? (l(), r("ul", q({
283
+ key: 0,
284
+ ref_key: "list",
285
+ ref: Y
286
+ }, le.value, {
287
+ class: ["overflow-hidden rounded-group bg-surface-cell shadow-group", T.value ? "group/pick outline-0" : void 0],
288
+ "data-test": "collection-mobile-rows"
289
+ }), [
290
+ ee.value ? (l(!0), r(b, { key: 0 }, L(e.skeletonRows, (t) => (l(), r("li", {
291
+ key: `skeleton-${t}`,
292
+ "aria-hidden": "true",
293
+ class: "relative flex animate-pulse items-start gap-3 px-row-inset py-3 motion-reduce:animate-none not-first:before:absolute not-first:before:top-0 not-first:before:right-0 not-first:before:left-row-inset not-first:before:h-px not-first:before:bg-border-separator",
294
+ style: R({ animationDelay: `${t * 60}ms` })
295
+ }, [
296
+ u[5] || (u[5] = c("span", { class: "size-9 shrink-0 rounded-full bg-fill" }, null, -1)),
297
+ c("span", tt, [
298
+ c("span", {
299
+ class: "h-2.5 rounded-full bg-fill-strong",
300
+ style: R({ width: `${45 + t * 13 % 30}%` })
301
+ }, null, 4),
302
+ c("span", {
303
+ class: "h-2 rounded-full bg-fill",
304
+ style: R({ width: `${60 + t * 7 % 25}%` })
305
+ }, null, 4)
306
+ ])
307
+ ], 4))), 128)) : f("", !0),
308
+ e.display === "rows" ? (l(!0), r(b, { key: 1 }, L(e.rows, (t, $) => (l(), r("li", q({
309
+ key: e.rowKey(t),
310
+ style: ce($),
311
+ "data-test": "collection-row"
312
+ }, { ref_for: !0 }, ne($), {
313
+ class: ["relative animate-row-in transition-colors duration-motion-fast active:bg-fill not-first:before:absolute not-first:before:top-0 not-first:before:right-0 not-first:before:left-row-inset not-first:before:z-10 not-first:before:h-px not-first:before:bg-border-separator", [e.link(t) ? "cursor-pointer" : void 0, T.value ? At : void 0, e.rowClass?.(t)]],
314
+ onClickCapture: u[0] || (u[0] = //@ts-ignore
315
+ (...n) => i(d).onClickCapture && i(d).onClickCapture(...n)),
316
+ onClick: (n) => i(d).onClick(n, t),
317
+ onContextmenu: (n) => i(d).onContextMenu(n, t),
318
+ onPointerdown: (n) => i(d).onPointerDown(n, t),
319
+ onPointermove: u[1] || (u[1] = //@ts-ignore
320
+ (...n) => i(d).onPointerMove && i(d).onPointerMove(...n)),
321
+ onPointerup: u[2] || (u[2] = //@ts-ignore
322
+ (...n) => i(d).cancelPress && i(d).cancelPress(...n)),
323
+ onPointercancel: u[3] || (u[3] = //@ts-ignore
324
+ (...n) => i(d).cancelPress && i(d).cancelPress(...n))
325
+ }), [
326
+ g(i(Ke), {
327
+ actions: i(d).swipeActions(t),
328
+ "content-class": "px-row-inset py-2.5"
329
+ }, {
330
+ default: F(() => [
331
+ c("div", st, [
332
+ k.leading ? (l(), r("div", lt, [
333
+ S(o.$slots, "leading", {
334
+ item: t,
335
+ compact: !0
336
+ })
337
+ ])) : f("", !0),
338
+ c("div", nt, [
339
+ c("div", {
340
+ class: x(["grid min-w-0 items-start gap-x-3", U(t) ? "grid-cols-[minmax(0,1fr)_auto]" : "grid-cols-[minmax(0,1fr)]"]),
341
+ "data-test": "collection-row-head"
342
+ }, [
343
+ c("div", {
344
+ class: x(B.value ? "contents" : "col-start-1 row-start-1 min-w-0")
345
+ }, [
346
+ (l(!0), r(b, null, L(I.value, (n) => (l(), r(b, {
347
+ key: String(n.key)
348
+ }, [
349
+ z(n) ? S(o.$slots, H(n), {
350
+ item: t,
351
+ value: K(t, n),
352
+ compact: !0,
353
+ to: e.link(t),
354
+ search: e.search
355
+ }, void 0, void 0, 0) : B.value ? (l(), D(V, {
356
+ key: 1,
357
+ column: n,
358
+ item: t,
359
+ compact: !0,
360
+ to: e.link(t),
361
+ search: e.search,
362
+ spread: ""
363
+ }, null, 8, ["column", "item", "to", "search"])) : (l(), r("span", rt, [
364
+ g(V, {
365
+ column: n,
366
+ item: t,
367
+ compact: !0,
368
+ to: e.link(t),
369
+ search: e.search
370
+ }, null, 8, ["column", "item", "to", "search"])
371
+ ]))
372
+ ], 64))), 128))
373
+ ], 2),
374
+ U(t) ? (l(), r("div", it, [
375
+ (l(!0), r(b, null, L(O.value, (n) => (l(), r(b, {
376
+ key: String(n.key)
377
+ }, [
378
+ z(n) ? S(o.$slots, H(n), {
379
+ item: t,
380
+ value: K(t, n),
381
+ compact: !0,
382
+ to: e.link(t),
383
+ search: e.search
384
+ }, void 0, void 0, 0) : (l(), D(V, {
385
+ key: 1,
386
+ column: n,
387
+ item: t,
388
+ compact: !0,
389
+ to: e.link(t),
390
+ search: e.search
391
+ }, null, 8, ["column", "item", "to", "search"]))
392
+ ], 64))), 128)),
393
+ G.value && Z(t) ? (l(), r("button", {
394
+ key: 0,
395
+ type: "button",
396
+ "data-test": "collection-row-more",
397
+ "aria-label": ie(t),
398
+ class: "hit-target -my-1 -mr-1 flex size-8 cursor-pointer items-center justify-center rounded-full text-content-muted active:bg-fill",
399
+ onClick: ve((n) => i(d).openMenuFrom(n, t), ["stop"])
400
+ }, [
401
+ g(i(J), {
402
+ name: "moreLine",
403
+ size: 20
404
+ })
405
+ ], 8, at)) : f("", !0)
406
+ ])) : f("", !0)
407
+ ], 2),
408
+ j.value.length ? (l(), r("div", ct, [
409
+ (l(!0), r(b, null, L(j.value, (n) => (l(), r(b, {
410
+ key: String(n.key)
411
+ }, [
412
+ z(n) ? S(o.$slots, H(n), {
413
+ item: t,
414
+ value: K(t, n),
415
+ compact: !0,
416
+ to: e.link(t),
417
+ search: e.search
418
+ }, void 0, void 0, 0) : a(K(t, n)) ? f("", !0) : (l(), r("span", ut, [
419
+ g(V, {
420
+ column: n,
421
+ item: t,
422
+ compact: !0,
423
+ to: e.link(t),
424
+ search: e.search
425
+ }, null, 8, ["column", "item", "to", "search"])
426
+ ]))
427
+ ], 64))), 128))
428
+ ])) : f("", !0)
429
+ ])
430
+ ])
431
+ ]),
432
+ _: 2
433
+ }, 1032, ["actions"])
434
+ ], 16, ot))), 128)) : f("", !0),
435
+ e.display === "failed" ? (l(), r("li", dt, [
436
+ S(o.$slots, "failed")
437
+ ])) : f("", !0),
438
+ ue.value ? (l(), r("li", ft, [
439
+ S(o.$slots, "empty", {}, () => [
440
+ g(i(he), {
441
+ title: i(m)("core.collection.no_data")
442
+ }, null, 8, ["title"])
443
+ ])
444
+ ])) : f("", !0)
445
+ ], 16)) : (l(), r("div", pt, [
446
+ c("div", {
447
+ class: "overflow-x-auto",
448
+ style: R({ minHeight: Me.value })
449
+ }, [
450
+ c("table", {
451
+ class: x(["collection-grid w-full", { condensed: e.density === "condensed" }]),
452
+ role: T.value ? "presentation" : void 0
453
+ }, [
454
+ c("thead", vt, [
455
+ c("tr", null, [
456
+ (l(!0), r(b, null, L(e.columns, (t) => (l(), r("th", {
457
+ key: String(t.key),
458
+ scope: "col",
459
+ class: x(A(t)),
460
+ style: R({ width: t.width ? `${t.width}px` : void 0, textAlign: t.align ?? "start" }),
461
+ "aria-sort": Pe(t)
462
+ }, [
463
+ c("div", {
464
+ class: x(["flex", Ce[t.align ?? "start"]])
465
+ }, [
466
+ t.sort !== void 0 ? (l(), r("button", {
467
+ key: 0,
468
+ type: "button",
469
+ class: x(["group inline-flex cursor-pointer items-center gap-1 rounded-sm transition-colors hover:text-content-strong focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-border-focus", [X(t) ? "font-semibold text-content-strong" : "", t.align === "end" ? "flex-row-reverse" : ""]]),
470
+ onClick: ($) => C("sort", t.sort)
471
+ }, [
472
+ c("span", null, M(t.label), 1),
473
+ g(i(J), {
474
+ name: Re(t),
475
+ size: 14,
476
+ class: x(X(t) ? "text-content-muted" : "text-content-disabled opacity-0 transition-opacity group-hover:opacity-100 group-focus-visible:opacity-100")
477
+ }, null, 8, ["name", "class"])
478
+ ], 10, mt)) : (l(), r("span", bt, M(t.label), 1))
479
+ ], 2)
480
+ ], 14, ht))), 128)),
481
+ W.value ? (l(), r("th", kt, [
482
+ c("span", gt, M(i(m)("core.actions.more")), 1)
483
+ ])) : f("", !0)
484
+ ])
485
+ ]),
486
+ c("tbody", q({
487
+ ref_key: "list",
488
+ ref: Y
489
+ }, le.value, {
490
+ class: T.value ? "group/pick outline-0" : void 0
491
+ }), [
492
+ ee.value ? (l(!0), r(b, { key: 0 }, L(e.skeletonRows, (t) => (l(), r("tr", {
493
+ key: `skeleton-${t}`,
494
+ "aria-hidden": "true",
495
+ style: R(e.rowHeight ? { height: `${e.rowHeight}px` } : void 0)
496
+ }, [
497
+ (l(!0), r(b, null, L(e.columns, ($, n) => (l(), r("td", {
498
+ key: String($.key),
499
+ class: x(w($))
500
+ }, [
501
+ c("div", {
502
+ class: "flex animate-pulse items-center gap-3 motion-reduce:animate-none",
503
+ style: R({ animationDelay: `${t * 60}ms` })
504
+ }, [
505
+ n === 0 ? (l(), r("span", wt)) : f("", !0),
506
+ c("span", _t, [
507
+ c("span", {
508
+ class: "h-2.5 rounded-full bg-fill-strong",
509
+ style: R({ width: `${55 + (t * 7 + n * 13) % 35}%` })
510
+ }, null, 4),
511
+ c("span", {
512
+ class: "h-2 rounded-full bg-fill",
513
+ style: R({ width: `${30 + (t * 11 + n * 5) % 30}%` })
514
+ }, null, 4)
515
+ ])
516
+ ], 4)
517
+ ], 2))), 128)),
518
+ W.value ? (l(), r("td", xt, [...u[6] || (u[6] = [
519
+ c("div", { class: "mx-auto h-6 w-6 animate-pulse rounded-full bg-fill motion-reduce:animate-none" }, null, -1)
520
+ ])])) : f("", !0)
521
+ ], 4))), 128)) : f("", !0),
522
+ e.display === "rows" ? (l(!0), r(b, { key: 1 }, L(e.rows, (t, $) => (l(), r("tr", q({
523
+ key: e.rowKey(t),
524
+ class: "animate-row-in",
525
+ "data-test": "collection-row"
526
+ }, { ref_for: !0 }, ne($), {
527
+ class: [e.link(t) ? "cursor-pointer" : void 0, T.value ? It : void 0, e.rowClass?.(t)],
528
+ style: [e.rowHeight ? { height: `${e.rowHeight}px` } : {}, ce($)],
529
+ onClickCapture: u[4] || (u[4] = //@ts-ignore
530
+ (...n) => i(d).onClickCapture && i(d).onClickCapture(...n)),
531
+ onClick: (n) => i(d).onClick(n, t),
532
+ onContextmenu: (n) => i(d).onContextMenu(n, t),
533
+ onPointerdown: (n) => i(d).onPointerDown(n, t)
534
+ }), [
535
+ (l(!0), r(b, null, L(e.columns, (n, Ee) => (l(), r("td", {
536
+ key: String(n.key),
537
+ class: x(xe(n))
538
+ }, [
539
+ S(o.$slots, H(n), {
540
+ item: t,
541
+ value: K(t, n),
542
+ compact: !1,
543
+ to: e.link(t)
544
+ }, () => [
545
+ g(V, {
546
+ column: n,
547
+ item: t,
548
+ compact: !1,
549
+ to: e.link(t),
550
+ search: e.search
551
+ }, De({ _: 2 }, [
552
+ k.leading && Ee === 0 ? {
553
+ name: "leading",
554
+ fn: F(() => [
555
+ S(o.$slots, "leading", {
556
+ item: t,
557
+ compact: !1
558
+ })
559
+ ]),
560
+ key: "0"
561
+ } : void 0
562
+ ]), 1032, ["column", "item", "to", "search"])
563
+ ])
564
+ ], 2))), 128)),
565
+ W.value ? (l(), r("td", $t, [
566
+ S(o.$slots, "actions", { item: t }, () => [
567
+ c("div", St, [
568
+ e.link(t) ? (l(), D(i(ze), {
569
+ key: 0,
570
+ text: i(m)("core.collection.open_record"),
571
+ side: "left"
572
+ }, {
573
+ default: F(() => [
574
+ g(i(we), {
575
+ to: e.link(t),
576
+ "aria-label": `${i(m)("core.collection.open_record")}${e.rowLabel ? `: ${e.rowLabel(t)}` : ""}`,
577
+ class: "inline-flex rounded-md p-1.5 text-content-link transition-colors hover:bg-tint-soft focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-border-focus"
578
+ }, {
579
+ default: F(() => [
580
+ g(i(J), {
581
+ name: "eye",
582
+ size: 18
583
+ })
584
+ ]),
585
+ _: 1
586
+ }, 8, ["to", "aria-label"])
587
+ ]),
588
+ _: 2
589
+ }, 1032, ["text"])) : f("", !0),
590
+ G.value && Z(t) ? (l(), r("button", {
591
+ key: 1,
592
+ type: "button",
593
+ "data-test": "collection-row-more",
594
+ "aria-label": ie(t),
595
+ class: "hit-target flex size-8 cursor-pointer items-center justify-center rounded-full 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",
596
+ onClick: ve((n) => i(d).openMenuFrom(n, t), ["stop"])
597
+ }, [
598
+ g(i(J), {
599
+ name: "moreLine",
600
+ size: 18
601
+ })
602
+ ], 8, Lt)) : f("", !0)
603
+ ])
604
+ ])
605
+ ])) : f("", !0)
606
+ ], 16, Ct))), 128)) : f("", !0),
607
+ e.display === "failed" ? (l(), r("tr", Pt, [
608
+ c("td", {
609
+ colspan: ae.value,
610
+ class: "!whitespace-normal py-6"
611
+ }, [
612
+ S(o.$slots, "failed")
613
+ ], 8, Rt)
614
+ ])) : f("", !0),
615
+ ue.value ? (l(), r("tr", Mt, [
616
+ c("td", {
617
+ colspan: ae.value,
618
+ class: "!whitespace-normal py-6 text-center"
619
+ }, [
620
+ S(o.$slots, "empty", {}, () => [
621
+ g(i(he), {
622
+ title: i(m)("core.collection.no_data")
623
+ }, null, 8, ["title"])
624
+ ])
625
+ ], 8, Et)
626
+ ])) : f("", !0)
627
+ ], 16)
628
+ ], 10, yt)
629
+ ], 4)
630
+ ])),
631
+ e.rowActions ? (l(), D(i(Ne), {
632
+ key: 2,
633
+ ref_key: "rowMenu",
634
+ ref: re,
635
+ items: i(d).menuItems.value,
636
+ label: i(d).menuLabel.value
637
+ }, null, 8, ["items", "label"])) : f("", !0)
638
+ ], 64));
639
+ }
640
+ });
641
+ function Xt(v) {
642
+ const s = je("(max-width: 1023px)"), h = y(() => v().some((e) => e.mobile && e.mobile !== "hidden"));
643
+ return { narrow: y(() => s.value), phone: y(() => s.value && h.value) };
644
+ }
645
+ export {
646
+ Wt as _,
647
+ ke as a,
648
+ V as b,
649
+ Xt as u
650
+ };
@@ -0,0 +1,15 @@
1
+ /**
2
+ * The dark-mode switch of the shell's account menu. A row with a state and nothing else: the app
3
+ * (or `darkMode()`) says whether it is on and what choosing it does.
4
+ *
5
+ * <DarkModeRow :dark="preferences.dark" @toggle="preferences.set(!preferences.dark)" />
6
+ */
7
+ type __VLS_Props = {
8
+ dark: boolean;
9
+ };
10
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
11
+ toggle: () => any;
12
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
13
+ onToggle?: (() => any) | undefined;
14
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
15
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
+ export default _default;