@leavepulse/ui 0.31.1 → 0.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/dist/assets/{LpDropzone-DVDC-ABU.css → LpDropzone-BBoWvi-J.css} +12 -12
  2. package/dist/assets/{LpImageEditor-DqP5JKCy.css → LpImageEditor-BsSwej47.css} +6 -6
  3. package/dist/chunks/{LpAddressInput-BDkp3-Bp.js → LpAddressInput-C35TsJXt.js} +19 -14
  4. package/dist/chunks/{LpAppShell-Chz8Vbtu.js → LpAppShell-lVvpENMH.js} +18 -13
  5. package/dist/chunks/{LpBreadcrumbs-5uvViCXi.js → LpBreadcrumbs-p4jHe_V-.js} +9 -7
  6. package/dist/chunks/{LpCalendar-B7ZL0ty3.js → LpCalendar-B7Ko5RdR.js} +12 -7
  7. package/dist/chunks/{LpCard-D0M2ZCnB.js → LpCard-1SeUYPBT.js} +36 -9
  8. package/dist/chunks/{LpCheckbox-BO0zuuPh.js → LpCheckbox-CVccKYaH.js} +9 -4
  9. package/dist/chunks/{LpCodeBlock-BWX1KZwk.js → LpCodeBlock-Bo0B4TFR.js} +37 -32
  10. package/dist/chunks/{LpDatePicker-dY2q4dr4.js → LpDatePicker-6JFXllj5.js} +1 -1
  11. package/dist/chunks/{LpDisclosure-B4kVAWfg.js → LpDisclosure-y7wDBgLa.js} +11 -6
  12. package/dist/chunks/{LpEmptyState-BV3q7Qyi.js → LpEmptyState-Dsdqz1Wj.js} +13 -5
  13. package/dist/chunks/{LpFileTree-DfFqY__1.js → LpFileTree-C-NFRT0H.js} +19 -14
  14. package/dist/chunks/{LpFileTreeNode-COchUMNn.js → LpFileTreeNode-DNJUJiiB.js} +13 -6
  15. package/dist/chunks/{LpFormField-fV_2ZdCk.js → LpFormField-CazBc2-a.js} +14 -9
  16. package/dist/chunks/{LpInput-Bt4J71xn.js → LpInput-9EXWUM9B.js} +1 -1
  17. package/dist/chunks/{LpLightbox-Ci35Y_xP.js → LpLightbox-Cixfxezw.js} +29 -6
  18. package/dist/chunks/{LpLink-BHZ1CLlF.js → LpLink-DCND-zyu.js} +16 -9
  19. package/dist/chunks/{LpLogViewer-TSRyt3t9.js → LpLogViewer-y53ZqSVq.js} +20 -10
  20. package/dist/chunks/{LpMapPicker-CXvoTrAe.js → LpMapPicker-ul4oYno6.js} +14 -9
  21. package/dist/chunks/LpMediaGallery-t1z3bQcY.js +187 -0
  22. package/dist/chunks/{LpNotificationBell-gdvQY89m.js → LpNotificationBell-lHePf89W.js} +1 -1
  23. package/dist/chunks/{LpNumberField-NPE8Bumx.js → LpNumberField-CWuX08iX.js} +12 -5
  24. package/dist/chunks/{LpOtpInput-DqaT0Z75.js → LpOtpInput-y2v-pmiN.js} +11 -6
  25. package/dist/chunks/{LpPagination-CeGuNe_q.js → LpPagination-5FxjmmB5.js} +21 -19
  26. package/dist/chunks/{LpPasswordInput-BqMAc5HA.js → LpPasswordInput--sjYCkLS.js} +1 -1
  27. package/dist/chunks/{LpPhoneInput-NXXjciJJ.js → LpPhoneInput-BDSKVl_z.js} +16 -9
  28. package/dist/chunks/{LpPie-BL1vTDSM.js → LpPie-c2-q4DJu.js} +14 -8
  29. package/dist/chunks/{LpRadio-CL-pI0_O.js → LpRadio-B5AfqTpZ.js} +13 -5
  30. package/dist/chunks/{LpRadioGroup-B4yDTmi6.js → LpRadioGroup-xPIuVDO_.js} +12 -5
  31. package/dist/chunks/{LpSegmented-BmpanyAo.js → LpSegmented-fV0Sk92p.js} +16 -6
  32. package/dist/chunks/{LpSidebar-BiWM_lDB.js → LpSidebar-DcYavim2.js} +2 -2
  33. package/dist/chunks/{LpSidebarNav-CsgeuGAu.js → LpSidebarNav-CqwvT4H8.js} +21 -16
  34. package/dist/chunks/{LpSlider-B1SF3pRV.js → LpSlider-BwNIBkAK.js} +12 -5
  35. package/dist/chunks/{LpStat-CDanpzU0.js → LpStat-CQaW8R--.js} +23 -18
  36. package/dist/chunks/{LpStepper-Wtl-6nUh.js → LpStepper-Bk-XaQYU.js} +15 -10
  37. package/dist/chunks/{LpSwitch-v6fnccSM.js → LpSwitch-xgnRU2k0.js} +12 -5
  38. package/dist/chunks/{LpTextarea-BMIOfw5l.js → LpTextarea-t7F6gv8E.js} +1 -1
  39. package/dist/chunks/{LpUptimeBar-DcQ8HikG.js → LpUptimeBar-DvAMno0S.js} +26 -21
  40. package/dist/component-names.d.ts +1 -1
  41. package/dist/components/LpAddressInput.vue.d.ts +34 -17
  42. package/dist/components/LpAddressInput.vue.js +1 -1
  43. package/dist/components/LpAppShell.vue.d.ts +65 -31
  44. package/dist/components/LpAppShell.vue.js +1 -1
  45. package/dist/components/LpBreadcrumbs.vue.d.ts +12 -6
  46. package/dist/components/LpBreadcrumbs.vue.js +1 -1
  47. package/dist/components/LpCalendar.vue.d.ts +15 -6
  48. package/dist/components/LpCalendar.vue.js +1 -1
  49. package/dist/components/LpCard.vue.d.ts +26 -0
  50. package/dist/components/LpCard.vue.js +1 -1
  51. package/dist/components/LpChart.vue.d.ts +54 -12
  52. package/dist/components/LpChart.vue.js +15 -9
  53. package/dist/components/LpCheckbox.vue.d.ts +16 -12
  54. package/dist/components/LpCheckbox.vue.js +1 -1
  55. package/dist/components/LpCodeBlock.vue.d.ts +25 -6
  56. package/dist/components/LpCodeBlock.vue.js +1 -1
  57. package/dist/components/LpDatePicker.vue.js +1 -1
  58. package/dist/components/LpDisclosure.vue.d.ts +24 -14
  59. package/dist/components/LpDisclosure.vue.js +1 -1
  60. package/dist/components/LpDropzone.vue.d.ts +38 -14
  61. package/dist/components/LpDropzone.vue.js +17 -11
  62. package/dist/components/LpEmptyState.vue.d.ts +15 -10
  63. package/dist/components/LpEmptyState.vue.js +1 -1
  64. package/dist/components/LpFileTree.vue.d.ts +51 -31
  65. package/dist/components/LpFileTree.vue.js +1 -1
  66. package/dist/components/LpFileTreeNode.vue.d.ts +31 -16
  67. package/dist/components/LpFileTreeNode.vue.js +1 -1
  68. package/dist/components/LpFormField.vue.d.ts +14 -13
  69. package/dist/components/LpFormField.vue.js +1 -1
  70. package/dist/components/LpImageEditor.vue.d.ts +33 -10
  71. package/dist/components/LpImageEditor.vue.js +13 -7
  72. package/dist/components/LpInput.vue.js +1 -1
  73. package/dist/components/LpLightbox.vue.js +1 -1
  74. package/dist/components/LpLink.vue.d.ts +46 -11
  75. package/dist/components/LpLink.vue.js +1 -1
  76. package/dist/components/LpLogViewer.vue.d.ts +63 -6
  77. package/dist/components/LpLogViewer.vue.js +1 -1
  78. package/dist/components/LpMapPicker.vue.d.ts +25 -10
  79. package/dist/components/LpMapPicker.vue.js +1 -1
  80. package/dist/components/LpMediaGallery.vue.d.ts +76 -0
  81. package/dist/components/LpMediaGallery.vue.js +4 -0
  82. package/dist/components/LpNotificationBell.vue.js +1 -1
  83. package/dist/components/LpNumberField.vue.d.ts +12 -6
  84. package/dist/components/LpNumberField.vue.js +1 -1
  85. package/dist/components/LpOtpInput.vue.d.ts +18 -6
  86. package/dist/components/LpOtpInput.vue.js +1 -1
  87. package/dist/components/LpPagination.vue.d.ts +16 -6
  88. package/dist/components/LpPagination.vue.js +1 -1
  89. package/dist/components/LpPasswordInput.vue.js +1 -1
  90. package/dist/components/LpPhoneInput.vue.d.ts +18 -6
  91. package/dist/components/LpPhoneInput.vue.js +1 -1
  92. package/dist/components/LpPie.vue.d.ts +96 -34
  93. package/dist/components/LpPie.vue.js +1 -1
  94. package/dist/components/LpRadio.vue.d.ts +10 -10
  95. package/dist/components/LpRadio.vue.js +1 -1
  96. package/dist/components/LpRadioGroup.vue.d.ts +12 -12
  97. package/dist/components/LpRadioGroup.vue.js +1 -1
  98. package/dist/components/LpSegmented.vue.d.ts +12 -6
  99. package/dist/components/LpSegmented.vue.js +1 -1
  100. package/dist/components/LpSidebar.vue.js +1 -1
  101. package/dist/components/LpSidebarNav.vue.d.ts +28 -17
  102. package/dist/components/LpSidebarNav.vue.js +1 -1
  103. package/dist/components/LpSlider.vue.d.ts +13 -6
  104. package/dist/components/LpSlider.vue.js +1 -1
  105. package/dist/components/LpStat.vue.d.ts +35 -11
  106. package/dist/components/LpStat.vue.js +1 -1
  107. package/dist/components/LpStepper.vue.d.ts +17 -5
  108. package/dist/components/LpStepper.vue.js +1 -1
  109. package/dist/components/LpSwitch.vue.d.ts +8 -6
  110. package/dist/components/LpSwitch.vue.js +1 -1
  111. package/dist/components/LpTable.vue.js +1 -1
  112. package/dist/components/LpTextarea.vue.js +1 -1
  113. package/dist/components/LpUptimeBar.vue.d.ts +21 -5
  114. package/dist/components/LpUptimeBar.vue.js +1 -1
  115. package/dist/composables/useMergedClass.d.ts +20 -0
  116. package/dist/composables/useMergedClass.js +11 -0
  117. package/dist/index.d.ts +2 -0
  118. package/dist/index.js +95 -89
  119. package/package.json +1 -3
  120. package/src/component-names.ts +1 -0
  121. package/src/components/LpAddressInput.vue +16 -1
  122. package/src/components/LpAppShell.vue +16 -1
  123. package/src/components/LpBreadcrumbs.vue +16 -1
  124. package/src/components/LpCalendar.vue +15 -1
  125. package/src/components/LpCard.vue +50 -5
  126. package/src/components/LpChart.vue +16 -1
  127. package/src/components/LpCheckbox.vue +16 -1
  128. package/src/components/LpCodeBlock.vue +16 -1
  129. package/src/components/LpDisclosure.vue +15 -1
  130. package/src/components/LpDropzone.vue +21 -6
  131. package/src/components/LpEmptyState.vue +21 -3
  132. package/src/components/LpFileTree.vue +16 -1
  133. package/src/components/LpFileTreeNode.vue +15 -1
  134. package/src/components/LpFormField.vue +16 -1
  135. package/src/components/LpImageEditor.vue +16 -1
  136. package/src/components/LpLightbox.vue +54 -2
  137. package/src/components/LpLink.vue +25 -9
  138. package/src/components/LpLogViewer.vue +20 -2
  139. package/src/components/LpMapPicker.vue +15 -1
  140. package/src/components/LpMediaGallery.vue +280 -0
  141. package/src/components/LpNumberField.vue +15 -1
  142. package/src/components/LpOtpInput.vue +15 -1
  143. package/src/components/LpPagination.vue +16 -1
  144. package/src/components/LpPhoneInput.vue +23 -8
  145. package/src/components/LpPie.vue +16 -1
  146. package/src/components/LpRadio.vue +20 -3
  147. package/src/components/LpRadioGroup.vue +15 -1
  148. package/src/components/LpSegmented.vue +21 -2
  149. package/src/components/LpSidebarNav.vue +16 -1
  150. package/src/components/LpSlider.vue +15 -1
  151. package/src/components/LpStat.vue +16 -1
  152. package/src/components/LpStepper.vue +16 -1
  153. package/src/components/LpSwitch.vue +15 -1
  154. package/src/components/LpUptimeBar.vue +16 -1
  155. package/src/composables/useMergedClass.ts +30 -0
  156. package/src/index.ts +2 -0
  157. package/src/tokens/tokens.css +29 -0
@@ -1,6 +1,8 @@
1
1
  import { SidebarItem, SidebarSection } from './sidebar';
2
2
  export type { SidebarItem, SidebarSection } from './sidebar';
3
- type __VLS_Props = {
3
+ declare const _default: typeof __VLS_export;
4
+ export default _default;
5
+ declare const __VLS_export: __VLS_WithSlots<import('vue').DefineComponent<{
4
6
  /** Flat items, or sections for grouped nav. Forwarded to LpSidebar. */
5
7
  items?: SidebarItem[];
6
8
  sections?: SidebarSection[];
@@ -38,38 +40,52 @@ type __VLS_Props = {
38
40
  fullBleed?: boolean;
39
41
  /** Loading skeleton for the nav. */
40
42
  loading?: boolean;
41
- };
42
- declare var __VLS_13: {}, __VLS_16: {}, __VLS_19: {}, __VLS_22: {
43
- item: SidebarItem;
44
- active: boolean;
45
- }, __VLS_43: {}, __VLS_51: {}, __VLS_53: {}, __VLS_61: {}, __VLS_63: {};
46
- type __VLS_Slots = {} & {
47
- logo?: (props: typeof __VLS_13) => any;
48
- } & {
49
- 'sidebar-actions'?: (props: typeof __VLS_16) => any;
50
- } & {
51
- 'sidebar-footer'?: (props: typeof __VLS_19) => any;
52
- } & {
53
- 'sidebar-item'?: (props: typeof __VLS_22) => any;
54
- } & {
55
- 'header-title'?: (props: typeof __VLS_43) => any;
56
- } & {
57
- 'header-actions'?: (props: typeof __VLS_51) => any;
58
- } & {
59
- default?: (props: typeof __VLS_53) => any;
60
- } & {
61
- default?: (props: typeof __VLS_61) => any;
62
- } & {
63
- overlays?: (props: typeof __VLS_63) => any;
64
- };
65
- declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {
43
+ }, {
66
44
  openDrawer: () => void;
67
45
  }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
68
46
  select: (item: SidebarItem) => any;
69
47
  "update:modelValue": (id: string) => any;
70
48
  "update:open": (value: boolean) => any;
71
49
  "update:collapsed": (keys: string[]) => any;
72
- }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
50
+ }, string, import('vue').PublicProps, Readonly<{
51
+ /** Flat items, or sections for grouped nav. Forwarded to LpSidebar. */
52
+ items?: SidebarItem[];
53
+ sections?: SidebarSection[];
54
+ /** Folded nav groups (v-model:collapsed). Forwarded to LpSidebar. */
55
+ collapsed?: string[];
56
+ /** Fold long navs automatically; 0 disables. Forwarded to LpSidebar. */
57
+ autoCollapseAfter?: number;
58
+ /** Active item id (v-model) when not using a custom `isActive`. */
59
+ modelValue?: string;
60
+ /**
61
+ * The current route path. Enables the built-in prefix-match active test and
62
+ * the derived page title without the host wiring its own `isActive`. Pass
63
+ * `route.path`. Ignored when a custom `isActive` is provided.
64
+ */
65
+ path?: string;
66
+ /**
67
+ * Custom active test (router-driven nav). Overrides `path`/`modelValue`.
68
+ */
69
+ isActive?: (item: SidebarItem) => boolean;
70
+ /** Override the header title. Falls back to the active item's label. */
71
+ title?: string;
72
+ /** Mobile drawer open state (v-model:open). */
73
+ open?: boolean;
74
+ /** Tailwind breakpoint below which the rail becomes a drawer. */
75
+ mobileBreakpoint?: "sm" | "md" | "lg" | "xl";
76
+ /** Show the brand/header divider in the rail. */
77
+ divider?: boolean;
78
+ /** Max content width inside main (Tailwind class), or null to fill. */
79
+ contentClass?: string;
80
+ /**
81
+ * Full-bleed main: render the page slot directly into main with NO
82
+ * scroll-area wrapper and NO padding, so the page owns the whole region
83
+ * (for a canvas / map / graph that fills the viewport and pans internally).
84
+ */
85
+ fullBleed?: boolean;
86
+ /** Loading skeleton for the nav. */
87
+ loading?: boolean;
88
+ }> & Readonly<{
73
89
  onSelect?: ((item: SidebarItem) => any) | undefined;
74
90
  "onUpdate:modelValue"?: ((id: string) => any) | undefined;
75
91
  "onUpdate:open"?: ((value: boolean) => any) | undefined;
@@ -78,10 +94,28 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {
78
94
  contentClass: string;
79
95
  mobileBreakpoint: "sm" | "md" | "lg" | "xl";
80
96
  divider: boolean;
81
- }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
82
- declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
83
- declare const _default: typeof __VLS_export;
84
- export default _default;
97
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>, {
98
+ logo?: (props: {}) => any;
99
+ } & {
100
+ 'sidebar-actions'?: (props: {}) => any;
101
+ } & {
102
+ 'sidebar-footer'?: (props: {}) => any;
103
+ } & {
104
+ 'sidebar-item'?: (props: {
105
+ item: SidebarItem;
106
+ active: boolean;
107
+ }) => any;
108
+ } & {
109
+ 'header-title'?: (props: {}) => any;
110
+ } & {
111
+ 'header-actions'?: (props: {}) => any;
112
+ } & {
113
+ default?: (props: {}) => any;
114
+ } & {
115
+ default?: (props: {}) => any;
116
+ } & {
117
+ overlays?: (props: {}) => any;
118
+ }>;
85
119
  type __VLS_WithSlots<T, S> = T & {
86
120
  new (): {
87
121
  $slots: S;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpAppShell-Chz8Vbtu.js";
1
+ import { _ as _sfc_main } from "../chunks/LpAppShell-lVvpENMH.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -7,20 +7,26 @@ export interface Crumb {
7
7
  /** Leading icon, for crumbs that carry a glyph (a home root, a section). */
8
8
  icon?: string;
9
9
  }
10
- type __VLS_Props = {
10
+ declare const _default: typeof __VLS_export;
11
+ export default _default;
12
+ declare const __VLS_export: import('vue').DefineComponent<{
11
13
  items: Crumb[];
12
14
  /**
13
15
  * Root element/component for linked crumbs. Defaults to a native <a>;
14
16
  * pass a router link component to keep client-side navigation.
15
17
  */
16
18
  as?: string | Component;
17
- };
18
- declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
19
+ }, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
19
20
  navigate: (item: Crumb, index: number) => any;
20
- }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
21
+ }, string, import('vue').PublicProps, Readonly<{
22
+ items: Crumb[];
23
+ /**
24
+ * Root element/component for linked crumbs. Defaults to a native <a>;
25
+ * pass a router link component to keep client-side navigation.
26
+ */
27
+ as?: string | Component;
28
+ }> & Readonly<{
21
29
  onNavigate?: ((item: Crumb, index: number) => any) | undefined;
22
30
  }>, {
23
31
  as: string | Component;
24
32
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
25
- declare const _default: typeof __VLS_export;
26
- export default _default;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpBreadcrumbs-5uvViCXi.js";
1
+ import { _ as _sfc_main } from "../chunks/LpBreadcrumbs-p4jHe_V-.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,6 @@
1
- type __VLS_Props = {
1
+ declare const _default: typeof __VLS_export;
2
+ export default _default;
3
+ declare const __VLS_export: import('vue').DefineComponent<{
2
4
  /** Selected date as "YYYY-MM-DD" (v-model). */
3
5
  modelValue?: string;
4
6
  /** Earliest selectable date, "YYYY-MM-DD". */
@@ -8,13 +10,20 @@ type __VLS_Props = {
8
10
  /** Predicate to disable specific days; receives the ISO string. */
9
11
  isDisabled?: (iso: string) => boolean;
10
12
  weekdayFormat?: "narrow" | "short" | "long";
11
- };
12
- declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
13
+ }, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
13
14
  "update:modelValue": (value: string | undefined) => any;
14
- }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
15
+ }, string, import('vue').PublicProps, Readonly<{
16
+ /** Selected date as "YYYY-MM-DD" (v-model). */
17
+ modelValue?: string;
18
+ /** Earliest selectable date, "YYYY-MM-DD". */
19
+ min?: string;
20
+ /** Latest selectable date, "YYYY-MM-DD". */
21
+ max?: string;
22
+ /** Predicate to disable specific days; receives the ISO string. */
23
+ isDisabled?: (iso: string) => boolean;
24
+ weekdayFormat?: "narrow" | "short" | "long";
25
+ }> & Readonly<{
15
26
  "onUpdate:modelValue"?: ((value: string | undefined) => any) | undefined;
16
27
  }>, {
17
28
  weekdayFormat: "narrow" | "short" | "long";
18
29
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
19
- declare const _default: typeof __VLS_export;
20
- export default _default;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpCalendar-B7ZL0ty3.js";
1
+ import { _ as _sfc_main } from "../chunks/LpCalendar-B7Ko5RdR.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -9,6 +9,19 @@ declare const __VLS_export: __VLS_WithSlots<import('vue').DefineComponent<{
9
9
  menuItems?: ContextMenuItemDef[];
10
10
  /** Element to render as. A card inside a <ul> has to be an `li` to be valid. */
11
11
  as?: string;
12
+ /**
13
+ * Colour of a stripe down the card's leading edge. ANY CSS colour — this is
14
+ * for sources that hand you an arbitrary value (a Discord role colour, a
15
+ * per-project hex out of a config), which is why it is a string and not a
16
+ * set of tonal variants. When the colour IS semantic, LpAlert's
17
+ * info/success/warning/danger say so in a way a raw hex cannot.
18
+ *
19
+ * The stripe costs no layout: content starts in the same place with and
20
+ * without it, and it rounds into `rounded-card` by itself.
21
+ */
22
+ accent?: string;
23
+ /** Width of the `accent` stripe. */
24
+ accentWidth?: string;
12
25
  }, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{
13
26
  variant?: "flat" | "ghost" | "raised" | undefined;
14
27
  padded?: boolean;
@@ -17,6 +30,19 @@ declare const __VLS_export: __VLS_WithSlots<import('vue').DefineComponent<{
17
30
  menuItems?: ContextMenuItemDef[];
18
31
  /** Element to render as. A card inside a <ul> has to be an `li` to be valid. */
19
32
  as?: string;
33
+ /**
34
+ * Colour of a stripe down the card's leading edge. ANY CSS colour — this is
35
+ * for sources that hand you an arbitrary value (a Discord role colour, a
36
+ * per-project hex out of a config), which is why it is a string and not a
37
+ * set of tonal variants. When the colour IS semantic, LpAlert's
38
+ * info/success/warning/danger say so in a way a raw hex cannot.
39
+ *
40
+ * The stripe costs no layout: content starts in the same place with and
41
+ * without it, and it rounds into `rounded-card` by itself.
42
+ */
43
+ accent?: string;
44
+ /** Width of the `accent` stripe. */
45
+ accentWidth?: string;
20
46
  }> & Readonly<{}>, {
21
47
  as: string;
22
48
  variant: "flat" | "ghost" | "raised";
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpCard-D0M2ZCnB.js";
1
+ import { _ as _sfc_main } from "../chunks/LpCard-1SeUYPBT.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -9,7 +9,9 @@ export interface ChartPointEvent {
9
9
  /** The original event, for callers that need modifiers or coordinates. */
10
10
  originalEvent: MouseEvent;
11
11
  }
12
- type __VLS_Props = {
12
+ declare const _default: typeof __VLS_export;
13
+ export default _default;
14
+ declare const __VLS_export: __VLS_WithSlots<import('vue').DefineComponent<{
13
15
  series: ChartSeries[];
14
16
  /** Shared x-axis labels; a point's own `x` overrides its slot. */
15
17
  labels?: string[];
@@ -55,15 +57,56 @@ type __VLS_Props = {
55
57
  * caller supplies the items.
56
58
  */
57
59
  menuItems?: (point: ChartPointEvent) => ContextMenuItemDef[];
58
- };
59
- declare var __VLS_1: {};
60
- type __VLS_Slots = {} & {
61
- actions?: (props: typeof __VLS_1) => any;
62
- };
63
- declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
60
+ }, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
64
61
  pointClick: (payload: ChartPointEvent) => any;
65
62
  pointContextMenu: (payload: ChartPointEvent) => any;
66
- }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
63
+ }, string, import('vue').PublicProps, Readonly<{
64
+ series: ChartSeries[];
65
+ /** Shared x-axis labels; a point's own `x` overrides its slot. */
66
+ labels?: string[];
67
+ type?: "line" | "area" | "bar";
68
+ /** Plot height in px. The width always fills the container. */
69
+ height?: number;
70
+ /** Headline above the plot. */
71
+ title?: string;
72
+ /** Sub-headline under the title. */
73
+ subtitle?: string;
74
+ /** Curve tension for line/area. 0 = straight polyline, 1 = fully smooth. */
75
+ smooth?: number;
76
+ /** Draw a dot at every point rather than only the hovered one. */
77
+ showPoints?: boolean;
78
+ showGrid?: boolean;
79
+ showXAxis?: boolean;
80
+ showYAxis?: boolean;
81
+ /** Legend also toggles series visibility on click. */
82
+ showLegend?: boolean;
83
+ /** Roughly how many y ticks to aim for; bounds are rounded to fit. */
84
+ yTicks?: number;
85
+ /** Force the y-axis to include 0 (bars always do). */
86
+ includeZero?: boolean;
87
+ /** Appended to values in ticks and the tooltip, e.g. "%" or " ms". */
88
+ unit?: string;
89
+ /** Unit for series on the right axis. Falls back to `unit`. */
90
+ rightUnit?: string;
91
+ /** Custom value formatter; overrides the compact 1.2k default. */
92
+ formatValue?: (v: number) => string;
93
+ /** Formatter for the right axis. Falls back to `formatValue`. */
94
+ formatRightValue?: (v: number) => string;
95
+ /** Stack bars instead of grouping them side by side. */
96
+ stacked?: boolean;
97
+ /** Grow the marks in on mount and on data change. */
98
+ animate?: boolean;
99
+ /** Shown when every series is empty. */
100
+ emptyLabel?: string;
101
+ /**
102
+ * Right-click menu for a point, built from whatever was hit. Return [] to
103
+ * leave the browser's own menu alone for that point. Which actions a point
104
+ * offers is an application question — "compare with last week", "open the
105
+ * incident", "copy value" — so the chart supplies the context and the
106
+ * caller supplies the items.
107
+ */
108
+ menuItems?: (point: ChartPointEvent) => ContextMenuItemDef[];
109
+ }> & Readonly<{
67
110
  onPointClick?: ((payload: ChartPointEvent) => any) | undefined;
68
111
  onPointContextMenu?: ((payload: ChartPointEvent) => any) | undefined;
69
112
  }>, {
@@ -77,10 +120,9 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {},
77
120
  showLegend: boolean;
78
121
  yTicks: number;
79
122
  emptyLabel: string;
80
- }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
81
- declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
82
- declare const _default: typeof __VLS_export;
83
- export default _default;
123
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>, {
124
+ actions?: (props: {}) => any;
125
+ }>;
84
126
  type __VLS_WithSlots<T, S> = T & {
85
127
  new (): {
86
128
  $slots: S;
@@ -1,4 +1,4 @@
1
- import { defineComponent, ref, computed, onMounted, onBeforeUnmount, watch, shallowRef, openBlock, createElementBlock, createElementVNode, toDisplayString, createCommentVNode, renderSlot, Fragment, renderList, normalizeClass, normalizeStyle, createVNode, withCtx, unref, withDirectives, vShow, createBlock, createTextVNode } from "vue";
1
+ import { defineComponent, ref, computed, onMounted, onBeforeUnmount, watch, shallowRef, openBlock, createElementBlock, mergeProps, unref, createElementVNode, toDisplayString, createCommentVNode, renderSlot, Fragment, renderList, normalizeClass, normalizeStyle, createVNode, withCtx, withDirectives, vShow, createBlock, createTextVNode } from "vue";
2
2
  import { Motion } from "motion-v";
3
3
  import { prefersReducedMotion, easeTravel } from "../composables/easing.js";
4
4
  import { usePillTransition } from "../composables/usePillTransition.js";
@@ -7,6 +7,7 @@ import { normalise, pointCount, resolveLabels, extent, axisTicks, niceScale, plo
7
7
  import { _ as _sfc_main$1 } from "../chunks/LpContextMenu-B6WBLleS.js";
8
8
  import { _ as _sfc_main$2 } from "../chunks/LpIcon-CCnX5_2j.js";
9
9
  import { _ as _sfc_main$3 } from "../chunks/LpShift-DXNsauQZ.js";
10
+ import { useMergedAttrs } from "../composables/useMergedClass.js";
10
11
  import { _ as _export_sfc } from "../chunks/_plugin-vue_export-helper-1tPrXgE0.js";
11
12
  import '../assets/LpChart-CzgCGaAA.css';const _hoisted_1 = {
12
13
  key: 0,
@@ -63,10 +64,9 @@ const _hoisted_33 = { class: "mb-1 text-[11px] font-medium text-muted-strong" };
63
64
  const _hoisted_34 = { class: "flex flex-col gap-1" };
64
65
  const _hoisted_35 = { class: "flex items-center gap-1.5 text-muted" };
65
66
  const _hoisted_36 = { class: "font-mono tabular-nums text-ink" };
66
- const SETTLE_MS = 260;
67
- const CARD_W = 150;
68
- const CARD_GAP = 14;
67
+ const __default__ = { inheritAttrs: false };
69
68
  const _sfc_main = /* @__PURE__ */ defineComponent({
69
+ ...__default__,
70
70
  __name: "LpChart",
71
71
  props: {
72
72
  series: {},
@@ -127,6 +127,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
127
127
  };
128
128
  const allSeries = computed(() => normalise(props.series));
129
129
  const visible = computed(() => allSeries.value.filter((s) => !hidden.value.has(s.name)));
130
+ const SETTLE_MS = 260;
130
131
  const presence = ref(/* @__PURE__ */ new Map());
131
132
  let presenceFrame;
132
133
  const presenceOf = (name) => presence.value.get(name) ?? 1;
@@ -505,6 +506,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
505
506
  text: s.values[active.value] == null ? "—" : fmtSeries(s, s.values[active.value])
506
507
  }))
507
508
  );
509
+ const CARD_W = 150;
510
+ const CARD_GAP = 14;
508
511
  const tooltipTarget = computed(() => {
509
512
  const flip = activeX.value > box.value.width - CARD_W;
510
513
  const y = Math.min(
@@ -528,12 +531,15 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
528
531
  );
529
532
  const clipId = `lp-chart-${Math.random().toString(36).slice(2, 9)}`;
530
533
  const gradientId = (name, index) => `${clipId}-g-${index}-${name.replace(/[^a-zA-Z0-9_-]/g, "-")}`;
534
+ const { class: rootClass, attrs: rest } = useMergedAttrs(
535
+ "flex w-full flex-col gap-3"
536
+ );
531
537
  return (_ctx, _cache) => {
532
- return openBlock(), createElementBlock("div", {
538
+ return openBlock(), createElementBlock("div", mergeProps({
533
539
  ref_key: "root",
534
540
  ref: root,
535
- class: "flex w-full flex-col gap-3"
536
- }, [
541
+ class: unref(rootClass)
542
+ }, unref(rest)), [
537
543
  __props.title || __props.subtitle || _ctx.$slots.actions ? (openBlock(), createElementBlock("div", _hoisted_1, [
538
544
  createElementVNode("div", _hoisted_2, [
539
545
  __props.title ? (openBlock(), createElementBlock("span", _hoisted_3, toDisplayString(__props.title), 1)) : createCommentVNode("", true),
@@ -806,11 +812,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
806
812
  ]),
807
813
  _: 1
808
814
  }, 8, ["items", "always"])
809
- ], 512);
815
+ ], 16);
810
816
  };
811
817
  }
812
818
  });
813
- const LpChart = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-e07e1e7d"]]);
819
+ const LpChart = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-a2e477eb"]]);
814
820
  export {
815
821
  LpChart as default
816
822
  };
@@ -1,4 +1,6 @@
1
- type __VLS_Props = {
1
+ declare const _default: typeof __VLS_export;
2
+ export default _default;
3
+ declare const __VLS_export: __VLS_WithSlots<import('vue').DefineComponent<{
2
4
  modelValue?: boolean;
3
5
  /** Mixed state (e.g. a "select all" with a partial selection). Shows a dash. */
4
6
  indeterminate?: boolean;
@@ -6,21 +8,23 @@ type __VLS_Props = {
6
8
  label?: string;
7
9
  id?: string;
8
10
  name?: string;
9
- };
10
- declare var __VLS_20: {};
11
- type __VLS_Slots = {} & {
12
- default?: (props: typeof __VLS_20) => any;
13
- };
14
- declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
11
+ }, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
15
12
  change: (value: boolean) => any;
16
13
  "update:modelValue": (value: boolean) => any;
17
- }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
14
+ }, string, import('vue').PublicProps, Readonly<{
15
+ modelValue?: boolean;
16
+ /** Mixed state (e.g. a "select all" with a partial selection). Shows a dash. */
17
+ indeterminate?: boolean;
18
+ disabled?: boolean;
19
+ label?: string;
20
+ id?: string;
21
+ name?: string;
22
+ }> & Readonly<{
18
23
  onChange?: ((value: boolean) => any) | undefined;
19
24
  "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
20
- }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
21
- declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
22
- declare const _default: typeof __VLS_export;
23
- export default _default;
25
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>, {
26
+ default?: (props: {}) => any;
27
+ }>;
24
28
  type __VLS_WithSlots<T, S> = T & {
25
29
  new (): {
26
30
  $slots: S;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpCheckbox-BO0zuuPh.js";
1
+ import { _ as _sfc_main } from "../chunks/LpCheckbox-CVccKYaH.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,5 +1,7 @@
1
1
  import { CodeLang } from './codeHighlight';
2
- type __VLS_Props = {
2
+ declare const _default: typeof __VLS_export;
3
+ export default _default;
4
+ declare const __VLS_export: import('vue').DefineComponent<{
3
5
  /** The code (v-model when editable). */
4
6
  modelValue?: string;
5
7
  lang?: CodeLang;
@@ -19,11 +21,30 @@ type __VLS_Props = {
19
21
  height?: string;
20
22
  /** Auto-collapse a leading import/package block (no markers needed). */
21
23
  foldImports?: boolean;
22
- };
23
- declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
24
+ }, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
24
25
  "update:modelValue": (value: string) => any;
25
26
  "update:locked": (value: boolean) => any;
26
- }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
27
+ }, string, import('vue').PublicProps, Readonly<{
28
+ /** The code (v-model when editable). */
29
+ modelValue?: string;
30
+ lang?: CodeLang;
31
+ /** Show 1-based gutter line numbers. */
32
+ lineNumbers?: boolean;
33
+ /** Wrap long lines instead of scrolling horizontally. */
34
+ wrap?: boolean;
35
+ /** Read-only. Set false for an editable field with a lock toggle. */
36
+ locked?: boolean;
37
+ /** Show the lock/unlock toggle in the header (opt-in editability). */
38
+ lockToggle?: boolean;
39
+ /** Show the copy button. */
40
+ copyable?: boolean;
41
+ /** Caption shown in the header (e.g. a filename). */
42
+ title?: string;
43
+ /** Fixed height; defaults to content height. */
44
+ height?: string;
45
+ /** Auto-collapse a leading import/package block (no markers needed). */
46
+ foldImports?: boolean;
47
+ }> & Readonly<{
27
48
  "onUpdate:modelValue"?: ((value: string) => any) | undefined;
28
49
  "onUpdate:locked"?: ((value: boolean) => any) | undefined;
29
50
  }>, {
@@ -35,5 +56,3 @@ declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {
35
56
  copyable: boolean;
36
57
  foldImports: boolean;
37
58
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
38
- declare const _default: typeof __VLS_export;
39
- export default _default;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpCodeBlock-BWX1KZwk.js";
1
+ import { _ as _sfc_main } from "../chunks/LpCodeBlock-Bo0B4TFR.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpDatePicker-dY2q4dr4.js";
1
+ import { _ as _sfc_main } from "../chunks/LpDatePicker-6JFXllj5.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,6 @@
1
- type __VLS_Props = {
1
+ declare const _default: typeof __VLS_export;
2
+ export default _default;
3
+ declare const __VLS_export: __VLS_WithSlots<import('vue').DefineComponent<{
2
4
  /** Controlled open state. Omit to let the component own it (with `defaultOpen`). */
3
5
  open?: boolean;
4
6
  defaultOpen?: boolean;
@@ -12,24 +14,32 @@ type __VLS_Props = {
12
14
  * in parallel with the expand.
13
15
  */
14
16
  scrollIntoView?: boolean;
15
- };
16
- declare var __VLS_22: {}, __VLS_35: {};
17
- type __VLS_Slots = {} & {
18
- trigger?: (props: typeof __VLS_22) => any;
19
- } & {
20
- default?: (props: typeof __VLS_35) => any;
21
- };
22
- declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
17
+ }, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
23
18
  "update:open": (value: boolean) => any;
24
- }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
19
+ }, string, import('vue').PublicProps, Readonly<{
20
+ /** Controlled open state. Omit to let the component own it (with `defaultOpen`). */
21
+ open?: boolean;
22
+ defaultOpen?: boolean;
23
+ /** Trigger label (or use the #trigger slot for richer content). */
24
+ label?: string;
25
+ /** Optional iconify name shown left of the label. */
26
+ icon?: string;
27
+ /**
28
+ * On open, smooth-scroll the block to the top of the nearest scroll
29
+ * container so its content isn't left below the fold. Fires immediately,
30
+ * in parallel with the expand.
31
+ */
32
+ scrollIntoView?: boolean;
33
+ }> & Readonly<{
25
34
  "onUpdate:open"?: ((value: boolean) => any) | undefined;
26
35
  }>, {
27
36
  defaultOpen: boolean;
28
37
  scrollIntoView: boolean;
29
- }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
30
- declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
31
- declare const _default: typeof __VLS_export;
32
- export default _default;
38
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>, {
39
+ trigger?: (props: {}) => any;
40
+ } & {
41
+ default?: (props: {}) => any;
42
+ }>;
33
43
  type __VLS_WithSlots<T, S> = T & {
34
44
  new (): {
35
45
  $slots: S;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpDisclosure-B4kVAWfg.js";
1
+ import { _ as _sfc_main } from "../chunks/LpDisclosure-y7wDBgLa.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };