@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.
Files changed (157) hide show
  1. package/dist/assets/{LpCommandPalette-DyT6aGdW.css → LpCommandPalette-s_kKuCRf.css} +21 -21
  2. package/dist/chunks/{LpAddressInput-CMjaPQVw.js → LpAddressInput-B-Zvxsn7.js} +1 -1
  3. package/dist/chunks/{LpAppShell-Bcv6EhqU.js → LpAppShell-BGQVIY-3.js} +1 -1
  4. package/dist/chunks/{LpConfirmDialog-BNAvOR24.js → LpConfirmDialog-Q-bxff8z.js} +1 -1
  5. package/dist/chunks/{LpDrawer-DgaS2s2i.js → LpDrawer-BZ6k3hvo.js} +3 -3
  6. package/dist/chunks/{LpLightbox-oLqyjOln.js → LpLightbox-2sYVMY-S.js} +12 -4
  7. package/dist/chunks/{LpMediaGallery-Cid7PGYx.js → LpMediaGallery-FF-NquIo.js} +1 -1
  8. package/dist/chunks/{LpModal-8bja5bWS.js → LpModal-Bt0pQCI_.js} +2 -2
  9. package/dist/chunks/{LpModalNav-w9kfwHqO.js → LpModalNav-YaifHrXC.js} +2 -2
  10. package/dist/chunks/{LpSidebar-DlTn5nXc.js → LpSidebar-ClBUwoEz.js} +1 -1
  11. package/dist/components/LpAddressInput.vue.js +1 -1
  12. package/dist/components/LpAppShell.vue.js +1 -1
  13. package/dist/components/LpCommandPalette.vue.js +124 -115
  14. package/dist/components/LpConfirmDialog.vue.js +1 -1
  15. package/dist/components/LpDrawer.vue.js +1 -1
  16. package/dist/components/LpLightbox.vue.js +1 -1
  17. package/dist/components/LpMediaGallery.vue.js +1 -1
  18. package/dist/components/LpModal.vue.js +1 -1
  19. package/dist/components/LpModalNav.vue.js +1 -1
  20. package/dist/components/LpShortcutsDialog.vue.js +1 -1
  21. package/dist/components/LpSidebar.vue.js +1 -1
  22. package/dist/components/commandSearch.js +66 -0
  23. package/dist/components/modalDepth.js +3 -2
  24. package/dist/composables/useHotkeys.js +41 -21
  25. package/dist/index.js +13 -9
  26. package/package.json +3 -3
  27. package/src/components/LpCommandPalette.vue +81 -99
  28. package/src/components/LpDrawer.vue +3 -3
  29. package/src/components/LpLightbox.vue +11 -5
  30. package/src/components/LpModal.vue +2 -2
  31. package/src/components/commandSearch.ts +92 -0
  32. package/src/components/modalDepth.ts +4 -48
  33. package/src/composables/useHotkeys.ts +54 -33
  34. package/src/index.ts +2 -0
  35. package/src/tokens/tokens.css +13 -19
  36. package/dist/component-names.d.ts +0 -1
  37. package/dist/components/LayoutCanvas.vue.d.ts +0 -28
  38. package/dist/components/LayoutNode.vue.d.ts +0 -40
  39. package/dist/components/LpActionBar.vue.d.ts +0 -84
  40. package/dist/components/LpAddressInput.vue.d.ts +0 -70
  41. package/dist/components/LpAlert.vue.d.ts +0 -44
  42. package/dist/components/LpAppShell.vue.d.ts +0 -123
  43. package/dist/components/LpAutocomplete.vue.d.ts +0 -50
  44. package/dist/components/LpAvatar.vue.d.ts +0 -34
  45. package/dist/components/LpBadge.vue.d.ts +0 -20
  46. package/dist/components/LpBreadcrumbs.vue.d.ts +0 -32
  47. package/dist/components/LpButton.vue.d.ts +0 -113
  48. package/dist/components/LpCalendar.vue.d.ts +0 -29
  49. package/dist/components/LpCard.vue.d.ts +0 -60
  50. package/dist/components/LpChart.vue.d.ts +0 -130
  51. package/dist/components/LpCheckbox.vue.d.ts +0 -32
  52. package/dist/components/LpCodeBlock.vue.d.ts +0 -58
  53. package/dist/components/LpColorPicker.vue.d.ts +0 -124
  54. package/dist/components/LpCommandPalette.vue.d.ts +0 -206
  55. package/dist/components/LpConfirmDialog.vue.d.ts +0 -59
  56. package/dist/components/LpContextMenu.vue.d.ts +0 -44
  57. package/dist/components/LpDatePicker.vue.d.ts +0 -33
  58. package/dist/components/LpDisclosure.vue.d.ts +0 -47
  59. package/dist/components/LpDivider.vue.d.ts +0 -17
  60. package/dist/components/LpDrawer.vue.d.ts +0 -170
  61. package/dist/components/LpDropdownMenu.vue.d.ts +0 -23
  62. package/dist/components/LpDropzone.vue.d.ts +0 -90
  63. package/dist/components/LpEmptyState.vue.d.ts +0 -28
  64. package/dist/components/LpFileTree.vue.d.ts +0 -126
  65. package/dist/components/LpFileTreeNode.vue.d.ts +0 -62
  66. package/dist/components/LpFormField.vue.d.ts +0 -24
  67. package/dist/components/LpIcon.vue.d.ts +0 -8
  68. package/dist/components/LpImageEditor.vue.d.ts +0 -106
  69. package/dist/components/LpInfraNode.vue.d.ts +0 -65
  70. package/dist/components/LpInput.vue.d.ts +0 -80
  71. package/dist/components/LpLaneNode.vue.d.ts +0 -24
  72. package/dist/components/LpLightbox.vue.d.ts +0 -62
  73. package/dist/components/LpLink.vue.d.ts +0 -93
  74. package/dist/components/LpLogViewer.vue.d.ts +0 -153
  75. package/dist/components/LpMapPicker.vue.d.ts +0 -59
  76. package/dist/components/LpMediaGallery.vue.d.ts +0 -80
  77. package/dist/components/LpModal.vue.d.ts +0 -66
  78. package/dist/components/LpModalNav.vue.d.ts +0 -66
  79. package/dist/components/LpNotificationBell.vue.d.ts +0 -85
  80. package/dist/components/LpNumberField.vue.d.ts +0 -21
  81. package/dist/components/LpNumberFlow.vue.d.ts +0 -35
  82. package/dist/components/LpOtpInput.vue.d.ts +0 -39
  83. package/dist/components/LpPagination.vue.d.ts +0 -35
  84. package/dist/components/LpPasswordInput.vue.d.ts +0 -36
  85. package/dist/components/LpPhoneInput.vue.d.ts +0 -49
  86. package/dist/components/LpPie.vue.d.ts +0 -196
  87. package/dist/components/LpPopover.vue.d.ts +0 -34
  88. package/dist/components/LpProgress.vue.d.ts +0 -66
  89. package/dist/components/LpRadio.vue.d.ts +0 -18
  90. package/dist/components/LpRadioGroup.vue.d.ts +0 -26
  91. package/dist/components/LpRollingText.vue.d.ts +0 -33
  92. package/dist/components/LpScrollArea.vue.d.ts +0 -28
  93. package/dist/components/LpSection.vue.d.ts +0 -120
  94. package/dist/components/LpSegmented.vue.d.ts +0 -30
  95. package/dist/components/LpSelect.vue.d.ts +0 -47
  96. package/dist/components/LpServiceNode.vue.d.ts +0 -14
  97. package/dist/components/LpShift.vue.d.ts +0 -36
  98. package/dist/components/LpShortcutsDialog.vue.d.ts +0 -24
  99. package/dist/components/LpSidebar.vue.d.ts +0 -146
  100. package/dist/components/LpSidebarNav.vue.d.ts +0 -54
  101. package/dist/components/LpSkeleton.vue.d.ts +0 -16
  102. package/dist/components/LpSlider.vue.d.ts +0 -30
  103. package/dist/components/LpSparkline.vue.d.ts +0 -48
  104. package/dist/components/LpStat.vue.d.ts +0 -69
  105. package/dist/components/LpStepper.vue.d.ts +0 -36
  106. package/dist/components/LpSwitch.vue.d.ts +0 -42
  107. package/dist/components/LpTable.vue.d.ts +0 -124
  108. package/dist/components/LpTableOfContents.vue.d.ts +0 -19
  109. package/dist/components/LpTabs.vue.d.ts +0 -47
  110. package/dist/components/LpTextarea.vue.d.ts +0 -22
  111. package/dist/components/LpThemeSwitcher.vue.d.ts +0 -47
  112. package/dist/components/LpTilt.vue.d.ts +0 -31
  113. package/dist/components/LpTimeField.vue.d.ts +0 -24
  114. package/dist/components/LpToaster.vue.d.ts +0 -3
  115. package/dist/components/LpTooltip.vue.d.ts +0 -58
  116. package/dist/components/LpTopologyCanvas.vue.d.ts +0 -205
  117. package/dist/components/LpUptimeBar.vue.d.ts +0 -46
  118. package/dist/components/LpWaypointEdge.vue.d.ts +0 -21
  119. package/dist/components/actionBar.d.ts +0 -19
  120. package/dist/components/address.d.ts +0 -107
  121. package/dist/components/chart.d.ts +0 -180
  122. package/dist/components/codeHighlight.d.ts +0 -8
  123. package/dist/components/color.d.ts +0 -65
  124. package/dist/components/countries-data.d.ts +0 -2
  125. package/dist/components/countries.d.ts +0 -20
  126. package/dist/components/dropdown.d.ts +0 -29
  127. package/dist/components/fileTree.d.ts +0 -79
  128. package/dist/components/lightbox.d.ts +0 -24
  129. package/dist/components/modalDepth.d.ts +0 -15
  130. package/dist/components/sidebar.d.ts +0 -42
  131. package/dist/composables/easing.d.ts +0 -46
  132. package/dist/composables/useAsyncTask.d.ts +0 -18
  133. package/dist/composables/useClipboard.d.ts +0 -46
  134. package/dist/composables/useFormDraft.d.ts +0 -67
  135. package/dist/composables/useGlass.d.ts +0 -9
  136. package/dist/composables/useHotkeys.d.ts +0 -99
  137. package/dist/composables/useInputFilter.d.ts +0 -14
  138. package/dist/composables/useMergedClass.d.ts +0 -42
  139. package/dist/composables/usePillTransition.d.ts +0 -21
  140. package/dist/composables/useReveal.d.ts +0 -26
  141. package/dist/composables/useRovingFocus.d.ts +0 -49
  142. package/dist/composables/useSettled.d.ts +0 -26
  143. package/dist/composables/useShift.d.ts +0 -35
  144. package/dist/composables/useTilt.d.ts +0 -23
  145. package/dist/composables/useToast.d.ts +0 -41
  146. package/dist/composables/useZoomPan.d.ts +0 -58
  147. package/dist/icons.d.ts +0 -1
  148. package/dist/index.d.ts +0 -160
  149. package/dist/layout/registry.d.ts +0 -26
  150. package/dist/layout/tree.d.ts +0 -75
  151. package/dist/layout/useLayout.d.ts +0 -39
  152. package/dist/theme/backdrop.d.ts +0 -9
  153. package/dist/theme/config.d.ts +0 -16
  154. package/dist/theme/define.d.ts +0 -12
  155. package/dist/theme/presets.d.ts +0 -20
  156. package/dist/theme/tokens.d.ts +0 -75
  157. package/dist/theme/useTheme.d.ts +0 -46
@@ -1,26 +0,0 @@
1
- import { MaybeRefOrGetter } from 'vue';
2
- export interface UseSettledOptions {
3
- /** Override the wait. Defaults to the kit's overlay animation duration. */
4
- delay?: MaybeRefOrGetter<number>;
5
- }
6
- /**
7
- * Returns a ref that flips true once `open` has been truthy for the length of
8
- * the overlay's opening animation. Gate expensive content on it:
9
- *
10
- * ```ts
11
- * const settled = useSettled(() => isOpen.value)
12
- * ```
13
- * ```vue
14
- * <RowList v-if="settled" :rows="rows" />
15
- * <RowSkeletons v-else />
16
- * ```
17
- *
18
- * Anything truthy counts as open, so an id can be passed instead of a boolean.
19
- * That is the useful form when the same panel is reused for different subjects:
20
- * the wait restarts when the id changes, because the panel is mounting a whole
21
- * new body without ever having closed.
22
- *
23
- * With reduced motion there is no animation to protect, so it resolves on the
24
- * next tick rather than making the user wait for a delay that buys nothing.
25
- */
26
- export declare function useSettled(open: MaybeRefOrGetter<unknown>, options?: UseSettledOptions): import('vue').Ref<boolean, boolean>;
@@ -1,35 +0,0 @@
1
- import { MaybeRefOrGetter, Ref } from 'vue';
2
- export type ShiftAxis = "height" | "width" | "both";
3
- export interface UseShiftOptions {
4
- /** Which dimension is content-derived. Default `"height"`. */
5
- axis?: MaybeRefOrGetter<ShiftAxis | undefined>;
6
- /** Tween length. Defaults to the kit's `--duration-fast` (160ms). */
7
- duration?: MaybeRefOrGetter<number | undefined>;
8
- /**
9
- * Gate: while falsy the element is left entirely alone — no observers, no
10
- * pinning. Use it for a box that only exists while something is open, so a
11
- * remounted element starts measuring from scratch rather than easing in from
12
- * a size it held in a previous life. Default: always active.
13
- */
14
- enabled?: MaybeRefOrGetter<unknown>;
15
- }
16
- export interface UseShift {
17
- /** Attach to the element whose content-derived size should ease. */
18
- el: Ref<HTMLElement | null>;
19
- /**
20
- * True while a tween owns the size. Bind the transition utilities off this,
21
- * so the element is only transition-enabled once it has a size to ease FROM
22
- * (otherwise the very first pin animates in from zero).
23
- */
24
- tweening: Ref<boolean>;
25
- /**
26
- * True while the element is still catching up to its new size. During the
27
- * tween the box is briefly smaller than the content it already holds, so any
28
- * scroll region inside it would raise a bar for an overflow that resolves
29
- * itself as the tween lands — hide the bar (not the scrolling) on this.
30
- */
31
- resizing: Ref<boolean>;
32
- /** Re-measure and ease to the current natural size. Rarely needed by hand. */
33
- retune: () => void;
34
- }
35
- export declare function useShift(options?: UseShiftOptions): UseShift;
@@ -1,23 +0,0 @@
1
- import { ComputedRef, CSSProperties, Ref } from 'vue';
2
- export interface UseTiltOptions {
3
- /** Max rotation toward the pointer, in degrees (per axis). Default 10. */
4
- max?: number;
5
- /** Upward lift on hover, in px. Default 8. */
6
- lift?: number;
7
- /** Scale on hover. Default 1.03. */
8
- scale?: number;
9
- /** Glare highlight following the pointer. Default false. */
10
- glare?: boolean;
11
- }
12
- export interface UseTilt {
13
- /** Bind to the tilting element's style. */
14
- style: ComputedRef<CSSProperties>;
15
- /** Radial-gradient background for an optional glare overlay (0 when idle). */
16
- glareStyle: ComputedRef<CSSProperties>;
17
- onPointerMove: (e: PointerEvent) => void;
18
- onPointerEnter: () => void;
19
- onPointerLeave: () => void;
20
- /** True while the pointer is over the element (drives lift/scale). */
21
- active: Ref<boolean>;
22
- }
23
- export declare function useTilt(options?: UseTiltOptions): UseTilt;
@@ -1,41 +0,0 @@
1
- export type ToastVariant = "info" | "success" | "warning" | "error";
2
- export interface ToastAction {
3
- label: string;
4
- /** Optional leading icon (any name LpIcon accepts, e.g. "lucide:copy"). */
5
- icon?: string;
6
- onClick: () => void | Promise<void>;
7
- }
8
- export interface ToastItem {
9
- id: number;
10
- title?: string;
11
- message: string;
12
- variant: ToastVariant;
13
- duration: number;
14
- /** Epoch ms when this toast auto-dismisses, or null if it never does. */
15
- dismissAt: number | null;
16
- actions?: ToastAction[];
17
- /** Whole-toast click handler (UAProject-style clickable toast). */
18
- onClick?: () => void | Promise<void>;
19
- }
20
- export interface ToastOptions {
21
- title?: string;
22
- duration?: number;
23
- actions?: ToastAction[];
24
- onClick?: () => void | Promise<void>;
25
- }
26
- declare function push(variant: ToastVariant, message: string, options?: ToastOptions): number;
27
- declare function dismiss(id: number): void;
28
- declare function clear(): void;
29
- export declare function useToast(): {
30
- queue: ToastItem[];
31
- toast: (message: string, o?: ToastOptions) => number;
32
- info: (message: string, o?: ToastOptions) => number;
33
- success: (message: string, o?: ToastOptions) => number;
34
- warning: (message: string, o?: ToastOptions) => number;
35
- error: (message: string, o?: ToastOptions) => number;
36
- /** Low-level push for bridges (e.g. @leavepulse/ui-sdk apiError). */
37
- push: typeof push;
38
- dismiss: typeof dismiss;
39
- clear: typeof clear;
40
- };
41
- export {};
@@ -1,58 +0,0 @@
1
- import { ComputedRef, CSSProperties, Ref } from 'vue';
2
- export interface UseZoomPanOptions {
3
- /** Smallest allowed scale. Default 1 (fit — never shrink past the viewport). */
4
- min?: number;
5
- /** Largest allowed scale. Default 8. */
6
- max?: number;
7
- /** Multiplier per wheel notch. Default 1.15. */
8
- step?: number;
9
- /** Scale that a double-click/tap toggles to, from `min`. Default 2. */
10
- zoomedScale?: number;
11
- }
12
- export interface UseZoomPan {
13
- scale: Ref<number>;
14
- /**
15
- * Pan offset in CONTENT pixels — what `style` puts inside `translate()`,
16
- * before the scale magnifies it. Exposed because anything that has to know
17
- * *which part* is visible needs the number, not the CSS string: an exporter
18
- * writing the cropped region, a minimap drawing the viewport rectangle, a
19
- * caller restoring a saved position. Parsing it back out of `transform` is
20
- * the alternative, and that breaks the moment this composable changes how it
21
- * composes the transform.
22
- */
23
- offset: ComputedRef<{
24
- x: number;
25
- y: number;
26
- }>;
27
- /**
28
- * Put the view somewhere — restoring a saved position, or carrying one
29
- * through a change that re-frames the content. Clamped like any other pan,
30
- * so a caller cannot place the content off the viewport. Omitting `scale`
31
- * keeps the current one.
32
- */
33
- setView: (view: {
34
- x: number;
35
- y: number;
36
- scale?: number;
37
- }) => void;
38
- /** True once zoomed past the minimum — the point at which panning matters. */
39
- zoomed: ComputedRef<boolean>;
40
- /** True while a drag is in flight, so the caller can swap the cursor. */
41
- panning: Ref<boolean>;
42
- style: ComputedRef<CSSProperties>;
43
- onWheel: (e: WheelEvent) => void;
44
- onPointerDown: (e: PointerEvent) => void;
45
- onPointerMove: (e: PointerEvent) => void;
46
- onPointerUp: (e: PointerEvent) => void;
47
- /** Zoom about the viewport centre (buttons, keyboard). */
48
- zoomBy: (factor: number) => void;
49
- /** Toggle between fit and `zoomedScale`, optionally about a point. */
50
- toggleZoom: (origin?: {
51
- x: number;
52
- y: number;
53
- }) => void;
54
- reset: () => void;
55
- /** Call with the viewport element so pointer coords can be made relative. */
56
- setViewport: (el: HTMLElement | null) => void;
57
- }
58
- export declare function useZoomPan(options?: UseZoomPanOptions): UseZoomPan;
package/dist/icons.d.ts DELETED
@@ -1 +0,0 @@
1
- export {};
package/dist/index.d.ts DELETED
@@ -1,160 +0,0 @@
1
- export { default as LayoutCanvas } from './components/LayoutCanvas.vue';
2
- export { default as LpAddressInput } from './components/LpAddressInput.vue';
3
- export { default as LpMapPicker } from './components/LpMapPicker.vue';
4
- export { OSM_TILES, createNominatimProvider, emptyAddress, formatAddress, project, tileUrl, unproject, } from './components/address';
5
- export type { AddressField, AddressLabels, AddressSuggestion, AddressValue, GeocodeProvider, GeocodeQuery, LatLon, NominatimOptions, TileSource, } from './components/address';
6
- export { default as LpActionBar } from './components/LpActionBar.vue';
7
- export type { ActionBarAction } from './components/LpActionBar.vue';
8
- export { default as LpAlert } from './components/LpAlert.vue';
9
- export { default as LpAppShell } from './components/LpAppShell.vue';
10
- export { default as LpAutocomplete } from './components/LpAutocomplete.vue';
11
- export type { AutocompleteOption } from './components/LpAutocomplete.vue';
12
- export { default as LpAvatar } from './components/LpAvatar.vue';
13
- export { default as LpBadge } from './components/LpBadge.vue';
14
- export { default as LpBreadcrumbs } from './components/LpBreadcrumbs.vue';
15
- export type { Crumb } from './components/LpBreadcrumbs.vue';
16
- export { default as LpButton } from './components/LpButton.vue';
17
- export { default as LpCalendar } from './components/LpCalendar.vue';
18
- export { default as LpCard } from './components/LpCard.vue';
19
- export { default as LpChart } from './components/LpChart.vue';
20
- export type { ChartPointEvent } from './components/LpChart.vue';
21
- export { CHART_PALETTE, axisTicks, formatTick, niceScale, } from './components/chart';
22
- export type { ChartAxis, ChartPoint, ChartSeries } from './components/chart';
23
- export { default as LpCheckbox } from './components/LpCheckbox.vue';
24
- export { default as LpCodeBlock } from './components/LpCodeBlock.vue';
25
- export type { CodeLang } from './components/codeHighlight';
26
- export { default as LpColorPicker } from './components/LpColorPicker.vue';
27
- export type { ColorPickerLabels } from './components/LpColorPicker.vue';
28
- export { clampHsv, DEFAULT_SWATCHES, formatColor, hsvToHsl, hsvToRgb, isLight, normalizeHue, opaqueCss, parseColor, parseHex, rgbToHex, rgbToHsv, } from './components/color';
29
- export type { ColorFormat, Hsv, Rgb } from './components/color';
30
- export { default as LpCommandPalette } from './components/LpCommandPalette.vue';
31
- export type { Command, PaletteLabels } from './components/LpCommandPalette.vue';
32
- export { default as LpConfirmDialog } from './components/LpConfirmDialog.vue';
33
- export { default as LpContextMenu } from './components/LpContextMenu.vue';
34
- export type { ContextMenuItemDef } from './components/LpContextMenu.vue';
35
- export { default as LpDatePicker } from './components/LpDatePicker.vue';
36
- export { default as LpDisclosure } from './components/LpDisclosure.vue';
37
- export { default as LpDivider } from './components/LpDivider.vue';
38
- export { default as LpDrawer } from './components/LpDrawer.vue';
39
- export { default as LpDropdownMenu } from './components/LpDropdownMenu.vue';
40
- export type { MenuItem } from './components/LpDropdownMenu.vue';
41
- export { default as LpDropzone } from './components/LpDropzone.vue';
42
- export { default as LpEmptyState } from './components/LpEmptyState.vue';
43
- export { default as LpFileTree } from './components/LpFileTree.vue';
44
- export type { FileTreeSummary } from './components/LpFileTree.vue';
45
- export type { CheckState, FileNode, NodeStats } from './components/fileTree';
46
- export { ancestorIds, checkedCount, checkStateOf, computeStats, fileIcon, formatModified, formatSize, sortNodes, subtreeIds, subtreeSize, } from './components/fileTree';
47
- export { default as LpFormField } from './components/LpFormField.vue';
48
- export { default as LpIcon } from './components/LpIcon.vue';
49
- export { default as LpImageEditor } from './components/LpImageEditor.vue';
50
- export { default as LpInfraNode } from './components/LpInfraNode.vue';
51
- export type { InfraNodeData } from './components/LpInfraNode.vue';
52
- export { default as LpInput } from './components/LpInput.vue';
53
- export { default as LpLightbox } from './components/LpLightbox.vue';
54
- export type { LightboxItem } from './components/lightbox';
55
- export { fileNameOf } from './components/lightbox';
56
- export { default as LpLink } from './components/LpLink.vue';
57
- export { default as LpLogViewer } from './components/LpLogViewer.vue';
58
- export type { LogLevel, LogLine } from './components/LpLogViewer.vue';
59
- export { default as LpMediaGallery } from './components/LpMediaGallery.vue';
60
- export { default as LpModal } from './components/LpModal.vue';
61
- export { default as LpModalNav } from './components/LpModalNav.vue';
62
- export { default as LpNotificationBell } from './components/LpNotificationBell.vue';
63
- export type { NotificationItem, NotificationLabels, } from './components/LpNotificationBell.vue';
64
- export { default as LpNumberField } from './components/LpNumberField.vue';
65
- export { default as LpTimeField } from './components/LpTimeField.vue';
66
- export { default as LpNumberFlow } from './components/LpNumberFlow.vue';
67
- export { default as LpOtpInput } from './components/LpOtpInput.vue';
68
- export { default as LpPagination } from './components/LpPagination.vue';
69
- export { default as LpPasswordInput } from './components/LpPasswordInput.vue';
70
- export { default as LpPie } from './components/LpPie.vue';
71
- export type { SliceEvent } from './components/LpPie.vue';
72
- export { resolveSlices } from './components/chart';
73
- export type { PieSlice, ResolvedSlice } from './components/chart';
74
- export { default as LpPhoneInput } from './components/LpPhoneInput.vue';
75
- export type { PhoneDetail } from './components/LpPhoneInput.vue';
76
- export { flagEmoji, loadCountries, matchCountryByValue } from './components/countries';
77
- export type { Country } from './components/countries';
78
- export { default as LpPopover } from './components/LpPopover.vue';
79
- export { default as LpProgress } from './components/LpProgress.vue';
80
- export { default as LpRadio } from './components/LpRadio.vue';
81
- export { default as LpRadioGroup } from './components/LpRadioGroup.vue';
82
- export type { RadioOption } from './components/LpRadioGroup.vue';
83
- export { default as LpRollingText } from './components/LpRollingText.vue';
84
- export { default as LpScrollArea } from './components/LpScrollArea.vue';
85
- export { default as LpSegmented } from './components/LpSegmented.vue';
86
- export type { SegmentedOption } from './components/LpSegmented.vue';
87
- export { default as LpSection } from './components/LpSection.vue';
88
- export { default as LpSelect } from './components/LpSelect.vue';
89
- export type { SelectOption, SelectValue } from './components/LpSelect.vue';
90
- export { default as LpServiceNode } from './components/LpServiceNode.vue';
91
- export type { ServiceNodeData } from './components/LpServiceNode.vue';
92
- export { default as LpShift } from './components/LpShift.vue';
93
- export { default as LpShortcutsDialog } from './components/LpShortcutsDialog.vue';
94
- export { default as LpSidebar } from './components/LpSidebar.vue';
95
- export type { SidebarItem, SidebarSection } from './components/LpSidebar.vue';
96
- export { default as LpSkeleton } from './components/LpSkeleton.vue';
97
- export { default as LpSlider } from './components/LpSlider.vue';
98
- export { default as LpSparkline } from './components/LpSparkline.vue';
99
- export { default as LpStat } from './components/LpStat.vue';
100
- export { default as LpStepper } from './components/LpStepper.vue';
101
- export type { Step } from './components/LpStepper.vue';
102
- export { default as LpSwitch } from './components/LpSwitch.vue';
103
- export { default as LpTable } from './components/LpTable.vue';
104
- export type { SortState, TableColumn, TablePage, TableQuery } from './components/LpTable.vue';
105
- export { default as LpTableOfContents } from './components/LpTableOfContents.vue';
106
- export type { TocLink } from './components/LpTableOfContents.vue';
107
- export { default as LpTabs } from './components/LpTabs.vue';
108
- export type { TabItem } from './components/LpTabs.vue';
109
- export { default as LpTextarea } from './components/LpTextarea.vue';
110
- export { default as LpThemeSwitcher } from './components/LpThemeSwitcher.vue';
111
- export { default as LpTilt } from './components/LpTilt.vue';
112
- export { default as LpToaster } from './components/LpToaster.vue';
113
- export { default as LpTooltip } from './components/LpTooltip.vue';
114
- export { default as LpTopologyCanvas } from './components/LpTopologyCanvas.vue';
115
- export type { CanvasViewport, EdgeCategory, EdgeObserved, TopologyEdge, TopologyLane, TopologyNode, } from './components/LpTopologyCanvas.vue';
116
- export { default as LpUptimeBar } from './components/LpUptimeBar.vue';
117
- export type { UptimeSegment, UptimeStatus } from './components/LpUptimeBar.vue';
118
- export { addLeaf, addTab, countBlocks, countLeaves, deserializeLayout, makeLayout, moveLeaf, removeBlock, removeLeaf, reorderTab, resizeAt, setActiveTab, serializeLayout, } from './layout/tree';
119
- export type { Dir, LayoutNode, Leaf, Side, Split } from './layout/tree';
120
- export { blockTitle, defineBlocks } from './layout/registry';
121
- export type { BlockDef, BlockRegistry } from './layout/registry';
122
- export { useLayout } from './layout/useLayout';
123
- export type { UseLayout, UseLayoutOptions } from './layout/useLayout';
124
- export { applyTheme, applyThemeWithTransition, bootstrapTheme, parseTheme, serializeTheme, THEME_COOKIE, themeFromCookie, themeToCssRule, themeToCssVars, useTheme, } from './theme/useTheme';
125
- export type { RevealOrigin } from './theme/useTheme';
126
- export { detectBackdropFilter, isBrokenBackdropEngine, NO_BACKDROP_ATTR } from './theme/backdrop';
127
- export { DEFAULT_SURFACE } from './theme/tokens';
128
- export { defineTheme } from './theme/define';
129
- export type { ThemeOverrides } from './theme/define';
130
- export type { ColorTokens, DensityTokens, FontTokens, ShapeTokens, SurfaceTokens, TokenSet, } from './theme/tokens';
131
- export { amber, dark, leavepulse, light, lime, nord, presets, rose, violet } from './theme/presets';
132
- export type { PresetName } from './theme/presets';
133
- export { parseConfig, serializeConfig, UI_CONFIG_VERSION } from './theme/config';
134
- export type { UiConfig } from './theme/config';
135
- export { useClipboard } from './composables/useClipboard';
136
- export type { CopyOptions, UseClipboard } from './composables/useClipboard';
137
- export { useHotkeys, isAppleKeyboard, appleModifierLabel, activeShortcuts, mergeShortcutGroups, } from './composables/useHotkeys';
138
- export type { HotkeyBinding, HotkeyHelp, ShortcutEntry, ShortcutGroup } from './composables/useHotkeys';
139
- export { provideGlass, useGlass } from './composables/useGlass';
140
- export { useMergedClass, useMergedAttrs, mergeClass } from './composables/useMergedClass';
141
- export { useInputFilter } from './composables/useInputFilter';
142
- export type { UseInputFilterOptions } from './composables/useInputFilter';
143
- export { easeOut, easeTravel, easingToken, prefersReducedMotion } from './composables/easing';
144
- export { useReveal } from './composables/useReveal';
145
- export type { UseReveal, UseRevealOptions } from './composables/useReveal';
146
- export { useAsyncTask } from './composables/useAsyncTask';
147
- export { useRovingFocus } from './composables/useRovingFocus';
148
- export type { RovingItem, UseRovingFocusOptions } from './composables/useRovingFocus';
149
- export { useFormDraft } from './composables/useFormDraft';
150
- export type { UseFormDraft, UseFormDraftOptions } from './composables/useFormDraft';
151
- export { useSettled } from './composables/useSettled';
152
- export type { UseSettledOptions } from './composables/useSettled';
153
- export { useShift } from './composables/useShift';
154
- export type { ShiftAxis, UseShift, UseShiftOptions } from './composables/useShift';
155
- export { useTilt } from './composables/useTilt';
156
- export type { UseTilt, UseTiltOptions } from './composables/useTilt';
157
- export { useZoomPan } from './composables/useZoomPan';
158
- export type { UseZoomPan, UseZoomPanOptions } from './composables/useZoomPan';
159
- export { useToast } from './composables/useToast';
160
- export type { ToastAction, ToastItem, ToastOptions, ToastVariant, } from './composables/useToast';
@@ -1,26 +0,0 @@
1
- import { Component } from 'vue';
2
- export interface BlockDef {
3
- /**
4
- * Content component for this block. Optional: when the consumer renders block
5
- * content via the canvas's #block slot (keyed by id), the registry is used
6
- * only for tab chrome (title/icon) and no component is needed here.
7
- */
8
- component?: Component;
9
- /** Human label shown on the tab / cell header. Defaults to the id. */
10
- title?: string;
11
- /** Optional iconify name (e.g. "lucide:activity") for the tab. */
12
- icon?: string;
13
- /** Whether the user may close this block. Defaults to true. */
14
- closable?: boolean;
15
- /** Props passed to the component. */
16
- props?: Record<string, unknown>;
17
- }
18
- export type BlockRegistry = Record<string, BlockDef>;
19
- /**
20
- * Identity helper that pins the key type so callers get autocomplete on block
21
- * ids elsewhere (e.g. when seeding a layout). Purely for inference — it returns
22
- * the object unchanged.
23
- */
24
- export declare function defineBlocks<const T extends BlockRegistry>(blocks: T): T;
25
- /** Resolve a block's display title, falling back to its id. */
26
- export declare function blockTitle(registry: BlockRegistry, id: string): string;
@@ -1,75 +0,0 @@
1
- export type Dir = "row" | "col";
2
- export type Side = "left" | "right" | "top" | "bottom" | "center";
3
- export interface Leaf {
4
- kind: "leaf";
5
- id: string;
6
- /**
7
- * Block ids stacked as tabs in this cell. A plain cell is a single-element
8
- * stack; dropping onto a cell's center adds another tab. The consumer maps
9
- * each id to content via the canvas slot.
10
- */
11
- blocks: string[];
12
- /** Index into `blocks` of the visible tab. */
13
- active: number;
14
- /** Flex fraction among siblings. */
15
- size: number;
16
- }
17
- export interface Split {
18
- kind: "split";
19
- id: string;
20
- dir: Dir;
21
- size: number;
22
- children: LayoutNode[];
23
- }
24
- export type LayoutNode = Leaf | Split;
25
- /** Build a single-row layout from a flat list of block ids (one cell each). */
26
- export declare function makeLayout(blocks: string[]): Split;
27
- export declare function findParent(node: Split, childId: string): Split | null;
28
- export declare function findLeaf(node: LayoutNode, id: string): Leaf | null;
29
- export declare function countLeaves(node: LayoutNode): number;
30
- /** Total blocks across all cells (a tabbed cell counts each of its tabs). */
31
- export declare function countBlocks(node: LayoutNode): number;
32
- /** Remove an entire cell (with all its tabs). */
33
- export declare function removeLeaf(root: Split, id: string): void;
34
- /**
35
- * Remove one tab from a cell. Removing the last tab removes the cell itself
36
- * (unless it's the only block left in the whole layout, which is kept).
37
- */
38
- export declare function removeBlock(root: Split, leafId: string, index: number): void;
39
- export declare function addLeaf(root: Split, block: string, side?: Side): void;
40
- /** Append a block as a new tab in the target cell and focus it. */
41
- export declare function addTab(root: Split, leafId: string, block: string): void;
42
- /** Switch the visible tab of a cell. */
43
- export declare function setActiveTab(root: Split, leafId: string, index: number): void;
44
- /**
45
- * Reorder a tab within its cell, moving the block at `from` to `to`. The same
46
- * block stays visible afterwards (active follows the moved block by identity,
47
- * not by index). Always available — not gated by edit mode.
48
- */
49
- export declare function reorderTab(root: Split, leafId: string, from: number, to: number): void;
50
- /**
51
- * Move an existing cell to a target. An edge side splits beside the target;
52
- * `center` merges the moving cell's tabs into the target cell (and focuses
53
- * the first moved tab).
54
- */
55
- export declare function moveLeaf(root: Split, movingId: string, targetId: string, side: Side): void;
56
- /** Splitter drag: redistribute size between two adjacent siblings. */
57
- export declare function resizeAt(parent: Split, index: number, deltaFraction: number): void;
58
- interface SerializedLeaf {
59
- kind: "leaf";
60
- blocks: string[];
61
- active: number;
62
- size: number;
63
- /** Legacy single-block form (pre-tabs); hydrated into `blocks`. */
64
- block?: string;
65
- }
66
- interface SerializedSplit {
67
- kind: "split";
68
- dir: Dir;
69
- size: number;
70
- children: SerializedNode[];
71
- }
72
- type SerializedNode = SerializedLeaf | SerializedSplit;
73
- export declare function serializeLayout(root: Split): SerializedNode;
74
- export declare function deserializeLayout(data: SerializedNode): Split;
75
- export {};
@@ -1,39 +0,0 @@
1
- import { Ref } from 'vue';
2
- import { Side, Split } from './tree';
3
- export interface UseLayoutOptions {
4
- /** Initial block ids, left-to-right, when no saved layout is loaded. */
5
- initial: string[];
6
- /** Max undo depth. */
7
- historyLimit?: number;
8
- }
9
- export interface UseLayout {
10
- /** The live reactive tree to hand to <LayoutCanvas v-model>. */
11
- layout: Ref<Split>;
12
- /** Block count across all tabs, handy for "N blocks" labels and guards. */
13
- count: Ref<number>;
14
- canUndo: Ref<boolean>;
15
- canRedo: Ref<boolean>;
16
- /** Add a block: a new cell on an edge, or a tab on the last cell (center). */
17
- add: (block: string, side?: Side) => void;
18
- /** Add a block as a tab in a specific cell. */
19
- addTab: (leafId: string, block: string) => void;
20
- /** Switch the visible tab of a cell. */
21
- setActive: (leafId: string, index: number) => void;
22
- /** Reorder a tab within its cell (always available, not edit-gated). */
23
- reorderTab: (leafId: string, from: number, to: number) => void;
24
- /** Remove one tab (drops the cell when it was the last tab). */
25
- removeBlock: (leafId: string, index: number) => void;
26
- /** Remove an entire cell with all its tabs. */
27
- remove: (leafId: string) => void;
28
- move: (movingId: string, targetId: string, side: Side) => void;
29
- resize: (parent: Split, index: number, deltaFraction: number) => void;
30
- undo: () => void;
31
- redo: () => void;
32
- /** Replace the whole layout from a flat block list. */
33
- reset: (blocks?: string[]) => void;
34
- /** Serialize to JSON-safe data for persistence. */
35
- serialize: () => unknown;
36
- /** Replace the layout from previously serialized data. */
37
- hydrate: (data: unknown) => void;
38
- }
39
- export declare function useLayout(options: UseLayoutOptions): UseLayout;
@@ -1,9 +0,0 @@
1
- /** Set on <html> when backdrop-filter resolves but does not composite. */
2
- export declare const NO_BACKDROP_ATTR = "data-lp-no-backdrop";
3
- export declare function isBrokenBackdropEngine(nav?: Navigator): boolean;
4
- /**
5
- * Flag the document when backdrop-filter cannot be trusted, so the fallback
6
- * rules in tokens.css can trade blur for opacity. Safe to call more than once
7
- * and a no-op outside the browser.
8
- */
9
- export declare function detectBackdropFilter(root?: HTMLElement): boolean;
@@ -1,16 +0,0 @@
1
- import { Split } from '../layout/tree';
2
- import { TokenSet } from './tokens';
3
- export declare const UI_CONFIG_VERSION = 1;
4
- export interface UiConfig {
5
- version: number;
6
- theme: TokenSet;
7
- /** Optional — apps without a composable layout omit it. */
8
- layout?: Split;
9
- }
10
- export interface SerializedUiConfig {
11
- version: number;
12
- theme: TokenSet;
13
- layout?: unknown;
14
- }
15
- export declare function serializeConfig(config: UiConfig): string;
16
- export declare function parseConfig(json: string): UiConfig;
@@ -1,12 +0,0 @@
1
- import { presets } from './presets';
2
- import { ColorTokens, DensityTokens, FontTokens, ShapeTokens, SurfaceTokens, TokenSet } from './tokens';
3
- export interface ThemeOverrides {
4
- name?: string;
5
- mode?: "dark" | "light";
6
- colors?: Partial<ColorTokens>;
7
- shape?: Partial<ShapeTokens>;
8
- density?: Partial<DensityTokens>;
9
- font?: Partial<FontTokens>;
10
- surface?: Partial<SurfaceTokens>;
11
- }
12
- export declare function defineTheme(base: TokenSet | keyof typeof presets, overrides?: ThemeOverrides): TokenSet;
@@ -1,20 +0,0 @@
1
- import { TokenSet } from './tokens';
2
- export declare const dark: TokenSet;
3
- export declare const light: TokenSet;
4
- export declare const lime: TokenSet;
5
- export declare const leavepulse: TokenSet;
6
- export declare const rose: TokenSet;
7
- export declare const amber: TokenSet;
8
- export declare const violet: TokenSet;
9
- export declare const nord: TokenSet;
10
- export declare const presets: {
11
- readonly dark: TokenSet;
12
- readonly light: TokenSet;
13
- readonly lime: TokenSet;
14
- readonly leavepulse: TokenSet;
15
- readonly rose: TokenSet;
16
- readonly amber: TokenSet;
17
- readonly violet: TokenSet;
18
- readonly nord: TokenSet;
19
- };
20
- export type PresetName = keyof typeof presets;
@@ -1,75 +0,0 @@
1
- export interface ColorTokens {
2
- surface: string;
3
- surfaceRaised: string;
4
- surfaceSoft: string;
5
- ink: string;
6
- inkInverse: string;
7
- muted: string;
8
- mutedStrong: string;
9
- brand: string;
10
- brandHover: string;
11
- brandSoft: string;
12
- action: string;
13
- actionHover: string;
14
- actionSoft: string;
15
- accent: string;
16
- accentHover: string;
17
- accentSoft: string;
18
- danger: string;
19
- dangerHover: string;
20
- dangerSoft: string;
21
- line: string;
22
- lineStrong: string;
23
- ring: string;
24
- }
25
- export interface ShapeTokens {
26
- radiusControl: number;
27
- radiusCard: number;
28
- radiusPill: number;
29
- }
30
- export interface DensityTokens {
31
- /** base spacing unit in px */
32
- spacingUnit: number;
33
- controlSm: number;
34
- controlMd: number;
35
- controlLg: number;
36
- }
37
- export interface FontTokens {
38
- /** CSS font-family stack for UI text */
39
- sans: string;
40
- /** CSS font-family stack for numerals / code */
41
- mono: string;
42
- }
43
- export interface SurfaceTokens {
44
- /** Border width for panels/cards/controls (CSS length, e.g. "1px"). */
45
- borderWidth: string;
46
- /** backdrop-filter blur radius (CSS length; "0" disables glass blur). */
47
- panelBlur: string;
48
- /** backdrop-filter saturate (unitless or %, e.g. "100%" / "180%"). */
49
- panelSaturate: string;
50
- /** Overlay painted over a panel's base color ("none" or a gradient). */
51
- panelOverlay: string;
52
- /** Box-shadow for a raised panel (may be multi-layer for glass). */
53
- panelShadow: string;
54
- /** Inset highlight line for a panel ("none" or an inset box-shadow). */
55
- panelInset: string;
56
- }
57
- export interface TokenSet {
58
- /** human label, e.g. "Lime" */
59
- name: string;
60
- /** "dark" | "light" — drives `color-scheme` and the data-theme-mode hint */
61
- mode: "dark" | "light";
62
- colors: ColorTokens;
63
- shape: ShapeTokens;
64
- density: DensityTokens;
65
- font: FontTokens;
66
- /** Optional skin axis; older themes without it fall back to a flat default. */
67
- surface?: SurfaceTokens;
68
- }
69
- /** camelCase token key → CSS custom property name. */
70
- export declare const COLOR_VARS: Record<keyof ColorTokens, string>;
71
- export declare const SHAPE_VARS: Record<keyof ShapeTokens, string>;
72
- export declare const DENSITY_VARS: Record<keyof DensityTokens, string>;
73
- export declare const FONT_VARS: Record<keyof FontTokens, string>;
74
- export declare const SURFACE_VARS: Record<keyof SurfaceTokens, string>;
75
- export declare const DEFAULT_SURFACE: SurfaceTokens;