@leavepulse/ui 0.43.2 → 0.43.3
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/component-names.d.ts +1 -0
- package/dist/components/LayoutCanvas.vue.d.ts +28 -0
- package/dist/components/LayoutNode.vue.d.ts +40 -0
- package/dist/components/LpActionBar.vue.d.ts +84 -0
- package/dist/components/LpAddressInput.vue.d.ts +70 -0
- package/dist/components/LpAlert.vue.d.ts +44 -0
- package/dist/components/LpAppShell.vue.d.ts +123 -0
- package/dist/components/LpAutocomplete.vue.d.ts +50 -0
- package/dist/components/LpAvatar.vue.d.ts +34 -0
- package/dist/components/LpBadge.vue.d.ts +20 -0
- package/dist/components/LpBreadcrumbs.vue.d.ts +32 -0
- package/dist/components/LpButton.vue.d.ts +113 -0
- package/dist/components/LpCalendar.vue.d.ts +29 -0
- package/dist/components/LpCard.vue.d.ts +60 -0
- package/dist/components/LpChart.vue.d.ts +130 -0
- package/dist/components/LpCheckbox.vue.d.ts +32 -0
- package/dist/components/LpCodeBlock.vue.d.ts +58 -0
- package/dist/components/LpColorPicker.vue.d.ts +124 -0
- package/dist/components/LpCommandPalette.vue.d.ts +206 -0
- package/dist/components/LpConfirmDialog.vue.d.ts +59 -0
- package/dist/components/LpContextMenu.vue.d.ts +44 -0
- package/dist/components/LpDatePicker.vue.d.ts +33 -0
- package/dist/components/LpDisclosure.vue.d.ts +47 -0
- package/dist/components/LpDivider.vue.d.ts +17 -0
- package/dist/components/LpDrawer.vue.d.ts +170 -0
- package/dist/components/LpDropdownMenu.vue.d.ts +23 -0
- package/dist/components/LpDropzone.vue.d.ts +90 -0
- package/dist/components/LpEmptyState.vue.d.ts +28 -0
- package/dist/components/LpFileTree.vue.d.ts +126 -0
- package/dist/components/LpFileTreeNode.vue.d.ts +62 -0
- package/dist/components/LpFormField.vue.d.ts +24 -0
- package/dist/components/LpIcon.vue.d.ts +9 -0
- package/dist/components/LpImageEditor.vue.d.ts +106 -0
- package/dist/components/LpInfraNode.vue.d.ts +65 -0
- package/dist/components/LpInput.vue.d.ts +80 -0
- package/dist/components/LpLaneNode.vue.d.ts +24 -0
- package/dist/components/LpLightbox.vue.d.ts +62 -0
- package/dist/components/LpLink.vue.d.ts +93 -0
- package/dist/components/LpLogViewer.vue.d.ts +153 -0
- package/dist/components/LpMapPicker.vue.d.ts +59 -0
- package/dist/components/LpMediaGallery.vue.d.ts +80 -0
- package/dist/components/LpModal.vue.d.ts +66 -0
- package/dist/components/LpModalNav.vue.d.ts +66 -0
- package/dist/components/LpNotificationBell.vue.d.ts +85 -0
- package/dist/components/LpNumberField.vue.d.ts +21 -0
- package/dist/components/LpNumberFlow.vue.d.ts +35 -0
- package/dist/components/LpOtpInput.vue.d.ts +39 -0
- package/dist/components/LpPagination.vue.d.ts +35 -0
- package/dist/components/LpPasswordInput.vue.d.ts +36 -0
- package/dist/components/LpPhoneInput.vue.d.ts +49 -0
- package/dist/components/LpPie.vue.d.ts +196 -0
- package/dist/components/LpPopover.vue.d.ts +34 -0
- package/dist/components/LpProgress.vue.d.ts +66 -0
- package/dist/components/LpRadio.vue.d.ts +18 -0
- package/dist/components/LpRadioGroup.vue.d.ts +26 -0
- package/dist/components/LpRollingText.vue.d.ts +33 -0
- package/dist/components/LpScrollArea.vue.d.ts +28 -0
- package/dist/components/LpSection.vue.d.ts +120 -0
- package/dist/components/LpSegmented.vue.d.ts +30 -0
- package/dist/components/LpSelect.vue.d.ts +47 -0
- package/dist/components/LpServiceNode.vue.d.ts +14 -0
- package/dist/components/LpShift.vue.d.ts +36 -0
- package/dist/components/LpShortcutsDialog.vue.d.ts +24 -0
- package/dist/components/LpSidebar.vue.d.ts +146 -0
- package/dist/components/LpSidebarNav.vue.d.ts +54 -0
- package/dist/components/LpSkeleton.vue.d.ts +16 -0
- package/dist/components/LpSlider.vue.d.ts +30 -0
- package/dist/components/LpSparkline.vue.d.ts +48 -0
- package/dist/components/LpStat.vue.d.ts +69 -0
- package/dist/components/LpStepper.vue.d.ts +36 -0
- package/dist/components/LpSwitch.vue.d.ts +42 -0
- package/dist/components/LpTable.vue.d.ts +124 -0
- package/dist/components/LpTableOfContents.vue.d.ts +19 -0
- package/dist/components/LpTabs.vue.d.ts +47 -0
- package/dist/components/LpTextarea.vue.d.ts +22 -0
- package/dist/components/LpThemeSwitcher.vue.d.ts +47 -0
- package/dist/components/LpTilt.vue.d.ts +31 -0
- package/dist/components/LpTimeField.vue.d.ts +24 -0
- package/dist/components/LpToaster.vue.d.ts +3 -0
- package/dist/components/LpTooltip.vue.d.ts +58 -0
- package/dist/components/LpTopologyCanvas.vue.d.ts +205 -0
- package/dist/components/LpUptimeBar.vue.d.ts +46 -0
- package/dist/components/LpWaypointEdge.vue.d.ts +33 -0
- package/dist/components/actionBar.d.ts +19 -0
- package/dist/components/address.d.ts +107 -0
- package/dist/components/chart.d.ts +180 -0
- package/dist/components/codeHighlight.d.ts +8 -0
- package/dist/components/color.d.ts +65 -0
- package/dist/components/commandSearch.d.ts +14 -0
- package/dist/components/countries-data.d.ts +2 -0
- package/dist/components/countries.d.ts +20 -0
- package/dist/components/dropdown.d.ts +29 -0
- package/dist/components/fileTree.d.ts +79 -0
- package/dist/components/lightbox.d.ts +24 -0
- package/dist/components/modalDepth.d.ts +11 -0
- package/dist/components/sidebar.d.ts +42 -0
- package/dist/composables/easing.d.ts +46 -0
- package/dist/composables/useAsyncTask.d.ts +18 -0
- package/dist/composables/useClipboard.d.ts +46 -0
- package/dist/composables/useFormDraft.d.ts +67 -0
- package/dist/composables/useGlass.d.ts +9 -0
- package/dist/composables/useHotkeys.d.ts +101 -0
- package/dist/composables/useInputFilter.d.ts +14 -0
- package/dist/composables/useMergedClass.d.ts +42 -0
- package/dist/composables/usePillTransition.d.ts +21 -0
- package/dist/composables/useReveal.d.ts +26 -0
- package/dist/composables/useRovingFocus.d.ts +49 -0
- package/dist/composables/useSettled.d.ts +26 -0
- package/dist/composables/useShift.d.ts +35 -0
- package/dist/composables/useTilt.d.ts +23 -0
- package/dist/composables/useToast.d.ts +41 -0
- package/dist/composables/useZoomPan.d.ts +58 -0
- package/dist/icons.d.ts +1 -0
- package/dist/index.d.ts +162 -0
- package/dist/layout/registry.d.ts +26 -0
- package/dist/layout/tree.d.ts +75 -0
- package/dist/layout/useLayout.d.ts +39 -0
- package/dist/theme/backdrop.d.ts +9 -0
- package/dist/theme/config.d.ts +16 -0
- package/dist/theme/define.d.ts +12 -0
- package/dist/theme/presets.d.ts +20 -0
- package/dist/theme/tokens.d.ts +75 -0
- package/dist/theme/useTheme.d.ts +46 -0
- package/package.json +2 -2
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
type __VLS_Props = {
|
|
2
|
+
open?: boolean;
|
|
3
|
+
title?: string;
|
|
4
|
+
description?: string;
|
|
5
|
+
confirmLabel?: string;
|
|
6
|
+
cancelLabel?: string;
|
|
7
|
+
/**
|
|
8
|
+
* The action destroys something. Colours the confirm button, and marks the
|
|
9
|
+
* title with a warning glyph — a destructive prompt should be recognisable
|
|
10
|
+
* before the words are read, since it is the one dialog people dismiss on
|
|
11
|
+
* reflex.
|
|
12
|
+
*/
|
|
13
|
+
danger?: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Override the marker: any iconify name, or `""` to leave the title plain —
|
|
16
|
+
* for a `danger` action whose dialog body already carries the warning and
|
|
17
|
+
* would otherwise state it twice.
|
|
18
|
+
*
|
|
19
|
+
* A string rather than `string | false`, deliberately: a union including
|
|
20
|
+
* Boolean makes Vue boolean-cast the prop, so an absent `icon` would arrive
|
|
21
|
+
* as `false` and be indistinguishable from a caller suppressing the marker.
|
|
22
|
+
*/
|
|
23
|
+
icon?: string;
|
|
24
|
+
/**
|
|
25
|
+
* The confirm action is in flight: the button disables and swaps to
|
|
26
|
+
* `loadingLabel`, and confirming no longer closes the dialog — the owner
|
|
27
|
+
* closes it once the work settles, so a failure can stay on screen.
|
|
28
|
+
*/
|
|
29
|
+
loading?: boolean;
|
|
30
|
+
loadingLabel?: string;
|
|
31
|
+
/** Frosted glass panel, passed to LpModal. Follows `provideGlass` when unset. */
|
|
32
|
+
glass?: boolean;
|
|
33
|
+
};
|
|
34
|
+
declare var __VLS_16: {};
|
|
35
|
+
type __VLS_Slots = {} & {
|
|
36
|
+
default?: (props: typeof __VLS_16) => any;
|
|
37
|
+
};
|
|
38
|
+
declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
|
|
39
|
+
cancel: () => any;
|
|
40
|
+
"update:open": (value: boolean) => any;
|
|
41
|
+
confirm: () => any;
|
|
42
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
43
|
+
onCancel?: (() => any) | undefined;
|
|
44
|
+
"onUpdate:open"?: ((value: boolean) => any) | undefined;
|
|
45
|
+
onConfirm?: (() => any) | undefined;
|
|
46
|
+
}>, {
|
|
47
|
+
glass: boolean;
|
|
48
|
+
confirmLabel: string;
|
|
49
|
+
cancelLabel: string;
|
|
50
|
+
loadingLabel: string;
|
|
51
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
52
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
53
|
+
declare const _default: typeof __VLS_export;
|
|
54
|
+
export default _default;
|
|
55
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
56
|
+
new (): {
|
|
57
|
+
$slots: S;
|
|
58
|
+
};
|
|
59
|
+
};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export interface ContextMenuItemDef {
|
|
2
|
+
label: string;
|
|
3
|
+
icon?: string;
|
|
4
|
+
/** Right-aligned hint, e.g. "⌘C". */
|
|
5
|
+
shortcut?: string;
|
|
6
|
+
danger?: boolean;
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
separatorBefore?: boolean;
|
|
9
|
+
onSelect?: () => void;
|
|
10
|
+
/** Nested submenu. When present, onSelect is ignored. */
|
|
11
|
+
children?: ContextMenuItemDef[];
|
|
12
|
+
/**
|
|
13
|
+
* Renders as a tick-box rather than a plain item, and the menu stays open on
|
|
14
|
+
* select. For the lists where the point is to set several at once — which
|
|
15
|
+
* columns to show, which values to filter by — and closing after each one
|
|
16
|
+
* would mean reopening the menu for every tick.
|
|
17
|
+
*/
|
|
18
|
+
checked?: boolean;
|
|
19
|
+
}
|
|
20
|
+
type __VLS_Props = {
|
|
21
|
+
items: ContextMenuItemDef[];
|
|
22
|
+
/**
|
|
23
|
+
* Keep the reka menu mounted even while `items` is momentarily empty. Use when
|
|
24
|
+
* the items are resolved on the right-click itself (e.g. a list that figures
|
|
25
|
+
* out which row was clicked): without this the trigger would still be in
|
|
26
|
+
* native-menu mode on that first click and swallow it.
|
|
27
|
+
*/
|
|
28
|
+
always?: boolean;
|
|
29
|
+
};
|
|
30
|
+
declare var __VLS_1: {}, __VLS_18: {};
|
|
31
|
+
type __VLS_Slots = {} & {
|
|
32
|
+
default?: (props: typeof __VLS_1) => any;
|
|
33
|
+
} & {
|
|
34
|
+
default?: (props: typeof __VLS_18) => any;
|
|
35
|
+
};
|
|
36
|
+
declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
37
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
38
|
+
declare const _default: typeof __VLS_export;
|
|
39
|
+
export default _default;
|
|
40
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
41
|
+
new (): {
|
|
42
|
+
$slots: S;
|
|
43
|
+
};
|
|
44
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
type __VLS_Props = {
|
|
2
|
+
/** Selected date "YYYY-MM-DD" (v-model). */
|
|
3
|
+
modelValue?: string;
|
|
4
|
+
placeholder?: string;
|
|
5
|
+
min?: string;
|
|
6
|
+
max?: string;
|
|
7
|
+
isDisabled?: (iso: string) => boolean;
|
|
8
|
+
clearable?: boolean;
|
|
9
|
+
disabled?: boolean;
|
|
10
|
+
invalid?: boolean;
|
|
11
|
+
size?: "sm" | "md" | "lg";
|
|
12
|
+
/** Intl format for the displayed date. */
|
|
13
|
+
format?: Intl.DateTimeFormatOptions;
|
|
14
|
+
/** Also pick a minute; the model becomes "YYYY-MM-DDTHH:mm". */
|
|
15
|
+
time?: boolean;
|
|
16
|
+
/** Time a freshly picked day starts at, "HH:mm". */
|
|
17
|
+
defaultTime?: string;
|
|
18
|
+
/** Label of the button that closes the popover in `time` mode. */
|
|
19
|
+
doneLabel?: string;
|
|
20
|
+
};
|
|
21
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
|
|
22
|
+
"update:modelValue": (value: string | undefined) => any;
|
|
23
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
24
|
+
"onUpdate:modelValue"?: ((value: string | undefined) => any) | undefined;
|
|
25
|
+
}>, {
|
|
26
|
+
size: "sm" | "md" | "lg";
|
|
27
|
+
format: Intl.DateTimeFormatOptions;
|
|
28
|
+
placeholder: string;
|
|
29
|
+
defaultTime: string;
|
|
30
|
+
doneLabel: string;
|
|
31
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
32
|
+
declare const _default: typeof __VLS_export;
|
|
33
|
+
export default _default;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
declare const _default: typeof __VLS_export;
|
|
2
|
+
export default _default;
|
|
3
|
+
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
4
|
+
/** Controlled open state. Omit to let the component own it (with `defaultOpen`). */
|
|
5
|
+
open?: boolean;
|
|
6
|
+
defaultOpen?: boolean;
|
|
7
|
+
/** Trigger label (or use the #trigger slot for richer content). */
|
|
8
|
+
label?: string;
|
|
9
|
+
/** Optional iconify name shown left of the label. */
|
|
10
|
+
icon?: string;
|
|
11
|
+
/**
|
|
12
|
+
* On open, smooth-scroll the block to the top of the nearest scroll
|
|
13
|
+
* container so its content isn't left below the fold. Fires immediately,
|
|
14
|
+
* in parallel with the expand.
|
|
15
|
+
*/
|
|
16
|
+
scrollIntoView?: boolean;
|
|
17
|
+
}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
|
|
18
|
+
"update:open": (value: boolean) => any;
|
|
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<{
|
|
34
|
+
"onUpdate:open"?: ((value: boolean) => any) | undefined;
|
|
35
|
+
}>, {
|
|
36
|
+
defaultOpen: boolean;
|
|
37
|
+
scrollIntoView: boolean;
|
|
38
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
|
|
39
|
+
trigger?: (props: {}) => any;
|
|
40
|
+
} & {
|
|
41
|
+
default?: (props: {}) => any;
|
|
42
|
+
}>;
|
|
43
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
44
|
+
new (): {
|
|
45
|
+
$slots: S;
|
|
46
|
+
};
|
|
47
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
type __VLS_Props = {
|
|
2
|
+
vertical?: boolean;
|
|
3
|
+
label?: string;
|
|
4
|
+
};
|
|
5
|
+
declare var __VLS_1: {};
|
|
6
|
+
type __VLS_Slots = {} & {
|
|
7
|
+
default?: (props: typeof __VLS_1) => any;
|
|
8
|
+
};
|
|
9
|
+
declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
10
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
11
|
+
declare const _default: typeof __VLS_export;
|
|
12
|
+
export default _default;
|
|
13
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
14
|
+
new (): {
|
|
15
|
+
$slots: S;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
declare const _default: typeof __VLS_export;
|
|
2
|
+
export default _default;
|
|
3
|
+
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
4
|
+
open?: boolean;
|
|
5
|
+
/** Edge the drawer attaches to. `side` is a back-compat alias (left/right). */
|
|
6
|
+
direction?: "left" | "right" | "top" | "bottom";
|
|
7
|
+
side?: "left" | "right";
|
|
8
|
+
title?: string;
|
|
9
|
+
description?: string;
|
|
10
|
+
/** Size preset along the drawer's main axis (width for left/right, height for top/bottom). */
|
|
11
|
+
size?: "sm" | "md" | "lg" | "xl";
|
|
12
|
+
/** Explicit size override (any CSS length), wins over `size`. */
|
|
13
|
+
width?: string;
|
|
14
|
+
/** Drag-to-dismiss + click-outside. Set false to force a controlled close. */
|
|
15
|
+
dismissible?: boolean;
|
|
16
|
+
/** Fractions (0–1) or px strings the drawer snaps between, nearest edge first. */
|
|
17
|
+
snapPoints?: (number | string)[];
|
|
18
|
+
/** Show the drag handle (auto-on for bottom/top sheets). */
|
|
19
|
+
handle?: boolean;
|
|
20
|
+
/** Only the handle initiates a drag — frees inner content to scroll. */
|
|
21
|
+
handleOnly?: boolean;
|
|
22
|
+
/** Scale the [vaul-drawer-wrapper] background while open. */
|
|
23
|
+
scaleBackground?: boolean;
|
|
24
|
+
/** Drag fraction (0–1) past which a release dismisses. */
|
|
25
|
+
closeThreshold?: number;
|
|
26
|
+
/**
|
|
27
|
+
* Auto-tag interactive descendants (input, textarea, select, button, links,
|
|
28
|
+
* [contenteditable]) with data-vaul-no-drag so a drag can't start on them —
|
|
29
|
+
* you can select text / use controls without dragging the drawer. On by
|
|
30
|
+
* default; the drawer still drags from empty space, the handle and header.
|
|
31
|
+
*/
|
|
32
|
+
noDragControls?: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Mark the entire body as non-draggable: the drawer then only drags from the
|
|
35
|
+
* handle/header. Stronger than noDragControls — use for form-heavy drawers.
|
|
36
|
+
*/
|
|
37
|
+
noDragContent?: boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Open by dragging in from the screen edge (Discord-style). A touch that
|
|
40
|
+
* starts within `edgeSize` of the edge and travels inward drags a preview of
|
|
41
|
+
* the panel (with its content) under the finger; a release past
|
|
42
|
+
* `edgeOpenThreshold`, or a quick flick, opens the drawer. Nothing is laid
|
|
43
|
+
* over the edge, so taps there still reach the page. Left/right drawers only.
|
|
44
|
+
*/
|
|
45
|
+
edgeOpen?: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Tailwind breakpoint at and above which the edge pull is ignored. Pass the
|
|
48
|
+
* same breakpoint at which the host switches to the drawer (LpSidebar
|
|
49
|
+
* does), so a wide touch screen with the rail visible doesn't pull it too.
|
|
50
|
+
*/
|
|
51
|
+
edgeBreakpoint?: "sm" | "md" | "lg" | "xl";
|
|
52
|
+
/** Distance (px) from the edge within which a touch can start a pull. */
|
|
53
|
+
edgeSize?: number;
|
|
54
|
+
/** Fraction (0–1) of the panel width the pull must reach to open on release. */
|
|
55
|
+
edgeOpenThreshold?: number;
|
|
56
|
+
/**
|
|
57
|
+
* Let the user drag the inner edge to resize the panel (horizontal drawers
|
|
58
|
+
* only — e.g. a logs panel whose long lines overflow). The new size is kept
|
|
59
|
+
* for the session. Min/max bound the drag.
|
|
60
|
+
*/
|
|
61
|
+
resizable?: boolean;
|
|
62
|
+
/** Min main-axis size while resizing (any CSS length). Default 22rem. */
|
|
63
|
+
minSize?: string;
|
|
64
|
+
/** Max main-axis size while resizing (any CSS length). Default 96vw. */
|
|
65
|
+
maxSize?: string;
|
|
66
|
+
/**
|
|
67
|
+
* Frosted glass instead of a solid panel: the page shows through,
|
|
68
|
+
* blurred, under a lighter scrim (.lp-glass-overlay, .lp-scrim--light).
|
|
69
|
+
* A look, not a behaviour, so it is the app's call: unset follows
|
|
70
|
+
* `provideGlass`, and without one it is off.
|
|
71
|
+
*/
|
|
72
|
+
glass?: boolean;
|
|
73
|
+
}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
|
|
74
|
+
"update:open": (value: boolean) => any;
|
|
75
|
+
}, string, import("vue").PublicProps, Readonly<{
|
|
76
|
+
open?: boolean;
|
|
77
|
+
/** Edge the drawer attaches to. `side` is a back-compat alias (left/right). */
|
|
78
|
+
direction?: "left" | "right" | "top" | "bottom";
|
|
79
|
+
side?: "left" | "right";
|
|
80
|
+
title?: string;
|
|
81
|
+
description?: string;
|
|
82
|
+
/** Size preset along the drawer's main axis (width for left/right, height for top/bottom). */
|
|
83
|
+
size?: "sm" | "md" | "lg" | "xl";
|
|
84
|
+
/** Explicit size override (any CSS length), wins over `size`. */
|
|
85
|
+
width?: string;
|
|
86
|
+
/** Drag-to-dismiss + click-outside. Set false to force a controlled close. */
|
|
87
|
+
dismissible?: boolean;
|
|
88
|
+
/** Fractions (0–1) or px strings the drawer snaps between, nearest edge first. */
|
|
89
|
+
snapPoints?: (number | string)[];
|
|
90
|
+
/** Show the drag handle (auto-on for bottom/top sheets). */
|
|
91
|
+
handle?: boolean;
|
|
92
|
+
/** Only the handle initiates a drag — frees inner content to scroll. */
|
|
93
|
+
handleOnly?: boolean;
|
|
94
|
+
/** Scale the [vaul-drawer-wrapper] background while open. */
|
|
95
|
+
scaleBackground?: boolean;
|
|
96
|
+
/** Drag fraction (0–1) past which a release dismisses. */
|
|
97
|
+
closeThreshold?: number;
|
|
98
|
+
/**
|
|
99
|
+
* Auto-tag interactive descendants (input, textarea, select, button, links,
|
|
100
|
+
* [contenteditable]) with data-vaul-no-drag so a drag can't start on them —
|
|
101
|
+
* you can select text / use controls without dragging the drawer. On by
|
|
102
|
+
* default; the drawer still drags from empty space, the handle and header.
|
|
103
|
+
*/
|
|
104
|
+
noDragControls?: boolean;
|
|
105
|
+
/**
|
|
106
|
+
* Mark the entire body as non-draggable: the drawer then only drags from the
|
|
107
|
+
* handle/header. Stronger than noDragControls — use for form-heavy drawers.
|
|
108
|
+
*/
|
|
109
|
+
noDragContent?: boolean;
|
|
110
|
+
/**
|
|
111
|
+
* Open by dragging in from the screen edge (Discord-style). A touch that
|
|
112
|
+
* starts within `edgeSize` of the edge and travels inward drags a preview of
|
|
113
|
+
* the panel (with its content) under the finger; a release past
|
|
114
|
+
* `edgeOpenThreshold`, or a quick flick, opens the drawer. Nothing is laid
|
|
115
|
+
* over the edge, so taps there still reach the page. Left/right drawers only.
|
|
116
|
+
*/
|
|
117
|
+
edgeOpen?: boolean;
|
|
118
|
+
/**
|
|
119
|
+
* Tailwind breakpoint at and above which the edge pull is ignored. Pass the
|
|
120
|
+
* same breakpoint at which the host switches to the drawer (LpSidebar
|
|
121
|
+
* does), so a wide touch screen with the rail visible doesn't pull it too.
|
|
122
|
+
*/
|
|
123
|
+
edgeBreakpoint?: "sm" | "md" | "lg" | "xl";
|
|
124
|
+
/** Distance (px) from the edge within which a touch can start a pull. */
|
|
125
|
+
edgeSize?: number;
|
|
126
|
+
/** Fraction (0–1) of the panel width the pull must reach to open on release. */
|
|
127
|
+
edgeOpenThreshold?: number;
|
|
128
|
+
/**
|
|
129
|
+
* Let the user drag the inner edge to resize the panel (horizontal drawers
|
|
130
|
+
* only — e.g. a logs panel whose long lines overflow). The new size is kept
|
|
131
|
+
* for the session. Min/max bound the drag.
|
|
132
|
+
*/
|
|
133
|
+
resizable?: boolean;
|
|
134
|
+
/** Min main-axis size while resizing (any CSS length). Default 22rem. */
|
|
135
|
+
minSize?: string;
|
|
136
|
+
/** Max main-axis size while resizing (any CSS length). Default 96vw. */
|
|
137
|
+
maxSize?: string;
|
|
138
|
+
/**
|
|
139
|
+
* Frosted glass instead of a solid panel: the page shows through,
|
|
140
|
+
* blurred, under a lighter scrim (.lp-glass-overlay, .lp-scrim--light).
|
|
141
|
+
* A look, not a behaviour, so it is the app's call: unset follows
|
|
142
|
+
* `provideGlass`, and without one it is off.
|
|
143
|
+
*/
|
|
144
|
+
glass?: boolean;
|
|
145
|
+
}> & Readonly<{
|
|
146
|
+
"onUpdate:open"?: ((value: boolean) => any) | undefined;
|
|
147
|
+
}>, {
|
|
148
|
+
size: "sm" | "md" | "lg" | "xl";
|
|
149
|
+
side: "left" | "right";
|
|
150
|
+
glass: boolean;
|
|
151
|
+
dismissible: boolean;
|
|
152
|
+
noDragControls: boolean;
|
|
153
|
+
edgeSize: number;
|
|
154
|
+
edgeOpenThreshold: number;
|
|
155
|
+
minSize: string;
|
|
156
|
+
maxSize: string;
|
|
157
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
|
|
158
|
+
default?: (props: {}) => any;
|
|
159
|
+
} & {
|
|
160
|
+
title?: (props: {}) => any;
|
|
161
|
+
} & {
|
|
162
|
+
default?: (props: {}) => any;
|
|
163
|
+
} & {
|
|
164
|
+
footer?: (props: {}) => any;
|
|
165
|
+
}>;
|
|
166
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
167
|
+
new (): {
|
|
168
|
+
$slots: S;
|
|
169
|
+
};
|
|
170
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface MenuItem {
|
|
2
|
+
label: string;
|
|
3
|
+
icon?: string;
|
|
4
|
+
danger?: boolean;
|
|
5
|
+
separatorBefore?: boolean;
|
|
6
|
+
onSelect?: () => void;
|
|
7
|
+
}
|
|
8
|
+
type __VLS_Props = {
|
|
9
|
+
items: MenuItem[];
|
|
10
|
+
};
|
|
11
|
+
declare var __VLS_14: {};
|
|
12
|
+
type __VLS_Slots = {} & {
|
|
13
|
+
trigger?: (props: typeof __VLS_14) => any;
|
|
14
|
+
};
|
|
15
|
+
declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
16
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
17
|
+
declare const _default: typeof __VLS_export;
|
|
18
|
+
export default _default;
|
|
19
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
20
|
+
new (): {
|
|
21
|
+
$slots: S;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
declare const _default: typeof __VLS_export;
|
|
2
|
+
export default _default;
|
|
3
|
+
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
4
|
+
/** Same syntax as the input's: "image/*", ".yaml,.yml". */
|
|
5
|
+
accept?: string;
|
|
6
|
+
/** Take more than one at a time. */
|
|
7
|
+
multiple?: boolean;
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Also accept a paste anywhere on the page, not only while focused.
|
|
11
|
+
* Off by default: two zones both listening would each take the same
|
|
12
|
+
* screenshot, and a page with one obvious target is the case for it.
|
|
13
|
+
*/
|
|
14
|
+
pasteTarget?: boolean;
|
|
15
|
+
/** Largest file accepted, in bytes. Bigger ones are rejected, not silently
|
|
16
|
+
* dropped — a picture that vanishes reads as a broken uploader. */
|
|
17
|
+
maxBytes?: number;
|
|
18
|
+
icon?: string;
|
|
19
|
+
title?: string;
|
|
20
|
+
hint?: string;
|
|
21
|
+
/**
|
|
22
|
+
* How the well sits against what holds it. A drop target reads as a hole
|
|
23
|
+
* in the surface, not a tile on top of it, so the default is darker than
|
|
24
|
+
* the card — which is what a dashed border is already suggesting.
|
|
25
|
+
* `flush` for a zone that fills a panel of its own, `soft` when it sits
|
|
26
|
+
* directly on the page background and needs to lift off it instead.
|
|
27
|
+
*/
|
|
28
|
+
tone?: "sunken" | "flush" | "soft";
|
|
29
|
+
/** Draw the entrance when the zone first comes into view. */
|
|
30
|
+
animate?: boolean;
|
|
31
|
+
}, {
|
|
32
|
+
browse: () => void | undefined;
|
|
33
|
+
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
|
|
34
|
+
files: (files: File[]) => any;
|
|
35
|
+
rejected: (reason: {
|
|
36
|
+
file: File;
|
|
37
|
+
cause: "type" | "size";
|
|
38
|
+
}[]) => any;
|
|
39
|
+
}, string, import("vue").PublicProps, Readonly<{
|
|
40
|
+
/** Same syntax as the input's: "image/*", ".yaml,.yml". */
|
|
41
|
+
accept?: string;
|
|
42
|
+
/** Take more than one at a time. */
|
|
43
|
+
multiple?: boolean;
|
|
44
|
+
disabled?: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Also accept a paste anywhere on the page, not only while focused.
|
|
47
|
+
* Off by default: two zones both listening would each take the same
|
|
48
|
+
* screenshot, and a page with one obvious target is the case for it.
|
|
49
|
+
*/
|
|
50
|
+
pasteTarget?: boolean;
|
|
51
|
+
/** Largest file accepted, in bytes. Bigger ones are rejected, not silently
|
|
52
|
+
* dropped — a picture that vanishes reads as a broken uploader. */
|
|
53
|
+
maxBytes?: number;
|
|
54
|
+
icon?: string;
|
|
55
|
+
title?: string;
|
|
56
|
+
hint?: string;
|
|
57
|
+
/**
|
|
58
|
+
* How the well sits against what holds it. A drop target reads as a hole
|
|
59
|
+
* in the surface, not a tile on top of it, so the default is darker than
|
|
60
|
+
* the card — which is what a dashed border is already suggesting.
|
|
61
|
+
* `flush` for a zone that fills a panel of its own, `soft` when it sits
|
|
62
|
+
* directly on the page background and needs to lift off it instead.
|
|
63
|
+
*/
|
|
64
|
+
tone?: "sunken" | "flush" | "soft";
|
|
65
|
+
/** Draw the entrance when the zone first comes into view. */
|
|
66
|
+
animate?: boolean;
|
|
67
|
+
}> & Readonly<{
|
|
68
|
+
onFiles?: ((files: File[]) => any) | undefined;
|
|
69
|
+
onRejected?: ((reason: {
|
|
70
|
+
file: File;
|
|
71
|
+
cause: "type" | "size";
|
|
72
|
+
}[]) => any) | undefined;
|
|
73
|
+
}>, {
|
|
74
|
+
title: string;
|
|
75
|
+
animate: boolean;
|
|
76
|
+
icon: string;
|
|
77
|
+
accept: string;
|
|
78
|
+
multiple: boolean;
|
|
79
|
+
hint: string;
|
|
80
|
+
tone: "sunken" | "flush" | "soft";
|
|
81
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
|
|
82
|
+
default?: (props: {
|
|
83
|
+
over: boolean;
|
|
84
|
+
}) => any;
|
|
85
|
+
}>;
|
|
86
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
87
|
+
new (): {
|
|
88
|
+
$slots: S;
|
|
89
|
+
};
|
|
90
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
declare const _default: typeof __VLS_export;
|
|
2
|
+
export default _default;
|
|
3
|
+
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
4
|
+
icon?: string;
|
|
5
|
+
title: string;
|
|
6
|
+
description?: string;
|
|
7
|
+
/**
|
|
8
|
+
* Tightens the block for empty states nested inside a card or a panel,
|
|
9
|
+
* where the full-page padding would dwarf its container.
|
|
10
|
+
*/
|
|
11
|
+
compact?: boolean;
|
|
12
|
+
}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{
|
|
13
|
+
icon?: string;
|
|
14
|
+
title: string;
|
|
15
|
+
description?: string;
|
|
16
|
+
/**
|
|
17
|
+
* Tightens the block for empty states nested inside a card or a panel,
|
|
18
|
+
* where the full-page padding would dwarf its container.
|
|
19
|
+
*/
|
|
20
|
+
compact?: boolean;
|
|
21
|
+
}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
|
|
22
|
+
default?: (props: {}) => any;
|
|
23
|
+
}>;
|
|
24
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
25
|
+
new (): {
|
|
26
|
+
$slots: S;
|
|
27
|
+
};
|
|
28
|
+
};
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { type FileNode } from "./fileTree";
|
|
2
|
+
export type { FileNode } from "./fileTree";
|
|
3
|
+
/** Rolled-up stats for the ticked entries — what a backup picker summarises. */
|
|
4
|
+
export interface FileTreeSummary {
|
|
5
|
+
/** Ticked files (directories excluded — they're containers, not payload). */
|
|
6
|
+
files: number;
|
|
7
|
+
/** Ticked directories. */
|
|
8
|
+
dirs: number;
|
|
9
|
+
/** Total bytes across ticked files, or undefined when no size is known. */
|
|
10
|
+
bytes?: number;
|
|
11
|
+
/** `bytes` pre-formatted ("2.4 GB"), or "—". */
|
|
12
|
+
sizeLabel: string;
|
|
13
|
+
}
|
|
14
|
+
declare const _default: typeof __VLS_export;
|
|
15
|
+
export default _default;
|
|
16
|
+
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
17
|
+
nodes: FileNode[];
|
|
18
|
+
/** Selected node id (v-model:selected). */
|
|
19
|
+
selected?: string;
|
|
20
|
+
/** Expanded directory ids (v-model:expanded). Omit to let the tree own it. */
|
|
21
|
+
expanded?: string[];
|
|
22
|
+
/** Directory ids currently fetching children — shows a spinner on the row. */
|
|
23
|
+
loadingIds?: string[];
|
|
24
|
+
/**
|
|
25
|
+
* Multi-select mode: every row gets a tri-state checkbox and ticking a
|
|
26
|
+
* directory cascades to its loaded subtree. This is the mode for "pick what
|
|
27
|
+
* to back up" — `selected` stays independent (it's the highlighted row).
|
|
28
|
+
*/
|
|
29
|
+
checkable?: boolean;
|
|
30
|
+
/** Ticked node ids (v-model:checked). */
|
|
31
|
+
checked?: string[];
|
|
32
|
+
/** Right-aligned size column (directories roll up their subtree). */
|
|
33
|
+
showSize?: boolean;
|
|
34
|
+
/** Right-aligned last-modified column. */
|
|
35
|
+
showModified?: boolean;
|
|
36
|
+
/** Directories first, then by name. Turn off to keep the caller's order. */
|
|
37
|
+
sort?: boolean;
|
|
38
|
+
/** Row icon size in px. */
|
|
39
|
+
iconSize?: number;
|
|
40
|
+
/** Skeleton rows while the initial listing loads. */
|
|
41
|
+
loading?: boolean;
|
|
42
|
+
skeletonRows?: number;
|
|
43
|
+
/** Empty-state copy when `nodes` is empty. */
|
|
44
|
+
emptyLabel?: string;
|
|
45
|
+
emptyDescription?: string;
|
|
46
|
+
}, {
|
|
47
|
+
reveal: (id: string) => void;
|
|
48
|
+
expandAll: () => void;
|
|
49
|
+
collapseAll: () => void;
|
|
50
|
+
checkAll: () => void;
|
|
51
|
+
clearChecked: () => void;
|
|
52
|
+
summary: import("vue").ComputedRef<FileTreeSummary>;
|
|
53
|
+
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
|
|
54
|
+
expand: (node: FileNode) => any;
|
|
55
|
+
select: (node: FileNode) => any;
|
|
56
|
+
summary: (summary: FileTreeSummary) => any;
|
|
57
|
+
open: (node: FileNode) => any;
|
|
58
|
+
collapse: (node: FileNode) => any;
|
|
59
|
+
"update:selected": (id: string) => any;
|
|
60
|
+
"update:expanded": (ids: string[]) => any;
|
|
61
|
+
"update:checked": (ids: string[]) => any;
|
|
62
|
+
}, string, import("vue").PublicProps, Readonly<{
|
|
63
|
+
nodes: FileNode[];
|
|
64
|
+
/** Selected node id (v-model:selected). */
|
|
65
|
+
selected?: string;
|
|
66
|
+
/** Expanded directory ids (v-model:expanded). Omit to let the tree own it. */
|
|
67
|
+
expanded?: string[];
|
|
68
|
+
/** Directory ids currently fetching children — shows a spinner on the row. */
|
|
69
|
+
loadingIds?: string[];
|
|
70
|
+
/**
|
|
71
|
+
* Multi-select mode: every row gets a tri-state checkbox and ticking a
|
|
72
|
+
* directory cascades to its loaded subtree. This is the mode for "pick what
|
|
73
|
+
* to back up" — `selected` stays independent (it's the highlighted row).
|
|
74
|
+
*/
|
|
75
|
+
checkable?: boolean;
|
|
76
|
+
/** Ticked node ids (v-model:checked). */
|
|
77
|
+
checked?: string[];
|
|
78
|
+
/** Right-aligned size column (directories roll up their subtree). */
|
|
79
|
+
showSize?: boolean;
|
|
80
|
+
/** Right-aligned last-modified column. */
|
|
81
|
+
showModified?: boolean;
|
|
82
|
+
/** Directories first, then by name. Turn off to keep the caller's order. */
|
|
83
|
+
sort?: boolean;
|
|
84
|
+
/** Row icon size in px. */
|
|
85
|
+
iconSize?: number;
|
|
86
|
+
/** Skeleton rows while the initial listing loads. */
|
|
87
|
+
loading?: boolean;
|
|
88
|
+
skeletonRows?: number;
|
|
89
|
+
/** Empty-state copy when `nodes` is empty. */
|
|
90
|
+
emptyLabel?: string;
|
|
91
|
+
emptyDescription?: string;
|
|
92
|
+
}> & Readonly<{
|
|
93
|
+
onExpand?: ((node: FileNode) => any) | undefined;
|
|
94
|
+
onSelect?: ((node: FileNode) => any) | undefined;
|
|
95
|
+
onSummary?: ((summary: FileTreeSummary) => any) | undefined;
|
|
96
|
+
onOpen?: ((node: FileNode) => any) | undefined;
|
|
97
|
+
onCollapse?: ((node: FileNode) => any) | undefined;
|
|
98
|
+
"onUpdate:selected"?: ((id: string) => any) | undefined;
|
|
99
|
+
"onUpdate:expanded"?: ((ids: string[]) => any) | undefined;
|
|
100
|
+
"onUpdate:checked"?: ((ids: string[]) => any) | undefined;
|
|
101
|
+
}>, {
|
|
102
|
+
sort: boolean;
|
|
103
|
+
loading: boolean;
|
|
104
|
+
skeletonRows: number;
|
|
105
|
+
emptyLabel: string;
|
|
106
|
+
iconSize: number;
|
|
107
|
+
checkable: boolean;
|
|
108
|
+
showSize: boolean;
|
|
109
|
+
showModified: boolean;
|
|
110
|
+
emptyDescription: string;
|
|
111
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
|
|
112
|
+
/** Replace the row's label (icons, chevron and indent stay). */
|
|
113
|
+
row(props: {
|
|
114
|
+
node: FileNode;
|
|
115
|
+
depth: number;
|
|
116
|
+
expanded: boolean;
|
|
117
|
+
selected: boolean;
|
|
118
|
+
}): unknown;
|
|
119
|
+
/** Footer under the tree, handed the live selection stats. */
|
|
120
|
+
summary(props: FileTreeSummary): unknown;
|
|
121
|
+
}>;
|
|
122
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
123
|
+
new (): {
|
|
124
|
+
$slots: S;
|
|
125
|
+
};
|
|
126
|
+
};
|