@leavepulse/ui 0.31.1 → 0.33.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 (159) 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-oLqyjOln.js} +30 -7
  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-Cid7PGYx.js +214 -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 +80 -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/components/lightbox.d.ts +10 -0
  116. package/dist/composables/useMergedClass.d.ts +20 -0
  117. package/dist/composables/useMergedClass.js +11 -0
  118. package/dist/index.d.ts +2 -0
  119. package/dist/index.js +95 -89
  120. package/package.json +1 -3
  121. package/src/component-names.ts +1 -0
  122. package/src/components/LpAddressInput.vue +16 -1
  123. package/src/components/LpAppShell.vue +16 -1
  124. package/src/components/LpBreadcrumbs.vue +16 -1
  125. package/src/components/LpCalendar.vue +15 -1
  126. package/src/components/LpCard.vue +50 -5
  127. package/src/components/LpChart.vue +16 -1
  128. package/src/components/LpCheckbox.vue +16 -1
  129. package/src/components/LpCodeBlock.vue +16 -1
  130. package/src/components/LpDisclosure.vue +15 -1
  131. package/src/components/LpDropzone.vue +21 -6
  132. package/src/components/LpEmptyState.vue +21 -3
  133. package/src/components/LpFileTree.vue +16 -1
  134. package/src/components/LpFileTreeNode.vue +15 -1
  135. package/src/components/LpFormField.vue +16 -1
  136. package/src/components/LpImageEditor.vue +16 -1
  137. package/src/components/LpLightbox.vue +68 -3
  138. package/src/components/LpLink.vue +25 -9
  139. package/src/components/LpLogViewer.vue +20 -2
  140. package/src/components/LpMapPicker.vue +15 -1
  141. package/src/components/LpMediaGallery.vue +365 -0
  142. package/src/components/LpNumberField.vue +15 -1
  143. package/src/components/LpOtpInput.vue +15 -1
  144. package/src/components/LpPagination.vue +16 -1
  145. package/src/components/LpPhoneInput.vue +23 -8
  146. package/src/components/LpPie.vue +16 -1
  147. package/src/components/LpRadio.vue +20 -3
  148. package/src/components/LpRadioGroup.vue +15 -1
  149. package/src/components/LpSegmented.vue +21 -2
  150. package/src/components/LpSidebarNav.vue +16 -1
  151. package/src/components/LpSlider.vue +15 -1
  152. package/src/components/LpStat.vue +16 -1
  153. package/src/components/LpStepper.vue +16 -1
  154. package/src/components/LpSwitch.vue +15 -1
  155. package/src/components/LpUptimeBar.vue +16 -1
  156. package/src/components/lightbox.ts +10 -0
  157. package/src/composables/useMergedClass.ts +30 -0
  158. package/src/index.ts +2 -0
  159. package/src/tokens/tokens.css +29 -0
@@ -2,23 +2,23 @@ export interface RadioOption {
2
2
  value: string;
3
3
  label: string;
4
4
  }
5
- type __VLS_Props = {
5
+ declare const _default: typeof __VLS_export;
6
+ export default _default;
7
+ declare const __VLS_export: __VLS_WithSlots<import('vue').DefineComponent<{
6
8
  modelValue?: string;
7
9
  options?: RadioOption[];
8
10
  disabled?: boolean;
9
- };
10
- declare var __VLS_10: {};
11
- type __VLS_Slots = {} & {
12
- default?: (props: typeof __VLS_10) => 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
  "update:modelValue": (value: string) => any;
16
- }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
13
+ }, string, import('vue').PublicProps, Readonly<{
14
+ modelValue?: string;
15
+ options?: RadioOption[];
16
+ disabled?: boolean;
17
+ }> & Readonly<{
17
18
  "onUpdate:modelValue"?: ((value: string) => 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;
19
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>, {
20
+ default?: (props: {}) => any;
21
+ }>;
22
22
  type __VLS_WithSlots<T, S> = T & {
23
23
  new (): {
24
24
  $slots: S;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpRadioGroup-B4yDTmi6.js";
1
+ import { _ as _sfc_main } from "../chunks/LpRadioGroup-xPIuVDO_.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -4,21 +4,27 @@ export interface SegmentedOption {
4
4
  /** Optional iconify name shown before the label (or alone, icon-only). */
5
5
  icon?: string;
6
6
  }
7
- type __VLS_Props = {
7
+ declare const _default: typeof __VLS_export;
8
+ export default _default;
9
+ declare const __VLS_export: import('vue').DefineComponent<{
8
10
  modelValue?: string;
9
11
  options: SegmentedOption[];
10
12
  size?: "sm" | "md";
11
13
  /** Stretch to fill the container with equal-width segments. */
12
14
  block?: boolean;
13
15
  disabled?: boolean;
14
- };
15
- declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
16
+ }, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
16
17
  "update:modelValue": (value: string) => any;
17
- }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
18
+ }, string, import('vue').PublicProps, Readonly<{
19
+ modelValue?: string;
20
+ options: SegmentedOption[];
21
+ size?: "sm" | "md";
22
+ /** Stretch to fill the container with equal-width segments. */
23
+ block?: boolean;
24
+ disabled?: boolean;
25
+ }> & Readonly<{
18
26
  "onUpdate:modelValue"?: ((value: string) => any) | undefined;
19
27
  }>, {
20
28
  size: "sm" | "md";
21
29
  block: boolean;
22
30
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
23
- declare const _default: typeof __VLS_export;
24
- export default _default;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpSegmented-BmpanyAo.js";
1
+ import { _ as _sfc_main } from "../chunks/LpSegmented-fV0Sk92p.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpSidebar-BiWM_lDB.js";
1
+ import { _ as _sfc_main } from "../chunks/LpSidebar-DcYavim2.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,5 +1,7 @@
1
1
  import { SidebarItem, SidebarSection } from './sidebar';
2
- type __VLS_Props = {
2
+ declare const _default: typeof __VLS_export;
3
+ export default _default;
4
+ declare const __VLS_export: __VLS_WithSlots<import('vue').DefineComponent<{
3
5
  /** Normalised section list (LpSidebar collapses items/sections into this). */
4
6
  groups: SidebarSection[];
5
7
  /** Shared layoutId so the active pill flies between desktop/drawer renders. */
@@ -14,28 +16,37 @@ type __VLS_Props = {
14
16
  * nav itself only reports the intent to change it.
15
17
  */
16
18
  collapsedKeys?: string[];
17
- };
18
- declare var __VLS_63: {
19
- item: SidebarItem;
20
- active: boolean;
21
- };
22
- type __VLS_Slots = {} & {
23
- item?: (props: typeof __VLS_63) => any;
24
- };
25
- declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
26
- activate: (item: SidebarItem) => any;
19
+ }, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
27
20
  "toggle-section": (key: string, collapsed: boolean) => any;
28
- }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
29
- onActivate?: ((item: SidebarItem) => any) | undefined;
21
+ activate: (item: SidebarItem) => any;
22
+ }, string, import('vue').PublicProps, Readonly<{
23
+ /** Normalised section list (LpSidebar collapses items/sections into this). */
24
+ groups: SidebarSection[];
25
+ /** Shared layoutId so the active pill flies between desktop/drawer renders. */
26
+ pillId: string;
27
+ itemActive: (item: SidebarItem) => boolean;
28
+ loading?: boolean;
29
+ skeletonRows?: number;
30
+ skeletonHeader?: boolean;
31
+ /**
32
+ * Keys of the groups currently folded away. The owner holds this so the
33
+ * choice can outlive the component (a setting, a stored preference) — the
34
+ * nav itself only reports the intent to change it.
35
+ */
36
+ collapsedKeys?: string[];
37
+ }> & Readonly<{
30
38
  "onToggle-section"?: ((key: string, collapsed: boolean) => any) | undefined;
39
+ onActivate?: ((item: SidebarItem) => any) | undefined;
31
40
  }>, {
32
41
  skeletonRows: number;
33
42
  skeletonHeader: boolean;
34
43
  collapsedKeys: string[];
35
- }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
36
- declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
37
- declare const _default: typeof __VLS_export;
38
- export default _default;
44
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>, {
45
+ item?: (props: {
46
+ item: SidebarItem;
47
+ active: boolean;
48
+ }) => any;
49
+ }>;
39
50
  type __VLS_WithSlots<T, S> = T & {
40
51
  new (): {
41
52
  $slots: S;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpSidebarNav-CsgeuGAu.js";
1
+ import { _ as _sfc_main } from "../chunks/LpSidebarNav-CqwvT4H8.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
  modelValue?: number;
3
5
  min?: number;
4
6
  max?: number;
@@ -6,11 +8,18 @@ type __VLS_Props = {
6
8
  disabled?: boolean;
7
9
  /** Accessible name for the thumb when there's no visible label. */
8
10
  ariaLabel?: string;
9
- };
10
- declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
11
+ }, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
11
12
  change: (value: number) => any;
12
13
  "update:modelValue": (value: number) => any;
13
- }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
14
+ }, string, import('vue').PublicProps, Readonly<{
15
+ modelValue?: number;
16
+ min?: number;
17
+ max?: number;
18
+ step?: number;
19
+ disabled?: boolean;
20
+ /** Accessible name for the thumb when there's no visible label. */
21
+ ariaLabel?: string;
22
+ }> & Readonly<{
14
23
  onChange?: ((value: number) => any) | undefined;
15
24
  "onUpdate:modelValue"?: ((value: number) => any) | undefined;
16
25
  }>, {
@@ -19,5 +28,3 @@ declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {
19
28
  step: number;
20
29
  modelValue: number;
21
30
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
22
- declare const _default: typeof __VLS_export;
23
- export default _default;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpSlider-B1SF3pRV.js";
1
+ import { _ as _sfc_main } from "../chunks/LpSlider-BwNIBkAK.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
  label: string;
3
5
  /**
4
6
  * A string is printed as given; a NUMBER counts to its new value on
@@ -26,18 +28,40 @@ type __VLS_Props = {
26
28
  /** For metrics where down is good (latency, errors): swaps the colours so a
27
29
  * downward trend reads as positive (action) and upward as danger. */
28
30
  invertTrend?: boolean;
29
- };
30
- declare var __VLS_21: {};
31
- type __VLS_Slots = {} & {
32
- trend?: (props: typeof __VLS_21) => any;
33
- };
34
- declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
31
+ }, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{
32
+ label: string;
33
+ /**
34
+ * A string is printed as given; a NUMBER counts to its new value on
35
+ * LpNumberFlow's digit wheels. A tile on a live dashboard is the one place
36
+ * a figure changes while somebody is looking at it, and a value that cuts
37
+ * from 41 to 43 says nothing about which way it moved.
38
+ */
39
+ value: string | number;
40
+ /** Formatting for a numeric `value` — see LpNumberFlow. */
41
+ compact?: boolean;
42
+ grouped?: boolean;
43
+ decimals?: number;
44
+ prefix?: string;
45
+ valueSuffix?: string;
46
+ hint?: string;
47
+ icon?: string;
48
+ online?: boolean;
49
+ /** Change vs. a previous period. Renders a coloured arrow + this text. A
50
+ * number is shown with a sign; a string is shown verbatim (e.g. "+12%"). */
51
+ delta?: number | string;
52
+ /** Appended to a numeric delta, e.g. "%". Ignored for string deltas. */
53
+ deltaSuffix?: string;
54
+ /** Trend direction. "auto" derives it from a numeric delta's sign. */
55
+ trend?: "auto" | "up" | "down" | "flat";
56
+ /** For metrics where down is good (latency, errors): swaps the colours so a
57
+ * downward trend reads as positive (action) and upward as danger. */
58
+ invertTrend?: boolean;
59
+ }> & Readonly<{}>, {
35
60
  decimals: number;
36
61
  trend: "auto" | "up" | "down" | "flat";
37
- }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
38
- declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
39
- declare const _default: typeof __VLS_export;
40
- export default _default;
62
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>, {
63
+ trend?: (props: {}) => any;
64
+ }>;
41
65
  type __VLS_WithSlots<T, S> = T & {
42
66
  new (): {
43
67
  $slots: S;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpStat-CDanpzU0.js";
1
+ import { _ as _sfc_main } from "../chunks/LpStat-CQaW8R--.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -5,7 +5,9 @@ export interface Step {
5
5
  /** Replaces the step number while the step is pending or current. */
6
6
  icon?: string;
7
7
  }
8
- type __VLS_Props = {
8
+ declare const _default: typeof __VLS_export;
9
+ export default _default;
10
+ declare const __VLS_export: import('vue').DefineComponent<{
9
11
  steps: Step[];
10
12
  /**
11
13
  * The active step: an index, or a step `key` for keyed flows.
@@ -18,7 +20,17 @@ type __VLS_Props = {
18
20
  * prerequisite is filled in, say.
19
21
  */
20
22
  completed?: Array<string | number>;
21
- };
22
- declare const __VLS_export: 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 _default: typeof __VLS_export;
24
- export default _default;
23
+ }, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{
24
+ steps: Step[];
25
+ /**
26
+ * The active step: an index, or a step `key` for keyed flows.
27
+ */
28
+ current: number | string;
29
+ /**
30
+ * Which steps count as done. Omit it and everything before `current` is
31
+ * complete, which is the linear case. Pass keys (or indices) when a flow can
32
+ * finish steps out of order — a verification that succeeds before its
33
+ * prerequisite is filled in, say.
34
+ */
35
+ completed?: Array<string | number>;
36
+ }> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpStepper-Wtl-6nUh.js";
1
+ import { _ as _sfc_main } from "../chunks/LpStepper-Bk-XaQYU.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,11 +1,13 @@
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
  modelValue?: boolean;
3
5
  disabled?: boolean;
4
- };
5
- declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
6
+ }, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
6
7
  "update:modelValue": (value: boolean) => any;
7
- }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
8
+ }, string, import('vue').PublicProps, Readonly<{
9
+ modelValue?: boolean;
10
+ disabled?: boolean;
11
+ }> & Readonly<{
8
12
  "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
9
13
  }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
10
- declare const _default: typeof __VLS_export;
11
- export default _default;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpSwitch-v6fnccSM.js";
1
+ import { _ as _sfc_main } from "../chunks/LpSwitch-xgnRU2k0.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, ref, computed, watch, onBeforeUnmount, openBlock, createBlock, withCtx, createVNode, createElementVNode, normalizeClass, createElementBlock, createCommentVNode, Fragment, renderList, normalizeStyle, createTextVNode, toDisplayString, TransitionGroup, unref, mergeProps, withModifiers, renderSlot } from "vue";
2
- import { _ as _sfc_main$3 } from "../chunks/LpCheckbox-BO0zuuPh.js";
2
+ import { _ as _sfc_main$3 } from "../chunks/LpCheckbox-CVccKYaH.js";
3
3
  import { _ as _sfc_main$2 } from "../chunks/LpContextMenu-B6WBLleS.js";
4
4
  import { _ as _sfc_main$4 } from "../chunks/LpIcon-CCnX5_2j.js";
5
5
  import { _ as _sfc_main$1 } from "../chunks/LpScrollArea-D8xyKXcF.js";
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpTextarea-BMIOfw5l.js";
1
+ import { _ as _sfc_main } from "../chunks/LpTextarea-t7F6gv8E.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -5,7 +5,26 @@ export interface UptimeSegment {
5
5
  /** Optional rich tooltip body; falls back to a humanised status. */
6
6
  label?: string;
7
7
  }
8
- type __VLS_Props = {
8
+ declare const _default: typeof __VLS_export;
9
+ export default _default;
10
+ declare const __VLS_export: import('vue').DefineComponent<{
11
+ /** Oldest → newest. Each entry is one slice of the timeline. */
12
+ segments: UptimeSegment[];
13
+ /** Caption shown under the left edge (oldest point). */
14
+ startLabel?: string;
15
+ /** Caption shown under the right edge (newest point). */
16
+ endLabel?: string;
17
+ /** Show the computed uptime % above the bar. */
18
+ showUptime?: boolean;
19
+ /** Override the headline shown next to the uptime %. */
20
+ title?: string;
21
+ /**
22
+ * Per-status colours. Any CSS colour (hex, rgb, `var(--token)`). Unset
23
+ * statuses fall back to the theme tokens below. Pass e.g.
24
+ * `{ degraded: '#ffb84d' }` to recolour just one state.
25
+ */
26
+ colors?: Partial<Record<UptimeStatus, string>>;
27
+ }, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{
9
28
  /** Oldest → newest. Each entry is one slice of the timeline. */
10
29
  segments: UptimeSegment[];
11
30
  /** Caption shown under the left edge (oldest point). */
@@ -22,9 +41,6 @@ type __VLS_Props = {
22
41
  * `{ degraded: '#ffb84d' }` to recolour just one state.
23
42
  */
24
43
  colors?: Partial<Record<UptimeStatus, string>>;
25
- };
26
- declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
44
+ }> & Readonly<{}>, {
27
45
  showUptime: boolean;
28
46
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
29
- declare const _default: typeof __VLS_export;
30
- export default _default;
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpUptimeBar-DcQ8HikG.js";
1
+ import { _ as _sfc_main } from "../chunks/LpUptimeBar-DvAMno0S.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -9,6 +9,16 @@ export interface LightboxItem {
9
9
  description?: string;
10
10
  /** Filename used when downloading; derived from `src` when absent. */
11
11
  filename?: string;
12
+ /**
13
+ * Hide this image behind a cover until someone asks for it — a spoiler, a
14
+ * screenshot of something not everyone in the channel has reached yet, a
15
+ * picture that should not appear in a scroll past.
16
+ *
17
+ * A property of the ITEM rather than of the grid showing it: which images are
18
+ * spoilers is a fact about the images, and the usual set is a mixed one, with
19
+ * a marked picture sitting beside plain ones.
20
+ */
21
+ spoiler?: boolean;
12
22
  }
13
23
  /** Last path segment of a URL, or a fallback — used to name a download. */
14
24
  export declare function fileNameOf(item: LightboxItem, fallback?: string): string;
@@ -14,6 +14,26 @@ import { ComputedRef, MaybeRefOrGetter } from 'vue';
14
14
  * so the raw `class` does not land on the element a second time, unmerged.
15
15
  */
16
16
  export declare function useMergedClass(own: MaybeRefOrGetter<string | undefined>): ComputedRef<string>;
17
+ /**
18
+ * `useMergedClass` plus the rest of `$attrs`, for the common `inheritAttrs:
19
+ * false` shape: bind `class` and `attrs` and the consumer's `class` lands once,
20
+ * merged, while ids, handlers and aria-* still reach the element.
21
+ *
22
+ * ```ts
23
+ * const { class: rootClass, attrs: rest } = useMergedAttrs(() => card({ padded }))
24
+ * ```
25
+ * ```vue
26
+ * <div :class="rootClass" v-bind="rest">
27
+ * ```
28
+ *
29
+ * Binding the raw `$attrs` alongside a merged class is the bug this avoids:
30
+ * Vue appends that second `class` to the merged one, and stylesheet order —
31
+ * not the caller — decides which wins.
32
+ */
33
+ export declare function useMergedAttrs(own: MaybeRefOrGetter<string | undefined>): {
34
+ class: ComputedRef<string>;
35
+ attrs: ComputedRef<Record<string, unknown>>;
36
+ };
17
37
  /**
18
38
  * The same merge as a plain function, for the places that already have both
19
39
  * strings in hand and do not need the attrs lookup — a render helper, or a
@@ -4,10 +4,21 @@ function useMergedClass(own) {
4
4
  const attrs = useAttrs();
5
5
  return computed(() => cn(toValue(own), attrs.class) ?? "");
6
6
  }
7
+ function useMergedAttrs(own) {
8
+ const attrs = useAttrs();
9
+ return {
10
+ class: useMergedClass(own),
11
+ attrs: computed(() => {
12
+ const { class: _omitted, ...rest } = attrs;
13
+ return rest;
14
+ })
15
+ };
16
+ }
7
17
  function mergeClass(...classes) {
8
18
  return cn(...classes) ?? "";
9
19
  }
10
20
  export {
11
21
  mergeClass,
22
+ useMergedAttrs,
12
23
  useMergedClass
13
24
  };
package/dist/index.d.ts CHANGED
@@ -56,6 +56,7 @@ export { fileNameOf } from './components/lightbox';
56
56
  export { default as LpLink } from './components/LpLink.vue';
57
57
  export { default as LpLogViewer } from './components/LpLogViewer.vue';
58
58
  export type { LogLevel, LogLine } from './components/LpLogViewer.vue';
59
+ export { default as LpMediaGallery } from './components/LpMediaGallery.vue';
59
60
  export { default as LpModal } from './components/LpModal.vue';
60
61
  export { default as LpNotificationBell } from './components/LpNotificationBell.vue';
61
62
  export type { NotificationItem, NotificationLabels, } from './components/LpNotificationBell.vue';
@@ -134,6 +135,7 @@ export { useClipboard } from './composables/useClipboard';
134
135
  export type { CopyOptions, UseClipboard } from './composables/useClipboard';
135
136
  export { useHotkeys, isAppleKeyboard, appleModifierLabel } from './composables/useHotkeys';
136
137
  export type { HotkeyBinding } from './composables/useHotkeys';
138
+ export { useMergedClass, useMergedAttrs, mergeClass } from './composables/useMergedClass';
137
139
  export { useInputFilter } from './composables/useInputFilter';
138
140
  export type { UseInputFilterOptions } from './composables/useInputFilter';
139
141
  export { easeOut, easeTravel, easingToken, prefersReducedMotion } from './composables/easing';