@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,26 @@
1
+ type __VLS_Props = {
2
+ mainId?: string;
3
+ contained?: boolean;
4
+ };
5
+ declare var __VLS_6: {}, __VLS_8: {}, __VLS_10: {}, __VLS_12: {};
6
+ type __VLS_Slots = {} & {
7
+ header?: (props: typeof __VLS_6) => any;
8
+ } & {
9
+ sidebar?: (props: typeof __VLS_8) => any;
10
+ } & {
11
+ default?: (props: typeof __VLS_10) => any;
12
+ } & {
13
+ footer?: (props: typeof __VLS_12) => any;
14
+ };
15
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
16
+ mainId: string;
17
+ contained: boolean;
18
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
19
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
20
+ declare const _default: typeof __VLS_export;
21
+ export default _default;
22
+ type __VLS_WithSlots<T, S> = T & {
23
+ new (): {
24
+ $slots: S;
25
+ };
26
+ };
@@ -0,0 +1,27 @@
1
+ import e from "./UiSkipLink.js";
2
+ import { createElementBlock as t, createElementVNode as n, createVNode as r, defineComponent as i, normalizeClass as a, openBlock as o, renderSlot as s } from "vue";
3
+ //#region src/components/UiAppShell.vue?vue&type=script&setup=true&lang.ts
4
+ var c = ["id"], l = /*@__PURE__*/ i({
5
+ __name: "UiAppShell",
6
+ props: {
7
+ mainId: { default: "main" },
8
+ contained: {
9
+ type: Boolean,
10
+ default: !1
11
+ }
12
+ },
13
+ setup(i) {
14
+ return (l, u) => (o(), t("div", { class: a(["mw-shell", { "mw-shell--sidebar": l.$slots.sidebar }]) }, [
15
+ r(e, { href: `#${i.mainId}` }, null, 8, ["href"]),
16
+ s(l.$slots, "header"),
17
+ s(l.$slots, "sidebar"),
18
+ n("main", {
19
+ id: i.mainId,
20
+ class: a(["mw-shell__main", { "mw-shell__main--contained": i.contained }])
21
+ }, [s(l.$slots, "default")], 10, c),
22
+ s(l.$slots, "footer")
23
+ ], 2));
24
+ }
25
+ });
26
+ //#endregion
27
+ export { l as default };
@@ -0,0 +1 @@
1
+ @layer mw.reset;@layer mw.components{.mw-badge[data-v-b6857ff4]{--_tone:var(--border);gap:var(--space-3xs);padding:0 var(--space-xs);border:1px solid var(--_tone);border-radius:var(--radius-sm);background:color-mix(in srgb, var(--_tone) 12%, var(--bg));color:var(--text);font-size:var(--font-size-sm);white-space:nowrap;align-items:baseline;display:inline-flex}.mw-badge--ok[data-v-b6857ff4]{--_tone:var(--ok)}.mw-badge--warn[data-v-b6857ff4]{--_tone:var(--warning)}.mw-badge--danger[data-v-b6857ff4]{--_tone:var(--danger)}.mw-badge--info[data-v-b6857ff4]{--_tone:var(--info)}.mw-badge--accent[data-v-b6857ff4]{--_tone:var(--accent)}.mw-badge__symbol[data-v-b6857ff4]{color:var(--_tone)}.mw-badge--warn .mw-badge__symbol[data-v-b6857ff4]{color:var(--warning-text)}}
@@ -0,0 +1,7 @@
1
+ import e from "../_virtual/_plugin-vue_export-helper.js";
2
+ import t from "./UiBadge.vue_vue_type_script_setup_true_lang.js";
3
+ import "./UiBadge.css";
4
+ //#region src/components/UiBadge.vue
5
+ var n = /*#__PURE__*/ e(t, [["__scopeId", "data-v-b6857ff4"]]);
6
+ //#endregion
7
+ export { n as default };
@@ -1,4 +1,13 @@
1
+ export type BadgeTone = 'ok' | 'warn' | 'danger' | 'info' | 'accent' | 'neutral';
1
2
  type __VLS_Props = {
3
+ /** Semantic tone: the colour of the border, tint and symbol. Default `neutral`. */
4
+ tone?: BadgeTone;
5
+ /**
6
+ * A short symbol before the label (decorative, hidden from assistive technology: the label carries the meaning). Pass your own
7
+ * (`'◐'`, `'○'`), `false` for none, or leave unset for the tone's default when `tone` is given.
8
+ */
9
+ symbol?: string | false;
10
+ /** @deprecated Use `tone`. `active` → ok, `pending` → warn, `closed`/`neutral` → neutral. */
2
11
  variant?: 'active' | 'closed' | 'pending' | 'neutral';
3
12
  };
4
13
  declare var __VLS_1: {};
@@ -6,7 +15,7 @@ type __VLS_Slots = {} & {
6
15
  default?: (props: typeof __VLS_1) => any;
7
16
  };
8
17
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
9
- variant: "active" | "closed" | "pending" | "neutral";
18
+ symbol: string | false;
10
19
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
11
20
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
12
21
  declare const _default: typeof __VLS_export;
@@ -0,0 +1,35 @@
1
+ import { computed as e, createCommentVNode as t, createElementBlock as n, defineComponent as r, normalizeClass as i, openBlock as a, renderSlot as o, toDisplayString as s } from "vue";
2
+ //#region src/components/UiBadge.vue?vue&type=script&setup=true&lang.ts
3
+ var c = {
4
+ key: 0,
5
+ class: "mw-badge__symbol",
6
+ "aria-hidden": "true"
7
+ }, l = /*@__PURE__*/ r({
8
+ __name: "UiBadge",
9
+ props: {
10
+ tone: {},
11
+ symbol: {
12
+ type: [String, Boolean],
13
+ default: void 0
14
+ },
15
+ variant: {}
16
+ },
17
+ setup(r) {
18
+ let l = r, u = {
19
+ ok: "✓",
20
+ warn: "!",
21
+ danger: "✗",
22
+ info: "i",
23
+ accent: "•",
24
+ neutral: "•"
25
+ }, d = {
26
+ active: "ok",
27
+ pending: "warn",
28
+ closed: "neutral",
29
+ neutral: "neutral"
30
+ }, f = e(() => l.tone ?? (l.variant ? d[l.variant] : "neutral")), p = e(() => l.symbol === !1 ? "" : l.symbol === void 0 ? l.tone ? u[l.tone] : "" : l.symbol);
31
+ return (e, r) => (a(), n("span", { class: i(["mw-badge", `mw-badge--${f.value}`]) }, [p.value ? (a(), n("span", c, s(p.value), 1)) : t("", !0), o(e.$slots, "default", {}, void 0, !0)], 2));
32
+ }
33
+ });
34
+ //#endregion
35
+ export { l as default };
@@ -0,0 +1 @@
1
+ @layer mw.reset;@layer mw.components{.mw-btn[data-v-3abef52b]{justify-content:center;align-items:center;gap:var(--space-2xs);padding:var(--space-2xs) var(--space-xs);border-radius:var(--radius);font:inherit;font-weight:var(--font-weight-semibold);cursor:pointer;transition:background var(--transition-base), box-shadow var(--transition-base);border:1px solid #0000;text-decoration:none;display:inline-flex}.mw-btn--sm[data-v-3abef52b]{padding:var(--space-3xs) var(--space-2xs);border-radius:var(--radius-sm);font-size:var(--font-size-sm)}.mw-btn[data-v-3abef52b]:disabled:not([aria-busy=true]),.mw-btn[aria-disabled=true][data-v-3abef52b]:not([aria-busy=true]){filter:grayscale(.6);cursor:not-allowed}.mw-btn[aria-busy=true][data-v-3abef52b]{cursor:progress}.mw-btn .mw-spinner[data-v-3abef52b]{border-color:color-mix(in srgb, currentColor 30%, transparent);border-top-color:currentColor;width:1em;height:1em}.mw-btn--primary[data-v-3abef52b]{background:var(--accent);color:var(--accent-contrast)}.mw-btn--primary[data-v-3abef52b]:not(:disabled,[aria-disabled=true]):hover{box-shadow:inset 0 0 0 var(--space-4xs) var(--accent-contrast)}.mw-btn--secondary[data-v-3abef52b]{background:var(--secondary);color:var(--secondary-contrast)}.mw-btn--secondary[data-v-3abef52b]:not(:disabled,[aria-disabled=true]):hover{box-shadow:inset 0 0 0 var(--space-4xs) var(--secondary-contrast)}.mw-btn--danger[data-v-3abef52b]{background:var(--danger);color:var(--accent-contrast)}.mw-btn--danger[data-v-3abef52b]:not(:disabled,[aria-disabled=true]):hover{box-shadow:inset 0 0 0 var(--space-4xs) var(--accent-contrast)}.mw-btn--ghost[data-v-3abef52b]{color:var(--text);border-color:var(--border);background:0 0}.mw-btn--ghost[data-v-3abef52b]:not(:disabled,[aria-disabled=true]):hover{background:var(--lift)}.mw-btn--link[data-v-3abef52b]{color:var(--mw-link,var(--accent));font-weight:inherit;text-underline-offset:.18em;background:0 0;border:0;border-radius:0;padding:0;text-decoration:underline;text-decoration-thickness:.08em}.mw-btn--link[data-v-3abef52b]:not(:disabled,[aria-disabled=true]):hover{text-decoration-thickness:.14em}}
@@ -0,0 +1,7 @@
1
+ import e from "../_virtual/_plugin-vue_export-helper.js";
2
+ import t from "./UiButton.vue_vue_type_script_setup_true_lang.js";
3
+ import "./UiButton.css";
4
+ //#region src/components/UiButton.vue
5
+ var n = /*#__PURE__*/ e(t, [["__scopeId", "data-v-3abef52b"]]);
6
+ //#endregion
7
+ export { n as default };
@@ -1,19 +1,29 @@
1
1
  type __VLS_Props = {
2
- /** Visual style — primary (accent fill), secondary, ghost (outline), or danger (red). */
3
- variant?: 'primary' | 'secondary' | 'ghost' | 'danger';
4
- /** HTML button type attribute. Use 'submit' inside forms; 'button' otherwise. */
2
+ /** Visual style: primary (accent fill), secondary, ghost (outline), danger (red), or link (looks like inline text). */
3
+ variant?: 'primary' | 'secondary' | 'ghost' | 'danger' | 'link';
4
+ /** `sm` is the compact size for dense rows and toolbars. */
5
+ size?: 'md' | 'sm';
6
+ /** HTML button type attribute. Use 'submit' inside forms; 'button' otherwise. Ignored for a link. */
5
7
  type?: 'button' | 'submit' | 'reset';
6
- /** When true, the button is rendered faded and blocks all interaction. */
8
+ /** When true, the control is rendered faded and blocks all interaction. */
7
9
  disabled?: boolean;
10
+ /** An operation is running: shows a spinner, sets `aria-busy`, and blocks interaction. The label stays. */
11
+ busy?: boolean;
12
+ /** Render an `<a>` to this URL (checked with `safeHref`: an unsafe URL renders no `href`). */
13
+ href?: string;
8
14
  };
9
- declare var __VLS_1: {};
15
+ declare var __VLS_1: {}, __VLS_3: {};
10
16
  type __VLS_Slots = {} & {
11
17
  default?: (props: typeof __VLS_1) => any;
18
+ } & {
19
+ default?: (props: typeof __VLS_3) => any;
12
20
  };
13
21
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
14
- variant: "danger" | "primary" | "secondary" | "ghost";
15
- type: "button" | "reset" | "submit";
22
+ variant: "danger" | "link" | "primary" | "secondary" | "ghost";
23
+ type: "button" | "submit" | "reset";
24
+ size: "md" | "sm";
16
25
  disabled: boolean;
26
+ busy: boolean;
17
27
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
18
28
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
19
29
  declare const _default: typeof __VLS_export;
@@ -0,0 +1,60 @@
1
+ import { computed as e, createCommentVNode as t, createElementBlock as n, defineComponent as r, normalizeClass as i, openBlock as a, renderSlot as o, unref as s } from "vue";
2
+ import { safeHref as c } from "@meddleware/web-utils";
3
+ //#region src/components/UiButton.vue?vue&type=script&setup=true&lang.ts
4
+ var l = [
5
+ "href",
6
+ "aria-disabled",
7
+ "aria-busy",
8
+ "tabindex"
9
+ ], u = {
10
+ key: 0,
11
+ class: "mw-spinner",
12
+ "aria-hidden": "true"
13
+ }, d = [
14
+ "type",
15
+ "disabled",
16
+ "aria-busy"
17
+ ], f = {
18
+ key: 0,
19
+ class: "mw-spinner",
20
+ "aria-hidden": "true"
21
+ }, p = /*@__PURE__*/ r({
22
+ __name: "UiButton",
23
+ props: {
24
+ variant: { default: "primary" },
25
+ size: { default: "md" },
26
+ type: { default: "button" },
27
+ disabled: {
28
+ type: Boolean,
29
+ default: !1
30
+ },
31
+ busy: {
32
+ type: Boolean,
33
+ default: !1
34
+ },
35
+ href: {}
36
+ },
37
+ setup(r) {
38
+ let p = r, m = e(() => p.disabled || p.busy);
39
+ function h(e) {
40
+ m.value && e.preventDefault();
41
+ }
42
+ return (e, p) => r.href === void 0 ? (a(), n("button", {
43
+ key: 1,
44
+ type: r.type,
45
+ disabled: m.value,
46
+ class: i(["mw-btn", [`mw-btn--${r.variant}`, `mw-btn--${r.size}`]]),
47
+ "aria-busy": r.busy ? "true" : void 0
48
+ }, [r.busy ? (a(), n("span", f)) : t("", !0), o(e.$slots, "default", {}, void 0, !0)], 10, d)) : (a(), n("a", {
49
+ key: 0,
50
+ href: m.value ? void 0 : s(c)(r.href),
51
+ class: i(["mw-btn", [`mw-btn--${r.variant}`, `mw-btn--${r.size}`]]),
52
+ "aria-disabled": m.value ? "true" : void 0,
53
+ "aria-busy": r.busy ? "true" : void 0,
54
+ tabindex: m.value ? -1 : void 0,
55
+ onClick: h
56
+ }, [r.busy ? (a(), n("span", u)) : t("", !0), o(e.$slots, "default", {}, void 0, !0)], 10, l));
57
+ }
58
+ });
59
+ //#endregion
60
+ export { p as default };
@@ -0,0 +1 @@
1
+ @layer mw.reset;@layer mw.components{.mw-card[data-v-2b57e836]{padding:var(--space-sm);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);position:relative;overflow:hidden}.mw-card__header[data-v-2b57e836]{margin:calc(-1 * var(--space-sm)) calc(-1 * var(--space-sm)) var(--space-sm);padding:var(--space-xs) var(--space-sm);border-bottom:1px solid var(--border)}.mw-card__title[data-v-2b57e836]{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);margin:0}.mw-card__footer[data-v-2b57e836]{margin:var(--space-sm) calc(-1 * var(--space-sm)) calc(-1 * var(--space-sm));padding:var(--space-xs) var(--space-sm);border-top:1px solid var(--border);background:var(--lift)}.mw-card--plain .mw-card__header[data-v-2b57e836]{margin:0 0 var(--space-2xs);border-bottom:0;padding:0}.mw-card--plain .mw-card__title[data-v-2b57e836]{font-size:var(--font-size-lg)}.mw-card__link[data-v-2b57e836]{color:inherit;text-decoration:none}.mw-card__link[data-v-2b57e836]:after{content:"";position:absolute;inset:0}.mw-card--link[data-v-2b57e836]{transition:border-color var(--transition-base), box-shadow var(--transition-base)}.mw-card--link[data-v-2b57e836]:hover{border-color:var(--accent);box-shadow:var(--shadow-1)}.mw-card__link[data-v-2b57e836]:focus-visible:after{outline:2px solid var(--focus-ring);outline-offset:-2px;border-radius:var(--radius)}}
@@ -0,0 +1,7 @@
1
+ import e from "../_virtual/_plugin-vue_export-helper.js";
2
+ import t from "./UiCard.vue_vue_type_script_setup_true_lang.js";
3
+ import "./UiCard.css";
4
+ //#region src/components/UiCard.vue
5
+ var n = /*#__PURE__*/ e(t, [["__scopeId", "data-v-2b57e836"]]);
6
+ //#endregion
7
+ export { n as default };
@@ -1,16 +1,30 @@
1
1
  type __VLS_Props = {
2
- /** Optional card heading rendered in the header slot fallback. */
2
+ /** Card heading, rendered in the header slot's fallback. */
3
3
  title?: string;
4
+ /** Root element. */
5
+ as?: 'section' | 'article' | 'li';
6
+ /** Heading rank (default 3), to fit the page's outline. */
7
+ level?: 2 | 3 | 4 | 5 | 6;
8
+ /** No header band: the title is a plain heading above the content. */
9
+ plain?: boolean;
10
+ /** Make the whole card a link to this URL through its title (checked with `safeHref`; external links are not opened in a new tab). */
11
+ href?: string;
4
12
  };
5
- declare var __VLS_1: {}, __VLS_3: {}, __VLS_5: {};
13
+ declare var __VLS_13: {}, __VLS_15: {}, __VLS_23: {}, __VLS_31: {};
6
14
  type __VLS_Slots = {} & {
7
- header?: (props: typeof __VLS_1) => any;
15
+ icon?: (props: typeof __VLS_13) => any;
8
16
  } & {
9
- default?: (props: typeof __VLS_3) => any;
17
+ header?: (props: typeof __VLS_15) => any;
10
18
  } & {
11
- footer?: (props: typeof __VLS_5) => any;
19
+ default?: (props: typeof __VLS_23) => any;
20
+ } & {
21
+ footer?: (props: typeof __VLS_31) => any;
12
22
  };
13
- 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>;
23
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
24
+ as: "article" | "li" | "section";
25
+ level: 2 | 3 | 4 | 5 | 6;
26
+ plain: boolean;
27
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
14
28
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
15
29
  declare const _default: typeof __VLS_export;
16
30
  export default _default;
@@ -0,0 +1,51 @@
1
+ import { Fragment as e, computed as t, createBlock as n, createCommentVNode as r, createElementBlock as i, createTextVNode as a, defineComponent as o, normalizeClass as s, openBlock as c, renderSlot as l, resolveDynamicComponent as u, toDisplayString as d, unref as f, withCtx as p } from "vue";
2
+ import { safeHref as m } from "@meddleware/web-utils";
3
+ //#region src/components/UiCard.vue?vue&type=script&setup=true&lang.ts
4
+ var h = ["href"], g = /*@__PURE__*/ o({
5
+ __name: "UiCard",
6
+ props: {
7
+ title: {},
8
+ as: { default: "section" },
9
+ level: { default: 3 },
10
+ plain: {
11
+ type: Boolean,
12
+ default: !1
13
+ },
14
+ href: {}
15
+ },
16
+ setup(o) {
17
+ let g = o, _ = t(() => g.href === void 0 ? void 0 : m(g.href)), v = t(() => g.as === "li" ? "div" : "header");
18
+ return (t, g) => (c(), n(u(o.as), { class: s(["mw-card", {
19
+ "mw-card--plain": o.plain,
20
+ "mw-card--link": _.value
21
+ }]) }, {
22
+ default: p(() => [
23
+ o.title || t.$slots.header || t.$slots.icon ? (c(), n(u(v.value), {
24
+ key: 0,
25
+ class: "mw-card__header"
26
+ }, {
27
+ default: p(() => [l(t.$slots, "icon", {}, void 0, !0), l(t.$slots, "header", {}, () => [(c(), n(u(`h${o.level}`), { class: "mw-card__title" }, {
28
+ default: p(() => [_.value ? (c(), i("a", {
29
+ key: 0,
30
+ href: f(m)(o.href),
31
+ class: "mw-card__link"
32
+ }, d(o.title), 9, h)) : (c(), i(e, { key: 1 }, [a(d(o.title), 1)], 64))]),
33
+ _: 1
34
+ }))], !0)]),
35
+ _: 3
36
+ })) : r("", !0),
37
+ l(t.$slots, "default", {}, void 0, !0),
38
+ t.$slots.footer ? (c(), n(u(v.value === "header" ? "footer" : "div"), {
39
+ key: 1,
40
+ class: "mw-card__footer"
41
+ }, {
42
+ default: p(() => [l(t.$slots, "footer", {}, void 0, !0)]),
43
+ _: 3
44
+ })) : r("", !0)
45
+ ]),
46
+ _: 3
47
+ }, 8, ["class"]));
48
+ }
49
+ });
50
+ //#endregion
51
+ export { g as default };
@@ -0,0 +1 @@
1
+ @layer mw.reset;@layer mw.components{.mw-check[data-v-896bf59f]{gap:var(--space-xs);align-items:flex-start;display:flex}.mw-check__box[data-v-896bf59f]{inline-size:calc(var(--space-sm) + var(--space-3xs));block-size:calc(var(--space-sm) + var(--space-3xs));accent-color:var(--accent);flex-shrink:0;margin:0}.mw-check__hint[data-v-896bf59f]{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 "./UiCheckField.vue_vue_type_script_setup_true_lang.js";
3
+ import "./UiCheckField.css";
4
+ //#region src/components/UiCheckField.vue
5
+ var n = /*#__PURE__*/ e(t, [["__scopeId", "data-v-896bf59f"]]);
6
+ //#endregion
7
+ export { n as default };
@@ -0,0 +1,26 @@
1
+ type __VLS_Props = {
2
+ label?: string;
3
+ hint?: string;
4
+ disabled?: boolean;
5
+ };
6
+ type __VLS_ModelProps = {
7
+ modelValue?: boolean;
8
+ };
9
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
10
+ declare var __VLS_1: {};
11
+ type __VLS_Slots = {} & {
12
+ label?: (props: typeof __VLS_1) => any;
13
+ };
14
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
15
+ "update:modelValue": (value: boolean) => any;
16
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
17
+ "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
18
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
19
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
20
+ declare const _default: typeof __VLS_export;
21
+ export default _default;
22
+ type __VLS_WithSlots<T, S> = T & {
23
+ new (): {
24
+ $slots: S;
25
+ };
26
+ };
@@ -0,0 +1,31 @@
1
+ import { createCommentVNode as e, createElementBlock as t, createElementVNode as n, createTextVNode as r, defineComponent as i, mergeModels as a, openBlock as o, renderSlot as s, toDisplayString as c, useModel as l, vModelCheckbox as u, withDirectives as d } from "vue";
2
+ //#region src/components/UiCheckField.vue?vue&type=script&setup=true&lang.ts
3
+ var f = { class: "mw-check" }, p = ["disabled"], m = {
4
+ key: 0,
5
+ class: "mw-check__hint"
6
+ }, h = /*@__PURE__*/ i({
7
+ __name: "UiCheckField",
8
+ props: /*@__PURE__*/ a({
9
+ label: {},
10
+ hint: {},
11
+ disabled: { type: Boolean }
12
+ }, {
13
+ modelValue: {
14
+ type: Boolean,
15
+ default: !1
16
+ },
17
+ modelModifiers: {}
18
+ }),
19
+ emits: ["update:modelValue"],
20
+ setup(i) {
21
+ let a = l(i, "modelValue");
22
+ return (l, h) => (o(), t("label", f, [d(n("input", {
23
+ "onUpdate:modelValue": h[0] ||= (e) => a.value = e,
24
+ type: "checkbox",
25
+ class: "mw-check__box",
26
+ disabled: i.disabled
27
+ }, null, 8, p), [[u, a.value]]), n("span", null, [s(l.$slots, "label", {}, () => [r(c(i.label), 1)], !0), i.hint ? (o(), t("span", m, " — " + c(i.hint), 1)) : e("", !0)])]));
28
+ }
29
+ });
30
+ //#endregion
31
+ export { h as default };
@@ -0,0 +1 @@
1
+ @layer mw.reset;@layer mw.components{.mw-code[data-v-4c6bbb22]{margin:0}.mw-code__pre[data-v-4c6bbb22]{padding:var(--space-xs);background:var(--lift);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-sm);font-family:var(--mw-font-mono);font-size:var(--font-size-sm);margin:0;overflow:auto}.mw-code__pre--wrap[data-v-4c6bbb22]{white-space:pre-wrap;overflow-wrap:anywhere}.mw-code__pre[data-v-4c6bbb22]:focus-visible{outline:2px solid var(--focus-ring);outline-offset:-2px}}
@@ -0,0 +1,7 @@
1
+ import e from "../_virtual/_plugin-vue_export-helper.js";
2
+ import t from "./UiCodeBlock.vue_vue_type_script_setup_true_lang.js";
3
+ import "./UiCodeBlock.css";
4
+ //#region src/components/UiCodeBlock.vue
5
+ var n = /*#__PURE__*/ e(t, [["__scopeId", "data-v-4c6bbb22"]]);
6
+ //#endregion
7
+ export { n as default };
@@ -0,0 +1,21 @@
1
+ type __VLS_Props = {
2
+ code?: string;
3
+ label?: string;
4
+ wrap?: boolean;
5
+ };
6
+ declare var __VLS_1: {};
7
+ type __VLS_Slots = {} & {
8
+ default?: (props: typeof __VLS_1) => any;
9
+ };
10
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
11
+ label: string;
12
+ wrap: boolean;
13
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
14
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
15
+ declare const _default: typeof __VLS_export;
16
+ export default _default;
17
+ type __VLS_WithSlots<T, S> = T & {
18
+ new (): {
19
+ $slots: S;
20
+ };
21
+ };
@@ -0,0 +1,21 @@
1
+ import { createElementBlock as e, createElementVNode as t, createTextVNode as n, defineComponent as r, normalizeClass as i, openBlock as a, renderSlot as o, toDisplayString as s } from "vue";
2
+ //#region src/components/UiCodeBlock.vue?vue&type=script&setup=true&lang.ts
3
+ var c = { class: "mw-code" }, l = { class: "mw-visually-hidden" }, u = /*@__PURE__*/ r({
4
+ __name: "UiCodeBlock",
5
+ props: {
6
+ code: {},
7
+ label: { default: "Code" },
8
+ wrap: {
9
+ type: Boolean,
10
+ default: !1
11
+ }
12
+ },
13
+ setup(r) {
14
+ return (u, d) => (a(), e("figure", c, [t("figcaption", l, s(r.label), 1), t("pre", {
15
+ class: i(["mw-code__pre", { "mw-code__pre--wrap": r.wrap }]),
16
+ tabindex: "0"
17
+ }, [t("code", null, [o(u.$slots, "default", {}, () => [n(s(r.code), 1)], !0)])], 2)]));
18
+ }
19
+ });
20
+ //#endregion
21
+ export { u as default };
@@ -0,0 +1 @@
1
+ @layer mw.reset;@layer mw.components{.mw-copy[data-v-e8bdae3c]{min-width:1.5rem;min-height:1.5rem;color:var(--muted);cursor:pointer;transition:color var(--transition-base);background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;line-height:1;display:inline-flex;position:relative}.mw-copy[data-v-e8bdae3c]:hover{color:var(--text)}.mw-copy--copied[data-v-e8bdae3c]{color:var(--mw-link,var(--accent))}}
@@ -0,0 +1,7 @@
1
+ import e from "../_virtual/_plugin-vue_export-helper.js";
2
+ import t from "./UiCopyButton.vue_vue_type_script_setup_true_lang.js";
3
+ import "./UiCopyButton.css";
4
+ //#region src/components/UiCopyButton.vue
5
+ var n = /*#__PURE__*/ e(t, [["__scopeId", "data-v-e8bdae3c"]]);
6
+ //#endregion
7
+ export { n as default };
@@ -0,0 +1,11 @@
1
+ type __VLS_Props = {
2
+ /** The text to copy. */
3
+ value: string;
4
+ /** Accessible label and tooltip (default "Copy"). */
5
+ label?: string;
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
+ label: string;
9
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
10
+ declare const _default: typeof __VLS_export;
11
+ export default _default;
@@ -0,0 +1,64 @@
1
+ import { createElementBlock as e, createElementVNode as t, defineComponent as n, getCurrentScope as r, normalizeClass as i, onScopeDispose as a, openBlock as o, ref as s, toDisplayString as c } from "vue";
2
+ //#region src/components/UiCopyButton.vue?vue&type=script&setup=true&lang.ts
3
+ var l = ["title", "aria-label"], u = {
4
+ key: 0,
5
+ viewBox: "0 0 24 24",
6
+ width: "1em",
7
+ height: "1em",
8
+ fill: "none",
9
+ stroke: "currentColor",
10
+ "stroke-width": "2",
11
+ "stroke-linecap": "round",
12
+ "stroke-linejoin": "round",
13
+ "aria-hidden": "true"
14
+ }, d = {
15
+ key: 1,
16
+ viewBox: "0 0 24 24",
17
+ width: "1em",
18
+ height: "1em",
19
+ fill: "none",
20
+ stroke: "currentColor",
21
+ "stroke-width": "2",
22
+ "stroke-linecap": "round",
23
+ "stroke-linejoin": "round",
24
+ "aria-hidden": "true"
25
+ }, f = {
26
+ class: "mw-visually-hidden",
27
+ role: "status"
28
+ }, p = /*@__PURE__*/ n({
29
+ __name: "UiCopyButton",
30
+ props: {
31
+ value: {},
32
+ label: { default: "Copy" }
33
+ },
34
+ setup(n) {
35
+ let p = n, m = s(!1), h = null;
36
+ r() && a(() => h !== null && clearTimeout(h));
37
+ async function g() {
38
+ try {
39
+ await navigator.clipboard.writeText(p.value);
40
+ } catch {
41
+ return;
42
+ }
43
+ m.value = !0, h !== null && clearTimeout(h), h = setTimeout(() => {
44
+ m.value = !1;
45
+ }, 1500);
46
+ }
47
+ return (r, a) => (o(), e("button", {
48
+ type: "button",
49
+ class: i(["mw-copy", { "mw-copy--copied": m.value }]),
50
+ title: m.value ? "Copied!" : n.label,
51
+ "aria-label": m.value ? "Copied" : n.label,
52
+ onClick: g
53
+ }, [m.value ? (o(), e("svg", u, [...a[0] ||= [t("polyline", { points: "20 6 9 17 4 12" }, null, -1)]])) : (o(), e("svg", d, [...a[1] ||= [t("rect", {
54
+ x: "9",
55
+ y: "9",
56
+ width: "13",
57
+ height: "13",
58
+ rx: "2",
59
+ ry: "2"
60
+ }, null, -1), t("path", { d: "M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" }, null, -1)]])), t("span", f, c(m.value ? "Copied" : ""), 1)], 10, l));
61
+ }
62
+ });
63
+ //#endregion
64
+ export { p as default };
@@ -0,0 +1 @@
1
+ @layer mw.reset;@layer mw.components{.mw-data-table-wrap[data-v-41de31d6]{scrollbar-width:thin;position:relative;overflow-x:auto}.mw-data-table-wrap[data-v-41de31d6]:focus-visible{outline:2px solid var(--focus-ring);outline-offset:-2px}.mw-data-table[data-v-41de31d6]{border-collapse:collapse;width:100%;font-size:var(--font-size-sm)}.mw-data-table[data-v-41de31d6] th{text-align:left;padding:var(--space-3xs) var(--space-2xs);font-size:var(--font-size-2xs);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--border);white-space:nowrap}.mw-data-table[data-v-41de31d6] tbody th[scope=row]{font-size:inherit;letter-spacing:normal;text-transform:none;color:var(--text);white-space:normal;vertical-align:middle}.mw-data-table[data-v-41de31d6] td{padding:var(--space-3xs) var(--space-2xs);border-bottom:1px solid var(--border);vertical-align:middle}.mw-data-table[data-v-41de31d6] tbody tr:last-child td,.mw-data-table[data-v-41de31d6] tbody tr:last-child th{border-bottom:none}.mw-data-table[data-v-41de31d6] tbody tr:nth-child(2n) td,.mw-data-table[data-v-41de31d6] tbody tr:nth-child(2n) th{background:var(--lift)}.mw-data-table__empty[data-v-41de31d6]{padding:var(--space-md) var(--space-sm);text-align:center;color:var(--muted);font-size:var(--font-size-sm);margin:0}.mw-data-table__hint[data-v-41de31d6]{padding:var(--space-3xs) var(--space-2xs);color:var(--muted);font-size:var(--font-size-xs);display:block;position:sticky;left:0}}
@@ -0,0 +1,7 @@
1
+ import e from "../_virtual/_plugin-vue_export-helper.js";
2
+ import t from "./UiDataTable.vue_vue_type_script_setup_true_lang.js";
3
+ import "./UiDataTable.css";
4
+ //#region src/components/UiDataTable.vue
5
+ var n = /*#__PURE__*/ e(t, [["__scopeId", "data-v-41de31d6"]]);
6
+ //#endregion
7
+ export { n as default };
@@ -1,9 +1,14 @@
1
1
  type __VLS_Props = {
2
2
  empty?: string;
3
+ /** Number of body rows; 0 shows `empty`. Omit it to treat "nothing in the default slot" as empty. */
4
+ rows?: number;
5
+ /** The table's accessible name. */
6
+ caption?: string;
3
7
  };
4
8
  type __VLS_Slots = {
5
9
  head(): unknown;
6
10
  default(): unknown;
11
+ caption(): unknown;
7
12
  };
8
13
  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>;
9
14
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;