@leavepulse/ui 0.31.0 → 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.
- package/dist/assets/{LpDropzone-DVDC-ABU.css → LpDropzone-BBoWvi-J.css} +12 -12
- package/dist/assets/{LpImageEditor-DqP5JKCy.css → LpImageEditor-BsSwej47.css} +6 -6
- package/dist/chunks/{LpAddressInput-BDkp3-Bp.js → LpAddressInput-C35TsJXt.js} +19 -14
- package/dist/chunks/{LpAppShell-Chz8Vbtu.js → LpAppShell-lVvpENMH.js} +18 -13
- package/dist/chunks/{LpBreadcrumbs-5uvViCXi.js → LpBreadcrumbs-p4jHe_V-.js} +9 -7
- package/dist/chunks/{LpCalendar-B7ZL0ty3.js → LpCalendar-B7Ko5RdR.js} +12 -7
- package/dist/chunks/{LpCard-D0M2ZCnB.js → LpCard-1SeUYPBT.js} +36 -9
- package/dist/chunks/{LpCheckbox-BO0zuuPh.js → LpCheckbox-CVccKYaH.js} +9 -4
- package/dist/chunks/{LpCodeBlock-BWX1KZwk.js → LpCodeBlock-Bo0B4TFR.js} +37 -32
- package/dist/chunks/{LpDatePicker-dY2q4dr4.js → LpDatePicker-6JFXllj5.js} +1 -1
- package/dist/chunks/{LpDisclosure-B4kVAWfg.js → LpDisclosure-y7wDBgLa.js} +11 -6
- package/dist/chunks/{LpEmptyState-BV3q7Qyi.js → LpEmptyState-Dsdqz1Wj.js} +13 -5
- package/dist/chunks/{LpFileTree-DfFqY__1.js → LpFileTree-C-NFRT0H.js} +19 -14
- package/dist/chunks/{LpFileTreeNode-COchUMNn.js → LpFileTreeNode-DNJUJiiB.js} +13 -6
- package/dist/chunks/{LpFormField-fV_2ZdCk.js → LpFormField-CazBc2-a.js} +14 -9
- package/dist/chunks/{LpInput-Bt4J71xn.js → LpInput-9EXWUM9B.js} +1 -1
- package/dist/chunks/{LpLightbox-Ci35Y_xP.js → LpLightbox-Cixfxezw.js} +29 -6
- package/dist/chunks/{LpLink-BHZ1CLlF.js → LpLink-DCND-zyu.js} +16 -9
- package/dist/chunks/{LpLogViewer-TSRyt3t9.js → LpLogViewer-y53ZqSVq.js} +20 -10
- package/dist/chunks/{LpMapPicker-CXvoTrAe.js → LpMapPicker-ul4oYno6.js} +14 -9
- package/dist/chunks/LpMediaGallery-t1z3bQcY.js +187 -0
- package/dist/chunks/{LpNotificationBell-gdvQY89m.js → LpNotificationBell-lHePf89W.js} +1 -1
- package/dist/chunks/{LpNumberField-NPE8Bumx.js → LpNumberField-CWuX08iX.js} +12 -5
- package/dist/chunks/{LpOtpInput-DqaT0Z75.js → LpOtpInput-y2v-pmiN.js} +11 -6
- package/dist/chunks/{LpPagination-CeGuNe_q.js → LpPagination-5FxjmmB5.js} +21 -19
- package/dist/chunks/{LpPasswordInput-BqMAc5HA.js → LpPasswordInput--sjYCkLS.js} +1 -1
- package/dist/chunks/{LpPhoneInput-NXXjciJJ.js → LpPhoneInput-BDSKVl_z.js} +16 -9
- package/dist/chunks/{LpPie-BL1vTDSM.js → LpPie-c2-q4DJu.js} +14 -8
- package/dist/chunks/{LpRadio-CL-pI0_O.js → LpRadio-B5AfqTpZ.js} +13 -5
- package/dist/chunks/{LpRadioGroup-B4yDTmi6.js → LpRadioGroup-xPIuVDO_.js} +12 -5
- package/dist/chunks/{LpSegmented-BmpanyAo.js → LpSegmented-fV0Sk92p.js} +16 -6
- package/dist/chunks/{LpSidebar-BiWM_lDB.js → LpSidebar-DcYavim2.js} +2 -2
- package/dist/chunks/{LpSidebarNav-CsgeuGAu.js → LpSidebarNav-CqwvT4H8.js} +21 -16
- package/dist/chunks/{LpSlider-B1SF3pRV.js → LpSlider-BwNIBkAK.js} +12 -5
- package/dist/chunks/{LpStat-CDanpzU0.js → LpStat-CQaW8R--.js} +23 -18
- package/dist/chunks/{LpStepper-Wtl-6nUh.js → LpStepper-Bk-XaQYU.js} +15 -10
- package/dist/chunks/{LpSwitch-v6fnccSM.js → LpSwitch-xgnRU2k0.js} +12 -5
- package/dist/chunks/{LpTextarea-BMIOfw5l.js → LpTextarea-t7F6gv8E.js} +1 -1
- package/dist/chunks/{LpUptimeBar-DcQ8HikG.js → LpUptimeBar-DvAMno0S.js} +26 -21
- package/dist/component-names.d.ts +1 -1
- package/dist/components/LpAddressInput.vue.d.ts +34 -17
- package/dist/components/LpAddressInput.vue.js +1 -1
- package/dist/components/LpAppShell.vue.d.ts +65 -31
- package/dist/components/LpAppShell.vue.js +1 -1
- package/dist/components/LpBreadcrumbs.vue.d.ts +12 -6
- package/dist/components/LpBreadcrumbs.vue.js +1 -1
- package/dist/components/LpCalendar.vue.d.ts +15 -6
- package/dist/components/LpCalendar.vue.js +1 -1
- package/dist/components/LpCard.vue.d.ts +26 -0
- package/dist/components/LpCard.vue.js +1 -1
- package/dist/components/LpChart.vue.d.ts +54 -12
- package/dist/components/LpChart.vue.js +15 -9
- package/dist/components/LpCheckbox.vue.d.ts +16 -12
- package/dist/components/LpCheckbox.vue.js +1 -1
- package/dist/components/LpCodeBlock.vue.d.ts +25 -6
- package/dist/components/LpCodeBlock.vue.js +1 -1
- package/dist/components/LpDatePicker.vue.js +1 -1
- package/dist/components/LpDisclosure.vue.d.ts +24 -14
- package/dist/components/LpDisclosure.vue.js +1 -1
- package/dist/components/LpDropzone.vue.d.ts +38 -14
- package/dist/components/LpDropzone.vue.js +17 -11
- package/dist/components/LpEmptyState.vue.d.ts +15 -10
- package/dist/components/LpEmptyState.vue.js +1 -1
- package/dist/components/LpFileTree.vue.d.ts +51 -31
- package/dist/components/LpFileTree.vue.js +1 -1
- package/dist/components/LpFileTreeNode.vue.d.ts +31 -16
- package/dist/components/LpFileTreeNode.vue.js +1 -1
- package/dist/components/LpFormField.vue.d.ts +14 -13
- package/dist/components/LpFormField.vue.js +1 -1
- package/dist/components/LpImageEditor.vue.d.ts +33 -10
- package/dist/components/LpImageEditor.vue.js +13 -7
- package/dist/components/LpInput.vue.js +1 -1
- package/dist/components/LpLightbox.vue.js +1 -1
- package/dist/components/LpLink.vue.d.ts +46 -11
- package/dist/components/LpLink.vue.js +1 -1
- package/dist/components/LpLogViewer.vue.d.ts +63 -6
- package/dist/components/LpLogViewer.vue.js +1 -1
- package/dist/components/LpMapPicker.vue.d.ts +25 -10
- package/dist/components/LpMapPicker.vue.js +1 -1
- package/dist/components/LpMediaGallery.vue.d.ts +76 -0
- package/dist/components/LpMediaGallery.vue.js +4 -0
- package/dist/components/LpNotificationBell.vue.js +1 -1
- package/dist/components/LpNumberField.vue.d.ts +12 -6
- package/dist/components/LpNumberField.vue.js +1 -1
- package/dist/components/LpOtpInput.vue.d.ts +18 -6
- package/dist/components/LpOtpInput.vue.js +1 -1
- package/dist/components/LpPagination.vue.d.ts +16 -6
- package/dist/components/LpPagination.vue.js +1 -1
- package/dist/components/LpPasswordInput.vue.js +1 -1
- package/dist/components/LpPhoneInput.vue.d.ts +18 -6
- package/dist/components/LpPhoneInput.vue.js +1 -1
- package/dist/components/LpPie.vue.d.ts +96 -34
- package/dist/components/LpPie.vue.js +1 -1
- package/dist/components/LpRadio.vue.d.ts +10 -10
- package/dist/components/LpRadio.vue.js +1 -1
- package/dist/components/LpRadioGroup.vue.d.ts +12 -12
- package/dist/components/LpRadioGroup.vue.js +1 -1
- package/dist/components/LpSegmented.vue.d.ts +12 -6
- package/dist/components/LpSegmented.vue.js +1 -1
- package/dist/components/LpSidebar.vue.js +1 -1
- package/dist/components/LpSidebarNav.vue.d.ts +28 -17
- package/dist/components/LpSidebarNav.vue.js +1 -1
- package/dist/components/LpSlider.vue.d.ts +13 -6
- package/dist/components/LpSlider.vue.js +1 -1
- package/dist/components/LpStat.vue.d.ts +35 -11
- package/dist/components/LpStat.vue.js +1 -1
- package/dist/components/LpStepper.vue.d.ts +17 -5
- package/dist/components/LpStepper.vue.js +1 -1
- package/dist/components/LpSwitch.vue.d.ts +8 -6
- package/dist/components/LpSwitch.vue.js +1 -1
- package/dist/components/LpTable.vue.js +1 -1
- package/dist/components/LpTextarea.vue.js +1 -1
- package/dist/components/LpUptimeBar.vue.d.ts +21 -5
- package/dist/components/LpUptimeBar.vue.js +1 -1
- package/dist/composables/useMergedClass.d.ts +20 -0
- package/dist/composables/useMergedClass.js +11 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +95 -89
- package/package.json +1 -3
- package/src/component-names.ts +1 -0
- package/src/components/LpAddressInput.vue +16 -1
- package/src/components/LpAppShell.vue +16 -1
- package/src/components/LpBreadcrumbs.vue +16 -1
- package/src/components/LpCalendar.vue +15 -1
- package/src/components/LpCard.vue +50 -5
- package/src/components/LpChart.vue +16 -1
- package/src/components/LpCheckbox.vue +16 -1
- package/src/components/LpCodeBlock.vue +16 -1
- package/src/components/LpDisclosure.vue +15 -1
- package/src/components/LpDropzone.vue +21 -6
- package/src/components/LpEmptyState.vue +21 -3
- package/src/components/LpFileTree.vue +16 -1
- package/src/components/LpFileTreeNode.vue +15 -1
- package/src/components/LpFormField.vue +16 -1
- package/src/components/LpImageEditor.vue +16 -1
- package/src/components/LpLightbox.vue +54 -2
- package/src/components/LpLink.vue +25 -9
- package/src/components/LpLogViewer.vue +20 -2
- package/src/components/LpMapPicker.vue +15 -1
- package/src/components/LpMediaGallery.vue +280 -0
- package/src/components/LpNumberField.vue +15 -1
- package/src/components/LpOtpInput.vue +15 -1
- package/src/components/LpPagination.vue +16 -1
- package/src/components/LpPhoneInput.vue +23 -8
- package/src/components/LpPie.vue +16 -1
- package/src/components/LpRadio.vue +20 -3
- package/src/components/LpRadioGroup.vue +15 -1
- package/src/components/LpSegmented.vue +21 -2
- package/src/components/LpSidebarNav.vue +16 -1
- package/src/components/LpSlider.vue +15 -1
- package/src/components/LpStat.vue +16 -1
- package/src/components/LpStepper.vue +16 -1
- package/src/components/LpSwitch.vue +15 -1
- package/src/components/LpUptimeBar.vue +16 -1
- package/src/composables/useMergedClass.ts +30 -0
- package/src/index.ts +2 -0
- 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
|
-
|
|
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<
|
|
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
|
-
|
|
83
|
-
|
|
84
|
-
|
|
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;
|
|
@@ -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
|
-
|
|
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<
|
|
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,6 @@
|
|
|
1
|
-
|
|
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<
|
|
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;
|
|
@@ -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";
|
|
@@ -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
|
-
|
|
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<
|
|
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
|
-
|
|
82
|
-
|
|
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,
|
|
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
|
|
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:
|
|
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
|
-
],
|
|
815
|
+
], 16);
|
|
810
816
|
};
|
|
811
817
|
}
|
|
812
818
|
});
|
|
813
|
-
const LpChart = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
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
|
-
|
|
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<
|
|
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
|
-
|
|
22
|
-
|
|
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,5 +1,7 @@
|
|
|
1
1
|
import { CodeLang } from './codeHighlight';
|
|
2
|
-
|
|
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<
|
|
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,6 @@
|
|
|
1
|
-
|
|
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<
|
|
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
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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;
|