@meddleware/ui 0.1.35 → 0.1.37

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 (202) hide show
  1. package/README.md +49 -13
  2. package/dist/_virtual/_plugin-vue_export-helper.js +8 -0
  3. package/dist/base.css +48 -2
  4. package/dist/components/AppFooter.css +1 -0
  5. package/dist/components/AppFooter.js +7 -0
  6. package/dist/components/AppFooter.vue_vue_type_script_setup_true_lang.js +42 -0
  7. package/dist/components/AppHeader.css +1 -0
  8. package/dist/components/AppHeader.js +7 -0
  9. package/dist/components/AppHeader.vue.d.ts +8 -0
  10. package/dist/components/AppHeader.vue_vue_type_script_setup_true_lang.js +68 -0
  11. package/dist/components/AppSidebar.css +1 -0
  12. package/dist/components/AppSidebar.js +7 -0
  13. package/dist/components/AppSidebar.vue.d.ts +3 -0
  14. package/dist/components/AppSidebar.vue_vue_type_script_setup_true_lang.js +37 -0
  15. package/dist/components/AppTabNav.css +1 -0
  16. package/dist/components/AppTabNav.js +7 -0
  17. package/dist/components/AppTabNav.vue.d.ts +3 -0
  18. package/dist/components/AppTabNav.vue_vue_type_script_setup_true_lang.js +70 -0
  19. package/dist/components/ColorModeControl.css +1 -0
  20. package/dist/components/ColorModeControl.js +7 -0
  21. package/dist/components/ColorModeControl.vue_vue_type_script_setup_true_lang.js +58 -0
  22. package/dist/components/CopyableAddress.css +1 -0
  23. package/dist/components/CopyableAddress.js +7 -0
  24. package/dist/components/CopyableAddress.vue_vue_type_script_setup_true_lang.js +28 -0
  25. package/dist/components/CopyrightLine.css +1 -0
  26. package/dist/components/CopyrightLine.js +7 -0
  27. package/dist/components/CopyrightLine.vue.d.ts +6 -0
  28. package/dist/components/CopyrightLine.vue_vue_type_script_setup_true_lang.js +80 -0
  29. package/dist/components/ExplorerLink.css +1 -0
  30. package/dist/components/ExplorerLink.js +7 -0
  31. package/dist/components/ExplorerLink.vue_vue_type_script_setup_true_lang.js +27 -0
  32. package/dist/components/SidebarGroup.css +1 -0
  33. package/dist/components/SidebarGroup.js +7 -0
  34. package/dist/components/SidebarGroup.vue_vue_type_script_setup_true_lang.js +14 -0
  35. package/dist/components/SidebarItem.css +1 -0
  36. package/dist/components/SidebarItem.js +7 -0
  37. package/dist/components/SidebarItem.vue.d.ts +3 -0
  38. package/dist/components/SidebarItem.vue_vue_type_script_setup_true_lang.js +43 -0
  39. package/dist/components/StatusWidget.css +1 -0
  40. package/dist/components/StatusWidget.js +7 -0
  41. package/dist/components/StatusWidget.vue_vue_type_script_setup_true_lang.js +33 -0
  42. package/dist/components/UiActivityFeed.css +1 -0
  43. package/dist/components/UiActivityFeed.js +7 -0
  44. package/dist/components/UiActivityFeed.vue_vue_type_script_setup_true_lang.js +13 -0
  45. package/dist/components/UiActivityItem.css +1 -0
  46. package/dist/components/UiActivityItem.js +7 -0
  47. package/dist/components/UiActivityItem.vue_vue_type_script_setup_true_lang.js +22 -0
  48. package/dist/components/UiAmount.css +1 -0
  49. package/dist/components/UiAmount.js +7 -0
  50. package/dist/components/UiAmount.vue.d.ts +12 -0
  51. package/dist/components/UiAmount.vue_vue_type_script_setup_true_lang.js +31 -0
  52. package/dist/components/UiAppShell.css +1 -0
  53. package/dist/components/UiAppShell.js +7 -0
  54. package/dist/components/UiAppShell.vue.d.ts +26 -0
  55. package/dist/components/UiAppShell.vue_vue_type_script_setup_true_lang.js +27 -0
  56. package/dist/components/UiBadge.css +1 -0
  57. package/dist/components/UiBadge.js +7 -0
  58. package/dist/components/UiBadge.vue.d.ts +10 -1
  59. package/dist/components/UiBadge.vue_vue_type_script_setup_true_lang.js +35 -0
  60. package/dist/components/UiButton.css +1 -0
  61. package/dist/components/UiButton.js +7 -0
  62. package/dist/components/UiButton.vue.d.ts +17 -7
  63. package/dist/components/UiButton.vue_vue_type_script_setup_true_lang.js +60 -0
  64. package/dist/components/UiCard.css +1 -0
  65. package/dist/components/UiCard.js +7 -0
  66. package/dist/components/UiCard.vue.d.ts +20 -6
  67. package/dist/components/UiCard.vue_vue_type_script_setup_true_lang.js +51 -0
  68. package/dist/components/UiCheckField.css +1 -0
  69. package/dist/components/UiCheckField.js +7 -0
  70. package/dist/components/UiCheckField.vue.d.ts +26 -0
  71. package/dist/components/UiCheckField.vue_vue_type_script_setup_true_lang.js +31 -0
  72. package/dist/components/UiCodeBlock.css +1 -0
  73. package/dist/components/UiCodeBlock.js +7 -0
  74. package/dist/components/UiCodeBlock.vue.d.ts +21 -0
  75. package/dist/components/UiCodeBlock.vue_vue_type_script_setup_true_lang.js +21 -0
  76. package/dist/components/UiCopyButton.css +1 -0
  77. package/dist/components/UiCopyButton.js +7 -0
  78. package/dist/components/UiCopyButton.vue.d.ts +11 -0
  79. package/dist/components/UiCopyButton.vue_vue_type_script_setup_true_lang.js +64 -0
  80. package/dist/components/UiDataTable.css +1 -0
  81. package/dist/components/UiDataTable.js +7 -0
  82. package/dist/components/UiDataTable.vue.d.ts +5 -0
  83. package/dist/components/UiDataTable.vue_vue_type_script_setup_true_lang.js +56 -0
  84. package/dist/components/UiDateTimeField.js +5 -0
  85. package/dist/components/UiDateTimeField.vue.d.ts +18 -0
  86. package/dist/components/UiDateTimeField.vue_vue_type_script_setup_true_lang.js +51 -0
  87. package/dist/components/UiDialog.css +1 -0
  88. package/dist/components/UiDialog.js +7 -0
  89. package/dist/components/UiDialog.vue.d.ts +8 -5
  90. package/dist/components/UiDialog.vue_vue_type_script_setup_true_lang.js +78 -0
  91. package/dist/components/UiEmptyState.css +1 -0
  92. package/dist/components/UiEmptyState.js +7 -0
  93. package/dist/components/UiEmptyState.vue.d.ts +15 -0
  94. package/dist/components/UiEmptyState.vue_vue_type_script_setup_true_lang.js +10 -0
  95. package/dist/components/UiFieldHint.css +1 -0
  96. package/dist/components/UiFieldHint.js +7 -0
  97. package/dist/components/UiFieldHint.vue_vue_type_script_setup_true_lang.js +24 -0
  98. package/dist/components/UiFileField.css +1 -0
  99. package/dist/components/UiFileField.js +7 -0
  100. package/dist/components/UiFileField.vue.d.ts +17 -0
  101. package/dist/components/UiFileField.vue_vue_type_script_setup_true_lang.js +55 -0
  102. package/dist/components/UiFormField.css +1 -0
  103. package/dist/components/UiFormField.js +7 -0
  104. package/dist/components/UiFormField.vue_vue_type_script_setup_true_lang.js +38 -0
  105. package/dist/components/UiInput.css +1 -0
  106. package/dist/components/UiInput.js +7 -0
  107. package/dist/components/UiInput.vue.d.ts +10 -0
  108. package/dist/components/UiInput.vue_vue_type_script_setup_true_lang.js +20 -0
  109. package/dist/components/UiLiveStatus.css +1 -0
  110. package/dist/components/UiLiveStatus.js +7 -0
  111. package/dist/components/UiLiveStatus.vue.d.ts +19 -0
  112. package/dist/components/UiLiveStatus.vue_vue_type_script_setup_true_lang.js +17 -0
  113. package/dist/components/UiMeter.css +1 -0
  114. package/dist/components/UiMeter.js +7 -0
  115. package/dist/components/UiMeter.vue.d.ts +11 -0
  116. package/dist/components/UiMeter.vue_vue_type_script_setup_true_lang.js +41 -0
  117. package/dist/components/UiNotice.css +1 -0
  118. package/dist/components/UiNotice.js +7 -0
  119. package/dist/components/UiNotice.vue.d.ts +16 -8
  120. package/dist/components/UiNotice.vue_vue_type_script_setup_true_lang.js +22 -0
  121. package/dist/components/UiPager.css +1 -0
  122. package/dist/components/UiPager.js +7 -0
  123. package/dist/components/UiPager.vue.d.ts +23 -0
  124. package/dist/components/UiPager.vue_vue_type_script_setup_true_lang.js +46 -0
  125. package/dist/components/UiPanel.css +1 -0
  126. package/dist/components/UiPanel.js +7 -0
  127. package/dist/components/UiPanel.vue_vue_type_script_setup_true_lang.js +21 -0
  128. package/dist/components/UiSegmentedControl.css +1 -0
  129. package/dist/components/UiSegmentedControl.js +7 -0
  130. package/dist/components/UiSegmentedControl.vue.d.ts +11 -1
  131. package/dist/components/UiSegmentedControl.vue_vue_type_script_setup_true_lang.js +57 -0
  132. package/dist/components/UiSelect.css +1 -0
  133. package/dist/components/UiSelect.js +7 -0
  134. package/dist/components/UiSelect.vue.d.ts +2 -1
  135. package/dist/components/UiSelect.vue_vue_type_script_setup_true_lang.js +19 -0
  136. package/dist/components/UiSelectField.js +5 -0
  137. package/dist/components/UiSelectField.vue.d.ts +29 -0
  138. package/dist/components/UiSelectField.vue_vue_type_script_setup_true_lang.js +58 -0
  139. package/dist/components/UiSkipLink.css +1 -0
  140. package/dist/components/UiSkipLink.js +7 -0
  141. package/dist/components/UiSkipLink.vue.d.ts +8 -0
  142. package/dist/components/UiSkipLink.vue_vue_type_script_setup_true_lang.js +14 -0
  143. package/dist/components/UiStatGrid.css +1 -0
  144. package/dist/components/UiStatGrid.js +7 -0
  145. package/dist/components/UiStatGrid.vue_vue_type_script_setup_true_lang.js +10 -0
  146. package/dist/components/UiStatRow.css +1 -0
  147. package/dist/components/UiStatRow.js +7 -0
  148. package/dist/components/UiStatRow.vue_vue_type_script_setup_true_lang.js +19 -0
  149. package/dist/components/UiStatusBar.css +1 -0
  150. package/dist/components/UiStatusBar.js +7 -0
  151. package/dist/components/UiStatusBar.vue_vue_type_script_setup_true_lang.js +45 -0
  152. package/dist/components/UiStatusDot.css +1 -0
  153. package/dist/components/UiStatusDot.js +7 -0
  154. package/dist/components/UiStatusDot.vue.d.ts +6 -2
  155. package/dist/components/UiStatusDot.vue_vue_type_script_setup_true_lang.js +26 -0
  156. package/dist/components/UiStepper.css +1 -0
  157. package/dist/components/UiStepper.js +7 -0
  158. package/dist/components/UiStepper.vue.d.ts +10 -2
  159. package/dist/components/UiStepper.vue_vue_type_script_setup_true_lang.js +55 -0
  160. package/dist/components/UiTabPanel.css +1 -0
  161. package/dist/components/UiTabPanel.js +7 -0
  162. package/dist/components/UiTabPanel.vue_vue_type_script_setup_true_lang.js +22 -0
  163. package/dist/components/UiTextField.js +5 -0
  164. package/dist/components/UiTextField.vue.d.ts +35 -0
  165. package/dist/components/UiTextField.vue_vue_type_script_setup_true_lang.js +59 -0
  166. package/dist/components/UiTextarea.css +1 -0
  167. package/dist/components/UiTextarea.js +7 -0
  168. package/dist/components/UiTextarea.vue.d.ts +10 -0
  169. package/dist/components/UiTextarea.vue_vue_type_script_setup_true_lang.js +19 -0
  170. package/dist/components/UiToolIntro.css +1 -0
  171. package/dist/components/UiToolIntro.js +7 -0
  172. package/dist/components/UiToolIntro.vue_vue_type_script_setup_true_lang.js +10 -0
  173. package/dist/components/UiToolbar.css +1 -0
  174. package/dist/components/UiToolbar.js +7 -0
  175. package/dist/components/UiToolbar.vue.d.ts +5 -2
  176. package/dist/components/UiToolbar.vue_vue_type_script_setup_true_lang.js +49 -0
  177. package/dist/components/UiToolbarButton.css +1 -0
  178. package/dist/components/UiToolbarButton.js +7 -0
  179. package/dist/components/UiToolbarButton.vue_vue_type_script_setup_true_lang.js +13 -0
  180. package/dist/composables/useColorMode.js +46 -0
  181. package/dist/composables/useNow.d.ts +6 -0
  182. package/dist/composables/useNow.js +12 -0
  183. package/dist/composables/usePager.d.ts +28 -0
  184. package/dist/composables/usePager.js +36 -0
  185. package/dist/composables/useSeason.js +8 -0
  186. package/dist/composables/useStatusSnapshot.d.ts +28 -0
  187. package/dist/composables/useStatusSnapshot.js +38 -0
  188. package/dist/index.d.ts +28 -8
  189. package/dist/index.js +58 -0
  190. package/dist/internal/panel.d.ts +8 -2
  191. package/dist/internal/panel.js +29 -0
  192. package/dist/reset.css +1 -0
  193. package/dist/runtime-config.js +73 -0
  194. package/dist/styles/reset.d.ts +1 -0
  195. package/dist/tabs.js +9 -0
  196. package/dist/theme-init.js +26 -0
  197. package/package.json +14 -10
  198. package/dist/explorer.d.ts +0 -13
  199. package/dist/safe-href.d.ts +0 -20
  200. package/dist/status.d.ts +0 -29
  201. package/dist/truncate.d.ts +0 -14
  202. package/dist/ui.js +0 -1086
@@ -0,0 +1,70 @@
1
+ import { tabIds as e } from "../tabs.js";
2
+ import { Fragment as t, createElementBlock as n, createElementVNode as r, defineComponent as i, normalizeClass as a, openBlock as o, renderList as s, toDisplayString as c, unref as l } from "vue";
3
+ //#region src/components/AppTabNav.vue?vue&type=script&setup=true&lang.ts
4
+ var u = ["aria-label"], d = [
5
+ "id",
6
+ "aria-selected",
7
+ "aria-controls",
8
+ "tabindex",
9
+ "onClick",
10
+ "onKeydown"
11
+ ], f = /*@__PURE__*/ i({
12
+ __name: "AppTabNav",
13
+ props: {
14
+ tabs: {},
15
+ modelValue: {},
16
+ idPrefix: {},
17
+ ariaLabel: {},
18
+ variant: { default: "underline" },
19
+ size: { default: "md" },
20
+ allPanels: {
21
+ type: Boolean,
22
+ default: !1
23
+ },
24
+ flush: {
25
+ type: Boolean,
26
+ default: !1
27
+ }
28
+ },
29
+ emits: ["update:modelValue"],
30
+ setup(i, { emit: f }) {
31
+ let p = i, m = f, h = [];
32
+ function g(e) {
33
+ let t = p.tabs[e];
34
+ t && (m("update:modelValue", t.id), h[e]?.focus());
35
+ }
36
+ function _(e, t) {
37
+ let n = p.tabs.length - 1, r = e.key === "ArrowRight" ? t === n ? 0 : t + 1 : e.key === "ArrowLeft" ? t === 0 ? n : t - 1 : e.key === "Home" ? 0 : e.key === "End" ? n : -1;
38
+ r < 0 || (e.preventDefault(), g(r));
39
+ }
40
+ return (f, p) => (o(), n("menu", {
41
+ role: "tablist",
42
+ class: a(["mw-tab-nav", {
43
+ "mw-tab-nav--raised": i.variant === "raised",
44
+ "mw-tab-nav--lg": i.size === "lg",
45
+ "mw-tab-nav--flush": i.flush
46
+ }]),
47
+ "aria-label": i.ariaLabel
48
+ }, [(o(!0), n(t, null, s(i.tabs, (t, s) => (o(), n("li", {
49
+ key: t.id,
50
+ role: "presentation",
51
+ class: "mw-tab-nav__item"
52
+ }, [r("button", {
53
+ id: l(e)(i.idPrefix, t.id).tab,
54
+ ref_for: !0,
55
+ ref: (e) => {
56
+ h[s] = e;
57
+ },
58
+ type: "button",
59
+ role: "tab",
60
+ class: a(["mw-tab-nav__tab", { "mw-tab-nav__tab--active": i.modelValue === t.id }]),
61
+ "aria-selected": i.modelValue === t.id,
62
+ "aria-controls": i.allPanels || i.modelValue === t.id ? l(e)(i.idPrefix, t.id).panel : void 0,
63
+ tabindex: i.modelValue === t.id ? 0 : -1,
64
+ onClick: (e) => m("update:modelValue", t.id),
65
+ onKeydown: (e) => _(e, s)
66
+ }, c(t.label), 43, d)]))), 128))], 10, u));
67
+ }
68
+ });
69
+ //#endregion
70
+ export { f as default };
@@ -0,0 +1 @@
1
+ @layer mw.reset;@layer mw.components{.mw-mode[data-v-905a9db8]{gap:var(--space-4xs);min-inline-size:0;padding:var(--space-4xs);border:1px solid var(--_border,var(--border));border-radius:var(--radius);margin:0;display:inline-flex}.mw-mode__btn[data-v-905a9db8]{justify-content:center;align-items:center;gap:var(--space-3xs);min-block-size:1.5rem;min-inline-size:1.5rem;padding:var(--space-3xs) var(--space-2xs);border-radius:var(--radius-sm);color:var(--_muted,var(--muted));font:inherit;font-size:var(--font-size-sm);cursor:pointer;transition:color var(--transition-base), background var(--transition-base);background:0 0;border:0;display:inline-flex}.mw-mode__btn[data-v-905a9db8]:hover{color:var(--_text,var(--text))}.mw-mode__btn.is-active[data-v-905a9db8]{color:var(--_text,var(--text));background:color-mix(in srgb, var(--_text,var(--text)) 14%, transparent)}.mw-mode__btn[data-v-905a9db8]:focus-visible{outline:2px solid var(--focus-ring);outline-offset:1px}@media (forced-colors:active){.mw-mode__btn.is-active[data-v-905a9db8]{outline-offset:-2px;outline:2px solid highlight}}@media (width<40em){.mw-mode__label[data-v-905a9db8]{display:none}}}
@@ -0,0 +1,7 @@
1
+ import e from "../_virtual/_plugin-vue_export-helper.js";
2
+ import t from "./ColorModeControl.vue_vue_type_script_setup_true_lang.js";
3
+ import "./ColorModeControl.css";
4
+ //#region src/components/ColorModeControl.vue
5
+ var n = /*#__PURE__*/ e(t, [["__scopeId", "data-v-905a9db8"]]);
6
+ //#endregion
7
+ export { n as default };
@@ -0,0 +1,58 @@
1
+ import { Fragment as e, createElementBlock as t, createElementVNode as n, defineComponent as r, normalizeClass as i, openBlock as a, renderList as o, toDisplayString as s } from "vue";
2
+ //#region src/components/ColorModeControl.vue?vue&type=script&setup=true&lang.ts
3
+ var c = { class: "mw-mode" }, l = [
4
+ "aria-pressed",
5
+ "title",
6
+ "onClick"
7
+ ], u = {
8
+ viewBox: "0 0 24 24",
9
+ width: "1em",
10
+ height: "1em",
11
+ fill: "none",
12
+ stroke: "currentColor",
13
+ "stroke-width": "2",
14
+ "stroke-linecap": "round",
15
+ "stroke-linejoin": "round",
16
+ "aria-hidden": "true"
17
+ }, d = {
18
+ key: 1,
19
+ d: "M21 12.8A9 9 0 1 1 11.2 3a7 7 0 0 0 9.8 9.8z"
20
+ }, f = { class: "mw-mode__label" }, p = /*@__PURE__*/ r({
21
+ __name: "ColorModeControl",
22
+ props: {
23
+ modelValue: {},
24
+ modes: { default: () => [
25
+ "light",
26
+ "dark",
27
+ "system"
28
+ ] }
29
+ },
30
+ emits: ["update:modelValue"],
31
+ setup(r) {
32
+ let p = {
33
+ light: "Light",
34
+ dark: "Dark",
35
+ system: "System"
36
+ };
37
+ return (m, h) => (a(), t("fieldset", c, [h[4] ||= n("legend", { class: "mw-visually-hidden" }, "Colour mode", -1), (a(!0), t(e, null, o(r.modes, (o) => (a(), t("button", {
38
+ key: o,
39
+ type: "button",
40
+ class: i(["mw-mode__btn", { "is-active": r.modelValue === o }]),
41
+ "aria-pressed": r.modelValue === o,
42
+ title: p[o],
43
+ onClick: (e) => m.$emit("update:modelValue", o)
44
+ }, [(a(), t("svg", u, [o === "light" ? (a(), t(e, { key: 0 }, [h[0] ||= n("circle", {
45
+ cx: "12",
46
+ cy: "12",
47
+ r: "4"
48
+ }, null, -1), h[1] ||= n("path", { d: "M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4" }, null, -1)], 64)) : o === "dark" ? (a(), t("path", d)) : (a(), t(e, { key: 2 }, [h[2] ||= n("rect", {
49
+ x: "3",
50
+ y: "4",
51
+ width: "18",
52
+ height: "12",
53
+ rx: "2"
54
+ }, null, -1), h[3] ||= n("path", { d: "M8 20h8M12 16v4" }, null, -1)], 64))])), n("span", f, s(p[o]), 1)], 10, l))), 128))]));
55
+ }
56
+ });
57
+ //#endregion
58
+ export { p as default };
@@ -0,0 +1 @@
1
+ @layer mw.reset;@layer mw.components{.ca-root[data-v-60f80445]{align-items:center;gap:.35em;max-width:100%;display:inline-flex}.ca-value[data-v-60f80445]{font-family:var(--mw-font-mono);font-size:inherit;overflow-wrap:anywhere;white-space:normal;min-width:0}}
@@ -0,0 +1,7 @@
1
+ import e from "../_virtual/_plugin-vue_export-helper.js";
2
+ import t from "./CopyableAddress.vue_vue_type_script_setup_true_lang.js";
3
+ import "./CopyableAddress.css";
4
+ //#region src/components/CopyableAddress.vue
5
+ var n = /*#__PURE__*/ e(t, [["__scopeId", "data-v-60f80445"]]);
6
+ //#endregion
7
+ export { n as default };
@@ -0,0 +1,28 @@
1
+ import e from "./UiCopyButton.js";
2
+ import { computed as t, createElementBlock as n, createElementVNode as r, createTextVNode as i, createVNode as a, defineComponent as o, openBlock as s, renderSlot as c, toDisplayString as l } from "vue";
3
+ import { DEFAULT_TRUNCATE_CHARS as u, truncateMiddle as d } from "@meddleware/web-utils";
4
+ //#region src/components/CopyableAddress.vue?vue&type=script&setup=true&lang.ts
5
+ var f = { class: "ca-root" }, p = ["title"], m = /*@__PURE__*/ o({
6
+ __name: "CopyableAddress",
7
+ props: {
8
+ address: {},
9
+ truncate: {
10
+ type: Boolean,
11
+ default: !0
12
+ },
13
+ chars: { default: () => [...u] },
14
+ label: { default: "Copy" }
15
+ },
16
+ setup(o) {
17
+ let u = o, m = t(() => u.truncate ? d(u.address, u.chars) : u.address);
18
+ return (t, u) => (s(), n("span", f, [r("span", {
19
+ class: "ca-value",
20
+ title: o.address
21
+ }, [c(t.$slots, "default", {}, () => [i(l(m.value), 1)], !0)], 8, p), a(e, {
22
+ value: o.address,
23
+ label: o.label
24
+ }, null, 8, ["value", "label"])]));
25
+ }
26
+ });
27
+ //#endregion
28
+ export { m as default };
@@ -0,0 +1 @@
1
+ @layer mw.reset;@layer mw.components{.copyright-line[data-v-e1afe1f4]{text-align:center;max-width:100%;display:inline-block}.symbol-link[data-v-e1afe1f4]{white-space:nowrap;color:inherit;vertical-align:text-top;padding:0 var(--space-4xs);align-items:center;text-decoration:none;display:inline-flex}.symbol-link[data-v-e1afe1f4]:hover{text-decoration:underline}.symbol-mark[data-v-e1afe1f4]{vertical-align:-.15em;display:inline}}
@@ -0,0 +1,7 @@
1
+ import e from "../_virtual/_plugin-vue_export-helper.js";
2
+ import t from "./CopyrightLine.vue_vue_type_script_setup_true_lang.js";
3
+ import "./CopyrightLine.css";
4
+ //#region src/components/CopyrightLine.vue
5
+ var n = /*#__PURE__*/ e(t, [["__scopeId", "data-v-e1afe1f4"]]);
6
+ //#endregion
7
+ export { n as default };
@@ -5,6 +5,11 @@ type __VLS_Props = {
5
5
  year?: number;
6
6
  rightsStatement?: RightsStatementVariant | string;
7
7
  symbolVariant?: SymbolVariant;
8
+ /**
9
+ * Where the legal documents are served (default `https://meddleware.co.uk/legal/`, the one canonical host, so an app ships no copies).
10
+ * A root-relative path (`/legal/`) serves them from the app's own origin instead.
11
+ */
12
+ legalBase?: string;
8
13
  /** Optional override for the symbol link href. Defaults based on symbolVariant. */
9
14
  symbolHref?: string;
10
15
  /** Optional override for the symbol link aria-label. Defaults based on symbolVariant. */
@@ -14,6 +19,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {
14
19
  year: number;
15
20
  rightsStatement: string;
16
21
  symbolVariant: SymbolVariant;
22
+ legalBase: string;
17
23
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
18
24
  declare const _default: typeof __VLS_export;
19
25
  export default _default;
@@ -0,0 +1,80 @@
1
+ import { Fragment as e, computed as t, createElementBlock as n, createElementVNode as r, createTextVNode as i, defineComponent as a, openBlock as o, toDisplayString as s, unref as c } from "vue";
2
+ import { safeHref as l, safePath as u } from "@meddleware/web-utils";
3
+ //#region src/components/CopyrightLine.vue?vue&type=script&setup=true&lang.ts
4
+ var d = { class: "copyright-line" }, f = ["href", "aria-label"], p = {
5
+ key: 1,
6
+ viewBox: "0 0 24 24",
7
+ width: "1em",
8
+ height: "1em",
9
+ "aria-hidden": "true",
10
+ focusable: "false",
11
+ class: "symbol-mark"
12
+ }, m = {
13
+ key: 2,
14
+ viewBox: "0 0 24 24",
15
+ width: "1em",
16
+ height: "1em",
17
+ "aria-hidden": "true",
18
+ focusable: "false",
19
+ class: "symbol-mark"
20
+ }, h = /*@__PURE__*/ a({
21
+ __name: "CopyrightLine",
22
+ props: {
23
+ organisationName: {},
24
+ year: { default: () => (/* @__PURE__ */ new Date()).getFullYear() },
25
+ rightsStatement: { default: "all" },
26
+ symbolVariant: { default: "copyright" },
27
+ legalBase: { default: "https://meddleware.co.uk/legal/" },
28
+ symbolHref: {},
29
+ symbolLabel: {}
30
+ },
31
+ setup(a) {
32
+ let h = a;
33
+ function g(e) {
34
+ return e.startsWith("/") ? u(e) : l(e);
35
+ }
36
+ let _ = {
37
+ kopimi: "powr.broccoli-kopimi.pdf",
38
+ copyleft: "copyleft.html",
39
+ copyright: "copyright.html"
40
+ }, v = t(() => (h.symbolHref ? g(h.symbolHref) : void 0) || g(h.legalBase.replace(/\/?$/, "/") + _[h.symbolVariant]) || `/legal/${_[h.symbolVariant]}`), y = t(() => v.value.startsWith("/")), b = t(() => h.symbolLabel || (h.symbolVariant === "kopimi" ? "Kopimi legal notice" : h.symbolVariant === "copyleft" ? "Copyleft legal notice" : "Copyright legal notice")), x = t(() => h.rightsStatement === "" ? "" : h.rightsStatement === "none" ? "No rights reserved." : h.rightsStatement === "all" || !h.rightsStatement ? "All rights reserved." : h.rightsStatement === "jam" ? "All jams preserved." : h.rightsStatement);
41
+ return (t, h) => (o(), n("small", d, [r("a", {
42
+ href: y.value ? c(u)(v.value) : c(l)(v.value),
43
+ class: "symbol-link",
44
+ target: "_blank",
45
+ rel: "noopener noreferrer",
46
+ "aria-label": b.value
47
+ }, [a.symbolVariant === "copyright" ? (o(), n(e, { key: 0 }, [i("©")], 64)) : a.symbolVariant === "copyleft" ? (o(), n("svg", p, [...h[0] ||= [r("circle", {
48
+ cx: "12",
49
+ cy: "12",
50
+ r: "9.5",
51
+ fill: "none",
52
+ stroke: "currentColor",
53
+ "stroke-width": "1.5"
54
+ }, null, -1), r("text", {
55
+ x: "-12",
56
+ y: "12",
57
+ transform: "scale(-1,1)",
58
+ "text-anchor": "middle",
59
+ "dominant-baseline": "central",
60
+ "font-family": "system-ui, sans-serif",
61
+ "font-size": "13",
62
+ fill: "currentColor"
63
+ }, "C", -1)]])) : (o(), n("svg", m, [...h[1] ||= [r("path", {
64
+ d: "M12 4L22 23H2Z",
65
+ fill: "none",
66
+ stroke: "currentColor",
67
+ "stroke-width": "1.5"
68
+ }, null, -1), r("text", {
69
+ x: "12",
70
+ y: "18",
71
+ "text-anchor": "middle",
72
+ "dominant-baseline": "middle",
73
+ "font-family": "system-ui, sans-serif",
74
+ "font-size": "11",
75
+ fill: "currentColor"
76
+ }, "C", -1)]]))], 8, f), i(" " + s(a.year) + " " + s(a.organisationName) + "." + s(x.value ? ` ${x.value}` : ""), 1)]));
77
+ }
78
+ });
79
+ //#endregion
80
+ export { h as default };
@@ -0,0 +1 @@
1
+ @layer mw.reset;@layer mw.components{.el-root[data-v-afd81c09]{min-block-size:calc(var(--space-sm) + var(--space-3xs));font-family:var(--mw-font-mono);font-size:inherit;color:var(--mw-link,var(--accent));text-underline-offset:.18em;transition:color var(--duration-base);-webkit-text-decoration:underline dotted;text-decoration:underline dotted;display:inline-block}.el-root[data-v-afd81c09]:hover{color:var(--text);text-decoration-style:solid}}
@@ -0,0 +1,7 @@
1
+ import e from "../_virtual/_plugin-vue_export-helper.js";
2
+ import t from "./ExplorerLink.vue_vue_type_script_setup_true_lang.js";
3
+ import "./ExplorerLink.css";
4
+ //#region src/components/ExplorerLink.vue
5
+ var n = /*#__PURE__*/ e(t, [["__scopeId", "data-v-afd81c09"]]);
6
+ //#endregion
7
+ export { n as default };
@@ -0,0 +1,27 @@
1
+ import { computed as e, createElementBlock as t, createTextVNode as n, defineComponent as r, openBlock as i, renderSlot as a, toDisplayString as o, unref as s } from "vue";
2
+ import { DEFAULT_TRUNCATE_CHARS as c, safeHref as l, truncateMiddle as u } from "@meddleware/web-utils";
3
+ //#region src/components/ExplorerLink.vue?vue&type=script&setup=true&lang.ts
4
+ var d = ["href", "title"], f = /*@__PURE__*/ r({
5
+ __name: "ExplorerLink",
6
+ props: {
7
+ href: {},
8
+ value: {},
9
+ truncate: {
10
+ type: Boolean,
11
+ default: !0
12
+ },
13
+ chars: { default: () => [...c] }
14
+ },
15
+ setup(r) {
16
+ let c = r, f = e(() => c.value ? c.truncate ? u(c.value, c.chars) : c.value : "");
17
+ return (e, c) => (i(), t("a", {
18
+ class: "el-root",
19
+ href: s(l)(r.href),
20
+ target: "_blank",
21
+ rel: "noopener noreferrer",
22
+ title: r.value
23
+ }, [a(e.$slots, "default", {}, () => [n(o(f.value), 1)], !0)], 8, d));
24
+ }
25
+ });
26
+ //#endregion
27
+ export { f as default };
@@ -0,0 +1 @@
1
+ @layer mw.reset;@layer mw.components{.sidebar-group[data-v-d2020093]{border:0;min-inline-size:0;margin:0;padding:0}.sidebar-group--l1+.sidebar-group--l1[data-v-d2020093]{margin-block-start:var(--space-2xs)}.sidebar-group__label[data-v-d2020093]{float:inline-start;width:100%;padding:var(--space-3xs) var(--space-xs);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--_muted,var(--muted));-webkit-user-select:none;user-select:none}.sidebar-group__label[data-v-d2020093]+*{clear:both}.sidebar-group--l1>.sidebar-group__label[data-v-d2020093]{text-transform:uppercase;letter-spacing:var(--tracking-wide)}.sidebar-group--l2[data-v-d2020093]{padding-inline-start:var(--space-3xs)}.sidebar-group--l2>.sidebar-group__label[data-v-d2020093]{font-weight:var(--font-weight-medium);padding-inline-start:var(--space-xs)}}
@@ -0,0 +1,7 @@
1
+ import e from "../_virtual/_plugin-vue_export-helper.js";
2
+ import t from "./SidebarGroup.vue_vue_type_script_setup_true_lang.js";
3
+ import "./SidebarGroup.css";
4
+ //#region src/components/SidebarGroup.vue
5
+ var n = /*#__PURE__*/ e(t, [["__scopeId", "data-v-d2020093"]]);
6
+ //#endregion
7
+ export { n as default };
@@ -0,0 +1,14 @@
1
+ import { createElementBlock as e, createElementVNode as t, defineComponent as n, normalizeClass as r, openBlock as i, renderSlot as a, toDisplayString as o } from "vue";
2
+ //#region src/components/SidebarGroup.vue?vue&type=script&setup=true&lang.ts
3
+ var s = { class: "sidebar-group__label" }, c = /*@__PURE__*/ n({
4
+ __name: "SidebarGroup",
5
+ props: {
6
+ label: {},
7
+ level: { default: 1 }
8
+ },
9
+ setup(n) {
10
+ return (c, l) => (i(), e("fieldset", { class: r(["sidebar-group", `sidebar-group--l${n.level}`]) }, [t("legend", s, o(n.label), 1), a(c.$slots, "default", {}, void 0, !0)], 2));
11
+ }
12
+ });
13
+ //#endregion
14
+ export { c as default };
@@ -0,0 +1 @@
1
+ @layer mw.reset;@layer mw.components{.sidebar-item[data-v-cb0a8084]{align-items:center;gap:var(--space-2xs);width:100%;padding:var(--space-2xs) var(--space-sm);color:var(--_muted,var(--muted));font:inherit;text-align:left;cursor:pointer;transition:background var(--transition-base), color var(--transition-base);background:0 0;border:0;border-radius:0;text-decoration:none;display:flex}.sidebar-item[data-v-cb0a8084]:hover:not(:disabled){background:color-mix(in srgb, currentColor 10%, transparent);color:var(--_text,var(--text))}.sidebar-item.is-active[data-v-cb0a8084]{background:color-mix(in srgb, var(--accent) 26%, transparent);color:var(--_text,var(--text))}.sidebar-item[data-v-cb0a8084]:disabled{cursor:default}@media (forced-colors:active){.sidebar-item.is-active[data-v-cb0a8084]{outline-offset:-2px;outline:2px solid highlight}}.sidebar-item[data-v-cb0a8084]:focus-visible{outline:2px solid var(--focus-ring);outline-offset:-2px}.sidebar-item__icon[data-v-cb0a8084]{width:var(--space-sm);text-align:center}}
@@ -0,0 +1,7 @@
1
+ import e from "../_virtual/_plugin-vue_export-helper.js";
2
+ import t from "./SidebarItem.vue_vue_type_script_setup_true_lang.js";
3
+ import "./SidebarItem.css";
4
+ //#region src/components/SidebarItem.vue
5
+ var n = /*#__PURE__*/ e(t, [["__scopeId", "data-v-cb0a8084"]]);
6
+ //#endregion
7
+ export { n as default };
@@ -1,8 +1,11 @@
1
1
  type __VLS_Props = {
2
2
  label: string;
3
+ /** A decorative leading glyph (hidden from assistive technology). */
3
4
  icon?: string;
4
5
  active?: boolean;
5
6
  disabled?: boolean;
7
+ /** Render an `<a>` to this root-relative path or URL (checked with `safePath` / `safeHref`). */
8
+ href?: string;
6
9
  };
7
10
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
8
11
  disabled: boolean;
@@ -0,0 +1,43 @@
1
+ import { createCommentVNode as e, createElementBlock as t, createTextVNode as n, defineComponent as r, normalizeClass as i, openBlock as a, toDisplayString as o, unref as s } from "vue";
2
+ import { safeHref as c, safePath as l } from "@meddleware/web-utils";
3
+ //#region src/components/SidebarItem.vue?vue&type=script&setup=true&lang.ts
4
+ var u = ["href", "aria-current"], d = {
5
+ key: 0,
6
+ class: "sidebar-item__icon",
7
+ "aria-hidden": "true"
8
+ }, f = ["disabled", "aria-current"], p = {
9
+ key: 0,
10
+ class: "sidebar-item__icon",
11
+ "aria-hidden": "true"
12
+ }, m = /*@__PURE__*/ r({
13
+ __name: "SidebarItem",
14
+ props: {
15
+ label: {},
16
+ icon: {},
17
+ active: {
18
+ type: Boolean,
19
+ default: !1
20
+ },
21
+ disabled: {
22
+ type: Boolean,
23
+ default: !1
24
+ },
25
+ href: {}
26
+ },
27
+ setup(r) {
28
+ return (m, h) => r.href === void 0 ? (a(), t("button", {
29
+ key: 1,
30
+ type: "button",
31
+ class: i(["sidebar-item", { "is-active": r.active }]),
32
+ disabled: r.disabled,
33
+ "aria-current": r.active ? "page" : void 0
34
+ }, [r.icon ? (a(), t("span", p, o(r.icon), 1)) : e("", !0), n(" " + o(r.label), 1)], 10, f)) : (a(), t("a", {
35
+ key: 0,
36
+ href: r.href.startsWith("/") ? s(l)(r.href) : s(c)(r.href),
37
+ class: i(["sidebar-item", { "is-active": r.active }]),
38
+ "aria-current": r.active ? "page" : void 0
39
+ }, [r.icon ? (a(), t("span", d, o(r.icon), 1)) : e("", !0), n(" " + o(r.label), 1)], 10, u));
40
+ }
41
+ });
42
+ //#endregion
43
+ export { m as default };
@@ -0,0 +1 @@
1
+ @layer mw.reset;@layer mw.components{.status-widget[data-v-faeb23fe]{align-items:center;gap:var(--space-2xs);color:inherit;font-size:var(--font-size-sm);text-decoration:none;display:inline-flex}.status-widget[data-v-faeb23fe]:hover{text-decoration:underline}}
@@ -0,0 +1,7 @@
1
+ import e from "../_virtual/_plugin-vue_export-helper.js";
2
+ import t from "./StatusWidget.vue_vue_type_script_setup_true_lang.js";
3
+ import "./StatusWidget.css";
4
+ //#region src/components/StatusWidget.vue
5
+ var n = /*#__PURE__*/ e(t, [["__scopeId", "data-v-faeb23fe"]]);
6
+ //#endregion
7
+ export { n as default };
@@ -0,0 +1,33 @@
1
+ import e from "./UiStatusDot.js";
2
+ import { useStatusSnapshot as t } from "../composables/useStatusSnapshot.js";
3
+ import { computed as n, createElementBlock as r, createTextVNode as i, createVNode as a, defineComponent as o, normalizeClass as s, openBlock as c, toDisplayString as l, unref as u } from "vue";
4
+ import { STATUS_HEADLINE as d, safeHref as f } from "@meddleware/web-utils";
5
+ //#region src/components/StatusWidget.vue?vue&type=script&setup=true&lang.ts
6
+ var p = ["href", "title"], m = /*@__PURE__*/ o({
7
+ __name: "StatusWidget",
8
+ props: {
9
+ apiUrl: { default: "https://status.meddleware.co.uk/api/status" },
10
+ href: { default: "https://status.meddleware.co.uk" },
11
+ pollInterval: { default: 6e4 }
12
+ },
13
+ setup(o) {
14
+ let m = o, h = {
15
+ operational: "ok",
16
+ degraded: "degraded",
17
+ down: "error",
18
+ unknown: "degraded"
19
+ }, { snapshot: g, error: _ } = t({
20
+ url: m.apiUrl,
21
+ intervalMs: m.pollInterval
22
+ }), v = n(() => _.value ? "error" : g.value ? h[g.value.overall] : "checking"), y = n(() => _.value ? "Status unavailable" : g.value ? d[g.value.overall] : "Checking status…"), b = n(() => v.value === "ok" ? "operational" : v.value === "degraded" ? "degraded" : v.value === "error" ? "down" : "unknown");
23
+ return (t, n) => (c(), r("a", {
24
+ href: u(f)(o.href),
25
+ target: "_blank",
26
+ rel: "noopener noreferrer",
27
+ class: s(["status-widget", `status-widget--${v.value}`]),
28
+ title: `Platform status: ${y.value}`
29
+ }, [a(e, { status: b.value }, null, 8, ["status"]), i(l(y.value), 1)], 10, p));
30
+ }
31
+ });
32
+ //#endregion
33
+ export { m as default };
@@ -0,0 +1 @@
1
+ @layer mw.reset;@layer mw.components{.mw-feed[data-v-bdd1bebd]{font-size:var(--font-size-sm);margin:0;padding:0;list-style:none}}
@@ -0,0 +1,7 @@
1
+ import e from "../_virtual/_plugin-vue_export-helper.js";
2
+ import t from "./UiActivityFeed.vue_vue_type_script_setup_true_lang.js";
3
+ import "./UiActivityFeed.css";
4
+ //#region src/components/UiActivityFeed.vue
5
+ var n = /*#__PURE__*/ e(t, [["__scopeId", "data-v-bdd1bebd"]]);
6
+ //#endregion
7
+ export { n as default };
@@ -0,0 +1,13 @@
1
+ import { createElementBlock as e, defineComponent as t, openBlock as n, renderSlot as r } from "vue";
2
+ //#region src/components/UiActivityFeed.vue?vue&type=script&setup=true&lang.ts
3
+ var i = {
4
+ class: "mw-feed",
5
+ role: "list"
6
+ }, a = /*@__PURE__*/ t({
7
+ __name: "UiActivityFeed",
8
+ setup(t) {
9
+ return (t, a) => (n(), e("ul", i, [r(t.$slots, "default", {}, void 0, !0)]));
10
+ }
11
+ });
12
+ //#endregion
13
+ export { a as default };
@@ -0,0 +1 @@
1
+ @layer mw.reset;@layer mw.components{.mw-feed__item[data-v-402f889f]{align-items:flex-start;gap:var(--space-2xs);padding:var(--space-3xs) 0;border-bottom:1px solid var(--border);color:var(--text);font-weight:var(--font-weight-medium);white-space:nowrap;display:flex}.mw-feed__item[data-v-402f889f]:before{content:"";width:var(--space-2xs);height:var(--space-2xs);background:var(--accent);margin-top:var(--space-3xs);border-radius:50%;flex-shrink:0}.mw-feed__item[data-v-402f889f]:last-child{border-bottom:none}.mw-feed__meta[data-v-402f889f]{color:var(--muted);font-family:var(--mw-font-mono);font-size:var(--font-size-2xs);font-weight:var(--font-weight-regular);margin-left:auto}}
@@ -0,0 +1,7 @@
1
+ import e from "../_virtual/_plugin-vue_export-helper.js";
2
+ import t from "./UiActivityItem.vue_vue_type_script_setup_true_lang.js";
3
+ import "./UiActivityItem.css";
4
+ //#region src/components/UiActivityItem.vue
5
+ var n = /*#__PURE__*/ e(t, [["__scopeId", "data-v-402f889f"]]);
6
+ //#endregion
7
+ export { n as default };
@@ -0,0 +1,22 @@
1
+ import { createElementBlock as e, createTextVNode as t, defineComponent as n, openBlock as r, renderSlot as i, toDisplayString as a } from "vue";
2
+ //#region src/components/UiActivityItem.vue?vue&type=script&setup=true&lang.ts
3
+ var o = { class: "mw-feed__item" }, s = ["datetime"], c = {
4
+ key: 1,
5
+ class: "mw-feed__meta"
6
+ }, l = /*@__PURE__*/ n({
7
+ __name: "UiActivityItem",
8
+ props: {
9
+ type: {},
10
+ time: {},
11
+ datetime: {}
12
+ },
13
+ setup(n) {
14
+ return (l, u) => (r(), e("li", o, [i(l.$slots, "type", {}, () => [t(a(n.type), 1)], !0), n.datetime ? (r(), e("time", {
15
+ key: 0,
16
+ class: "mw-feed__meta",
17
+ datetime: n.datetime
18
+ }, [i(l.$slots, "time", {}, () => [t(a(n.time), 1)], !0)], 8, s)) : (r(), e("small", c, [i(l.$slots, "time", {}, () => [t(a(n.time), 1)], !0)]))]));
19
+ }
20
+ });
21
+ //#endregion
22
+ export { l as default };
@@ -0,0 +1 @@
1
+ @layer mw.reset;@layer mw.components{.mw-amount[data-v-51fb5258]{font-family:var(--mw-font-mono);white-space:nowrap}}
@@ -0,0 +1,7 @@
1
+ import e from "../_virtual/_plugin-vue_export-helper.js";
2
+ import t from "./UiAmount.vue_vue_type_script_setup_true_lang.js";
3
+ import "./UiAmount.css";
4
+ //#region src/components/UiAmount.vue
5
+ var n = /*#__PURE__*/ e(t, [["__scopeId", "data-v-51fb5258"]]);
6
+ //#endregion
7
+ export { n as default };
@@ -0,0 +1,12 @@
1
+ type __VLS_Props = {
2
+ /** The amount in base units: a bigint, an integer, or a decimal string of an integer. */
3
+ value: bigint | number | string | null | undefined;
4
+ symbol?: string;
5
+ exact?: boolean;
6
+ };
7
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
8
+ symbol: string;
9
+ exact: boolean;
10
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
11
+ declare const _default: typeof __VLS_export;
12
+ export default _default;
@@ -0,0 +1,31 @@
1
+ import { computed as e, createElementBlock as t, defineComponent as n, openBlock as r, toDisplayString as i } from "vue";
2
+ import { formatCoinAmount as a, formatCoinExact as o } from "@meddleware/web-utils";
3
+ //#region src/components/UiAmount.vue?vue&type=script&setup=true&lang.ts
4
+ var s = ["value"], c = /*@__PURE__*/ n({
5
+ __name: "UiAmount",
6
+ props: {
7
+ value: {},
8
+ symbol: { default: "SUI" },
9
+ exact: {
10
+ type: Boolean,
11
+ default: !1
12
+ }
13
+ },
14
+ setup(n) {
15
+ let c = n, l = e(() => {
16
+ let e = c.value;
17
+ if (e == null) return null;
18
+ try {
19
+ return typeof e == "bigint" ? e : BigInt(typeof e == "number" ? Math.trunc(e) : e.trim());
20
+ } catch {
21
+ return null;
22
+ }
23
+ }), u = e(() => l.value === null ? "—" : (c.exact ? o : a)(l.value, c.symbol));
24
+ return (e, n) => (r(), t("data", {
25
+ class: "mw-amount",
26
+ value: l.value === null ? void 0 : l.value.toString()
27
+ }, i(u.value), 9, s));
28
+ }
29
+ });
30
+ //#endregion
31
+ export { c as default };
@@ -0,0 +1 @@
1
+ @layer mw.reset;@layer mw.components{.mw-shell[data-v-23c8caaf]{grid-template-rows:auto 1fr auto;grid-template-columns:minmax(0,1fr);min-height:100dvh;display:grid}.mw-shell--sidebar[data-v-23c8caaf]{grid-template-columns:auto minmax(0,1fr)}.mw-shell>header[data-v-23c8caaf-s],.mw-shell>footer[data-v-23c8caaf-s]{grid-column:1/-1}.mw-shell__main[data-v-23c8caaf]{min-width:0}.mw-shell--sidebar>.mw-shell__main[data-v-23c8caaf]{grid-column:2}@media (width<45em){.mw-shell--sidebar[data-v-23c8caaf]{grid-template-columns:minmax(0,1fr)}.mw-shell--sidebar>.mw-shell__main[data-v-23c8caaf]{grid-column:1}}.mw-shell__main--contained[data-v-23c8caaf]{width:100%;max-width:var(--mw-tool-content-max);padding:var(--space-sm) var(--space-sm) var(--space-lg);margin-inline:auto}}
@@ -0,0 +1,7 @@
1
+ import e from "../_virtual/_plugin-vue_export-helper.js";
2
+ import t from "./UiAppShell.vue_vue_type_script_setup_true_lang.js";
3
+ import "./UiAppShell.css";
4
+ //#region src/components/UiAppShell.vue
5
+ var n = /*#__PURE__*/ e(t, [["__scopeId", "data-v-23c8caaf"]]);
6
+ //#endregion
7
+ export { n as default };