@meddleware/ui 0.1.34 → 0.1.36

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 +15 -11
  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 @@
1
+ @layer mw.reset;@layer mw.components{.mw-notice[data-v-9bed4c15]{padding:var(--space-2xs) var(--space-xs);border:1px solid var(--border);border-left-width:var(--space-4xs);border-radius:var(--radius);background:var(--lift);color:var(--text);font-size:var(--font-size-sm);margin:0}.mw-notice--error[data-v-9bed4c15]{border-left-color:var(--danger);background:color-mix(in srgb, var(--danger) 8%, var(--lift))}.mw-notice--ok[data-v-9bed4c15]{border-left-color:var(--ok);background:color-mix(in srgb, var(--ok) 8%, var(--lift))}.mw-notice--warning[data-v-9bed4c15]{border-left-color:var(--warning);background:color-mix(in srgb, var(--warning) 12%, var(--lift))}}
@@ -0,0 +1,7 @@
1
+ import e from "../_virtual/_plugin-vue_export-helper.js";
2
+ import t from "./UiNotice.vue_vue_type_script_setup_true_lang.js";
3
+ import "./UiNotice.css";
4
+ //#region src/components/UiNotice.vue
5
+ var n = /*#__PURE__*/ e(t, [["__scopeId", "data-v-9bed4c15"]]);
6
+ //#endregion
7
+ export { n as default };
@@ -1,17 +1,25 @@
1
1
  type __VLS_Props = {
2
2
  /**
3
- * Semantic intent — controls colour and ARIA role.
4
- * - `'info'` (default): neutral informational note.
5
- * - `'error'`: danger-coloured, sets `role="alert"` for assistive technologies.
6
- * - `'ok'`: success-coloured, sets `role="status"`.
3
+ * Semantic intent: colour and ARIA role.
4
+ * - `'info'` (default): a neutral note.
5
+ * - `'warning'`: caution; `role="status"` (polite).
6
+ * - `'error'`: danger-coloured; `role="alert"` (assertive).
7
+ * - `'ok'`: success-coloured; `role="status"`.
7
8
  */
8
- type?: 'info' | 'error' | 'ok';
9
+ type?: 'info' | 'warning' | 'error' | 'ok';
10
+ /** The message, for the common case of one sentence (instead of the default slot). */
11
+ message?: string;
12
+ /** Root element: a `<p>` (default) holds phrasing content; use `div` for block content (lists, several paragraphs). */
13
+ as?: 'p' | 'div';
9
14
  };
10
- declare var __VLS_1: {};
15
+ declare var __VLS_7: {};
11
16
  type __VLS_Slots = {} & {
12
- default?: (props: typeof __VLS_1) => any;
17
+ default?: (props: typeof __VLS_7) => any;
13
18
  };
14
- declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
19
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
20
+ type: "ok" | "info" | "error" | "warning";
21
+ as: "div" | "p";
22
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
15
23
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
16
24
  declare const _default: typeof __VLS_export;
17
25
  export default _default;
@@ -0,0 +1,22 @@
1
+ import { computed as e, createBlock as t, createTextVNode as n, defineComponent as r, normalizeClass as i, openBlock as a, renderSlot as o, resolveDynamicComponent as s, toDisplayString as c, withCtx as l } from "vue";
2
+ //#region src/components/UiNotice.vue?vue&type=script&setup=true&lang.ts
3
+ var u = /*@__PURE__*/ r({
4
+ __name: "UiNotice",
5
+ props: {
6
+ type: { default: "info" },
7
+ message: {},
8
+ as: { default: "p" }
9
+ },
10
+ setup(r) {
11
+ let u = r, d = e(() => u.type === "error" ? "alert" : u.type === "ok" || u.type === "warning" ? "status" : void 0);
12
+ return (e, u) => (a(), t(s(r.as), {
13
+ class: i(["mw-notice", r.type === "info" ? "" : `mw-notice--${r.type}`]),
14
+ role: d.value
15
+ }, {
16
+ default: l(() => [o(e.$slots, "default", {}, () => [n(c(r.message), 1)], !0)]),
17
+ _: 3
18
+ }, 8, ["class", "role"]));
19
+ }
20
+ });
21
+ //#endregion
22
+ export { u as default };
@@ -0,0 +1 @@
1
+ @layer mw.reset;@layer mw.components{.mw-pager[data-v-bdf9f25e]{gap:var(--space-sm);margin-top:var(--space-xs);justify-content:flex-end;align-items:center;display:flex}.mw-pager__page[data-v-bdf9f25e]{color:var(--muted);font-size:var(--font-size-sm)}}
@@ -0,0 +1,7 @@
1
+ import e from "../_virtual/_plugin-vue_export-helper.js";
2
+ import t from "./UiPager.vue_vue_type_script_setup_true_lang.js";
3
+ import "./UiPager.css";
4
+ //#region src/components/UiPager.vue
5
+ var n = /*#__PURE__*/ e(t, [["__scopeId", "data-v-bdf9f25e"]]);
6
+ //#endregion
7
+ export { n as default };
@@ -0,0 +1,23 @@
1
+ type __VLS_Props = {
2
+ /** Zero-based index of the page shown. */
3
+ index: number;
4
+ hasNext: boolean;
5
+ loading?: boolean;
6
+ /** Names the navigation landmark. */
7
+ label?: string;
8
+ prevLabel?: string;
9
+ nextLabel?: string;
10
+ };
11
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
12
+ prev: () => any;
13
+ next: () => any;
14
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
15
+ onPrev?: (() => any) | undefined;
16
+ onNext?: (() => any) | undefined;
17
+ }>, {
18
+ label: string;
19
+ prevLabel: string;
20
+ nextLabel: string;
21
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
22
+ declare const _default: typeof __VLS_export;
23
+ export default _default;
@@ -0,0 +1,46 @@
1
+ import e from "./UiButton.js";
2
+ import { Fragment as t, createCommentVNode as n, createElementBlock as r, createElementVNode as i, createTextVNode as a, createVNode as o, defineComponent as s, openBlock as c, toDisplayString as l, withCtx as u } from "vue";
3
+ //#region src/components/UiPager.vue?vue&type=script&setup=true&lang.ts
4
+ var d = ["aria-label"], f = {
5
+ class: "mw-pager__page",
6
+ "aria-label": "Current page"
7
+ }, p = /*@__PURE__*/ s({
8
+ __name: "UiPager",
9
+ props: {
10
+ index: {},
11
+ hasNext: { type: Boolean },
12
+ loading: { type: Boolean },
13
+ label: { default: "Pages" },
14
+ prevLabel: { default: "Previous" },
15
+ nextLabel: { default: "Next" }
16
+ },
17
+ emits: ["prev", "next"],
18
+ setup(s) {
19
+ return (p, m) => (c(), r("nav", {
20
+ class: "mw-pager",
21
+ "aria-label": s.label
22
+ }, [
23
+ o(e, {
24
+ variant: "ghost",
25
+ size: "sm",
26
+ disabled: s.index === 0 || s.loading,
27
+ onClick: m[0] ||= (e) => p.$emit("prev")
28
+ }, {
29
+ default: u(() => [a(l(s.prevLabel), 1)]),
30
+ _: 1
31
+ }, 8, ["disabled"]),
32
+ i("output", f, [a("Page " + l(s.index + 1), 1), s.loading ? (c(), r(t, { key: 0 }, [a(" (loading…)")], 64)) : n("", !0)]),
33
+ o(e, {
34
+ variant: "ghost",
35
+ size: "sm",
36
+ disabled: !s.hasNext || s.loading,
37
+ onClick: m[1] ||= (e) => p.$emit("next")
38
+ }, {
39
+ default: u(() => [a(l(s.nextLabel), 1)]),
40
+ _: 1
41
+ }, 8, ["disabled"])
42
+ ], 8, d));
43
+ }
44
+ });
45
+ //#endregion
46
+ export { p as default };
@@ -0,0 +1 @@
1
+ @layer mw.reset;@layer mw.components{.mw-panel[data-v-db89a6f2]{padding:var(--space-xs);border:1px solid var(--border);border-radius:var(--radius-xs);background:var(--surface);overflow:hidden}.mw-panel__title[data-v-db89a6f2]{margin:calc(-1 * var(--space-xs)) calc(-1 * var(--space-xs)) var(--space-xs);padding:var(--space-3xs) var(--space-xs);font-size:var(--font-size-2xs);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-wide);line-height:inherit;text-transform:uppercase;color:var(--muted);background:var(--lift);border-bottom:1px solid var(--border)}}
@@ -0,0 +1,7 @@
1
+ import e from "../_virtual/_plugin-vue_export-helper.js";
2
+ import t from "./UiPanel.vue_vue_type_script_setup_true_lang.js";
3
+ import "./UiPanel.css";
4
+ //#region src/components/UiPanel.vue
5
+ var n = /*#__PURE__*/ e(t, [["__scopeId", "data-v-db89a6f2"]]);
6
+ //#endregion
7
+ export { n as default };
@@ -0,0 +1,21 @@
1
+ import { computed as e, createBlock as t, createCommentVNode as n, createElementBlock as r, createTextVNode as i, defineComponent as a, openBlock as o, renderSlot as s, resolveDynamicComponent as c, toDisplayString as l, useSlots as u, withCtx as d } from "vue";
2
+ //#region src/components/UiPanel.vue?vue&type=script&setup=true&lang.ts
3
+ var f = { class: "mw-panel" }, p = /*@__PURE__*/ a({
4
+ __name: "UiPanel",
5
+ props: {
6
+ title: {},
7
+ level: { default: 2 }
8
+ },
9
+ setup(a) {
10
+ let p = a, m = u(), h = e(() => !!(p.title || m.title));
11
+ return (e, u) => (o(), r("section", f, [h.value ? (o(), t(c(`h${a.level}`), {
12
+ key: 0,
13
+ class: "mw-panel__title"
14
+ }, {
15
+ default: d(() => [s(e.$slots, "title", {}, () => [i(l(a.title), 1)], !0)]),
16
+ _: 3
17
+ })) : n("", !0), s(e.$slots, "default", {}, void 0, !0)]));
18
+ }
19
+ });
20
+ //#endregion
21
+ export { p as default };
@@ -0,0 +1 @@
1
+ @layer mw.reset;@layer mw.components{.mw-seg[data-v-895d43d3]{border:1px solid var(--border);border-radius:var(--radius);min-inline-size:0;margin:0;padding:0;display:inline-flex;overflow:hidden}.mw-seg__legend[data-v-895d43d3]{float:inline-start;width:100%;padding:var(--space-3xs) var(--space-xs);font-size:var(--font-size-sm)}.mw-seg--wrap[data-v-895d43d3]{flex-wrap:wrap}@media (width<36em){.mw-seg--grid[data-v-895d43d3]{grid-template-columns:repeat(auto-fit,minmax(min(100%,7rem),1fr));display:grid}.mw-seg--grid .mw-seg__item[data-v-895d43d3]{white-space:normal;padding-block:var(--space-4xs);text-align:center}}.mw-seg__item[data-v-895d43d3]{justify-content:center;align-items:center;gap:var(--space-3xs);min-height:var(--space-md);padding:0 var(--space-sm);border-right:1px solid var(--border);cursor:pointer;font-size:var(--font-size-sm);color:var(--text);transition:background var(--transition-base), color var(--transition-base);-webkit-user-select:none;user-select:none;white-space:nowrap;background:0 0;margin:0;display:flex}.mw-seg__item[data-v-895d43d3]:last-child{border-right:none}.mw-seg__item[data-v-895d43d3]:hover:not(.mw-seg__item--active){background:var(--lift)}.mw-seg__item--active[data-v-895d43d3]{background:var(--accent);color:var(--accent-contrast)}.mw-seg__item[data-v-895d43d3]:has(input:focus-visible){outline:2px solid var(--focus-ring);outline-offset:-2px}.mw-seg__item--disabled[data-v-895d43d3]{filter:grayscale(.6);pointer-events:none;cursor:not-allowed}.mw-seg__item input[type=radio][data-v-895d43d3]{opacity:0;pointer-events:none;width:0;height:0;position:absolute}}
@@ -0,0 +1,7 @@
1
+ import e from "../_virtual/_plugin-vue_export-helper.js";
2
+ import t from "./UiSegmentedControl.vue_vue_type_script_setup_true_lang.js";
3
+ import "./UiSegmentedControl.css";
4
+ //#region src/components/UiSegmentedControl.vue
5
+ var n = /*#__PURE__*/ e(t, [["__scopeId", "data-v-895d43d3"]]);
6
+ //#endregion
7
+ export { n as default };
@@ -7,12 +7,22 @@ export interface SegmentedOption {
7
7
  type __VLS_Props = {
8
8
  options: SegmentedOption[];
9
9
  modelValue: string;
10
+ /** Names the group (its `<legend>`). Required for a usable control: say what is being chosen. */
11
+ label?: string;
12
+ /** Visually hide the legend (default true); it still names the group for assistive technology. */
13
+ labelHidden?: boolean;
14
+ /** @deprecated Use `label`. */
10
15
  ariaLabel?: string;
16
+ /** `inline` (default): one row. `wrap`: wraps onto more rows. `grid`: two columns on a narrow screen, one row from 36em. */
17
+ layout?: 'inline' | 'wrap' | 'grid';
11
18
  };
12
19
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
13
20
  "update:modelValue": (id: string) => any;
14
21
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
15
22
  "onUpdate:modelValue"?: ((id: string) => any) | undefined;
16
- }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
23
+ }>, {
24
+ labelHidden: boolean;
25
+ layout: "inline" | "wrap" | "grid";
26
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
17
27
  declare const _default: typeof __VLS_export;
18
28
  export default _default;
@@ -0,0 +1,57 @@
1
+ import { Fragment as e, computed as t, createCommentVNode as n, createElementBlock as r, createElementVNode as i, createTextVNode as a, defineComponent as o, normalizeClass as s, openBlock as c, renderList as l, toDisplayString as u, unref as d, useId as f } from "vue";
2
+ //#region src/components/UiSegmentedControl.vue?vue&type=script&setup=true&lang.ts
3
+ var p = ["title"], m = [
4
+ "name",
5
+ "value",
6
+ "checked",
7
+ "disabled",
8
+ "onChange"
9
+ ], h = {
10
+ key: 0,
11
+ class: "mw-seg__tick",
12
+ "aria-hidden": "true"
13
+ }, g = /*@__PURE__*/ o({
14
+ __name: "UiSegmentedControl",
15
+ props: {
16
+ options: {},
17
+ modelValue: {},
18
+ label: {},
19
+ labelHidden: {
20
+ type: Boolean,
21
+ default: !0
22
+ },
23
+ ariaLabel: {},
24
+ layout: { default: "inline" }
25
+ },
26
+ emits: ["update:modelValue"],
27
+ setup(o, { emit: g }) {
28
+ let _ = o, v = g, y = f(), b = t(() => _.label ?? _.ariaLabel);
29
+ return (t, f) => (c(), r("fieldset", { class: s(["mw-seg", `mw-seg--${o.layout}`]) }, [b.value ? (c(), r("legend", {
30
+ key: 0,
31
+ class: s({
32
+ "mw-visually-hidden": o.labelHidden,
33
+ "mw-seg__legend": !o.labelHidden
34
+ })
35
+ }, u(b.value), 3)) : n("", !0), (c(!0), r(e, null, l(o.options, (e) => (c(), r("label", {
36
+ key: e.id,
37
+ class: s(["mw-seg__item", {
38
+ "mw-seg__item--active": o.modelValue === e.id,
39
+ "mw-seg__item--disabled": e.disabled
40
+ }]),
41
+ title: e.title
42
+ }, [
43
+ i("input", {
44
+ type: "radio",
45
+ name: d(y),
46
+ value: e.id,
47
+ checked: o.modelValue === e.id,
48
+ disabled: e.disabled,
49
+ onChange: (t) => v("update:modelValue", e.id)
50
+ }, null, 40, m),
51
+ o.modelValue === e.id ? (c(), r("span", h, "✓")) : n("", !0),
52
+ a(" " + u(e.label), 1)
53
+ ], 10, p))), 128))], 2));
54
+ }
55
+ });
56
+ //#endregion
57
+ export { g as default };
@@ -0,0 +1 @@
1
+ @layer mw.reset;@layer mw.components{.mw-select[data-v-927a9c2d]{--_chevron-stroke:var(--muted);--_chevron-arm:var(--space-2xs);appearance:none;width:100%;padding:var(--space-2xs) calc(var(--space-md) + var(--space-2xs)) var(--space-2xs) var(--space-xs);background-color:var(--surface);background-image:linear-gradient(45deg, transparent calc(50% - var(--space-4xs) / 2), var(--_chevron-stroke) calc(50% - var(--space-4xs) / 2), var(--_chevron-stroke) calc(50% + var(--space-4xs) / 2), transparent calc(50% + var(--space-4xs) / 2)), linear-gradient(-45deg, transparent calc(50% - var(--space-4xs) / 2), var(--_chevron-stroke) calc(50% - var(--space-4xs) / 2), var(--_chevron-stroke) calc(50% + var(--space-4xs) / 2), transparent calc(50% + var(--space-4xs) / 2));background-position:right calc(var(--space-xs) + var(--_chevron-arm)) center, right var(--space-xs) center;background-size:var(--_chevron-arm) var(--_chevron-arm);color:var(--text);border:1px solid var(--border);border-radius:var(--radius);font:inherit;background-repeat:no-repeat}.mw-select[data-v-927a9c2d]:focus-visible{outline:2px solid var(--focus-ring);outline-offset:1px}}
@@ -0,0 +1,7 @@
1
+ import e from "../_virtual/_plugin-vue_export-helper.js";
2
+ import t from "./UiSelect.vue_vue_type_script_setup_true_lang.js";
3
+ import "./UiSelect.css";
4
+ //#region src/components/UiSelect.vue
5
+ var n = /*#__PURE__*/ e(t, [["__scopeId", "data-v-927a9c2d"]]);
6
+ //#endregion
7
+ export { n as default };
@@ -1,5 +1,6 @@
1
1
  type __VLS_ModelProps = {
2
- /** Styled native <select>. A single root element: attributes (id, aria-*, disabled…) fall
2
+ /** Styled native <select>, labelled by the consuming context (UiFormField's label[for], or an aria-label passed as an attribute); this primitive carries no own label.
3
+ * A single root element: attributes (id, aria-*, disabled…) fall
3
4
  * through to the select itself, and the chevron is painted in its background with two
4
5
  * token-coloured gradient strokes (so it follows the theme without an overlay element). */
5
6
  modelValue?: string;
@@ -0,0 +1,19 @@
1
+ import { createElementBlock as e, defineComponent as t, openBlock as n, renderSlot as r, useModel as i, vModelSelect as a, withDirectives as o } from "vue";
2
+ //#region src/components/UiSelect.vue?vue&type=script&setup=true&lang.ts
3
+ var s = /*@__PURE__*/ t({
4
+ __name: "UiSelect",
5
+ props: {
6
+ modelValue: {},
7
+ modelModifiers: {}
8
+ },
9
+ emits: ["update:modelValue"],
10
+ setup(t) {
11
+ let s = i(t, "modelValue");
12
+ return (t, i) => o((n(), e("select", {
13
+ "onUpdate:modelValue": i[0] ||= (e) => s.value = e,
14
+ class: "mw-select"
15
+ }, [r(t.$slots, "default", {}, void 0, !0)], 512)), [[a, s.value]]);
16
+ }
17
+ });
18
+ //#endregion
19
+ export { s as default };
@@ -0,0 +1,5 @@
1
+ import e from "./UiSelectField.vue_vue_type_script_setup_true_lang.js";
2
+ //#region src/components/UiSelectField.vue
3
+ var t = e;
4
+ //#endregion
5
+ export { t as default };
@@ -0,0 +1,29 @@
1
+ type __VLS_Props = {
2
+ id: string;
3
+ label: string;
4
+ options: ReadonlyArray<readonly [string, string]>;
5
+ placeholder?: string;
6
+ hint?: string;
7
+ error?: string | null;
8
+ };
9
+ type __VLS_ModelProps = {
10
+ modelValue?: string;
11
+ };
12
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
13
+ declare var __VLS_8: {};
14
+ type __VLS_Slots = {} & {
15
+ 'label-suffix'?: (props: typeof __VLS_8) => any;
16
+ };
17
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
18
+ "update:modelValue": (value: string) => any;
19
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
20
+ "onUpdate:modelValue"?: ((value: string) => any) | undefined;
21
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
22
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
23
+ declare const _default: typeof __VLS_export;
24
+ export default _default;
25
+ type __VLS_WithSlots<T, S> = T & {
26
+ new (): {
27
+ $slots: S;
28
+ };
29
+ };
@@ -0,0 +1,58 @@
1
+ import e from "./UiSelect.js";
2
+ import t from "./UiFormField.js";
3
+ import { Fragment as n, createBlock as r, createCommentVNode as i, createElementBlock as a, createSlots as o, createVNode as s, defineComponent as c, mergeModels as l, mergeProps as u, openBlock as d, renderList as f, renderSlot as p, toDisplayString as m, useModel as h, withCtx as g } from "vue";
4
+ //#region src/components/UiSelectField.vue?vue&type=script&setup=true&lang.ts
5
+ var _ = {
6
+ key: 0,
7
+ value: ""
8
+ }, v = ["value"], y = /*@__PURE__*/ c({
9
+ inheritAttrs: !1,
10
+ __name: "UiSelectField",
11
+ props: /*@__PURE__*/ l({
12
+ id: {},
13
+ label: {},
14
+ options: {},
15
+ placeholder: {},
16
+ hint: {},
17
+ error: {}
18
+ }, {
19
+ modelValue: { default: "" },
20
+ modelModifiers: {}
21
+ }),
22
+ emits: ["update:modelValue"],
23
+ setup(c) {
24
+ let l = h(c, "modelValue");
25
+ return (h, y) => (d(), r(t, {
26
+ id: c.id,
27
+ label: c.label,
28
+ hint: c.hint,
29
+ error: c.error
30
+ }, o({
31
+ default: g(({ attrs: t }) => [s(e, u({
32
+ modelValue: l.value,
33
+ "onUpdate:modelValue": y[0] ||= (e) => l.value = e
34
+ }, {
35
+ ...t,
36
+ ...h.$attrs
37
+ }), {
38
+ default: g(() => [c.placeholder === void 0 ? i("", !0) : (d(), a("option", _, m(c.placeholder), 1)), (d(!0), a(n, null, f(c.options, ([e, t]) => (d(), a("option", {
39
+ key: e,
40
+ value: e
41
+ }, m(t), 9, v))), 128))]),
42
+ _: 1
43
+ }, 16, ["modelValue"])]),
44
+ _: 2
45
+ }, [h.$slots["label-suffix"] ? {
46
+ name: "label-suffix",
47
+ fn: g(() => [p(h.$slots, "label-suffix")]),
48
+ key: "0"
49
+ } : void 0]), 1032, [
50
+ "id",
51
+ "label",
52
+ "hint",
53
+ "error"
54
+ ]));
55
+ }
56
+ });
57
+ //#endregion
58
+ export { y as default };
@@ -0,0 +1 @@
1
+ @layer mw.reset;@layer mw.components{.mw-skip[data-v-ddc3c0de]{z-index:var(--z-skip);padding:var(--space-2xs) var(--space-xs);background:var(--accent);color:var(--accent-contrast);border-radius:var(--radius-sm);font-weight:var(--font-weight-semibold);position:absolute;inset-block-start:var(--space-2xs);inset-inline-start:var(--space-2xs);transform:translateY(-200%)}.mw-skip[data-v-ddc3c0de]:focus{transform:none}}
@@ -0,0 +1,7 @@
1
+ import e from "../_virtual/_plugin-vue_export-helper.js";
2
+ import t from "./UiSkipLink.vue_vue_type_script_setup_true_lang.js";
3
+ import "./UiSkipLink.css";
4
+ //#region src/components/UiSkipLink.vue
5
+ var n = /*#__PURE__*/ e(t, [["__scopeId", "data-v-ddc3c0de"]]);
6
+ //#endregion
7
+ export { n as default };
@@ -0,0 +1,8 @@
1
+ type __VLS_Props = {
2
+ label?: string;
3
+ };
4
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
5
+ label: string;
6
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
7
+ declare const _default: typeof __VLS_export;
8
+ export default _default;
@@ -0,0 +1,14 @@
1
+ import { createElementBlock as e, defineComponent as t, openBlock as n, toDisplayString as r } from "vue";
2
+ //#region src/components/UiSkipLink.vue?vue&type=script&setup=true&lang.ts
3
+ var i = {
4
+ class: "mw-skip",
5
+ href: "#main"
6
+ }, a = /*@__PURE__*/ t({
7
+ __name: "UiSkipLink",
8
+ props: { label: { default: "Skip to content" } },
9
+ setup(t) {
10
+ return (a, o) => (n(), e("a", i, r(t.label), 1));
11
+ }
12
+ });
13
+ //#endregion
14
+ export { a as default };
@@ -0,0 +1 @@
1
+ @layer mw.reset;@layer mw.components{.mw-stat-grid[data-v-d0a6288d]{gap:var(--space-4xs) var(--space-xs);font-size:var(--font-size-sm);grid-template-columns:fit-content(40%) minmax(0,1fr);margin:0;display:grid}}
@@ -0,0 +1,7 @@
1
+ import e from "../_virtual/_plugin-vue_export-helper.js";
2
+ import t from "./UiStatGrid.vue_vue_type_script_setup_true_lang.js";
3
+ import "./UiStatGrid.css";
4
+ //#region src/components/UiStatGrid.vue
5
+ var n = /*#__PURE__*/ e(t, [["__scopeId", "data-v-d0a6288d"]]);
6
+ //#endregion
7
+ export { n as default };
@@ -0,0 +1,10 @@
1
+ import { createElementBlock as e, defineComponent as t, openBlock as n, renderSlot as r } from "vue";
2
+ //#region src/components/UiStatGrid.vue?vue&type=script&setup=true&lang.ts
3
+ var i = { class: "mw-stat-grid" }, a = /*@__PURE__*/ t({
4
+ __name: "UiStatGrid",
5
+ setup(t) {
6
+ return (t, a) => (n(), e("dl", i, [r(t.$slots, "default", {}, void 0, !0)]));
7
+ }
8
+ });
9
+ //#endregion
10
+ export { a as default };
@@ -0,0 +1 @@
1
+ @layer mw.reset;@layer mw.components{.mw-stat-grid__label[data-v-437d86d6]{color:var(--muted);overflow-wrap:anywhere}.mw-stat-grid__value[data-v-437d86d6]{font-family:var(--mw-font-mono);color:var(--text);text-align:right;overflow-wrap:anywhere;margin:0}.mw-stat-grid__value--left[data-v-437d86d6]{text-align:left}}
@@ -0,0 +1,7 @@
1
+ import e from "../_virtual/_plugin-vue_export-helper.js";
2
+ import t from "./UiStatRow.vue_vue_type_script_setup_true_lang.js";
3
+ import "./UiStatRow.css";
4
+ //#region src/components/UiStatRow.vue
5
+ var n = /*#__PURE__*/ e(t, [["__scopeId", "data-v-437d86d6"]]);
6
+ //#endregion
7
+ export { n as default };
@@ -0,0 +1,19 @@
1
+ import { Fragment as e, computed as t, createElementBlock as n, createElementVNode as r, defineComponent as i, normalizeClass as a, openBlock as o, renderSlot as s, toDisplayString as c, useAttrs as l } from "vue";
2
+ //#region src/components/UiStatRow.vue?vue&type=script&setup=true&lang.ts
3
+ var u = { class: "mw-stat-grid__label" }, d = ["id"], f = /*@__PURE__*/ i({
4
+ inheritAttrs: !1,
5
+ __name: "UiStatRow",
6
+ props: {
7
+ label: {},
8
+ align: { default: "right" }
9
+ },
10
+ setup(i) {
11
+ let f = l(), p = t(() => f.id), m = t(() => f.class);
12
+ return (t, l) => (o(), n(e, null, [r("dt", u, c(i.label), 1), r("dd", {
13
+ id: p.value,
14
+ class: a(["mw-stat-grid__value", [m.value, { "mw-stat-grid__value--left": i.align === "left" }]])
15
+ }, [s(t.$slots, "default", {}, void 0, !0)], 10, d)], 64));
16
+ }
17
+ });
18
+ //#endregion
19
+ export { f as default };
@@ -0,0 +1 @@
1
+ @layer mw.reset;@layer mw.components{.mw-statusbar[data-v-df7ff616]{align-items:center;gap:var(--space-4xs) var(--space-sm);padding:var(--space-4xs) var(--space-xs);font-size:var(--font-size-2xs);color:var(--muted);background:var(--surface);border-top:1px solid var(--border);font-family:var(--mw-font-mono);z-index:var(--z-raised);flex-wrap:wrap;flex-shrink:0;margin:0;list-style:none;display:flex;position:sticky;bottom:0}.mw-statusbar[data-v-df7ff616]>li{align-items:center;gap:var(--space-3xs);display:flex}.mw-statusbar[data-v-df7ff616]>li+li:before{content:"│" / "";color:var(--border);margin-inline-end:var(--space-xs)}.mw-statusbar__pending[data-v-df7ff616]{font-style:italic}}
@@ -0,0 +1,7 @@
1
+ import e from "../_virtual/_plugin-vue_export-helper.js";
2
+ import t from "./UiStatusBar.vue_vue_type_script_setup_true_lang.js";
3
+ import "./UiStatusBar.css";
4
+ //#region src/components/UiStatusBar.vue
5
+ var n = /*#__PURE__*/ e(t, [["__scopeId", "data-v-df7ff616"]]);
6
+ //#endregion
7
+ export { n as default };
@@ -0,0 +1,45 @@
1
+ import { useNow as e } from "../composables/useNow.js";
2
+ import t from "./UiStatusDot.js";
3
+ import { Fragment as n, computed as r, createCommentVNode as i, createElementBlock as a, createElementVNode as o, createTextVNode as s, createVNode as c, defineComponent as l, openBlock as u, renderSlot as d, toDisplayString as f } from "vue";
4
+ //#region src/components/UiStatusBar.vue?vue&type=script&setup=true&lang.ts
5
+ var p = {
6
+ role: "list",
7
+ class: "mw-statusbar",
8
+ "aria-label": "Status"
9
+ }, m = { key: 0 }, h = { class: "mw-visually-hidden" }, g = { key: 0 }, _ = {
10
+ key: 1,
11
+ class: "mw-statusbar__pending"
12
+ }, v = { key: 0 }, y = {
13
+ key: 1,
14
+ class: "mw-statusbar__pending"
15
+ }, b = /*@__PURE__*/ l({
16
+ __name: "UiStatusBar",
17
+ props: {
18
+ network: {},
19
+ healthy: {
20
+ type: Boolean,
21
+ default: !0
22
+ },
23
+ epoch: {},
24
+ lastRefresh: {}
25
+ },
26
+ setup(l) {
27
+ let b = l, x = e(1e3), S = r(() => b.network ? b.network.charAt(0).toUpperCase() + b.network.slice(1) : "");
28
+ function C(e) {
29
+ let t = Math.max(0, Math.floor((x.value - e.getTime()) / 1e3));
30
+ return t < 5 ? "just now" : t < 60 ? `${t}s ago` : `${Math.floor(t / 60)}m ago`;
31
+ }
32
+ return (e, r) => (u(), a("ul", p, [
33
+ l.network ? (u(), a("li", m, [
34
+ c(t, { status: l.healthy ? "ok" : "error" }, null, 8, ["status"]),
35
+ s(" " + f(S.value) + " ", 1),
36
+ o("span", h, "(" + f(l.healthy ? "status OK" : "status error") + ")", 1)
37
+ ])) : i("", !0),
38
+ l.epoch === void 0 ? i("", !0) : (u(), a(n, { key: 1 }, [l.epoch === null ? (u(), a("li", _, "Epoch —")) : (u(), a("li", g, "Epoch " + f(l.epoch), 1))], 64)),
39
+ l.lastRefresh === void 0 ? i("", !0) : (u(), a(n, { key: 2 }, [l.lastRefresh ? (u(), a("li", v, "Refreshed " + f(C(l.lastRefresh)), 1)) : (u(), a("li", y, "Loading…"))], 64)),
40
+ d(e.$slots, "default", {}, void 0, !0)
41
+ ]));
42
+ }
43
+ });
44
+ //#endregion
45
+ export { b as default };
@@ -0,0 +1 @@
1
+ @layer mw.reset;@layer mw.components{.mw-status-dot[data-v-271bba4b]{border-radius:50%;flex-shrink:0;display:inline-block}.mw-status-dot--sm[data-v-271bba4b]{width:var(--space-2xs);height:var(--space-2xs)}.mw-status-dot--md[data-v-271bba4b]{width:var(--space-xs);height:var(--space-xs)}.mw-status-dot--ok[data-v-271bba4b]{background:var(--ok)}.mw-status-dot--warn[data-v-271bba4b]{background:var(--warning)}.mw-status-dot--error[data-v-271bba4b]{background:var(--danger)}.mw-status-dot--unknown[data-v-271bba4b]{background:var(--muted)}}
@@ -0,0 +1,7 @@
1
+ import e from "../_virtual/_plugin-vue_export-helper.js";
2
+ import t from "./UiStatusDot.vue_vue_type_script_setup_true_lang.js";
3
+ import "./UiStatusDot.css";
4
+ //#region src/components/UiStatusDot.vue
5
+ var n = /*#__PURE__*/ e(t, [["__scopeId", "data-v-271bba4b"]]);
6
+ //#endregion
7
+ export { n as default };
@@ -1,8 +1,12 @@
1
+ import type { StatusLevel } from '@meddleware/web-utils';
2
+ export type StatusDotStatus = StatusLevel | 'ok' | 'warn' | 'error';
1
3
  type __VLS_Props = {
2
- status?: 'ok' | 'warn' | 'error';
4
+ status?: StatusDotStatus;
5
+ size?: 'sm' | 'md';
3
6
  };
4
7
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
5
- status: "ok" | "error" | "warn";
8
+ size: "md" | "sm";
9
+ status: StatusDotStatus;
6
10
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
7
11
  declare const _default: typeof __VLS_export;
8
12
  export default _default;
@@ -0,0 +1,26 @@
1
+ import { createElementBlock as e, defineComponent as t, normalizeClass as n, openBlock as r } from "vue";
2
+ //#region src/components/UiStatusDot.vue?vue&type=script&setup=true&lang.ts
3
+ var i = /*@__PURE__*/ t({
4
+ __name: "UiStatusDot",
5
+ props: {
6
+ status: { default: "ok" },
7
+ size: { default: "sm" }
8
+ },
9
+ setup(t) {
10
+ let i = {
11
+ ok: "ok",
12
+ operational: "ok",
13
+ warn: "warn",
14
+ degraded: "warn",
15
+ error: "error",
16
+ down: "error",
17
+ unknown: "unknown"
18
+ };
19
+ return (a, o) => (r(), e("span", {
20
+ class: n(["mw-status-dot", [`mw-status-dot--${i[t.status]}`, `mw-status-dot--${t.size}`]]),
21
+ "aria-hidden": "true"
22
+ }, null, 2));
23
+ }
24
+ });
25
+ //#endregion
26
+ export { i as default };