@leavepulse/ui 0.41.0 → 0.43.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/{LpCommandPalette-DyT6aGdW.css → LpCommandPalette-s_kKuCRf.css} +21 -21
- package/dist/chunks/{LpAddressInput-CMjaPQVw.js → LpAddressInput-B-Zvxsn7.js} +1 -1
- package/dist/chunks/{LpAppShell-Bcv6EhqU.js → LpAppShell-BGQVIY-3.js} +1 -1
- package/dist/chunks/{LpConfirmDialog-BNAvOR24.js → LpConfirmDialog-Q-bxff8z.js} +1 -1
- package/dist/chunks/{LpDrawer-DgaS2s2i.js → LpDrawer-BZ6k3hvo.js} +3 -3
- package/dist/chunks/{LpLightbox-oLqyjOln.js → LpLightbox-2sYVMY-S.js} +12 -4
- package/dist/chunks/{LpMediaGallery-Cid7PGYx.js → LpMediaGallery-FF-NquIo.js} +1 -1
- package/dist/chunks/{LpModal-8bja5bWS.js → LpModal-Bt0pQCI_.js} +2 -2
- package/dist/chunks/{LpModalNav-w9kfwHqO.js → LpModalNav-YaifHrXC.js} +2 -2
- package/dist/chunks/{LpSidebar-DlTn5nXc.js → LpSidebar-ClBUwoEz.js} +1 -1
- package/dist/components/LpAddressInput.vue.js +1 -1
- package/dist/components/LpAppShell.vue.js +1 -1
- package/dist/components/LpCommandPalette.vue.js +124 -115
- package/dist/components/LpConfirmDialog.vue.js +1 -1
- package/dist/components/LpDrawer.vue.js +1 -1
- package/dist/components/LpLightbox.vue.js +1 -1
- package/dist/components/LpMediaGallery.vue.js +1 -1
- package/dist/components/LpModal.vue.js +1 -1
- package/dist/components/LpModalNav.vue.js +1 -1
- package/dist/components/LpShortcutsDialog.vue.js +1 -1
- package/dist/components/LpSidebar.vue.js +1 -1
- package/dist/components/commandSearch.js +66 -0
- package/dist/components/modalDepth.js +3 -2
- package/dist/composables/useHotkeys.js +41 -21
- package/dist/index.js +13 -9
- package/package.json +3 -3
- package/src/components/LpCommandPalette.vue +81 -99
- package/src/components/LpDrawer.vue +3 -3
- package/src/components/LpLightbox.vue +11 -5
- package/src/components/LpModal.vue +2 -2
- package/src/components/commandSearch.ts +92 -0
- package/src/components/modalDepth.ts +4 -48
- package/src/composables/useHotkeys.ts +54 -33
- package/src/index.ts +2 -0
- package/src/tokens/tokens.css +13 -19
- package/dist/component-names.d.ts +0 -1
- package/dist/components/LayoutCanvas.vue.d.ts +0 -28
- package/dist/components/LayoutNode.vue.d.ts +0 -40
- package/dist/components/LpActionBar.vue.d.ts +0 -84
- package/dist/components/LpAddressInput.vue.d.ts +0 -70
- package/dist/components/LpAlert.vue.d.ts +0 -44
- package/dist/components/LpAppShell.vue.d.ts +0 -123
- package/dist/components/LpAutocomplete.vue.d.ts +0 -50
- package/dist/components/LpAvatar.vue.d.ts +0 -34
- package/dist/components/LpBadge.vue.d.ts +0 -20
- package/dist/components/LpBreadcrumbs.vue.d.ts +0 -32
- package/dist/components/LpButton.vue.d.ts +0 -113
- package/dist/components/LpCalendar.vue.d.ts +0 -29
- package/dist/components/LpCard.vue.d.ts +0 -60
- package/dist/components/LpChart.vue.d.ts +0 -130
- package/dist/components/LpCheckbox.vue.d.ts +0 -32
- package/dist/components/LpCodeBlock.vue.d.ts +0 -58
- package/dist/components/LpColorPicker.vue.d.ts +0 -124
- package/dist/components/LpCommandPalette.vue.d.ts +0 -206
- package/dist/components/LpConfirmDialog.vue.d.ts +0 -59
- package/dist/components/LpContextMenu.vue.d.ts +0 -44
- package/dist/components/LpDatePicker.vue.d.ts +0 -33
- package/dist/components/LpDisclosure.vue.d.ts +0 -47
- package/dist/components/LpDivider.vue.d.ts +0 -17
- package/dist/components/LpDrawer.vue.d.ts +0 -170
- package/dist/components/LpDropdownMenu.vue.d.ts +0 -23
- package/dist/components/LpDropzone.vue.d.ts +0 -90
- package/dist/components/LpEmptyState.vue.d.ts +0 -28
- package/dist/components/LpFileTree.vue.d.ts +0 -126
- package/dist/components/LpFileTreeNode.vue.d.ts +0 -62
- package/dist/components/LpFormField.vue.d.ts +0 -24
- package/dist/components/LpIcon.vue.d.ts +0 -8
- package/dist/components/LpImageEditor.vue.d.ts +0 -106
- package/dist/components/LpInfraNode.vue.d.ts +0 -65
- package/dist/components/LpInput.vue.d.ts +0 -80
- package/dist/components/LpLaneNode.vue.d.ts +0 -24
- package/dist/components/LpLightbox.vue.d.ts +0 -62
- package/dist/components/LpLink.vue.d.ts +0 -93
- package/dist/components/LpLogViewer.vue.d.ts +0 -153
- package/dist/components/LpMapPicker.vue.d.ts +0 -59
- package/dist/components/LpMediaGallery.vue.d.ts +0 -80
- package/dist/components/LpModal.vue.d.ts +0 -66
- package/dist/components/LpModalNav.vue.d.ts +0 -66
- package/dist/components/LpNotificationBell.vue.d.ts +0 -85
- package/dist/components/LpNumberField.vue.d.ts +0 -21
- package/dist/components/LpNumberFlow.vue.d.ts +0 -35
- package/dist/components/LpOtpInput.vue.d.ts +0 -39
- package/dist/components/LpPagination.vue.d.ts +0 -35
- package/dist/components/LpPasswordInput.vue.d.ts +0 -36
- package/dist/components/LpPhoneInput.vue.d.ts +0 -49
- package/dist/components/LpPie.vue.d.ts +0 -196
- package/dist/components/LpPopover.vue.d.ts +0 -34
- package/dist/components/LpProgress.vue.d.ts +0 -66
- package/dist/components/LpRadio.vue.d.ts +0 -18
- package/dist/components/LpRadioGroup.vue.d.ts +0 -26
- package/dist/components/LpRollingText.vue.d.ts +0 -33
- package/dist/components/LpScrollArea.vue.d.ts +0 -28
- package/dist/components/LpSection.vue.d.ts +0 -120
- package/dist/components/LpSegmented.vue.d.ts +0 -30
- package/dist/components/LpSelect.vue.d.ts +0 -47
- package/dist/components/LpServiceNode.vue.d.ts +0 -14
- package/dist/components/LpShift.vue.d.ts +0 -36
- package/dist/components/LpShortcutsDialog.vue.d.ts +0 -24
- package/dist/components/LpSidebar.vue.d.ts +0 -146
- package/dist/components/LpSidebarNav.vue.d.ts +0 -54
- package/dist/components/LpSkeleton.vue.d.ts +0 -16
- package/dist/components/LpSlider.vue.d.ts +0 -30
- package/dist/components/LpSparkline.vue.d.ts +0 -48
- package/dist/components/LpStat.vue.d.ts +0 -69
- package/dist/components/LpStepper.vue.d.ts +0 -36
- package/dist/components/LpSwitch.vue.d.ts +0 -42
- package/dist/components/LpTable.vue.d.ts +0 -124
- package/dist/components/LpTableOfContents.vue.d.ts +0 -19
- package/dist/components/LpTabs.vue.d.ts +0 -47
- package/dist/components/LpTextarea.vue.d.ts +0 -22
- package/dist/components/LpThemeSwitcher.vue.d.ts +0 -47
- package/dist/components/LpTilt.vue.d.ts +0 -31
- package/dist/components/LpTimeField.vue.d.ts +0 -24
- package/dist/components/LpToaster.vue.d.ts +0 -3
- package/dist/components/LpTooltip.vue.d.ts +0 -58
- package/dist/components/LpTopologyCanvas.vue.d.ts +0 -205
- package/dist/components/LpUptimeBar.vue.d.ts +0 -46
- package/dist/components/LpWaypointEdge.vue.d.ts +0 -21
- package/dist/components/actionBar.d.ts +0 -19
- package/dist/components/address.d.ts +0 -107
- package/dist/components/chart.d.ts +0 -180
- package/dist/components/codeHighlight.d.ts +0 -8
- package/dist/components/color.d.ts +0 -65
- package/dist/components/countries-data.d.ts +0 -2
- package/dist/components/countries.d.ts +0 -20
- package/dist/components/dropdown.d.ts +0 -29
- package/dist/components/fileTree.d.ts +0 -79
- package/dist/components/lightbox.d.ts +0 -24
- package/dist/components/modalDepth.d.ts +0 -15
- package/dist/components/sidebar.d.ts +0 -42
- package/dist/composables/easing.d.ts +0 -46
- package/dist/composables/useAsyncTask.d.ts +0 -18
- package/dist/composables/useClipboard.d.ts +0 -46
- package/dist/composables/useFormDraft.d.ts +0 -67
- package/dist/composables/useGlass.d.ts +0 -9
- package/dist/composables/useHotkeys.d.ts +0 -99
- package/dist/composables/useInputFilter.d.ts +0 -14
- package/dist/composables/useMergedClass.d.ts +0 -42
- package/dist/composables/usePillTransition.d.ts +0 -21
- package/dist/composables/useReveal.d.ts +0 -26
- package/dist/composables/useRovingFocus.d.ts +0 -49
- package/dist/composables/useSettled.d.ts +0 -26
- package/dist/composables/useShift.d.ts +0 -35
- package/dist/composables/useTilt.d.ts +0 -23
- package/dist/composables/useToast.d.ts +0 -41
- package/dist/composables/useZoomPan.d.ts +0 -58
- package/dist/icons.d.ts +0 -1
- package/dist/index.d.ts +0 -160
- package/dist/layout/registry.d.ts +0 -26
- package/dist/layout/tree.d.ts +0 -75
- package/dist/layout/useLayout.d.ts +0 -39
- package/dist/theme/backdrop.d.ts +0 -9
- package/dist/theme/config.d.ts +0 -16
- package/dist/theme/define.d.ts +0 -12
- package/dist/theme/presets.d.ts +0 -20
- package/dist/theme/tokens.d.ts +0 -75
- package/dist/theme/useTheme.d.ts +0 -46
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/** Enter/exit animation for state-open panels (Select, Popover, Dropdown, …). */
|
|
2
|
-
export declare const POPOVER_ANIM: string;
|
|
3
|
-
/** Tooltip variant: faster, and reka uses `delayed-open` instead of `open`. */
|
|
4
|
-
export declare const TOOLTIP_ANIM: string;
|
|
5
|
-
/**
|
|
6
|
-
* The bare floating surface (border, raised overlay fill, blur, shadow) without
|
|
7
|
-
* any animation — pair with POPOVER_ANIM or TOOLTIP_ANIM. `group` lets option
|
|
8
|
-
* rows read the panel's data-side for the cascade direction.
|
|
9
|
-
*/
|
|
10
|
-
export declare const PANEL_SURFACE = "group rounded-control border border-line bg-surface-overlay shadow-panel backdrop-blur";
|
|
11
|
-
/**
|
|
12
|
-
* Surface + the state-open animation. Add width/padding/overflow and the z-layer
|
|
13
|
-
* at the call-site (z-layer omitted so tooltips can use z-(--z-tooltip) while the
|
|
14
|
-
* rest use z-(--z-popover)).
|
|
15
|
-
*/
|
|
16
|
-
export declare const POPOVER_PANEL: string;
|
|
17
|
-
/**
|
|
18
|
-
* A selectable option row: layout, highlight state, and the staggered cascade.
|
|
19
|
-
* Cascades downward by default and upward when the panel is flipped above the
|
|
20
|
-
* trigger (group-data-[side=top]). Pair with an inline animationDelay for the
|
|
21
|
-
* stagger. `flex` + gap are included; add justify/extra layout if needed.
|
|
22
|
-
*/
|
|
23
|
-
export declare const OPTION_ITEM: string;
|
|
24
|
-
/**
|
|
25
|
-
* Micro-animation for a close / clear "✕" icon: a quarter-turn on hover and a
|
|
26
|
-
* dip on press. Put on the <LpIcon>, with `group` on its button. Shared by
|
|
27
|
-
* Modal, Drawer, Toaster and the Autocomplete clear button.
|
|
28
|
-
*/
|
|
29
|
-
export declare const CLOSE_ICON: string;
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { ContextMenuItemDef } from './LpContextMenu.vue';
|
|
2
|
-
export interface FileNode {
|
|
3
|
-
/** Stable identity — use the full path when you have one. */
|
|
4
|
-
id: string;
|
|
5
|
-
name: string;
|
|
6
|
-
/** Directories can hold `children`; files are leaves. */
|
|
7
|
-
kind: "file" | "dir";
|
|
8
|
-
/** Size in bytes. Shown right-aligned when `showSize` is on. */
|
|
9
|
-
size?: number;
|
|
10
|
-
/** Last-modified time — Date, epoch ms, or a pre-formatted string. */
|
|
11
|
-
modified?: Date | number | string;
|
|
12
|
-
/** Extra right-aligned text (badge-ish), e.g. "read-only". */
|
|
13
|
-
meta?: string;
|
|
14
|
-
/**
|
|
15
|
-
* Omit on a directory to mark its children as not-yet-loaded: the row shows a
|
|
16
|
-
* chevron and emits `expand` on first open so the caller can fetch them.
|
|
17
|
-
* An empty array means "loaded, and genuinely empty".
|
|
18
|
-
*/
|
|
19
|
-
children?: FileNode[];
|
|
20
|
-
/** Override the type-derived icon. */
|
|
21
|
-
icon?: string;
|
|
22
|
-
/** Dimmed row (e.g. a git-ignored or unreadable entry). Still expandable. */
|
|
23
|
-
disabled?: boolean;
|
|
24
|
-
/** Right-click menu for this entry. */
|
|
25
|
-
menu?: ContextMenuItemDef[];
|
|
26
|
-
}
|
|
27
|
-
/** Icon for a node: explicit override → dir state → name → extension → generic. */
|
|
28
|
-
export declare function fileIcon(node: FileNode, expanded?: boolean): string;
|
|
29
|
-
/** Directories first, then case-insensitive by name — the file-manager order. */
|
|
30
|
-
export declare function sortNodes(nodes: FileNode[]): FileNode[];
|
|
31
|
-
/** Human-readable byte size — binary units, matching what file managers show. */
|
|
32
|
-
export declare function formatSize(bytes: number): string;
|
|
33
|
-
/** Short local date-time for the modified column; passes strings through. */
|
|
34
|
-
export declare function formatModified(value: Date | number | string): string;
|
|
35
|
-
/**
|
|
36
|
-
* Total size of a subtree: a directory's own `size` when the caller computed one
|
|
37
|
-
* (the common case for a server-side listing), otherwise the sum of its loaded
|
|
38
|
-
* descendants. Returns undefined when nothing along the way carries a size.
|
|
39
|
-
*/
|
|
40
|
-
export declare function subtreeSize(node: FileNode): number | undefined;
|
|
41
|
-
/** Every id in a subtree including the root — the unit a checkbox toggles. */
|
|
42
|
-
export declare function subtreeIds(node: FileNode): string[];
|
|
43
|
-
export type CheckState = "checked" | "unchecked" | "indeterminate";
|
|
44
|
-
/**
|
|
45
|
-
* A node's checkbox state derived from the checked-id set.
|
|
46
|
-
*
|
|
47
|
-
* A directory reflects its loaded children: all checked → checked, some →
|
|
48
|
-
* indeterminate. A directory whose children aren't loaded yet (or which has
|
|
49
|
-
* none) falls back to its own membership, so an unexpanded folder can still be
|
|
50
|
-
* ticked as a whole — which is exactly what a backup picker needs.
|
|
51
|
-
*/
|
|
52
|
-
export declare function checkStateOf(node: FileNode, checked: ReadonlySet<string>): CheckState;
|
|
53
|
-
/**
|
|
54
|
-
* How much of a directory's subtree is ticked, counting FILES only (folders are
|
|
55
|
-
* containers, not payload). Lets a row say "3 / 12" so a half-filled checkbox
|
|
56
|
-
* isn't the only clue that a folder is partially selected.
|
|
57
|
-
*/
|
|
58
|
-
export declare function checkedCount(node: FileNode, checked: ReadonlySet<string>): {
|
|
59
|
-
checked: number;
|
|
60
|
-
total: number;
|
|
61
|
-
};
|
|
62
|
-
/** Everything a row needs to render, precomputed once per node. */
|
|
63
|
-
export interface NodeStats {
|
|
64
|
-
state: CheckState;
|
|
65
|
-
/** Ticked files in the subtree, and how many there are in total. */
|
|
66
|
-
checked: number;
|
|
67
|
-
total: number;
|
|
68
|
-
/** Rolled-up subtree size, or undefined when nothing carries one. */
|
|
69
|
-
size?: number;
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Derive every row's state in ONE post-order pass over the tree, keyed by node
|
|
73
|
-
* id. Calling `checkStateOf`/`subtreeSize`/`checkedCount` per row instead makes
|
|
74
|
-
* each row walk its own subtree, which is quadratic on a deep tree and shows up
|
|
75
|
-
* as a stutter the moment a directory holds a few thousand files.
|
|
76
|
-
*/
|
|
77
|
-
export declare function computeStats(nodes: FileNode[], checked: ReadonlySet<string>): Map<string, NodeStats>;
|
|
78
|
-
/** Ids of every ancestor directory of `id`, so callers can reveal a deep node. */
|
|
79
|
-
export declare function ancestorIds(nodes: FileNode[], id: string): string[];
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
export interface LightboxItem {
|
|
2
|
-
/** Full-size source. */
|
|
3
|
-
src: string;
|
|
4
|
-
/** Smaller source for the filmstrip; falls back to `src`. */
|
|
5
|
-
thumb?: string;
|
|
6
|
-
/** Caption under the image, and the img alt text. */
|
|
7
|
-
title?: string;
|
|
8
|
-
/** Secondary line under the title (size, date, resolution…). */
|
|
9
|
-
description?: string;
|
|
10
|
-
/** Filename used when downloading; derived from `src` when absent. */
|
|
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;
|
|
22
|
-
}
|
|
23
|
-
/** Last path segment of a URL, or a fallback — used to name a download. */
|
|
24
|
-
export declare function fileNameOf(item: LightboxItem, fallback?: string): string;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { ComputedRef } from 'vue';
|
|
2
|
-
/**
|
|
3
|
-
* Register a dialog as open and get back the z-indexes it should paint with.
|
|
4
|
-
* The result is reactive: opening another dialog moves this one down a step.
|
|
5
|
-
*/
|
|
6
|
-
export declare function useModalLayer(): {
|
|
7
|
-
claim: () => void;
|
|
8
|
-
release: () => void;
|
|
9
|
-
layer: ComputedRef<{
|
|
10
|
-
scrim: string;
|
|
11
|
-
panel: string;
|
|
12
|
-
}>;
|
|
13
|
-
};
|
|
14
|
-
/** True while any dialog or drawer holds a level — e.g. to keep a gesture from opening another one over it. */
|
|
15
|
-
export declare function anyModalOpen(): boolean;
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { ContextMenuItemDef } from './LpContextMenu.vue';
|
|
2
|
-
export interface SidebarItem {
|
|
3
|
-
id: string;
|
|
4
|
-
label: string;
|
|
5
|
-
icon?: string;
|
|
6
|
-
/** Render as a link instead of a button. */
|
|
7
|
-
href?: string;
|
|
8
|
-
/** Count chip on the right (number or short string). */
|
|
9
|
-
badge?: number | string;
|
|
10
|
-
disabled?: boolean;
|
|
11
|
-
/** Right-click menu for this item (e.g. "Open in new tab", "Pin"). */
|
|
12
|
-
menu?: ContextMenuItemDef[];
|
|
13
|
-
/**
|
|
14
|
-
* Extra terms the sidebar's filter should match, beyond the label. For the
|
|
15
|
-
* item people look for under a name it does not carry — "Billing" found by
|
|
16
|
-
* "invoice", a page found by the feature it used to be called.
|
|
17
|
-
*/
|
|
18
|
-
keywords?: string[];
|
|
19
|
-
}
|
|
20
|
-
export interface SidebarSection {
|
|
21
|
-
/** Optional heading above the group. */
|
|
22
|
-
title?: string;
|
|
23
|
-
items: SidebarItem[];
|
|
24
|
-
/**
|
|
25
|
-
* The heading folds the group away when clicked. Needs a `title` — there is
|
|
26
|
-
* nothing to click otherwise.
|
|
27
|
-
*
|
|
28
|
-
* A long nav is read by scanning headings, not items: past a certain length
|
|
29
|
-
* every item is equally far from the eye, and folding the groups that are
|
|
30
|
-
* not today's work restores that. Which groups start folded is the app's
|
|
31
|
-
* call (see `collapsedIds`), not this component's.
|
|
32
|
-
*/
|
|
33
|
-
collapsible?: boolean;
|
|
34
|
-
/**
|
|
35
|
-
* Stable key for remembering this group's folded state. Defaults to `title`;
|
|
36
|
-
* set it when the title is translated, so the memory survives a language
|
|
37
|
-
* change.
|
|
38
|
-
*/
|
|
39
|
-
key?: string;
|
|
40
|
-
/** Icon for the heading — shown when the group is collapsible. */
|
|
41
|
-
icon?: string;
|
|
42
|
-
}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Does the OS ask for less motion?
|
|
3
|
-
*
|
|
4
|
-
* Written out in eight places before this, in two different shapes — some
|
|
5
|
-
* guarded against SSR, some not, which is a crash in a Nuxt app rather than a
|
|
6
|
-
* style difference. Anything that animates asks here.
|
|
7
|
-
*
|
|
8
|
-
* A plain function, not a reactive composable: it is read at the moment an
|
|
9
|
-
* animation starts, and a component that also needs to RE-RENDER when the
|
|
10
|
-
* setting changes mid-session should use motion-v's `useReducedMotion`.
|
|
11
|
-
*/
|
|
12
|
-
export declare const prefersReducedMotion: () => boolean;
|
|
13
|
-
/**
|
|
14
|
-
* A motion token's value, for an API that cannot take a `var()`.
|
|
15
|
-
*
|
|
16
|
-
* The Web Animations API and SVG's SMIL both want a literal easing string, so
|
|
17
|
-
* three call sites had `cubic-bezier(0.2, 0, 0, 1)` typed out — the value of
|
|
18
|
-
* `--ease-emphasized`, copied. A theme that retuned the token moved everything
|
|
19
|
-
* except those, and nothing said they were meant to match.
|
|
20
|
-
*
|
|
21
|
-
* Reading the custom property keeps them themeable. The fallback covers SSR and
|
|
22
|
-
* the frame before tokens are applied.
|
|
23
|
-
*/
|
|
24
|
-
export declare const easingToken: (name: "ease-emphasized" | "ease-travel" | "ease-settle", fallback?: string) => string;
|
|
25
|
-
/**
|
|
26
|
-
* Comes to rest — `--ease-settle`'s shape without the overshoot.
|
|
27
|
-
*
|
|
28
|
-
* Gently decelerating: the value keeps moving visibly for most of the travel
|
|
29
|
-
* instead of arriving early and then creeping. Use it wherever a figure counts
|
|
30
|
-
* up to something, so the digits keep turning across the whole duration.
|
|
31
|
-
*/
|
|
32
|
-
export declare const easeOut: (t: number) => number;
|
|
33
|
-
/**
|
|
34
|
-
* Travels a distance the eye follows — the JS form of `--ease-travel`.
|
|
35
|
-
*
|
|
36
|
-
* Nearly linear, and deliberately so: an ease-out spends about half its
|
|
37
|
-
* duration covering the last tenth of the path, so a stroke or sweep animated
|
|
38
|
-
* with one flashes past and then visibly creeps. Use this wherever the journey
|
|
39
|
-
* is the content — a line drawing itself, a wipe crossing a plot, a circle
|
|
40
|
-
* sweeping open.
|
|
41
|
-
*
|
|
42
|
-
* The ease is applied only near the ends, and the finish is NOT flattened onto
|
|
43
|
-
* the target: the motion is still moving when it lands, which is what keeps
|
|
44
|
-
* the tail short.
|
|
45
|
-
*/
|
|
46
|
-
export declare const easeTravel: (t: number) => number;
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* One debounced, abortable request at a time — the shape every "fetch on input"
|
|
3
|
-
* control in the kit needs: the command palette's `search`, the table's `load`.
|
|
4
|
-
*
|
|
5
|
-
* Two races are lost silently without it: a stale response overwriting a
|
|
6
|
-
* fresher one, and a response landing after the control moved on. The token
|
|
7
|
-
* guards both — the abort signal only asks the consumer to stop, it cannot
|
|
8
|
-
* promise they did.
|
|
9
|
-
*/
|
|
10
|
-
export declare function useAsyncTask<T>(): {
|
|
11
|
-
pending: import('vue').Ref<boolean, boolean>;
|
|
12
|
-
run: (task: (signal: AbortSignal) => T | Promise<T>, options: {
|
|
13
|
-
delay?: number;
|
|
14
|
-
apply: (value: T) => void;
|
|
15
|
-
fail?: (error: unknown) => void;
|
|
16
|
-
}) => void;
|
|
17
|
-
cancel: () => void;
|
|
18
|
-
};
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
export interface CopyOptions {
|
|
2
|
-
/**
|
|
3
|
-
* Toast to raise on success. `false` (the default) stays silent, for callers
|
|
4
|
-
* whose button already shows the tick and would otherwise say it twice.
|
|
5
|
-
*/
|
|
6
|
-
toast?: string | false;
|
|
7
|
-
/**
|
|
8
|
-
* Toast to raise when the copy fails. Defaults to silence for the same
|
|
9
|
-
* reason the kit's other best-effort paths are silent: a copy that didn't
|
|
10
|
-
* happen is usually obvious, and a scary red box over a blocked clipboard
|
|
11
|
-
* helps nobody. Pass a string where losing the copy actually costs something.
|
|
12
|
-
*/
|
|
13
|
-
errorToast?: string | false;
|
|
14
|
-
}
|
|
15
|
-
export interface UseClipboard {
|
|
16
|
-
/**
|
|
17
|
-
* True for a moment after a successful copy. Bind it to swap a copy icon for
|
|
18
|
-
* a tick:
|
|
19
|
-
*
|
|
20
|
-
* ```vue
|
|
21
|
-
* <LpIcon :name="copied ? 'lucide:check' : 'lucide:copy'" />
|
|
22
|
-
* ```
|
|
23
|
-
*/
|
|
24
|
-
copied: import('vue').Ref<boolean>;
|
|
25
|
-
/**
|
|
26
|
-
* Writes `text` to the clipboard. Resolves true on success, false when the
|
|
27
|
-
* clipboard was unavailable or refused — it never rejects, so `await copy(x)`
|
|
28
|
-
* is safe to call bare from an event handler.
|
|
29
|
-
*/
|
|
30
|
-
copy: (text: string, options?: CopyOptions) => Promise<boolean>;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Clipboard writes with optional toast feedback.
|
|
34
|
-
*
|
|
35
|
-
* ```ts
|
|
36
|
-
* const { copy, copied } = useClipboard()
|
|
37
|
-
* copy(hex) // silent; bind `copied` to a tick
|
|
38
|
-
* copy(hex, { toast: "Copied #3b82f6" }) // says so
|
|
39
|
-
* ```
|
|
40
|
-
*
|
|
41
|
-
* Defaults are per-call rather than per-instance: one component often copies
|
|
42
|
-
* several things for different reasons — a menu item that should announce
|
|
43
|
-
* itself, a button that shows its own tick — and hoisting the choice to the
|
|
44
|
-
* composable would force those to agree.
|
|
45
|
-
*/
|
|
46
|
-
export declare function useClipboard(): UseClipboard;
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { MaybeRefOrGetter, Ref } from 'vue';
|
|
2
|
-
export interface UseFormDraftOptions<T> {
|
|
3
|
-
/**
|
|
4
|
-
* Where this draft lives. Include whatever identifies the subject — a draft
|
|
5
|
-
* for device A must not surface while editing device B.
|
|
6
|
-
*/
|
|
7
|
-
key: MaybeRefOrGetter<string>;
|
|
8
|
-
/** The form's current value. Watched deeply; every change rewrites the draft. */
|
|
9
|
-
value: MaybeRefOrGetter<T>;
|
|
10
|
-
/**
|
|
11
|
-
* Whether there is anything worth keeping. Return false while the form still
|
|
12
|
-
* matches what was loaded, so an untouched form leaves nothing behind and no
|
|
13
|
-
* later visit is offered its own starting state back as a "draft".
|
|
14
|
-
*/
|
|
15
|
-
dirty?: MaybeRefOrGetter<boolean>;
|
|
16
|
-
/**
|
|
17
|
-
* How long a draft stays offerable, in milliseconds. Older ones are dropped
|
|
18
|
-
* on read: a fortnight-old draft of a record that has been edited twice since
|
|
19
|
-
* is not a rescue, it is a way to overwrite current facts with stale ones.
|
|
20
|
-
* Defaults to a week. `0` keeps them indefinitely.
|
|
21
|
-
*/
|
|
22
|
-
maxAgeMs?: number;
|
|
23
|
-
/** Skip the write without tearing the composable out of the component. */
|
|
24
|
-
disabled?: MaybeRefOrGetter<boolean>;
|
|
25
|
-
}
|
|
26
|
-
export interface UseFormDraft<T> {
|
|
27
|
-
/** A draft was found for this key, and has not been restored or discarded. */
|
|
28
|
-
hasDraft: Ref<boolean>;
|
|
29
|
-
/** When that draft was written, ISO-8601, or `null` when there is none. */
|
|
30
|
-
savedAt: Ref<string | null>;
|
|
31
|
-
/**
|
|
32
|
-
* The stored value, or `null`. Reading does not apply it — the caller decides
|
|
33
|
-
* what to do with each field, because only it knows the form's shape.
|
|
34
|
-
*/
|
|
35
|
-
read: () => T | null;
|
|
36
|
-
/** Forget the draft. Call after applying it, and after a successful save. */
|
|
37
|
-
discard: () => void;
|
|
38
|
-
/** Write now, ignoring `dirty`. For "save and come back to this later". */
|
|
39
|
-
save: () => void;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Keeps an unsaved form in browser storage, so losing the page does not lose
|
|
43
|
-
* what was typed into it.
|
|
44
|
-
*
|
|
45
|
-
* ```ts
|
|
46
|
-
* const draft = useFormDraft({
|
|
47
|
-
* key: () => `lp.draft.device-power:${deviceId.value}`,
|
|
48
|
-
* value: () => interfaces.value,
|
|
49
|
-
* dirty: () => hasUnsavedChanges.value,
|
|
50
|
-
* })
|
|
51
|
-
* ```
|
|
52
|
-
* ```vue
|
|
53
|
-
* <LpAlert v-if="draft.hasDraft.value" variant="info">
|
|
54
|
-
* {{ t("draft.found", { when: draft.savedAt.value }) }}
|
|
55
|
-
* <LpButton @click="applyDraft">Restore</LpButton>
|
|
56
|
-
* <LpButton variant="ghost" @click="draft.discard()">Discard</LpButton>
|
|
57
|
-
* </LpAlert>
|
|
58
|
-
* ```
|
|
59
|
-
*
|
|
60
|
-
* `hasDraft` answers for the key as it is now, so a form that switches subject
|
|
61
|
-
* re-reads rather than carrying the previous subject's answer.
|
|
62
|
-
*
|
|
63
|
-
* Call `discard()` once the record is saved. A draft that outlives the save it
|
|
64
|
-
* describes is offered back on the next visit as though it were newer than the
|
|
65
|
-
* record, which is how a form helpfully undoes somebody's work.
|
|
66
|
-
*/
|
|
67
|
-
export declare function useFormDraft<T>(options: UseFormDraftOptions<T>): UseFormDraft<T>;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { ComputedRef, MaybeRefOrGetter } from 'vue';
|
|
2
|
-
/** Make `glass` the default for every overlay below the calling component. */
|
|
3
|
-
export declare function provideGlass(enabled?: MaybeRefOrGetter<boolean>): void;
|
|
4
|
-
/**
|
|
5
|
-
* The glass flag an overlay renders with: its own prop when set, otherwise the
|
|
6
|
-
* nearest `provideGlass`, otherwise off. The prop must default to `undefined`,
|
|
7
|
-
* not `false`, or an unset prop could not be told apart from an explicit off.
|
|
8
|
-
*/
|
|
9
|
-
export declare function useGlass(own: () => boolean | undefined): ComputedRef<boolean>;
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
import { MaybeRefOrGetter } from 'vue';
|
|
2
|
-
export interface HotkeyBinding {
|
|
3
|
-
/** Layout-produced key, compared case-insensitively ("l", "f2", "escape"). */
|
|
4
|
-
key: string;
|
|
5
|
-
/**
|
|
6
|
-
* Physical key position ("KeyL", "F2", "Digit1"). Matches on its own, which
|
|
7
|
-
* is what makes non-Latin layouts work.
|
|
8
|
-
*/
|
|
9
|
-
code?: string;
|
|
10
|
-
/** Ctrl on Windows/Linux, ⌘ on macOS — the two are treated as one. */
|
|
11
|
-
ctrl?: boolean;
|
|
12
|
-
shift?: boolean;
|
|
13
|
-
alt?: boolean;
|
|
14
|
-
/**
|
|
15
|
-
* Runs even while a text field has focus. Only for shortcuts that mean
|
|
16
|
-
* something there — Escape, and the palette the user reaches from anywhere.
|
|
17
|
-
*/
|
|
18
|
-
allowInInput?: boolean;
|
|
19
|
-
/**
|
|
20
|
-
* How the key reference lists this binding while it is mounted. Bindings
|
|
21
|
-
* without it still work, they just stay out of `activeShortcuts`.
|
|
22
|
-
*/
|
|
23
|
-
help?: HotkeyHelp;
|
|
24
|
-
/**
|
|
25
|
-
* Returning `false` declines the key: the event keeps its default and the
|
|
26
|
-
* search moves on. This is what lets a binding defer to a layer that owns the
|
|
27
|
-
* key better than it does — Escape belongs to whichever overlay is on top,
|
|
28
|
-
* and swallowing it here would close all of them. The event is passed for
|
|
29
|
-
* the checks only it can answer: where the focus is, whether an inner
|
|
30
|
-
* control already took the key.
|
|
31
|
-
*/
|
|
32
|
-
handler: (event: KeyboardEvent) => void | boolean;
|
|
33
|
-
}
|
|
34
|
-
export interface HotkeyHelp {
|
|
35
|
-
/** Section of the reference the entry goes under. */
|
|
36
|
-
group: string;
|
|
37
|
-
label: string;
|
|
38
|
-
/**
|
|
39
|
-
* Written the way it reads, "+"-separated. Defaults to one built from the
|
|
40
|
-
* binding; set it where the binding is not the whole story, such as the
|
|
41
|
-
* second key of a chord ("G+D") or a key that needs Shift to type ("?").
|
|
42
|
-
*/
|
|
43
|
-
combo?: string;
|
|
44
|
-
}
|
|
45
|
-
export interface ShortcutEntry {
|
|
46
|
-
/** Rendered one <kbd> per "+"-separated key, so write it the way it reads. */
|
|
47
|
-
combo: string;
|
|
48
|
-
label: string;
|
|
49
|
-
}
|
|
50
|
-
export interface ShortcutGroup {
|
|
51
|
-
title: string;
|
|
52
|
-
entries: ShortcutEntry[];
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Whether this machine prints ⌘ where the rest print Ctrl. Read once: the
|
|
56
|
-
* keyboard does not change under a running window, and the check is only ever
|
|
57
|
-
* used to pick a label.
|
|
58
|
-
*/
|
|
59
|
-
export declare const isAppleKeyboard: boolean;
|
|
60
|
-
/**
|
|
61
|
-
* The symbol to print for a modifier on this platform. Bindings treat Ctrl and
|
|
62
|
-
* Meta as one modifier, so only the label may differ — never the binding.
|
|
63
|
-
*/
|
|
64
|
-
export declare function appleModifierLabel(key: string): string;
|
|
65
|
-
/**
|
|
66
|
-
* Bind a list of hotkeys for as long as the calling component is mounted.
|
|
67
|
-
*
|
|
68
|
-
* The list is read on every keystroke rather than captured once, so bindings
|
|
69
|
-
* may come and go with the state that owns them — a getter is the point, not a
|
|
70
|
-
* formality.
|
|
71
|
-
*/
|
|
72
|
-
export interface UseHotkeysOptions {
|
|
73
|
-
/**
|
|
74
|
-
* Only act while the focus is inside this element.
|
|
75
|
-
*
|
|
76
|
-
* The default is the whole window, which is right for a command palette and
|
|
77
|
-
* wrong for a control: two of the same component on one page would both
|
|
78
|
-
* answer the same key, and a control beside a form would answer keys aimed
|
|
79
|
-
* at the form. Scoping it here rather than in each component because every
|
|
80
|
-
* one of them was about to write the same `document.activeElement` check and
|
|
81
|
-
* decline by hand.
|
|
82
|
-
*
|
|
83
|
-
* Undefined or null means the window, so the palette case stays the default.
|
|
84
|
-
*/
|
|
85
|
-
scope?: MaybeRefOrGetter<HTMLElement | null | undefined>;
|
|
86
|
-
}
|
|
87
|
-
export declare function useHotkeys(bindings: MaybeRefOrGetter<HotkeyBinding[]>, options?: UseHotkeysOptions): void;
|
|
88
|
-
/**
|
|
89
|
-
* The shortcuts that work right now, grouped for `LpShortcutsDialog`: every
|
|
90
|
-
* binding with `help` from every mounted `useHotkeys`. A screen that binds its
|
|
91
|
-
* own keys adds its section while it is open, so the reference never lists a
|
|
92
|
-
* key that does nothing here or misses one that does.
|
|
93
|
-
*/
|
|
94
|
-
export declare const activeShortcuts: import('vue').ComputedRef<ShortcutGroup[]>;
|
|
95
|
-
/**
|
|
96
|
-
* Groups merged by title, entries kept once per combo: what a reference shows
|
|
97
|
-
* when it lists both its own entries and the live ones.
|
|
98
|
-
*/
|
|
99
|
-
export declare function mergeShortcutGroups(...lists: ShortcutGroup[][]): ShortcutGroup[];
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { MaybeRefOrGetter } from 'vue';
|
|
2
|
-
export interface UseInputFilterOptions {
|
|
3
|
-
/** One-char RegExp of allowed characters. Disallowed input is blocked. */
|
|
4
|
-
restrict?: MaybeRefOrGetter<RegExp | undefined>;
|
|
5
|
-
/** RegExp/string the full value must match to be valid. Validation only. */
|
|
6
|
-
pattern?: MaybeRefOrGetter<RegExp | string | undefined>;
|
|
7
|
-
}
|
|
8
|
-
export declare function useInputFilter(options?: UseInputFilterOptions): {
|
|
9
|
-
isInvalid: (value: string | undefined) => boolean;
|
|
10
|
-
onBeforeInput: (event: InputEvent) => void;
|
|
11
|
-
onPaste: (event: ClipboardEvent) => void;
|
|
12
|
-
patternRe: import('vue').ComputedRef<RegExp | undefined>;
|
|
13
|
-
restrict: import('vue').ComputedRef<RegExp | undefined>;
|
|
14
|
-
};
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { ComputedRef, MaybeRefOrGetter } from 'vue';
|
|
2
|
-
/**
|
|
3
|
-
* Merges the component's own classes with the `class` attribute the consumer
|
|
4
|
-
* passed, resolving Tailwind conflicts in the consumer's favour.
|
|
5
|
-
*
|
|
6
|
-
* ```ts
|
|
7
|
-
* const rootClass = useMergedClass(() => shell({ size: props.size }))
|
|
8
|
-
* ```
|
|
9
|
-
* ```vue
|
|
10
|
-
* <div :class="rootClass">
|
|
11
|
-
* ```
|
|
12
|
-
*
|
|
13
|
-
* Pair it with `inheritAttrs: false` (and bind the rest of `$attrs` yourself)
|
|
14
|
-
* so the raw `class` does not land on the element a second time, unmerged.
|
|
15
|
-
*/
|
|
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
|
-
};
|
|
37
|
-
/**
|
|
38
|
-
* The same merge as a plain function, for the places that already have both
|
|
39
|
-
* strings in hand and do not need the attrs lookup — a render helper, or a
|
|
40
|
-
* component merging a class onto a child rather than its own root.
|
|
41
|
-
*/
|
|
42
|
-
export declare function mergeClass(...classes: (string | undefined | null | false)[]): string;
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { ComputedRef } from 'vue';
|
|
2
|
-
export type PillTransition = {
|
|
3
|
-
duration: number;
|
|
4
|
-
} | {
|
|
5
|
-
type: "spring";
|
|
6
|
-
stiffness: number;
|
|
7
|
-
damping: number;
|
|
8
|
-
};
|
|
9
|
-
export type PillFeel = "pill" | "float";
|
|
10
|
-
export declare function usePillTransition(feel?: PillFeel): ComputedRef<PillTransition>;
|
|
11
|
-
export interface SpringState {
|
|
12
|
-
/** Current position; seed it with the start value. */
|
|
13
|
-
value: number;
|
|
14
|
-
/** Current velocity; seed with 0. */
|
|
15
|
-
velocity: number;
|
|
16
|
-
}
|
|
17
|
-
export declare function springStep(state: SpringState, target: number, feel?: PillFeel,
|
|
18
|
-
/** Frame time in seconds; clamped so a backgrounded tab can't explode it. */
|
|
19
|
-
dt?: number): SpringState;
|
|
20
|
-
/** True once a spring is close enough to its target to stop animating. */
|
|
21
|
-
export declare const springSettled: (state: SpringState, target: number) => boolean;
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { MaybeRefOrGetter, Ref } from 'vue';
|
|
2
|
-
export interface UseRevealOptions {
|
|
3
|
-
/**
|
|
4
|
-
* Skip the wait and reveal at once. For a caller that has switched its
|
|
5
|
-
* entrance off — there is nothing to gate, and holding content back for an
|
|
6
|
-
* observer that no longer guards anything only delays the first paint.
|
|
7
|
-
*/
|
|
8
|
-
immediate?: MaybeRefOrGetter<boolean | undefined>;
|
|
9
|
-
/**
|
|
10
|
-
* Fraction of the element that must be on screen. A sliver of a tall chart
|
|
11
|
-
* scrolling into view is not yet an arrival; a quarter of it is.
|
|
12
|
-
*/
|
|
13
|
-
threshold?: number;
|
|
14
|
-
/**
|
|
15
|
-
* Grow the viewport for the test, so an element just past the fold starts
|
|
16
|
-
* drawing as it is scrolled toward rather than after it lands.
|
|
17
|
-
*/
|
|
18
|
-
rootMargin?: string;
|
|
19
|
-
}
|
|
20
|
-
export interface UseReveal {
|
|
21
|
-
/** Attach to the element whose appearance starts the animation. */
|
|
22
|
-
el: Ref<Element | null>;
|
|
23
|
-
/** False until that element has been seen; true forever after. */
|
|
24
|
-
revealed: Ref<boolean>;
|
|
25
|
-
}
|
|
26
|
-
export declare function useReveal(options?: UseRevealOptions): UseReveal;
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { MaybeRefOrGetter } from 'vue';
|
|
2
|
-
export interface RovingItem {
|
|
3
|
-
/** Stable identity of the row. */
|
|
4
|
-
id: string;
|
|
5
|
-
/**
|
|
6
|
-
* What typeahead matches against. Omit to opt this row out of typeahead —
|
|
7
|
-
* a separator, say.
|
|
8
|
-
*/
|
|
9
|
-
label?: string;
|
|
10
|
-
disabled?: boolean;
|
|
11
|
-
}
|
|
12
|
-
export interface UseRovingFocusOptions {
|
|
13
|
-
/**
|
|
14
|
-
* Which axis the arrows follow. `vertical` (default) uses ↑↓, `horizontal`
|
|
15
|
-
* uses ←→, `both` accepts either — for a grid whose wrapping the caller
|
|
16
|
-
* cannot describe here.
|
|
17
|
-
*/
|
|
18
|
-
orientation?: "vertical" | "horizontal" | "both";
|
|
19
|
-
/** Wrap around at the ends instead of stopping. Default true. */
|
|
20
|
-
loop?: boolean;
|
|
21
|
-
/** Jump to an item by typing its first letters. Default true. */
|
|
22
|
-
typeahead?: boolean;
|
|
23
|
-
/** Called when the user activates the current item (Enter or Space). */
|
|
24
|
-
onActivate?: (id: string) => void;
|
|
25
|
-
/**
|
|
26
|
-
* Called when focus should leave the list without activating anything —
|
|
27
|
-
* Escape. Lets a dialog close, or a filter field take focus back.
|
|
28
|
-
*/
|
|
29
|
-
onEscape?: () => void;
|
|
30
|
-
}
|
|
31
|
-
export declare function useRovingFocus(items: MaybeRefOrGetter<RovingItem[]>, options?: UseRovingFocusOptions): {
|
|
32
|
-
activeId: import('vue').Ref<string | undefined, string | undefined>;
|
|
33
|
-
focus: (id: string | undefined) => void;
|
|
34
|
-
move: (delta: number) => void;
|
|
35
|
-
first: () => void;
|
|
36
|
-
last: () => void;
|
|
37
|
-
onKeydown: (event: KeyboardEvent) => void;
|
|
38
|
-
setContainer: (el: HTMLElement | null) => void;
|
|
39
|
-
containerProps: import('vue').ComputedRef<{
|
|
40
|
-
ref: (el: unknown) => void;
|
|
41
|
-
onKeydown: (event: KeyboardEvent) => void;
|
|
42
|
-
}>;
|
|
43
|
-
itemProps: (id: string) => {
|
|
44
|
-
tabindex: number;
|
|
45
|
-
"data-active": string | undefined;
|
|
46
|
-
"data-roving-id": string;
|
|
47
|
-
onFocus: () => void;
|
|
48
|
-
};
|
|
49
|
-
};
|